Bladeren bron

Twig Extension para webservice

Espinoza Guillermo 7 jaren geleden
bovenliggende
commit
7425e39fc6
2 gewijzigde bestanden met toevoegingen van 69 en 7 verwijderingen
  1. 13 7
      Resources/config/services.yml
  2. 56 0
      Twig/GetJSONExtension.php

+ 13 - 7
Resources/config/services.yml

@@ -1,31 +1,37 @@
 services:
-   
+
    webservice.http_client:
        class: Buzz\Client\Curl
-       
+
    webservice:
        class: WebserviceBundle\Services\Webservice
        arguments: ["@service_container", "@security.token_storage", "@webservice.http_client"]
-       
+
    webservice.client.choiceloader:
        class: WebserviceBundle\Form\ChoiceList\Loader\ClientChoiceLoader
        arguments: ["@webservice", "@base_tenancy.tenancy_service"]
-       
+
    webservice.client.admin:
        class: WebserviceBundle\Services\ClientAdmin
        tags:
            - { name: kernel.event_listener, event: sonata.admin.event.configure.form, method: addType }
            - { name: kernel.event_listener, event: sonata.admin.event.configure.show, method: addClient }
            - { name: kernel.event_listener, event: sonata.admin.event.configure.list, method: addClient }
-            
+
    webservice.form.type.remoteclient:
        class: WebserviceBundle\Form\Type\RemoteClientType
        arguments: ["@webservice.client.choiceloader"]
        tags:
            - { name: form.type }
-            
+
    webservice.twig_remote_client_extension:
        class: WebserviceBundle\Twig\RemoteClientExtension
        arguments: ["@webservice", "%remote_client_create_url%"]
        tags:
-           - { name: twig.extension }
+           - { name: twig.extension }
+
+   webservice.twig_get_json_extension:
+       class: WebserviceBundle\Twig\GetJSONExtension
+       arguments: ["@webservice"]
+       tags:
+           - { name: twig.extension }

+ 56 - 0
Twig/GetJSONExtension.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace WebserviceBundle\Twig;
+
+use Buzz\Message\RequestInterface as HttpRequestInterface;
+use WebserviceBundle\Services\Webservice;
+use WebserviceBundle\Utils\HttpUtils;
+
+class GetJSONExtension extends \Twig_Extension
+{
+
+    /**
+     * @var Webservice
+     */
+    protected $webservice;
+
+
+    /**
+     * @param Webservice $webservice
+     */
+    public function __construct(Webservice $webservice)
+    {
+        $this->webservice = $webservice;
+    }
+
+    /**
+     * @return array
+     */
+    public function getFunctions()
+    {
+        return array(
+            new \Twig_SimpleFunction('get_json', array($this, 'getJSON')),
+        );
+    }
+
+    /**
+     * @param int $clientId
+     *
+     * @return string
+     */
+    public function getJSON($parameter = 'client', $filters = [])
+    {
+        $url = $this->webservice->buildUrl($parameter, $filters);
+
+        return current(json_decode($this->webservice->makeGetRequest($url), true));
+    }
+
+    /**
+     * @return string
+     */
+    public function getName()
+    {
+        return 'get_json_extension';
+    }
+
+}