cine_io 0.1.5 → 0.2.0

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: a37c24dc5ba3033b57e53be1b0b641b58ae2aa1e
4
- data.tar.gz: 4eea038909835278e264b92ca422818c51ae2eb9
3
+ metadata.gz: 528e5a1955d49b0a66e7c72df42a6d2e4d9ab568
4
+ data.tar.gz: 99728496117f2929001f8d711620d843bc6c0f03
5
5
  SHA512:
6
- metadata.gz: f8d039ce91e1f079d1ba5d82b331efa83ad699d218b17de137de328fbe599e541a8e21daa2ec674665e13f17da76e500fddbb037f67facf4d2bcdf6971445f2b
7
- data.tar.gz: 9c1b0b310548b02714305920f6c6abd9eb6cc4706b7f3fbdd23f0a67936d97fead5ec75bda322580e8bf86e732b301ba3139d2213245b34edafb00ce80bd28c1
6
+ metadata.gz: 9d8f1a68944bd0a590638f2b909eda3b58328a13c21d45c364bed5d1b16e7d79f46a208981ec7a033b3b4cc334b86ee989f7d0b5a0624be9d7fec7ef862d41e5
7
+ data.tar.gz: e6014ebf70ae7e1770d2055ea1f19caec3a28cc571f89878c554c4b4346eaee13da161fb0e92d0ede988ad4b9108d5fb40733dc52e66082ad221b3165d09605c
data/README.md CHANGED
@@ -135,9 +135,33 @@ recordings = client.streams.recordings.delete('STREAM_ID', 'recordingName')
135
135
  #### Identity Signature Generation
136
136
 
137
137
  ```ruby
138
- var identity = "Unique user name to your app"
138
+ identity = "Unique user name to your app"
139
139
  response = client.peer.generate_identity_signature(identity)
140
- // response looks like {signature: "sha1-hash", timestamp: 1420258111, identity: "Unique user name to your app"}
140
+ # response looks like {signature: "sha1-hash", timestamp: 1420258111, identity: "Unique user name to your app"}
141
+ ```
142
+
143
+
144
+ ### Usage
145
+
146
+ Use these api endpoints to fetch the monthly usage for a project or a stream.
147
+
148
+ #### Project Usage
149
+
150
+ ```ruby
151
+ options = {:month => new Date, :report => ['bandwidth, 'peer']}
152
+ response = client.usage.project(options)
153
+ // response looks like {bandwidth: 12345, storage: 54321, month: "month (ISO 8601 format)", secretKey: "YOUR SECRET KEY"}
154
+ // bandwidth and storage are represented in bytes
155
+ ```
156
+
157
+ #### Stream Usage
158
+
159
+ ```ruby
160
+ id = 'STREAM_ID'
161
+ options = {:month => new Date, :report => ['bandwidth, 'peer']}
162
+ response = client.usage.stream(id, options);
163
+ // response looks like {bandwidth: 12345, storage: 54321, month: "month (ISO 8601 format)", secretKey: "YOUR SECRET KEY", id: "STREAM_ID"}
164
+ // bandwidth and storage are represented in bytes
141
165
  ```
142
166
 
143
167
  ## Contributing
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "queryparams", "~> 0.0.3"
22
+
21
23
  spec.add_development_dependency "bundler", "~> 1.3"
22
24
  spec.add_development_dependency "rake", '~> 10.3.0'
23
25
  spec.add_development_dependency "rspec", '~> 3.0.0'
@@ -32,5 +32,9 @@ module CineIo
32
32
  @peer ||= CineIo::Peer.new(self)
33
33
  end
34
34
 
35
+ def usage
36
+ @usage ||= CineIo::UsageHandler.new(self)
37
+ end
38
+
35
39
  end
36
40
  end
@@ -1,3 +1,5 @@
1
+ require('queryparams')
2
+
1
3
  class CineIo::ResourceHandler
2
4
 
3
5
  protected
@@ -10,7 +12,7 @@ class CineIo::ResourceHandler
10
12
 
11
13
  def get_resource(path, params={})
12
14
  uri = URI.parse("#{CineIo::BASE_URL}#{path}")
13
- uri.query = URI.encode_www_form({:secretKey => @client.config.fetch(:secretKey)}.merge(params))
15
+ uri.query = QueryParams.encode({:secretKey => @client.config.fetch(:secretKey)}.merge(params))
14
16
  http = Net::HTTP.new(uri.host, uri.port)
15
17
  http.use_ssl = (uri.scheme == "https")
16
18
 
@@ -23,7 +25,7 @@ class CineIo::ResourceHandler
23
25
 
24
26
  def get_resource_with_master_key(path, params={})
25
27
  uri = URI.parse("#{CineIo::BASE_URL}#{path}")
26
- uri.query = URI.encode_www_form({:masterKey => @client.config.fetch(:masterKey)}.merge(params))
28
+ uri.query = QueryParams.encode({:masterKey => @client.config.fetch(:masterKey)}.merge(params))
27
29
  http = Net::HTTP.new(uri.host, uri.port)
28
30
  http.use_ssl = (uri.scheme == "https")
29
31
 
@@ -0,0 +1,22 @@
1
+ require 'time'
2
+
3
+ class CineIo::UsageHandler < CineIo::ResourceHandler
4
+
5
+ def project(options)
6
+ params = {
7
+ :month => options.fetch(:month).utc.iso8601,
8
+ :report => options.fetch(:report)
9
+ }
10
+ get_resource("/usage/project", params)
11
+ end
12
+
13
+ def stream(id, options)
14
+ params = {
15
+ :month => options.fetch(:month).utc.iso8601,
16
+ :report => options.fetch(:report),
17
+ :id => id
18
+ }
19
+ get_resource("/usage/stream", params)
20
+ end
21
+
22
+ end
@@ -1,3 +1,3 @@
1
1
  module CineIo
2
- VERSION = "0.1.5"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -12,7 +12,7 @@ describe CineIo::Peer do
12
12
  time = Time.parse("Jan 2 2015")
13
13
  allow(Time).to receive(:now) { time }
14
14
 
15
- expect(subject.generate_identity_signature('Thomas')).to eq(identity: "Thomas", signature: "6fbb691889a3db90f6be439aaaaebfca50f1e94d", timestamp: 1420185600)
15
+ expect(subject.generate_identity_signature('Thomas')).to eq(identity: "Thomas", signature: "604d94e08118b3539d12d9394fc5c0e27f9959dc", timestamp: 1420156800)
16
16
  end
17
17
  end
18
18
 
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe CineIo::UsageHandler do
4
+
5
+ let(:client) { CineIo::Client.new(:secretKey => "THE PROJECT SECRET KEY") }
6
+
7
+ subject { described_class.new(client) }
8
+
9
+ describe '#project' do
10
+ it "returns the project usage report" do
11
+ time = Time.parse("January 06 2015")
12
+ VCR.use_cassette('usage_project') do
13
+ options = {:month => time, :report => ['bandwidth', 'storage']}
14
+ result = subject.project(options)
15
+
16
+ expect(result["secretKey"]).to eq('THE PROJECT SECRET KEY')
17
+ expect(result["bandwidth"]).to eq(1073741824)
18
+ expect(result["storage"]).to eq(2147483648)
19
+ expect(result["month"]).to eq("2015-01-06T00:00:00.000Z")
20
+ end
21
+ end
22
+ end
23
+
24
+ describe '#stream' do
25
+ it "returns the stream usage report" do
26
+ time = Time.parse("January 06 2015")
27
+ VCR.use_cassette('usage_stream') do
28
+ id = "THE STREAM ID"
29
+ options = {:month => time, :report => ['bandwidth', 'storage']}
30
+ result = subject.stream(id, options)
31
+
32
+ expect(result["id"]).to eq('THE STREAM ID')
33
+ expect(result["secretKey"]).to eq('THE PROJECT SECRET KEY')
34
+ expect(result["bandwidth"]).to eq(1073741824)
35
+ expect(result["storage"]).to eq(2147483648)
36
+ expect(result["month"]).to eq("2015-01-06T00:00:00.000Z")
37
+ end
38
+ end
39
+ end
40
+
41
+ end
@@ -28,4 +28,9 @@ describe CineIo do
28
28
  it { should be_a(CineIo::Peer) }
29
29
  end
30
30
 
31
+ describe '#usage' do
32
+ subject {client.usage}
33
+ it { should be_a(CineIo::UsageHandler) }
34
+ end
35
+
31
36
  end
