Perl Examples
package bonapitit; use strict; use JSON; use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common; sub new { shift; my %params = @_; my $self = \%params; bless( $self ); die("I need both X-BONANZLE-API-DEV-NAME and X-BONANZLE-API-CERT-NAME\n") unless ($self->{'X-BONANZLE-API-DEV-NAME'} && $self->{'X-BONANZLE-API-CERT-NAME'}); $self->{ua} = LWP::UserAgent->new( 'agent' => 'Bonapitit perl api' ); $self->{ua}->default_header( 'Accept-Encoding' => 'gzip, deflate', 'X-BONANZLE-API-DEV-NAME' => $self->{'X-BONANZLE-API-DEV-NAME'}, 'X-BONANZLE-API-CERT-NAME' => $self->{'X-BONANZLE-API-CERT-NAME'}, ); return $self; } sub standardRequest { my $self = shift; $self->_request( 'https://api.bonanza.com/api_requests/standard_request', @_ ); } sub secureRequest { my $self = shift; $self->_request( 'https://api.bonanza.com/api_requests/secure_request', @_ ); } sub _request { my $self = shift; my ( $url, $method, $data ) = @_; my $request = ( POST $url, [ $method => encode_json( $data ) ] ); my $parsedResponse = decode_json ( $self->{ua}->request( $request )->decoded_content() ); return $parsedResponse; } 1;
Example usage
Create object
use strict;
use bonapitit;
use Data::Dumper;
my $bonapitit = bonapitit->new( 'X-BONANZLE-API-DEV-NAME' => 'xxxxxxxxxxxxxxxxxx', 'X-BONANZLE-API-CERT-NAME' => 'xxxxxxxxxxxxxxxxxx' );
Get items from a booth
my $result = $bonapitit->standardRequest( 'findItemsByKeywords', { itemFilter => { boothName => $booth } } ); print Dumper($result);
$VAR1 = { 'timestamp' => '2011-01-03T11:39:48.000Z', 'ack' => 'Success', 'version' => '1.0beta', 'findItemsByKeywordsResponse' => { 'item' => [ { 'descriptionBrief' => 'Fair quality hardback copy of Stephen King\'s Needful Things. Book has great illustrations inside. The jacket has some wear and tear and there is a stain on the last page otherwise in good shape ', 'primaryCategory' => { 'categoryId' => 267, 'categoryName' => 'Books' }, 'sellingStatus' => { 'convertedCurrentPrice' => '5', 'currentPrice' => '5', 'sellingState' => 'Active' }, 'shippingInfo' => { 'shipToLocations' => 'US', 'insuranceCost' => '1', 'shippingType' => 'Flat', 'insuranceType' => 'Optional', 'shippingServiceCost' => '15' }, 'paymentMethod' => [ 'GoogleCheckout', 'Paypal' ], 'listingInfo' => { 'convertedBuyItNowPrice' => '5', 'bestOfferEnabled' => 'true', 'lastChangeTime' => '2010-12-20T15:35:06.000Z', 'startTime' => '2010-06-21T09:54:40.000Z', 'price' => '5', 'buyItNowPrice' => '5', 'listingType' => 'FixedPrice' }, 'globalId' => 'BONANZLE', 'viewItemURL' => 'https://www.bonanza.com/booths/alexwberg/items/Stephen_King_s_Needful_Things__Hardback_', 'location' => 'Seattle, WASH', 'sellerInfo' => { 'userPicture' => 'http://bonanzleimages.s3.amazonaws.com/user_profile_image/afu/user_profile_images/0046/3780/me.jpg', 'membershipLevel' => 2, 'positiveFeedbackPercent' => '100', 'availableForChat' => 'true', 'sellerUserName' => 'alexwberg', 'feedbackRatingStar' => 'Yellow' }, 'affiliateCommission' => { 'enabled' => 'false' }, 'galleryURL' => 'http://bonanzleimages.s3.amazonaws.com/afu/images/7021/0091/DSC01965_thumb155_crop.JPG', 'itemId' => 16594654, 'storeInfo' => { 'storeHasBonanza' => 'false', 'storeName' => 'alexwberg\'s books \'n things', 'storeURL' => 'https://www.bonanza.com/booths/alexwberg', 'storeDiscount' => undef, 'storeItemCount' => 4 }, 'title' => 'Stephen King\'s Needful Things (Hardback)', 'postalCode' => '98126' }, };
Reprice an item
my $result = $bonapitit->secureRequest( 'reviseFixedPriceItemRequest', { 'requesterCredentials' => { 'bonanzleAuthToken' => $clientId }, 'itemId' => $itemId, 'item' => { 'price' => $price } } ); print Dumper($result);
$VAR1 = { 'timestamp' => '2011-01-03T11:42:03.000Z', 'ack' => 'Success', 'version' => '1.0beta', 'reviseFixedPriceItemResponse' => { 'itemId' => 24525598, 'categoryId' => 39461, 'sellingState' => 'Ready for sale' } };
Update booth
my $result = $bonapitit->secureRequest( 'updateBooth', { 'requesterCredentials' => { 'bonanzleAuthToken' => $clientId } } ); print Dumper $result;
$VAR1 = { 'timestamp' => '2011-01-03T11:43:09.000Z', 'ack' => 'Success', 'version' => '1.0beta', 'updateBoothResponse' => { 'resultMessage' => 'Booth queued for update', 'success' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ) } };