yify 0.0.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.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/Gemfile +5 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +276 -0
  6. data/Rakefile +31 -0
  7. data/lib/yify.rb +20 -0
  8. data/lib/yify/client.rb +184 -0
  9. data/lib/yify/models/api_response.rb +8 -0
  10. data/lib/yify/models/base.rb +10 -0
  11. data/lib/yify/models/comment.rb +15 -0
  12. data/lib/yify/models/movie.rb +54 -0
  13. data/lib/yify/models/profile.rb +10 -0
  14. data/lib/yify/models/requested_movie.rb +17 -0
  15. data/lib/yify/models/session.rb +10 -0
  16. data/lib/yify/models/upcoming_movie.rb +15 -0
  17. data/lib/yify/models/user.rb +19 -0
  18. data/lib/yify/response.rb +60 -0
  19. data/lib/yify/support/utils.rb +30 -0
  20. data/lib/yify/version.rb +3 -0
  21. data/spec/fixtures/vcr_cassettes/Yify_Client/should_add_a_request.yml +43 -0
  22. data/spec/fixtures/vcr_cassettes/Yify_Client/should_edit_a_profile.yml +42 -0
  23. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_a_profile.yml +44 -0
  24. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_comments.yml +89 -0
  25. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_details.yml +60 -0
  26. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_requests_list.yml +52 -0
  27. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_upcoming_movies.yml +188 -0
  28. data/spec/fixtures/vcr_cassettes/Yify_Client/should_get_user_details.yml +48 -0
  29. data/spec/fixtures/vcr_cassettes/Yify_Client/should_list_by_imdb_id.yml +55 -0
  30. data/spec/fixtures/vcr_cassettes/Yify_Client/should_list_movies.yml +45 -0
  31. data/spec/fixtures/vcr_cassettes/Yify_Client/should_login_a_user.yml +42 -0
  32. data/spec/fixtures/vcr_cassettes/Yify_Client/should_post_a_comment.yml +42 -0
  33. data/spec/fixtures/vcr_cassettes/Yify_Client/should_recover_passwords.yml +42 -0
  34. data/spec/fixtures/vcr_cassettes/Yify_Client/should_register_a_user.yml +42 -0
  35. data/spec/fixtures/vcr_cassettes/Yify_Client/should_reset_a_password.yml +42 -0
  36. data/spec/fixtures/vcr_cassettes/Yify_Client/should_vote_on_requests.yml +42 -0
  37. data/spec/models/api_response_spec.rb +6 -0
  38. data/spec/models/comment_spec.rb +13 -0
  39. data/spec/models/movie_spec.rb +53 -0
  40. data/spec/models/profile_spec.rb +21 -0
  41. data/spec/models/requested_movie_spec.rb +20 -0
  42. data/spec/models/session_spec.rb +8 -0
  43. data/spec/models/upcoming_movie_spec.rb +13 -0
  44. data/spec/models/user_spec.rb +17 -0
  45. data/spec/response_spec.rb +43 -0
  46. data/spec/spec_helper.rb +22 -0
  47. data/spec/support/utils_spec.rb +30 -0
  48. data/spec/yify_spec.rb +103 -0
  49. data/yify.gemspec +32 -0
  50. metadata +260 -0