@@ -0,0 +1,41 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.cine.io/api/1/-/usage/project?month=2015-01-06T00:00:00Z&report%5B0%5D=bandwidth&report%5B1%5D=storage&secretKey=THE%20PROJECT%20SECRET%20KEY
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json; charset=utf-8
21
+ Date:
22
+ - Sun, 01 Jun 2014 07:27:53 GMT
23
+ Etag:
24
+ - ! '"-585713471"'
25
+ Set-Cookie:
26
+ - connect.sid=s%3ACxr5WVK6KEkFqdcFxxYTSTJ7.%2F7TTnVJK4mHsI%2FAIiKiebpUq5y5d5Fz8MmK7Azhad%2Bg;
27
+ Path=/; HttpOnly
28
+ Vary:
29
+ - Accept-Encoding
30
+ X-Powered-By:
31
+ - Express
32
+ Content-Length:
33
+ - '217'
34
+ Connection:
35
+ - keep-alive
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ! '{"secretKey": "THE PROJECT SECRET KEY", "month": "2015-01-06T00:00:00.000Z", "bandwidth": 1073741824, "storage": 2147483648 }'
39
+ http_version:
40
+ recorded_at: Sun, 01 Jun 2014 07:27:53 GMT
41
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,41 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.cine.io/api/1/-/usage/stream?id=THE%20STREAM%20ID&month=2015-01-06T00:00:00Z&report%5B0%5D=bandwidth&report%5B1%5D=storage&secretKey=THE%20PROJECT%20SECRET%20KEY
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Content-Type:
20
+ - application/json; charset=utf-8
21
+ Date:
22
+ - Sun, 01 Jun 2014 07:27:53 GMT
23
+ Etag:
24
+ - ! '"-585713471"'
25
+ Set-Cookie:
26
+ - connect.sid=s%3ACxr5WVK6KEkFqdcFxxYTSTJ7.%2F7TTnVJK4mHsI%2FAIiKiebpUq5y5d5Fz8MmK7Azhad%2Bg;
27
+ Path=/; HttpOnly
28
+ Vary:
29
+ - Accept-Encoding
30
+ X-Powered-By:
31
+ - Express
32
+ Content-Length:
33
+ - '217'
34
+ Connection:
35
+ - keep-alive
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ! '{"id": "THE STREAM ID", "secretKey": "THE PROJECT SECRET KEY", "month": "2015-01-06T00:00:00.000Z", "bandwidth": 1073741824, "storage": 2147483648 }'
39
+ http_version:
40
+ recorded_at: Sun, 01 Jun 2014 07:27:53 GMT
41
+ recorded_with: VCR 2.3.0
@@ -1,3 +1,5 @@
1
+ ENV['TZ'] = 'UTC'
2
+
1
3
  require 'cine_io'
2
4
  require 'vcr'
3
5
 
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cine_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - cine.io
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-03 00:00:00.000000000 Z
11
+ date: 2015-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: queryparams
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.3
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -105,6 +119,7 @@ files:
105
119
  - lib/cine_io/stream_recording.rb
106
120
  - lib/cine_io/stream_recordings_handler.rb
107
121
  - lib/cine_io/streams_handler.rb
122
+ - lib/cine_io/usage_handler.rb
108
123
  - lib/cine_io/version.rb
109
124
  - spec/cine_io/peer_spec.rb
110
125
  - spec/cine_io/project_handler_spec.rb
@@ -114,6 +129,7 @@ files:
114
129
  - spec/cine_io/stream_recordings_handler_spec.rb
115
130
  - spec/cine_io/stream_spec.rb
116
131
  - spec/cine_io/streams_handler_spec.rb
132
+ - spec/cine_io/usage_handler_spec.rb
117
133
  - spec/cine_io_spec.rb
118
134
  - spec/fixtures/vcr_cassettes/create_stream.yml
119
135
  - spec/fixtures/vcr_cassettes/create_stream_error.yml
@@ -142,6 +158,8 @@ files:
142
158
  - spec/fixtures/vcr_cassettes/update_project_error.yml
143
159
  - spec/fixtures/vcr_cassettes/update_stream.yml
144
160
  - spec/fixtures/vcr_cassettes/update_stream_error.yml
161
+ - spec/fixtures/vcr_cassettes/usage_project.yml
162
+ - spec/fixtures/vcr_cassettes/usage_stream.yml
145
163
  - spec/spec_helper.rb
146
164
  homepage: https://github.com/cine-io/cineio-ruby
147
165
  licenses:
@@ -176,6 +194,7 @@ test_files:
176
194
  - spec/cine_io/stream_recordings_handler_spec.rb
177
195
  - spec/cine_io/stream_spec.rb
178
196
  - spec/cine_io/streams_handler_spec.rb
197
+ - spec/cine_io/usage_handler_spec.rb
179
198
  - spec/cine_io_spec.rb
180
199
  - spec/fixtures/vcr_cassettes/create_stream.yml
181
200
  - spec/fixtures/vcr_cassettes/create_stream_error.yml
@@ -204,4 +223,6 @@ test_files:
204
223
  - spec/fixtures/vcr_cassettes/update_project_error.yml
205
224
  - spec/fixtures/vcr_cassettes/update_stream.yml
206
225
  - spec/fixtures/vcr_cassettes/update_stream_error.yml
226
+ - spec/fixtures/vcr_cassettes/usage_project.yml
227
+ - spec/fixtures/vcr_cassettes/usage_stream.yml
207
228
  - spec/spec_helper.rb