Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Service/
?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src
<?php
namespace Application\Service;
/**
* Description
*
* @author jimmy
*
*/
class APICoinPaprikaService {
public function __construct($em) {
$this->em = $em;
}
public function getEntityManager() {
return $this->em;
}
public function getListCoins() {
$url = 'https://api.coinpaprika.com/v1/coins';
$parameters = [
// 'id' => '1',
// 'amount' => '1',
// 'convert' => 'EUR',
// 'time' => $datetime->format(\DateTime::ATOM)
];
// $headers = [
// 'Accepts: application/json',
// 'X-CMC_PRO_API_KEY: 5922b05c-4c84-47c6-a462-f303e6c209be'
// ];
$qs = http_build_query($parameters); // query string encode the parameters
$request = "{$url}?{$qs}"; // create the request URL
$curl = curl_init(); // Get cURL resource
// Set cURL options
curl_setopt_array($curl, array(
CURLOPT_URL => $request, // set the request URL
//CURLOPT_HTTPHEADER => $headers, // set the headers
CURLOPT_RETURNTRANSFER => 1 // ask for raw response instead of bool
));
$response = curl_exec($curl); // Send the request, save the response
//print_r(json_decode($response)); // print json decoded response
curl_close($curl); // Close request
return json_decode($response);
}
public function updateDevise() {
$list = $this->getListCoins();
/* exemple
*
* object(stdClass)#301 (7) { ["id"]=> string(11) "btc-bitcoin" ["name"]=> string(7) "Bitcoin" ["symbol"]=> string(3) "BTC" ["rank"]=> int(1) ["is_new"]=> bool(false) ["is_active"]=> bool(true) ["type"]=> string(4) "coin" }
*/
$mapperDevise = new \Application\Mapper\DeviseMapper($this->getEntityManager());
foreach ($list as $obj) {
$findDevise = $mapperDevise->findByName($obj->name);
if ($findDevise) {
$findDevise->setIdCoinPaprika($obj->id);
$mapperDevise->update($findDevise);
$this->updatePrice($findDevise);
}
}
}
/*
*
*
*
*
start
required
string
start point for historical data
Supported formats:
RFC3999 (ISO-8601) eg. 2018-02-15T05:15:00Z
Simple date (yyyy-mm-dd) eg. 2018-02-15
Unix timestamp (in seconds) eg. 1518671700
end
string
end point for ohlcv (max 1 year)
Supported formats:
RFC3999 (ISO-8601) eg. 2018-02-15T05:15:00Z
Simple date (yyyy-mm-dd) eg. 2018-02-15
Unix timestamp (in seconds) eg. 1518671700
If not provided calculated by the limit parameter
limit
integer
Default: 1
limit of result rows (max 366)
quote
string
Default: "usd"
returned data quote (available values: usd btc)
*/
public function getOHLVCFromIdPaprika($idPaprika, $datetime) {
$url = 'https://api.coinpaprika.com/v1/coins/' . $idPaprika . '/ohlcv/historical';
$parameters = [
'start' => $datetime->format('Y-m-d'),
// 'end' => $datetime->format(\DateTime::ATOM),
// 'limit' => 'EUR',
'quote' => 'usd'
//
];
// $headers = [
// 'Accepts: application/json',
// 'X-CMC_PRO_API_KEY: 5922b05c-4c84-47c6-a462-f303e6c209be'
// ];
$qs = http_build_query($parameters); // query string encode the parameters
$request = "{$url}?{$qs}"; // create the request URL
$curl = curl_init(); // Get cURL resource
// Set cURL options
curl_setopt_array($curl, array(
CURLOPT_URL => $request, // set the request URL
//CURLOPT_HTTPHEADER => $headers, // set the headers
CURLOPT_RETURNTRANSFER => 1 // ask for raw response instead of bool
));
$response = curl_exec($curl); // Send the request, save the response
//print_r(json_decode($response)); // print json decoded response
curl_close($curl); // Close request
if (json_decode($response)) {
$data = json_decode($response)[0];
return $data;
}
return json_decode($response);
}
public function updatePrice($devise) {
//var_dump($idPaprika);
set_time_limit(0);
$dateFrom = '2019-01-01';
$exchangeRateService = new ExchangeRateService();
$begin = new \DateTime($dateFrom);
$end = new \DateTime();
$mapperCoursDevise = new \Application\Mapper\CoursDeviseMapper($this->getEntityManager());
$interval = \DateInterval::createFromDateString('1 day');
$period = new \DatePeriod($begin, $interval, $end);
foreach ($period as $dateTime) {
if (!$mapperCoursDevise->findByDeviseAndDate($devise, $dateTime)) {
$response = $this->getOHLVCFromIdPaprika($devise->getIdCoinPaprika(), $dateTime);
if ($response) {
$valueUSD = ($response->high + $response->low) / 2;
} else {
echo $devise->getCode() . 'non trouvé';
return;
}
$txUSD = $exchangeRateService->getExchangeRates('USD', $dateTime);
if ($txUSD) {
$valueEUR = $valueUSD / $txUSD;
$coursDevise = new \Application\Entity\CoursDevise();
$coursDevise->setDevise($devise);
$coursDevise->setDateCours($dateTime);
$coursDevise->setCoursEuro($valueEUR);
$mapperCoursDevise->insert($coursDevise);
// var_dump($dateTime);
// var_dump($devise);
} else {
echo $dateTime->format('Y-m-d') . ' ' .$devise->getCode() . 'non trouvé';
return;
}
}
}
}
// public function getPriceByIdCMC($idCMC, $datetime) {
// $url = 'https://pro-api.coinmarketcap.com/v1/tools/price-conversion';
// $parameters = [
// 'id' => '1',
// 'amount' => '1',
// 'convert' => 'EUR',
// 'time' => $datetime->format(\DateTime::ATOM)
// ];
//
// $headers = [
// 'Accepts: application/json',
// 'X-CMC_PRO_API_KEY: 5922b05c-4c84-47c6-a462-f303e6c209be'
// ];
// $qs = http_build_query($parameters); // query string encode the parameters
// $request = "{$url}?{$qs}"; // create the request URL
//
//
// $curl = curl_init(); // Get cURL resource
//// Set cURL options
// curl_setopt_array($curl, array(
// CURLOPT_URL => $request, // set the request URL
// CURLOPT_HTTPHEADER => $headers, // set the headers
// CURLOPT_RETURNTRANSFER => 1 // ask for raw response instead of bool
// ));
//
// $response = curl_exec($curl); // Send the request, save the response
// //print_r(json_decode($response)); // print json decoded response
// curl_close($curl); // Close request
// $responseObj = json_decode($response);
// //var_dump($responseObj);
// if ($responseObj && $responseObj->status && $responseObj->status->error_code === 0) {
// return $response->data->quote->EUR->price;
// }
// }
// public function getInfoByCode($code) {
// $url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/map';
//// $url = 'https://pro-api.coinmarketcap.com/v1//cryptocurrency/listings/latest';
// $parameters = [
// 'symbol' => $code
// ];
//
// $headers = [
// 'Accepts: application/json',
// 'X-CMC_PRO_API_KEY: 5922b05c-4c84-47c6-a462-f303e6c209be'
// ];
// $qs = http_build_query($parameters); // query string encode the parameters
// $request = "{$url}?{$qs}"; // create the request URL
//
//
// $curl = curl_init(); // Get cURL resource
//// Set cURL options
// curl_setopt_array($curl, array(
// CURLOPT_URL => $request, // set the request URL
// CURLOPT_HTTPHEADER => $headers, // set the headers
// CURLOPT_RETURNTRANSFER => 1 // ask for raw response instead of bool
// ));
//
// $response = curl_exec($curl); // Send the request, save the response
// //print_r(json_decode($response)); // print json decoded response
// curl_close($curl); // Close request
// $responseObj = json_decode($response);
// var_dump($responseObj);
// }
}