balihoo_lpc_client 0.2.0.pre → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88249159407bfae41a2858ed1fb84361ebe7c31b
4
- data.tar.gz: 60d4affab49cc424a4a08b9b6ceccbbb5783a412
3
+ metadata.gz: a8e2fcc6ac94fd1400fb46186ef93ed9033524fc
4
+ data.tar.gz: 927f056161496be58a5b38cb97f53bccfc9d9041
5
5
  SHA512:
6
- metadata.gz: 2cc9c620a547d2d172d99f982e7611fc658545cb10389d9260c2df26495518b968d42804d05646d86c1502bf2ece979951133e54b67d7e02dba7edd8800ebd6a
7
- data.tar.gz: 430ab3c8f92282ee721c5cd54a4f226426aeab20a513b0971caa3d464cd9ef98e8b0ced5107101a1f011153aa2432f71bebca0a792d1a44f2e425a7f09a7f19e
6
+ metadata.gz: acbcf8533b7e57780381e479a710e0a5d9b1b347c154d18fb38db328056e531944ef1855ee51a3ea52c7ae7b8b4dd24d88b2518373b6d97fca98b3d20a184938
7
+ data.tar.gz: 4b248eff98af0ec02d81c98df87c79b1dde93073db0089d212e245a34c4d9109e7350d2f5fbf06b85219ce585b95da6624a8ddfc1094eba1835bc4efbcd8377a
data/README.md CHANGED
@@ -27,19 +27,261 @@ Or install it yourself as:
27
27
 
28
28
  ## Usage
29
29
 
30
- TODO: Write usage instructions here
30
+ Using the gem is quite simple.
31
+
32
+ ### Configuration
33
+
34
+ First we must create a Configuration object.
35
+
36
+ ```ruby
37
+ opts = {
38
+ brand_key: 'brand_key',
39
+ api_key: 'api_key',
40
+ location_key: 'location_key', # optional more below
41
+ user_id: 'brand_key', # currently not used, Balihoo suggests setting same as brand_key
42
+ group_id: 'brand_key' # currently not used, Balihoo suggests setting same as brand_key
43
+ }
44
+ config = BalihooLpcClient::Configuration.create(opts)
45
+ ```
46
+
47
+ The `location_key` is an optional parameter. When not given the api will require
48
+ an array of locations to be passed to the api endpoints. This is explained
49
+ further below.
50
+
51
+ ### Initialization
52
+
53
+ Once we have the config created we can use that to create an instance of the Api
54
+ object and authenticate with Balihoo.
55
+
56
+ ```ruby
57
+ api = BalihooLpcClient::Api.new(config: config)
58
+ api.authenticate!
59
+ ```
60
+
61
+ The `authenticate!` method will call out to Balihoo and set the `client_id` and
62
+ `client_api_key` on the config object for you.
63
+
64
+ ```ruby
65
+ config.client_id # => <client_id from Balihoo>
66
+ config.client_api_key # => <client_api_key from Balihoo>
67
+ ```
68
+
69
+ Once we have authenticated we can begin to call the various endpoints.
70
+
71
+ ### Endpoints
72
+
73
+ #### Common Options
74
+
75
+ There are a set of common options that can be sent to an endpoint. These are
76
+ always sent as the params argument to an endpoint.
77
+
78
+ ```ruby
79
+ api.campaigns(params: options)
80
+ ```
81
+
82
+ The options are as follows:
83
+
84
+ - `from:` A start date to filter results, with the format `yyyy-mm-dd`
85
+ - `to:` An end date to filter results, with the format `yyyy-mm-dd`
86
+ - `locations:` An array of locations (Use location key). _*If location_key was
87
+ given during authentication this should not be used.*_
88
+ - `tactic_id:` Tactic id to filter results. Only supported with
89
+ `get_report_data` endpoint.
90
+
91
+ #### Campaigns
92
+
93
+ If you passed a `location_key` to the config then you can simply call
94
+ `campaigns` on the api object.
95
+
96
+ ```ruby
97
+ api.campaigns # => Array[Response::Campaign]
98
+ ```
99
+
100
+ If the `location_key` was not passed then you must pass an array of locations to
101
+ get campaigns for.
102
+
103
+ ```ruby
104
+ # Single location requested
105
+ campaigns = api.campaigns(params: { locations: [1] })
106
+ campaigns # => Array[Response::Campaign]
107
+
108
+ # Multiple locations requested
109
+ campaigns = api.campaigns(params: { locations: [1,2] })
110
+ campaigns # => { "1" => Array[Response::Campaign], "2" => Array[Response::Campaign] }
111
+ ```
112
+
113
+ #### Tactics
114
+
115
+ ```ruby
116
+ tactics = api.tactics(campaign_id: 1)
117
+ tactics # => Array[BalihooLpcClient::Response::Tactic]
118
+
119
+ # Without location_key using locations: param
120
+ # Single location requested
121
+ tactics = api.tactics(campaign_id: 1, params: { locations: [1] })
122
+ tactics # => Array[BalihooLpcClient::Response::Tactic]
123
+
124
+ # Multiple locations requested
125
+ tactics = api.tactics(campaign_id: 1, params: { locations: [1,2] })
126
+ tactics # => { "1" => Array[Response::Tactic], "2" => Array[Response::Tactic] }
127
+ ```
128
+
129
+ #### Campaigns with Tactics
130
+
131
+ ```ruby
132
+ response = api.campaigns_with_tactics # => Array[BalihooLpcClient::Response::Campaign]
133
+ response.tactics # => Array[BalihooLpcClient::Response::Tactic]
134
+
135
+ # Without location_key using locations: param
136
+ # Single location requested
137
+ campaigns = api.campaigns_with_tactics(params: { locations: [1] })
138
+ campaigns # => Array[BalihooLpcClient::Response::Campaign]
139
+ campaigns.first.tactics # => Array[BalihooLpcClient::Response::Tactic]
140
+
141
+ # Multiple locations requested
142
+ campaigns = api.campaigns_with_tactics(params: { locations: [1,2] })
143
+ campaigns # => { "1" => Array[Response::Campaign], "2" => Array[Response::Campaign] }
144
+ ```
145
+
146
+ #### Metrics
147
+
148
+ ```ruby
149
+ metrics = api.metrics(tactic_id: 1)
150
+ metrics # => Response::Metric
151
+
152
+ # Without location_key using locations: param
153
+ # Single location requested
154
+ metrics = api.metrics(tactic_id: 1, params: { locations: [1] })
155
+ metrics # => Response::Metric
156
+
157
+ # Multiple locations requested
158
+ metrics = api.metrics(tactic_id: 1, params: { locations: [1,2] })
159
+ metrics # => {"1" => Response::Metric, "2" => Response::Metric}
160
+ ```
161
+
162
+ #### Website Metrics
163
+
164
+ ```ruby
165
+ website_metrics = api.website_metrics
166
+ website_metrics # => Response::WebsiteMetric
167
+
168
+ # Without location_key using locations: param
169
+ # Single location requested
170
+ website_metrics = api.website_metrics(params: { locations: [1] })
171
+ website_metrics # => Response::WebsiteMetric
172
+
173
+ # Multiple locations requested
174
+ website_metrics = api.website_metrics(params: { locations: [1,2] })
175
+ website_metrics # => {"1" => Response::WebsiteMetric, "2" => Response::WebsiteMetric}
176
+ ```
177
+
178
+ #### Report Data
179
+
180
+ **This endpoint has not been implemented.**
181
+
182
+ #### Profile Data
183
+
184
+ **This endpoint has not been implemented.**
185
+
186
+ ### Response Objects
187
+
188
+ #### BalihooLpcClient::Response::Authentication
189
+
190
+ ```ruby
191
+ auth.client_id # => String (GUID)
192
+ auth.client_api_key # => String (GUID)
193
+ ```
194
+
195
+ #### BalihooLpcClient::Response::Campaign
196
+
197
+ ```ruby
198
+ campaign.id # => Fixnum
199
+ campaign.title # => String
200
+ campaign.description # => String
201
+ campaign.start # => Date
202
+ campaign.end # => Date
203
+ campaign.status # => String
204
+ campaign.tactics # => Array[BalihooLpcClient::Response::Tactic]
205
+ ```
206
+
207
+ _Note: `tactics` is only populated if `campaigns_with_tactics` is called._
208
+
209
+ #### BalihooLpcClient::Response::Tactic
210
+
211
+ ```ruby
212
+ tactic.id # => Fixnum
213
+ tactic.title # => String
214
+ tactic.start # => Date
215
+ tactic.end # => Date
216
+ tactic.channel # => String
217
+ tactic.description # => String
218
+ tactic.creative # => String - this is a url
219
+ ```
220
+
221
+ #### BalihooLpcClient::Response::Metric
222
+
223
+ ```ruby
224
+ metric.tactic_ids # => Array[Int]
225
+ metric.channel # => String
226
+ metric.clicks # => Fixnum
227
+ metric.spend # Float
228
+ metric.impressions # => Fixnum
229
+ metric.ctr # Float
230
+ metric.avg_cpc # Float
231
+ metric.avg_cpm # Float
232
+ ```
233
+
234
+ #### BalihooLpcClient::Response::WebsiteMetric
235
+
236
+ ```ruby
237
+ website_metric.visits # => Response::WebsiteMetricVisits
238
+ website_metric.leads # => Response::WebsiteMetricLeads
239
+ ```
240
+
241
+ #### BalihooLpcClient::Response::WebsiteMetricVisits
242
+
243
+ ```ruby
244
+ visits.total # => Fixnum
245
+ visits.organic # => Fixnum
246
+ visits.direct # => Fixnum
247
+ visits.referral # => Fixnum
248
+ visits.paid # => Fixnum
249
+ visits.new_visits_percent # => Float
250
+ ```
251
+
252
+ #### BalihooLpcClient::Response::WebsiteMetricLeads
253
+
254
+ ```ruby
255
+ leads.total # => Fixnum
256
+ leads.total_web # => Fixnum
257
+ leads.total_phone # => Fixnum
258
+ leads.organic_web # => Fixnum
259
+ leads.paid_web # => Fixnum
260
+ leads.organic_phone # => Fixnum
261
+ leads.paid_phone # => Fixnum
262
+ ```
31
263
 
