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, ordinal: nil) ⇒ BusinessObject

A new instance of BusinessObject



29
30
31
32
33
# File 'lib/usps/imis/business_object.rb', line 29

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

Instance Attribute Details

#apiObject (readonly)

The parent Api object



17
18
19
# File 'lib/usps/imis/business_object.rb', line 17

def api
  @api
end

#business_object_nameObject (readonly)

Name of the iMIS Business Object



21
22
23
# File 'lib/usps/imis/business_object.rb', line 21

def business_object_name
  @business_object_name
end

#ordinalObject (readonly)

Ordinal to build override ID param of the URL (e.g. used for Panels)



25
26
27
# File 'lib/usps/imis/business_object.rb', line 25

def ordinal
  @ordinal
end

Instance Method Details

#deleteString Also known as: destroy

Remove a business object for the current member

Returns:

  • (String)

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



106
107
108
109
110
# File 'lib/usps/imis/business_object.rb', line 106

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

#getHash Also known as: read

Get a business object for the current member

Returns:

  • (Hash)

    Response data from the API



39
40
41
42
43
# File 'lib/usps/imis/business_object.rb', line 39

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

#get_field(name) ⇒ Hash Also known as: fetch

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



52
53
54
55
56
57
# File 'lib/usps/imis/business_object.rb', line 52

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

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

#post(body) ⇒ Hash Also known as: create

Create a business object for the current member

Parameters:

  • body (Hash)

    Full raw API object data

Returns:

  • (Hash)

    Response data from the API



94
95
96
97
98
99
# File 'lib/usps/imis/business_object.rb', line 94

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

#put(body) ⇒ Hash Also known as: update

Update a business object for the current member

Any properties not included will be left unmodified

Parameters:

  • body (Hash)

    Full raw API object data

Returns:

  • (Hash)

    Response data from the API



80
81
82
83
84
85
# File 'lib/usps/imis/business_object.rb', line 80

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 Also known as: patch

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



66
67
68
69
# File 'lib/usps/imis/business_object.rb', line 66

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