-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.php
63 lines (49 loc) · 2.01 KB
/
api.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
//Quita el comentario a estas dos líneas porsi tienes algún error y desplegarlos
//ini_set('display_errors', 1);
//error_reporting(E_ALL);
header('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");
require "vendor/autoload.php";
//Cargamos Guzzle
use GuzzleHttp\Client;
$client = new GuzzleHttp\Client();
//Link que tomamos del GET puede venir en http, https o no tener.
$link = $_GET['url'];
if (substr($link,0,4) != 'http') {
$link = 'https://'.$_GET['url'];
}
$ApiKey = [TU_API_KEY_AQUI];
//URL con utf8 porque al parecer hay un problema con &(ampersand) y la url se expres como $amp; y la api de google no reconoce eso.
$url = utf8_encode('https://www.googleapis.com/pagespeedonline/v5/runPagespeed?key='.$ApiKey.'&url='.$link);
$response = $client->request('GET', $url);
//Errores
if($response->getStatusCode() != 200){
$apiResponse = [
'error' => true,
'message' => 'Falta un parámetro requerido'
];
echo json_encode($apiResponse);
}
else {
//Si no hay errores, Obtenemos los contenidos
$json = $response->getBody()->getContents();
//Decodificamos el json para extraer variables
$body = json_decode($json, true);
//Variables desde el json de la API de Google
$timetoInteractive = str_replace( chr( 194 ) . chr( 160 ), ' ',$body['lighthouseResult']['audits']['interactive']['displayValue']);
$timetoPaint = str_replace( chr( 194 ) . chr( 160 ), ' ',$body['lighthouseResult']['audits']['first-contentful-paint']['displayValue']);
$timetoInteractiveScore = $body['lighthouseResult']['audits']['interactive']['score'];
$timetoPaintScore = $body['lighthouseResult']['audits']['first-contentful-paint']['score'];
//Calculo de score basado en los score de tiempo para interacción y tiempo para pintado.
$score = (($timetoInteractiveScore+$timetoPaintScore)/2)*100;
//Creamos un nuevo json como respuesta
$result = [
'Interactive' => $timetoInteractive,
'Paint' => $timetoPaint,
'Score' => $score
];
//Imprimimos
echo json_encode($result);
}
?>