@@ -0,0 +1,22 @@
1
+ require "yify"
2
+ require "vcr"
3
+ require "pry"
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = "spec/fixtures/vcr_cassettes"
7
+ c.hook_into :webmock
8
+ c.filter_sensitive_data("<USERNAME>") { ENV["username"] }
9
+ c.filter_sensitive_data("<PASSWORD>") { ENV["password"] }
10
+ c.filter_sensitive_data("<NEWPASSWORD>") { ENV["new_password"] }
11
+ c.filter_sensitive_data("<EMAIL>") { ENV["email"] }
12
+ c.filter_sensitive_data("<HASH>") { ENV["hash"] }
13
+ c.filter_sensitive_data("<USERID>") { ENV["user_id"] }
14
+ c.filter_sensitive_data("<IPADDRESS>") { ENV["ip_address"] }
15
+ end
16
+
17
+ RSpec.configure do |c|
18
+ c.around(:each, :vcr) do |example|
19
+ name = example.metadata[:full_description].split(/\s+/, 2).join("/").gsub(/[^\w\/]+/, "_")
20
+ VCR.use_cassette(name) { example.call }
21
+ end
22
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ class Dummy
4
+ end
5
+
6
+ describe Yify::Support::Utils do
7
+
8
+ let(:hash) { { "MovieTitle" => "Test", "MovieId" => "1234", "Nested" => { "ScreenShot1" => "http://..." } } }
9
+ let(:array_hash) { { "MyKey" => [{ "ArrOne" => 1 }, { "ArrTwo" => 2 }] } }
10
+ let(:klass) { Yify::Support::Utils.new }
11
+
12
+ before do
13
+ @dummy = Dummy.new
14
+ @dummy.extend(Yify::Support::Utils)
15
+ end
16
+
17
+ it "should underscore symbolize hash keys" do
18
+ expect(@dummy.symbolize_keys(hash)).to have_key(:movie_title)
19
+ end
20
+
21
+ it "should underscore symbolize keys recursively" do
22
+ expect(@dummy.symbolize_keys(hash)[:nested]).to have_key(:screen_shot1)
23
+ end
24
+
25
+ it "should underscore symbolize arrays" do
26
+ correct_array = [{ :arr_one => 1 }, { :arr_two => 2 }]
27
+
28
+ expect(@dummy.symbolize_keys(array_hash)[:my_key]).to match_array(correct_array)
29
+ end
30
+ end
@@ -0,0 +1,103 @@
1
+ require "spec_helper"
2
+
3
+ describe Yify::Client do
4
+
5
+ it "should include httparty" do
6
+ expect(subject.class).to respond_to(:get)
7
+ end
8
+
9
+ it "should have a base_uri configured" do
10
+ expect(subject.class.base_uri).to eq("http://yts.re/api")
11
+ end
12
+
13
+ it "should get upcoming movies", :vcr do
14
+ response = subject.upcoming
15
+ expect(response.result.first.movie_title).to eq("Persecuted (2014)")
16
+ end
17
+
18
+ it "should list movies", :vcr do
19
+ options = { limit: 1 }
20
+ response = subject.list(options)
21
+ expect(response.result.count).to eq(1)
22
+ end
23
+
24
+ it "should list by imdb id", :vcr do
25
+ options = { imdb_id: ["tt0111161", "tt0068646"] }
26
+ response = subject.list_imdb(options)
27
+ expect(response.result.first.movie_title_clean).to eq("The Godfather")
28
+ end
29
+
30
+ it "should get movie details", :vcr do
31
+ response = subject.movie(353)
32
+ expect(response.result.movie_title_clean).to eq("We Were Soldiers")
33
+ end
34
+
35
+ it "should get movie comments", :vcr do
36
+ response = subject.comments(353)
37
+ expect(response.result.first.comment_text).to eq("thanxxxxxxx")
38
+ end
39
+
40
+ it "should get user details", :vcr do
41
+ response = subject.user(16)
42
+ expect(response.result.user_name).to eq("YIFY")
43
+ end
44
+
45
+ it "should register a user", :vcr do
46
+ options = { username: ENV["username"], password: ENV["password"], email: ENV["email"] }
47
+ response = subject.register(options)
48
+ expect(response.result.status).to include("An activation email has been sent")
49
+ end
50
+
51
+ it "should login a user", :vcr do
52
+ options = { username: ENV["username"], password: ENV["password"] }
53
+ response = subject.login(options)
54
+ expect(response.result.hash).to eq(ENV["hash"])
55
+ end
56
+
57
+ it "should recover passwords", :vcr do
58
+ response = subject.send_password_reset(ENV["email"])
59
+ expect(response.result.status).to include("password reset code has been sent")
60
+ end
61
+
62
+ it "should reset a password", :vcr do
63
+ options = { code: ENV["code"], newpassword: ENV["new_password"] }
64
+ response = subject.reset_password(options)
65
+ expect(response.result.status).to include("password has been changed")
66
+ end
67
+
68
+ it "should get a profile", :vcr do
69
+ response = subject.profile(ENV["hash"])
70
+ expect(response.result.user_id).to eq(ENV["user_id"].to_i)
71
+ end
72
+
73
+ it "should edit a profile", :vcr do
74
+ options = { hash: ENV["hash"], about: "RUBY FTW!" }
75
+ response = subject.update_profile(options)
76
+ expect(response.result.status).to include("changes made successfully")
77
+ end
78
+
79
+ it "should post a comment", :vcr do
80
+ options = { hash: ENV["hash"], text: "RUBY FTW!", movieid: 353 }
81
+ response = subject.post_comment(options)
82
+ expect(response.result.status).to include("successfully posted comment")
83
+ end
84
+
85
+ it "should get requests list", :vcr do
86
+ options = { page: "confirmed", limit: 2 }
87
+ response = subject.requests(options)
88
+ expect(response.result.first.movie_title_clean).to eq("American Wedding")
89
+ end
90
+
91
+ it "should add a request", :vcr do
92
+ options = { hash: ENV["hash"], request: "tt0111161" }
93
+ response = subject.make_request(options)
94
+ expect(response.result.error).to include("Movie has already been uploaded")
95
+ end
96
+
97
+ it "should vote on requests", :vcr do
98
+ options = { hash: ENV["hash"], requestid: "1169" }
99
+ response = subject.vote(options)
100
+ expect(response.result.status).to include("Vote submission successful")
101
+ end
102
+
103
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'yify/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "yify"
8
+ spec.version = Yify::VERSION
9
+ spec.authors = ["Jon Lunsford"]
10
+ spec.email = ["jon@capturethecastle.net"]
11
+ spec.summary = %q{YIFY Torrents API}
12
+ spec.description = %q{A Ruby wrapper for the YIFY Torrents API}
13
+ spec.homepage = "http://github.com/jonlunsford/yify"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "httparty"
22
+ spec.add_dependency "dotenv"
23
+ spec.add_dependency "virtus"
24
+ spec.add_dependency "activesupport"
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.6"
27
+ spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "rspec"
29
+ spec.add_development_dependency "vcr"
30
+ spec.add_development_dependency "webmock"
31
+ spec.add_development_dependency "pry"
32
+ end
metadata ADDED
@@ -0,0 +1,260 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yify
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jon Lunsford
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dotenv
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: virtus
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.6'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: vcr
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: pry
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ description: A Ruby wrapper for the YIFY Torrents API
154
+ email:
155
+ - jon@capturethecastle.net
156
+ executables: []
157
+ extensions: []
158
+ extra_rdoc_files: []
159
+ files:
160
+ - .gitignore
161
+ - Gemfile
162
+ - LICENSE.txt
163
+ - README.md
164
+ - Rakefile
165
+ - lib/yify.rb
166
+ - lib/yify/client.rb
167
+ - lib/yify/models/api_response.rb
168
+ - lib/yify/models/base.rb
169
+ - lib/yify/models/comment.rb
170
+ - lib/yify/models/movie.rb
171
+ - lib/yify/models/profile.rb
172
+ - lib/yify/models/requested_movie.rb
173
+ - lib/yify/models/session.rb
174
+ - lib/yify/models/upcoming_movie.rb
175
+ - lib/yify/models/user.rb
176
+ - lib/yify/response.rb
177
+ - lib/yify/support/utils.rb
178
+ - lib/yify/version.rb
179
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_add_a_request.yml
180
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_edit_a_profile.yml
181
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_a_profile.yml
182
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_comments.yml
183
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_details.yml
184
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_requests_list.yml
185
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_upcoming_movies.yml
186
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_user_details.yml
187
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_list_by_imdb_id.yml
188
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_list_movies.yml
189
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_login_a_user.yml
190
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_post_a_comment.yml
191
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_recover_passwords.yml
192
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_register_a_user.yml
193
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_reset_a_password.yml
194
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_vote_on_requests.yml
195
+ - spec/models/api_response_spec.rb
196
+ - spec/models/comment_spec.rb
197
+ - spec/models/movie_spec.rb
198
+ - spec/models/profile_spec.rb
199
+ - spec/models/requested_movie_spec.rb
200
+ - spec/models/session_spec.rb
201
+ - spec/models/upcoming_movie_spec.rb
202
+ - spec/models/user_spec.rb
203
+ - spec/response_spec.rb
204
+ - spec/spec_helper.rb
205
+ - spec/support/utils_spec.rb
206
+ - spec/yify_spec.rb
207
+ - yify.gemspec
208
+ homepage: http://github.com/jonlunsford/yify
209
+ licenses:
210
+ - MIT
211
+ metadata: {}
212
+ post_install_message:
213
+ rdoc_options: []
214
+ require_paths:
215
+ - lib
216
+ required_ruby_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - '>='
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - '>='
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubyforge_project:
228
+ rubygems_version: 2.2.2
229
+ signing_key:
230
+ specification_version: 4
231
+ summary: YIFY Torrents API
232
+ test_files:
233
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_add_a_request.yml
234
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_edit_a_profile.yml
235
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_a_profile.yml
236
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_comments.yml
237
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_movie_details.yml
238
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_requests_list.yml
239
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_upcoming_movies.yml
240
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_get_user_details.yml
241
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_list_by_imdb_id.yml
242
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_list_movies.yml
243
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_login_a_user.yml
244
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_post_a_comment.yml
245
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_recover_passwords.yml
246
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_register_a_user.yml
247
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_reset_a_password.yml
248
+ - spec/fixtures/vcr_cassettes/Yify_Client/should_vote_on_requests.yml
249
+ - spec/models/api_response_spec.rb
250
+ - spec/models/comment_spec.rb
251
+ - spec/models/movie_spec.rb
252
+ - spec/models/profile_spec.rb
253
+ - spec/models/requested_movie_spec.rb
254
+ - spec/models/session_spec.rb
255
+ - spec/models/upcoming_movie_spec.rb
256
+ - spec/models/user_spec.rb
257
+ - spec/response_spec.rb
258
+ - spec/spec_helper.rb
259
+ - spec/support/utils_spec.rb
260
+ - spec/yify_spec.rb