예제 #1
0
 /**
  * Método que encapsula a chamada do WEB SERVICE que traduz um arquivo .HTML em outras extensões.
  * Utilizado para exportar dados para arquivos a desejo do usuário.
  * 
  * @param texto $arquivoFetch nome do arquivo a ser utilizado para exportação, desde a pasta 'html'.
  * @param texto $extensaoDestino mine type para arquivo exportado.
  * @param texto $nomeArquivo nome a ser exibido no download do arquivo.
  */
 function exportarDados($arquivoFetch, $nomeArquivo = "Relatório.pdf", $extensaoDestino = "application/pdf", $fazerDownload = true)
 {
     $codigoHtml = $this->smarty->fetch($arquivoFetch);
     $codigoHtml = str_replace("html/css/", URL_COMPLETA . "html/css/", $codigoHtml);
     $codigoHtml = str_replace("html/img/", URL_COMPLETA . "html/img/", $codigoHtml);
     $request = new HTTP_Request(WEBSERVICE_BROFFICE_URL);
     $request->setMethod("POST");
     $request->addHeader("Content-Type", "text/html");
     $request->addHeader("Accept", $extensaoDestino);
     $request->setBody($codigoHtml);
     $request->sendRequest();
     $status = $request->getResponseCode();
     //echo $request->getResponseBody(); die;
     if ($status != 200) {
         echo "Ocorreu um erro na conversão. Favor entrar em contato com o administrador.";
         die;
     }
     if ($fazerDownload) {
         header("Content-Type: " . $extensaoDestino . "\n");
         header("Content-Disposition: attachment; filename=" . $nomeArquivo);
         echo $request->getResponseBody();
         die;
     }
     return $request->getResponseBody();
 }
예제 #2
0
 /**
  * Add Google Calendar Event.
  * 
  *
  * @param String $cal_url
  * @param String $eTitle
  * @param String $eDesc
  * @param String $eAuthorName
  * @param String $eAuthorEmail
  * @param String $eLocation
  * @param String $eStartTime ISO Formatted Date (see: date('c'))
  * @param String $eEndTime ISO Formatted Date
  * @return boolean False on Failure.
  */
 public function addEvent($cal_url, $eTitle, $eDesc, $eAuthorName, $eAuthorEmail, $eLocation, $eStartTime, $eEndTime)
 {
     /* Make sure we send ONLY valid XML. */
     $eTitle = htmlentities($eTitle);
     $eDesc = htmlentities($eDesc);
     $eAuthorName = htmlentities($eAuthorName);
     $eAuthorEmail = htmlentities($eAuthorEmail);
     $eLocation = htmlentities($eLocation);
     $eStartTime = htmlentities($eStartTime);
     $eEndTime = htmlentities($eEndTime);
     $xml = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'>\n  \t\t\t\t<category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category>\n  \t\t\t\t<title type='text'>{$eTitle}</title>\n  \t\t\t\t<content type='text'>{$eDesc}</content>\n  \t\t\t\t<author>\n    \t\t\t\t<name>{$eAuthorName}</name>\n    \t\t\t\t<email>{$eAuthorEmail}</email>\n  \t\t\t\t</author>\n  \t\t\t\t<gd:transparency value='http://schemas.google.com/g/2005#event.opaque'></gd:transparency>\n  \t\t\t\t<gd:eventStatus\n    \t\t\t\tvalue='http://schemas.google.com/g/2005#event.confirmed'>\n  \t\t\t\t</gd:eventStatus>\n  \t\t\t\t<gd:where valueString='{$eLocation}'></gd:where>\n  \t\t\t\t<gd:when startTime='{$eStartTime}'\n    \t\t\t\tendTime='{$eEndTime}'></gd:when>\n\t\t\t</entry>";
     $http = new HTTP_Request($cal_url, array('allowRedirects' => true));
     $http->setMethod('POST');
     $http->addHeader('Host', 'www.google.com');
     $http->addHeader('MIME-Version', '1.0');
     $http->addHeader('Accept', 'text/xml');
     $http->addHeader('Content-type', 'application/atom+xml');
     $http->addHeader('Authorization', 'GoogleLogin auth=' . $this->token);
     $http->addHeader('Content-length', strlen($xml));
     $http->addHeader('Cache-Control', 'no-cache');
     $http->addHeader('Connection', 'close');
     $http->setBody($xml);
     $http->sendRequest();
     switch ($http->getResponseCode()) {
         case 201:
         case 200:
             return true;
             break;
         default:
             throw new Exception('Error Adding Google Cal Event. Response From Google:' . $http->getResponseBody(), $http->getResponseCode());
             return false;
             break;
     }
 }
