ankoder 0.0.4 → 0.0.5
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/Manifest.txt +0 -1
- data/lib/ankoder/auth.rb +2 -2
- data/lib/ankoder/base.rb +2 -0
- data/lib/ankoder/browser.rb +16 -7
- data/lib/ankoder/download.rb +0 -1
- data/lib/ankoder/ext.rb +1 -1
- data/lib/ankoder/job.rb +2 -3
- data/lib/ankoder/upload.rb +0 -1
- data/lib/ankoder/version.rb +1 -1
- data/lib/ankoder/video.rb +5 -2
- data/lib/ankoder.rb +22 -3
- data/website/index.html +26 -31
- data.tar.gz.sig +0 -0
- metadata +2 -3
- metadata.gz.sig +0 -0
- data/log/debug.log +0 -0
data/Manifest.txt
CHANGED
data/lib/ankoder/auth.rb
CHANGED
@@ -44,8 +44,8 @@ module Ankoder
|
|
44
44
|
|
45
45
|
# Same as initialize
|
46
46
|
#
|
47
|
-
|
48
|
-
def self.create(login, password, &block)
|
47
|
+
# Auth::create 'login', 'password'
|
48
|
+
def self.create(login= Configuration::auth_user, password =Configuration::auth_password, &block)
|
49
49
|
new(:login => login, :password => password, &block)
|
50
50
|
end
|
51
51
|
|
data/lib/ankoder/base.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Ankoder
|
2
2
|
# You can connect to the _ankoderapi_session service permanently
|
3
3
|
#
|
4
|
+
# Base::establish_connection! :login => "login", :password => "password"
|
5
|
+
#
|
4
6
|
# You can access all the resources and manipulate the objects like in ActiveRecord
|
5
7
|
#
|
6
8
|
# v = Video.find(15).update_attributes :name => "My edited title"
|
data/lib/ankoder/browser.rb
CHANGED
@@ -21,10 +21,19 @@ module Ankoder
|
|
21
21
|
raise ServerError, message if code == 500
|
22
22
|
end
|
23
23
|
|
24
|
-
def header(session=nil) #:nodoc:
|
24
|
+
def header(session=nil,action=nil,path=nil) #:nodoc:
|
25
25
|
h = {}
|
26
26
|
h.merge!({"Cookie" => "_ankoderapi_session=#{session};"}) if session
|
27
27
|
h.merge!({"User-Agent" => "_ankoderapi_session ruby API - #{VERSION::STRING}"})
|
28
|
+
if !Configuration::access_key.blank? and !Configuration::private_key.blank?
|
29
|
+
h.merge!({"ankoder_access_key" => Configuration::access_key})
|
30
|
+
h.merge!({"ankoder_date" => Time.now.httpdate })
|
31
|
+
|
32
|
+
salt = Digest::SHA1.hexdigest("-#{Time.now.httpdate}-#{action}-#{path}-")[0..19]
|
33
|
+
passkey = Base64.encode64(HMAC::SHA1::digest(Configuration::private_key, salt)).strip
|
34
|
+
h.merge!({"ankoder_passkey" => "#{passkey}"})
|
35
|
+
end
|
36
|
+
h
|
28
37
|
end
|
29
38
|
|
30
39
|
# Login to _ankoderapi_session service. Return the session ID.
|
@@ -40,30 +49,30 @@ module Ankoder
|
|
40
49
|
# GET on path
|
41
50
|
def get(path, session=nil)
|
42
51
|
path += ".#{OUT_FORMAT}" unless path.include? "."
|
43
|
-
res = Net::HTTP.start(
|
52
|
+
res = Net::HTTP.start(Configuration::host,Configuration::port) {|http| http.get(path, header(session,"GET",path))}
|
44
53
|
raise_if_response_error(res)
|
45
54
|
res
|
46
55
|
end
|
47
56
|
|
48
57
|
# POST on path and pass the query(Hash)
|
49
58
|
def post(path, query={}, session=nil)
|
50
|
-
res = Net::HTTP.start(
|
59
|
+
res = Net::HTTP.start(Configuration::host,Configuration::port) {|http| http.post(path, query.merge(:format => OUT_FORMAT).to_a.map{|x| x.join("=")}.join("&"), self.header(session,"POST",path))}
|
51
60
|
raise_if_response_error(res)
|
52
61
|
res
|
53
62
|
end
|
54
63
|
|
55
64
|
# PUT on path and pass the query(Hash)
|
56
65
|
def put(path, query={}, session=nil)
|
57
|
-
req = Net::HTTP::Put.new(path, header(session))
|
66
|
+
req = Net::HTTP::Put.new(path, header(session,"PUT",path))
|
58
67
|
req.form_data = query.merge(:format => OUT_FORMAT)
|
59
|
-
res = Net::HTTP.new(
|
68
|
+
res = Net::HTTP.new(Configuration::host,Configuration::port).start {|http| http.request(req) }
|
60
69
|
raise_if_response_error(res)
|
61
70
|
true
|
62
71
|
end
|
63
72
|
|
64
73
|
# DELETE on path
|
65
74
|
def delete(path, session=nil)
|
66
|
-
res = Net::HTTP.start(
|
75
|
+
res = Net::HTTP.start(Configuration::host,Configuration::port) {|http| http.delete(path+"."+OUT_FORMAT, header(session,"DELETE",path))}
|
67
76
|
raise_if_response_error(res)
|
68
77
|
true
|
69
78
|
end
|
@@ -75,7 +84,7 @@ module Ankoder
|
|
75
84
|
|
76
85
|
boundary = '349832898984244898448024464570528145'
|
77
86
|
query = params.collect {|p| '--' + boundary + "\r\n" + p}.join('') + "--" + boundary + "--\r\n"
|
78
|
-
res = Net::HTTP.start(
|
87
|
+
res = Net::HTTP.start(Configuration::host,Configuration::port) {|http| http.post(path, query, header(session,"POST",path).merge("Content-Type" => "multipart/form-data; boundary=" + boundary))}
|
79
88
|
raise_if_response_error(res)
|
80
89
|
res
|
81
90
|
end
|
data/lib/ankoder/download.rb
CHANGED
@@ -3,7 +3,6 @@ module Ankoder
|
|
3
3
|
|
4
4
|
class Download < Base
|
5
5
|
# Download file from the given URL
|
6
|
-
#
|
7
6
|
# Download.create('url' => 'http://host.com/file.avi', :postback_url => 'http://your_own_host.com/postback/download')
|
8
7
|
#
|
9
8
|
# the return result would be the Video record that you can save for further checking
|
data/lib/ankoder/ext.rb
CHANGED
@@ -63,7 +63,7 @@ module Ankoder
|
|
63
63
|
|
64
64
|
# Select Ankoder#Base object containing the conditions
|
65
65
|
#
|
66
|
-
# Profile.find(:all).find_with_conditions(:name => "
|
66
|
+
# Profile.find(:all).find_with_conditions(:name => "bar")
|
67
67
|
def find_with_conditions(conditions={})
|
68
68
|
return self if conditions.nil? or conditions.empty?
|
69
69
|
res = []
|
data/lib/ankoder/job.rb
CHANGED
@@ -6,13 +6,12 @@ module Ankoder
|
|
6
6
|
#
|
7
7
|
# Video_ID is the video id that get from Ankoder::Download
|
8
8
|
# Profile_ID is selected from the list of Ankoder::Profile.find(:all)
|
9
|
-
#
|
9
|
+
#
|
10
10
|
# Job.create(:original_file_id => "Video_ID", :profile_id => "Profile_ID",
|
11
11
|
# :postback_url => 'http://your_own_host.com/postback/job')
|
12
|
-
def self.create(attributes={}
|
12
|
+
def self.create(attributes={})
|
13
13
|
job = super
|
14
14
|
return job
|
15
15
|
end
|
16
|
-
|
17
16
|
end
|
18
17
|
end
|
data/lib/ankoder/upload.rb
CHANGED
data/lib/ankoder/version.rb
CHANGED
data/lib/ankoder/video.rb
CHANGED
@@ -7,7 +7,10 @@ module Ankoder
|
|
7
7
|
# Videos.find(video_id)
|
8
8
|
#
|
9
9
|
class Video < Base
|
10
|
-
|
11
|
-
|
10
|
+
def self.url_for(video_id, expires_in = nil)
|
11
|
+
message = {:access_key => Configuration::access_key, :expires => expires(expires_in)}.to_json
|
12
|
+
encoded_message = Base64.encode64(HMAC::SHA1::digest(Configuration::private_key, message)).strip
|
13
|
+
"http://#{Configuration::host}/video/#{video_id}/download/?message=#{CGI.escape(message)}&signature=#{encoded_message}"
|
14
|
+
end
|
12
15
|
end
|
13
16
|
end
|
data/lib/ankoder.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
$:.unshift File.dirname(__FILE__)
|
2
|
-
|
3
1
|
require "xmlsimple"
|
4
2
|
require "cgi"
|
5
3
|
|
6
4
|
module Ankoder
|
7
|
-
|
5
|
+
|
8
6
|
OUT_FORMAT = "xml" unless const_defined? :OUT_FORMAT
|
9
7
|
RESOURCES = %w{job profile download video account upload} unless const_defined? :RESOURCES
|
10
8
|
DEFAULT_EXPIRY = 300 unless const_defined? :DEFAULT_EXPIRY
|
@@ -33,6 +31,26 @@ module Ankoder
|
|
33
31
|
class ServerError < RuntimeError; end
|
34
32
|
class SessionNotFound < RuntimeError; end
|
35
33
|
|
34
|
+
class Configuration
|
35
|
+
cattr_accessor :private_key , :access_key , :auth_user , :auth_password , :host , :port
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.load_config
|
39
|
+
begin
|
40
|
+
globe_config = YAML::load(ERB.new((IO.read("#{RAILS_ROOT}/config/ankoder.yml"))).result)
|
41
|
+
auth_config = globe_config["#{RAILS_ENV}"]
|
42
|
+
Configuration::private_key = auth_config["private_key"]
|
43
|
+
Configuration::access_key = auth_config["access_key"]
|
44
|
+
Configuration::auth_user = auth_config["auth_user"]
|
45
|
+
Configuration::auth_password = auth_config["auth_password"]
|
46
|
+
Configuration::host = auth_config["host"] || "api.ankoder.com"
|
47
|
+
Configuration::port = auth_config["port"] || "80"
|
48
|
+
rescue
|
49
|
+
raise $!, " Ankoder: problems trying to load '\"#{RAILS_ROOT}/config/ankoder.yml\")}'"
|
50
|
+
raise
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
36
54
|
# Convert the XML response into Hash
|
37
55
|
def self.response(xml)
|
38
56
|
XmlSimple.xml_in(xml, {'ForceArray' => false})
|
@@ -59,6 +77,7 @@ end
|
|
59
77
|
|
60
78
|
$: << File.dirname(File.expand_path(__FILE__))
|
61
79
|
|
80
|
+
Ankoder.load_config if defined?(RAILS_ROOT)
|
62
81
|
require "ankoder/ext"
|
63
82
|
require "ankoder/version"
|
64
83
|
require "ankoder/browser"
|
data/website/index.html
CHANGED
@@ -33,40 +33,36 @@
|
|
33
33
|
<h1>ankoder</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/ankoder"; return false'>
|
35
35
|
<p>Get Version</p>
|
36
|
-
<a href="http://rubyforge.org/projects/ankoder" class="numbers">0.0.
|
36
|
+
<a href="http://rubyforge.org/projects/ankoder" class="numbers">0.0.5</a>
|
37
37
|
</div>
|
38
38
|
<h1>→ ‘ankoder’</h1>
|
39
39
|
|
40
40
|
|
41
41
|
<h2>What</h2>
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
<
|
48
|
-
|
49
|
-
|
50
|
-
<
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
<
|
57
|
-
<h4>To list out the available converting profile</h4>
|
58
|
-
<p>profiles = user.profiles.find(:all)</p>
|
59
|
-
<h4>To download a video from Youtube</h4>
|
60
|
-
<p>download = user.downloads.create('url' =>"http://www.youtube.com/watch?v=Sex4w4h7Tqk") </p>
|
61
|
-
<h4>To create a job to convert a video file</h4>
|
62
|
-
<p>convert_job.create(:video_id =>download.id , :profile_id => profile.id )</p>
|
63
|
-
<h2>Forum</h2>
|
42
|
+
|
43
|
+
|
44
|
+
<h2>Installing</h2>
|
45
|
+
|
46
|
+
|
47
|
+
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">ankoder</span></pre></p>
|
48
|
+
|
49
|
+
|
50
|
+
<h2>The basics</h2>
|
51
|
+
|
52
|
+
|
53
|
+
<h2>Demonstration of usage</h2>
|
54
|
+
|
55
|
+
|
56
|
+
<h2>Forum</h2>
|
64
57
|
|
65
58
|
|
66
59
|
<p><a href="http://groups.google.com/group/ankoder">http://groups.google.com/group/ankoder</a></p>
|
67
|
-
|
68
|
-
|
69
|
-
|
60
|
+
|
61
|
+
|
62
|
+
<p><span class="caps">TODO</span> – create Google Group – ankoder</p>
|
63
|
+
|
64
|
+
|
65
|
+
<h2>How to submit patches</h2>
|
70
66
|
|
71
67
|
|
72
68
|
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
@@ -84,12 +80,11 @@
|
|
84
80
|
<h2>Contact</h2>
|
85
81
|
|
86
82
|
|
87
|
-
<p>Comments are welcome. Send an email to <a href="mailto:
|
83
|
+
<p>Comments are welcome. Send an email to <a href="mailto:FIXME"><span class="caps">FIXME</span> full name</a> email via the <a href="http://groups.google.com/group/ankoder">forum</a></p>
|
88
84
|
<p class="coda">
|
89
|
-
<a href="FIXME email"
|
90
|
-
|
91
|
-
|
92
|
-
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a> </p>
|
85
|
+
<a href="FIXME email">FIXME full name</a>, 30th April 2008<br>
|
86
|
+
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
87
|
+
</p>
|
93
88
|
</div>
|
94
89
|
|
95
90
|
<!-- insert site tracking codes here, like Google Urchin -->
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ankoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ""
|
6
6
|
authors:
|
7
7
|
- RoRCraft.com
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
iplROzUF++Prmx2JGuO6kA==
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2008-04-
|
33
|
+
date: 2008-04-30 00:00:00 +08:00
|
34
34
|
default_executable:
|
35
35
|
dependencies: []
|
36
36
|
|
@@ -67,7 +67,6 @@ files:
|
|
67
67
|
- lib/ankoder/upload.rb
|
68
68
|
- lib/ankoder/version.rb
|
69
69
|
- lib/ankoder/video.rb
|
70
|
-
- log/debug.log
|
71
70
|
- script/destroy
|
72
71
|
- script/generate
|
73
72
|
- script/txt2html
|
metadata.gz.sig
CHANGED
Binary file
|
data/log/debug.log
DELETED
File without changes
|