UNPKG

gophr-bridge-sdk

Version:

A simple SDK for interacting with the Gophr Bridge API

174 lines (145 loc) • 7.52 kB
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();