Class: Usps::Imis::BusinessObject

Inherits:
Object
  • Object
show all
Includes:
Requests
Defined in:
lib/usps/imis/business_object.rb

Overview

DEV

Constant Summary collapse

API_PATH =

Endpoint for general API requests

'api'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api, business_object_name, url_id: nil) ⇒ BusinessObject

A new instance of BusinessObject



27
28
29
30
31
# File 'lib/usps/imis/business_object.rb', line 27

def initialize(api, business_object_name, url_id: nil)
  @api = api
  @business_object_name = business_object_name
  @url_id = url_id
end

Instance Attribute Details

#apiObject (readonly)

The parent Api object



15
16
17
# File 'lib/usps/imis/business_object.rb', line 15

def api
  @api
end

#business_object_nameObject (readonly)

Name of the iMIS Business Object



19
20
21
# File 'lib/usps/imis/business_object.rb', line 19

def business_object_name
  @business_object_name
end

#url_idObject (readonly)

Override ID param of the URL (e.g. used for Panels)



23
24
25
# File 'lib/usps/imis/business_object.rb', line 23

def url_id
  @url_id
end

Instance Method Details

#deleteString

Remove a business object for the current member

Returns:

  • (String)

    Error response body from the API, or empty string on success



97
98
99
100
101
# File 'lib/usps/imis/business_object.rb', line 97

def delete
  request = Net::HTTP::Delete.new(uri)
  result = submit(uri, authorize(request))
  result.body
end

#getHash

Get a business object for the current member

Returns:

  • (Hash)

    Response data from the API



37
38
39
40
41
# File 'lib/usps/imis/business_object.rb', line 37

def get
  request = Net::HTTP::Get.new(uri)
  result = submit(uri, authorize(request))
  JSON.parse(result.body)
end

#get_field(name) ⇒ Hash

Get a single named field from a business object for the current member

Parameters:

  • name (String)

    Field name to return

Returns:

  • (Hash)

    Response data from the API



49
50
51
52
53
54
# File 'lib/usps/imis/business_object.rb', line 49

def get_field(name)
  values = get['Properties']['$values']
  value = values.find { |hash| hash['Name'] == name }['Value']

  value.is_a?(String) ? value : value['$value']
end

#post(body) ⇒ Hash

Create a business object for the current member

Parameters:

  • body (Hash)

    Full raw API object data

Returns:

  • (Hash)

    Response data from the API



86
87
88
89
90
91
# File 'lib/usps/imis/business_object.rb', line 86

def post(body)
  request = Net::HTTP::Post.new(uri)
  request.body = JSON.dump(body)
  result = submit(uri, authorize(request))
  JSON.parse(result.body)
end

#put(body) ⇒ Hash

Update a business object for the current member

Parameters:

  • body (Hash)

    Full raw API object data

Returns:

  • (Hash)

    Response data from the API



73
74
75
76
77
78
# File 'lib/usps/imis/business_object.rb', line 73

def put(body)
  request = Net::HTTP::Put.new(uri)
  request.body = JSON.dump(body)
  result = submit(uri, authorize(request))
  JSON.parse(result.body)
end

#put_fields(fields) ⇒ Hash

Update only specific fields on a business object for the current member

Parameters:

  • fields (Hash)

    Conforms to pattern { field_key => value }

Returns:

  • (Hash)

    Response data from the API



62
63
64
65
# File 'lib/usps/imis/business_object.rb', line 62

def put_fields(fields)
  updated = filter_fields(fields)
  put(updated)
end