You are here

private function RESTServer::parseRequest in Services 6.3

1 call to RESTServer::parseRequest()
RESTServer::getControllerArguments in servers/rest_server/includes/RESTServer.inc
Parses controller arguments from request

File

servers/rest_server/includes/RESTServer.inc, line 251
Class for handling REST calls.

Class

RESTServer
@file Class for handling REST calls.

Code

private function parseRequest($method, $controller) {
  switch ($method) {
    case 'POST':
    case 'PUT':
      if (isset($_SERVER['CONTENT_TYPE'])) {
        $type = self::parseContentHeader($_SERVER['CONTENT_TYPE']);
      }

      // Get the mime type for the request, default to form-urlencoded
      if (isset($type['value'])) {
        $mime = $type['value'];
      }
      else {
        $mime = 'application/x-www-form-urlencoded';
      }

      // Get the parser for the mime type
      $parser = $this
        ->requestParser($mime, $controller);
      if (!$parser) {
        return services_error(t('Unsupported request content type @mime', array(
          '@mime' => $mime,
        )), 406);
      }

      // php://input is not available with enctype="multipart/form-data".
      // see http://php.net/manual/en/wrappers.php.php
      if ($mime == 'multipart/form-data') {
        $data = call_user_func($parser);
      }
      else {

        // Read the raw input stream.
        if (module_exists('inputstream')) {
          $handle = fopen('drupal://input', 'r');
        }
        else {
          $handle = fopen('php://input', 'r');
        }
        if ($handle) {
          $data = call_user_func($parser, $handle);
          fclose($handle);
        }
      }
      return $data;
    default:
      return array();
  }
}