Как обновить описание службы Guzzle для v5?

У меня есть следующее описание службы, которое я использовал довольно давно в старой версии Guzzle:

[
    'name'        => 'Gist',
    'apiVersion'  => 'v3',
    'baseUrl'     => 'https://api.github.com/',
    'description' => 'Gists and comments access',
    'operations'  => [
        'GetGists'    => [
            'httpMethod' => 'GET',
            'uri'        => '/users/{user}/gists',
            'parameters' => [
                'user'  => [
                    'location' => 'uri',
                    'required' => true,
                ],
                'since' => [
                    'location' => 'query',
                ],
            ],
        ],
        'GetComments' => [
            'httpMethod' => 'GET',
            'uri'        => '/gists/{id}/comments',
            'parameters' => [
                'id' => [
                    'location' => 'uri',
                    'required' => true,
                ],
            ],
        ],
    ],
]

Теперь я перемещаю кучу вещей в текущую версию Guzzle, и она абсолютно отказывается работать с более новой версией guzzle/services< /а>.

Мой код выглядит следующим образом:

$client = new Client;
$client->setDefaultOption('verify', false);
$description  = new Description($this->getServiceDescription());
$guzzleClient = new GuzzleClient($client, $description);
$command      = $guzzleClient->getCommand('GetGists', [ 'user' => $this->user ]);
$gists        = $guzzleClient->execute($command); // $gists is empty array?..

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

Но, в конце концов, это просто пустой массив, и я понятия не имею, что мне нужно сделать, чтобы устранить неполадки или как мне нужно обновить описание службы.

URL-адрес, к которому он должен (имеет?) обращаться, — https://api.github.com/users/Rarst/gists


person Rarst    schedule 11.12.2014    source источник


Ответы (1)


Хорошо, кажется, что модель обязательна для интерпретации ответа, и я заставил ее работать (без особого понимания того, что и как модель контролирует :\):

[
    'name'        => 'Gist',
    'apiVersion'  => 'v3',
    'baseUrl'     => 'https://api.github.com/',
    'description' => 'Gists and comments access',
    'operations'  => [
        'GetGists'    => [
            'responseModel' => 'getResponse',
            'httpMethod'    => 'GET',
            'uri'           => '/users/{user}/gists',
            'parameters'    => [
                'user'  => [
                    'location' => 'uri',
                    'required' => true,
                ],
                'since' => [
                    'location' => 'query',
                ],
            ],
        ],
        'GetComments' => [
            'responseModel' => 'getResponse',
            'httpMethod'    => 'GET',
            'uri'           => '/gists/{id}/comments',
            'parameters'    => [
                'id' => [
                    'location' => 'uri',
                    'required' => true,
                ],
            ],
        ],
    ],
    'models'      => [
        'getResponse' => [
            'type'                 => 'object',
            'additionalProperties' => [
                'location' => 'json'
            ]
        ]
    ]
]
person Rarst    schedule 11.12.2014