dm_cloud 0.0.5 → 0.0.55

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # DMCloud
2
2
 
3
- I created this gem to simplify request and responses from DailyMotion Cloud API.
4
- With this gem, you can :
5
- - get generated embed code as a string
6
- - get direct access url to your files (I used this to provide video flux to TV-connected application)
7
- - (I'm working on ) video creation, delete, paginated lists and video informations (a/v encodings, bitrate, video lenght...)
8
- - (I'm working on ) CRUD on videos' meta-data
3
+ I created this gem to simplify request and responses from DailyMotion Cloud API.
4
+ With this gem, you can :
5
+ - get generated embed code as a string
6
+ - get direct access url to your files (I used this to provide video flux to TV-connected application)
7
+ - (Lists works, others on the way) create, delete, paginated lists of videos; with video informations (a/v encodings, bitrate, video lenght...)
8
+ - (I'm working on ) CRUD on videos' meta-data
9
9
 
10
10
  ## Installation
11
11
 
@@ -39,7 +39,7 @@ You can note the securitylevel, for more information about it, take a look at `l
39
39
  :security_level => DMC_SECURITY_LEVEL
40
40
  })
41
41
 
42
- Description of security levels :
42
+ Description of security levels :
43
43
 
44
44
  * **None:**
45
45
  The signed URL will be valid for everyone
@@ -88,6 +88,58 @@ It will return a string containing the direct link to your file.
88
88
  The next parts will come soon, just need some time to finish it
89
89
  and create corresponding tests.
90
90
 
91
+ ---
92
+ ### Video explorer :
93
+
94
+ If you need to list your video you can use this method :
95
+
96
+ DMCloud::Media.list({:page => 1, :per_page => 10})
97
+ It will return videos information and more :
98
+
99
+ result to yaml :
100
+
101
+ '{"result": {
102
+ "list": [{
103
+ "embed_url": "http://api.dmcloud.net/player/embed/:your_id/:media_id",
104
+ "assets": {
105
+ "source": {
106
+ "status": "ready",
107
+ "video_fps": 25.0,
108
+ "file_extension": "mp4",
109
+ "video_fps_mode": "CFR",
110
+ "container": "MPEG-4",
111
+ "audio_samplerate": 44100,
112
+ "video_interlaced": false,
113
+ "video_rotation": 0.0,
114
+ "video_bitrate": 1000618,
115
+ "created": 1347641702,
116
+ "audio_nbr_channel": 2,
117
+ "download_url": "http://cdn.dmcloud.net/route/http/:your_id/:media_id/source-1347634502.mp4?filename=my_video_name-source-1347634502.mp4&auth=1351277028-3-672hcu1m-3fcab065b9bf103e70d3883aa8c657be",
118
+ "video_aspect": 1.7777777777777777,
119
+ "video_height": 576,
120
+ "audio_bitrate": 128017,
121
+ "audio_codec": "AAC LC",
122
+ "file_size": 119133958,
123
+ "duration": 839,
124
+ "video_codec": "AVC",
125
+ "video_width": 1024,
126
+ "global_bitrate": 1134696}},
127
+ "created": 1347641696,
128
+ "meta": { "title": "my video 1 title"},
129
+ "frame_ratio": 1.7740740740740739,
130
+ "id": "5053616094739936ec0006af" }],
131
+ "pages": 1,
132
+ "on_this_page": 3,
133
+ "per_page": 10,
134
+ "total": 3,
135
+ "page": 1}}'
136
+
137
+ As you can see, this give many information, you can submit a hash like this :
138
+
139
+ DMCloud::Media.list({:page => 1, :per_page => 10, :fields => {:meta => :title }, :assets => [:download_url, :created ]})
140
+
141
+
142
+
91
143
  ## Contributing
92
144
 
93
145
  Your welcome to share and enhance this gem.
data/dm_cloud.gemspec CHANGED
@@ -16,5 +16,4 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
- gem.add_dependency 'curb', "~> 0.8.0"
20
19
  end
@@ -40,7 +40,7 @@ module DMCloud
40
40
 
41
41
  assets_names = ['source'] if assets_names.nil?
42
42
  if not fields[:assets]
43
- # request = all_assets_fields(request, assets_names)
43
+ request = all_assets_fields(request, assets_names)
44
44
  else
45
45
  assets_names.each do |name|
46
46
  fields[:assets].each { |value| request << "assets.#{name}.#{value.to_s}" }
@@ -71,7 +71,7 @@ module DMCloud
71
71
 
72
72
  assets_names = ['source'] if assets_names.nil?
73
73
  if not fields[:assets]
74
- # request = all_assets_fields(request, assets_names)
74
+ request = all_assets_fields(request, assets_names)
75
75
  else
76
76
  assets_names.each do |name|
77
77
  fields[:assets].each { |value| request['fields'] << "assets.#{name}.#{value.to_s}" }
@@ -84,6 +84,8 @@ module DMCloud
84
84
 
85
85
  protected
86
86
  # This method exclude stats, but return all information for a media (video or images)
87
+ # NOTE: This is outside the methods because : too long and recurent.
88
+ # It's also used as default if no fields params is submitted.
87
89
  def self.all_assets_fields(request, assets_names)
88
90
  assets_names.each do |name|
89
91
  request['fields'] << "assets.#{name}.download_url"
@@ -77,7 +77,9 @@ module DMCloud
77
77
 
78
78
  params = {
79
79
  :call => call_type,
80
- args: DMCloud::Builder::Media.list(options)
80
+ args: DMCloud::Builder::Media.list(options),
81
+ :page => page,
82
+ :per_page => per_page
81
83
  }
82
84
  DMCloud::Request.execute(call_type, params)
83
85
  end
@@ -6,10 +6,17 @@ module DMCloud
6
6
  DAILYMOTION_API = 'http://api.dmcloud.net/api'
7
7
  DAILYMOTION_STATIC = 'http://api.dmcloud.net/api'
8
8
 
9
+ # This method control signing for Media calls and handle request and response.
10
+ def self.execute(call, params = {})
11
+ url = define(call)
12
+ params['auth'] = DMCloud::Signing.identify(params)
13
+
14
+ result = send_request(params)
15
+ parse_response(result)
16
+ end
17
+
9
18
 
10
19
  def self.send_request(params)
11
- puts 'body request params : ' + params.to_json + "\n" + '-' * 80
12
-
13
20
  @uri = URI.parse(DAILYMOTION_API)
14
21
 
15
22
  http = Net::HTTP.new(@uri.host, @uri.port)
@@ -21,19 +28,13 @@ module DMCloud
21
28
  puts 'request (YAML format ): ' + request.to_yaml + "\n" + '-' * 80
22
29
 
23
30
  http.request(request).body
24
-
25
31
  end
26
32
 
27
- def self.execute(call, params = {})
28
- url = define(call)
29
- params['auth'] = DMCloud::Signing.identify(params)
30
33
 
31
- result = send_request(params)
32
- parse_response(result)
33
- end
34
34
 
35
35
  def self.parse_response(result)
36
- puts 'result : ' + result.to_yaml
36
+ puts 'result : ' + result.to_yaml # For debugging, will be remove when test will exists
37
+ JSON.parse(result)
37
38
  end
38
39
 
39
40
  def self.define(action)
@@ -164,6 +164,11 @@ module DMCloud
164
164
  end
165
165
  end
166
166
 
167
+
168
+ # This block comes from Cloudkey gem.
169
+ # I discovered this gem far after I start this one
170
+ # and I will try to add file upload from http or ftp.
171
+ # (Missing in their gem)
167
172
  def self.normalize params
168
173
  case params
169
174
  when Array
@@ -1,3 +1,3 @@
1
1
  module DMCloud
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.55"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dm_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.55
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,23 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
  date: 2012-10-26 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: curb
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 0.8.0
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 0.8.0
13
+ dependencies: []
30
14
  description: This gem will simplify usage of DailyMotion Cloud API, it represent api
31
15
  in ruby style, with automated handler for search and upload files
32
16
  email: