vault-usage-client 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5537f1ed6faba6000f84cf0e909715e907713f3d
4
- data.tar.gz: 1b99454688ff02d2bd9fbb75b220283a7d4de29d
3
+ metadata.gz: 286fda12d23933d982e5f9d1f2c77171f161fe23
4
+ data.tar.gz: 4d37cca0d12010a7aa6844f7585959eaeb9c336b
5
5
  SHA512:
6
- metadata.gz: f95383bfb53f250db7dbe4a1e09546f103a9f8392bb3d6c1a6ecfcaa2f8e448afdf2fd6e5573014a579c93e2a7ffba1014f69e7e0c5e50e22548df1716b012b2
7
- data.tar.gz: 12db53a91b8b6e9bd3c022f5c0b9905f38f5306ef6ed5d6896daa1c53479663a9789f3c298c96326cfc76778498c17d84eda8608c9f34b7c16734ec693386834
6
+ metadata.gz: 8b39d012a2896e9ad4cb980b495e057ec66260902f02a40d050e056079fe3ba3daf37fc86baad3618e6218a07487d74d541b72cc62ab98ae5b9a3bc465c7d59b
7
+ data.tar.gz: 82dc3d786ad37fcfa3f7d03c32c588a885ad122ddaafd519a8a3eaa61d4ad05f76ad5f1be8d9052a0bdb7e67da0af369db35082a09fd920d7a42e71a64f71c9f
data/Gemfile CHANGED
@@ -12,3 +12,5 @@ group :test do
12
12
  gem 'scrolls'
13
13
  gem 'vault-test-tools'
14
14
  end
15
+
16
+ gem 'pry', group: [:development, :test]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vault-usage-client (0.0.8)
4
+ vault-usage-client (0.0.9)
5
5
  colorize
6
6
  excon
7
7
  multi_json
@@ -14,8 +14,8 @@ GEM
14
14
  celluloid (0.15.2)
15
15
  timers (~> 1.1.0)
16
16
  coderay (1.1.0)
17
- colorize (0.6.0)
18
- excon (0.27.1)
17
+ colorize (0.7.3)
18
+ excon (0.39.5)
19
19
  ffi (1.9.3)
20
20
  formatador (0.2.5)
21
21
  guard (2.6.1)
@@ -37,7 +37,7 @@ GEM
37
37
  method_source (0.8.2)
38
38
  mini_portile (0.6.0)
39
39
  minitest (4.7.5)
40
- multi_json (1.8.1)
40
+ multi_json (1.10.1)
41
41
  nokogiri (1.6.2.1)
42
42
  mini_portile (= 0.6.0)
43
43
  parslet (1.6.1)
@@ -75,6 +75,7 @@ PLATFORMS
75
75
  ruby
76
76
 
77
77
  DEPENDENCIES
78
+ pry
78
79
  rake
79
80
  rr
80
81
  scrolls
data/bin/console ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ### Bundler ##
4
+ require 'bundler/setup'
5
+
6
+ Bundler.require(:development)
7
+
8
+ APP_ROOT=File.expand_path(File.dirname(__FILE__)) + "/.."
9
+
10
+ require File.join(APP_ROOT,'/lib/vault-usage-client.rb')
11
+ include Vault::Usage
12
+
13
+ # add ability to reload console
14
+ def reload!
15
+ reload_msg = '# Reloading the console...'
16
+ puts CodeRay.scan(reload_msg, :ruby).term
17
+ Pry.save_history
18
+ exec(File.expand_path(__FILE__), 'bin/console')
19
+ end
20
+
21
+ system('clear')
22
+ welcome = <<eos
23
+ # Welcome to Vault Usage Client Interactive Console
24
+ eos
25
+ puts CodeRay.scan(welcome, :ruby).term
26
+ Pry.start
@@ -170,6 +170,42 @@ module Vault::Usage
170
170
  end
171
171
  end
172
172
 
173
+ # Get the usage events for a product specific to a user.
174
+ #
175
+ # @param user_hid [String] The user HID, such as `user1234@heroku.com`, to
176
+ # fetch usage data for.
177
+ # @param product_name [String] The product name such as `account:credit:lumpsum`, to
178
+ # fetch usage data for.
179
+ # @raise [Excon::Errors::HTTPStatusError] Raised if the server returns an
180
+ # unsuccessful HTTP status code.
181
+ # @return [Array] A list of usage events for the specified user, matching
182
+ # the following format:
183
+ #
184
+ # ```
185
+ # [{id: '<event-uuid>',
186
+ # product: '<name>',
187
+ # consumer: '<heroku-id>',
188
+ # start_time: <Time>,
189
+ # stop_time: <Time>,
190
+ # detail: {<key1>: <value1>,
191
+ # <key2>: <value2>,
192
+ # ...}},
193
+ # ...]}
194
+ # ```
195
+ def usage_for_user_by_product(user_hid, product_name)
196
+ path = "/users/#{user_hid}/usage/product/#{product_name}"
197
+ connection = Excon.new(@url)
198
+ response = connection.get(path: path, expects: [200])
199
+ payload = MultiJson.load(response.body, {symbolize_keys: true})
200
+ return payload[:job_id] if payload[:job_id]
201
+ events = payload[:events]
202
+ events.each do |event|
203
+ event.each do |key, value|
204
+ event[key] = parse_date(value) if date?(value)
205
+ end
206
+ end
207
+ end
208
+
173
209
  # Get the open dyno usage events for the specified app
174
210
  #
175
211
  # @param app_hid [String] The app HID, such as `app1234@heroku.com`, to
@@ -2,7 +2,7 @@ module Vault
2
2
  module Usage
3
3
  class Client
