1: <?php
2:
3: namespace LeadCommerce\Shopware\SDK;
4:
5: use GuzzleHttp\Client;
6: use LeadCommerce\Shopware\SDK\Query\AddressQuery;
7: use LeadCommerce\Shopware\SDK\Query\ArticleQuery;
8: use LeadCommerce\Shopware\SDK\Query\CacheQuery;
9: use LeadCommerce\Shopware\SDK\Query\CategoriesQuery;
10: use LeadCommerce\Shopware\SDK\Query\CountriesQuery;
11: use LeadCommerce\Shopware\SDK\Query\CustomerGroupsQuery;
12: use LeadCommerce\Shopware\SDK\Query\CustomerQuery;
13: use LeadCommerce\Shopware\SDK\Query\GenerateArticleImagesQuery;
14: use LeadCommerce\Shopware\SDK\Query\ManufacturersQuery;
15: use LeadCommerce\Shopware\SDK\Query\MediaQuery;
16: use LeadCommerce\Shopware\SDK\Query\OrdersQuery;
17: use LeadCommerce\Shopware\SDK\Query\PropertyGroupsQuery;
18: use LeadCommerce\Shopware\SDK\Query\ShopsQuery;
19: use LeadCommerce\Shopware\SDK\Query\TranslationsQuery;
20: use LeadCommerce\Shopware\SDK\Query\VariantsQuery;
21: use LeadCommerce\Shopware\SDK\Query\VersionQuery;
22:
23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
46: class ShopwareClient
47: {
48: const VERSION = '0.0.1';
49:
50: 51: 52:
53: protected $baseUrl;
54:
55: 56: 57:
58: protected $username;
59:
60: 61: 62:
63: protected $apiKey;
64:
65: 66: 67:
68: protected $client;
69:
70: 71: 72: 73: 74: 75: 76:
77: public function __construct($baseUrl, $username = null, $apiKey = null)
78: {
79: $this->baseUrl = $baseUrl;
80: $this->username = $username;
81: $this->apiKey = $apiKey;
82: $this->client = new Client([
83: 'base_uri' => $this->baseUrl,
84: ]);
85: }
86:
87: 88: 89: 90: 91: 92: 93: 94: 95: 96:
97: public function request($uri, $method = 'GET', $body = null, $headers = [])
98: {
99: if (empty($headers['Accept'])) {
100: $headers['Accept'] = 'application/json';
101: }
102:
103: if (empty($headers['Content-Type'])) {
104: $headers['Content-Type'] = 'application/json';
105: }
106:
107: return $this->client->request($method, $uri, [
108: 'form_params' => $body,
109: 'headers' => $headers,
110: 'auth' => [
111: $this->username,
112: $this->apiKey,
113: 'digest',
114: ],
115: ]);
116: }
117:
118: 119: 120: 121: 122: 123: 124: 125:
126: public function __call($name, $arguments = [])
127: {
128: if (!preg_match('/^get([a-z]+Query)$/i', $name, $matches)) {
129: return false;
130: }
131:
132: $className = __NAMESPACE__ . '\\Query\\' . $matches[1];
133:
134: if (!class_exists($className)) {
135: return false;
136: }
137:
138: return new $className($this);
139: }
140:
141: 142: 143:
144: public function getClient()
145: {
146: return $this->client;
147: }
148:
149: 150: 151: 152: 153:
154: public function setClient($client)
155: {
156: $this->client = $client;
157:
158: return $this;
159: }
160: }
161: