Class: TalonOne::Management::Client
- Inherits:
-
Object
- Object
- TalonOne::Management::Client
- Defined in:
- lib/management/client.rb
Overview
Basic REST client for the TalonOne management API
Instance Method Summary collapse
- #create_application(params) ⇒ Object
- #create_attribute(params) ⇒ Object
- #create_campaign(application_id, params) ⇒ Object
- #delete(path) ⇒ Object
- #delete_application(application_id) ⇒ Object
- #delete_attribute(attribute_id) ⇒ Object
- #get(path) ⇒ Object
- #get_application(application_id) ⇒ Object
- #get_applications ⇒ Object
- #get_campaign(application_id, campaign_id) ⇒ Object
-
#initialize(config = {}) ⇒ Client
constructor
A new instance of Client.
- #login(email, password) ⇒ Object
- #post(path, payload) ⇒ Object
- #put(path, payload) ⇒ Object
- #request(method, path, payload = nil) ⇒ Object
- #update_campaign(application_id, campaign_id, params) ⇒ Object
- #update_campaign_status(application_id, campaign_id, campaign_status) ⇒ Object
- #update_ruleset_for_campaign(application_id, campaign_id, params) ⇒ Object
Constructor Details
#initialize(config = {}) ⇒ Client
Returns a new instance of Client.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/management/client.rb', line 5 def initialize(config = {}) @endpoint = URI( config[:endpoint] || ENV["TALONONE_ENDPOINT"] || "https://app.talon.one" ) @endpoint.path = @endpoint.path.sub(/\/+$/, '') @http = Net::HTTP.new(@endpoint.host, @endpoint.port) @http.use_ssl = @endpoint.scheme == "https" @token = config[:token] || ENV["TALONONE_SESSION_TOKEN"] if !@token email = config[:email] || ENV["TALONONE_EMAIL"] password = config[:password] || ENV["TALONONE_PASSWORD"] if email && password res = login(email, password) @token = res["token"] end end end |
Instance Method Details
#create_application(params) ⇒ Object
60 61 62 |
# File 'lib/management/client.rb', line 60 def create_application(params) post "/v1/applications", params end |
#create_attribute(params) ⇒ Object
102 103 104 |
# File 'lib/management/client.rb', line 102 def create_attribute(params) post "/v1/attributes", params end |
#create_campaign(application_id, params) ⇒ Object
76 77 78 |
# File 'lib/management/client.rb', line 76 def create_campaign(application_id, params) post "/v1/applications/#{application_id}/campaigns", params end |
#delete(path) ⇒ Object
52 53 54 |
# File 'lib/management/client.rb', line 52 def delete(path) request "Delete", path end |
#delete_application(application_id) ⇒ Object
68 69 70 |
# File 'lib/management/client.rb', line 68 def delete_application(application_id) delete "/v1/applications/#{application_id}" end |
#delete_attribute(attribute_id) ⇒ Object
106 107 108 |
# File 'lib/management/client.rb', line 106 def delete_attribute(attribute_id) delete "/v1/attributes/#{attribute_id}" end |
#get(path) ⇒ Object
40 41 42 |
# File 'lib/management/client.rb', line 40 def get(path) request "Get", path end |
#get_application(application_id) ⇒ Object
64 65 66 |
# File 'lib/management/client.rb', line 64 def get_application(application_id) get "/v1/applications/#{application_id}" end |
#get_applications ⇒ Object
72 73 74 |
# File 'lib/management/client.rb', line 72 def get_applications get "/v1/applications" end |
#get_campaign(application_id, campaign_id) ⇒ Object
80 81 82 |
# File 'lib/management/client.rb', line 80 def get_campaign(application_id, campaign_id) get "/v1/applications/#{application_id}/campaigns/#{campaign_id}" end |
#login(email, password) ⇒ Object
56 57 58 |
# File 'lib/management/client.rb', line 56 def login(email, password) post "/v1/sessions", {"email" => email, "password" => password} end |
#post(path, payload) ⇒ Object
48 49 50 |
# File 'lib/management/client.rb', line 48 def post(path, payload) request "Post", path, payload end |
#put(path, payload) ⇒ Object
44 45 46 |
# File 'lib/management/client.rb', line 44 def put(path, payload) request "Put", path, payload end |
#request(method, path, payload = nil) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/management/client.rb', line 23 def request(method, path, payload = nil) req = Net::HTTP.const_get(method).new(@endpoint.path + path) if @token req["Authorization"] = "Bearer #{@token}" end if payload req.body = payload.to_json req['Content-Type'] = 'application/json' end res = @http.request(req) if res.code[0] == '2' res.body && JSON.parse(res.body) else raise "#{method.upcase} #{path} -> #{res.code} #{res.body}" end end |
#update_campaign(application_id, campaign_id, params) ⇒ Object
84 85 86 |
# File 'lib/management/client.rb', line 84 def update_campaign(application_id, campaign_id, params) put "/v1/applications/#{application_id}/campaigns/#{campaign_id}", params end |
#update_campaign_status(application_id, campaign_id, campaign_status) ⇒ Object
96 97 98 99 100 |
# File 'lib/management/client.rb', line 96 def update_campaign_status(application_id, campaign_id, campaign_status) campaign = get_campaign(application_id, campaign_id) campaign["state"] = campaign_status update_campaign(application_id, campaign_id, campaign) end |
#update_ruleset_for_campaign(application_id, campaign_id, params) ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/management/client.rb', line 88 def update_ruleset_for_campaign(application_id, campaign_id, params) ruleset = post "/v1/applications/#{application_id}/campaigns/#{campaign_id}/rulesets", params campaign = get_campaign(application_id, campaign_id) campaign["activeRulesetId"] = ruleset["id"] update_campaign(application_id, campaign_id, campaign) return ruleset end |