panda 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Panda
2
2
 
3
- Panda gem provides an interface to access the [Panda](http://api.pandastream.com) API from Ruby.
3
+ Panda gem provides an interface to access the [Panda](http://pandastream.com) API from Ruby.
4
4
 
5
5
  ## Installation
6
6
 
@@ -10,18 +10,18 @@ Panda gem provides an interface to access the [Panda](http://api.pandastream.com
10
10
 
11
11
  require 'panda'
12
12
 
13
- ### Connecting to Panda
13
+ ### Creating an instance of the client
14
14
 
15
- Panda.connect!({
15
+ panda = Panda.new({
16
16
  :cloud_id => 'cloud_id',
17
17
  :access_key => 'access_key',
18
18
  :secret_key => 'secret_key',
19
- :api_host => 'api.pandastream.com'
19
+ :api_host => 'api.pandastream.com' # This may change depending on the region
20
20
  })
21
21
 
22
22
  ### Posting a video
23
23
 
24
- Panda.post('/videos.json', {:source_url => 'http://www.example.com/original_video.mp4'})
24
+ panda.post('/videos.json', {:source_url => 'http://www.example.com/original_video.mp4'})
25
25
  =>{"duration"=>nil,
26
26
  "created_at"=>"2010/01/15 14:48:42 +0000",
27
27
  "original_filename"=>"panda.mp4",
@@ -40,7 +40,7 @@ Panda gem provides an interface to access the [Panda](http://api.pandastream.com
40
40
 
41
41
  ### Getting all videos
42
42
 
43
- Panda.get('/videos.json')
43
+ panda.get('/videos.json')
44
44
  => [{"duration"=>14010,
45
45
  "created_at"=>"2010/01/13 16:45:29 +0000",
46
46
  "original_filename"=>"panda.mp4",
@@ -59,7 +59,7 @@ Panda gem provides an interface to access the [Panda](http://api.pandastream.com
59
59
 
60
60
  ### Getting video encodings
61
61
 
62
- Panda.get('/videos/0ee6b656-0063-11df-a433-1231390041c1/encodings.json')
62
+ panda.get('/videos/0ee6b656-0063-11df-a433-1231390041c1/encodings.json')
63
63
  => [{"encoder_id"=>nil,
64
64
  "created_at"=>"2010/01/13 16:45:30 +0000",
65
65
  "video_id"=>"0ee6b656-0063-11df-a433-1231390041c1",
@@ -79,11 +79,11 @@ Panda gem provides an interface to access the [Panda](http://api.pandastream.com
79
79
 
80
80
  ### Deleting a video encoding
81
81
 
82
- Panda.delete('/encodings/0f815986-0063-11df-a433-1231390041c1.json')
82
+ panda.delete('/encodings/0f815986-0063-11df-a433-1231390041c1.json')
83
83
 
84
84
  ### Deleting a video
85
85
 
86
- Panda.delete('/videos/0ee6b656-0063-11df-a433-1231390041c1.json')
86
+ panda.delete('/videos/0ee6b656-0063-11df-a433-1231390041c1.json')
87
87
 
88
88
  Copyright
89
89
  ---------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
@@ -1,10 +1,11 @@
1
+ require 'rubygems'
1
2
  require 'cgi'
2
3
  require 'time'
3
4
  require 'hmac'
4
5
  require 'hmac-sha2'
5
6
  require 'base64'
6
7
 
7
- module Panda
8
+ class Panda
8
9
  class ApiAuthentication
9
10
  def self.authenticate(verb, request_uri, host, secret_key, params_given={})
10
11
  # Ensure all param keys are strings
@@ -1,61 +1,57 @@
1
1
  require 'restclient'
2
2
 
3
- module Panda
4
- class << self
3
+ class Panda
4
+ def initialize(auth_params={})
5
+ params = {:api_host => 'api.pandastream.com', :api_port => 80 }.merge(auth_params)
5
6
 
6
- def connect!(auth_params={})
7
- params = {:api_host => 'api.pandastream.com', :api_port => 80 }.merge(auth_params)
8
-
9
- @api_version = 2
10
- @cloud_id = params["cloud_id"] || params[:cloud_id]
11
- @access_key = params["access_key"] || params[:access_key]
12
- @secret_key = params["secret_key"] || params[:secret_key]
13
- @api_host = params["api_host"] || params[:api_host]
14
- @api_port = params["api_port"] || params[:api_port]
15
-
16
- @prefix = params["prefix_url"] || "v#{@api_version}"
17
-
18
- @connection = RestClient::Resource.new(api_url)
19
- end
7
+ @api_version = 2
8
+ @cloud_id = params["cloud_id"] || params[:cloud_id]
9
+ @access_key = params["access_key"] || params[:access_key]
10
+ @secret_key = params["secret_key"] || params[:secret_key]
11
+ @api_host = params["api_host"] || params[:api_host]
12
+ @api_port = params["api_port"] || params[:api_port]
20
13
 
21
- def get(request_uri, params={})
22
- append_authentication_params!("GET", request_uri, params)
23
- @connection[ApiAuthentication.add_params_to_request_uri(request_uri, params)].get
24
- end
25
-
26
- def post(request_uri, params)
27
- append_authentication_params!("POST", request_uri, params)
28
- @connection[request_uri].post(params)
29
- end
14
+ @prefix = params["prefix_url"] || "v#{@api_version}"
15
+
16
+ @connection = RestClient::Resource.new(api_url)
17
+ end
18
+
19
+ def get(request_uri, params={})
20
+ append_authentication_params!("GET", request_uri, params)
21
+ @connection[ApiAuthentication.add_params_to_request_uri(request_uri, params)].get
22
+ end
30
23
 
31
- def put(request_uri, params)
32
- append_authentication_params!("PUT", request_uri, params)
33
- @connection[request_uri].put(params)
34
- end
24
+ def post(request_uri, params)
25
+ append_authentication_params!("POST", request_uri, params)
26
+ @connection[request_uri].post(params)
27
+ end
35
28
 
36
- def delete(request_uri, params={})
37
- append_authentication_params!("DELETE", request_uri, params)
38
- @connection[ApiAuthentication.add_params_to_request_uri(request_uri, params)].delete
39
- end
40
-
41
- def authentication_params(verb, request_uri, params)
42
- auth_params = {}
43
- auth_params['cloud_id'] = @cloud_id
44
- auth_params['access_key'] = @access_key
45
- auth_params['timestamp'] = Time.now.iso8601(6)
46
- auth_params['signature'] = ApiAuthentication.authenticate(verb, request_uri, @api_host, @secret_key, params.merge(auth_params))
47
- return auth_params
48
- end
49
-
50
- def api_url
51
- "http://#{@api_host}:#{@api_port}/#{@prefix}"
52
- end
53
- private
54
-
55
- def append_authentication_params!(verb, request_uri, params)
56
- auth_params = authentication_params(verb, request_uri, params)
57
- params.merge!(auth_params)
58
- end
29
+ def put(request_uri, params)
30
+ append_authentication_params!("PUT", request_uri, params)
31
+ @connection[request_uri].put(params)
32
+ end
59
33
 
34
+ def delete(request_uri, params={})
35
+ append_authentication_params!("DELETE", request_uri, params)
36
+ @connection[ApiAuthentication.add_params_to_request_uri(request_uri, params)].delete
37
+ end
38
+
39
+ def authentication_params(verb, request_uri, params)
40
+ auth_params = {}
41
+ auth_params['cloud_id'] = @cloud_id
42
+ auth_params['access_key'] = @access_key
43
+ auth_params['timestamp'] = Time.now.iso8601(6)
44
+ auth_params['signature'] = ApiAuthentication.authenticate(verb, request_uri, @api_host, @secret_key, params.merge(auth_params))
45
+ return auth_params
46
+ end
47
+
48
+ def api_url
49
+ "http://#{@api_host}:#{@api_port}/#{@prefix}"
50
+ end
51
+ private
52
+
53
+ def append_authentication_params!(verb, request_uri, params)
54
+ auth_params = authentication_params(verb, request_uri, params)
55
+ params.merge!(auth_params)
60
56
  end
61
57
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{panda}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["New Bamboo"]
12
- s.date = %q{2010-01-26}
12
+ s.date = %q{2010-02-22}
13
13
  s.description = %q{Panda Client}
14
14
  s.email = %q{info@pandastream.com}
15
15
  s.extra_rdoc_files = [
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
34
34
  s.homepage = %q{http://github.com/newbamboo/panda_gem}
35
35
  s.rdoc_options = ["--charset=UTF-8"]
36
36
  s.require_paths = ["lib"]
37
- s.rubygems_version = %q{1.3.5}
37
+ s.rubygems_version = %q{1.3.6}
38
38
  s.summary = %q{Panda Client}
39
39
  s.test_files = [
40
40
  "spec/panda_spec.rb",
@@ -3,19 +3,20 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe Panda do
4
4
  before(:each) do
5
5
  FakeWeb.allow_net_connect = false
6
- Panda.connect!({"access_key" => "my_access_key", "secret_key" => "my_secret_key", "api_host" => "myapihost", "api_port" => 85, "cloud_id" => 'my_cloud_id' })
6
+ @panda = Panda.new({"access_key" => "my_access_key", "secret_key" => "my_secret_key", "api_host" => "myapihost", "api_port" => 85, "cloud_id" => 'my_cloud_id' })
7
+ # Panda.connect!({"access_key" => "my_access_key", "secret_key" => "my_secret_key", "api_host" => "myapihost", "api_port" => 85, "cloud_id" => 'my_cloud_id' })
7
8
  Time.stub!(:now).and_return(mock("time", :iso8601 => "2009-11-04T17:54:11+00:00"))
8
9
  end
9
10
 
10
11
 
11
12
  it "should make get request with signed request to panda server" do
12
13
  FakeWeb.register_uri(:get, "http://myapihost:85/v2/videos?timestamp=2009-11-04T17%3A54%3A11%2B00%3A00&signature=CxSYPM65SeeWH4CE%2FLcq7Ny2NtwxlpS8QOXG2BKe4p8%3D&access_key=my_access_key&cloud_id=my_cloud_id", :body => "abc")
13
- Panda.get("/videos").should == "abc"
14
+ @panda.get("/videos").should == "abc"
14
15
  end
15
16
 
16
17
  it "should make delete request with signed request to panda server" do
17
18
  FakeWeb.register_uri(:delete, "http://myapihost:85/v2/videos/1?timestamp=2009-11-04T17%3A54%3A11%2B00%3A00&signature=t0IYclDXgjZFRYaMf0Gbg%2B5vOqp7q8QQRN8tlQ3bk8Q%3D&access_key=my_access_key&cloud_id=my_cloud_id", :query => {})
18
- Panda.delete("/videos/1").should
19
+ @panda.delete("/videos/1").should
19
20
  FakeWeb.should have_requested(:delete, "http://myapihost:85/v2/videos/1?timestamp=2009-11-04T17%3A54%3A11%2B00%3A00&signature=t0IYclDXgjZFRYaMf0Gbg%2B5vOqp7q8QQRN8tlQ3bk8Q%3D&access_key=my_access_key&cloud_id=my_cloud_id")
20
21
  end
21
22
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - New Bamboo
@@ -9,59 +14,74 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-01-26 00:00:00 +00:00
17
+ date: 2010-02-22 00:00:00 +00:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 9
23
31
  version: 1.2.9
24
- version:
32
+ type: :development
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: fakeweb
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
33
43
  version: "0"
34
- version:
44
+ type: :development
45
+ version_requirements: *id002
35
46
  - !ruby/object:Gem::Dependency
36
47
  name: fakeweb-matcher
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
43
55
  version: "0"
44
- version:
56
+ type: :development
57
+ version_requirements: *id003
45
58
  - !ruby/object:Gem::Dependency
46
59
  name: ruby-hmac
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
60
+ prerelease: false
61
+ requirement: &id004 !ruby/object:Gem::Requirement
50
62
  requirements:
51
63
  - - ">="
52
64
  - !ruby/object:Gem::Version
65
+ segments:
66
+ - 0
67
+ - 3
68
+ - 2
53
69
  version: 0.3.2
54
- version:
70
+ type: :runtime
71
+ version_requirements: *id004
55
72
  - !ruby/object:Gem::Dependency
56
73
  name: rest-client
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
74
+ prerelease: false
75
+ requirement: &id005 !ruby/object:Gem::Requirement
60
76
  requirements:
61
77
  - - ">="
62
78
  - !ruby/object:Gem::Version
79
+ segments:
80
+ - 1
81
+ - 2
63
82
  version: "1.2"
64
- version:
83
+ type: :runtime
84
+ version_requirements: *id005
65
85
  description: Panda Client
66
86
  email: info@pandastream.com
67
87
  executables: []
@@ -98,18 +118,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
118
  requirements:
99
119
  - - ">="
100
120
  - !ruby/object:Gem::Version
121
+ segments:
122
+ - 0
101
123
  version: "0"
102
- version:
103
124
  required_rubygems_version: !ruby/object:Gem::Requirement
104
125
  requirements:
105
126
  - - ">="
106
127
  - !ruby/object:Gem::Version
128
+ segments:
129
+ - 0
107
130
  version: "0"
108
- version:
109
131
  requirements: []
110
132
 
111
133
  rubyforge_project:
112
- rubygems_version: 1.3.5
134
+ rubygems_version: 1.3.6
113
135
  signing_key:
114
136
  specification_version: 3
115
137
  summary: Panda Client