public function index(ResponseObject $response)
 {
     foreach ($this->routes as $resource => $simple) {
         $response->addLink($resource, BASE_URL . $resource);
         $response->setRootElementName('Index');
     }
     return $response;
 }
Beispiel #2
0
 public static function getErrorMessage($code)
 {
     if ($code < 600) {
         // 0-599 are reserved and mapped dirctly to the
         return ResponseObject::getStatusCodeMessage($code);
     } else {
         // all smint api errors should be grouped into differnt categories, categories should be identified by a range of numbers
         // e.g. database related error codes are between 5000 and 5999
         $errors = array("5000" => "General Database Error.");
     }
 }
 /**
  * ErrorResponseObject constructor.
  * @param $error
  */
 public function __construct($code, $message, $hint = null)
 {
     parent::__construct();
     $this->setStatusCode($code);
     $this->setRootElementName('Error');
     $this->error = new stdClass();
     $this->error->code = $code;
     $this->error->message = $message;
     if ($hint !== null) {
         $this->error->hint = $hint;
     }
 }
 public function getPagination()
 {
     $links = [];
     if ($this->itemsPerPage == 0) {
         $totalpages = 1;
     } else {
         $totalpages = ceil($this->totalItems / $this->itemsPerPage);
     }
     $query = 'songs?limit=' . $this->itemsPerPage . '&start=';
     // First
     array_push($links, ResponseObject::generateLink('first', BASE_URL . $query . 1));
     $links[0]->page = 1;
     // Last
     array_push($links, ResponseObject::generateLink('last', BASE_URL . $query . $totalpages));
     $links[1]->page = $totalpages;
     // Previous
     if ($this->page <= 1) {
         $prevPage = 1;
     } else {
         $prevPage = $this->page - 1;
     }
     array_push($links, ResponseObject::generateLink('previous', BASE_URL . $query . $prevPage));
     $links[2]->page = $prevPage;
     // Next
     if ($this->page >= $totalpages) {
         $nextPage = $totalpages;
     } else {
         $nextPage = $this->page + 1;
     }
     array_push($links, ResponseObject::generateLink('next', BASE_URL . $query . $nextPage));
     $links[3]->page = $nextPage;
     $pagination = new stdClass();
     $pagination->currentPage = $this->page;
     $pagination->currentItems = count($this->songs);
     $pagination->totalItems = $this->totalItems;
     $pagination->totalPages = $totalpages;
     $pagination->links = $links;
     return $pagination;
 }
Beispiel #5
0
 private function processResponse($m)
 {
     $dom = $m->dom;
     $headerNode = $m->headerNode;
     $originalMsgId = $m->msgId;
     $this->originalMsgId = $m->msgId;
     $originalSourceId = $m->sourceId;
     $version = $m->version;
     $this->originalSourceId = $originalSourceId;
     $this->originalMsgId = $originalMsgId;
     $validSourceId = Agent::checkSourceId($originalSourceId);
     if (!$validSourceId) {
         RegisterError::invalidSourceId($agent->sourceId, $originalMsgId);
         exit;
     } else {
         $agent = new Agent($originalSourceId);
         if (!$agent->isRegistered()) {
             RegisterError::notRegisteredError($originalSourceId, $originalMsgId);
             exit;
         } else {
             $msgId = $dom->getElementsByTagName('SIF_RequestMsgId')->item(0)->nodeValue;
             if (!RequestObject::validRequestMsgId($msgId)) {
                 RequestError::invalidMsgId($originalSourceId, $originalMsgId);
             } else {
                 $requestObject = new RequestObject($msgId);
                 $sifResponseNode = $dom->getElementsByTagName('SIF_Response')->item(0);
                 $size = strlen($dom->saveXML($sifResponseNode));
                 if (!$requestObject->compareBufferSize($size)) {
                     $categoryCode = "8";
                     $sifCode = "11";
                     $shortDesc = "Response Error";
                     $longDesc = "SIF_Response is larger than requested SIF_MaxBufferSize";
                     $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                     SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 2, 'Invalid buffersize for response to agent ' . $agent->sourceId . ' request');
                     RequestError::invalidBufferSize($originalSourceId, $originalMsgId);
                 } else {
                     $destinationId = $dom->getElementsByTagName('SIF_DestinationId')->item(0)->nodeValue;
                     if (!$requestObject->compareDestinationId($destinationId)) {
                         $categoryCode = "8";
                         $sifCode = "14";
                         $shortDesc = "Response Error";
                         $longDesc = "SIF_DestinationId does not match SIF_SourceId from SIF_Request";
                         $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                         SifLogEntry::CreateSifLogEvents($dom->saveXml($headerNode), 4, 1, 'Invalid destinationId for response to agent ' . $agent->sourceId . ' request');
                         RequestError::invalidDestination($originalSourceId, $originalMsgId);
                     } else {
                         if (RequestObject::validMessageVersion($msgId, $version)) {
                             if (ResponseObject::responseExist($msgId)) {
                                 $responseObject = new ResponseObject($msgId);
                                 $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue;
                                 if ($packetNum != $responseObject->nextPacketNum) {
                                     $categoryCode = "8";
                                     $sifCode = "12";
                                     $shortDesc = "SIF_PacketNumber is invalid in SIF_Response";
                                     $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting ' . $responseObject->nextPacketNum . 'for response to agent ' . $agent->sourceId . ' request';
                                     //$this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                                     RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc);
                                 } else {
                                     $this->setupResponseOld($agent, $msgId, $responseObject);
                                 }
                             } else {
                                 $packetNum = $dom->getElementsByTagName('SIF_PacketNumber')->item(0)->nodeValue;
                                 if ($packetNum != 1) {
                                     $categoryCode = "8";
                                     $sifCode = "12";
                                     $shortDesc = "Response Error";
                                     $longDesc = 'Invalid packet number of ' . $packetNum . ' was expecting 1 for response to agent ' . $agent->sourceId . ' request';
                                     RequestError::invalidPacketNum($originalSourceId, $originalMsgId, $longDesc);
                                 } else {
                                     $this->setupResponseNew($agent, $msgId, $m);
                                 }
                                 //check if packetnum is 1
                             }
                             //check if response with more packets
                         } else {
                             $categoryCode = "8";
                             $sifCode = "13";
                             $shortDesc = "Response Error";
                             $longDesc = "SIF_Response does not match any SIF_Version from SIF_Request.";
                             $this->createResponseError($agent, $msgId, $categoryCode, $sifCode, $shortDesc, $longDesc);
                             RequestError::invalidVersion($originalSourceId, $originalMsgId);
                         }
                         //check if version is valid
                     }
                     // check if valid destination
                 }
                 //check if valid buffer
             }
             //check if valid request message id
         }
         //check if registered
     }
     //check sourceId
 }
Beispiel #6
0
 public function getResponseItem($detailed = false)
 {
     $song = new stdClass();
     $song->id = $this->id;
     $song->slug = $this->slug;
     $song->title = $this->title;
     $song->artist = $this->artist;
     $song->added = $this->added;
     if ($detailed) {
         $song->notes = $this->notes;
         $song->key = $this->key;
         $song->examples = $this->examples;
     } else {
         $song->links = [ResponseObject::generateLink('self', BASE_URL . 'songs/' . $this->slug), ResponseObject::generateLink('collection', BASE_URL . 'songs')];
     }
     return $song;
 }