catapult.rb

 1# frozen_string_literal: true
 2
 3require "value_semantics/monkey_patched"
 4
 5class Catapult
 6	value_semantics do
 7		user String
 8		token String
 9		secret String
10		application_id String
11	end
12
13	def import(body)
14		post(
15			"phoneNumbers",
16			body: { applicationId: application_id }.merge(body)
17		)
18	end
19
20	def post(path, body:, head: {})
21		EM::HttpRequest.new(
22			mkurl(path), tls: { verify_peer: true }
23		).apost(
24			head: catapult_headers.merge(head),
25			body: body.to_json
26		)
27	end
28
29	def mkurl(path)
30		base = "https://api.catapult.inetwork.com/v1/users/#{@user}/"
31		return path if path.start_with?(base)
32		"#{base}#{path}"
33	end
34
35protected
36
37	def catapult_headers
38		{
39			"Authorization" => [@token, @secret],
40			"Content-Type" => "application/json"
41		}
42	end
43end
44
45CATAPULT = Catapult.new(**CONFIG[:catapult])