예제 #3
0
 /**
  * Submit REST Request to write data
  *
  * @param	 string			$xml				The command to execute
  * @return	mixed									 Boolean true on success or PEAR_Error
  * @access	private
  */
 private function _update($xml)
 {
     global $configArray;
     global $timer;
     $this->client->setMethod('POST');
     $this->client->setURL($this->host . "/update/");
     if ($this->debug) {
         echo "<pre>POST: ";
         print_r($this->host . "/update/");
         echo "XML:\n";
         print_r($xml);
         echo "</pre>\n";
     }
     // Set up XML
     $this->client->addHeader('Content-Type', 'text/xml; charset=utf-8');
     $this->client->addHeader('Content-Length', strlen($xml));
     $this->client->setBody($xml);
     // Send Request
     $result = $this->client->sendRequest();
     $responseCode = $this->client->getResponseCode();
     //$this->client->clearPostData();
     if ($responseCode == 500 || $responseCode == 400) {
         $detail = $this->client->getResponseBody();
         $timer->logTime("Send the update request");
         // Attempt to extract the most useful error message from the response:
         if (preg_match("/<title>(.*)<\\/title>/msi", $detail, $matches)) {
             $errorMsg = $matches[1];
         } else {
             $errorMsg = $detail;
         }
         global $logger;
         $logger->log("Error updating document\r\n{$xml}", PEAR_LOG_DEBUG);
         return new PEAR_Error("Unexpected response -- " . $errorMsg);
     } elseif ($configArray['System']['debugSolr'] == true) {
         $this->client->getResponseBody();
         $timer->logTime("Get response body");
         // Attempt to extract the most useful error message from the response:
         //print_r("Update Response:");
         //print_r($detail);
     }
     if (!PEAR_Singleton::isError($result)) {
         return true;
     } else {
         return $result;
     }
 }
