usagi / usagi.php
Usagi's PHP library; http, couchdb
0.3.0
2016-09-12 11:05 UTC
This package is not auto-updated.
Last update: 2025-01-18 21:30:34 UTC
README
Features
0. include all features in the library
// for direct downloaded require_once 'usagi.php/source/http.php' // or, for composer //require_once 'vendor/usagi/usagi.php/source/all.php'
note 1: this library refused to abide by PSR, thus set to 'files' mode to the composer. note 2: you can include indivisual part of this library.
1. http wrapper
// for direct downloaded require_once 'usagi.php/source/http.php' // or, for composer
1.1. http library // stateles, simple and convinient
GET
// a simple GET request var_dump( \usagi\http\request( 'http://php.net' ) );
array(3) { ["status_code"]=> int(200) ["headers"]=> array(11) { ["Server"]=> string(11) "nginx/1.6.2" ["Date"]=> string(29) "Wed, 31 Aug 2016 08:27:02 GMT" ["Content-Type"]=> string(24) "text/html; charset=utf-8" ["Connection"]=> string(5) "close" ["X-Powered-By"]=> string(19) "PHP/5.6.24-0+deb8u1" ["Last-Modified"]=> string(29) "Wed, 31 Aug 2016 08:10:14 GMT" ["Content-language"]=> string(2) "en" ["X-Frame-Options"]=> string(10) "SAMEORIGIN" ["Set-Cookie"]=> string(102) "LAST_NEWS=1472632022; expires=Thu, 31-Aug-2017 08:27:02 GMT; Max-Age=31536000; path=/; domain=.php.net" ["Link"]=> string(36) "<http://php.net/index>; rel=shorturl" ["Vary"]=> string(15) "Accept-Encoding" } ["content"]=> string(21472) "<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> ... }
HEAD, DELETE, ...
$response = \usagi\http\request( 'http://example.net', 'HEAD' ) ); $response = \usagi\http\request( 'http://example.net', 'DELETE' ) );
PUT, POST, ...
$response = \usagi\http\request( 'http://example.net', 'PUT' , $data ) ); $response = \usagi\http\request( 'http://example.net', 'POST', $data ) );
add custom headers
$response = \usagi\http\request ( 'http://example.net' , 'PUT' , $data , [ 'x-my-custom-request-header-1' => 'custom value 1' , 'x-my-custom-request-header-2' => 'custom value 2' ] );
with convinient stateless helpers
echo \usagi\http\make_url( 'http', 'example.net', '12345' );
echo \usagi\http\make_url ( 'http' , 'example.net' , '12345' , [ 'path1', 'path2', 'path3 ' ] );
echo \usagi\http\make_url ( 'http' , 'example.net' , '12345' , [ 'path1', 'path2', 'path3 ' ] , [ 'q1_key' => 'q1_value', 'q2_key' => 'q2_value' ] );
http://example.net:12345/path1/path2/path3%20%20%20?q1_key=q1_value&q2_key=q2_value
and etc.
2. CouchDB library
require_once 'usagi.php/source/couchdb.php' // or, for composer //require_once 'vendor/usagi/usagi.php/source/couchdb.php'
2.1. stateless library // for a simple usecases
require_once 'usagi.php/source/couchdb/stateless.php'
get version infos
var_dump( \usagi\couchdb\get_version( 'http', '127.0.0.1', 5984 ) );
array(4) { ["couchdb"]=> string(7) "Welcome" ["uuid"]=> string(32) "4fa79ddb179218126c1245256d74878f" ["version"]=> string(5) "1.6.1" ["vendor"]=> array(2) { ["version"]=> string(5) "16.04" ["name"]=> string(6) "Ubuntu" } }
database features
$is_exists = \usagi\couchdb\is_exists_database( 'http', '127.0.0.1', 5984, 'test' ); $is_succeeded = \usagi\couchdb\create_database( 'http', '127.0.0.1', 5984, 'test' ); $is_succeeded = \usagi\couchdb\delete_database( 'http', '127.0.0.1', 5984, 'test' );
document features
// rev or FALSE $rev = \usagi\couchdb\is_exists_document( 'http', '127.0.0.1', 5984, 'test', 'd1' ); // get data with decoded to a PHP array from a JSON result $php_array_data = usagi\couchdb\get_document( 'http', '127.0.0.1', 5984, 'test2', 'd1' ) ); // create document $id_and_rev = \usagi\couchdb\create_document( 'http', '127.0.0.1', 5984, 'test2', 'd1', $omissible_your_php_array_data ); // delete document $is_succeeded = \usagi\couchdb\delete_document( 'http', '127.0.0.1', 5984, 'test2', 'd1' ); // update document $id_and_rev = \usagi\couchdb\update_document( 'http', '127.0.0.1', 5984, 'test2', 'd1', [ 'hoge' => 'fuga' ] );
document attachment features
// attach $is_succeeded = \usagi\couchdb\attach_document( 'http', '127.0.0.1', 5984, 'test2', 'd1', 'somthing.png' ); // detach $is_succeeded = \usagi\couchdb\detach_document( 'http', '127.0.0.1', 5984, 'test2', 'd1', 'something.png' ) ); // attachment header infos with rev included or FALSE $rev_and_header_infos = \usagi\couchdb\is_exists_attachment( 'http', '127.0.0.1', 5984, 'test2', 'd1', 'something.png' ) ); // get attachment binary file_put_contents( 'somthing.png', \usagi\couchdb\get_attachment( 'http', '127.0.0.1', 5984, 'test2', 'd1', 'something.png' ), LOCK_EX );
2.2. statefull library // function chain, auto memorize parameters, auto result queueing
require_once 'usagi.php/source/couchdb/statefull.php' // or, for composer //require_once 'vendor/usagi/usagi.php/source/couchdb/statefull.php'
$c1 = new \usagi\couchdb\statefull; // save parameters implicit // and functions are chainable // and results are auto stacked/queued and exportable anythime! $c1 -> set_auto_memorize_parameters( true ) // enabling auto memorize parameters, default is true -> get_document( 'document1', 'database1', 5984, '127.0.0.1', 'http' ) // queue result to results[ 0 ] -> shift_result( $x ) // move results[ 0 ] to $x ( remove results[ 0 ] and data be set to $x ) -> get_document( 'document2' ) // result[ 0 ] -> get_attachment( 'attachemnet2-1.png' ) // result[ 1 ] -> get_document( $x['foobar'] ) // result[ 2 ] -> peek_result( 0, $y ) // copy result[ 0 ] to $y ( result[ 0 ] be not delete ) -> get_document( $x['foobar'], 'databse2' ) // result[ 3 ] -> get_document( $x['foobar'], 'databse3' ) // result[ 4 ] -> get_document( $x['foobar'], 'databse4' ) // result[ 5 ] ; // this will be out 5 results var_dump( $c->results )
License
Author
Usagi Ito