Class: WebMerge::API
- Inherits:
-
Object
- Object
- WebMerge::API
- Defined in:
- lib/web_merge/api.rb
Instance Method Summary collapse
-
#create_document(form_data, &block) ⇒ Object
DOCUMENTS.
- #delete(url_string, &block) ⇒ Object
- #delete_document(doc_id, &block) ⇒ Object
- #download(options) ⇒ Object
- #get(url_string, &block) ⇒ Object
- #get_document(doc_id, &block) ⇒ Object
- #get_document_fields(doc_id, &block) ⇒ Object
- #get_documents(&block) ⇒ Object
- #get_route(route_id, &block) ⇒ Object
- #get_route_fields(route_id, &block) ⇒ Object
-
#get_routes(&block) ⇒ Object
ROUTES.
-
#initialize(options = {}) ⇒ API
constructor
A new instance of API.
-
#merge_document(doc_id, doc_key, field_mappings, options = {}, &block) ⇒ Object
doc_id The Document ID example: 436346 doc_key The Document Key example: firm3 field_mappings The data to be merged in name/value pairs example: { name: “John Smith”, occupation: “Plumber” }.
- #merge_route(route_id, route_key, field_mappings, options = {}, &block) ⇒ Object
-
#post(url_string, form_data, &block) ⇒ Object
internal helpers.
- #put(url_string, form_data, &block) ⇒ Object
- #request(verb, url_string, form_data = nil, &block) ⇒ Object
- #test(options) ⇒ Object
- #true?(value) ⇒ Boolean
- #update_document(doc_id, form_data, &block) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ API
4 5 6 7 8 9 |
# File 'lib/web_merge/api.rb', line 4 def initialize(={}) @api_secret = [:secret] || ENV['WEB_MERGE_API_SECRET'] @api_key = [:key] || ENV['WEB_MERGE_API_KEY'] @force_test_mode = [:force_test_mode] || ENV['WEB_MERGE_FORCE_TEST_MODE'] @verbose = [:verbose] || false end |
Instance Method Details
#create_document(form_data, &block) ⇒ Object
DOCUMENTS
14 15 16 |
# File 'lib/web_merge/api.rb', line 14 def create_document(form_data, &block) post("#{WebMerge::Constants::DOCUMENTS}", form_data, &block) end |
#delete(url_string, &block) ⇒ Object
82 83 84 |
# File 'lib/web_merge/api.rb', line 82 def delete(url_string, &block) request("delete", url_string, &block) end |
#delete_document(doc_id, &block) ⇒ Object
22 23 24 |
# File 'lib/web_merge/api.rb', line 22 def delete_document(doc_id, &block) delete("#{WebMerge::Constants::DOCUMENTS}/#{doc_id}", &block) end |
#download(options) ⇒ Object
114 115 116 |
# File 'lib/web_merge/api.rb', line 114 def download() [:download] && true?([:download]) ? 1 : 0 end |
#get(url_string, &block) ⇒ Object
86 87 88 |
# File 'lib/web_merge/api.rb', line 86 def get(url_string, &block) request("get", url_string, &block) end |
#get_document(doc_id, &block) ⇒ Object
30 31 32 |
# File 'lib/web_merge/api.rb', line 30 def get_document(doc_id, &block) get("#{WebMerge::Constants::DOCUMENTS}/#{doc_id}", &block) end |
#get_document_fields(doc_id, &block) ⇒ Object
34 35 36 |
# File 'lib/web_merge/api.rb', line 34 def get_document_fields(doc_id, &block) get("#{WebMerge::Constants::DOCUMENTS}/#{doc_id}/fields", &block) end |
#get_documents(&block) ⇒ Object
26 27 28 |
# File 'lib/web_merge/api.rb', line 26 def get_documents(&block) get("#{WebMerge::Constants::DOCUMENTS}", &block) end |
#get_route(route_id, &block) ⇒ Object
61 62 63 |
# File 'lib/web_merge/api.rb', line 61 def get_route(route_id, &block) get("#{WebMerge::Constants::ROUTES}/#{route_id}", &block) end |
#get_route_fields(route_id, &block) ⇒ Object
65 66 67 |
# File 'lib/web_merge/api.rb', line 65 def get_route_fields(route_id, &block) get("#{WebMerge::Constants::ROUTES}/#{route_id}/fields", &block) end |
#get_routes(&block) ⇒ Object
ROUTES
57 58 59 |
# File 'lib/web_merge/api.rb', line 57 def get_routes(&block) get("#{WebMerge::Constants::ROUTES}", &block) end |
#merge_document(doc_id, doc_key, field_mappings, options = {}, &block) ⇒ Object
doc_id The Document ID
example: 436346
doc_key The Document Key
example: firm3
field_mappings The data to be merged in name/value pairs
example: { name: "John Smith", occupation: "Plumber" }
options Merges the document in “test mode”
default: false.
options Will return the merged document in response
default: false
50 51 52 |
# File 'lib/web_merge/api.rb', line 50 def merge_document(doc_id, doc_key, field_mappings, = {}, &block) post("#{WebMerge::Constants::MERGE_ENDPOINT}/#{doc_id}/#{doc_key}?download=#{download()}&test=#{test()}", field_mappings, &block) end |
#merge_route(route_id, route_key, field_mappings, options = {}, &block) ⇒ Object
69 70 71 |
# File 'lib/web_merge/api.rb', line 69 def merge_route(route_id, route_key, field_mappings, = {}, &block) post("#{WebMerge::Constants::ROUTE_ENDPOINT}/#{route_id}/#{route_key}?download=#{download()}&test=#{test()}", field_mappings, &block) end |
#post(url_string, form_data, &block) ⇒ Object
internal helpers
74 75 76 |
# File 'lib/web_merge/api.rb', line 74 def post(url_string, form_data, &block) request("post", url_string, form_data, &block) end |
#put(url_string, form_data, &block) ⇒ Object
78 79 80 |
# File 'lib/web_merge/api.rb', line 78 def put(url_string, form_data, &block) request("put", url_string, form_data, &block) end |
#request(verb, url_string, form_data = nil, &block) ⇒ Object
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/web_merge/api.rb', line 90 def request(verb, url_string, form_data = nil, &block) parsed_response_body = nil uri = URI.parse(url_string) Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| action_klass = "Net::HTTP::#{verb.camelize}".constantize request = action_klass.new(uri.request_uri) request.basic_auth(@api_key, @api_secret) request.set_form_data(form_data) if form_data.present? http.request(request) do |response| if block_given? return block.call(response) else begin parsed_response_body = JSON.parse(response.body) rescue parsed_response_body = "Unable to parse response body as JSON perhaps you'd like to pass a block to process the response?" parsed_response_body << "#{response.body}" end end end end parsed_response_body end |
#test(options) ⇒ Object
118 119 120 |
# File 'lib/web_merge/api.rb', line 118 def test() true?(@force_test_mode) || ([:test] && true?([:test])) ? 1 : 0 end |
#true?(value) ⇒ Boolean
122 123 124 |
# File 'lib/web_merge/api.rb', line 122 def true?(value) value.to_s.match(/(true|t|yes|y|1)$/i).present? end |