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])