Untitled
unknown
plain_text
2 years ago
5.6 kB
6
Indexable
<?php
namespace App\Http\Controllers;
use App\Models\GTMCodes;
use App\Models\Proxy;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class HandleUrlController extends Controller
{
protected string $proxy_id;
public function proxy(Request $request)
{
$url = $request->query('url');
try {
// Make a request to the target URL using Laravel's HTTP client
// Extract all GTM codes from the HTML response
$response = Http::get($url);
$html = $response->body();
$gtmCodes = [];
$pattern = '/GTM-([a-zA-Z0-9]+)/i';
preg_match_all($pattern, $html, $matches);
$this->extractAllGtmCodes($html);
if (!empty($matches[1])) {
$gtmCodes = $matches[1];
}
return response()->json(['gtmCodes' => array_unique($gtmCodes), 'response' => $html]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
private function extractAllGtmCodes($html)
{
$pattern = '/googletagmanager\.com\/gtm\.js\?id=([^\s"\'<]+)/i';
preg_match_all($pattern, $html, $matches);
$gtmCodes = [];
if (!empty($matches[1])) {
foreach ($matches[1] as $containerId) {
$gtmCode = $this->extractGtmCode($html, $containerId);
if ($gtmCode !== null) {
$gtmCodes[$containerId] = $gtmCode;
Log::info($gtmCode);
}
}
}
return $gtmCodes;
}
private function extractGtmCode($html, $containerId)
{
$gtmCodePattern = '/<script[^>]*googletagmanager\.com\/gtm\.js\?id=([^"\'<]+)[^>]*>(.*?)<\/script>/is';
preg_match($gtmCodePattern, $html, $codeMatches);
var_dump($html);
var_dump($codeMatches);
if (!empty($codeMatches[2])) {
Log::info($codeMatches[2]);
return $codeMatches[2];
}
return null; // GTM code not found
}
public function storeProxy(Request $request)
{
try {
$url = $request->url;
$status = $request->status;
// Create a new Proxy record
$proxyhit = Proxy::create([
'url' => $url,
'status' => $status
]);
$proxyID = $proxyhit->id;
return response()->json(['success' => 'proxy added', 'id' => $proxyID], 200);
} catch (\Throwable $err) {
return response()->json(['error' => $err->getMessage()], 500);
}
}
public function storeGTM(Request $request)
{
try {
$gtm = $request->gtm;
$proxyID = $request->proxyID;
//Log::info($gtm);
$this->addGTM($gtm, $proxyID);
//if (is_array($gtm)) {
// foreach ($gtm as $singleGTM) {
//Log::info($singleGTM);
// GTMCodes::create([
// 'gtm_codes' => $gtm,
// 'proxy_id' => $proxyID
// ]);
// }
// } else {
//Log::info($gtm);
// GTMCodes::create([
// 'gtm_codes' => $gtm,
// 'proxy_id' => $proxyID
// ]);
// }
return response()->json(['success' => 'proxy added'], 200);
} catch (\Throwable $th) {
}
}
private function addGTM($gtm, $proxID){
try {
Log::info($gtm);
Log::info($proxID);
GTMCodes::create([
'gtm_codes' => $gtm,
'proxy_id' => $proxID
]);
return response()->json(['success' => 'proxy added'], 200);
} catch (\Throwable $th) {
return response()->json(['error' => $th->getMessage()], 500);
}
}
public function checkDuplicateUrl(Request $request)
{
try {
$url = $request->url;
$url_data = Proxy::where('url', $url)->first();
if ($url_data) {
return response()->json(['success' => 'url exist', 'status_code' => 200], 200);
} else {
return response()->json(['error' => 'url did not exist ', 'status_code' => 404]);
}
} catch (\Throwable $th) {
throw $th;
}
}
public function listAllUrl()
{
try {
$list = Proxy::all();
return view('index', compact('list'));
} catch (\Throwable $th) {
throw $th;
}
}
public function fetchData()
{
try {
$list = Proxy::all();
return view('list.url-list', compact('list'));
} catch (\Throwable $th) {
throw $th;
}
}
public function getGTM(Request $request) {
try {
$id = $request->id;
Log::info('Requested ID: ' . $id);
$gtmCodes = GTMCodes::where('proxy_id', $id)->pluck('gtm_codes');
Log::info('GTM Codes: ' . $gtmCodes);
return response()->json(['gtmCodes' => $gtmCodes], 200);
} catch (\Throwable $th) {
return response()->json(['error' => $th->getMessage()], 500);
}
}
}
Editor is loading...
Leave a Comment