diff --git a/app/Http/Controllers/AdgoalTestController.php b/app/Http/Controllers/AdgoalTestController.php new file mode 100644 index 0000000000000000000000000000000000000000..90f7617179b652fa4bce754d517632fc6abe1a2d --- /dev/null +++ b/app/Http/Controllers/AdgoalTestController.php @@ -0,0 +1,93 @@ +<?php + +namespace App\Http\Controllers; + +use Illuminate\Http\Request; +use stdClass; +use Cache; +use Illuminate\Support\Facades\Redis; + + + +class AdgoalTestController extends Controller +{ + public function index(Request $request){ + return view('admin.adgoal') + ->with('title', "Admin Adgoal - MetaGer"); + } + + public function post(Request $request){ + $urls = explode("\r\n", $request->input("urls")); + + // Bring it in a form that's similar to metager results + $mgUrls = array(); + + foreach($urls as $url){ + $result = new stdClass(); + $result->link = $url; + $result->new = true; + $mgUrls[] = $result; + } + + $resultHash = \App\Models\Adgoal::startAdgoal($mgUrls); + Cache::forget($resultHash); + + $startTime = microtime(true); + $answer = null; + while (microtime(true) - $startTime < 5) { + $answer = Cache::get($resultHash); + if ($answer === null) { + usleep(50 * 1000); + } else { + break; + } + } + + if(!empty($answer)){ + $answer = json_decode($answer, true); + $answer = json_encode($answer, JSON_PRETTY_PRINT); + } + + return view("admin.adgoal") + ->with('title', 'Admin Adgoal - MetaGer') + ->with('urls', $request->input("urls")) + ->with('answer', $answer); + } + + public function generateUrls(Request $request){ + $eingabe = $request->input('eingabe'); + if(empty($eingabe)){ + return redirect('admin/adgoal'); + } + + $url = route('resultpage', ["eingabe" => $eingabe, "out" => "api", "key" => env("mainz_key")]); + $hash = md5($url); + + $mission = [ + "resulthash" => $hash, + "url" => $url, + "useragent" => "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:81.0) Gecko/20100101 Firefox/81.0", + "username" => null, + "password" => null, + "cacheDuration" => 60, + "name" => "AdgoalGen", + ]; + + $mission = json_encode($mission); + Redis::rpush(\App\MetaGer::FETCHQUEUE_KEY, $mission); + + $results = Redis::brpop($hash, 10); + $linklist = array(); + if(!empty($results) && is_array($results) && sizeof($results) === 2){ + $results = $results[1]; + $results = \simplexml_load_string($results); + foreach($results->entry as $entry){ + $linklist[] = $entry->link["href"]->__toString(); + } + } + + return view("admin.adgoal") + ->with('title', 'Admin Adgoal - MetaGer') + ->with('urls', implode("\r\n", $linklist)); + } +} diff --git a/resources/views/admin/adgoal.blade.php b/resources/views/admin/adgoal.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..3472e193f3913bb2cb34be61ef93346f10c8dd9f --- /dev/null +++ b/resources/views/admin/adgoal.blade.php @@ -0,0 +1,30 @@ +@extends('layouts.subPages') + +@section('title', $title ) + +@section('content') + <div id="adgoal", class="card-heavy"> + <h1>Adgoal Test Interface</h1> + <p>Auf dieser Seite kannst du URLs eingeben, welche bei Adgoal auf Affliate Links überprüft werden sollen.</p> + <p>Eine URL pro Zeile</p> + <form action="{{route("adgoal-generate")}}" method="post"> + <textarea name="urls" id="urls" style="width: 100%;" rows="10" >@if(!empty($urls)){{$urls}}@endif</textarea> + <p style="padding-top: 16px;"><input type="submit" value="Generieren"></p> + </form> + </div> + @if(!empty($answer)) + <div class="card-heavy"> + <h1>Antwort</h1> + <pre style="background-color: black; padding: 8px; color: white; border: 1px solid grey;"> + {{$answer}} + </pre> + </div> + @endif + <div class="card-heavy"> + <h1>Generate URLs from search query</h1> + <form action="{{route("adgoal-urls")}}" method="post"> + <input type="text" name="eingabe" placeholder="Sucheingabe"> + <input type="submit" value="OK"> + </form> + </div> +@endsection diff --git a/routes/web.php b/routes/web.php index ec3cb529ed8f3f42fb8f567906a78be063f149a6..befbe815ccad9acdecd554972f7f833ac4451c19 100644 --- a/routes/web.php +++ b/routes/web.php @@ -212,6 +212,9 @@ Route::group( Route::post('service-desk', 'ServiceDesk@webhook'); Route::get('stress', 'Stresstest@index'); Route::get('stress/verify', 'Stresstest@index')->middleware('browserverification', 'humanverification'); + Route::get('adgoal', 'AdgoalTestController@index')->name("adgoal-index"); + Route::post('adgoal', 'AdgoalTestController@post')->name("adgoal-generate"); + Route::post('adgoal/generate-urls', 'AdgoalTestController@generateUrls')->name("adgoal-urls"); }); Route::get('settings', function () {