/framework/experimental/couch/CouchHttp.php

http://zoop.googlecode.com/ · PHP · 65 lines · 45 code · 13 blank · 7 comment · 5 complexity · 0e754da154f2b42bb70e3c5d86b58038 MD5 · raw file

  1. <?php
  2. class CouchHttp
  3. {
  4. private $host;
  5. private $port;
  6. function __construct($host = 'localhost', $port = 5984)
  7. {
  8. $this->host = $host;
  9. $this->port = $port;
  10. }
  11. function send($method, $url, $postData = NULL)
  12. {
  13. $method = strtoupper($method);
  14. // var_dump($postData);
  15. $s = fsockopen($this->host, $this->port, $errno, $errstr);
  16. if(!$s)
  17. trigger_error("socket error: $errno, message: $errstr");
  18. $request = "$method $url HTTP/1.0\r\nHost: {$this->host}\r\n";
  19. if($postData)
  20. {
  21. $request .= "Content-Length: ".strlen($postData)."\r\n";
  22. // if(strtolower($method) == 'post')
  23. // $request .= 'Content-Type: text/javascript'."\r\n";
  24. // else
  25. // $request .= 'Content-Type: application/json'."\r\n";
  26. $request .= "\r\n";
  27. $request .= "$postData\r\n";
  28. }
  29. else
  30. {
  31. $request .= "\r\n";
  32. }
  33. // var_dump($request);
  34. fwrite($s, $request);
  35. $response = "";
  36. while(!feof($s))
  37. {
  38. $response .= fgets($s);
  39. }
  40. if(!$response)
  41. {
  42. // var_dump($response);
  43. trigger_error("request failed");
  44. return false;
  45. }
  46. list($headers, $body) = explode("\r\n\r\n", $response);
  47. $bodyObject = json_decode($body);
  48. if(isset($bodyObject->error) && $bodyObject->error)
  49. trigger_error("couchdb: {$bodyObject->error}: {$bodyObject->reason}");
  50. return $bodyObject;
  51. }
  52. }