panda 1.4.2 → 1.4.3

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/.gitignore CHANGED
@@ -17,5 +17,6 @@ tmtags
17
17
  coverage
18
18
  rdoc
19
19
  pkg
20
+ Gemfile.lock
20
21
 
21
22
  ## PROJECT::SPECIFIC
data/README.md CHANGED
@@ -45,7 +45,7 @@ If you don't use a config file and want to simply be setup, do the following (wo
45
45
 
46
46
  In most cases you will have used the [panda\_uploader](http://github.com/newbamboo/panda_uploader) jQuery plugin to upload the video (more details about this are in the [Integrating Panda with Ruby on Rails](http://pandastream.com/docs/integrate_with_rails) tutorial). Then you will want to get the video and screenshots urls of your encoding to display to your users.
47
47
 
48
- The name of the profile can be found in your [Panda account](http://pandastream.com/encoders) when editing an encoding cloud's profiles.
48
+ The name of the profile can be found in your [Panda account](http://pandastream.com/profiles) when editing an encoding cloud's profiles.
49
49
 
50
50
  encodings = Panda::Video.find("1234").encodings
51
51
  => [...]
@@ -2,7 +2,27 @@ require 'uri'
2
2
 
3
3
  module Panda
4
4
  class Config
5
-
5
+
6
+ def self.from_panda_url(panda_url)
7
+ panda_uri = URI.parse(panda_url)
8
+
9
+ config = new
10
+ config.access_key = panda_uri.user
11
+ config.secret_key = panda_uri.password
12
+ config.cloud_id = panda_uri.path[1..-1]
13
+ config.api_host = panda_uri.host
14
+ config.api_port = API_PORT
15
+ config
16
+ end
17
+
18
+ def self.from_hash(auth_params)
19
+ config = new
20
+ auth_params.each_key do |key|
21
+ config.send("#{key}=", auth_params[key])
22
+ end
23
+ config
24
+ end
25
+
6
26
  def config
7
27
  @config ||= {}
8
28
  end
@@ -32,6 +52,7 @@ module Panda
32
52
  end
33
53
 
34
54
  # Setup connection for Heroku
55
+ # @deprecated: use Config.from_panda_url(panda_url)
35
56
  def parse_panda_url(panda_url)
36
57
  panda_uri = URI.parse(panda_url)
37
58
 
@@ -53,6 +74,27 @@ module Panda
53
74
  raise "Region Unknown"
54
75
  end
55
76
  end
56
-
77
+
78
+ def validate!
79
+ errs = validation_errors
80
+ raise Panda::ConfigurationError, errs.join(', ') if errs.any?
81
+ true
82
+ end
83
+
84
+ def valid?
85
+ validation_errors.empty?
86
+ end
87
+
88
+ def validation_errors
89
+ err = []
90
+ if config["access_key"].to_s.empty?
91
+ err << "access_key is missing"
92
+ end
93
+ if config["secret_key"].to_s.empty?
94
+ err << "secret_key is missing"
95
+ end
96
+ err
97
+ end
98
+
57
99
  end
58
100
  end
@@ -14,4 +14,7 @@ module Panda
14
14
  end
15
15
  end
16
16
 
17
- end
17
+ class ConfigurationError < Panda::Error
18
+ end
19
+
20
+ end
@@ -9,26 +9,27 @@ module Panda
9
9
  def_delegators :connection, :get, :post, :put, :delete, :api_url, :setup_bucket, :signed_params
10
10
 
11
11
  def configure(auth_params=nil, &block)
12
+ raise ArgumentError, "missing auth params or block" unless auth_params || block_given?
12
13
 
13
14
  if !auth_params
14
- configure = Config.new
15
+ config = Config.new
15
16
  if (block.arity > 0)
16
- block.call(configure)
17
+ block.call(config)
17
18
  else
18
- configure.instance_eval(&block)
19
+ config.instance_eval(&block)
19
20
  end
20
-
21
- auth_params = configure.to_hash
22
21
  elsif auth_params.is_a?(String)
23
- auth_params = Config.new.parse_panda_url(auth_params)
22
+ config = Config.from_panda_url(auth_params)
23
+ else
24
+ config = Config.from_hash(auth_params)
24
25
  end
25
26
 
26
- configure_with_auth_params(auth_params)
27
+ configure_with_auth_params(config)
27
28
  true
28
29
  end
29
30
 
30
31
  def configure_heroku
31
- configure_with_auth_params Config.new.parse_panda_url(ENV['PANDASTREAM_URL'])
32
+ configure_with_auth_params Config.from_panda_url(ENV['PANDASTREAM_URL'])
32
33
  true
33
34
  end
34
35
 
@@ -37,7 +38,7 @@ module Panda
37
38
  end
38
39
 
39
40
  def connection
40
- raise "Panda is not configured!" unless @connection
41
+ raise Panda::ConfigurationError, "Panda is not configured!" unless @connection
41
42
  @connection
42
43
  end
43
44
 
@@ -55,8 +56,9 @@ module Panda
55
56
  Panda::Adapter::RestClient
56
57
  end
57
58
 
58
- def configure_with_auth_params(auth_params)
59
- connect!(auth_params)
59
+ def configure_with_auth_params(config)
60
+ config.validate!
61
+ connect!(config.to_hash)
60
62
  @clouds = {}
61
63
  @cloud = Cloud::new(:id => @connection.cloud_id)
62
64
  end
@@ -1,3 +1,3 @@
1
1
  module Panda
2
- VERSION = "1.4.2"
2
+ VERSION = "1.4.3"
3
3
  end
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency "rest-client"
17
17
  s.add_dependency "json"
18
18
 
19
+ s.add_development_dependency "rake"
19
20
  s.add_development_dependency "timecop"
20
21
  s.add_development_dependency "rspec", "2.4.0"
21
22
  s.add_development_dependency "webmock"
@@ -3,7 +3,7 @@ require 'timecop'
3
3
 
4
4
  describe Panda do
5
5
  before(:each) do
6
- new_time = Time.local(20010, 1, 12, 1, 0, 0)
6
+ new_time = Time.utc(20010, 1, 12, 1, 0, 0)
7
7
  Timecop.freeze(new_time)
8
8
  end
9
9
 
@@ -13,12 +13,60 @@ describe Panda do
13
13
  it "should raise error for #{method}" do
14
14
  lambda {
15
15
  Panda.send(method, nil, nil)
16
- }.should raise_error("Panda is not configured!")
16
+ }.should raise_error(Panda::ConfigurationError, "Panda is not configured!")
17
17
  end
18
18
  end
19
19
 
20
20
  end
21
21
 
22
+ describe "root configuration with hash" do
23
+ it "should not fail is access_key and secret_key are given" do
24
+ proc do
25
+ Panda.configure({:access_key => "bar", :secret_key => "baz"})
26
+ end.should_not raise_error(Panda::ConfigurationError)
27
+ end
28
+
29
+ it "should fail if access_key or secret_key are missing" do
30
+ proc do
31
+ Panda.configure({:secret_key => "baz"})
32
+ end.should raise_error(Panda::ConfigurationError)
33
+ proc do
34
+ Panda.configure({:access_key => "bar"})
35
+ end.should raise_error(Panda::ConfigurationError)
36
+ proc do
37
+ Panda.configure({})
38
+ end.should raise_error(Panda::ConfigurationError)
39
+ end
40
+ end
41
+
42
+ describe "root configuration with block" do
43
+ it "should not fail is access_key and secret_key are given" do
44
+ proc do
45
+ Panda.configure do
46
+ access_key "bar"
47
+ secret_key "baz"
48
+ end
49
+ end.should_not raise_error(Panda::ConfigurationError)
50
+ end
51
+
52
+ it "should fail if access_key or secret_key are missing" do
53
+ proc do
54
+ Panda.configure do
55
+ secret_key "baz"
56
+ end
57
+ end.should raise_error(Panda::ConfigurationError)
58
+ proc do
59
+ Panda.configure do
60
+ access_key "bar"
61
+ end
62
+ end.should raise_error(Panda::ConfigurationError)
63
+ proc do
64
+ Panda.configure do
65
+ end
66
+ end.should raise_error(Panda::ConfigurationError)
67
+ end
68
+ end
69
+
22
70
  shared_examples_for "Connected" do
23
71
 
24
72
  it "should make get request with signed request to panda server" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease: false
4
+ hash: 1
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 2
10
- version: 1.4.2
9
+ - 3
10
+ version: 1.4.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - New Bamboo
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-16 00:00:00 +00:00
19
- default_executable:
18
+ date: 2011-08-18 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: ruby-hmac
@@ -63,7 +62,7 @@ dependencies:
63
62
  type: :runtime
64
63
  version_requirements: *id003
65
64
  - !ruby/object:Gem::Dependency
66
- name: timecop
65
+ name: rake
67
66
  prerelease: false
68
67
  requirement: &id004 !ruby/object:Gem::Requirement
69
68
  none: false
@@ -77,9 +76,23 @@ dependencies:
77
76
  type: :development
78
77
  version_requirements: *id004
79
78
  - !ruby/object:Gem::Dependency
80
- name: rspec
79
+ name: timecop
81
80
  prerelease: false
82
81
  requirement: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ type: :development
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
93
+ name: rspec
94
+ prerelease: false
95
+ requirement: &id006 !ruby/object:Gem::Requirement
83
96
  none: false
84
97
  requirements:
85
98
  - - "="
@@ -91,11 +104,11 @@ dependencies:
91
104
  - 0
92
105
  version: 2.4.0
93
106
  type: :development
94
- version_requirements: *id005
107
+ version_requirements: *id006
95
108
  - !ruby/object:Gem::Dependency
96
109
  name: webmock
97
110
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
111
+ requirement: &id007 !ruby/object:Gem::Requirement
99
112
  none: false
100
113
  requirements:
101
114
  - - ">="
@@ -105,7 +118,7 @@ dependencies:
105
118
  - 0
106
119
  version: "0"
107
120
  type: :development
108
- version_requirements: *id006
121
+ version_requirements: *id007
109
122
  description: Panda Client
110
123
  email:
111
124
  - info@pandastream.com
@@ -161,7 +174,6 @@ files:
161
174
  - spec/profile_spec.rb
162
175
  - spec/spec_helper.rb
163
176
  - spec/video_spec.rb
164
- has_rdoc: true
165
177
  homepage: http://github.com/newbamboo/panda_gem
166
178
  licenses: []
167
179
 
@@ -191,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
191
203
  requirements: []
192
204
 
193
205
  rubyforge_project: panda
194
- rubygems_version: 1.3.7
206
+ rubygems_version: 1.8.5
195
207
  signing_key:
196
208
  specification_version: 3
197
209
  summary: Panda Client