# frozen_string_literal: true
require "value_semantics/monkey_patched"
class Catapult
value_semantics do
user String
token String
secret String
application_id String
end
def import(body)
post(
"phoneNumbers",
body: { applicationId: application_id }.merge(body)
)
end
def post(path, body:, head: {})
EM::HttpRequest.new(
mkurl(path), tls: { verify_peer: true }
).apost(
head: catapult_headers.merge(head),
body: body.to_json
)
end
def mkurl(path)
base = "https://api.catapult.inetwork.com/v1/users/#{@user}/"
return path if path.start_with?(base)
"#{base}#{path}"
end
protected
def catapult_headers
{
"Authorization" => [@token, @secret],
"Content-Type" => "application/json"
}
end
end
CATAPULT = Catapult.new(**CONFIG[:catapult])