Как я могу получить доступ к значениям из описания службы Guzzle при создании экземпляра клиента?

Я создаю клиент Guzzle, используя описание службы. Каждая операция в описании сервиса содержит URI. Конечная точка REST, к которой я обращаюсь, требует заголовка авторизации, который создается путем объединения открытого ключа и uri конечной точки, а затем создания md5 из полученной строки. Это используется в качестве значения авторизации.

Я не знаю, как получить значение uri из описания службы после создания экземпляра клиента.

Я создаю клиент Guzzle следующим образом:

class RestClient extends Client
{
  public static function factory($config = array())
  {

    // The following values are required when creating the client
    $required = array(
      'base_url',
      'public_key',
      'private_key'
    );

    $path = drupal_get_path('module', 'junkrest');

    // Merge in default settings and validate the config
    $config = Collection::fromConfig($config, $required);

    // Create a new client
    $client = new self($config->get('base_url'), $config);
        // Set the service description
    $client->setDescription(ServiceDescription::factory($path . '/config/services.json'));

        $authstring = md5($public_key, 'the uri value from an operation in the services.json file');

    $client->setDefaultHeaders(array(
      'Authentication' => $authstring));

    return $client;
  }

}

The services.json file contains this:

{
    "name": "TheName",
    "apiVersion": "1",
    "baseUrl": "https://apidev.example.com",
    "description": "Custom REST API client",
    "operations": {
        "GetFranchiseList": {
            "httpMethod": "GET",
            "uri": "v1/franchise",
            "summary": "Returns an array of franchises."
        },
        "GetReviews": {
            "httpMethod": "GET",
            "uri": "v1/review",
            "summary": "Returns an array of reviews."
        }
    }
}

Как я могу получить доступ к значению uri в GetFranchiseList, чтобы использовать его для создания $authstring?


person user2755441    schedule 24.10.2013    source источник


Ответы (1)


У клиента есть объект описания службы, содержащий операции. Операции содержат методы получения для различных свойств, а также для каждого параметра, используемого в качестве входных данных.

Например:

$client->getDescription()->getOperation('GetFranchiseList')->getUri();
person Michael Dowling    schedule 25.10.2013