?? GreyFile — Mystic File Browser

Current path: home/webdevt/cryptoimpot.fr/module/Application/src/Service/



?? Go up: /home/webdevt/cryptoimpot.fr/module/Application/src

?? Viewing: APICoinPaprikaService.php

<?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);
//    }
}


??

??