server/src/app/Http/Controllers/Proxy/BnfController.php
author ymh <ymh.work@gmail.com>
Thu, 06 Oct 2016 11:14:32 +0200
changeset 322 084aae09edf4
parent 139 8d688175513a
permissions -rw-r--r--
correction on importRDF documents + evolution theme controller

<?php

namespace CorpusParole\Http\Controllers\Proxy;

use Guzzle;

use Illuminate\Http\Request;

use CorpusParole\Http\Requests;
use CorpusParole\Http\Controllers\Controller;


class BnfController extends Controller
{

    const HEADERS_FORWARDED = [ "host", "user-agent", "accept", "accept-language", "accept-encoding", "connection" ];

    private function proxyQuery($req, $url) {

        $headers = [];
        foreach (BnfController::HEADERS_FORWARDED as $h) {
            $headerValue = $req->header($h);
            if($headerValue) {
                $headers[$h] = $headerValue;
            }
        }

        $complResp = Guzzle::get($url, ['query' => $req->all(), 'headers' => $headers]);

        $resp = response((string)$complResp->getBody(), $complResp->getStatusCode());
        foreach ($complResp->getHeaders() as $name => $values) {
            if($name != 'Transfer-Encoding') {
                $resp->header($name, $values);
            }
        }

        return $resp;

    }

    // proxy Auto completion query for bnf
    public function proxyAutoCompletion(Request $req) {
        return $this->proxyQuery($req, config('corpusparole.bnf_completion_url'));
    }

    // proxy sparql query for bnf
    public function proxySparql(Request $req) {

        return $this->proxyQuery($req, config('corpusparole.bnf_query_url'));

    }

}