예제 #4
0
 public function SendRequest($data)
 {
     if (defined('OX_DEBUG') && OX_DEBUG == 1) {
         ob_start();
         var_dump($data);
         $rdata = ob_get_contents();
         ob_end_clean();
         debugLog("request: {$rdata}");
     }
     $request = new HTTP_Request(OX_URL . "/multiple", array("method" => "PUT"));
     foreach ($this->cookies as $cookie) {
         $request->addCookie($cookie["name"], $cookie["value"]);
     }
     $request->addQueryString("session", $this->session);
     //$request->addHeader("Content-Type", "text/javascript");
     $request->setBody("[" . $this->json->encodeUnsafe($data) . "]");
     try {
         $request->sendRequest();
         if ($request->getResponseCode() == 200) {
             $reply = $this->json->decode($request->getResponseBody());
             if (defined('OX_DEBUG') && OX_DEBUG == 1) {
                 ob_start();
                 var_dump($reply);
                 $rdata = ob_get_contents();
                 ob_end_clean();
                 debugLog("reply: {$rdata}");
             }
             return $reply[0];
         } else {
             return false;
         }
     } catch (HTTP_Exception $e) {
         echo $e->getMessage();
         return false;
     }
 }
 function _request($url, $body = null, $content_type = 'text/html', $method = 'GET', $headers = array(), $cookies = array())
 {
     set_include_path(_XE_PATH_ . "libs/PEAR");
     require_once 'PEAR.php';
     require_once 'HTTP/Request.php';
     $url_info = parse_url($url);
     $host = $url_info['host'];
     if (__PROXY_SERVER__ !== null) {
         $oRequest = new HTTP_Request(__PROXY_SERVER__);
         $oRequest->setMethod('POST');
         $oRequest->addPostData('arg', serialize(array('Destination' => $url, 'method' => $method, 'body' => $body, 'content_type' => $content_type, "headers" => $headers)));
     } else {
         $oRequest = new HTTP_Request($url);
         if (count($headers)) {
             foreach ($headers as $key => $val) {
                 $oRequest->addHeader($key, $val);
             }
         }
         if ($cookies[$host]) {
             foreach ($cookies[$host] as $key => $val) {
                 $oRequest->addCookie($key, $val);
             }
         }
         if (!$content_type) {
             $oRequest->addHeader('Content-Type', 'text/html');
         } else {
             $oRequest->addHeader('Content-Type', $content_type);
         }
         $oRequest->setMethod($method);
         if ($body) {
             $oRequest->setBody($body);
         }
     }
     $oResponse = $oRequest->sendRequest();
     $code = $oRequest->getResponseCode();
     $header = $oRequest->getResponseHeader();
     $response = $oRequest->getResponseBody();
     if ($c = $oRequest->getResponseCookies()) {
         foreach ($c as $k => $v) {
             $cookies[$host][$v['name']] = $v['value'];
         }
     }
     if ($code > 300 && $code < 399 && $header['location']) {
         return $this->_request($header['location'], $body, $content_type, $method, $headers, $cookies);
     }
     if ($code != 200) {
         return;
     }
     return $response;
 }
예제 #6
0
 function getRemoteResource($url, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array(), $cookies = array(), $post_data = array())
 {
     requirePear();
     require_once 'HTTP/Request.php';
     $parsed_url = parse_url(__PROXY_SERVER__);
     if ($parsed_url["host"]) {
         $oRequest = new HTTP_Request(__PROXY_SERVER__);
         $oRequest->setMethod('POST');
         $oRequest->_timeout = $timeout;
         $oRequest->addPostData('arg', serialize(array('Destination' => $url, 'method' => $method, 'body' => $body, 'content_type' => $content_type, "headers" => $headers, "post_data" => $post_data)));
     } else {
         $oRequest = new HTTP_Request($url);
         if (count($headers)) {
             foreach ($headers as $key => $val) {
                 $oRequest->addHeader($key, $val);
             }
         }
         if ($cookies[$host]) {
             foreach ($cookies[$host] as $key => $val) {
                 $oRequest->addCookie($key, $val);
             }
         }
         if (count($post_data)) {
             foreach ($post_data as $key => $val) {
                 $oRequest->addPostData($key, $val);
             }
         }
         if (!$content_type) {
             $oRequest->addHeader('Content-Type', 'text/html');
         } else {
             $oRequest->addHeader('Content-Type', $content_type);
         }
         $oRequest->setMethod($method);
         if ($body) {
             $oRequest->setBody($body);
         }
         $oRequest->_timeout = $timeout;
     }
     $oResponse = $oRequest->sendRequest();
     $code = $oRequest->getResponseCode();
     $header = $oRequest->getResponseHeader();
     $response = $oRequest->getResponseBody();
     if ($c = $oRequest->getResponseCookies()) {
         foreach ($c as $k => $v) {
             $cookies[$host][$v['name']] = $v['value'];
         }
     }
     if ($code > 300 && $code < 399 && $header['location']) {
         return FileHandler::getRemoteResource($header['location'], $body, $timeout, $method, $content_type, $headers, $cookies, $post_data);
     }
     return $response;
 }
예제 #7
0
파일: data.php 프로젝트: ndpgroup/fp-legacy
/**
 * @param    $object_id      Name to assign
 * @param    $content_bytes  Content of file
 * @param    $mime_type      MIME/Type to assign
 * @return   mixed   URL of uploaded file on success, false or PEAR_Error on failure.
 */
