gophr-bridge-sdk
Version:
A simple SDK for interacting with the Gophr Bridge API
174 lines (145 loc) ⢠7.52 kB
JavaScript
const GophrBridge = require('../index.js');
require('dotenv').config();
// Initialize the SDK
const gophr = new GophrBridge({
clientId: process.env.GOPHR_CLIENT_ID,
clientSecret: process.env.GOPHR_CLIENT_SECRET,
testing: process.env.GOPHR_TESTING === 'true'
});
async function completeExample() {
try {
console.log('š Gophr Bridge SDK Complete Example\n');
// ========================================
// STEP 1: Get a Delivery Quote
// ========================================
console.log('š Step 1: Getting delivery quote...');
const quote = await gophr.getQuote({
first_name: 'John',
last_name: 'Doe',
phone: '5555555555',
email: 'john.doe@example.com',
address_1: '1000 Ryan St',
address_2: '',
city: 'Lake Charles',
state: 'LA',
zip: '70602',
country: 'US',
pick_up_instructions: 'Ring the bell twice',
drop_off_instructions: 'Leave with receptionist',
scheduled_for: null, // ASAP delivery
items: [{
quantity: 2,
name: 'Important Documents',
sku: 'DOC-001',
weight: 1
}]
});
console.log('ā
Quote received successfully!');
// Using getter methods to extract quote information
console.log('\nš Quote Information (using getters):');
console.log(` Request successful: ${gophr.isSuccessful(quote)}`);
console.log(` Standard fee: $${gophr.getStandardQuoteFee(quote)}`);
console.log(` Expedited fee: $${gophr.getExpeditedQuoteFee(quote)}`);
console.log(` Standard quote ID: ${gophr.getStandardQuoteId(quote)}`);
console.log(` Expedited quote ID: ${gophr.getExpeditedQuoteId(quote)}`);
// Get formatted quote summary
const quoteSummary = gophr.getQuoteSummary(quote);
console.log('\nš Quote Summary:');
console.log(JSON.stringify(quoteSummary, null, 2));
// ========================================
// STEP 2: Create Shipment
// ========================================
console.log('\nš¦ Step 2: Creating shipment with standard quote...');
const standardQuoteId = gophr.getStandardQuoteId(quote);
const shipment = await gophr.createShipment({
quote_id: standardQuoteId,
drop_off_instructions: 'Updated: Please call when arriving'
});
console.log('ā
Shipment created successfully!');
// Using getter methods to extract shipment information
console.log('\nš Shipment Information (using getters):');
console.log(` Request successful: ${gophr.isSuccessful(shipment)}`);
console.log(` Delivery ID: ${gophr.getDeliveryId(shipment)}`);
console.log(` Status: ${gophr.getDeliveryStatus(shipment)}`);
console.log(` Shipping fee: $${gophr.getShippingFee(shipment)}`);
console.log(` Vehicle type: ${gophr.getVehicleType(shipment)}`);
console.log(` Distance: ${gophr.getDistance(shipment)} miles`);
console.log(` Weight: ${gophr.getShipmentWeight(shipment)}lbs`);
console.log(` Expedited: ${gophr.isExpedited(shipment)}`);
console.log(` Scheduled for: ${gophr.getScheduledFor(shipment) || 'ASAP'}`);
// Extract detailed address information
console.log('\nš Address Information:');
const pickupAddress = gophr.getPickupAddress(shipment);
const dropoffAddress = gophr.getDropoffAddress(shipment);
console.log(` Pickup: ${pickupAddress?.address_1}, ${pickupAddress?.city}, ${pickupAddress?.state} ${pickupAddress?.zip}`);
console.log(` Pickup coordinates: ${pickupAddress?.lat}, ${pickupAddress?.lng}`);
console.log(` Pickup instructions: ${pickupAddress?.instructions}`);
console.log(` Drop-off: ${dropoffAddress?.address_1}, ${dropoffAddress?.city}, ${dropoffAddress?.state} ${dropoffAddress?.zip}`);
console.log(` Drop-off coordinates: ${dropoffAddress?.lat}, ${dropoffAddress?.lng}`);
console.log(` Drop-off instructions: ${dropoffAddress?.instructions}`);
// Extract items information
const items = gophr.getShipmentItems(shipment);
console.log(` Items: ${items?.join(', ')}`);
// Get formatted shipment summary
const shipmentSummary = gophr.getShipmentSummary(shipment);
console.log('\nš Shipment Summary:');
console.log(JSON.stringify(shipmentSummary, null, 2));
// ========================================
// STEP 3: Advanced Usage Examples
// ========================================
console.log('\nš§ Advanced Usage Examples:');
// Using the helper method for structured data
console.log('\nš Using buildQuoteData helper method:');
const customerInfo = {
firstName: 'Jane',
lastName: 'Smith',
phone: '5555551234',
email: 'jane@example.com'
};
const addressInfo = {
address1: '123 Main St',
address2: 'Apt 4B',
city: 'New York',
state: 'NY',
zip: '10001'
};
const items2 = [{
quantity: 1,
name: 'Books',
sku: 'BOOK-001',
weight: 5
}];
const options = {
pickupInstructions: 'Call when arriving',
dropoffInstructions: 'Ring apartment buzzer',
scheduledFor: null // ASAP
};
const structuredQuoteData = gophr.buildQuoteData(customerInfo, addressInfo, items2, options);
console.log(' Structured quote data created using helper method');
console.log(` Customer: ${structuredQuoteData.first_name} ${structuredQuoteData.last_name}`);
console.log(` Address: ${structuredQuoteData.address_1}, ${structuredQuoteData.city}`);
// Accessing full payloads
console.log('\nš¦ Accessing full payloads:');
const quotePayload = gophr.getQuotePayload(quote);
const shipmentPayload = gophr.getShipmentPayload(shipment);
console.log(` Quote payload has ${Object.keys(quotePayload || {}).length} top-level properties`);
console.log(` Shipment payload has ${Object.keys(shipmentPayload || {}).length} top-level properties`);
console.log(` Full access to coordinates: pickup (${shipmentPayload?.pick_up?.lat}, ${shipmentPayload?.pick_up?.lng})`);
console.log('\nš Complete example finished successfully!');
console.log('\nš” Tips:');
console.log(' - Use getter methods instead of direct property access for safety');
console.log(' - Check gophr.isSuccessful() before processing responses');
console.log(' - Use formatted summaries for quick data overview');
console.log(' - Access full payloads when you need complete data access');
return {
quote,
shipment,
quoteSummary,
shipmentSummary
};
} catch (error) {
GophrBridge.logError(error);
process.exit(1);
}
}
completeExample();