/**
  * Processes an RPC request for http data.
  *
  * @param RequestItem $requestItem The request parameters.
  * @return array An array of content, status code, and headers from the
  *     response.  The expected structure is undocumented in the spec, sadly.
  *     TODO: Filter some/most headers from the response (waste of bandwidth).
  */
 public function handleItem(RequestItem $requestItem)
 {
     try {
         // We should only get RPC requests at this point.  There's a class cast
         // here from RequestItem->RpcRequestItem, but PHP doesn't seem to
         // complain.
         $options = MakeRequestOptions::fromRpcRequestItem($requestItem);
         $makeRequest = new MakeRequest();
         $context = new GadgetContext('GADGET');
         $response = $makeRequest->fetch($context, $options);
         $result = array('content' => $response->getResponseContent(), 'status' => $response->getHttpCode(), 'headers' => $response->getResponseHeaders());
     } catch (SocialSpiException $e) {
         $result = new ResponseItem($e->getCode(), $e->getMessage());
     } catch (Exception $e) {
         $result = new ResponseItem(ResponseError::$INTERNAL_ERROR, "Internal error: " . $e->getMessage());
     }
     return $result;
 }
 /**
  * Processes an RPC request for http data.
  *
  * @param RequestItem $requestItem The request parameters.
  * @return array An array of content, status code, and headers from the
  *     response.  The expected structure is undocumented in the spec, sadly.
  *     TODO: Filter some/most headers from the response (waste of bandwidth).
  */
 public function handleItem(RequestItem $requestItem)
 {
     try {
         // We should only get RPC requests at this point.  There's a class cast
         // here from RequestItem->RpcRequestItem, but PHP doesn't seem to
         // complain.
         $options = MakeRequestOptions::fromRpcRequestItem($requestItem);
         $makeRequestClass = Config::get('makerequest_class');
         $makeRequest = new $makeRequestClass();
         $contextClass = Config::get('gadget_context_class');
         $context = new $contextClass('GADGET');
         $response = $makeRequest->fetch($context, $options);
         // try to decode json object here since in order
         // to not break gadgets.io.makeRequest functionality
         // $response->getResponseContent() has to return a string
         $content = json_decode($response->getResponseContent(), true);
         $result = array('content' => $content ? $content : $response->getResponseContent(), 'status' => $response->getHttpCode(), 'headers' => $response->getResponseHeaders());
     } catch (SocialSpiException $e) {
         $result = new ResponseItem($e->getCode(), $e->getMessage());
     } catch (Exception $e) {
         $result = new ResponseItem(ResponseError::$INTERNAL_ERROR, "Internal error: " . $e->getMessage());
     }
     return $result;
 }