viki 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -3,48 +3,96 @@ A Viki wrapper gem for the Viki V3 API. This gem is currently under active devel
3
3
  Full documentation for API V3 may be found at [dev.viki.com](http://dev.viki.com/api "Viki API V3 Docs")
4
4
 
5
5
 
6
- Endpoints
6
+ Installation
7
7
  ----------
8
+ Manually `gem install viki` or add `gem 'viki'` to Gemfile
8
9
 
9
- Here are a full list of functions available.
10
+ How to use
11
+ ----------
12
+ Add to your .rb
13
+
14
+ require 'viki'
15
+
16
+ Initialization
17
+
18
+ viki = Viki.new('your_client_id', 'your_client_secret')
19
+
20
+
21
+ Responses will be returned in a `Viki::APIObject`.
22
+
23
+ For results that are paginated. You can use the `APIObject`'s `next` and `prev` methods to retrieve the next and previous 25 records respectively.
10
24
 
11
25
  ```
12
- client.movies(params)
13
- client.movies(id, params)
14
- client.movie(id).subtitles(lang)
15
- client.movie(id).hardsubs
26
+ viki.movies
27
+ movies = viki.get #return records in a Viki::APIObject
16
28
 
17
- client.series(params)
18
- client.series(id, params)
19
- client.series(id).episodes(params)
20
- client.series(id).episodes(id)
21
- client.series(id).episodes(id).subtitles(lang)
22
- client.series(id).episodes(id).hardsubs
29
+ movies.content #content of the API call in JSON format
30
+ movies.count #total number of possible results in the endpoint
31
+
32
+ movies2 = movies.next #next 25 records
33
+ movies = movies2.prev #prev 25 records
34
+ ```
23
35
 
24
- client.music_videos(params)
25
- client.music_videos(id, params)
26
- client.music_videos(id).subtitles(lang)
27
- client.music_videos(id).hardsubs * implementation waiting on valid examples
28
36
 
29
- client.newscasts(params)
30
- client.newscasts(id, params)
31
- client.newscasts(id).newsclips
37
+ Examples
38
+ ----------
39
+ * Results will always be returned in JSON format.
40
+ * All URL endpoints in the following examples should include an `access_token` parameter.
41
+ * Refer to the [API V3 documentation](http://dev.viki.com/api "Viki API V3 Docs") for all endpoints.
32
42
 
43
+ ### List Movies
44
+ URL
33
45
 
34
- client.newsclips
35
- client.newsclips(id)
36
- client.newsclips(id).subtitles(lang)
37
- client.newsclips(id).hardsubs(lang)
46
+ without parameter filters
47
+ http://www.viki.com/api/v3/movies.json
38
48
 
49
+ with parameter filters
50
+ http://www.viki.com/api/v3/movies.json?genre=2
39
51
 
40
- client.artists(params)
41
- client.artist(id, params)
42
- client.artists(id).music_videos(params)
52
+ Your ruby application
43
53
 
44
- client.featured(params)
54
+ viki.movies.get #without parameter filters
55
+ viki.movies(genre: 2).get #with parameter filters
45
56
 
46
- client.coming_soon
47
- client.coming_soon.movies
48
- client.coming_soon.series
49
- ```
57
+ ### Show Movie
58
+ URL
59
+
60
+ http://www.viki.com/api/v3/movies/71459.json
61
+
62
+ Your ruby application
63
+
64
+ viki.movies(71459).get
65
+
66
+ ### Subtitles
67
+ URL
68
+
69
+ http://www.viki.com/api/v3/movies/71459/subtitles/en.json
70
+
71
+ Your ruby application
72
+
73
+ viki.movies(71459).subtitles('en').get
74
+
75
+ ### Show Episode
76
+ URL
77
+
78
+ http://www.viki.com/api/v3/series/6004/episodes/61168.json
79
+
80
+ Your ruby application
81
+
82
+ viki.series(6004).episodes(61168).get
83
+
84
+ ### List Newscasts
85
+
86
+ URL
87
+
88
+ without parameter filters
89
+ http://www.viki.com/api/v3/newscasts.json
90
+
91
+ with parameter filters
92
+ http://www.viki.com/api/v3/newscasts.json?language=ko
93
+
94
+ Your ruby application
95
+
96
+ viki.newscasts.get #without parameter filter
97
+ viki.newscasts(language: 'ko').get #with parameter filter
50
98
 
@@ -27,7 +27,7 @@ module Viki
27
27
  end
28
28
 
29
29
  def prev
30
- @previous_url ? direct_request(@next_url) : nil
30
+ @previous_url ? direct_request(@previous_url) : nil
31
31
  end
32
32
 
33
33
  private
data/lib/viki/client.rb CHANGED
@@ -7,7 +7,8 @@ module Viki
7
7
  class Client
8
8
  Dir[File.expand_path('../client/*.rb', __FILE__)].each { |f| require f }
9
9
  URL_NAMESPACES = [:movies, :series, :episodes, :music_videos, :newscasts, :newsclips,
10
- :artists, :featured, :coming_soon, :subtitles, :hardsubs]
10
+ :artists, :featured, :coming_soon, :subtitles, :hardsubs, :genres, :countries,
11
+ :search, :languages]
11
12
 
12
13
  def initialize(client_id, client_secret)
13
14
  @client_id = client_id
@@ -30,7 +31,7 @@ module Viki
30
31
  end
31
32
 
32
33
  private
33
- def method_missing(name, *args, &block)
34
+ def method_missing(name, *args)
34
35
  @call_chain ||= []
35
36
  raise NoMethodError if not URL_NAMESPACES.include? name
36
37
 
data/lib/viki/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Viki
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/spec/request_spec.rb CHANGED
@@ -11,7 +11,7 @@ describe "Viki" do
11
11
  it "should retrieve an access token when the Viki object is configured and initialized" do
12
12
  VCR.use_cassette "auth" do
13
13
  client = Viki.new(client_id, client_secret)
14
- client.access_token.should == '1b080a6b3a94ed4503e04e252500ca87f6e7dc55061cec92b627ef1fbec44c70'
14
+ client.access_token.should == '7e5c411d19aaa60f9a5d18d7cf3c44ae9cf7e28d5ccee84e1a4b699cb7ab07fc'
15
15
  end
16
16
  end
17
17
 
@@ -137,5 +137,33 @@ describe "Viki" do
137
137
  end
138
138
  end
139
139
 
140
+ describe ".next" do
141
+ it "should invoke direct_request with a next_url" do
142
+ VCR.use_cassette("movies/list/pg2", :record => :new_episodes) do
143
+ movies = client.movies.get
144
+ next_url = movies.instance_variable_get(:@next_url)
145
+ movies.should_receive(:direct_request).with(next_url)
146
+ movies.next
147
+ end
148
+ end
149
+ end
150
+
151
+ describe ".prev" do
152
+ it "should invoke direct_request with previous_url" do
153
+ VCR.use_cassette("movies/list/pg2", :record => :new_episodes) do
154
+ movies_pg1 = client.movies.get
155
+ movies_pg2 = movies_pg1.next
156
+ previous_url = movies_pg2.instance_variable_get(:@previous_url)
157
+ movies_pg2.should_receive(:direct_request).with(previous_url)
158
+ movies_pg2.prev
159
+ end
160
+ end
161
+ end
162
+
163
+ describe ".method_missing" do
164
+ it "should raise NoMethodError if a method that is not on the whitelist is called" do
165
+ expect { client.does_not_exist }.should raise_error(NoMethodError)
166
+ end
167
+ end
140
168
  end
141
169
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: viki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-06-26 00:00:00.000000000 Z
14
+ date: 2012-06-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70355687456520 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,15 @@ dependencies:
23
23
  version: 2.10.0
24
24
  type: :development
25
25
  prerelease: false
26
- version_requirements: *70355687456520
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ version: 2.10.0
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: vcr
29
- requirement: &70355687454860 !ruby/object:Gem::Requirement
34
+ requirement: !ruby/object:Gem::Requirement
30
35
  none: false
31
36
  requirements:
32
37
  - - ~>
@@ -34,10 +39,15 @@ dependencies:
34
39
  version: 2.2.2
35
40
  type: :development
36
41
  prerelease: false
37
- version_requirements: *70355687454860
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.2.2
38
48
  - !ruby/object:Gem::Dependency
39
49
  name: webmock
40
- requirement: &70355687453880 !ruby/object:Gem::Requirement
50
+ requirement: !ruby/object:Gem::Requirement
41
51
  none: false
42
52
  requirements:
43
53
  - - ~>
@@ -45,10 +55,15 @@ dependencies:
45
55
  version: 1.8.7
46
56
  type: :development
47
57
  prerelease: false
48
- version_requirements: *70355687453880
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 1.8.7
49
64
  - !ruby/object:Gem::Dependency
50
65
  name: excon
51
- requirement: &70355687452500 !ruby/object:Gem::Requirement
66
+ requirement: !ruby/object:Gem::Requirement
52
67
  none: false
53
68
  requirements:
54
69
  - - ~>
@@ -56,10 +71,15 @@ dependencies:
56
71
  version: 0.9.6
57
72
  type: :development
58
73
  prerelease: false
59
- version_requirements: *70355687452500
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 0.9.6
60
80
  - !ruby/object:Gem::Dependency
61
81
  name: httparty
62
- requirement: &70355687450760 !ruby/object:Gem::Requirement
82
+ requirement: !ruby/object:Gem::Requirement
63
83
  none: false
64
84
  requirements:
65
85
  - - ~>
@@ -67,10 +87,15 @@ dependencies:
67
87
  version: 0.8.3
68
88
  type: :runtime
69
89
  prerelease: false
70
- version_requirements: *70355687450760
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ~>
94
+ - !ruby/object:Gem::Version
95
+ version: 0.8.3
71
96
  - !ruby/object:Gem::Dependency
72
97
  name: multi_json
73
- requirement: &70355687465960 !ruby/object:Gem::Requirement
98
+ requirement: !ruby/object:Gem::Requirement
74
99
  none: false
75
100
  requirements:
76
101
  - - ~>
@@ -78,7 +103,12 @@ dependencies:
78
103
  version: 1.3.6
79
104
  type: :runtime
80
105
  prerelease: false
81
- version_requirements: *70355687465960
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: 1.3.6
82
112
  description: Viki-gem is an official wrapper gem for the Viki V3 API.
83
113
  email:
84
114
  - engineering@viki.com
@@ -126,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
156
  version: '0'
127
157
  requirements: []
128
158
  rubyforge_project: viki
129
- rubygems_version: 1.8.11
159
+ rubygems_version: 1.8.24
130
160
  signing_key:
131
161
  specification_version: 3
132
162
  summary: A thin wrapper around the Viki V3 API