update
This commit is contained in:
115
core/class/RestRequest.class.php
Normal file
115
core/class/RestRequest.class.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
/**
|
||||
* wideohosting-api-war-client
|
||||
* Copyright (C) 2008 Wirtualna Polska SA
|
||||
*
|
||||
* File: RestRequest.php
|
||||
* Created: 2008-11-04
|
||||
*/
|
||||
|
||||
/**
|
||||
* Abstrakcyjna klasa reprezentuj±ca ¿±danie REST.
|
||||
*
|
||||
* @author WP
|
||||
*/
|
||||
abstract class RestRequest {
|
||||
|
||||
/**
|
||||
* Bazowy URL, pod jakim jest widoczne API.
|
||||
*/
|
||||
private $baseUrl = "http://wpapi.wp.pl/api";
|
||||
|
||||
/**
|
||||
* Konstruktor.
|
||||
*/
|
||||
public function __construct() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Wysy³a request HTTP do API.
|
||||
*
|
||||
* @param $ch cURL handler
|
||||
*/
|
||||
private function sendRequest($ch) {
|
||||
$response = curl_exec($ch);
|
||||
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
|
||||
$headers = substr($response, 0, $header_size -4);
|
||||
$body = substr($response, $header_size);
|
||||
$status = $this->checkResponse($headers, $body);
|
||||
curl_close($ch);
|
||||
return $body;
|
||||
}
|
||||
|
||||
private function buildResourceUrl($resource) {
|
||||
return $this->baseUrl . $resource;
|
||||
}
|
||||
|
||||
// POST
|
||||
public function doPostCall($resource, $postArgs) {
|
||||
$ch = curl_init($this->buildResourceUrl($resource));
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArgs);
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookies");
|
||||
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookies");
|
||||
return $this->sendRequest($ch);
|
||||
}
|
||||
|
||||
// GET
|
||||
public function doGetCall($resource) {
|
||||
$ch = curl_init($this->buildResourceUrl($resource));
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookies");
|
||||
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookies");
|
||||
return $this->sendRequest($ch);
|
||||
}
|
||||
|
||||
// DEL
|
||||
public function doDelCall($resource) {
|
||||
$ch = curl_init($this->buildResourceUrl($resource));
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
|
||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookies");
|
||||
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookies");
|
||||
return $this->sendRequest($ch);
|
||||
}
|
||||
|
||||
// sprawdzenie statusu odpowiedzi
|
||||
private function checkResponse($headers, $body) {
|
||||
$status_code = array ();
|
||||
preg_match('/\d\d\d/', $headers, $status_code);
|
||||
switch ($status_code[0]) {
|
||||
case 100:
|
||||
case 200 :
|
||||
case 201 :
|
||||
case 202 :
|
||||
break; //sukces
|
||||
|
||||
case 401:
|
||||
throw new SecurityException('Raz');
|
||||
case 403:
|
||||
throw new SecurityException("Unauthorized");
|
||||
break;
|
||||
|
||||
default :
|
||||
throw new ApiException("Invocation error - code " + $status_code[0]);
|
||||
}
|
||||
|
||||
echo "Response " + $status_code[0] . "\n";
|
||||
return $status_code[0];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Metody wysy³aj±ce odpowiednie ¿±danie do API.
|
||||
*/
|
||||
public abstract function send();
|
||||
public abstract function getStatus();
|
||||
public abstract function authorize();
|
||||
public abstract function delete();
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user