From 74dbbc64da065aa1d2eb39967c29383344286bff Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Mon, 3 Dec 2018 10:23:19 +0100
Subject: [PATCH] Added a route for the xml api

---
 app/MetaGer.php                               | 28 +++++++++++--------
 .../metager3resultsatom10.blade.php           |  6 ++--
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/app/MetaGer.php b/app/MetaGer.php
index c9fdb9b49..73565382e 100644
--- a/app/MetaGer.php
+++ b/app/MetaGer.php
@@ -181,8 +181,11 @@ class MetaGer
                         ->with('resultcount', sizeof($viewResults))
                         ->with('fokus', $this->fokus);
                     break;
+                case 'api':
+                    return response()->view('resultpages.metager3resultsatom10', ['results' => $viewResults, 'eingabe' => $this->eingabe, 'metager' => $this, 'resultcount' => sizeof($viewResults), 'apiAuthorized' => $this->apiAuthorized])->header('Content-Type', 'application/xml');
+                    break;
                 case 'atom10':
-                    return response()->view('resultpages.metager3resultsatom10', ['results' => $viewResults, 'eingabe' => $this->eingabe, 'metager' => $this, 'resultcount' => sizeof($viewResults)])
+                    return response()->view('resultpages.metager3resultsatom10', ['results' => $viewResults, 'eingabe' => $this->eingabe, 'metager' => $this, 'resultcount' => sizeof($viewResults), 'apiAuthorized' => true])
                         ->header('Content-Type', 'application/xml');
                     break;
                 case 'result-count':
@@ -532,8 +535,8 @@ class MetaGer
         $sumaCount = 0;
 
         /*
-        * Erstellt eine Liste mit Foki, die verfügbar sind
-        */
+         * Erstellt eine Liste mit Foki, die verfügbar sind
+         */
         $this->availableFoki = [];
         foreach ($sumas as $suma) {
             $foki = explode(",", trim($suma["type"]));
@@ -954,7 +957,7 @@ class MetaGer
 
     public function parseFormData(Request $request)
     {
-        
+
         # Sichert, dass der request in UTF-8 formatiert ist
         if ($request->input('encoding', 'utf8') !== "utf8") {
             # In früheren Versionen, als es den Encoding Parameter noch nicht gab, wurden die Daten in ISO-8859-1 übertragen
@@ -1091,7 +1094,7 @@ class MetaGer
 
         $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 !== "atom10" && $this->out !== "rich") {
+        if ($this->out !== "html" && $this->out !== "json" && $this->out !== "results" && $this->out !== "results-with-style" && $this->out !== "result-count" && $this->out !== "rss20" && $this->out !== "atom10" && $this->out !== "rich" && $this->out !== "api") {
             $this->out = "html";
         }
         # Wir schalten den Cache aus, wenn die Ergebniszahl überprüft werden soll
@@ -1241,12 +1244,12 @@ class MetaGer
     {
         $oldQ = $this->q;
         // matches '[... ]-test[ ...]'
-        $words = preg_split("/\s+/si",$this->q);
+        $words = preg_split("/\s+/si", $this->q);
         $newQ = "";
-        foreach($words as $word){
-            if(strpos($word, "-") === 0 && strlen($word) > 1){
+        foreach ($words as $word) {
+            if (strpos($word, "-") === 0 && strlen($word) > 1) {
                 $this->stopWords[] = substr($word, 1);
-            }else{
+            } else {
                 $newQ .= " " . $word;
             }
         }
@@ -1513,11 +1516,13 @@ class MetaGer
 
 # Einfache Getter
 
-    public function getVerificationId() {
+    public function getVerificationId()
+    {
         return $this->verificationId;
     }
 
-    public function getVerificationCount() {
+    public function getVerificationCount()
+    {
         return $this->verificationCount;
     }
 
@@ -1585,7 +1590,6 @@ class MetaGer
         return $this->availableFoki;
     }
 
-
     public function getSprueche()
     {
         return $this->sprueche;
diff --git a/resources/views/resultpages/metager3resultsatom10.blade.php b/resources/views/resultpages/metager3resultsatom10.blade.php
index 97df99dca..bac794143 100644
--- a/resources/views/resultpages/metager3resultsatom10.blade.php
+++ b/resources/views/resultpages/metager3resultsatom10.blade.php
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<feed xmlns="http://www.w3.org/2005/Atom" 
+<feed xmlns="http://www.w3.org/2005/Atom"
       xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"
       xmlns:mg="http://metager.de/opensearch/"
       xmlns:ad="http://a9.com/-/opensearch/extensions/advertisement/1.0/">
@@ -11,6 +11,7 @@
   <link rel="next" href="{{ htmlspecialchars($metager->nextSearchLink() ,ENT_QUOTES) }}" type="application/atom+xml"/>
   <id>urn:uuid:1d634a8c-2764-424f-b082-6c96494b7240</id>
   @include('layouts.atom10ad', ['ad' => $metager->popAd()])
+  @if($apiAuthorized)
   @foreach($metager->getResults() as $result)
     @if($result->number % 5 === 0)
       @include('layouts.atom10ad', ['ad' => $metager->popAd()])
@@ -24,4 +25,5 @@
       </content>
     </entry>
   @endforeach
-</feed>
\ No newline at end of file
+  @endif
+</feed>
-- 
GitLab