shipping 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +429 -0
- data/Rakefile +4 -1
- data/doc/classes/Shipping/Base.html +85 -15
- data/doc/classes/Shipping/Base.src/{M000005.html → M000008.html} +2 -2
- data/doc/classes/Shipping/Base.src/{M000006.html → M000009.html} +1 -1
- data/doc/classes/Shipping/Base.src/{M000007.html → M000010.html} +1 -1
- data/doc/classes/Shipping/FedEx.html +87 -5
- data/doc/classes/Shipping/FedEx.src/M000003.html +3 -3
- data/doc/classes/Shipping/FedEx.src/M000004.html +3 -3
- data/doc/classes/Shipping/FedEx.src/M000005.html +39 -0
- data/doc/classes/Shipping/FedEx.src/M000006.html +50 -0
- data/doc/classes/Shipping/FedEx.src/M000007.html +155 -0
- data/doc/classes/Shipping/UPS.html +11 -0
- data/doc/classes/Shipping/UPS.src/M000001.html +1 -1
- data/doc/classes/Shipping/UPS.src/M000002.html +28 -27
- data/doc/classes/Shipping.html +5 -0
- data/doc/created.rid +1 -1
- data/doc/files/README.html +1 -1
- data/doc/files/lib/shipping/base_rb.html +1 -1
- data/doc/files/lib/shipping/fedex_rb.html +6 -1
- data/doc/files/lib/shipping/ups_rb.html +1 -1
- data/doc/files/lib/shipping_rb.html +3 -1
- data/doc/fr_method_index.html +7 -4
- data/lib/shipping/base.rb +13 -7
- data/lib/shipping/fedex.rb +321 -483
- data/lib/shipping/ups.rb +31 -26
- data/lib/shipping.rb +7 -0
- data/test/fedex/fedex_test.rb +28 -1
- data/test/ups/ups_test.rb +1 -1
- metadata +23 -8
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/shipping/base.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/base.rb, line 35</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fedex</span>
|
15
15
|
<span class="ruby-constant">Shipping</span><span class="ruby-operator">::</span><span class="ruby-constant">FedEx</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">prepare_vars</span>
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/shipping/base.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/base.rb, line 40</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ups</span>
|
15
15
|
<span class="ruby-constant">Shipping</span><span class="ruby-operator">::</span><span class="ruby-constant">UPS</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">prepare_vars</span>
|
16
16
|
<span class="ruby-keyword kw">end</span></pre>
|
@@ -89,7 +89,10 @@
|
|
89
89
|
|
90
90
|
<div class="name-list">
|
91
91
|
<a href="#M000004">base_price</a>
|
92
|
+
<a href="#M000005">express_service_availability</a>
|
93
|
+
<a href="#M000007">label</a>
|
92
94
|
<a href="#M000003">price</a>
|
95
|
+
<a href="#M000006">register</a>
|
93
96
|
</div>
|
94
97
|
</div>
|
95
98
|
|
@@ -109,17 +112,32 @@
|
|
109
112
|
<tr class="top-aligned-row context-row">
|
110
113
|
<td class="context-item-name">ServiceTypes</td>
|
111
114
|
<td>=</td>
|
112
|
-
<td class="context-item-value">{ "priority" => "
|
115
|
+
<td class="context-item-value">{ "priority" => "PRIORITYOVERNIGHT", "2day" => "FEDEX2DAY", "standard_overnight" => "STANDARDOVERNIGHT", "first_overnight" => "FIRSTOVERNIGHT", "express_saver" => "FEDEXEXPRESSSAVER", "1day_freight" => "FEDEX1DAYFREIGHT", "2day_freight" => "FEDEX2DAYFREIGHT", "3day_freight" => "FEDEX3DAYFREIGHT", "international_priority" => "INTERNATIONALPRIORITY", "international_economy" => "INTERNATIONALECONOMY", "international_first" => "INTERNATIONALFIRST", "international_priority_freight" => "INTERNATIONALPRIORITYFREIGHT", "international_economy_freight" => "INTERNATIONALECONOMYFREIGHT", "home_delivery" => "GROUNDHOMEDELIVERY", "ground_service" => "FEDEXGROUND", "international_ground_service" => "INTERNATIONALGROUND"</td>
|
116
|
+
<td width="3em"> </td>
|
117
|
+
<td class="context-item-desc">
|
118
|
+
The following type hashes are to allow cross-api data retrieval
|
119
|
+
|
120
|
+
</td>
|
113
121
|
</tr>
|
114
122
|
<tr class="top-aligned-row context-row">
|
115
|
-
<td class="context-item-name">
|
123
|
+
<td class="context-item-name">PackageTypes</td>
|
116
124
|
<td>=</td>
|
117
|
-
<td class="context-item-value">{
|
125
|
+
<td class="context-item-value">{ "fedex_envelope" => "FEDEXENVELOPE", "fedex_pak" => "FEDEXPAK", "fedex_box" => "FEDEXBOX", "fedex_tube" => "FEDEXTUBE", "fedex_10_kg_box" => "FEDEX10KGBOX", "fedex_25_kg_box" => "FEDEX25KGBOX", "your_packaging" => "YOURPACKAGING"</td>
|
126
|
+
</tr>
|
127
|
+
<tr class="top-aligned-row context-row">
|
128
|
+
<td class="context-item-name">DropoffTypes</td>
|
129
|
+
<td>=</td>
|
130
|
+
<td class="context-item-value">{ 'regular_pickup' => 'REGULARPICKUP', 'request_courier' => 'REQUESTCOURIER', 'dropbox' => 'DROPBOX', 'business_service_center' => 'BUSINESSSERVICECENTER', 'station' => 'STATION'</td>
|
118
131
|
</tr>
|
119
132
|
<tr class="top-aligned-row context-row">
|
120
|
-
<td class="context-item-name">
|
133
|
+
<td class="context-item-name">PaymentTypes</td>
|
121
134
|
<td>=</td>
|
122
|
-
<td class="context-item-value">{ 0 => 'transaction_code', 1 => 'customer_transaction_identifier', 2 => 'transaction_error_code', 3 => 'transaction_error_message', 4 => 'sender_company', 5 => 'sender_address_line_1', 6 => 'sender_address_line_2', 7 => 'sender_city', 8 => 'sender_state', 9 => 'sender_postal_code', 10 => 'sender_fedex_express_account_number', 11 => 'recipient_company', 12 => 'recipient_contact_name', 13 => 'recipient_address_line_1', 14 => 'recipient_address_line_2', 15 => 'recipient_city', 16 => 'recipient_state', 17 => 'recipient_postal_code', 18 => 'recipient_phone_number', 20 => 'payer_account_number', 23 => 'pay_type', 24 => 'ship_date', 25 => 'reference_information', 27 => 'cod_flag', 28 => 'cod_return_tracking_number', 29 => 'tracking_number', 30 => 'ursa_code', 32 => 'sender_contact_name', 33 => 'service_commitment', 38 => 'sender_department', 40 => 'alcohol_type', 41 => 'alcohol_packaging', 44 => 'hal_address', 46 => 'hal_city', 47 => 'hal_state', 48 => 'hal_postal_code', 49 => 'hal_phone_number', 50 => 'recipient_country_code', 51 => 'signature_release_ok_flag', 52 => 'alcohol_packages', 57 => 'dim_height', 58 => 'dim_width', 59 => 'dim_length', 65 => 'astra_barcode', 66 => 'broker_name', 67 => 'broker_phone_number', 68 => 'customs_declared_value_currency_type', 70 => 'duties_pay_type', 71 => 'duties_payer_account', 72 => 'terms_of_sale', 73 => 'parties_to_transaction', 74 => 'country_of_ultimate_destination', 75 => 'weight_units', 76 => 'commodity_number_of_pieces', 79 => 'description_of_contents', 80 => 'country_of_manufacturer', 81 => 'harmonized_code', 82 => 'unit_quantity', 83 => 'export_license_number', 84 => 'export_license_expiration_date', 99 => 'end_of_record', 113 => 'commercial_invoice_flag', 116 => 'package_total', 117 => 'sender_country_code', 118 => 'recipient_irs', 120 => 'ci_marks_and_numbers', 169 => 'importer_country', 170 => 'importer_name', 171 => 'importer_company', 172 => 'importer_address_line_1', 173 => 'importer_address_line_2', 174 => 'importer_city', 175 => 'importer_state', 176 => 'importer_postal_code', 177 => 'importer_account_number', 178 => 'importer_number_phone', 180 => 'importer_id', 183 => 'sender_phone_number', 186 => 'cod_add_freight_charges_flag', 188 => 'label_buffer_data_stream', 190 => 'document_pib_shipment_flag', 194 => 'delivery_day', 195 => 'destination', 198 => 'destination_location_id', 404 => 'commodity_license_exception', 409 => 'delivery_date', 411 => 'cod_return_label_buffer_data_stream', 413 => 'nafta_flag', 414 => 'commodity_unit_of_measure', 418 => 'ci_comments', 431 => 'dim_weight_used_flag', 439 => 'cod_return_contact_name', 440 => 'residential_delivery_flag', 496 => 'freight_service_commitment', 498 => 'meter_number', 526 => 'form_id', 527 => 'cod_return_form_id', 528 => 'commodity_eccn', 535 => 'cod_return', 536 => 'cod_return_service_commitment', 543 => 'cod_return_collect_plus_freight_amount', 557 => 'message_type_code', 558 => 'message_code', 559 => 'message_text', 600 => 'forwarding_agent_routed_export_transaction_indicator', 602 => 'exporter_ein_ssn_indicator', 603 => 'int-con_company_name', 604 => 'int-con_contact_name', 605 => 'int-con_address_line_1', 606 => 'int-con_address_line_2', 607 => 'int-con_city', 608 => 'int-con_state', 609 => 'int-con_zip', 610 => 'int-con_phone_number', 611 => 'int-con_country', 1005 => 'manifest_invoic_e_file_name', 1006 => 'domain_name', 1007 => 'close_manifest_date', 1008 => 'package_ready_time', 1009 => 'time_companyclose', 1032 => 'duties_payer_country_code', 1089 => 'rate_scale', 1090 => 'rate_currency_type', 1092 => 'rate_zone', 1096 => 'origin_location_id', 1099 => 'volume_units', 1101 => 'payer_credit_card_number', 1102 => 'payer_credit_card_type', 1103 => 'sender_fax', 1104 => 'payer_credit_card_expiration_date', 1115 => 'ship_time', 1116 => 'dim_units', 1117 => 'package_sequence', 1118 => 'release_authorization_number', 1119 => 'future_day_shipment', 1120 => 'inside_pickup_flag', 1121 => 'inside_delivery_flag', 1123 => 'master_tracking_number', 1124 => 'master_form_id', 1137 => 'ursa_uned_prefix', 1139 => 'sender_irs_ein_number', 1145 => 'recipient_department', 1159 => 'scan_description', 1160 => 'scan_location_city', 1161 => 'scan_location_state', 1162 => 'scan_date', 1163 => 'scan_time', 1164 => 'scan_location_country', 1167 => 'disp_exception_cd', 1168 => 'status_exception_cd', 1174 => 'bso_flag', 1178 => 'ursa_suffix_code', 1179 => 'broker_fdx_account_number', 1180 => 'broker_company', 1181 => 'broker_line_1_address', 1182 => 'broker_line_2_address', 1183 => 'broker_city', 1184 => 'broker_state', 1185 => 'broker_postal_code', 1186 => 'broker_country_code', 1187 => 'broker_id_number', 1193 => 'ship_delete_message', 1195 => 'payer_country_code', 1200 => 'hold_at_location_hal_flag', 1201 => 'sender_email_address', 1202 => 'recipient_email_address', 1203 => 'optional_ship_alert_message', 1204 => 'ship_alert_email_address', 1206 => 'ship_alert_notification_flag', 1208 => 'no_indirect_delivery_flag_signature_required', 1210 => 'purpose_of_shipment', 1211 => 'pod_address', 1213 => 'proactive_notification_flag', 1237 => 'cod_return_phone', 1238 => 'cod_return_company', 1239 => 'cod_return_department', 1240 => 'cod_return_address_1', 1241 => 'cod_return_address_2', 1242 => 'cod_return_city', 1243 => 'cod_return_state', 1244 => 'cod_return_postal_code', 1253 => 'packaging_list_enclosed_flag', 1265 => 'hold_at_location_contact_name', 1266 => 'saturday_delivery_flag', 1267 => 'saturday_pickup_flag', 1268 => 'dry_ice_flag', 1271 => 'shippers_load_and_count_slac', 1272 => 'booking_number', 1273 => 'packaging_type', 1274 => 'service_type', 1286 => 'exporter_ppi-_contact_name', 1287 => 'exporter_ppi-company_name', 1288 => 'exporter_ppi-address_line_1', 1289 => 'exporter_ppi-address_line_2', 1290 => 'exporter_ppi-city', 1291 => 'exporter_ppi-state', 1292 => 'exporter_ppi-zip', 1293 => 'exporter_ppi-country', 1294 => 'exporter_ppi-phone_number', 1295 => 'exporter_ppi-ein_ssn', 1297 => 'customer_invoice_number', 1300 => 'purchase_order_number', 1331 => 'dangerous', 1332 => 'alcohol_flag', 1333 => 'drop_off_type', 1337 => 'package_content_information', 1339 => 'estimated_delivery_date', 1340 => 'estimated_delivery_time', 1341 => 'sender_pager_number', 1342 => 'recipient_pager_number', 1343 => 'broker_email_address', 1344 => 'broker_fax_number', 1346 => 'emerge_shipment_identifier', 1347 => 'emerge_merchant_identifier', 1349 => 'aes_filing_status', 1350 => 'xtn_suffix_number', 1352 => 'sender_ein_ssn_identificator', 1358 => 'aes_ftsr_exemption_number', 1359 => 'sed_legend_number', 1366 => 'close_manifest_time', 1367 => 'close_manifest_data_buffer', 1368 => 'label_type', 1369 => 'label_printer_type', 1370 => 'label_media_type', 1371 => 'manifest_only_request_flag', 1372 => 'manifest_total', 1376 => 'rate_weight_unit_of_measure', 1377 => 'dim_weight_unit_of_measure', 1391 => 'client_revision_indicator', 1392 => 'inbound_visibility_block_shipment_data_indicator', 1394 => 'shipment_content_records_total', 1395 => 'part_number', 1396 => 'sku_item_upc', 1397 => 'receive_quantity', 1398 => 'description', 1399 => 'aes_entry_number', 1400 => 'total_shipment_weight', 1401 => 'total_package_weight', 1402 => 'billed_weight', 1403 => 'dim_weight', 1404 => 'total_volume', 1405 => 'alcohol_volume', 1406 => 'dry_ice_weight', 1407 => 'commodity_weight', 1408 => 'commodity_unit_value', 1409 => 'cod_amount', 1410 => 'commodity_customs_value', 1411 => 'total_customs_value', 1412 => 'freight_charge', 1413 => 'insurance_charge', 1414 => 'taxes_miscellaneous_charge', 1415 => 'declared_value', 1416 => 'base_rate_amount', 1417 => 'total_surcharge_amount', 1418 => 'total_discount_amount', 1419 => 'net_charge_amount', 1420 => 'total_rebate_amount', 1429 => 'list_variable_handling_charge_amount', 1431 => 'list_total_customer_charge', 1432 => 'cod_customer_amount', 1450 => 'more_data_indicator', 1451 => 'sequence_number', 1452 => 'last_tracking_number', 1453 => 'track_reference_type', 1454 => 'track_reference', 1456 => 'spod_type_request', 1458 => 'spod_fax_recipient_name', 1459 => 'spod_fax_recipient_number', 1460 => 'spod_fax_sender_name', 1461 => 'spod_fax_sender_phone_number', 1462 => 'language_indicator', 1463 => 'spod_fax_recipient_company_name_mail', 1464 => 'spod_fax_recipient_address_line_1_mail', 1465 => 'spod_fax_recipient_address_line_2_mail', 1466 => 'spod_fax_recipient_city_mail', 1467 => 'spod_fax_recipient_state_mail', 1468 => 'spod_fax_recipient_zip_postal_code_mail', 1469 => 'spod_fax_recipient_country_mail', 1470 => 'spod_fax_confirmation', 1471 => 'spod_letter', 1472 => 'spod_ground_recipient_name', 1473 => 'spod_ground_recipient_company_name', 1474 => 'spod_ground_recipient_address_line_1', 1475 => 'spod_ground_recipient_address_line_2', 1476 => 'spod_ground_recipient_city', 1477 => 'spod_ground_recipient_state_province', 1478 => 'spod_ground_recipient_zip_postal_code', 1479 => 'spod_ground_recipient_country', 1480 => 'more_information', 1507 => 'list_total_surcharge_amount', 1525 => 'effective_net_discount', 1528 => 'list_net_charge_amount', 1529 => 'rate_indicator_1_numeric_valid_values', 1530 => 'list_base_rate_amount', 1531 => 'list_total_discount_amount', 1532 => 'list_total_rebate_amount', 1534 => 'detail_scan_indicator', 1535 => 'paging_token', 1536 => 'number_of_relationships', 1537 => 'search_relationship_string', 1538 => 'search_relationship_type_code', 1551 => 'delivery_notification_flag', 1552 => 'language_code', 1553 => 'shipper_delivery_notification_flag', 1554 => 'shipper_ship_alert_flag', 1555 => 'shipper_language_code', 1556 => 'recipient_delivery_notification_flag', 1557 => 'recipient_ship_alert_flag', 1558 => 'recipient_language_code', 1559 => 'broker_delivery_notification_flag', 1560 => 'broker_ship_alert_flag', 1561 => 'broker_language_code', 1562 => 'fedex_staffed_location_flag', 1563 => 'fedex_self_service_location_indicator', 1564 => 'fasc', 1565 => 'latest_express_dropoff_flag', 1566 => 'express_dropoff_after_time', 1567 => 'fedex_location_intersection_street_address', 1568 => 'distance', 1569 => 'hours_of_operation', 1570 => 'hours_of_operation_sat', 1571 => 'last_express_dropoff', 1572 => 'last_express_dropoff_sat', 1573 => 'express_service_flag', 1574 => 'location_count', 1575 => 'fedex_location_business_name', 1576 => 'fedex_location_business_type', 1577 => 'fedex_location_city', 1578 => 'fedex_location_state', 1579 => 'fedex_location_postal_code', 1580 => 'dangerous_goods_flag', 1581 => 'saturday_service_flag', 1582 => 'begin_date', 1583 => 'end_date', 1584 => 'tracking_groups', 1606 => 'variable_handling_charge_level', 1607 => 'doc_tab_header_1', 1608 => 'doc_tab_header_2', 1609 => 'doc_tab_header_3', 1610 => 'doc_tab_header_4', 1611 => 'doc_tab_header_5', 1612 => 'doc_tab_header_6', 1613 => 'doc_tab_header_7', 1614 => 'doc_tab_header_8', 1615 => 'doc_tab_header_9', 1616 => 'doc_tab_header_10', 1617 => 'doc_tab_header_11', 1618 => 'doc_tab_header_12', 1624 => 'doc_tab_field_1', 1625 => 'doc_tab_field_2', 1626 => 'doc_tab_field_3', 1627 => 'doc_tab_field_4', 1628 => 'doc_tab_field_5', 1629 => 'doc_tab_field_6', 1630 => 'doc_tab_field_7', 1631 => 'doc_tab_field_8', 1632 => 'doc_tab_field_9', 1633 => 'doc_tab_field_10', 1634 => 'doc_tab_field_11', 1635 => 'doc_tab_field_12', 1636 => 'delivery_area_surcharge', 1637 => 'list_delivery_area_surcharge', 1638 => 'fuel_surcharge', 1639 => 'list_fuel_surcharge', 1640 => 'fice_surcharge', 1642 => 'value_added_tax', 1644 => 'offshore_surcharge', 1645 => 'list_offshore_surcharge', 1649 => 'other_surcharges', 1650 => 'list_other_surcharges', 1704 => 'service_type_description', 1705 => 'deliver_to', 1706 => 'signed_for', 1707 => 'delivery_time', 1711 => 'status_exception', 1713 => 'tracking_cod_flag', 1715 => 'number_of_track_activities', 1716 => 'delivery_reattempt_date', 1717 => 'delivery_reattempt_time', 1718 => 'package_type_description', 1720 => 'delivery_date_numeric', 1721 => 'tracking_activity_line_1', 1722 => 'tracking_activity_line_2', 1723 => 'tracking_activity_line_3', 1724 => 'tracking_activity_line_4', 1725 => 'tracking_activity_line_5', 1726 => 'tracking_activity_line_6', 1727 => 'tracking_activity_line_7', 1728 => 'tracking_activity_line_8', 1729 => 'tracking_activity_line_9', 1730 => 'tracking_activity_line_10', 1731 => 'tracking_activity_line_11', 1732 => 'tracking_activity_line_12', 1733 => 'tracking_activity_line_13', 1734 => 'tracking_activity_line_14', 1735 => 'tracking_activity_line_15', 2254 => 'recipient_fax_number', 2382 => 'return_shipment_indicator', 3000 => 'cod_type_collection', 3001 => 'fedex_ground_purchase_order', 3002 => 'fedex_ground_invoice', 3003 => 'fedex_ground_customer_reference', 3008 => 'autopod_flag', 3009 => 'aod_flag', 3010 => 'oversize_flag', 3011 => 'other_oversize_flag', 3018 => 'nonstandard_container_flag', 3019 => 'fedex_signature_home_delivery_flag', 3020 => 'fedex_home_delivery_type', 3023 => 'fedex_home_delivery_date', 3024 => 'fedex_home_delivery_phone_number', 3025 => 'carrier_code', 3028 => 'ground_account_number', 3035 => 'ship_alert_fax_number', 3045 => 'cod_return_reference_indicator', 3046 => 'additional_handling_detected', 3053 => 'multiweight_net_charge', 3090 => 'last_ground_dropoff', 3091 => 'last_ground_dropoff_sat', 3092 => 'ground_service_flag', 3124 => 'oversize_classification', 4003 => 'subscriber_contact_name', 4004 => 'subscriber_password_reminder', 4007 => 'subscriber_company_name', 4008 => 'subscriber_address_line_1', 4009 => 'subscriber_address_line_2', 4011 => 'subscriber_city_name', 4012 => 'subscriber_state_code', 4013 => 'subscriber_postal_code', 4014 => 'subscriber_country_code', 4015 => 'subscriber_phone_number', 4017 => 'subscriber_pager_number', 4018 => 'subscriber_email_address', 4021 => 'subscription_service_name', 4022 => 'subscriber_fax_number'</td>
|
135
|
+
<td class="context-item-value">{ 'sender' => 'SENDER', 'recipient' => 'RECIPIENT', 'third_party' => 'THIRDPARTY', 'collect' => 'COLLECT'</td>
|
136
|
+
</tr>
|
137
|
+
<tr class="top-aligned-row context-row">
|
138
|
+
<td class="context-item-name">TransactionTypes</td>
|
139
|
+
<td>=</td>
|
140
|
+
<td class="context-item-value">{ 'rate_ground' => ['022','FDXG'], 'rate_express' => ['022','FDXE'], 'rate_services' => ['025',''], 'ship_ground' => ['021','FDXG'], 'ship_express' => ['021','FDXE'], 'cancel_express' => ['023','FDXE'], 'cancel_ground' => ['023','FDXG'], 'close_ground' => ['007','FDXG'], 'service_available' => ['019','FDXE'], 'fedex_locater' => ['410',''], 'subscribe' => ['211',''], 'sig_proof_delivery' => ['402',''], 'track' => ['405',''], 'ref_track' => ['403','']</td>
|
123
141
|
</tr>
|
124
142
|
</table>
|
125
143
|
</div>
|
@@ -152,6 +170,56 @@ consideration)
|
|
152
170
|
</div>
|
153
171
|
</div>
|
154
172
|
|
173
|
+
<div id="method-M000005" class="method-detail">
|
174
|
+
<a name="M000005"></a>
|
175
|
+
|
176
|
+
<div class="method-heading">
|
177
|
+
<a href="FedEx.src/M000005.html" target="Code" class="method-signature"
|
178
|
+
onclick="popupCode('FedEx.src/M000005.html');return false;">
|
179
|
+
<span class="method-name">express_service_availability</span><span class="method-args">()</span>
|
180
|
+
</a>
|
181
|
+
</div>
|
182
|
+
|
183
|
+
<div class="method-description">
|
184
|
+
<p>
|
185
|
+
still not sure what the best way to handle this transaction’s return
|
186
|
+
data would be. Possibly a hash of the form {service =>
|
187
|
+
delivery_estimate}?
|
188
|
+
</p>
|
189
|
+
</div>
|
190
|
+
</div>
|
191
|
+
|
192
|
+
<div id="method-M000007" class="method-detail">
|
193
|
+
<a name="M000007"></a>
|
194
|
+
|
195
|
+
<div class="method-heading">
|
196
|
+
<a href="FedEx.src/M000007.html" target="Code" class="method-signature"
|
197
|
+
onclick="popupCode('FedEx.src/M000007.html');return false;">
|
198
|
+
<span class="method-name">label</span><span class="method-args">()</span>
|
199
|
+
</a>
|
200
|
+
</div>
|
201
|
+
|
202
|
+
<div class="method-description">
|
203
|
+
<p>
|
204
|
+
require ‘fileutils’ fedex = Shipping::FedEx.new :name =>
|
205
|
+
‘John Doe’, … , :sender_zip => 97202 label =
|
206
|
+
fedex.label
|
207
|
+
</p>
|
208
|
+
<pre>
|
209
|
+
puts label.url
|
210
|
+
</pre>
|
211
|
+
<p>
|
212
|
+
puts label.tracking_number
|
213
|
+
</p>
|
214
|
+
<pre>
|
215
|
+
In the future you will be able to do:
|
216
|
+
</pre>
|
217
|
+
<p>
|
218
|
+
FileUtils.cp label.image.path, ’/path/to/my/images/directory/’
|
219
|
+
</p>
|
220
|
+
</div>
|
221
|
+
</div>
|
222
|
+
|
155
223
|
<div id="method-M000003" class="method-detail">
|
156
224
|
<a name="M000003"></a>
|
157
225
|
|
@@ -169,6 +237,20 @@ Gets the total price of the shipping
|
|
169
237
|
</div>
|
170
238
|
</div>
|
171
239
|
|
240
|
+
<div id="method-M000006" class="method-detail">
|
241
|
+
<a name="M000006"></a>
|
242
|
+
|
243
|
+
<div class="method-heading">
|
244
|
+
<a href="FedEx.src/M000006.html" target="Code" class="method-signature"
|
245
|
+
onclick="popupCode('FedEx.src/M000006.html');return false;">
|
246
|
+
<span class="method-name">register</span><span class="method-args">()</span>
|
247
|
+
</a>
|
248
|
+
</div>
|
249
|
+
|
250
|
+
<div class="method-description">
|
251
|
+
</div>
|
252
|
+
</div>
|
253
|
+
|
172
254
|
|
173
255
|
</div>
|
174
256
|
|
@@ -10,11 +10,11 @@
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line 11</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">price</span>
|
15
15
|
<span class="ruby-identifier">get_price</span>
|
16
|
-
<span class="ruby-identifier">p</span> = <span class="ruby-
|
17
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-
|
16
|
+
<span class="ruby-identifier">p</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXRateReply/EstimatedCharges/DiscountedCharges/NetCharge"</span>).<span class="ruby-identifier">text</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
17
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-identifier">get_error</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">nil?</span>
|
18
18
|
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">p</span>
|
19
19
|
<span class="ruby-keyword kw">end</span></pre>
|
20
20
|
</body>
|
@@ -10,11 +10,11 @@
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line 19</span>
|
14
14
|
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">base_price</span>
|
15
15
|
<span class="ruby-identifier">get_price</span>
|
16
|
-
<span class="ruby-identifier">p</span> = <span class="ruby-
|
17
|
-
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-
|
16
|
+
<span class="ruby-identifier">p</span> = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXRateReply/EstimatedCharges/DiscountedCharges/BaseCharge"</span>).<span class="ruby-identifier">text</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>
|
17
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-identifier">get_error</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">nil?</span>
|
18
18
|
<span class="ruby-keyword kw">return</span> <span class="ruby-identifier">p</span>
|
19
19
|
<span class="ruby-keyword kw">end</span></pre>
|
20
20
|
</body>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>express_service_availability (Shipping::FedEx)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line 27</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">express_service_availability</span>
|
15
|
+
|
16
|
+
<span class="ruby-ivar">@data</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>
|
17
|
+
<span class="ruby-identifier">b</span> = <span class="ruby-constant">Builder</span><span class="ruby-operator">::</span><span class="ruby-constant">XmlMarkup</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">:target</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@data</span>
|
18
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">instruct!</span>
|
19
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">FDXServiceAvailabilityRequest</span>(<span class="ruby-value str">'xmlns:api'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.fedex.com/fsmapi'</span>, <span class="ruby-value str">'xmlns:xsi'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.w3.org/2001/XMLSchema-instance'</span>, <span class="ruby-value str">'xsi:noNamespaceSchemaLocation'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'FDXServiceAvailabilityRequest.xsd'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
20
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">RequestHeader</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
21
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">AccountNumber</span> <span class="ruby-ivar">@fedex_account</span>
|
22
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">MeterNumber</span> <span class="ruby-ivar">@fedex_meter</span>
|
23
|
+
}
|
24
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">OriginAddress</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
25
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PostalCode</span> <span class="ruby-ivar">@sender_zip</span>
|
26
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@sender_country_code</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"US"</span>
|
27
|
+
}
|
28
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">DestinationAddress</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
29
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PostalCode</span> <span class="ruby-ivar">@zip</span>
|
30
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@country</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"US"</span>
|
31
|
+
}
|
32
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ShipDate</span> <span class="ruby-ivar">@ship_date</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@ship_date</span>.<span class="ruby-identifier">nil?</span>
|
33
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PackageCount</span> <span class="ruby-ivar">@package_total</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'1'</span>
|
34
|
+
}
|
35
|
+
|
36
|
+
<span class="ruby-identifier">get_response</span> <span class="ruby-ivar">@fedex_url</span>
|
37
|
+
<span class="ruby-keyword kw">end</span></pre>
|
38
|
+
</body>
|
39
|
+
</html>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>register (Shipping::FedEx)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line 52</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">register</span>
|
15
|
+
<span class="ruby-ivar">@required</span> = [<span class="ruby-identifier">:name</span>, <span class="ruby-identifier">:company</span>, <span class="ruby-identifier">:phone</span>, <span class="ruby-identifier">:email</span>, <span class="ruby-identifier">:address</span>, <span class="ruby-identifier">:city</span>, <span class="ruby-identifier">:state</span>, <span class="ruby-identifier">:zip</span>]
|
16
|
+
<span class="ruby-ivar">@required</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">:fedex_account</span>, <span class="ruby-identifier">:fedex_url</span>]
|
17
|
+
|
18
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">has_value?</span>(<span class="ruby-ivar">@state</span>.<span class="ruby-identifier">downcase</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@state</span>.<span class="ruby-identifier">downcase</span>).<span class="ruby-identifier">upcase</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@state</span>.<span class="ruby-identifier">upcase</span>
|
19
|
+
|
20
|
+
<span class="ruby-ivar">@data</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>
|
21
|
+
<span class="ruby-identifier">b</span> = <span class="ruby-constant">Builder</span><span class="ruby-operator">::</span><span class="ruby-constant">XmlMarkup</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">:target</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@data</span>
|
22
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">instruct!</span>
|
23
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">FDXSubscriptionRequest</span>(<span class="ruby-value str">'xmlns:api'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.fedex.com/fsmapi'</span>, <span class="ruby-value str">'xmlns:xsi'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.w3.org/2001/XMLSchema-instance'</span>, <span class="ruby-value str">'xsi:noNamespaceSchemaLocation'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'FDXSubscriptionRequest.xsd'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
24
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">RequestHeader</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
25
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CustomerTransactionIdentifier</span> <span class="ruby-ivar">@transaction_identifier</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@transaction_identifier</span> <span class="ruby-comment cmt"># optional</span>
|
26
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">AccountNumber</span> <span class="ruby-ivar">@fedex_account</span>
|
27
|
+
}
|
28
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Contact</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
29
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PersonName</span> <span class="ruby-ivar">@name</span>
|
30
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CompanyName</span> <span class="ruby-ivar">@company</span>
|
31
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Department</span> <span class="ruby-ivar">@department</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@department</span>
|
32
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PhoneNumber</span> <span class="ruby-ivar">@phone</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>)
|
33
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">tag!</span> <span class="ruby-value str">"E-MailAddress"</span><span class="ruby-value str">"E-MailAddress"</span>, <span class="ruby-ivar">@email</span>
|
34
|
+
}
|
35
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Address</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
36
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line1</span> <span class="ruby-ivar">@address</span>
|
37
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line2</span> <span class="ruby-ivar">@address2</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@address2</span>
|
38
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">City</span> <span class="ruby-ivar">@city</span>
|
39
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">StateOrProvinceCode</span> <span class="ruby-identifier">state</span>
|
40
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PostalCode</span> <span class="ruby-ivar">@zip</span>
|
41
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@country</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'US'</span>
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
<span class="ruby-identifier">get_response</span> <span class="ruby-ivar">@fedex_url</span>
|
46
|
+
|
47
|
+
<span class="ruby-keyword kw">return</span> <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXSubscriptionReply/MeterNumber"</span>).<span class="ruby-identifier">text</span>
|
48
|
+
<span class="ruby-keyword kw">end</span></pre>
|
49
|
+
</body>
|
50
|
+
</html>
|
@@ -0,0 +1,155 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html>
|
7
|
+
<head>
|
8
|
+
<title>label (Shipping::FedEx)</title>
|
9
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
|
+
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
|
+
</head>
|
12
|
+
<body class="standalone-code">
|
13
|
+
<pre><span class="ruby-comment cmt"># File lib/shipping/fedex.rb, line 98</span>
|
14
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">label</span>
|
15
|
+
<span class="ruby-ivar">@required</span> = [<span class="ruby-identifier">:phone</span>, <span class="ruby-identifier">:email</span>, <span class="ruby-identifier">:address</span>, <span class="ruby-identifier">:city</span>, <span class="ruby-identifier">:state</span>, <span class="ruby-identifier">:zip</span> ]
|
16
|
+
<span class="ruby-ivar">@required</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">:sender_phone</span>, <span class="ruby-identifier">:sender_email</span>, <span class="ruby-identifier">:sender_address</span>, <span class="ruby-identifier">:sender_city</span>, <span class="ruby-identifier">:sender_state</span>, <span class="ruby-identifier">:sender_zip</span> ]
|
17
|
+
<span class="ruby-ivar">@required</span> <span class="ruby-operator">+=</span> [<span class="ruby-identifier">:fedex_account</span>, <span class="ruby-identifier">:fedex_url</span>]
|
18
|
+
|
19
|
+
<span class="ruby-ivar">@transaction_type</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'rate_ground'</span>
|
20
|
+
<span class="ruby-ivar">@weight</span> = (<span class="ruby-ivar">@weight</span>.<span class="ruby-identifier">to_f</span><span class="ruby-operator">*</span><span class="ruby-value">10</span>).<span class="ruby-identifier">round</span><span class="ruby-operator">/</span><span class="ruby-value">10.0</span>
|
21
|
+
<span class="ruby-ivar">@declared_value</span> = (<span class="ruby-ivar">@declared_value</span>.<span class="ruby-identifier">to_f</span><span class="ruby-operator">*</span><span class="ruby-value">100</span>).<span class="ruby-identifier">round</span><span class="ruby-operator">/</span><span class="ruby-value">100.0</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@declared_value</span>.<span class="ruby-identifier">nil?</span>
|
22
|
+
<span class="ruby-identifier">state</span> = <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">has_value?</span>(<span class="ruby-ivar">@state</span>.<span class="ruby-identifier">downcase</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@state</span>.<span class="ruby-identifier">downcase</span>).<span class="ruby-identifier">upcase</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@state</span>.<span class="ruby-identifier">upcase</span>
|
23
|
+
<span class="ruby-identifier">sender_state</span> = <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">has_value?</span>(<span class="ruby-ivar">@sender_state</span>.<span class="ruby-identifier">downcase</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">STATES</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@sender_state</span>.<span class="ruby-identifier">downcase</span>).<span class="ruby-identifier">upcase</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@sender_state</span>.<span class="ruby-identifier">upcase</span>
|
24
|
+
|
25
|
+
<span class="ruby-ivar">@data</span> = <span class="ruby-constant">String</span>.<span class="ruby-identifier">new</span>
|
26
|
+
|
27
|
+
<span class="ruby-identifier">b</span> = <span class="ruby-constant">Builder</span><span class="ruby-operator">::</span><span class="ruby-constant">XmlMarkup</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">:target</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@data</span>
|
28
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">instruct!</span>
|
29
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">FDXEmailLabelRequest</span>(<span class="ruby-value str">'xmlns:api'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.fedex.com/fsmapi'</span>, <span class="ruby-value str">'xmlns:xsi'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'http://www.w3.org/2001/XMLSchema-instance'</span>, <span class="ruby-value str">'xsi:noNamespaceSchemaLocation'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'FDXEmailLabelRequest.xsd'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
30
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">RequestHeader</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
31
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">AccountNumber</span> <span class="ruby-ivar">@fedex_account</span>
|
32
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">MeterNumber</span> <span class="ruby-ivar">@fedex_meter</span>
|
33
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CarrierCode</span> <span class="ruby-constant">TransactionTypes</span>[<span class="ruby-ivar">@transaction_type</span>][<span class="ruby-value">1</span>]
|
34
|
+
}
|
35
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">URLExpirationDate</span>((<span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">+</span> <span class="ruby-value">3600</span><span class="ruby-operator">*</span><span class="ruby-value">24</span>).<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">"%Y-%m-%d"</span>))
|
36
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">tag!</span> <span class="ruby-value str">"URLNotificationE-MailAddress"</span><span class="ruby-value str">"URLNotificationE-MailAddress"</span>, <span class="ruby-ivar">@sender_email</span>
|
37
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">MerchantPhoneNumber</span> <span class="ruby-ivar">@sender_phone</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>)
|
38
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Service</span> <span class="ruby-constant">ServiceTypes</span>[<span class="ruby-ivar">@service_type</span>] <span class="ruby-operator">||</span> <span class="ruby-constant">ServiceTypes</span>[<span class="ruby-value str">'ground_service'</span>] <span class="ruby-comment cmt"># default to ground service</span>
|
39
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Packaging</span> <span class="ruby-constant">PackageTypes</span>[<span class="ruby-ivar">@packaging_type</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'YOURPACKAGING'</span>
|
40
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">WeightUnits</span> <span class="ruby-ivar">@weight_units</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'LBS'</span> <span class="ruby-comment cmt"># or KGS</span>
|
41
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CurrencyCode</span> <span class="ruby-ivar">@currency_code</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'USD'</span>
|
42
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Origin</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
43
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Contact</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
44
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sender_name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">2</span>
|
45
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PersonName</span> <span class="ruby-ivar">@sender_name</span>
|
46
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CompanyName</span> <span class="ruby-ivar">@sender_company</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@sender_company</span>.<span class="ruby-identifier">nil?</span>
|
47
|
+
<span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@sender_company</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">2</span>
|
48
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PersonName</span> <span class="ruby-ivar">@sender_name</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@sender_name</span>.<span class="ruby-identifier">nil?</span>
|
49
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CompanyName</span> <span class="ruby-ivar">@sender_company</span>
|
50
|
+
<span class="ruby-keyword kw">else</span>
|
51
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-value str">"Either the sender_name or the sender_company value must be bigger than 2 characters."</span>
|
52
|
+
<span class="ruby-keyword kw">end</span>
|
53
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Department</span> <span class="ruby-ivar">@sender_department</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@sender_department</span>.<span class="ruby-identifier">nil?</span>
|
54
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PhoneNumber</span> <span class="ruby-ivar">@sender_phone</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>)
|
55
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PagerNumber</span> <span class="ruby-ivar">@sender_pager</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sender_pager</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
|
56
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">FaxNumber</span> <span class="ruby-ivar">@sender_fax</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sender_fax</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
|
57
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">tag!</span> <span class="ruby-value str">"E-MailAddress"</span><span class="ruby-value str">"E-MailAddress"</span>, <span class="ruby-ivar">@sender_email</span>
|
58
|
+
}
|
59
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Address</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
60
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line1</span> <span class="ruby-ivar">@sender_address</span>
|
61
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line2</span> <span class="ruby-ivar">@sender_address2</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@sender_address2</span>.<span class="ruby-identifier">nil?</span>
|
62
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">City</span> <span class="ruby-ivar">@sender_city</span>
|
63
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">StateOrProvinceCode</span> <span class="ruby-identifier">sender_state</span>
|
64
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PostalCode</span> <span class="ruby-ivar">@sender_zip</span>
|
65
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@sender_country</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'US'</span>
|
66
|
+
}
|
67
|
+
}
|
68
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Destination</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
69
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Contact</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
70
|
+
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">2</span>
|
71
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PersonName</span> <span class="ruby-ivar">@name</span>
|
72
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CompanyName</span> <span class="ruby-ivar">@company</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@company</span>.<span class="ruby-identifier">nil?</span>
|
73
|
+
<span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@company</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">2</span>
|
74
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PersonName</span> <span class="ruby-ivar">@name</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@name</span>.<span class="ruby-identifier">nil?</span>
|
75
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CompanyName</span> <span class="ruby-ivar">@company</span>
|
76
|
+
<span class="ruby-keyword kw">else</span>
|
77
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-value str">"Either the name or the company value must be bigger than 2 characters."</span>
|
78
|
+
<span class="ruby-keyword kw">end</span>
|
79
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Department</span> <span class="ruby-ivar">@department</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@department</span>.<span class="ruby-identifier">nil?</span>
|
80
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PhoneNumber</span> <span class="ruby-ivar">@phone</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>)
|
81
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PagerNumber</span> <span class="ruby-ivar">@pager</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pager</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
|
82
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">FaxNumber</span> <span class="ruby-ivar">@fax</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^\d]/</span>,<span class="ruby-value str">""</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fax</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">String</span>
|
83
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">tag!</span> <span class="ruby-value str">"E-MailAddress"</span><span class="ruby-value str">"E-MailAddress"</span>, <span class="ruby-ivar">@email</span>
|
84
|
+
}
|
85
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Address</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
86
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line1</span> <span class="ruby-ivar">@address</span>
|
87
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Line2</span> <span class="ruby-ivar">@address2</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@address2</span>.<span class="ruby-identifier">nil?</span>
|
88
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">City</span> <span class="ruby-ivar">@city</span>
|
89
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">StateOrProvinceCode</span> <span class="ruby-identifier">state</span>
|
90
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PostalCode</span> <span class="ruby-ivar">@zip</span>
|
91
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@country</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'US'</span>
|
92
|
+
}
|
93
|
+
}
|
94
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Payment</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
95
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">PayorType</span> <span class="ruby-constant">PaymentTypes</span>[<span class="ruby-ivar">@pay_type</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'SENDER'</span>
|
96
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Payor</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
97
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">AccountNumber</span> <span class="ruby-ivar">@payor_account_number</span>
|
98
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CountryCode</span> <span class="ruby-ivar">@payor_country_code</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@payor_country_code</span>.<span class="ruby-identifier">nil?</span>
|
99
|
+
} <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@payor_account_number</span>.<span class="ruby-identifier">nil?</span>
|
100
|
+
}
|
101
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">RMA</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
102
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Number</span> <span class="ruby-ivar">@rma_number</span>
|
103
|
+
} <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@rma_number</span>.<span class="ruby-identifier">nil?</span>
|
104
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Package</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
105
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Weight</span> <span class="ruby-ivar">@weight</span>
|
106
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">DeclaredValue</span> <span class="ruby-ivar">@declared_value</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'99.00'</span>
|
107
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ReferenceInfo</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
108
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">CustomerReference</span> <span class="ruby-ivar">@customer_reference</span>
|
109
|
+
} <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@customer_reference</span>.<span class="ruby-identifier">nil?</span>
|
110
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ItemDescription</span> <span class="ruby-ivar">@description</span> <span class="ruby-operator">||</span> <span class="ruby-value str">"Shipment"</span>
|
111
|
+
}
|
112
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">SpecialServices</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
113
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">EMailNotification</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
114
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ShipAlertOptionalMessage</span> <span class="ruby-ivar">@message</span>
|
115
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Shipper</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
116
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ShipAlert</span> <span class="ruby-ivar">@shipper_ship_alert</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'true'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'false'</span>
|
117
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">LanguageCode</span> <span class="ruby-ivar">@shipper_language</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'EN'</span> <span class="ruby-comment cmt"># FR also available</span>
|
118
|
+
}
|
119
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Recipient</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
120
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ShipAlert</span> <span class="ruby-ivar">@recipient_ship_alert</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'true'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'false'</span>
|
121
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">LanguageCode</span> <span class="ruby-ivar">@recipient_language</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'EN'</span> <span class="ruby-comment cmt"># FR also available</span>
|
122
|
+
}
|
123
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">Other</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">b</span><span class="ruby-operator">|</span>
|
124
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-identifier">tag!</span> <span class="ruby-value str">"E-MailAddress"</span><span class="ruby-value str">"E-MailAddress"</span>, <span class="ruby-ivar">@other_email</span>
|
125
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">ShipAlert</span> <span class="ruby-ivar">@other_ship_alert</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'true'</span> <span class="ruby-operator">:</span> <span class="ruby-value str">'false'</span>
|
126
|
+
<span class="ruby-identifier">b</span>.<span class="ruby-constant">LanguageCode</span> <span class="ruby-ivar">@other_language</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'EN'</span> <span class="ruby-comment cmt"># FR also available</span>
|
127
|
+
} <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@other_email</span>.<span class="ruby-identifier">nil?</span>
|
128
|
+
}
|
129
|
+
} <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@message</span>.<span class="ruby-identifier">nil?</span>
|
130
|
+
}
|
131
|
+
|
132
|
+
<span class="ruby-identifier">get_response</span> <span class="ruby-ivar">@fedex_url</span>
|
133
|
+
|
134
|
+
<span class="ruby-keyword kw">begin</span>
|
135
|
+
<span class="ruby-identifier">response</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>
|
136
|
+
<span class="ruby-identifier">response</span>[<span class="ruby-identifier">:url</span>] = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXEmailLabelReply/URL"</span>).<span class="ruby-identifier">text</span>
|
137
|
+
<span class="ruby-identifier">response</span>[<span class="ruby-identifier">:userid</span>] = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXEmailLabelReply/UserID"</span>).<span class="ruby-identifier">text</span>
|
138
|
+
<span class="ruby-identifier">response</span>[<span class="ruby-identifier">:password</span>] = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXEmailLabelReply/Password"</span>).<span class="ruby-identifier">text</span>
|
139
|
+
<span class="ruby-identifier">response</span>[<span class="ruby-identifier">:tracking_number</span>] = <span class="ruby-constant">REXML</span><span class="ruby-operator">::</span><span class="ruby-constant">XPath</span>.<span class="ruby-identifier">first</span>(<span class="ruby-ivar">@response</span>, <span class="ruby-value str">"//FDXEmailLabelReply/Package/TrackingNumber"</span>).<span class="ruby-identifier">text</span>
|
140
|
+
<span class="ruby-keyword kw">rescue</span>
|
141
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ShippingError</span>, <span class="ruby-identifier">get_error</span>
|
142
|
+
<span class="ruby-keyword kw">end</span>
|
143
|
+
|
144
|
+
<span class="ruby-comment cmt"># allows for things like fedex.label.url</span>
|
145
|
+
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
|
146
|
+
<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>) <span class="ruby-operator">?</span> <span class="ruby-keyword kw">self</span>[<span class="ruby-identifier">name</span>] <span class="ruby-operator">:</span> <span class="ruby-keyword kw">super</span>
|
147
|
+
<span class="ruby-keyword kw">end</span>
|
148
|
+
|
149
|
+
??
|
150
|
+
|
151
|
+
<span class="ruby-comment cmt"># don't allow people to edit the response</span>
|
152
|
+
<span class="ruby-identifier">response</span>.<span class="ruby-identifier">freeze</span>
|
153
|
+
<span class="ruby-keyword kw">end</span></pre>
|
154
|
+
</body>
|
155
|
+
</html>
|