Overview

Namespaces

  • Angelfon
    • SDK
      • Exceptions
      • Http
      • Rest
        • Api
          • V099
            • User

Classes

  • Angelfon\SDK\Domain
  • Angelfon\SDK\Http\GuzzleClient
  • Angelfon\SDK\Http\Response
  • Angelfon\SDK\InstanceContext
  • Angelfon\SDK\InstanceResource
  • Angelfon\SDK\ListResource
  • Angelfon\SDK\Options
  • Angelfon\SDK\Page
  • Angelfon\SDK\Rest\Api
  • Angelfon\SDK\Rest\Api\V099
  • Angelfon\SDK\Rest\Api\V099\User\CallContext
  • Angelfon\SDK\Rest\Api\V099\User\CallInstance
  • Angelfon\SDK\Rest\Api\V099\User\CallList
  • Angelfon\SDK\Rest\Api\V099\User\CallOptions
  • Angelfon\SDK\Rest\Api\V099\User\CallPage
  • Angelfon\SDK\Rest\Api\V099\User\CreateCallOptions
  • Angelfon\SDK\Rest\Api\V099\User\CreateSmsOptions
  • Angelfon\SDK\Rest\Api\V099\User\ReadCallOptions
  • Angelfon\SDK\Rest\Api\V099\User\ReadSmsOptions
  • Angelfon\SDK\Rest\Api\V099\User\SmsContext
  • Angelfon\SDK\Rest\Api\V099\User\SmsInstance
  • Angelfon\SDK\Rest\Api\V099\User\SmsList
  • Angelfon\SDK\Rest\Api\V099\User\SmsOptions
  • Angelfon\SDK\Rest\Api\V099\User\SmsPage
  • Angelfon\SDK\Rest\Api\V099\UserContext
  • Angelfon\SDK\Rest\Api\V099\UserInstance
  • Angelfon\SDK\Rest\Client
  • Angelfon\SDK\Serialize
  • Angelfon\SDK\Values
  • Angelfon\SDK\Version
  • Angelfon\SDK\VersionInfo

Interfaces

  • Angelfon\SDK\Http\Client

Exceptions

  • Angelfon\SDK\Exceptions\AngelfonException
  • Angelfon\SDK\Exceptions\ConfigurationException
  • Angelfon\SDK\Exceptions\RestException
  • Overview
  • Namespace
  • Class
  1:   2:   3:   4:   5:   6:   7:   8:   9:  10:  11:  12:  13:  14:  15:  16:  17:  18:  19:  20:  21:  22:  23:  24:  25:  26:  27:  28:  29:  30:  31:  32:  33:  34:  35:  36:  37:  38:  39:  40:  41:  42:  43:  44:  45:  46:  47:  48:  49:  50:  51:  52:  53:  54:  55:  56:  57:  58:  59:  60:  61:  62:  63:  64:  65:  66:  67:  68:  69:  70:  71:  72:  73:  74:  75:  76:  77:  78:  79:  80:  81:  82:  83:  84:  85:  86:  87:  88:  89:  90:  91:  92:  93:  94:  95:  96:  97:  98:  99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 
<?php
namespace Angelfon\SDK;

use Angelfon\SDK\Exceptions\RestException;
use Angelfon\SDK\Domain;

abstract class Version
{
    protected $domain;
    protected $version;
    
    function __construct(Domain $domain)
    {
        $this->domain = $domain;
    $this->version = null;
    }

  /**
   * Generate an absolute URL from a version relative uri
   * @param string $uri Version relative uri
   * @return string Absolute URL
   */
  public function absoluteUrl($uri) {
    return $this->getDomain()->absoluteUrl($this->relativeUri($uri));
  }

  /**
   * Generate a domain relative uri from a version relative uri
   * @param string $uri Version relative uri
   * @return string Domain relative uri
   */
  public function relativeUri($uri) {
    return trim($this->version, '/') . '/' . trim($uri, '/');
  }
    
  public function request($method, $uri, $params = array(), $data = array(),
                        $headers = array(), $timeout = null) 
  {
    $uri = $this->relativeUri($uri);
    return $this->getDomain()->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );
  }

  /**
   * Create the best possible exception for the response.
   *
   * Attempts to parse the response for Angelfon Standard error messages and use
   * those to populate the exception, falls back to generic error message and
   * HTTP status code.
   *
   * @param Response $response Error response
   * @param string $header Header for exception message
   * @return \Angelfon\SDK\Exceptions\RestException
   */
  protected function exception($response, $header) {
    $message = '[HTTP ' . $response->getStatusCode() . '] ' . $header;

    $content = $response->getContent();
    if (is_array($content)) {
      $message .= isset($content['data']) ? ': ' . $content['data'] : '';
      $code = isset($content['error']) ? $content['error'] : $response->getStatusCode();
      return new RestException($message, $code, $response->getStatusCode());
    } else {
      return new RestException($message, $response->getStatusCode(), $response->getStatusCode());
    }
  }

  public function fetch($method, $uri, $params = array(), $data = array(),
                        $headers = array(), $timeout = null) {
    $response = $this->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );

    if ($response->getStatusCode() < 200 || $response->getStatusCode() >= 300) {
      throw $this->exception($response, 'Unable to fetch record');
    }

    return $response->getContent();
  }

    public function update($method, $uri, $params = array(), $data = array(),
                         $headers = array(), $timeout = null) {
    $response = $this->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );

    if ($response->getStatusCode() < 200 || $response->getStatusCode() >= 300) {
      throw $this->exception($response, 'Unable to update record');
    }

    return $response->getContent();
  }

  public function delete($method, $uri, $params = array(), $data = array(),
                         $headers = array(), $timeout = null) {
    $response = $this->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );

    if ($response->getStatusCode() < 200 || $response->getStatusCode() >= 300) {
        throw $this->exception($response, 'Unable to delete record');
    }

    return $response->getStatusCode() == 200;
  }

  public function create($method, $uri, $params = array(), $data = array(),
                         $headers = array(), $timeout = null) {
    $response = $this->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );

    if ($response->getStatusCode() < 200 || $response->getStatusCode() >= 300) {
      throw $this->exception($response, 'Unable to create record');
    }

    return $response->getContent();
  }

  public function page($method, $uri, $params = array(), $data = array(),
                       $headers = array(), $timeout = null) {
    return $this->request(
      $method,
      $uri,
      $params,
      $data,
      $headers,
      $timeout
    );
  }

  /**
   * @return \Angelfon\SDK\Domain $domain
   */
  public function getDomain() {
      return $this->domain;
  }

  public function __toString() {
      return '[Version]';
  }

}
API documentation generated by ApiGen