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( 'http://api.bonanza.com/api_requests/standard_request', @_ );
}

sub secureRequest {
  my $self = shift;

  $self->_request( 'http://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' => 'http://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' => 'http://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' )
           }
        };