Browse Source

Merge branch 'master' of ssh://200.50.168.30:222/VendorSoftwareFlowdat3/Webservice

Maximiliano Schvindt 8 years ago
parent
commit
74deb0b573

+ 5 - 2
Resources/config/services.yml

@@ -1,8 +1,11 @@
 services:
-    
+   
+   webservice.http_client:
+       class: Buzz\Client\Curl
+       
    webservice:
        class: WebserviceBundle\Services\Webservice
-       arguments: ["@service_container"]
+       arguments: ["@service_container", "@security.token_storage", "@webservice.http_client"]
        
    webservice.client.choiceloader:
        class: WebserviceBundle\Form\ChoiceList\Loader\ClientChoiceLoader

+ 4 - 2
Services/ClientAdmin.php

@@ -24,8 +24,10 @@ class ClientAdmin
     public function addClient(ConfigureEvent $event)
     {
         if ($event->getMapper()->has('clientId')) {
-            $event->getMapper()->get('clientId')->setTemplate('WebserviceBundle:CRUD:remote_client_field.html.twig');
-            $event->getMapper()->get('clientId')->setOption('data', $event->getType());
+            $clientId = $event->getMapper()->get('clientId');
+            $clientId->setType('text');
+            $clientId->setTemplate('WebserviceBundle:CRUD:remote_client_field.html.twig');
+            $clientId->setOption('data', $event->getType());
         }
     }
 

+ 47 - 3
Services/Webservice.php

@@ -2,15 +2,25 @@
 
 namespace WebserviceBundle\Services;
 
+use Buzz\Message\Request as HttpRequest;
+use Buzz\Message\RequestInterface as HttpRequestInterface;
+use Buzz\Message\Response as HttpResponse;
+
 class Webservice
 {
 
     protected $serviceContainer;
 
+    protected $securityTokenStorage;
+
+    protected $httpClient;
+
     
-    public function __construct($serviceContainer)
+    public function __construct($serviceContainer, $securityTokenStorage, $httpClient)
     {
         $this->serviceContainer = $serviceContainer;
+        $this->securityTokenStorage = $securityTokenStorage;
+        $this->httpClient = $httpClient;
     }
 
     /**
@@ -28,7 +38,7 @@ class Webservice
 
         return $choices;
     }
-    
+
     /**
      * @param string $webservice
      * @param array $params
@@ -44,7 +54,8 @@ class Webservice
                 $url .= "&filters[{$param}]=$value";
             }
             try {
-                $results = json_decode(file_get_contents($url), true);
+                $response = $this->makeGetRequest($url);
+                $results = json_decode($response->getContent(), true);
             } catch (\Exception $ex) {
                 
             }
@@ -52,6 +63,25 @@ class Webservice
         
         return $results;
     }
+    
+    /**
+     * @param string $url
+     * @return HttpResponse
+     */
+    public function makeGetRequest($url)
+    {
+        $response = '';
+        if ($token = $this->securityTokenStorage->getToken()) {
+            $accessToken = $token->getAccessToken();
+
+            $request = new HttpRequest(HttpRequestInterface::METHOD_GET, $url);
+            $response = new HttpResponse();
+            $request->setHeaders(array('Authorization: Bearer ' . $accessToken));
+            $this->httpClient->send($request, $response);
+        }
+        
+        return $response;
+    }
 
     /**
      * @param string $webservice
@@ -97,6 +127,20 @@ class Webservice
 
         return array();
     }
+    
+    /**
+     * @param string $webservice
+     * @param int $id
+     * @return string
+     */
+    public function getById($webservice, $id)
+    {
+        $result = $this->getArray($webservice, array(
+            'id' => $id
+        ));
+        
+        return isset($result[0]) ? "{$result[0]['id']} - {$result[0]['name']}" : $id;
+    }
 
     /**
      * @param string $webservice

+ 1 - 5
Twig/RemoteClientExtension.php

@@ -37,11 +37,7 @@ class RemoteClientExtension extends \Twig_Extension
      */
     public function getClient($clientId)
     {
-        $client = $this->webservice->getArray('client', array(
-            'id' => $clientId
-        ));
-        
-        return isset($client[0]) ? "{$client[0]['id']} - {$client[0]['name']}" : $clientId;
+        return $this->webservice->getById('client', $clientId);
     }
 
     /**

+ 3 - 0
composer.json

@@ -1,6 +1,9 @@
 {
     "name": "webservice",
     "description": "The Flowdat3 Webservice Rest",
+    "require": {
+        "kriswallsmith/buzz": "~0.13"
+    },
     "autoload": {
         "psr-4": { "WebserviceBundle\\": "" }
     },