     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

    <?php
    /**
     * @model Domains
     * http://ap.bandwidth.com/docs/rest-api/domains-2/
     *
     * Provides SIP Domains functions
     */

    namespace Catapult;

    final class Domains extends GenericResource {

      /**
       * construct the domains as initiated
       * or new. Domains should have functions
       * to access their endpoints as well
       *
       * init forms
       * GET:
       * Domains('domain-id')
       * Domains()
       *
       * POST
       * Domains(array)
       */
      public function __construct() {
        $data = Ensure::Input(func_get_args());

        return parent::_init($data, new DependsResource,
          new LoadsResource(
            array("primary" => "GET", "id" => "id", "init" => TRUE, "silent" => FALSE)
         ),
         new SchemaResource(
            array("fields" => array('name', 'description'), "needs" => array('id', 'name')
            )
         ),
         new SubFunctionResource
        );
      }

      /**
       * List all the endpoints
       * for a given Domain.
       *
       * @returns EndpointsCollection
       */
      public function listEndpoints() {
        $uri = new URIResource($this->path, array($this->id, "endpoints"));

        return new EndpointsCollection(new DataPacketCollection($this->client->get((string) $uri)));
      }
    }