cine_io 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -38,6 +38,20 @@ project = client.project.get
38
38
  # => CineIo::Project
39
39
  ```
40
40
 
41
+ ```ruby
42
+ # params:
43
+ # name: 'a helpful project name'
44
+ project = client.project.update(params)
45
+ # => CineIo::Project
46
+ ```
47
+
48
+ To delete your project:
49
+
50
+ ```ruby
51
+ deleted_date = client.project.destroy
52
+ # => Date String
53
+ ```
54
+
41
55
  #### Streams
42
56
 
43
57
  To get all your streams:
@@ -54,10 +68,28 @@ stream = client.streams.get('STREAM_ID')
54
68
  # => CineIo::Stream
55
69
  ```
56
70
 
71
+ To update a specific stream:
72
+
73
+ ```ruby
74
+ # params:
75
+ # name: 'a helpful stream name'
76
+ stream = client.streams.update('STREAM_ID', params)
77
+ # => CineIo::Stream
78
+ ```
79
+
80
+ To delete a specific stream:
81
+
82
+ ```ruby
83
+ deleted_date = client.streams.destroy('STREAM_ID')
84
+ # => Date String
85
+ ```
86
+
57
87
  To create a new stream:
58
88
 
59
89
  ```ruby
60
- stream = client.streams.create
90
+ # params (optional):
91
+ # name (optional): 'a helpful stream name'
92
+ stream = client.streams.create(params)
61
93
  # => CineIo::Stream
62
94
  ```
63
95
 
@@ -8,4 +8,10 @@ class CineIo::ProjectsHandler < CineIo::ResourceHandler
8
8
  delete_resource("/project").fetch('deletedAt')
9
9
  end
10
10
 
11
+ # params:
12
+ # name: some project name
13
+ def update(params)
14
+ CineIo::Project.new update_resource("/project", params)
15
+ end
16
+
11
17
  end
@@ -30,6 +30,18 @@ class CineIo::ResourceHandler
30
30
  JSON.parse(response.body)
31
31
  end
32
32
 
33
+ def update_resource(path, params={})
34
+ uri = URI.parse("#{CineIo::BASE_URL}#{path}")
35
+ request = Net::HTTP::Put.new(uri.request_uri)
36
+ request.set_form_data({:secretKey => @client.config.fetch(:secretKey)}.merge(params))
37
+ http = Net::HTTP.new(uri.host, uri.port)
38
+ http.use_ssl = (uri.scheme == "https")
39
+ response = http.request(request)
40
+
41
+ raise CineIo::ApiError.new(response.body) unless response.is_a?(Net::HTTPSuccess)
42
+ JSON.parse(response.body)
43
+ end
44
+
33
45
  def delete_resource(path, params={})
34
46
  uri = URI.parse("#{CineIo::BASE_URL}#{path}")
35
47
  request = Net::HTTP::Delete.new(uri.request_uri)
@@ -12,8 +12,16 @@ class CineIo::StreamsHandler < CineIo::ResourceHandler
12
12
  get_resource("/stream", id: stream_id, fmleProfile: true).fetch('content')
13
13
  end
14
14
 
15
- def create
16
- CineIo::Stream.new post_resource("/stream")
15
+ # params
16
+ # name: 'some stream name'
17
+ def create(params={})
18
+ CineIo::Stream.new post_resource("/stream", params)
19
+ end
20
+
21
+ # params:
22
+ # name: some project name
23
+ def update(stream_id, params)
24
+ CineIo::Stream.new update_resource("/stream", {id: stream_id}.merge(params))
17
25
  end
18
26
 
19
27
  def delete(stream_id)
@@ -1,3 +1,3 @@
1
1
  module CineIo
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -37,4 +37,19 @@ describe CineIo::ProjectsHandler do
37
37
  end
38
38
  end
39
39
 
40
+ describe '#update' do
41
+ it "updates the project" do
42
+ VCR.use_cassette('update_project') do
43
+ new_project_details = subject.update(name: 'new project name')
44
+ expect(new_project_details.name).to eq("new project name")
45
+ end
46
+ end
47
+
48
+ it 'can throw an error on api exception' do
49
+ VCR.use_cassette('update_project_error') do
50
+ expect {subject.update(name: '')}.to raise_error(CineIo::ApiError, "An unknown error has occured.")
51
+ end
52
+ end
53
+ end
54
+
40
55
  end