function post_file_s3($object_id, $content_bytes, $mime_type)
{
    $bucket_id = S3_BUCKET_ID;
    $content_md5_hex = md5($content_bytes);
    $date = date('D, d M Y H:i:s T');
    $content_md5 = '';
    for ($i = 0; $i < strlen($content_md5_hex); $i += 2) {
        $content_md5 .= chr(hexdec(substr($content_md5_hex, $i, 2)));
    }
    $content_md5 = base64_encode($content_md5);
    $sign_string = "PUT\n{$content_md5}\n{$mime_type}\n{$date}\nx-amz-acl:public-read\n/{$bucket_id}/{$object_id}";
    //error_log("String to sign: {$sign_string}");
    $crypt_hmac = new Crypt_HMAC(AWS_SECRET_KEY, 'sha1');
    $hashed = $crypt_hmac->hash($sign_string);
    $signature = '';
    for ($i = 0; $i < strlen($hashed); $i += 2) {
        $signature .= chr(hexdec(substr($hashed, $i, 2)));
    }
    $authorization = sprintf('AWS %s:%s', AWS_ACCESS_KEY, base64_encode($signature));
    //error_log("Authorization header: {$authorization}");
    $url = "http://{$bucket_id}.s3.amazonaws.com/{$object_id}";
    $req = new HTTP_Request($url);
    $req->setMethod('PUT');
    $req->addHeader('Date', $date);
    $req->addHeader('X-Amz-Acl', 'public-read');
    $req->addHeader('Content-Type', $mime_type);
    $req->addHeader('Content-MD5', $content_md5);
    $req->addHeader('Content-Length', strlen($content_bytes));
    $req->addHeader('Authorization', $authorization);
    $req->setBody($content_bytes);
    $res = $req->sendRequest();
    if (PEAR::isError($res)) {
        return $res;
    }
    if ($req->getResponseCode() == 200) {
        return $url;
    }
    return false;
}
예제 #8
0
 function sendRequest($resource, $verb = NULL, $objectdata = NULL, $acl = NULL, $contentType = NULL, $metadata = NULL)
 {
     if ($verb == NULL) {
         $verb = $this->verb;
     }
     if ($acl == NULL) {
         $aclstring = "";
     } else {
         $aclstring = "x-amz-acl:{$acl}\n";
     }
     $contenttypestring = "";
     if ($contentType != NULL && $verb == "PUT" && $objectdata != NULL && $objectdata != "") {
         $contenttypestring = "{$contentType}";
     }
     // update date / time on each request
     $this->httpDate = gmdate($this->date_format);
     $httpDate = $this->httpDate;
     $paramstring = "";
     $delim = "?";
     if (strlen($this->prefix)) {
         $paramstring .= $delim . "prefix=" . urlencode($this->prefix);
         $delim = "&";
     }
     if (strlen($this->marker)) {
         $paramstring .= $delim . "marker=" . urlencode($this->marker);
         $delim = "&";
     }
     if (strlen($this->max_keys)) {
         $paramstring .= $delim . "max-keys=" . $this->max_keys;
         $delim = "&";
     }
     if (strlen($this->delimiter)) {
         $paramstring .= $delim . "delimiter=" . urlencode($this->delimiter);
         $delim = "&";
     }
     $this->debug_text("HTTP Request sent to: " . $this->S3_URL . $resource . $paramstring);
     $req = new HTTP_Request($this->S3_URL . $resource . $paramstring);
     $req->setMethod($verb);
     if ($objectdata != NULL && $objectdata != "") {
         $contentMd5 = $this->hex2b64(md5($objectdata));
         $req->addHeader("CONTENT-MD5", $contentMd5);
         $this->debug_text("MD5 HASH OF DATA: " . $contentMd5);
         $contentmd5string = $contentMd5;
     } else {
         $contentmd5string = "";
     }
     if (strlen($contenttypestring)) {
         $this->debug_text("Setting content type to {$contentType}");
         $req->addHeader("CONTENT-TYPE", $contentType);
     }
     $req->addHeader("DATE", $httpDate);
     if (strlen($aclstring)) {
         $this->debug_text("Setting acl string to {$acl}");
         $req->addHeader("x-amz-acl", $acl);
     }
     $metadatastring = "";
     if (is_array($metadata)) {
         ksort($metadata);
         $this->debug_text("Metadata found.");
         foreach ($metadata as $key => $value) {
             $metadatastring .= "x-amz-meta-" . $key . ":" . trim($value) . "\n";
             $req->addHeader("x-amz-meta-" . $key, trim($value));
             $this->debug_text("Setting x-amz-meta-{$key} to '{$value}'");
         }
     }
     if ($objectdata != NULL && $objectdata != "") {
         $req->setBody($objectdata);
     }
     $stringToSign = "{$verb}\n{$contentmd5string}\n{$contenttypestring}\n{$httpDate}\n{$aclstring}{$metadatastring}/{$resource}";
     $this->debug_text("Signing String: {$stringToSign}");
     $signature = $this->hex2b64($this->hasher->hash($stringToSign));
     $req->addHeader("Authorization", "AWS " . $this->keyId . ":" . $signature);
     $req->sendRequest();
     $this->_responseContentType = $req->getResponseHeader("content-type");
     if (strlen($req->getResponseBody())) {
         $this->debug_text($req->getResponseBody());
         return $req->getResponseBody();
     } else {
         $this->debug_text($req->getResponseHeader());
         return $req->getResponseHeader();
     }
 }
