tangerine 0.2.0 → 0.3.1
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/.pairs +13 -0
- data/Gemfile +6 -1
- data/Gemfile.lock +17 -1
- data/VERSION +1 -1
- data/lib/tangerine/backlot/channel_set.rb +30 -0
- data/lib/tangerine.rb +2 -0
- data/spec/spec_helper.rb +9 -1
- data/spec/support/functionally_equivalent.rb +13 -0
- data/spec/support/vcr_cassettes/Tangerine_Query_new_contentType_MultiChannel_.yml +107 -0
- data/spec/support/vcr_cassettes/Tangerine_Video_all.yml +7019 -0
- data/spec/support/vcr_support.rb +11 -0
- data/spec/tangerine/channel_set_spec.rb +43 -0
- data/tangerine.gemspec +107 -0
- metadata +111 -19
data/.pairs
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
pairs:
|
2
|
+
aw: Alex Welch; alexwelch
|
3
|
+
jz: Jay Zeschin; jayzes
|
4
|
+
ja: Josh Abbott; joshua.abbott
|
5
|
+
br: Brian Rose
|
6
|
+
gd: Grant Davis
|
7
|
+
an: Anthony Navarre; anthony.navarre
|
8
|
+
rr: Ryan Rabon; ryan.rabon
|
9
|
+
cw: Craig Williams; craig.williams
|
10
|
+
tl: Terrence Lee; terrence.lee
|
11
|
+
email:
|
12
|
+
prefix: pair
|
13
|
+
domain: factorylabs.com
|
data/Gemfile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
|
-
gem "httparty"
|
3
|
+
gem "httparty", "0.7.4"
|
4
|
+
gem "activesupport", "3.0.5"
|
4
5
|
|
5
6
|
# Add dependencies to develop your gem here.
|
6
7
|
# Include everything needed to run rake, tests, features, etc.
|
@@ -10,4 +11,8 @@ group :development do
|
|
10
11
|
gem "bundler", "~> 1.0.0"
|
11
12
|
gem "jeweler", "~> 1.5.2"
|
12
13
|
gem "rcov", ">= 0"
|
14
|
+
gem "vcr", "1.7.0"
|
15
|
+
gem "fakeweb", "1.3.0"
|
16
|
+
gem "timecop", "0.3.5"
|
17
|
+
gem "ruby-debug", "0.10.4"
|
13
18
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
activesupport (3.0.5)
|
5
|
+
columnize (0.3.2)
|
4
6
|
crack (0.1.8)
|
5
7
|
diff-lcs (1.1.2)
|
8
|
+
fakeweb (1.3.0)
|
6
9
|
git (1.2.5)
|
7
10
|
httparty (0.7.4)
|
8
11
|
crack (= 0.1.8)
|
@@ -10,6 +13,7 @@ GEM
|
|
10
13
|
bundler (~> 1.0.0)
|
11
14
|
git (>= 1.2.5)
|
12
15
|
rake
|
16
|
+
linecache (0.43)
|
13
17
|
rake (0.8.7)
|
14
18
|
rcov (0.9.9)
|
15
19
|
rspec (2.3.0)
|
@@ -20,15 +24,27 @@ GEM
|
|
20
24
|
rspec-expectations (2.3.0)
|
21
25
|
diff-lcs (~> 1.1.2)
|
22
26
|
rspec-mocks (2.3.0)
|
27
|
+
ruby-debug (0.10.4)
|
28
|
+
columnize (>= 0.1)
|
29
|
+
ruby-debug-base (~> 0.10.4.0)
|
30
|
+
ruby-debug-base (0.10.4)
|
31
|
+
linecache (>= 0.3)
|
32
|
+
timecop (0.3.5)
|
33
|
+
vcr (1.7.0)
|
23
34
|
yard (0.6.4)
|
24
35
|
|
25
36
|
PLATFORMS
|
26
37
|
ruby
|
27
38
|
|
28
39
|
DEPENDENCIES
|
40
|
+
activesupport (= 3.0.5)
|
29
41
|
bundler (~> 1.0.0)
|
30
|
-
|
42
|
+
fakeweb (= 1.3.0)
|
43
|
+
httparty (= 0.7.4)
|
31
44
|
jeweler (~> 1.5.2)
|
32
45
|
rcov
|
33
46
|
rspec (~> 2.3.0)
|
47
|
+
ruby-debug (= 0.10.4)
|
48
|
+
timecop (= 0.3.5)
|
49
|
+
vcr (= 1.7.0)
|
34
50
|
yard (~> 0.6.0)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.1
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Tangerine::ChannelSet
|
2
|
+
|
3
|
+
attr_accessor :embed_code,
|
4
|
+
:title,
|
5
|
+
:description,
|
6
|
+
:status,
|
7
|
+
:uploaded_at,
|
8
|
+
:size,
|
9
|
+
:updated_at,
|
10
|
+
:flight_start_time,
|
11
|
+
:width,
|
12
|
+
:height,
|
13
|
+
:stat
|
14
|
+
|
15
|
+
def initialize(options)
|
16
|
+
options.delete('content_type')
|
17
|
+
options.each do |k,v|
|
18
|
+
# TODO: Look into using Crack gem for reliably undercoring these
|
19
|
+
attr = k.to_s.underscore
|
20
|
+
self.send("#{attr}=", v)
|
21
|
+
# TODO: move into Base class
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.find(embed_code)
|
26
|
+
result = Tangerine::Query.new('contentType' => 'MultiChannel')
|
27
|
+
meh = result.response.parsed_response['list']['item'].first
|
28
|
+
Tangerine::ChannelSet.new(meh)
|
29
|
+
end
|
30
|
+
end
|
data/lib/tangerine.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
2
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
3
|
require 'rspec'
|
4
|
+
require 'timecop'
|
5
|
+
require 'vcr'
|
4
6
|
require 'tangerine'
|
5
7
|
|
6
8
|
# Requires supporting files with custom matchers and macros, etc,
|
7
9
|
# in ./support/ and its subdirectories.
|
8
10
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
11
|
|
12
|
+
VCR.config do |c|
|
13
|
+
c.cassette_library_dir = 'spec/support/vcr_cassettes'
|
14
|
+
c.stub_with :fakeweb
|
15
|
+
end
|
16
|
+
|
10
17
|
RSpec.configure do |config|
|
11
|
-
|
18
|
+
config.extend VCR::RSpec::Macros
|
12
19
|
end
|
20
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# This doesn't take into account things like lambdas, procs, or objects that might be unordered, it's mostly
|
2
|
+
# just for some convenience so we can check two basic objects without needing to check individual
|
3
|
+
# primitives piecemeal
|
4
|
+
|
5
|
+
RSpec::Matchers.define :be_functionally_equivalent_to do |expected|
|
6
|
+
match do |actual|
|
7
|
+
return false unless (actual.class == expected.class)
|
8
|
+
actual_values = actual.instance_variables.sort.map { |v| actual.instance_eval(v) }
|
9
|
+
expected_values = expected.instance_variables.sort.map { |v| expected.instance_eval(v) }
|
10
|
+
actual_values == expected_values
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,107 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://api.ooyala.com:80/partner/query?pcode=lsNTrbQBqCQbH-VA6ALCshAHLWrV&expires=1325437210&signature=VAJNytKwToVNKastKoAoWArxXky58qE2B4CDGMQhJXY&contentType=MultiChannel
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
last-modified:
|
14
|
+
- Wed, 09 Mar 2011 22:17:59 GMT
|
15
|
+
content-type:
|
16
|
+
- application/xml; charset=utf-8
|
17
|
+
date:
|
18
|
+
- Wed, 09 Mar 2011 22:17:58 GMT
|
19
|
+
content-length:
|
20
|
+
- "2336"
|
21
|
+
set-cookie:
|
22
|
+
- ooyala-web-rails-session=BAh7CDoPdXBkYXRlZF9hdEl1OglUaW1lDTbJG4Bt76pHBjofQG1hcnNoYWxfd2l0aF91dGNfY29lcmNpb25UOg9zZXNzaW9uX2lkIiUzMzcyMTM4MjM4NTQyZTM0NTIxMTJmMjQ3NWU2YTZiOToSY3JlYXRpb25fdGltZUAG--ac51682d0ac32ee8a4f963e2dc7803e400ce56ad; path=/; HttpOnly
|
23
|
+
vary:
|
24
|
+
- Accept-Encoding,User-Agent
|
25
|
+
cache-control:
|
26
|
+
- private, max-age=0
|
27
|
+
body: |
|
28
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
29
|
+
<list totalResults="5" size="5" pageID="0" statistics-as-of_text="Wed Mar 09 21:40:01 UTC 2011" limit="500" statistics-as-of="1299706801">
|
30
|
+
<item>
|
31
|
+
<embedCode><%= mock_channel_set.embed_code %></embedCode>
|
32
|
+
<title><%= mock_channel_set.title %></title>
|
33
|
+
<description></description>
|
34
|
+
<status>live</status>
|
35
|
+
<content_type>MultiChannel</content_type>
|
36
|
+
<uploadedAt>1294087113</uploadedAt>
|
37
|
+
<size></size>
|
38
|
+
<updatedAt>1294087113</updatedAt>
|
39
|
+
<flightStartTime>1294087113</flightStartTime>
|
40
|
+
<width>4</width>
|
41
|
+
<height>3</height>
|
42
|
+
<stat>
|
43
|
+
</stat>
|
44
|
+
</item>
|
45
|
+
<item>
|
46
|
+
<embedCode>x5b214MTomu6ISJSgohKKZbNuR9bdUJ8</embedCode>
|
47
|
+
<title>Pitchfork Live</title>
|
48
|
+
<description></description>
|
49
|
+
<status>live</status>
|
50
|
+
<content_type>MultiChannel</content_type>
|
51
|
+
<uploadedAt>1294087170</uploadedAt>
|
52
|
+
<size></size>
|
53
|
+
<updatedAt>1294087170</updatedAt>
|
54
|
+
<flightStartTime>1294087170</flightStartTime>
|
55
|
+
<width>4</width>
|
56
|
+
<height>3</height>
|
57
|
+
<stat>
|
58
|
+
</stat>
|
59
|
+
</item>
|
60
|
+
<item>
|
61
|
+
<embedCode>IwcG14MTrZJnBFuyM9s7XhY6QAe4qZdd</embedCode>
|
62
|
+
<title>Pitchfork Live</title>
|
63
|
+
<description></description>
|
64
|
+
<status>live</status>
|
65
|
+
<content_type>MultiChannel</content_type>
|
66
|
+
<uploadedAt>1294087178</uploadedAt>
|
67
|
+
<size></size>
|
68
|
+
<updatedAt>1294087179</updatedAt>
|
69
|
+
<flightStartTime>1294087178</flightStartTime>
|
70
|
+
<width>4</width>
|
71
|
+
<height>3</height>
|
72
|
+
<stat>
|
73
|
+
</stat>
|
74
|
+
</item>
|
75
|
+
<item>
|
76
|
+
<embedCode>YxcG14MToeDeUlMIpHGN7LGyFIQGh80-</embedCode>
|
77
|
+
<title>Pitchfork Live</title>
|
78
|
+
<description></description>
|
79
|
+
<status>live</status>
|
80
|
+
<content_type>MultiChannel</content_type>
|
81
|
+
<uploadedAt>1294087189</uploadedAt>
|
82
|
+
<size></size>
|
83
|
+
<updatedAt>1294087189</updatedAt>
|
84
|
+
<flightStartTime>1294087189</flightStartTime>
|
85
|
+
<width>4</width>
|
86
|
+
<height>3</height>
|
87
|
+
<stat>
|
88
|
+
</stat>
|
89
|
+
</item>
|
90
|
+
<item>
|
91
|
+
<embedCode>YycG14MTpdUGpQQifQQYXyMVx4WwvOjy</embedCode>
|
92
|
+
<title>Pitchfork Live</title>
|
93
|
+
<description></description>
|
94
|
+
<status>live</status>
|
95
|
+
<content_type>MultiChannel</content_type>
|
96
|
+
<uploadedAt>1294087199</uploadedAt>
|
97
|
+
<size></size>
|
98
|
+
<updatedAt>1294087200</updatedAt>
|
99
|
+
<flightStartTime>1294087199</flightStartTime>
|
100
|
+
<width>4</width>
|
101
|
+
<height>3</height>
|
102
|
+
<stat>
|
103
|
+
</stat>
|
104
|
+
</item>
|
105
|
+
</list>
|
106
|
+
|
107
|
+
http_version: "1.1"
|