@@ -56,7 +56,7 @@ describe CineIo::StreamsHandler do
56
56
  end
57
57
 
58
58
  it 'can throw an error on api exception' do
59
- VCR.use_cassette('get_streams_error', record: :once) do
59
+ VCR.use_cassette('get_streams_error') do
60
60
  expect {subject.index}.to raise_error(CineIo::ApiError, "An unknown error has occured.")
61
61
  end
62
62
  end
@@ -74,6 +74,18 @@ describe CineIo::StreamsHandler do
74
74
  end
75
75
  end
76
76
 
77
+ it "can take a name parameter" do
78
+ VCR.use_cassette('create_stream_with_name') do
79
+ stream = subject.create(name: 'new stream')
80
+ expect(stream).to be_a(CineIo::Stream)
81
+ expect(stream.id).to eq("537b7f48bc03be080085a389")
82
+ expect(stream.name).to eq("new stream")
83
+ expect(stream.password).to eq("PASSWORD")
84
+ expect(stream.play.keys.sort).to eq(['hls', 'rtmp'])
85
+ expect(stream.publish.keys.sort).to eq(['stream', 'url'])
86
+ end
87
+ end
88
+
77
89
  it 'can throw an error on api exception' do
78
90
  VCR.use_cassette('create_stream_error') do
79
91
  expect {subject.create}.to raise_error(CineIo::ApiError, "An unknown error has occured.")
@@ -96,4 +108,20 @@ describe CineIo::StreamsHandler do
96
108
  end
97
109
  end
98
110
 
111
+ describe '#update' do
112
+ it "updates the name" do
113
+ VCR.use_cassette('update_stream') do
114
+ stream = subject.update('53718cef450ff80200f81856', name: 'homepage stream')
115
+ expect(stream.id).to eq('53718cef450ff80200f81856')
116
+ expect(stream.name).to eq('homepage stream')
117
+ end
118
+ end
119
+
120
+ it 'can throw an error on api exception' do
121
+ VCR.use_cassette('update_stream_error') do
122
+ expect {subject.update('NOT_A_STREAM', name: '')}.to raise_error(CineIo::ApiError, "An unknown error has occured.")
123
+ end
124
+ end
125
+ end
126
+
99
127
  end
@@ -35,7 +35,7 @@ http_interactions:
35
35
  - keep-alive
36
36
  body:
37
37
  encoding: US-ASCII
38
- string: ! '{"id":"537b7f48bc03be080085a389","name":"cine1","play":{"hls":"http://hls.cine.io/cines/cine1/cine1.m3u8","rtmp":"rtmp://fml.cine.io/20C45E/cines/cine1?adbe-live-event=cine1"},"publish":{"url":"rtmp://stream.lax.cine.io/20C45E/cines","stream":"cine1?PASSWORD&amp;adbe-live-event=cine1"},"password":"PASSWORD","expiration":"2034-05-20T00:00:00.000Z","assignedAt":"2014-06-01T07:53:38.613Z"}'
38
+ string: ! '{"id":"537b7f48bc03be080085a389","streamName":"cine1","play":{"hls":"http://hls.cine.io/cines/cine1/cine1.m3u8","rtmp":"rtmp://fml.cine.io/20C45E/cines/cine1?adbe-live-event=cine1"},"publish":{"url":"rtmp://stream.lax.cine.io/20C45E/cines","stream":"cine1?PASSWORD&amp;adbe-live-event=cine1"},"password":"PASSWORD","expiration":"2034-05-20T00:00:00.000Z","assignedAt":"2014-06-01T07:53:38.613Z"}'
39
39
  http_version:
40
40
  recorded_at: Sun, 01 Jun 2014 07:53:39 GMT
41
41
  recorded_with: VCR 2.3.0
