public function index(ResponseObject $response) { foreach ($this->routes as $resource => $simple) { $response->addLink($resource, BASE_URL . $resource); $response->setRootElementName('Index'); } return $response; }
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; }
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 }
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; }