32
264
  ## Development
33
265
 
34
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
266
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
267
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
268
+ prompt that will allow you to experiment.
35
269
 
36
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
270
+ To install this gem onto your local machine, run `bundle exec rake install`. To
271
+ release a new version, update the version number in `version.rb`, and then run
272
+ `bundle exec rake release`, which will create a git tag for the version, push
273
+ git commits and tags, and push the `.gem` file to
274
+ [rubygems.org](https://rubygems.org).
37
275
 
38
276
  ## Contributing
39
277
 
40
- Bug reports and pull requests are welcome on GitHub at https://github.com/riverock/balihoo_lpc. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
278
+ Bug reports and pull requests are welcome on GitHub at
279
+ https://github.com/riverock/balihoo_lpc. This project is intended to be a safe,
280
+ welcoming space for collaboration, and contributors are expected to adhere to
281
+ the [Contributor Covenant](contributor-covenant.org) code of conduct.
41
282
 
42
283
 
43
284
  ## License
44
285
 
45
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
286
+ The gem is available as open source under the terms of the
287
+ [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,53 @@
1
+ module BalihooLpcClient
2
+ class Api
3
+ attr_accessor :config
4
+
5
+ def initialize(config:)
6
+ self.config = config
7
+ end
8
+
9
+ def authenticate!
10
+ auth = Request::Authentication.new(api: self)
11
+ auth.authenticate!
12
+ end
13
+
14
+ def campaigns(params: {})
15
+ validate_params_and_fetch!(params: params, class: Request::Campaigns)
16
+ end
17
+
18
+ def tactics(campaign_id:, params: {})
19
+ validate_params_and_fetch!(params: params, campaign_id: campaign_id, class: Request::Tactics)
20
+ end
21
+
22
+ def campaigns_with_tactics(params: {})
23
+ validate_params_and_fetch!(params: params, class: Request::CampaignsWithTactics)
24
+ end
25
+
26
+ def metrics(tactic_id:, params: {})
27
+ validate_params_and_fetch!(params: params, tactic_id: tactic_id, class: Request::Metrics)
28
+ end
29
+
30
+ def website_metrics(params: {})
31
+ validate_params_and_fetch!(params: params, class: Request::WebsiteMetrics)
32
+ end
33
+
34
+ private
35
+
36
+ def validate_params_and_fetch!(**args)
37
+ locations = args[:params][:locations]
38
+
39
+ if config.location_key.nil? && locations.nil?
40
+ raise ApiOptionError, 'must give params[:locations] since no location_key given'
41
+ elsif config.location_key.nil? && !locations.is_a?(Array)
42
+ raise ApiOptionError, 'locations must be an array'
43
+ end
44
+
45
+ fetch(**args)
46
+ end
47
+
48
+ def fetch(**args)
49
+ klass = args.delete(:class)
50
+ klass.new(api: self, **args).fetch
51
+ end
52
+ end
53
+ end
@@ -3,14 +3,15 @@ module BalihooLpcClient
3
3
  attr_accessor :api_base, :api_version, :brand_key, :api_key, :location_key,
4
4
  :user_id, :group_id, :client_id, :client_api_key
5
5
 
6
- def initialize
7
- defaults.each do |k, v|
6
+ def initialize(**args)
7
+ opts = defaults.merge(args)
8
+ opts.each do |k, v|
8
9
  self.send("#{k}=", v)
9
10
  end
10
11
  end
11
12
 
12
- def self.create
13
- config = new
13
+ def self.create(**args)
14
+ config = new(**args)
14
15
  yield config if block_given?
15
16
  config
16
17
  end
@@ -3,22 +3,73 @@ module BalihooLpcClient
3
3
  class ApiBase < Base
4
4
  attr_accessor :params
5
5
 
6
- def initialize(connection:, params:)
7
- super(connection: connection)
6
+ def initialize(api:, params:)
7
+ super(api: api)
8
8
  self.params = params
9
9
  end
10
10
 
11
11
  private
12
12
 
13
+ def multiple_locations?
14
+ if locations_expected?
15
+ params[:locations].count > 1
16
+ else
17
+ false
18
+ end
19
+ end
20
+
21
+ def locations_expected?
22
+ config.location_key.nil? || config.location_key.strip.empty?
23
+ end
24
+
13
25
  def opts
14
26
  {
15
27
  headers: {
16
- 'X-ClientId' => connection.config.client_id,
17
- 'X-ClientApiKey' => connection.config.client_api_key
28
+ 'X-ClientId' => config.client_id,
29
+ 'X-ClientApiKey' => config.client_api_key
18
30
  },
19
- query: params
31
+ query: sanitized_params
20
32
  }
21
33
  end
34
+
35
+ def sanitized_params
36
+ if locations_expected?
37
+ sanitized = params.dup
38
+ sanitized[:locations] = sanitized[:locations].join(?,)
39
+ sanitized
40
+ else
41
+ params.delete(:locations)
42
+ params
43
+ end
44
+ end
45
+
46
+ def handle_response(response:, klass:, mappable: true)
47
+ if multiple_locations?
48
+ multiple_locations(response: response, klass: klass, mappable: mappable)
49
+ else
50
+ single_location(response: response, klass: klass, mappable: mappable)
51
+ end
52
+ end
53
+
54
+ def multiple_locations(response:, klass:, mappable:)
55
+ response.inject({}) do |h, pair|
56
+ if mappable
57
+ h.merge({ pair[0] => pair[1].map { |v| klass.new(v) } })
58
+ else
59
+ h.merge({ pair[0] => klass.new(pair[1]) })
60
+ end
61
+ end
62
+ end
63
+
64
+ def single_location(response:, klass:, mappable:)
65
+ if mappable
66
+ response.map do |result|
67
+ klass.new result
68
+ end
69
+ else
70
+ klass.new response
71
+ end
72
+ end
22
73
  end
23
74
  end
24
75
  end
@@ -12,11 +12,11 @@ module BalihooLpcClient
12
12
  def opts
13
13
  {
14
14
  query: {
15
- brandKey: connection.config.brand_key,
16
- apiKey: connection.config.api_key,
17
- locationKey: connection.config.location_key,
18
- userId: connection.config.user_id,
19
- groupId: connection.config.group_id
15
+ brandKey: api.config.brand_key,
16
+ apiKey: api.config.api_key,
17
+ locationKey: api.config.location_key,
18
+ userId: api.config.user_id,
19
+ groupId: api.config.group_id
20
20
  }
21
21
  }
22
22
  end
@@ -3,17 +3,17 @@ module BalihooLpcClient
3
3
  class Base
4
4
  include HTTParty
5
5
 
6
- attr_accessor :connection
6
+ attr_accessor :api
7
7
 
8
- def initialize(connection:)
9
- self.connection = connection
8
+ def initialize(api:)
9
+ self.api = api
10
10
  self.class.base_uri config.url
11
11
  end
12
12
 
13
13
  private
14
14
 
15
15
  def config
16
- connection.config
16
+ api.config
17
17
  end
18
18
 
19
19
  def handle_errors_with(klass:, response:)
@@ -2,9 +2,8 @@ module BalihooLpcClient
2
2
  module Request
3
3
  class Campaigns < ApiBase
4
4
  def fetch
5
- self.class.get('/campaigns', opts).parsed_response.map do |result|
6
- Response::Campaign.new result
7
- end
5
+ response = self.class.get('/campaigns', opts).parsed_response
6
+ handle_response(response: response, klass: Response::Campaign)
8
7
  end
9
8
  end
10
9
  end
@@ -2,9 +2,8 @@ module BalihooLpcClient
2
2
  module Request
3
3
  class CampaignsWithTactics < ApiBase
4
4
  def fetch
5
- self.class.get('/campaignswithtactics', opts).parsed_response.map do |result|
6
- Response::Campaign.new result
7
- end
5
+ response = self.class.get('/campaignswithtactics', opts).parsed_response
6
+ handle_response(response: response, klass: Response::Campaign)
8
7
  end
9
8
  end
10
9
  end
@@ -3,14 +3,14 @@ module BalihooLpcClient
3
3
  class Metrics < ApiBase
4
4
  attr_accessor :tactic_id
5
5
 
6
- def initialize(connection:, params:, tactic_id:)
7
- super(connection: connection, params: params)
6
+ def initialize(api:, params:, tactic_id:)
7
+ super(api: api, params: params)
8
8
  self.tactic_id = tactic_id
9
9
  end
10
10
 
11
11
  def fetch
12
- r = self.class.get("/tactic/#{tactic_id}/metrics", opts).parsed_response
13
- Response::Metric.new r
12
+ response = self.class.get("/tactic/#{tactic_id}/metrics", opts).parsed_response
13
+ handle_response(response: response, klass: Response::Metric, mappable: false)
14
14
  end
15
15
  end
16
16
  end
@@ -0,0 +1,22 @@
1
+ module BalihooLpcClient
2
+ module Request
3
+ class Tactics < ApiBase
4
+ attr_accessor :campaign_id
5
+
6
+ def initialize(api:, params:, campaign_id:)
7
+ super(api: api, params: params)
8
+ self.campaign_id = campaign_id
9
+ end
10
+
11
+ def fetch
12
+ response = self.class.get("/campaign/#{campaign_id}/tactics", opts).parsed_response
13
+
14
+ if multiple_locations?
15
+ multiple_locations(response: response, klass: Response::Tactic, mappable: true)
16
+ else
17
+ single_location(response: response['tactics'], klass: Response::Tactic, mappable: true)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,10 @@
1
+ module BalihooLpcClient
2
+ module Request
3
+ class WebsiteMetrics < ApiBase
4
+ def fetch
5
+ response = self.class.get("/websitemetrics", opts).parsed_response
6
+ handle_response(response: response, klass: Response::WebsiteMetric, mappable: false)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -7,8 +7,8 @@ module BalihooLpcClient
7
7
  property :id, from: 'id'
8
8
  property :title, from: 'title'
9
9
  property :description, from: 'description'
10
- property :start, from: 'start'
11
- property :end, from: 'end'
10
+ property :start, from: 'start', with: -> (v) { Date.parse(v) }
11
+ property :end, from: 'end', with: -> (v) { Date.parse(v) }
12
12
  property :status, from: 'status'
13
13
  property :tactics, from: 'tactics', coerce: Array[Tactic]
14
14
  end
@@ -3,7 +3,7 @@ module BalihooLpcClient
3
3
  class Metric < Hashie::Dash
4
4
  include Hashie::Extensions::Dash::PropertyTranslation
5
5
 
6
- property :tactic_ids, from: 'tacticIds', coerce: Array
6
+ property :tactic_ids, from: 'tacticIds'
7
7
  property :channel, from: 'channel'
8
8
  property :clicks, from: 'clicks'
9
9
  property :spend, from: 'spend'
@@ -2,11 +2,11 @@ module BalihooLpcClient
2
2
  module Response
3
3
  class Tactic < Hashie::Dash
4
4
  include Hashie::Extensions::Dash::PropertyTranslation
5
-
5
+
6
6
  property :id, from: 'id'
7
7
  property :title, from: 'title'
8
- property :start, from: 'start'
9
- property :end, from: 'end'
8
+ property :start, from: 'start', with: -> (v) { Date.parse(v) }
9
+ property :end, from: 'end', with: -> (v) { Date.parse(v) }
10
10
  property :channel, from: 'channel'
11
11
  property :description, from: 'description'
12
12
  property :creative, from: 'creative'
@@ -0,0 +1,11 @@
1
+ module BalihooLpcClient
2
+ module Response
3
+ class WebsiteMetric < Hashie::Dash
4
+ include Hashie::Extensions::Dash::PropertyTranslation
5
+ include Hashie::Extensions::Dash::Coercion
6
+
7
+ property :visits, from: 'visits', coerce: WebsiteMetricVisits
8
+ property :leads, from: 'leads', coerce: WebsiteMetricLeads
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module BalihooLpcClient
2
+ module Response
3
+ class WebsiteMetricLeads < Hashie::Dash
4
+ include Hashie::Extensions::Dash::PropertyTranslation
5
+
6
+ property :total, from: 'total'
7
+ property :total_web, from: 'totalWeb'
8
+ property :total_phone, from: 'totalPhone'
9
+ property :organic_web, from: 'organicWeb'
10
+ property :paid_web, from: 'paidWeb'
11
+ property :organic_phone, from: 'organicPhone'
12
+ property :paid_phone, from: 'paidPhone'
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module BalihooLpcClient
2
+ module Response
3
+ class WebsiteMetricVisits < Hashie::Dash
4
+ include Hashie::Extensions::Dash::PropertyTranslation
5
+
6
+ property :total, from: 'total'
7
+ property :organic, from: 'organic'
8
+ property :direct, from: 'direct'
9
+ property :referral, from: 'referral'
10
+ property :paid, from: 'paid'
11
+ property :new_visits_percent, from: 'newVisitsPercent'
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module BalihooLpcClient
2
- VERSION = "0.2.0.pre"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -3,17 +3,22 @@ require 'hashie'
3
3
 
4
4
  require 'balihoo_lpc_client/version'
5
5
  require 'balihoo_lpc_client/configuration'
6
- require 'balihoo_lpc_client/connection'
6
+ require 'balihoo_lpc_client/api'
7
7
  require 'balihoo_lpc_client/request/base'
8
8
  require 'balihoo_lpc_client/request/api_base'
9
9
  require 'balihoo_lpc_client/request/authentication'
10
10
  require 'balihoo_lpc_client/request/campaigns'
11
11
  require 'balihoo_lpc_client/request/campaigns_with_tactics'
12
12
  require 'balihoo_lpc_client/request/metrics'
13
+ require 'balihoo_lpc_client/request/tactics'
14
+ require 'balihoo_lpc_client/request/website_metrics'
13
15
  require 'balihoo_lpc_client/response/authentication'
14
16
  require 'balihoo_lpc_client/response/tactic'
15
17
  require 'balihoo_lpc_client/response/campaign'
16
18
  require 'balihoo_lpc_client/response/metric'
19
+ require 'balihoo_lpc_client/response/website_metric_visits'
20
+ require 'balihoo_lpc_client/response/website_metric_leads'
21
+ require 'balihoo_lpc_client/response/website_metric'
17
22
 
18
23
  module BalihooLpcClient
19
24
  class BalihooLpcError < StandardError; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balihoo_lpc_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JD Guzman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-03-05 00:00:00.000000000 Z
12
+ date: 2016-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
@@ -159,18 +159,23 @@ files:
159
159
  - bin/console
160
160
  - bin/setup
161
161
  - lib/balihoo_lpc_client.rb
162
+ - lib/balihoo_lpc_client/api.rb
162
163
  - lib/balihoo_lpc_client/configuration.rb
163
- - lib/balihoo_lpc_client/connection.rb
164
164
  - lib/balihoo_lpc_client/request/api_base.rb
165
165
  - lib/balihoo_lpc_client/request/authentication.rb
166
166
  - lib/balihoo_lpc_client/request/base.rb
167
167
  - lib/balihoo_lpc_client/request/campaigns.rb
168
168
  - lib/balihoo_lpc_client/request/campaigns_with_tactics.rb
169
169
  - lib/balihoo_lpc_client/request/metrics.rb
170
+ - lib/balihoo_lpc_client/request/tactics.rb
171
+ - lib/balihoo_lpc_client/request/website_metrics.rb
170
172
  - lib/balihoo_lpc_client/response/authentication.rb
171
173
  - lib/balihoo_lpc_client/response/campaign.rb
172
174
  - lib/balihoo_lpc_client/response/metric.rb
173
175
  - lib/balihoo_lpc_client/response/tactic.rb
176
+ - lib/balihoo_lpc_client/response/website_metric.rb
177
+ - lib/balihoo_lpc_client/response/website_metric_leads.rb
178
+ - lib/balihoo_lpc_client/response/website_metric_visits.rb
174
179
  - lib/balihoo_lpc_client/version.rb
175
180
  homepage: https://github.com/riverock/balihoo_lpc
176
181
  licenses:
@@ -188,9 +193,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
188
193
  version: '0'
189
194
  required_rubygems_version: !ruby/object:Gem::Requirement
190
195
  requirements:
191
- - - ">"
196
+ - - ">="
192
197
  - !ruby/object:Gem::Version
193
- version: 1.3.1
198
+ version: '0'
194
199
  requirements: []
195
200
  rubyforge_project:
196
201
  rubygems_version: 2.4.5.1
@@ -1,37 +0,0 @@
1
- module BalihooLpcClient
2
- class Connection
3
- attr_accessor :config
4
-
5
- def initialize(config:)
6
- self.config = config
7
- end
8
-
9
- def authenticate!
10
- auth = Request::Authentication.new(connection: self)
11
- auth.authenticate!
12
- end
13
-
14
- def campaigns(params: {})
15
- validate_params!(params: params)
16
- Request::Campaigns.new(connection: self, params: params).fetch
17
- end
18
-
19
- def campaigns_with_tactics(params: {})
20
- validate_params!(params: params)
21
- Request::CampaignsWithTactics.new(connection: self, params: params).fetch
22
- end
23
-
24
- def metrics(tactic_id:, params: {})
25
- validate_params!(params: params)
26
- Request::Metrics.new(connection: self, params: params, tactic_id: tactic_id).fetch
27
- end
28
-
29
- private
30
-
31
- def validate_params!(params:)
32
- if config.location_key.nil? && params[:locations].nil?
33
- raise ApiOptionError, 'must pass opts[:locations] array since no location_key given'
34
- end
35
- end
36
- end
37
- end