@@ -0,0 +1,41 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.cine.io/api/1/-/stream
6
+ body:
7
+ encoding: US-ASCII
8
+ string: secretKey=MY SECRET&name=new+stream
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ Date:
24
+ - Wed, 11 Jun 2014 20:19:12 GMT
25
+ Set-Cookie:
26
+ - connect.sid=s%3ADUJp5xhon0mGvpFaZaANzwdB.uiRsKW0osoLy%2Bl79UXUjx2CKc4ziyokz9rqGPI%2F%2BUic;
27
+ Path=/; HttpOnly
28
+ Vary:
29
+ - Accept-Encoding
30
+ X-Powered-By:
31
+ - Express
32
+ Content-Length:
33
+ - '418'
34
+ Connection:
35
+ - keep-alive
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ! '{"id":"537b7f48bc03be080085a389","name":"new stream","play":{"hls":"http://hls.cine.io/cines/cine1/cine1.m3u8","rtmp":"rtmp://fml.cine.io/20C45E/cines/cine1?adbe-live-event=cine1"},"publish":{"url":"rtmp://stream.lax.cine.io/20C45E/cines","stream":"cine1?PASSWORD&amp;adbe-live-event=cine1"},"password":"PASSWORD","expiration":"2034-05-20T00:00:00.000Z","assignedAt":"2014-06-01T07:53:38.613Z"}'
39
+ http_version:
40
+ recorded_at: Wed, 11 Jun 2014 20:19:12 GMT
41
+ recorded_with: VCR 2.9.2
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://www.cine.io/api/1/-/project
6
6
  body:
7
7
  encoding: US-ASCII
8
- string: secretKey=MY+SECRET&id=538f79dddfd24d0a00647085
8
+ string: secretKey=MY+SECRET
9
9
  headers:
10
10
  Accept:
11
11
  - ! '*/*'
@@ -0,0 +1,42 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://www.cine.io/api/1/-/project
6
+ body:
7
+ encoding: US-ASCII
8
+ string: secretKey=MY+SECRET&name=new+project+name
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ Date:
24
+ - Wed, 11 Jun 2014 20:14:16 GMT
25
+ Set-Cookie:
26
+ - connect.sid=s%3AlXanIRF3rJUdSVF9WJQYiAIE.yBozlxl0BPpLdC%2FqfJoVXG2%2FW5x8SSMg%2BCNd7Wv6xIQ;
27
+ Path=/; HttpOnly
28
+ Vary:
29
+ - Accept-Encoding
30
+ X-Powered-By:
31
+ - Express
32
+ Content-Length:
33
+ - '209'
34
+ Connection:
35
+ - keep-alive
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ! '{"id":"53868bd8a3f20d0800a4eb38","publicKey":"MY PUBLIC","secretKey":"MY SECRET","name":"new
39
+ project name","streamsCount":2,"updatedAt":"2014-06-11T20:14:16.655Z"}'
40
+ http_version:
41
+ recorded_at: Wed, 11 Jun 2014 20:14:16 GMT
42
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://www.cine.io/api/1/-/project
6
+ body:
7
+ encoding: US-ASCII
8
+ string: secretKey=MY+SECRET
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 503
19
+ message: Service Unavailable
20
+ headers:
21
+ Cache-Control:
22
+ - no-cache, no-store
23
+ Content-Type:
24
+ - text/html; charset=utf-8
25
+ Date:
26
+ - Mon, 09 Jun 2014 20:12:42 GMT
27
+ Server:
28
+ - MochiWeb/1.0 (Any of you quaids got a smint?)
29
+ Content-Length:
30
+ - '484'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: An unknown error has occured.
36
+ http_version:
37
+ recorded_at: Mon, 09 Jun 2014 20:12:42 GMT
38
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,41 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://www.cine.io/api/1/-/stream
6
+ body:
7
+ encoding: US-ASCII
8
+ string: secretKey=MY+SECRET&id=53718cef450ff80200f81856&name=homepage+stream
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - application/json; charset=utf-8
23
+ Date:
24
+ - Wed, 11 Jun 2014 20:24:37 GMT
25
+ Set-Cookie:
26
+ - connect.sid=s%3AosOebJBb66MYro0XgYG5jwd6.16FOZ8f%2FWHe2J4iDGxt7H%2BXF6qHeYmXHG7fdmu9fx70;
27
+ Path=/; HttpOnly
28
+ Vary:
29
+ - Accept-Encoding
30
+ X-Powered-By:
31
+ - Express
32
+ Content-Length:
33
+ - '97'
34
+ Connection:
35
+ - keep-alive
36
+ body:
37
+ encoding: US-ASCII
38
+ string: ! '{"id":"53718cef450ff80200f81856","name":"homepage stream","updatedAt":"2014-06-11T20:24:37.950Z"}'
39
+ http_version:
40
+ recorded_at: Wed, 11 Jun 2014 20:24:38 GMT
41
+ recorded_with: VCR 2.9.2
@@ -0,0 +1,38 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: put
5
+ uri: https://www.cine.io/api/1/-/stream
6
+ body:
7
+ encoding: US-ASCII
8
+ string: secretKey=MY+SECRET&id=NOT_A_STREAM&name=''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ response:
17
+ status:
18
+ code: 503
19
+ message: Service Unavailable
20
+ headers:
21
+ Cache-Control:
22
+ - no-cache, no-store
23
+ Content-Type:
24
+ - text/html; charset=utf-8
25
+ Date:
26
+ - Mon, 09 Jun 2014 20:12:42 GMT
27
+ Server:
28
+ - MochiWeb/1.0 (Any of you quaids got a smint?)
29
+ Content-Length:
30
+ - '484'
31
+ Connection:
32
+ - keep-alive
33
+ body:
34
+ encoding: US-ASCII
35
+ string: An unknown error has occured.
36
+ http_version:
37
+ recorded_at: Mon, 09 Jun 2014 20:12:42 GMT
38
+ recorded_with: VCR 2.9.2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cine_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-09 00:00:00.000000000 Z
12
+ date: 2014-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -120,6 +120,7 @@ files:
120
120
  - spec/cine_io_spec.rb