4
4
  # The `Vault::Usage::Client` gem version.
5
- VERSION = '0.0.8'
5
+ VERSION = '0.0.9'
6
6
  end
7
7
  end
8
8
  end
data/test/client_test.rb CHANGED
@@ -48,7 +48,7 @@ class ClientTest < Vault::TestCase
48
48
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
49
49
  request[:headers]['Authorization'])
50
50
  assert_equal('vault-usage.herokuapp.com', request[:host])
51
- assert_equal('443', request[:port])
51
+ assert_equal(443, request[:port])
52
52
  assert_equal("/products/#{@product_name}/usage/#{@app_hid}" +
53
53
  "/events/#{@event_id}/open/#{iso_format(@start_time)}",
54
54
  request[:path])
@@ -106,7 +106,7 @@ class ClientTest < Vault::TestCase
106
106
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
107
107
  request[:headers]['Authorization'])
108
108
  assert_equal('vault-usage.herokuapp.com', request[:host])
109
- assert_equal('443', request[:port])
109
+ assert_equal(443, request[:port])
110
110
  assert_equal("/products/#{@product_name}/usage/#{@app_hid}" +
111
111
  "/events/#{@event_id}/close/#{iso_format(@stop_time)}",
112
112
  request[:path])
@@ -147,7 +147,7 @@ class ClientTest < Vault::TestCase
147
147
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
148
148
  request[:headers]['Authorization'])
149
149
  assert_equal('vault-usage.herokuapp.com', request[:host])
150
- assert_equal('443', request[:port])
150
+ assert_equal(443, request[:port])
151
151
  assert_equal("/products/#{@product_name}/usage/#{@app_hid}" +
152
152
  "/events/#{@event_id}/open/#{iso_format(@start_time)}" +
153
153
  "/close/#{iso_format(@stop_time)}",
@@ -221,7 +221,7 @@ class ClientTest < Vault::TestCase
221
221
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
222
222
  request[:headers]['Authorization'])
223
223
  assert_equal('vault-usage.herokuapp.com', request[:host])
224
- assert_equal('443', request[:port])
224
+ assert_equal(443, request[:port])
225
225
  assert_equal("/users/#{@user_hid}/usage/#{iso_format(@start_time)}/" +
226
226
  "#{iso_format(@stop_time)}",
227
227
  request[:path])
@@ -344,7 +344,7 @@ class ClientTest < Vault::TestCase
344
344
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
345
345
  request[:headers]['Authorization'])
346
346
  assert_equal('vault-usage.herokuapp.com', request[:host])
347
- assert_equal('443', request[:port])
347
+ assert_equal(443, request[:port])
348
348
  assert_equal("/users/#{@user_hid}/apps/#{@app_hid}/open/#{@event_id}" +
349
349
  "/#{iso_format(@start_time)}",
350
350
  request[:path])
@@ -389,7 +389,7 @@ class ClientTest < Vault::TestCase
389
389
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
390
390
  request[:headers]['Authorization'])
391
391
  assert_equal('vault-usage.herokuapp.com', request[:host])
392
- assert_equal('443', request[:port])
392
+ assert_equal(443, request[:port])
393
393
  assert_equal("/users/#{@user_hid}/apps/#{@app_hid}/close/#{@event_id}" +
394
394
  "/#{iso_format(@stop_time)}",
395
395
  request[:path])
@@ -433,11 +433,27 @@ class ClientTest < Vault::TestCase
433
433
  assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
434
434
  request[:headers]['Authorization'])
435
435
  assert_equal('vault-usage.herokuapp.com', request[:host])
436
- assert_equal('443', request[:port])
436
+ assert_equal(443, request[:port])
437
437
  assert_equal("/apps/#{@app_hid}/ps/open", request[:path])
438
438
  Excon.stubs.pop
439
439
  {status: 200, body: MultiJson.dump({events: []})}
440
440
  end
441
441
  assert_equal([], @client.open_dynos_for_app(@app_hid))
442
442
  end
443
+
444
+ # Client.usage_for_user_by_product makes a GET request to the Vault::Usage HTTP API,
445
+ # passing the supplied credentials using HTTP basic auth, to retrieve the
446
+ # usage events specific to a product
447
+ def test_usage_for_user_by_product
448
+ Excon.stub(method: :get) do |request|
449
+ assert_equal('Basic dXNlcm5hbWU6c2VjcmV0',
450
+ request[:headers]['Authorization'])
451
+ assert_equal('vault-usage.herokuapp.com', request[:host])
452
+ assert_equal(443, request[:port])
453
+ assert_equal("/users/#{@user_hid}/usage/product/#{@product_name}", request[:path])
454
+ Excon.stubs.pop
455
+ {status: 200, body: MultiJson.dump({events: []})}
456
+ end
457
+ assert_equal([], @client.usage_for_user_by_product(@user_hid, @product_name))
458
+ end
443
459
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vault-usage-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Continanza
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-27 00:00:00.000000000 Z
12
+ date: 2014-10-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
@@ -63,7 +63,6 @@ extensions: []
63
63
  extra_rdoc_files: []
64
64
  files:
65
65
  - ".gitignore"
66
- - ".ruby-gemset"
67
66
  - ".ruby-version"
68
67
  - ".travis.yml"
69
68
  - ".yardopts"
@@ -71,6 +70,7 @@ files:
71
70
  - Gemfile.lock
72
71
  - README.md
73
72
  - Rakefile
73
+ - bin/console
74
74
  - bin/vault-usage
75
75
  - lib/vault-usage-client.rb
76
76
  - lib/vault-usage-client/client.rb
data/.ruby-gemset DELETED
@@ -1 +0,0 @@
1
- vault-usage-client