panda 0.2.1 → 0.3.0

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/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