121
121
  - spec/fixtures/vcr_cassettes/create_stream.yml
122
122
  - spec/fixtures/vcr_cassettes/create_stream_error.yml
123
+ - spec/fixtures/vcr_cassettes/create_stream_with_name.yml
123
124
  - spec/fixtures/vcr_cassettes/delete_project.yml
124
125
  - spec/fixtures/vcr_cassettes/delete_project_error.yml
125
126
  - spec/fixtures/vcr_cassettes/delete_stream.yml
@@ -132,6 +133,10 @@ files:
132
133
  - spec/fixtures/vcr_cassettes/get_stream_error.yml
133
134
  - spec/fixtures/vcr_cassettes/get_streams.yml
134
135
  - spec/fixtures/vcr_cassettes/get_streams_error.yml
136
+ - spec/fixtures/vcr_cassettes/update_project.yml
137
+ - spec/fixtures/vcr_cassettes/update_project_error.yml
138
+ - spec/fixtures/vcr_cassettes/update_stream.yml
139
+ - spec/fixtures/vcr_cassettes/update_stream_error.yml
135
140
  - spec/spec_helper.rb
136
141
  homepage: https://github.com/cine-io/cineio-ruby
137
142
  licenses:
@@ -166,6 +171,7 @@ test_files:
166
171
  - spec/cine_io_spec.rb
167
172
  - spec/fixtures/vcr_cassettes/create_stream.yml
168
173
  - spec/fixtures/vcr_cassettes/create_stream_error.yml
174
+ - spec/fixtures/vcr_cassettes/create_stream_with_name.yml
169
175
  - spec/fixtures/vcr_cassettes/delete_project.yml
170
176
  - spec/fixtures/vcr_cassettes/delete_project_error.yml
171
177
  - spec/fixtures/vcr_cassettes/delete_stream.yml
@@ -178,4 +184,8 @@ test_files:
178
184
  - spec/fixtures/vcr_cassettes/get_stream_error.yml
179
185
  - spec/fixtures/vcr_cassettes/get_streams.yml
180
186
  - spec/fixtures/vcr_cassettes/get_streams_error.yml
187
+ - spec/fixtures/vcr_cassettes/update_project.yml
188
+ - spec/fixtures/vcr_cassettes/update_project_error.yml
189
+ - spec/fixtures/vcr_cassettes/update_stream.yml
190
+ - spec/fixtures/vcr_cassettes/update_stream_error.yml
181
191
  - spec/spec_helper.rb