<?php



/**

 * Remote.class [TIPO]

 * Descricao

 * @copyright (c) year, Welton Thierree TagPage

 */

class Remote {



    const urlSoap = 'https://www.cftc.gov/files/dea/history/dea_fut_xls_2018.zip';



    private $url;

    private $local;

    private $access;

    private $overwrite;



    public function __construct() {



        $this->remote = "https://www.cftc.gov/files/dea/history/dea_fut_xls_2018.zip";

        $this->local = $_SERVER['DOCUMENT_ROOT'] . '/forex/upload/dea_fut_xls_2018.zip';

    }



    /**

     * cURL - Recolher ficheiro remoto

     *

     * Função recorrendo a cURL para recolher um ficheiro

     * numa máquina remota com ou sem autenticação.

     *

     * @param string $remotePath      Caminho remoto incluindo ficheiro

     * @param string $localPath       Caminho local incluindo ficheiro

     * @param array $access           Matriz com credenciais de acesso (usr;pwd)

     * @param boolean $overwrite      Se deve subscrever o ficheiro existente

     *

     * @return boolean                Estado da operação

     */

    public function recolherFicheiroRemotoCurl($access = null, $overwrite = false) {



        // devolve TRUE se o ficheiro local existe e não é para subscrever

        if (is_file($this->remote) && !$overwrite) {



            return TRUE;

        } else {



            $curl_handle = curl_init();

            curl_setopt($curl_handle, CURLOPT_HEADER, 0);

            curl_setopt($curl_handle, CURLOPT_URL, $this->remote);

            curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 30);

            curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);

            if ($access) {

                curl_setopt($curl_handle, CURLOPT_USERPWD, $access["username"] . ":" . $access["password"]);

            }

            curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);

            $buffer = curl_exec($curl_handle);

            curl_close($curl_handle);



            if ($buffer != false) {

                file_put_contents($this->local, $buffer);

                return TRUE;

            }

        }



        return TRUE;

    }



}

