Module: EasyPost::Util

Defined in:
lib/easypost/util.rb

Overview

Internal utilities helpful for this libraries operation.

Class Method Summary collapse

Class Method Details

.convert_to_easypost_object(response, api_key, parent = nil, name = nil) ⇒ Object

Convert data to an EasyPost Object.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/easypost/util.rb', line 28

def self.convert_to_easypost_object(response, api_key, parent = nil, name = nil)
  types = {
    'Address' => EasyPost::Address,
    'Batch' => EasyPost::Batch,
    'Brand' => EasyPost::Brand,
    'CarrierAccount' => EasyPost::CarrierAccount,
    'CustomsInfo' => EasyPost::CustomsInfo,
    'CustomsItem' => EasyPost::CustomsItem,
    'Event' => EasyPost::Event,
    'Insurance' => EasyPost::Insurance,
    'Order' => EasyPost::Order,
    'Parcel' => EasyPost::Parcel,
    'PaymentLogReport' => EasyPost::Report,
    'Pickup' => EasyPost::Pickup,
    'PickupRate' => EasyPost::PickupRate,
    'PostageLabel' => EasyPost::PostageLabel,
    'Rate' => EasyPost::Rate,
    'Refund' => EasyPost::Refund,
    'RefundReport' => EasyPost::Report,
    'Report' => EasyPost::Report,
    'ScanForm' => EasyPost::ScanForm,
    'Shipment' => EasyPost::Shipment,
    'TaxIdentifier' => EasyPost::TaxIdentifier,
    'ShipmentInvoiceReport' => EasyPost::Report,
    'ShipmentReport' => EasyPost::Report,
    'Tracker' => EasyPost::Tracker,
    'TrackerReport' => EasyPost::Report,
    'User' => EasyPost::User,
    'Webhook' => EasyPost::Webhook,
  }

  prefixes = {
    'adr' => EasyPost::Address,
    'batch' => EasyPost::Batch,
    'brd' => EasyPost::Brand,
    'ca' => EasyPost::CarrierAccount,
    'cstinfo' => EasyPost::CustomsInfo,
    'cstitem' => EasyPost::CustomsItem,
    'evt' => EasyPost::Event,
    'hook' => EasyPost::Webhook,
    'ins' => EasyPost::Insurance,
    'order' => EasyPost::Order,
    'pickup' => EasyPost::Pickup,
    'pickuprate' => EasyPost::PickupRate,
    'pl' => EasyPost::PostageLabel,
    'plrep' => EasyPost::Report,
    'prcl' => EasyPost::Parcel,
    'rate' => EasyPost::Rate,
    'refrep' => EasyPost::Report,
    'rfnd' => EasyPost::Refund,
    'sf' => EasyPost::ScanForm,
    'shp' => EasyPost::Shipment,
    'shpinvrep' => EasyPost::Report,
    'shprep' => EasyPost::Report,
    'trk' => EasyPost::Tracker,
    'trkrep' => EasyPost::Report,
    'user' => EasyPost::User,
  }

  case response
  when Array
    response.map { |i| convert_to_easypost_object(i, api_key, parent) }
  when Hash
    if (cls_name = response[:object])
      cls = types[cls_name]
    elsif response[:id]
      if response[:id].index('_').nil?
        cls = EasyPost::EasyPostObject
      elsif (cls_prefix = response[:id][0..response[:id].index('_')])
        cls = prefixes[cls_prefix[0..-2]]
      end
    elsif response['id']
      if response['id'].index('_').nil?
        cls = EasyPost::EasyPostObject
      elsif (cls_prefix = response['id'][0..response['id'].index('_')])
        cls = prefixes[cls_prefix[0..-2]]
      end
    end

    cls ||= EasyPost::EasyPostObject
    cls.construct_from(response, api_key, parent, name)
  else
    response
  end
end

.normalize_string_list(lst) ⇒ Object

Normalizes a list of strings.



22
23
24
25
# File 'lib/easypost/util.rb', line 22

def self.normalize_string_list(lst)
  lst = lst.is_a?(String) ? lst.split(',') : Array(lst)
  lst.map(&:to_s).map(&:downcase).map(&:strip)
end

.objects_to_ids(obj) ⇒ Object

Converts an object to an object ID.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/easypost/util.rb', line 6

def self.objects_to_ids(obj)
  case obj
  when EasyPost::Resource
    { id: obj.id }
  when Hash
    result = {}
    obj.each { |k, v| result[k] = objects_to_ids(v) unless v.nil? }
    result
  when Array
    obj.map { |v| objects_to_ids(v) }
  else
    obj
  end
end