Class: TalonOne::Management::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/management/client.rb

Overview

Basic REST client for the TalonOne management API

Instance Method Summary collapse

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 = (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_applicationsObject



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 (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