function parse_response($api, $params)
{
    global $records;
    $page = $params['from'] / $params['size'] + 1;
    echo "Page {$page}\n";
    //compare the individual request parameters into k=>v pairs to the URL
    $qparams = array();
    foreach ($params as $k => $v) {
        $qparams[] = "{$k}=" . urlencode($v);
    }
    $service = $api . implode('&', $qparams);
    //request JSON from API
    $json = file_get_contents($service);
    $data = json_decode($json);
    //iterate through results
    foreach ($data->results as $result) {
        $record = array();
        $record['id'] = $result->priref;
        $record['uri'] = "http://data.fitzmuseum.cam.ac.uk/id/object/{$result->priref}";
        $record['objectnumber'] = $result->ObjectNumber;
        $record['title'] = "Fitzwilliam Museum - Object {$result->ObjectNumber}";
        $imageCount = 0;
        foreach ($result->images->thumbnailURI as $url) {
            switch ($imageCount) {
                case 0:
                    $record['obv_image'] = $url;
                    break;
                case 1:
                    $record['rev_image'] = $url;
            }
            $imageCount++;
        }
        //begin screen scraping
        $url = "http://webapps.fitzmuseum.cam.ac.uk/explorer/index.php?oid={$result->priref}";
        $fields = parse_html($url);
        if (isset($fields['reference'])) {
            $record['reference'] = $fields['reference'];
        }
        if (isset($fields['coinType'])) {
            $record['cointype'] = $fields['coinType'];
        }
        if (isset($fields['weight'])) {
            $record['weight'] = $fields['weight'];
        }
        if (isset($fields['axis'])) {
            $record['axis'] = $fields['axis'];
        }
        $records[] = $record;
    }
    //var_dump($records);
    //if there are more pages to parse, curse function
    $numFound = $data->total;
    if ($params['from'] + $params['size'] <= $numFound) {
        $params['from'] = $params['from'] + $params['size'];
        parse_response($api, $params);
    }
}
 /**
  * returns complete cURL response of POST request
  *
  * @since ADD MVC 0.5
  */
 public function post_response($url, $post)
 {
     $this->init($url);
     curl_setopt($this->curl, CURLOPT_HEADER, 1);
     curl_setopt($this->curl, CURLOPT_REFERER, $url);
     curl_setopt($this->curl, CURLOPT_POST, true);
     curl_setopt($this->curl, CURLOPT_POSTFIELDS, $post);
     $response = $this->exec();
     return parse_response($response);
 }
Ejemplo n.º 3
0
<html>
<body bgcolor="white">
<form action="<?php 
echo $_SERVER['PHP_SELF'];
?>
" method="GET">
Login: <input type="text" name="login"><br />
Password: <input type="password" name="password"><br />
<input type="submit" value="Login">
</form>
<?php 
define('__SERVER__', "localhost");
define('__PORT__', 80);
if (count($_GET)) {
    include "/home/rei/www/pres2/presentations/slides/web_services/client.inc.php";
    $ret = make_request();
    if (parse_response($ret) === TRUE) {
        echo "Login Successful";
    } else {
        echo "Authentication Failure";
    }
}
?>
</body>
</html>
Ejemplo n.º 4
0
 function urlload_($connomains, $p = array())
 {
     if (!is_array($connomains)) {
         $close = false;
         if (!isset($p["_"]) || $p["_"] == null) {
             $close = true;
             $p["_"] = curl_init();
         }
         url_setopts($p["_"], $p);
         if (isset($p["limit"]) && $p["limit"] > 0) {
             //use limit
             curl_setopt($p["_"], CURLOPT_RETURNTRANSFER, 0);
             curl_setopt($p["_"], CURLOPT_BUFFERSIZE, $p["limit"]);
             $cwriter = isset($p["writer"]) && $p["writer"] !== "" ? $p["writer"] : "urlwriter";
             curl_setopt($p["_"], CURLOPT_WRITEFUNCTION, array($w = new $cwriter($p["limit"]), "__invoke"));
         }
         curl_setopt($p["_"], CURLOPT_URL, $connomains);
         $res = curl_exec($p["_"]);
         $info = curl_getinfo($p["_"]);
         if (isset($p["limit"]) && $p["limit"] > 0 && $info["http_code"] != 404) {
             $res = $w->content;
         } else {
             if (curl_errno($p["_"]) || $info["http_code"] == 404) {
                 $res = "";
                 trigger_error("CURL Error: " . curl_errno($p["_"]) . " - " . curl_error($p["_"]), E_USER_WARNING);
             } else {
                 if (isset($p["result"]) && $p["result"] && strlen($res) == 0) {
                     trigger_error("CURL Error: " . curl_errno($p["_"]) . " - " . curl_error($p["_"]), E_USER_WARNING);
                 }
             }
         }
         if ($close) {
             curl_close($p["_"]);
             $p["_"] = null;
         }
         if (isset($p["getheaders"]) && $p["getheaders"] === true) {
             return parse_response($res);
         }
         if (isset($p["getinfo"]) && $p["getinfo"] === true) {
             return array($info, $res);
         }
         return $res;
     } else {
         $mh = curl_multi_init();
         foreach ($connomains as $i => $url) {
             $conn[$i] = curl_init($url);
             $configs = isset($p["setup"]) ? call_user_func($p["setup"], $i, $url) : array();
             url_setopts($conn[$i], array_merge($p, $configs));
             curl_multi_add_handle($mh, $conn[$i]);
         }
         do {
             $mrc = curl_multi_exec($mh, $active);
             if (isset($p["waitbefore"]) && $p["waitbefore"] > 0) {
                 usleep($p["waitbefore"] * 1000000);
             }
         } while ($mrc == CURLM_CALL_MULTI_PERFORM);
         while ($active and $mrc == CURLM_OK) {
             if (curl_multi_select($mh) != -1) {
                 do {
                     $mrc = curl_multi_exec($mh, $active);
                 } while ($mrc == CURLM_CALL_MULTI_PERFORM);
             }
         }
         if ($mrc != CURLM_OK) {
             trigger_error("Curl multi read error {$mrc}\n", E_USER_WARNING);
         }
         foreach ($connomains as $i => $url) {
             if (($err = curl_error($conn[$i])) == '') {
                 $res[$i] = curl_multi_getcontent($conn[$i]);
             } else {
                 trigger_error("Curl error on handle {$i}: {$err}\n", E_USER_WARNING);
             }
             curl_multi_remove_handle($mh, $conn[$i]);
             curl_close($conn[$i]);
         }
         curl_multi_close($mh);
         return $res;
     }
 }