proteus_client 0.0.1
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.
- data/lib/proteus/client.rb +104 -0
- data/lib/proteus/config.rb +5 -0
- data/lib/proteus_client.rb +5 -0
- metadata +48 -0
@@ -0,0 +1,104 @@
|
|
1
|
+
module Proteus
|
2
|
+
class Client
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
options = merge_with_default_options(options)
|
6
|
+
@api_key = options[:api_key]
|
7
|
+
@domain = RestClient::Resource.new(options[:domain])
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.config
|
11
|
+
@config ||= Proteus::Config.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_api
|
15
|
+
response = submit_request(:get,'/',{})
|
16
|
+
|
17
|
+
{message: response.body}
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_video_allocation(count=0,params={})
|
21
|
+
params = {count: count} if count > 0
|
22
|
+
|
23
|
+
body = submit_request_and_parse_json(:post,'/video_allocations',params)
|
24
|
+
|
25
|
+
return parse_video_allocation(body) if count==0
|
26
|
+
body.map { |e| parse_video_allocation(e) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_video(video_allocation_id,type)
|
30
|
+
body = submit_request_and_parse_json(:post, '/videos',
|
31
|
+
{video_allocation_id: video_allocation_id,
|
32
|
+
type: type})
|
33
|
+
|
34
|
+
{video_id: body['_id'],url: body['allocation_url'] }
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_video_versions(video_id,settings=nil)
|
38
|
+
params = {}
|
39
|
+
params = {version_settings: settings} unless settings.nil?
|
40
|
+
|
41
|
+
submit_request(:post, "/videos/#{video_id}/versions",params)
|
42
|
+
|
43
|
+
{message: 'success'}
|
44
|
+
end
|
45
|
+
|
46
|
+
def get_video(video_id)
|
47
|
+
submit_request_and_parse_json(:get,"/videos/#{video_id}",{})
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_videos(*ids)
|
51
|
+
submit_request_and_parse_json(:get_raw,"/videos",{ids: ids})
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_video_allocation(video_allocation_id)
|
55
|
+
submit_request_and_parse_json(:get,"/video_allocations/#{video_allocation_id}",{})
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def merge_with_default_options(options)
|
61
|
+
opts = {
|
62
|
+
api_key: Client.config.api_key,
|
63
|
+
domain: Client.config.domain
|
64
|
+
}.merge(options)
|
65
|
+
|
66
|
+
raise "An API key has not been defined" unless opts[:api_key]
|
67
|
+
raise "A domain has not been defined" unless opts[:domain]
|
68
|
+
|
69
|
+
opts
|
70
|
+
end
|
71
|
+
|
72
|
+
def submit_request_and_parse_json(method,route,params)
|
73
|
+
response = submit_request(method,route,params)
|
74
|
+
JSON.parse(response)
|
75
|
+
end
|
76
|
+
|
77
|
+
def submit_request(method,route,params)
|
78
|
+
params = {:api_key => @api_key}.merge(params)
|
79
|
+
|
80
|
+
case method
|
81
|
+
when :get
|
82
|
+
@domain[route].get({params: params})
|
83
|
+
when :get_raw
|
84
|
+
params_str = RestClient::Payload::UrlEncoded.new(params).to_s
|
85
|
+
@domain["#{route}?#{params_str}"].get({})
|
86
|
+
when :post
|
87
|
+
@domain[route].post(params, :content_type => :json)
|
88
|
+
else
|
89
|
+
raise 'Undefined method'
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def parse_video_allocation(video_allocation)
|
94
|
+
urls = [{type: 'direct', url: video_allocation['url_direct']}]
|
95
|
+
urls << {type: 'stream', url: video_allocation['url_stream']}
|
96
|
+
|
97
|
+
urls << {type: 'upload', url: video_allocation['url_upload']}
|
98
|
+
|
99
|
+
{video_allocation_id: video_allocation['_id'],urls: urls }
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: proteus_client
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- solojavier
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-22 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: It provides an interface to use proteus features
|
15
|
+
email: 1.27201@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/proteus_client.rb
|
21
|
+
- lib/proteus/config.rb
|
22
|
+
- lib/proteus/client.rb
|
23
|
+
homepage: https://github.com/solojavier/proteus_client
|
24
|
+
licenses: []
|
25
|
+
post_install_message:
|
26
|
+
rdoc_options: []
|
27
|
+
require_paths:
|
28
|
+
- lib
|
29
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 1.8.21
|
44
|
+
signing_key:
|
45
|
+
specification_version: 3
|
46
|
+
summary: Ruby client to use proteus rest service
|
47
|
+
test_files: []
|
48
|
+
has_rdoc:
|