Class: FastBound::Contact

Inherits:
Base
  • Object
show all
Includes:
API
Defined in:
lib/fastbound-ruby/contact.rb

Constant Summary collapse

CREATE_AND_EDIT_ATTRS =
{
  permitted: %i(
    external_id ffl_number ffl_expires lookup_ffl license_name trade_name sotein sot_class business_type
    organization_name first_name middle_name last_name premise_address_1 premise_address_2 premise_city
    premise_county premise_state premise_zip_code premise_country phone_number fax email_address
  ).freeze,
  required:  %i( ffl_number ffl_expires premise_address_1 premise_city premise_state premise_zip_code ).freeze
}
CREATE_AND_EDIT_LICENSE_ATTRS =
{
  permitted: %i( type number expiration copy_on_file ).freeze,
  required:  %i( type number ).freeze
}
MERGE_ATTRS =
{
  permitted: %i( winning_contact_id losing_contact_id ).freeze,
  required:  %i( winning_contact_id losing_contact_id ).freeze
}
ENDPOINTS =
{
  list:                 "contacts?%s".freeze,
  create:               "contacts".freeze,
  edit:                 "contacts/%s".freeze,
  fetch:                "contacts/%s".freeze,
  fetch_by_external_id: "contacts/getbyexternalid/%s".freeze,
  delete:               "contacts/%s".freeze,
  merge:                "contacts/merge".freeze,
  create_license:       "contacts/%s/licenses".freeze,
  edit_license:         "contacts/%s/licenses/%s".freeze,
  fetch_license:        "contacts/%s/licenses/%s".freeze,
  delete_license:       "contacts/%s/licenses/%s".freeze,
}

Constants included from API

API::FILE_UPLOAD_ATTRS, API::ROOT_URL, API::USER_AGENT

Instance Method Summary collapse

Methods included from API

#delete_request, #get_request, #post_file_request, #post_request, #put_request

Constructor Details

#initialize(client) ⇒ Contact

Returns a new instance of Contact.



41
42
43
# File 'lib/fastbound-ruby/contact.rb', line 41

def initialize(client)
  @client = client
end

Instance Method Details

#create(contact_data) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/fastbound-ruby/contact.rb', line 51

def create(contact_data)
  requires!(contact_data, CREATE_AND_EDIT_ATTRS[:required])

  endpoint = ENDPOINTS[:create]
  contact_data = standardize_body_data(contact_data, CREATE_AND_EDIT_ATTRS[:permitted])

  post_request(@client, endpoint, contact_data)
end

#create_license(contact_id, license_data) ⇒ Object



94
95
96
97
98
99
100
101
# File 'lib/fastbound-ruby/contact.rb', line 94

def create_license(contact_id, license_data)
  requires!(license_data, CREATE_AND_EDIT_LICENSE_ATTRS[:required])

  endpoint = ENDPOINTS[:create_license] % contact_id
  license_data = standardize_body_data(license_data, CREATE_AND_EDIT_LICENSE_ATTRS[:permitted])

  post_request(@client, endpoint, license_data)
end

#delete(contact_id) ⇒ Object



79
80
81
82
83
# File 'lib/fastbound-ruby/contact.rb', line 79

def delete(contact_id)
  endpoint = ENDPOINTS[:delete] % contact_id

  delete_request(@client, endpoint)
end

#delete_license(contact_id, license_id) ⇒ Object



116
117
118
119
120
# File 'lib/fastbound-ruby/contact.rb', line 116

def delete_license(contact_id, license_id)
  endpoint = ENDPOINTS[:delete_license] % [contact_id, license_id]

  delete_request(@client, endpoint)
end

#edit(contact_id, contact_data) ⇒ Object



60
61
62
63
64
65
# File 'lib/fastbound-ruby/contact.rb', line 60

def edit(contact_id, contact_data)
  endpoint = ENDPOINTS[:edit] % contact_id
  contact_data = standardize_body_data(contact_data, CREATE_AND_EDIT_ATTRS[:permitted])

  put_request(@client, endpoint, contact_data)
end

#edit_license(contact_id, license_data) ⇒ Object



103
104
105
106
107
108
# File 'lib/fastbound-ruby/contact.rb', line 103

def edit_license(contact_id, license_data)
  endpoint = ENDPOINTS[:edit_license] % contact_id
  license_data = standardize_body_data(license_data, CREATE_AND_EDIT_LICENSE_ATTRS[:permitted])

  put_request(@client, endpoint, license_data)
end

#fetch(contact_id) ⇒ Object



67
68
69
70
71
# File 'lib/fastbound-ruby/contact.rb', line 67

def fetch(contact_id)
  endpoint = ENDPOINTS[:fetch] % contact_id

  get_request(@client, endpoint)
end

#fetch_by_external_id(external_id) ⇒ Object



73
74
75
76
77
# File 'lib/fastbound-ruby/contact.rb', line 73

def fetch_by_external_id(external_id)
  endpoint = ENDPOINTS[:fetch_by_external_id] % external_id

  get_request(@client, endpoint)
end

#fetch_license(contact_id, license_id) ⇒ Object



110
111
112
113
114
# File 'lib/fastbound-ruby/contact.rb', line 110

def fetch_license(contact_id, license_id)
  endpoint = ENDPOINTS[:fetch_license] % [contact_id, license_id]

  get_request(@client, endpoint)
end

#list(params = {}) ⇒ Object



45
46
47
48
49
# File 'lib/fastbound-ruby/contact.rb', line 45

def list(params = {})
  endpoint = ENDPOINTS[:list] % convert_params_to_request_query(params)

  get_request(@client, endpoint)
end

#merge(merge_data) ⇒ Object



85
86
87
88
89
90
91
92
# File 'lib/fastbound-ruby/contact.rb', line 85

def merge(merge_data)
  requires!(merge_data, MERGE_ATTRS[:required])

  endpoint = ENDPOINTS[:merge]
  merge_data = standardize_body_data(merge_data, MERGE_ATTRS[:permitted])

  post_request(@client, endpoint, merge_data)
end