diff --git a/app/MetaGer.php b/app/MetaGer.php index afa81b3cf7e332b75d39561e2cbc31c4bcf6aa8c..9bf1e969bfb884661f26b2397fdca7522a3f6c24 100644 --- a/app/MetaGer.php +++ b/app/MetaGer.php @@ -40,6 +40,8 @@ class MetaGer protected $ip; protected $language; protected $agent; + protected $apiKey = ""; + protected $apiAuthorized = false; # Konfigurationseinstellungen: protected $sumaFile; protected $mobile; @@ -148,6 +150,7 @@ class MetaGer ->with('mobile', $this->mobile) ->with('warnings', $this->warnings) ->with('errors', $this->errors) + ->with('apiAuthorized', $this->apiAuthorized) ->with('metager', $this) ->with('browser', (new Agent())->browser()); break; @@ -155,6 +158,7 @@ class MetaGer return view('metager3resultsrss20') ->with('results', $viewResults) ->with('eingabe', $this->eingabe) + ->with('apiAuthorized', $this->apiAuthorized) ->with('metager', $this) ->with('resultcount', sizeof($viewResults)); break; @@ -190,6 +194,9 @@ class MetaGer // filter // augment (boost&adgoal) // authorize + if ($this->apiKey) { + $this->apiAuthorized = $this->authorize($this->apiKey); + } // misc (WiP) if ($this->fokus == "nachrichten") { $this->results = array_filter($this->results, function ($v, $k) { @@ -462,6 +469,34 @@ class MetaGer return $results; } + public function authorize($key) + { + $postdata = http_build_query(array( + 'dummy' => rand(), + )); + $opts = array('http' => array( + 'method' => 'POST', + 'header' => 'Content-type: application/x-www-form-urlencoded', + 'content' => $postdata, + ), + ); + + $context = stream_context_create($opts); + + try { + $link = "https://key.metager3.de/" . urlencode($key) . "/request-permission/api-access"; + $result = json_decode(file_get_contents($link, false, $context)); + if ($result->{'api-access'} == true) { + return true; + } else { + return false; + } + + } catch (\ErrorException $e) { + return false; + } + } + /* * Die Erstellung der Suchmaschinen bis die Ergebnisse da sind mit Unterfunktionen */ @@ -994,6 +1029,9 @@ class MetaGer } else { $this->quicktips = true; } + + $this->apiKey = $request->input('key', ''); + $this->out = $request->input('out', "html"); # Standard output format html if ($this->out !== "html" && $this->out !== "json" && $this->out !== "results" && $this->out !== "results-with-style" && $this->out !== "result-count" && $this->out !== "rss20" && $this->out !== "rich") { diff --git a/resources/views/metager3resultsrss20.blade.php b/resources/views/metager3resultsrss20.blade.php index f8fb9ac93226ddc4019c46706291643d55bb802c..8bdf721326a27440ef536e56b53c3362d1cdf1e9 100644 --- a/resources/views/metager3resultsrss20.blade.php +++ b/resources/views/metager3resultsrss20.blade.php @@ -8,6 +8,7 @@ <opensearch:totalResults>{{ $resultcount }}</opensearch:totalResults> <opensearch:Query role="request" searchTerms="{{ htmlspecialchars($eingabe, ENT_QUOTES) }}"/> + @if($apiAuthorized) @foreach($metager->getResults() as $result) <item> <title>{!! htmlspecialchars($result->titel, ENT_XML1, 'UTF-8'); !!}</title> @@ -18,5 +19,6 @@ </description> </item> @endforeach + @endif </channel> </rss> diff --git a/resources/views/metager3rich.blade.php b/resources/views/metager3rich.blade.php index 9676713ab28ccebc00ed1ec188cc0ee0799c29b7..b2008cb9d8c9d3481008724d3f1ae8e05b0d84a2 100644 --- a/resources/views/metager3rich.blade.php +++ b/resources/views/metager3rich.blade.php @@ -33,7 +33,7 @@ </details> <main class="results-container"> @foreach($metager->getResults() as $result) - @if($result->number % 7 === 0) + @if($result->number % 7 === 0 && !$apiAuthorized) @include('layouts.rich.ad', ['result' => $metager->popAd()]) @endif @include('layouts.rich.result', ['result' => $result])