CodeCommitsIssuesPull requestsActionsInsightsSecurity
thellimist/PI-950-1

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Backend/MagentoHttpClient.php

84lines · modecode

1<?php
2
3namespace CloudFlare\Plugin\Backend;
4
5use \CF\API\APIInterface;
6use \CF\API\Request;
7use \Psr\Log\LoggerInterface;
8
9class MagentoHttpClient implements \CF\API\HttpClientInterface
10{
11 protected $endpoint;
12 /**
13 * @var \Psr\Log\LoggerInterface
14 */
15 protected $logger;
16
17 public function __construct(LoggerInterface $logger)
18 {
19 $this->logger = $logger;
20 }
21
22 public function send(Request $request)
23 {
24 $client = $this->createZendClient($request);
25 try {
26 $response = $client->request();
27 return json_decode($response->getBody(), true);
28 } catch (\Zend_Http_Client_Exception $e) {
29 $this->logAPICall($this->endpoint, array(
30 'type' => 'request',
31 'method' => $request->getMethod(),
32 'path' => $request->getUrl(),
33 'headers' => $request->getHeaders(),
34 'params' => $request->getParameters(),
35 'body' => $request->getBody()), true);
36 $this->logAPICall($this->endpoint, array('type' => 'response', 'code' => $e->getCode(), 'body' => $e->getMessage(), 'stacktrace' => $e->getTraceAsString()), true);
37 }
38
39 return null;
40 }
41
42 /**
43 * @param Request $request
44 * @return ZendClient $client
45 */
46 public function createZendClient(Request $request)
47 {
48 $client = new \Zend_Http_Client();
49 $client->setUri($this->endpoint . $request->getUrl());
50
51 $client->setMethod($request->getMethod());
52
53 $client->setHeaders($request->getHeaders());
54 $client->setParameterGet($request->getParameters());
55
56 if ($request->getMethod() !== 'GET') {
57 $client->setRawData(json_encode($request->getBody()), 'application/json');
58 }
59
60 return $client;
61 }
62
63 /**
64 * @param string $apiName
65 * @param array $message
66 * @param bool $isError
67 */
68 public function logAPICall($apiName, $message, $isError)
69 {
70 $logLevel = 'error';
71 if ($isError === false) {
72 $logLevel = 'debug';
73 }
74 if (!is_string($message)) {
75 $message = print_r($message, true);
76 }
77 $this->logger->$logLevel('['.$apiName.'] '.$message);
78 }
79
80 public function setEndpoint($endpoint)
81 {
82 $this->endpoint = $endpoint;
83 }
84}