/** * Function to find an instance of an Entity record * * @param Trucker\Resource\Model $model Model to use for URL generation etc. * @param int $id The primary identifier value for the record * @param array $getParams Array of GET parameters to pass * @return Trucker\Resource\Model An instance of the entity requested */ public function fetch($model, $id, $getParams = array()) { $instance = null; //get a request object $request = RequestFactory::build(); //init the request $request->createRequest(Config::get('request.base_uri'), UrlGenerator::getInstanceUri($model, [':' . $model->getIdentityProperty() => $id]), 'GET'); //add auth if it is needed if ($auth = AuthFactory::build()) { $request->authenticate($auth); } //set any get parameters on the request $request->setGetParameters($getParams); //actually send the request $response = $request->sendRequest(); if (!ResponseInterpreterFactory::build()->success($response)) { return null; } //kraft the response into an object to return $data = $response->parseResponseToData(); $instance = new $model($data); //inflate the ID property that should be guarded $id = $instance->getIdentityProperty(); if (array_key_exists($id, $data)) { $instance->{$id} = $data[$id]; } return $instance; }
public function testInstanceUpdateDeleteURIs() { $x = new User(); $x->__set('id', 1234); $this->assertEquals('/users/:id', UrlGenerator::getInstanceUri($x)); $this->assertEquals('/users/1234', UrlGenerator::getInstanceUri($x, [':id' => 1234])); $this->assertEquals('/users/1234', UrlGenerator::getUpdateUri($x, [':id' => 1234])); $this->assertEquals('/users/1234', UrlGenerator::getDeleteUri($x, [':id' => 1234])); }