netflix4r 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/valuable.rb ADDED
@@ -0,0 +1,82 @@
1
+ require 'active_support'
2
+
3
+ class Valuable
4
+
5
+ def attributes
6
+ @attributes ||= HashWithIndifferentAccess.new(deep_duplicate_of(self.class.defaults))
7
+ end
8
+
9
+ def initialize(atts = {})
10
+ atts.each { |name, value| __send__("#{name}=", value ) }
11
+ end
12
+
13
+ def deep_duplicate_of(value)
14
+ Marshal.load(Marshal.dump(value))
15
+ end
16
+
17
+ class << self
18
+
19
+ def attributes
20
+ @attributes ||= []
21
+ end
22
+
23
+ def defaults
24
+ @defaults ||= {}
25
+ end
26
+
27
+ def has_value(name, options={})
28
+ attributes << name
29
+ defaults[name] = options[:default] unless options[:default].nil?
30
+
31
+ create_accessor_for(name)
32
+ create_setter_for(name, options[:klass], options[:default])
33
+ end
34
+
35
+ def create_setter_for(name, klass, default)
36
+
37
+ if klass == nil
38
+ define_method "#{name}=" do |value|
39
+ attributes[name] = value
40
+ end
41
+
42
+ elsif klass == Integer
43
+
44
+ define_method "#{name}=" do |value|
45
+ value_as_integer = value && value.to_i
46
+ attributes[name] = value_as_integer
47
+ end
48
+
49
+ elsif klass == String
50
+
51
+ define_method "#{name}=" do |value|
52
+ value_as_string = value && value.to_s
53
+ attributes[name] = value_as_string
54
+ end
55
+
56
+ else
57
+
58
+ define_method "#{name}=" do |value|
59
+ if value.nil?
60
+ attributes[name] = nil
61
+ elsif value.is_a? klass
62
+ attributes[name] = value
63
+ else
64
+ attributes[name] = klass.new(value)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ def create_accessor_for(name)
71
+ define_method name do
72
+ attributes[name]
73
+ end
74
+ end
75
+
76
+ def has_collection(name)
77
+ has_value(name, :default => [] )
78
+ end
79
+
80
+ end
81
+
82
+ end
data/log/netflix.log ADDED
@@ -0,0 +1,160 @@
1
+ # Logfile created on 2011-08-07 15:27:57 -0500 by logger.rb/25413
2
+ [1312748877] http://api.netflix.com/catalog/titles?max_results=2&oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=923578&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312748785&oauth_version=1.0&term=sneakers
3
+ [1312749033] http://api.netflix.com/catalog/titles?max_results=2&oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=470616&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749030&oauth_version=1.0&term=sneakers
4
+ [1312749041] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=470616&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749030&oauth_version=1.0&term=sneakers
5
+ [1312749269] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=534827&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749256&oauth_version=1.0&term=sneakers
6
+ [1312749345] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=534827&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749256&oauth_version=1.0&term=sneakers
7
+ [1312749677] http://api.netflix.com/catalog/titles?max_results=2&oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=132021&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749674&oauth_version=1.0&term=sneakers
8
+ [1312749728] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=753706&oauth_signature=lkE1Cz1yoiAVmdWp4msRZjK6%2Bg0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312749716&oauth_version=1.0&term=a
9
+ [1312750308] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=946913&oauth_signature=frLPEhLHTLM5yoHjC7EyIIXQ6bk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750302&oauth_version=1.0&term=a
10
+ [1312750341] http://api.netflix.com/catalog/titles?max_results=2&oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=86737&oauth_signature=Sv0Deggk%2FTbdfUsYkXUt9geqosg%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750334&oauth_version=1.0&term=sneakers
11
+ [1312750942] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6XTclCGhrsmBEbOg8GW5rWinz%2B4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0&term=a
12
+ [1312750943] http://api.netflix.com/catalog/titles/movies/70183378/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=CbO4Ac%2Fkl7JGlDHNKSCFzYn9UWM%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
13
+ [1312750943] http://api.netflix.com/catalog/titles/movies/70183378/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=RQv%2FlO%2FUD%2Bs1RfIFZnlsSaxftzw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
14
+ [1312750943] http://api.netflix.com/catalog/titles/movies/70049633/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=x4sEZ9UbuUnc7gqyDjykiswfhJ0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
15
+ [1312750943] http://api.netflix.com/catalog/titles/movies/70049633/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=5FjuPjpjxH0KuVr8oxlpRxIaX5g%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
16
+ [1312750944] http://api.netflix.com/catalog/titles/movies/705734/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=UpE%2F20dZum%2Bt4CWBjbmpeeZ6hwc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
17
+ [1312750944] http://api.netflix.com/catalog/titles/movies/705734/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=4vbILsw88lV5EvHH03fZC91dX5o%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
18
+ [1312750944] http://api.netflix.com/catalog/titles/movies/70040973/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=t%2BNqEHZe2jC%2B68DM3%2FR4kVg6V%2FE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
19
+ [1312750944] http://api.netflix.com/catalog/titles/movies/70040973/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=1X0yriNoMrQINxX1yLgOsVLpSgk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
20
+ [1312750944] http://api.netflix.com/catalog/titles/series/70155565/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=qwR835W9ExvguDgJYsXzfXUM%2FI8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
21
+ [1312750945] http://api.netflix.com/catalog/titles/movies/60022998/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=UMRZeA2W8yEr%2FI83FwZmQm5YETU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
22
+ [1312750945] http://api.netflix.com/catalog/titles/movies/60022998/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=mVM3Q94Zj2pgWRg%2FXw17U1D0PqY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
23
+ [1312750945] http://api.netflix.com/catalog/titles/movies/70136065/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=OzSp97hDZPHVKNRS02gZsHYXPSs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
24
+ [1312750945] http://api.netflix.com/catalog/titles/movies/70136065/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=ktRX2PswKndVa0W%2FEh6FlfxiEkA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
25
+ [1312750945] http://api.netflix.com/catalog/titles/movies/70094773/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=KDFeutEl8WvurUae4TiT%2B4t%2BgbE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
26
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70094773/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=yHpYWQWjU7HNTFg494i6UrVdCJ8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
27
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70061952/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=mh3p19Evd08J2kT3qgiKc3YOE34%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
28
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70061952/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=5ah8SARRDh9imEYX3qEuamA9EUo%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
29
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70109890/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=puZdcMRc8x1G1n4LX8PJ8E5AIKI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
30
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70109890/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Sgv72I3x%2FfgI7I25SwRJrHiOMDE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
31
+ [1312750946] http://api.netflix.com/catalog/titles/movies/70109087/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=NYaRAcTYV5UDt4UPmqAHAnv4wYQ%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
32
+ [1312750947] http://api.netflix.com/catalog/titles/movies/70109087/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rJn%2BgrxER%2FYdEaNP428HZLUsEVA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
33
+ [1312750947] http://api.netflix.com/catalog/titles/movies/70138342/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=WWxgXQ1SPDGFCgjqOGPk8ApigNI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
34
+ [1312750947] http://api.netflix.com/catalog/titles/movies/70138342/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=%2BkR9SEorxvIwjx012Bfx2zV%2FWsI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
35
+ [1312750947] http://api.netflix.com/catalog/titles/movies/60035684/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=ywz8gn4cOs%2FaMl8B38ILKl2K8DM%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
36
+ [1312750947] http://api.netflix.com/catalog/titles/movies/60035684/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=d8hEPNyM3bqiSP2%2BnTMzPHAcvrw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
37
+ [1312750948] http://api.netflix.com/catalog/titles/movies/70098677/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6WWZBcdeIKnauJKr08lXdjkcTgE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
38
+ [1312750948] http://api.netflix.com/catalog/titles/movies/70098677/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=94TVIP4iVCTu5MrkYcYlXztCuMA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
39
+ [1312750948] http://api.netflix.com/catalog/titles/movies/70011945/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=BV6Fap0ydLCoiO8qwLbQIRMTDB8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
40
+ [1312750948] http://api.netflix.com/catalog/titles/movies/70011945/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=fzFmVomruGgQxo75XEszlLAqxPY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
41
+ [1312750949] http://api.netflix.com/catalog/titles/movies/443335/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=OU6AKbLV7wX9Q5%2B1BhlY7%2FhjZvY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
42
+ [1312750949] http://api.netflix.com/catalog/titles/movies/443335/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=8XOFJgQ6u%2FGZg21Swk4HHaGh3rk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
43
+ [1312750949] http://api.netflix.com/catalog/titles/movies/383466/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=OnM1kBei7Bc9v0JPXUZVVnGUfeY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
44
+ [1312750949] http://api.netflix.com/catalog/titles/movies/383466/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=66cG%2Bng5nNIcDPT8xgex8OB%2BSx0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
45
+ [1312750949] http://api.netflix.com/catalog/titles/movies/70123920/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=H8W1vLWz8UdORu%2FtE08BxLEfb4I%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
46
+ [1312750949] http://api.netflix.com/catalog/titles/movies/70123920/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Ik57PszRyL4clcNRC6yXQFlIMVE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
47
+ [1312750950] http://api.netflix.com/catalog/titles/movies/60003767/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=qH9nzpwIPcuU0%2FfNgUxdirxk19g%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
48
+ [1312750950] http://api.netflix.com/catalog/titles/movies/60003767/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Uk9h292d1C2anlcZdbqNwKcSnaQ%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
49
+ [1312750950] http://api.netflix.com/catalog/titles/movies/70069480/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=3xMP26bBjXQ7PGS%2FHaIZSay6q%2Bc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
50
+ [1312750950] http://api.netflix.com/catalog/titles/movies/70069480/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=SH5hYBUssmM%2Fzdd6Oamjd7GO0Go%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
51
+ [1312750950] http://api.netflix.com/catalog/titles/movies/70100349/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=VgJHTrZtT6e13s8KUZOmnthE%2BzI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
52
+ [1312750951] http://api.netflix.com/catalog/titles/movies/70100349/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Q2UkPF647l9NQaQdRXFs5PhF9Jw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
53
+ [1312750951] http://api.netflix.com/catalog/titles/movies/70107499/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=lxx1tDjPbmaRRUSKSEP1MeCSPIM%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
54
+ [1312750951] http://api.netflix.com/catalog/titles/movies/70107499/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=EqRQTX%2F21YHftlvV1ci8CW%2B7mLU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
55
+ [1312750951] http://api.netflix.com/catalog/titles/movies/60023947/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=m8CBb9HGhwz0pJvHt8m8V6p8FkA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
56
+ [1312750951] http://api.netflix.com/catalog/titles/movies/60023947/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=z89KOIJAkEkMX0H9flTqUNvTeMs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
57
+ [1312750951] http://api.netflix.com/catalog/titles/movies/1179333/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=mPXeXkqGl8NDqXUeYIngXfYgkKE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
58
+ [1312750952] http://api.netflix.com/catalog/titles/movies/1179333/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=COCK8D4w1OFJv%2FQlN3VA2snbGSY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
59
+ [1312750952] http://api.netflix.com/catalog/titles/movies/60036243/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=VfE2xjZhgSatVfCkMCy%2BlkKIr3M%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
60
+ [1312750952] http://api.netflix.com/catalog/titles/movies/60036243/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=5dskxvY5EDAEabZUstoPiTR2608%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
61
+ [1312750975] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rPh1V8bdZHvmA5sArBd2lCxpSdg%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0&term=sneakers
62
+ [1312750976] http://api.netflix.com/catalog/titles/movies/60031755/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=U6ZmDz7FViPRo8YPKN419KTiQTk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
63
+ [1312750976] http://api.netflix.com/catalog/titles/movies/60031755/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=waNfSGTKFP6qE3hfau4vphB1suY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
64
+ [1312750976] http://api.netflix.com/catalog/titles/movies/60024073/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=AgLgF19DnAy%2Blm%2Fu37rjuoDIVxE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
65
+ [1312750977] http://api.netflix.com/catalog/titles/movies/60024073/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=xrby5MW%2F3IVhXAbc7aDO0DSKZcA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
66
+ [1312750977] http://api.netflix.com/catalog/titles/movies/60033680/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=BNastDoOKtPqR0y5bA0boTgnIe4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
67
+ [1312750977] http://api.netflix.com/catalog/titles/movies/60033680/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=L5KIz2cQutHionQkJSL0I7rcKMU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
68
+ [1312750977] http://api.netflix.com/catalog/titles/movies/60010229/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=GsnXjZcPzRi8ooRue8DlC5Wd89A%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
69
+ [1312750977] http://api.netflix.com/catalog/titles/movies/60010229/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rZO1tpnGWj5SCTBUdtb7j9u6m5M%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
70
+ [1312750977] http://api.netflix.com/catalog/titles/movies/70052113/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6OnhLpCr7Bdjo%2FpfNfDFMC3ab%2B4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
71
+ [1312750978] http://api.netflix.com/catalog/titles/movies/70052113/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=pwvA1VDL%2Fv8OXcVfe5M3fQXNIIw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
72
+ [1312750978] http://api.netflix.com/catalog/titles/movies/70049186/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=c9Xmh0hBKGNiejPQcF6ALyDdYH8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
73
+ [1312750978] http://api.netflix.com/catalog/titles/movies/70049186/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rim6hAc478aIAbpm7y2hb1xSuyE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
74
+ [1312750978] http://api.netflix.com/catalog/titles/movies/60027593/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=%2BlNqWUX6ISn7riR9DFgfd5MCYTs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
75
+ [1312750978] http://api.netflix.com/catalog/titles/movies/60027593/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=yqqsUEruapcFnac9Puu7dRd9q5A%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
76
+ [1312750978] http://api.netflix.com/catalog/titles/movies/70032916/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Gt2TYloYk%2FfAbrcB7%2FEbkS6HLZs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
77
+ [1312750979] http://api.netflix.com/catalog/titles/movies/70032916/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=RbKb4ltowJJDZWyupFOgNoVgP%2Fw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
78
+ [1312750979] http://api.netflix.com/catalog/titles/series/70139471/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=qrvrZpC727DTFQBxAv%2FRW6YWW3w%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
79
+ [1312750979] http://api.netflix.com/catalog/titles/series/70139471/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=P5U9noHRZfQood2eth89iXqIBJ4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
80
+ [1312750979] http://api.netflix.com/catalog/titles/series/70129645/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9HSxjK0b55V2YotA%2FclrGSW8BGo%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
81
+ [1312750979] http://api.netflix.com/catalog/titles/series/70129645/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=OZJZpZOSQTU8gb1sYaxwk6YS2aI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
82
+ [1312750979] http://api.netflix.com/catalog/titles/movies/70098677/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6WWZBcdeIKnauJKr08lXdjkcTgE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
83
+ [1312750979] http://api.netflix.com/catalog/titles/movies/70098677/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=94TVIP4iVCTu5MrkYcYlXztCuMA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
84
+ [1312750979] http://api.netflix.com/catalog/titles/series/70143865/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=VaKUxCWeRuUdK1OgjznTdhT3aJ8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
85
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60023596/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=l1xat7Aq3jO51lKhQ6HNg3jJFHk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
86
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60023596/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=AnNKkKIeOjcgfbi6cPAcKqYTQS8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
87
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60000138/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=UUoQK9Kkht7kpcw68KA%2FmsVgdP0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
88
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60000138/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=3gKpORilgbvXSKt5Vcyo7fEvwdA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
89
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60027527/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rmX0ShBhLOUy7qhSB4BZ4CAj%2BGk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
90
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60027527/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=CxLckgJ3QTQUUBFb%2F%2FXigtZht%2BU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
91
+ [1312750980] http://api.netflix.com/catalog/titles/movies/60028502/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=PleRjX320N5k7wjpottskZ5YEHk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
92
+ [1312750981] http://api.netflix.com/catalog/titles/movies/60028502/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=kA%2F90yBzTRo0dM1ti%2BROYZ3cVbA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
93
+ [1312750981] http://api.netflix.com/catalog/titles/movies/60034154/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=SIWmw5H5AdIiQFqVyb76eTlS1iI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
94
+ [1312750981] http://api.netflix.com/catalog/titles/movies/60034154/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9IdV7Mg5U9baWDuK%2BU5TRrLKTfw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
95
+ [1312750981] http://api.netflix.com/catalog/titles/movies/70035762/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=%2FpYOqOvZSxuQXz2kUhAnpPL2%2Fqc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
96
+ [1312750981] http://api.netflix.com/catalog/titles/movies/70035762/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=oej480lABHRgmou6r2yDM%2BfS22U%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
97
+ [1312750981] http://api.netflix.com/catalog/titles/movies/70038986/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=eMTIeybq0C7TMUdafhqucOtNXFA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
98
+ [1312750981] http://api.netflix.com/catalog/titles/movies/70038986/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9y0bOmYk2MSI9xYoYsX5w3G2gkk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
99
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70048917/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=HNStaJw0znj7dnNHHMQXygqh%2B68%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
100
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70048917/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=sk4%2F0JWDc9FFlLJVmqPBtjOqkJQ%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
101
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70055211/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=0w8q%2FLXFdWpN3NjA4G8SgZWbS5g%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
102
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70055211/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6sY3SA0%2F9tnvDCkhsd%2FA7s2rBeU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
103
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70069244/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=1EgnRYPpEIonIyOMjEmuWKYVVns%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
104
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70069244/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=jTGsVje8sQ6rV%2FUwvxTqf8A5gas%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
105
+ [1312750982] http://api.netflix.com/catalog/titles/movies/70070141/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=i8nyL3oZxtU0m9ufG6qlcaYdLhU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
106
+ [1312750983] http://api.netflix.com/catalog/titles/movies/70070141/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=KQAgvzUwBF655qknz00oOVULEFY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
107
+ [1312750983] http://api.netflix.com/catalog/titles/movies/70134660/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=cCVWDqJwsIYdE1x5KYsUD%2BT6BV8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
108
+ [1312750983] http://api.netflix.com/catalog/titles/movies/70134660/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=j%2F8efZHlmi2xyys%2F518moBmnq3E%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
109
+ [1312750983] http://api.netflix.com/catalog/titles/movies/70153180/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=20MOWghcKBQDMdEaOaxQHTobEPI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
110
+ [1312750983] http://api.netflix.com/catalog/titles/movies/70153180/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=ye1s86eZ1OCpdOJSErgpIYdtpo0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
111
+ [1312751025] http://api.netflix.com/catalog/titles?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rPh1V8bdZHvmA5sArBd2lCxpSdg%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0&term=sneakers
112
+ [1312751026] http://api.netflix.com/catalog/titles/movies/60031755/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=U6ZmDz7FViPRo8YPKN419KTiQTk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
113
+ [1312751026] http://api.netflix.com/catalog/titles/movies/60031755/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=waNfSGTKFP6qE3hfau4vphB1suY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
114
+ [1312751026] http://api.netflix.com/catalog/titles/movies/60024073/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=AgLgF19DnAy%2Blm%2Fu37rjuoDIVxE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
115
+ [1312751026] http://api.netflix.com/catalog/titles/movies/60024073/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=xrby5MW%2F3IVhXAbc7aDO0DSKZcA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
116
+ [1312751027] http://api.netflix.com/catalog/titles/movies/60033680/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=BNastDoOKtPqR0y5bA0boTgnIe4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
117
+ [1312751027] http://api.netflix.com/catalog/titles/movies/60033680/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=L5KIz2cQutHionQkJSL0I7rcKMU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
118
+ [1312751027] http://api.netflix.com/catalog/titles/movies/60010229/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=GsnXjZcPzRi8ooRue8DlC5Wd89A%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
119
+ [1312751028] http://api.netflix.com/catalog/titles/movies/60010229/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rZO1tpnGWj5SCTBUdtb7j9u6m5M%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
120
+ [1312751028] http://api.netflix.com/catalog/titles/movies/70052113/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6OnhLpCr7Bdjo%2FpfNfDFMC3ab%2B4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
121
+ [1312751028] http://api.netflix.com/catalog/titles/movies/70052113/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=pwvA1VDL%2Fv8OXcVfe5M3fQXNIIw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
122
+ [1312751028] http://api.netflix.com/catalog/titles/movies/70049186/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=c9Xmh0hBKGNiejPQcF6ALyDdYH8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
123
+ [1312751028] http://api.netflix.com/catalog/titles/movies/70049186/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rim6hAc478aIAbpm7y2hb1xSuyE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
124
+ [1312751029] http://api.netflix.com/catalog/titles/movies/60027593/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=%2BlNqWUX6ISn7riR9DFgfd5MCYTs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
125
+ [1312751029] http://api.netflix.com/catalog/titles/movies/60027593/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=yqqsUEruapcFnac9Puu7dRd9q5A%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
126
+ [1312751029] http://api.netflix.com/catalog/titles/movies/70032916/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=Gt2TYloYk%2FfAbrcB7%2FEbkS6HLZs%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
127
+ [1312751029] http://api.netflix.com/catalog/titles/movies/70032916/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=RbKb4ltowJJDZWyupFOgNoVgP%2Fw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
128
+ [1312751029] http://api.netflix.com/catalog/titles/series/70139471/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=qrvrZpC727DTFQBxAv%2FRW6YWW3w%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
129
+ [1312751029] http://api.netflix.com/catalog/titles/series/70139471/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=P5U9noHRZfQood2eth89iXqIBJ4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
130
+ [1312751030] http://api.netflix.com/catalog/titles/series/70129645/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9HSxjK0b55V2YotA%2FclrGSW8BGo%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
131
+ [1312751030] http://api.netflix.com/catalog/titles/series/70129645/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=OZJZpZOSQTU8gb1sYaxwk6YS2aI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
132
+ [1312751030] http://api.netflix.com/catalog/titles/movies/70098677/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6WWZBcdeIKnauJKr08lXdjkcTgE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
133
+ [1312751030] http://api.netflix.com/catalog/titles/movies/70098677/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=94TVIP4iVCTu5MrkYcYlXztCuMA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
134
+ [1312751030] http://api.netflix.com/catalog/titles/series/70143865/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=VaKUxCWeRuUdK1OgjznTdhT3aJ8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
135
+ [1312751030] http://api.netflix.com/catalog/titles/movies/60023596/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=l1xat7Aq3jO51lKhQ6HNg3jJFHk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
136
+ [1312751031] http://api.netflix.com/catalog/titles/movies/60023596/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=AnNKkKIeOjcgfbi6cPAcKqYTQS8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
137
+ [1312751031] http://api.netflix.com/catalog/titles/movies/60000138/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=UUoQK9Kkht7kpcw68KA%2FmsVgdP0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
138
+ [1312751031] http://api.netflix.com/catalog/titles/movies/60000138/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=3gKpORilgbvXSKt5Vcyo7fEvwdA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
139
+ [1312751031] http://api.netflix.com/catalog/titles/movies/60027527/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=rmX0ShBhLOUy7qhSB4BZ4CAj%2BGk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
140
+ [1312751031] http://api.netflix.com/catalog/titles/movies/60027527/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=CxLckgJ3QTQUUBFb%2F%2FXigtZht%2BU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
141
+ [1312751032] http://api.netflix.com/catalog/titles/movies/60028502/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=PleRjX320N5k7wjpottskZ5YEHk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
142
+ [1312751032] http://api.netflix.com/catalog/titles/movies/60028502/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=kA%2F90yBzTRo0dM1ti%2BROYZ3cVbA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
143
+ [1312751032] http://api.netflix.com/catalog/titles/movies/60034154/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=SIWmw5H5AdIiQFqVyb76eTlS1iI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
144
+ [1312751032] http://api.netflix.com/catalog/titles/movies/60034154/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9IdV7Mg5U9baWDuK%2BU5TRrLKTfw%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
145
+ [1312751032] http://api.netflix.com/catalog/titles/movies/70035762/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=%2FpYOqOvZSxuQXz2kUhAnpPL2%2Fqc%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
146
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70035762/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=oej480lABHRgmou6r2yDM%2BfS22U%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
147
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70038986/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=eMTIeybq0C7TMUdafhqucOtNXFA%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
148
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70038986/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=9y0bOmYk2MSI9xYoYsX5w3G2gkk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
149
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70048917/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=HNStaJw0znj7dnNHHMQXygqh%2B68%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
150
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70048917/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=sk4%2F0JWDc9FFlLJVmqPBtjOqkJQ%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
151
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70055211/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=0w8q%2FLXFdWpN3NjA4G8SgZWbS5g%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
152
+ [1312751033] http://api.netflix.com/catalog/titles/movies/70055211/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=6sY3SA0%2F9tnvDCkhsd%2FA7s2rBeU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
153
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70069244/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=1EgnRYPpEIonIyOMjEmuWKYVVns%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
154
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70069244/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=jTGsVje8sQ6rV%2FUwvxTqf8A5gas%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
155
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70070141/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=i8nyL3oZxtU0m9ufG6qlcaYdLhU%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
156
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70070141/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=KQAgvzUwBF655qknz00oOVULEFY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
157
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70134660/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=cCVWDqJwsIYdE1x5KYsUD%2BT6BV8%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
158
+ [1312751034] http://api.netflix.com/catalog/titles/movies/70134660/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=j%2F8efZHlmi2xyys%2F518moBmnq3E%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
159
+ [1312751035] http://api.netflix.com/catalog/titles/movies/70153180/cast?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=20MOWghcKBQDMdEaOaxQHTobEPI%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
160
+ [1312751035] http://api.netflix.com/catalog/titles/movies/70153180/format_availability?oauth_consumer_key=3n5x56cp5fbh23b3z2xsgdmu&oauth_nonce=888686&oauth_signature=ye1s86eZ1OCpdOJSErgpIYdtpo0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1312750930&oauth_version=1.0
data/netflix4r.gemspec ADDED
@@ -0,0 +1,130 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{netflix4r}
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["rossnelson"]
12
+ s.date = %q{2011-08-07}
13
+ s.description = %q{a ruby client for the NetFlix API}
14
+ s.email = %q{axcess1@me.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "credentials.yml",
28
+ "lib/flix4r.rb",
29
+ "lib/net_flix.rb",
30
+ "lib/net_flix/.DS_Store",
31
+ "lib/net_flix/api/.DS_Store",
32
+ "lib/net_flix/api/catalog/.DS_Store",
33
+ "lib/net_flix/api/catalog/titles.rb",
34
+ "lib/net_flix/authenticator.rb",
35
+ "lib/net_flix/builders/.DS_Store",
36
+ "lib/net_flix/builders/actor_builder.rb",
37
+ "lib/net_flix/builders/format_builder.rb",
38
+ "lib/net_flix/builders/title_builder.rb",
39
+ "lib/net_flix/credentials.rb",
40
+ "lib/net_flix/request.rb",
41
+ "lib/net_flix/title.rb",
42
+ "lib/valuable.rb",
43
+ "log/netflix.log",
44
+ "netflix4r.gemspec",
45
+ "rakefile.rb",
46
+ "samples/.DS_Store",
47
+ "samples/actors.rb",
48
+ "samples/download_full_catalog.rb",
49
+ "samples/formats.rb",
50
+ "samples/search.rb",
51
+ "test/actor_builder_test.rb",
52
+ "test/authenticator_test.rb",
53
+ "test/credentials_test.rb",
54
+ "test/format_builder_test.rb",
55
+ "test/helper.rb",
56
+ "test/request_test.rb",
57
+ "test/test.rb",
58
+ "test/test_flix4r.rb",
59
+ "test/test_helpers.rb",
60
+ "test/tests.rb",
61
+ "test/title_builder_test.rb",
62
+ "test/title_test.rb"
63
+ ]
64
+ s.homepage = %q{http://github.com/rossnelson/flix4r}
65
+ s.licenses = ["MIT"]
66
+ s.require_paths = ["lib"]
67
+ s.rubygems_version = %q{1.3.7}
68
+ s.summary = %q{copy of http://code.google.com/p/flix4r/}
69
+ s.test_files = [
70
+ "test/actor_builder_test.rb",
71
+ "test/authenticator_test.rb",
72
+ "test/credentials_test.rb",
73
+ "test/format_builder_test.rb",
74
+ "test/helper.rb",
75
+ "test/request_test.rb",
76
+ "test/test.rb",
77
+ "test/test_flix4r.rb",
78
+ "test/test_helpers.rb",
79
+ "test/tests.rb",
80
+ "test/title_builder_test.rb",
81
+ "test/title_test.rb"
82
+ ]
83
+
84
+ if s.respond_to? :specification_version then
85
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
86
+ s.specification_version = 3
87
+
88
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
89
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
90
+ s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
91
+ s.add_runtime_dependency(%q<json>, [">= 0"])
92
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
93
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
94
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
95
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
96
+ s.add_development_dependency(%q<rcov>, [">= 0"])
97
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
98
+ s.add_runtime_dependency(%q<ruby-hmac>, [">= 0"])
99
+ s.add_runtime_dependency(%q<json>, [">= 0"])
100
+ s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
101
+ else
102
+ s.add_dependency(%q<activesupport>, [">= 0"])
103
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
104
+ s.add_dependency(%q<json>, [">= 0"])
105
+ s.add_dependency(%q<nokogiri>, [">= 0"])
106
+ s.add_dependency(%q<shoulda>, [">= 0"])
107
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
108
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
109
+ s.add_dependency(%q<rcov>, [">= 0"])
110
+ s.add_dependency(%q<activesupport>, [">= 0"])
111
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
112
+ s.add_dependency(%q<json>, [">= 0"])
113
+ s.add_dependency(%q<nokogiri>, [">= 0"])
114
+ end
115
+ else
116
+ s.add_dependency(%q<activesupport>, [">= 0"])
117
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
118
+ s.add_dependency(%q<json>, [">= 0"])
119
+ s.add_dependency(%q<nokogiri>, [">= 0"])
120
+ s.add_dependency(%q<shoulda>, [">= 0"])
121
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
122
+ s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
123
+ s.add_dependency(%q<rcov>, [">= 0"])
124
+ s.add_dependency(%q<activesupport>, [">= 0"])
125
+ s.add_dependency(%q<ruby-hmac>, [">= 0"])
126
+ s.add_dependency(%q<json>, [">= 0"])
127
+ s.add_dependency(%q<nokogiri>, [">= 0"])
128
+ end
129
+ end
130
+
data/rakefile.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ task :test => [:test_units]
5
+
6
+ desc "Run basic tests"
7
+ Rake::TestTask.new("test_units") { |t|
8
+ t.pattern = 'tests/*_test.rb'
9
+ t.verbose = true
10
+ t.warning = true
11
+ }
data/samples/.DS_Store ADDED
Binary file
data/samples/actors.rb ADDED
@@ -0,0 +1,5 @@
1
+ require File.join( File.dirname(__FILE__), '..', 'flix4r.rb' )
2
+
3
+ target_file = File.join(File.dirname(__FILE__), 'actors.xml')
4
+ list = File.new(target_file, 'w')
5
+ list.puts NetFlix::Request.new(:url => 'http://api.netflix.com/catalog/titles/movies/60024073/cast').send
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'netflix.rb')
2
+
3
+ # Writes the NetFlix response to the file catalog.xml
4
+
5
+ target_file = File.join(File.dirname(__FILE__), 'catalog.xml')
6
+ catalog = File.new(target_file, 'w')
7
+ catalog.puts NetFlix::API::Catalog::Title.list
@@ -0,0 +1,5 @@
1
+ require File.join( File.dirname(__FILE__), '..', 'flix4r.rb')
2
+
3
+ target_file = File.join( File.dirname(__FILE__), 'formats.xml')
4
+ list = File.new(target_file, 'w')
5
+ list.puts NetFlix::Request.new(:url => 'http://api.netflix.com/catalog/titles/movies/60031755/format_availability')
data/samples/search.rb ADDED
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'flix4r.rb')
2
+
3
+ # writes the xml results for the search to the file sneakers.xml
4
+
5
+ target_file = File.join(File.dirname(__FILE__), 'search_results.xml')
6
+ catalog = File.new(target_file , 'w')
7
+ xml = NetFlix::API::Catalog::Titles.search('term' => 'sneakers', 'max_results' => 5)
8
+
9
+ puts "Building results..."
10
+ titles = TitleBuilder.from_xml(xml)
11
+
12
+ titles.each do |title|
13
+ puts " => #{title.id}"
14
+ end
15
+
16
+ catalog.puts xml
@@ -0,0 +1,35 @@
1
+ require File.join( File.dirname(__FILE__), 'test.rb')
2
+
3
+ class ActorBuilderTest < Test::Unit::TestCase
4
+
5
+ def test_that_actors_are_parsed
6
+ xml = %|<title_index_item>
7
+ <link href="http://api.netflix.com/catalog/people/98401" rel="http://schemas.netflix.com/catalog/person.actor" title="George Wendt"></link>
8
+ <link href="http://api.netflix.com/catalog/people/35954" rel="http://schemas.netflix.com/catalog/person.actor" title="Robert Hy Gorman"></link>
9
+ </title_index_item>
10
+ |
11
+ data = Nokogiri.XML(xml).search('//.')
12
+ assert_equal ['George Wendt', 'Robert Hy Gorman'], ActorBuilder.from_movie(data).sort
13
+ end
14
+
15
+ def test_that_cast_reference_is_pulled
16
+
17
+ NetFlix::Request.expects(:new).with(:url => 'http://api.netflix.com/catalog/titles/movies/60024073/cast').returns(stub_everything(:send => '<xml/>'))
18
+
19
+ xml = %|
20
+ <title_index_item>
21
+ <link href="http://api.netflix.com/catalog/titles/movies/60024073/cast" rel="http://schemas.netflix.com/catalog/people.cast" title="cast"></link>
22
+ </title_index_item>
23
+ |
24
+ data = Nokogiri.XML(xml).search('//title_index_item')
25
+
26
+ ActorBuilder.from_movie(data)
27
+ end
28
+
29
+ def test_that_cast_list_is_parsable
30
+ xml = %|<people><person><id>http://api.netflix.com/catalog/people/20037237</id><name>Vanessa Bell Calloway</name><link href="http://api.netflix.com/catalog/people/20037237/filmography" rel="http://schemas.netflix.com/catalog/titles.filmography" title="filmography"></link><link href="http://www.netflix.com/RoleDisplay/Vanessa_Bell_Calloway/20037237" rel="alternate" title="web page"></link></person></people>|
31
+
32
+ assert_equal ['Vanessa Bell Calloway'], ActorBuilder.from_xml(xml)
33
+ end
34
+
35
+ end
@@ -0,0 +1,75 @@
1
+ require File.join( File.dirname(__FILE__), 'test.rb')
2
+
3
+ class AuthenticatorTest < Test::Unit::TestCase
4
+
5
+ def test_that_url_is_properly_encoded
6
+ fake_request = stub_everything(:url => 'http://photos.example.net/a pic')
7
+ assert_equal 'http%3A%2F%2Fphotos.example.net%2Fa%20pic', NetFlix::Authenticator.new(:request => fake_request).encoded_url
8
+ end
9
+
10
+ def test_that_spaces_in_parameters_are_encoded
11
+ request = stub_everything(:parameter_string => 'a key=value')
12
+ assert_equal 'a%20key%3Dvalue', NetFlix::Authenticator.new(:request => request).encoded_parameters
13
+ end
14
+
15
+ def test_that_authentication_corresponds_to_known_values
16
+ #based on http://developer.netflix.com/docs/Security#0_pgfId-1015486
17
+ #based on http://term.ie/oauth/example/client.php
18
+
19
+ cred = stub_everything(
20
+ :key => '123456789012345678901234',
21
+ :secret => '1234567890',
22
+ :valid? => true)
23
+
24
+ expected_sbs = 'GET&http%3A%2F%2Fapi.netflix.com%2Fcatalog%2Ftitles&max_results%3D5%26oauth_consumer_key%3D123456789012345678901234%26oauth_nonce%3D24aea97b0b5dd516145966aaf2945c6a%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1233950836%26oauth_version%3D1.0%26term%3Dsneakers'
25
+
26
+ expected_signature = 'vlROEST9UXwI+zc9fld82giaYPE='
27
+
28
+ request = NetFlix::Request.new(
29
+ :url => 'http://api.netflix.com/catalog/titles',
30
+ :http_method => 'GET',
31
+ :parameters => {'term' => 'sneakers', 'max_results' => '5'})
32
+
33
+ auth = NetFlix::Authenticator.new(
34
+ :request => request,
35
+ :timestamp => 1233950836,
36
+ :nonce => '24aea97b0b5dd516145966aaf2945c6a',
37
+ :credentials => cred
38
+ )
39
+
40
+ assert_equal expected_sbs, auth.signature_base_string
41
+ assert_equal expected_signature, auth.signature
42
+ end
43
+
44
+ def test_that_signature_key_includes_consumer_secret_and_ampersand
45
+ cred = stub_everything(:secret => 'shhh', :key => 'letmein')
46
+ assert_equal 'shhh&', NetFlix::Authenticator.new(:credentials => cred).signature_key
47
+ end
48
+
49
+ def test_that_access_token_is_included_in_signature_key_if_it_is_available
50
+ cred = stub_everything(:secret => 'shhh', :key => 'letmein', :access_token => 'they_like_me')
51
+ request = stub_everything
52
+
53
+ assert_equal 'shhh&they_like_me', NetFlix::Authenticator.new(:request => request, :credentials => cred).signature_key
54
+ end
55
+
56
+ def test_that_signature_is_added_to_parameters_during_signing
57
+ cred = stub_everything(:secred => 'shhh', :key => 'letmein', :valid? => true)
58
+ params = stub_everything
59
+ params.expects(:merge).with(has_key('oauth_signature')).once
60
+
61
+ request = stub_everything(:parameters => params)
62
+ auth = NetFlix::Authenticator.new(:request => request, :credentials => cred)
63
+ auth.sign!
64
+ end
65
+
66
+ def test_that_exception_is_raised_if_secret_is_missing
67
+ credentials = stub_everything(:valid? => false)
68
+ authenticator = NetFlix::Authenticator.new(:credentials => credentials)
69
+
70
+ assert_raises ArgumentError do
71
+ authenticator.require_credentials
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,27 @@
1
+ require File.join( File.dirname(__FILE__), 'test.rb')
2
+
3
+ class CredentialsTest < Test::Unit::TestCase
4
+
5
+ def file_contents
6
+ {:key => :value}.to_yaml
7
+ end
8
+
9
+ def test_that_credentials_file_is_not_loaded_if_it_dne
10
+ File.stubs(:exist?).returns(false)
11
+ File.expects(:open).never
12
+ NetFlix::Credentials.from_file
13
+ end
14
+
15
+ def test_that_credentials_file_is_loaded_if_present
16
+ File.stubs(:exist?).returns(true)
17
+ File.expects(:open).returns(file_contents)
18
+ NetFlix::Credentials.from_file
19
+ end
20
+
21
+ def test_that_values_from_file_are_present
22
+ File.stubs(:exist?).returns(true)
23
+ File.stubs(:open).returns({:key => :my_key, :secret => 'quiet!'}.to_yaml)
24
+ assert_equal :my_key, NetFlix::Credentials.from_file.key
25
+ end
26
+
27
+ end