Browse Source

refactory rest webservice

Guillermo Espinoza 8 years ago
parent
commit
8208a4c197
2 changed files with 34 additions and 4 deletions
  1. 1 1
      Resources/config/services.yml
  2. 33 3
      Services/Webservice.php

+ 1 - 1
Resources/config/services.yml

@@ -2,7 +2,7 @@ services:
     
    webservice:
        class: WebserviceBundle\Services\Webservice
-       arguments: ["@service_container"]
+       arguments: ["@service_container", "@security.token_storage", "@hwi_oauth.http_client"]
        
    webservice.client.choiceloader:
        class: WebserviceBundle\Form\ChoiceList\Loader\ClientChoiceLoader

+ 33 - 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