kopia lustrzana https://github.com/pixelfed/pixelfed
				
				
				
			
		
			
				
	
	
		
			77 wiersze
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			77 wiersze
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
namespace App\Services;
 | 
						|
 | 
						|
use Illuminate\Support\Str;
 | 
						|
use Illuminate\Support\Facades\Http;
 | 
						|
use Illuminate\Http\Client\RequestException;
 | 
						|
use Illuminate\Http\Client\ConnectionException;
 | 
						|
 | 
						|
class NodeinfoService
 | 
						|
{
 | 
						|
    public static function get($domain)
 | 
						|
    {
 | 
						|
    	$version = config('pixelfed.version');
 | 
						|
		$appUrl = config('app.url');
 | 
						|
		$headers = [
 | 
						|
			'Accept'     => 'application/json',
 | 
						|
			'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})",
 | 
						|
		];
 | 
						|
 | 
						|
        $url = 'https://' . $domain;
 | 
						|
        $wk = $url . '/.well-known/nodeinfo';
 | 
						|
 | 
						|
        try {
 | 
						|
            $res = Http::withHeaders($headers)
 | 
						|
            ->timeout(5)
 | 
						|
            ->get($wk);
 | 
						|
        } catch (RequestException $e) {
 | 
						|
            return false;
 | 
						|
        } catch (ConnectionException $e) {
 | 
						|
            return false;
 | 
						|
        } catch (\Exception $e) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        if(!$res) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $json = $res->json();
 | 
						|
 | 
						|
        if( !isset($json['links'])) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        if(is_array($json['links'])) {
 | 
						|
            if(isset($json['links']['href'])) {
 | 
						|
                $href = $json['links']['href'];
 | 
						|
            } else {
 | 
						|
                $href = $json['links'][0]['href'];
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
 | 
						|
        $domain = parse_url($url, PHP_URL_HOST);
 | 
						|
        $hrefDomain = parse_url($href, PHP_URL_HOST);
 | 
						|
 | 
						|
        if($domain !== $hrefDomain) {
 | 
						|
            return 60;
 | 
						|
        }
 | 
						|
 | 
						|
        try {
 | 
						|
            $res = Http::withHeaders($headers)
 | 
						|
            ->timeout(5)
 | 
						|
            ->get($href);
 | 
						|
        } catch (RequestException $e) {
 | 
						|
            return false;
 | 
						|
        } catch (ConnectionException $e) {
 | 
						|
            return false;
 | 
						|
        } catch (\Exception $e) {
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        return $res->json();
 | 
						|
    }
 | 
						|
}
 |