vault-usage-client 0.0.8 → 0.0.9

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