Revision: 59125
Updated Code
at December 4, 2013 22:56 by crypticsoft
Updated Code
class Products extends MX_Controller { function __construct() { parent::__construct(); // Load the rest client spark $this->load->spark('restclient/2.1.0'); $this->load->spark('curl/1.3.0'); // Load the library $this->load->library('rest'); $this->load->library('curl'); //load domain, format and API creds $this->secure_domain = 'https://securedomain.com/cart/'; $this->user = 'apiuser'; $this->pass = 'apipass'; $this->token = 'apitoken'; $this->format = 'json'; $this->output->set_header("Content-Type: text/javascript; charset=UTF-8"); } public function api_url($call){ return $this->url = $this->secure_domain . 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; } public function getCategories(){ $call = 'GetCategories'; $url = $this->api_url($call); $categories = $this->curl->simple_get( $url ); $callback = $this->input->get('jsoncallback'); if( $callback ){ $this->output->set_output( $callback . "(" . $categories . ")" ); }else{ $this->output->set_output( $categories ); } } public function getRecentlyAdded($num){ // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $call .= '&mode=search&BatchPage=3&BatchSize=' . $num . '&CatalogSortBy=date'; //$url = $this->secure_domain . 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; $url = $this->api_url($call); $products = $this->curl->simple_get( $url ); $callback = $this->input->get('jsoncallback'); if($callback){ $this->output->set_output( $callback . "(" . $products . ")" ); }else{ $this->output->set_output( $products ); } } public function getProductsByCategory($id){ // if URL contains $mode = 'category' then do PrimaryCategory request // URL Scheme : ~/restclient/getProductsByCategory/$catID/$batch_size/ $this->uri = array( //'mode' => $this->uri->segment(2), -- assumed mode by default -- PrimaryCategory (argument) 'category' => $id, //$this->uri->segment(3) 'batch' => $this->uri->segment(5) ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'PrimaryCategory=' . $this->uri['category']; $batch_size = $this->uri['batch']; $call .= '&' . $args . '&BatchSize=' . $batch_size . '&CatalogSortBy=title'; //build up args $url = $this->api_url($call); $products = $this->curl->simple_get( $url ); $callback = $this->input->get('jsoncallback'); if($callback){ $this->output->set_output( $callback . "(" . $products . ")" ); }else{ $this->output->set_output( $products ); } } public function getProductImagesByCategory($id){ // if URL contains $mode = 'category' then do PrimaryCategory request // URL Scheme : ~/restclient/getProductsByCategory/$catID/$batch_size/ $this->uri = array( //'mode' => $this->uri->segment(2), -- assumed mode by default -- PrimaryCategory (argument) 'category' => $id, //$this->uri->segment(3) 'batch' => $this->uri->segment(5) ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'PrimaryCategory=' . $this->uri['category']; $batch_size = $this->uri['batch']; $call .= '&' . $args . '&BatchSize=' . $batch_size . '&CatalogSortBy=date'; //build up args $url = $this->api_url($call); $products = $this->curl->simple_get( $url ); $result = array(); foreach($products as $i=>$prod){ foreach($prod->Product as $key=>$value){ if($key!='Description') $result[$i]['Product'][$key] = $value; }} $callback = $this->input->get('jsoncallback'); $result = json_encode( $result ); if($callback){ $this->output->set_output( $callback . "(" . $result . ")" ); }else{ $this->output->set_output( $result ); } } public function getProducts($mode){ // URL Scheme : ~/restclient/getProducts/$mode/$batch_size/ $this->uri = array( 'mode' => $mode, //$this->uri->segment(3) 'batch' => $this->uri->segment(5), 'keyword1' => $this->uri->segment(6), 'keyword2' => $this->uri->segment(7), 'keyword3' => $this->uri->segment(8), ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'mode=' . $this->uri['mode']; if( $this->uri['batch']!='' && $this->uri['mode'] == 'search' ) $args .= '&BatchSize=' . $this->uri['batch']; if( $this->uri['keyword1']!='' ) $args .= '&keywords=' . $this->uri['keyword1']; if( $this->uri['keyword2']!='' ) $args .= ',or,' . $this->uri['keyword2']; if( $this->uri['keyword3']!='' ) $args .= ',or,' . $this->uri['keyword3']; $args .= '&CatalogSortBy=added'; // string : API arguments and URL string $call .= '&' . $args;// . '&BatchSize=' . $batch_size; //build up args $url = $this->api_url($call); // REST GET REQUEST $products = $this->curl->simple_get( $url ); $callback = $this->input->get('jsoncallback'); if($callback){ $this->output->set_output( $callback . "(" . $products . ")" ); }else{ $this->output->set_output( $products ); } } }
Revision: 59124
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 18, 2012 02:50 by crypticsoft
Initial Code
<?php class Products extends MX_Controller { function __construct() { parent::__construct(); // Load the rest client spark $this->load->spark('restclient/2.1.0'); // Load the library $this->load->library('rest'); //load domain, format and API creds $this->secure_domain = 'https://www.yoursecuredomain.com/'; $this->user = 'apiuser'; $this->pass = 'apipass'; $this->token = 'apitokenstring'; $this->format = 'json'; } public function getCategories(){ // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetCategories'; $url = 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; $categories = $this->rest->get( $url ); print json_encode( $categories ); } public function getRecentlyAdded($num){ // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $call .= '&mode=search&BatchPage=3&BatchSize=' . $num . '&CatalogSortBy=date'; $url = 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; $products = $this->rest->get( $url ); print json_encode( $products ); } public function getProductsByCategory($id){ // if URL contains $mode = 'category' then do PrimaryCategory request // URL Scheme : ~/restclient/getProductsByCategory/$catID/$batch_size/ $this->uri = array( //'mode' => $this->uri->segment(2), -- assumed mode by default -- PrimaryCategory (argument) 'category' => $id, //$this->uri->segment(3) 'batch' => $this->uri->segment(5) ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'PrimaryCategory=' . $this->uri['category']; $batch_size = $this->uri['batch']; $call .= '&' . $args . '&BatchSize=' . $batch_size . '&CatalogSortBy=date'; //build up args $url = 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; $products = $this->rest->get( $url ); print json_encode( $products ); } public function getProductImagesByCategory($id){ // if URL contains $mode = 'category' then do PrimaryCategory request // URL Scheme : ~/restclient/getProductsByCategory/$catID/$batch_size/ $this->uri = array( //'mode' => $this->uri->segment(2), -- assumed mode by default -- PrimaryCategory (argument) 'category' => $id, //$this->uri->segment(3) 'batch' => $this->uri->segment(5) ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'PrimaryCategory=' . $this->uri['category']; $batch_size = $this->uri['batch']; $call .= '&' . $args . '&BatchSize=' . $batch_size . '&CatalogSortBy=date'; //build up args $url = 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; $products = $this->rest->get( $url ); $result = array(); foreach($products as $i=>$prod){ foreach($prod->Product as $key=>$value){ if($key!='Description') $result[$i]['Product'][$key] = $value; }} print json_encode( $result ); } // URL Scheme : ~/restclient/getProducts/$mode/$batch_size/ $this->uri = array( 'mode' => $mode, 'batch' => $this->uri->segment(5), 'keyword1' => $this->uri->segment(6), 'keyword2' => $this->uri->segment(7), 'keyword3' => $this->uri->segment(8), ); // Run some setup $this->rest->initialize(array('server' => $this->secure_domain)); $call = 'GetProducts'; $args = 'mode=' . $this->uri['mode']; if( $this->uri['batch']!='' && $this->uri['mode'] == 'search' ) $args .= '&BatchSize=' . $this->uri['batch']; if( $this->uri['keyword1']!='' ) $args .= '&keywords=' . $this->uri['keyword1']; if( $this->uri['keyword2']!='' ) $args .= ',or,' . $this->uri['keyword2']; if( $this->uri['keyword3']!='' ) $args .= ',or,' . $this->uri['keyword3']; $args .= '&CatalogSortBy=added'; // string : API arguments and URL string $call .= '&' . $args;// . '&BatchSize=' . $batch_size; //build up args $url = 'content/admin/plugins/openapi/index.php?token=' . $this->token . '&apiType=' . $this->format . '&call=' . $call . '&username=' . $this->user . '&password=' . $this->pass; // REST GET REQUEST $products = $this->rest->get( $url ); print json_encode( $products ); } }
Initial URL
http://api.pinnaclecart.com/docs/
Initial Description
This is a useful class which utilizes Phil Sturgeon's helpful restclient (http://getsparks.org/packages/restclient/versions/HEAD/show). Reference the URL attached for PinnacleCart API docs. Example request URLs to get products and categories: # Get product by product_id (XX##) or keyword(s) ~/products/getProducts/search/10/oj70/oj77/oj75 # Recently added products by CategoryID (/cID/batchSize) ~/products/getProductsByCategory/92/10 # Recently added product images by CategoryID (/cID/batchSize) -- This was to remove the 'Description' key/value for slide shows ~/products/getProductImagesByCategory/92/10 # Recently added products by limit ~/products/getRecentlyAdded/20 # Get all categories ~/products/getCategories
Initial Title
REST API products and categories from pinnacleCart
Initial Tags
json, api, codeigniter
Initial Language
PHP