Example #1
0
 function call($method, $args = array(), $post = false)
 {
     $url = $this->api_url . $method . '/';
     foreach ($args as $key => $value) {
         if (empty($value)) {
             unset($args[$key]);
         }
     }
     if (!$post) {
         $url .= '?' . _vcf_get_query_string($args);
         $args = null;
     }
     if (!($response = _vcf_urlopen($url, $args)) || !$response['code']) {
         $this->last_error = 'Unable to connect to the Vicomi API servers';
         return false;
     }
     if ($response['code'] != 200) {
         if ($response['code'] == 500) {
             if (!empty($response['headers']['X-Sentry-ID'])) {
                 $this->last_error = 'Vicomi returned a bad response (HTTP ' . $response['code'] . ', ReferenceID: ' . $response['headers']['X-Sentry-ID'] . ')';
                 return false;
             }
         } elseif ($response['code'] == 400) {
             $data = vicomi_json_decode($response['data']);
             if ($data && $data->message) {
                 $this->last_error = $data->message;
             } else {
                 $this->last_error = "Vicomi returned a bad response (HTTP " . $response['code'] . ")";
             }
             return false;
         }
         $this->last_error = "Vicomi returned a bad response (HTTP " . $response['code'] . ")";
         return false;
     }
     $data = vicomi_json_decode($response['data']);
     if (!$data) {
         $this->last_error = 'No valid JSON content returned from Vicomi';
         return false;
     }
     if (!$data->succeeded) {
         if (!$data->message) {
             $this->last_error = '(No error message was received)';
         } else {
             $this->last_error = $data->message;
         }
         return false;
     }
     $this->last_error = null;
     return $data->message;
 }
Example #2
0
function _vcf_fopen_urlopen($url, $postdata, &$response, $file_name, $file_field)
{
    $params = array();
    if ($file_name && $file_field) {
        $boundary = '----------' . md5(time());
        $content = _vcf_get_post_content($boundary, $postdata, $file_name, $file_field);
        $header = _vcf_get_http_headers_for_request($boundary, $content, $file_name, $file_field);
        $params = array('http' => array('method' => 'POST', 'header' => $header, 'content' => $content, 'timeout' => TIMEOUT));
    } else {
        if ($postdata) {
            $params = array('http' => array('method' => 'POST', 'header' => 'Content-Type: application/x-www-form-urlencoded', 'content' => _vcf_get_query_string($postdata), 'timeout' => TIMEOUT));
        }
    }
    ini_set('user_agent', USER_AGENT);
    $ctx = stream_context_create($params);
    $fp = fopen($url, 'rb', false, $ctx);
    if (!$fp) {
        return false;
    }
    list($unused, $response['code'], $unused) = explode(' ', $http_response_header[0], 3);
    $headers = array_slice($http_response_header, 1);
    foreach ($headers as $unused => $header) {
        $header = explode(':', $header);
        $header[0] = trim($header[0]);
        $header[1] = trim($header[1]);
        $headers[strtolower($header[0])] = strtolower($header[1]);
    }
    $response['data'] = stream_get_contents($fp);
    $response['headers'] = $headers;
}