GraphQL.php
1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
namespace Braintree;
use finfo;
/**
 * Braintree GraphQL Client
 * process GraphQL requests using curl
 */
class GraphQL extends Http
{
    public function __construct($config)
    {
        parent::__construct($config);
    }
    public function graphQLHeaders()
    {
        return [
            'Accept: application/json',
            'Braintree-Version: ' . Configuration::GRAPHQL_API_VERSION,
            'Content-Type: application/json',
            'User-Agent: Braintree PHP Library ' . Version::get(),
            'X-ApiVersion: ' . Configuration::API_VERSION
        ];
    }
    public function request($definition, $variables)
    {
        $graphQLRequest = ["query" => $definition];
        if ($variables) {
            $graphQLRequest["variables"] = $variables;
        }
        $response = $this->_doUrlRequest('POST', $this->_config->graphQLBaseUrl(), json_encode($graphQLRequest), null, $this->graphQLHeaders());
        $result = json_decode($response["body"], true);
        Util::throwGraphQLResponseException($result);
        return $result;
    }
}
class_alias('Braintree\GraphQL', 'Braintree_GraphQL');