Consumo (acesso) em API, via JSON, através da linguagem PHP. A API HG Brasil informa a previsão do tempo. A própria API utiliza o IP do dispositivo requisitante, para retornar a previsão do tempo local.
Modo Estrutural
<?php
$url = "https://api.hgbrasil.com/weather?key=651bb186&user_ip=remote";
$weather = json_decode(file_get_contents($url));
echo "Previsão do tempo ".$weather->results->city."<br>";
foreach($weather->results->forecast as $r2) {
echo $r2->date." ".$r2->weekday;
echo " Min: ".$r2->min."°C | Max: ".$r2->max."°C ";
echo $r2->description." ".$r2->condition."<br>";
}
Modo Padronizado
index.php
<?php
/* API HG Cotações
1- No site oficial, criar conta, então chave de autenticação
2- Minha chave: Não use a mesma! 811ec71b (Ex: https://api.hgbrasil.com/finance/quotations?key=811ec71b)*/
require_once 'app/config/config.php';
require_once 'app/modules/hg-api.php';
$hg = new HG_API(HG_API_KEY);
$dolar = $hg->dolar_quotation();
var_dump($dolar);
echo("<br>".$dolar['buy']);
if($hg->is_error() == false) {
$variation = ($dolar['variation']<0) ? 'Variação negativa' : 'Variação positiva';
}
?>
<h1>Cotação dolar</h1>
<?php if($hg->is_error()==false): ?>
<p>U$D: <?= $dolar['buy'] ?></p>
<p><?= $variation."(".$dolar['variation'].")" ?></p>
<?php else: ?>
<p>Erro de serviço</p>
<?php endif; ?>
Pasta app
Subpasta config
config.php
<?php
define('HG_API_KEY','811ec71b');
?>
Subpasta modules
hg-api.php
<?php
class HG_API {
private $key = null;
private $error = false;
function __contruct($key = null) {
if(!empty($key)) $this->key = $key;
}
function request($endpoint = '', $params = array()) {
$uri = "https://api.hgbrasil.com/".$endpoint."?key=".$this->key."&format=json";
if(is_array($params)) {
foreach($params as $key => $value) {
if(empty($value)) continue;
$uri .= $key . '=' . urlencode($value) . '&';
}
$uri = substr($uri,0,-1);
$response = @file_get_contents($uri);
$this->error = false;
return json_decode($response,true);
} else {
$this->error = true;
return false;
}
}
function is_error() {
return $this->error;
}
function dolar_quotation() {
$data = $this->request('finance/quotations');
if(!empty($data) && is_array($data['results']['currencies']['USD'])) {
$this->error = false;
return $data['results']['currencies']['USD'];
} else {
$this->error = true;
return false;
}
}
}
?>
Elaborado por Mateus Schwede
ubsocial.github.io