General:
Services:
Resources:
Direct Booking example - Perl
The following is a working example in Perl:
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use Data::Dumper;
use JSON;
use Date::Simple;
use URI::Encode qw(uri_decode uri_encode );
############ Config ############
my $username = 'tobeissued';
my $password = 'tobeissued';
################################
my $destination;
################### Hand shake ####################
my %fields = (
command => 'cmdBoxTWebAPIHandShake',
username => "$username",
password => "$password" );
my @args = ();
foreach my $key ( keys %fields ) {
my $value = uri_encode( $fields{ $key } );
push @args, "$key=$value";
}
my $queryString = join('&', @args );
$destination = "https://www.dumpster.software/controller.html?$queryString";
my $ua = LWP::UserAgent->new;
my $response = $ua->request(HTTP::Request->new(GET => $destination));
my $json = JSON->new();
my $obj = $json->decode( $response->content );
unless ( $obj->{ status } == 200) {
print Data::Dumper->Dump([ $obj ]);
exit;
}
##################### Pricing Query ##############
#Extract Key from the resulting JSON for use in the Pricing Query
my $key = $obj->{ key };
%fields = (
command => 'cmdBoxTWebAPIPricing',
username => '$username',
key => '$key',
zipPostalCode => '23462' );
@args = ();
foreach my $key ( keys %fields ) {
my $value = uri_encode( $fields{ $key } );
push @args, "$key=$value";
}
$queryString = join('&', @args );
$destination = "https://www.dumpster.software/controller.html?$queryString";
$response = $ua->request(HTTP::Request->new(GET => $destination));
$obj = $json->decode( $response->content );
unless ( $obj->{ status } == 200) {
print Data::Dumper->Dump([ $obj ]);
exit;
}
##################### Post Request ##############
my $dsDate = Date::Simple->new();
$dsDate = $dsDate+5;
my %fields = (
command => 'cmdBoxTWebAPIDirectBooking',
username => $username,
key => $key,
name => 'Dave Smally',
billingAddress1 => '88 Main Street',
billingAddress2 => 'Apt 2',
billingCity => 'Smithfield',
billingStateProv => 'VA',
billingZipPostal => '12345',
billingCountry => 'USA',
billingPhone => '1234567890',
billingEmail => 'johns@somedomain.com',
jobName => 'Clean out',
jobAddress => '88 Main Street',
jobCity => 'Yourtown',
jobStateProv => 'VA',
jobZipPostal => '12345',
jobLatitude => '42.9815689',
jobLongitude => '-71.4862495',
distanceByRoad => '18 mi',
dateRequested => "$dsDate",
serviceType => 'Delivery',
assetClass => '20-open',
containerID => '',
material => 'C & D',
hazards => 'Low wires',
priceSheetID => '44',
note => 'Call first',
ccardFName => 'John',
ccardLName => 'Smith',
ccardBillingAddress1 => '123 Main Street',
ccardBillingAddress2 => 'Apt 2',
ccardBillingCity => 'Yourtown',
ccardBillingStateProv => 'VA',
ccardBillingZipPostal => '12345',
ccardNumber => '4111111111111111',
ccardExp => '0422',
ccardCVV => '123',
mode => 'TEST');
@args = ();
foreach my $key ( keys %fields ) {
my $value = uri_encode( $fields{ $key } );
push @args, "$key=$value";
}
$queryString = join('&', @args );
$destination = "https://www.dumpster.software/controller.html?$queryString";
$response = $ua->request(HTTP::Request->new(GET => $destination));
$obj = $json->decode( $response->content );
print Data::Dumper->Dump([ $obj ]);