예제 #9
0
 private function httpMe($http_cmd, $cloudcache_cmd, $path, $data = '', array $aditional_headers = array())
 {
     $ts = gmdate('Y-m-d\\TH:G:s\\Z');
     $userAgent = 'CloudCache PHP Client';
     $sig = base64_encode(hash_hmac('sha1', 'CloudCache' . $cloudcache_cmd . $ts, $this->_skey, true));
     $req = new HTTP_Request('http://' . $this->_host . '/' . $path);
     $req->setMethod($http_cmd);
     $req->addHeader("User-Agent", $userAgent);
     $req->addHeader("timestamp", $ts);
     $req->addHeader("signature", $sig);
     $req->addHeader("akey", $this->_akey);
     $req->setBody($data);
     $req->sendRequest();
     $ct = $req->getResponseHeader("content-type");
     $rspCode = $req->getResponseCode();
     return $req->getResponseBody();
 }
예제 #10
0
    /**
     * Perform an interaction of a URL.
     *
     * @param   string  $url        A URL.
     * @param   string  $pxhost     The host name of a proxy.
     *                              If it is `null', it is not used.
     * @param   int     $pxport     The port number of the proxy.
     * @param   int     $outsec     Timeout in seconds.
     *                              If it is negative, it is not used.
     * @param   array   $reqheads   An array of extension headers.
     *                              If it is `null', it is not used.
     * @param   string  $reqbody    The pointer of the entitiy body of request.
     *                              If it is `null', "GET" method is used.
     * @param   object  $res    EstraierPure_Response
     *                          an object into which headers and
     *                          the entity body of response are stored.
     *                          If it is `null', it is not used.
     * @return  int     The status code of the response.
     *                  On error, returns PEAR_Error.
     * @access  public
     * @static
     * @uses    PEAR
     * @uses    HTTP_Request
     */
    public static function shuttle_url($url, $pxhost = null, $pxport = null, $outsec = -1,
                                       $reqheads = null, $reqbody = null, $res = null)
    {
        // HTTPS checking disabled.
        /*$https = preg_match('!^https://!i', $url);
        if ($https && !extension_loaded('openssl')) {
            $err = PEAR::raiseError('HTTPS is not supported.');
            self::push_error($err);
            return $err;
        }*/
        if (is_null($reqheads)) {
            $reqheads = array();
        }
        $reqheads['User-Agent'] = sprintf('EstraierPure/%s (for PHP 5.1)',
            ESTRAIERPURE_VERSION);

        if (ESTRAIERPURE_USE_HTTP_STREAM) {
            // {{{ using stream functions

            // set request parameters
            $params = array('http'=>array());
            if (is_null($reqbody)) {
                $params['http']['method'] = 'GET';
            } else {
                $params['http']['method'] = 'POST';
                $params['http']['content'] = $reqbody;
                $reqheads['Content-Length'] = strlen($reqbody);
            }
            if (!is_null($pxhost)) {
                /*if ($https && version_compare(phpversion(), '5.1.0', 'lt')) {
                    $err = PEAR::raiseError('HTTPS proxies are not supported.');
                    self::push_error($err);
                    return $err;
                }*/
                $params['http']['proxy'] = sprintf('tcp://%s:%d', $pxhost, $pxport);
            }
            $params['http']['header'] = '';
            foreach ($reqheads as $key => $value) {
                $params['http']['header'] .= sprintf("%s: %s\r\n", $key, $value);
            }
            $context = stream_context_create($params);

            // open a stream and send the request
            $fp = fopen($url, 'r', false, $context);
            if (!$fp) {
                $err = PEAR::raiseError(sprintf('Cannot connect to %s.', $url));
                self::push_error($err);
                return $err;
            }
            if ($outsec >= 0) {
                stream_set_timeout($fp, $outsec);
            }

            // process the response
            $meta_data = stream_get_meta_data($fp);
            if (strcasecmp($meta_data['wrapper_type'], 'cURL') == 0) {
                $errmsg = 'EstraierPure does not work with the cURL'
                        . ' HTTP stream wrappers, please use PEAR::HTTP_Request.';
                $err = PEAR::raiseError($errmsg);
                self::push_error($err);
                return $err;
            }
            if (!empty($meta_data['timed_out'])) {
                $err = PEAR::raiseError('Connection timed out.');
                self::push_error($err);
                return $err;
            }
            $first_header = array_shift($meta_data['wrapper_data']);
            if (!preg_match('!^HTTP/(.+?) (\\d+) ?(.*)!', $first_header, $matches)) {
                $err = PEAR::raiseError('Malformed response.');
                self::push_error($err);
                return $err;
            }
            $code = intval($matches[2]);
            if ($res instanceof EstraierPure_Response) {
                if ($res->save_heads) {
                    foreach ($meta_data['wrapper_data'] as $header) {
                        list($name, $value) = explode(':', $header, 2);
                        $res->add_head(strtolower($name), ltrim($value));
                    }
                }
                if ($res->save_body) {
                    $res->set_body(stream_get_contents($fp));
                }
            }

            // close the stream
            fclose($fp);

            // }}}
        } else {
            // {{{{ using PEAR::HTTP_Request

            // set request parameters
            $params = array();
            $params['requestHeaders'] = $reqheads;
            if (isset($params['requestHeaders']['Content-Type'])) {
                unset($params['requestHeaders']['Content-Type']);
                $params['requestHeaders']['content-type'] = $reqheads['Content-Type'];
            }
            if (!is_null($pxhost)) {
                $params['proxy_host'] = $pxhost;
                $params['proxy_port'] = $pxport;
            }
            if ($outsec >= 0) {
                $params['timeout'] = floatval($outsec);
                $params['readTimeout'] = array($outsec, 0);
            }

            // create an instance of HTTP_Request
            $req = new HTTP_Request($url, $params);
            if (is_null($reqbody)) {
                $req->setMethod('GET');
            } else {
                $req->setMethod('POST');
                $req->setBody($reqbody);
            }

            // send the request
            $err = $req->sendRequest(is_object($res) && !empty($res->save_body));
            if (PEAR::isError($err)) {
                self::push_error($err);
                return $err;
            }
            $code = $req->getResponseCode();

            // process the response
            if ($res instanceof EstraierPure_Response) {
                if ($res->save_heads) {
                    $res->set_heads($req->getResponseHeader());
                }
                if ($res->save_body) {
                    $res->set_body($req->getResponseBody());
                }
            }

            // }}}
        }

        return $code;
    }
예제 #11
0
 function setBody($body)
 {
     $this->HttpRequest->setBody($body);
 }