filmaffinity 0.1.3 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 35ddacbaf4982840fd3c9f95786da2dc10b7efce
4
- data.tar.gz: 3c4b1688e291b993e1ff8c5451afdc6b6590dbfb
3
+ metadata.gz: 99b7c4d40a9e6593e9acfdee78840caf2bc05315
4
+ data.tar.gz: 18eecf30e69c72d50e2aaf0545d0314861f4bea5
5
5
  SHA512:
6
- metadata.gz: edd81729836a80d2b18307c0a5c9e9114758bcc4885e02b5b8e2d68e824be348b0c4dce160ff0665de7958346fbf7738e4ee0b7e0e172143ea9ea15515693668
7
- data.tar.gz: 7a985adec69661079fef8cde3c412bb263cd703fa9653575b76ae7da86e21f143f697b50102d02cc244e038f276cc9b4fb56fc4b9e923dccb51384ed2b738b8d
6
+ metadata.gz: f4d840368e62a73569e87d9a8fc6dda2a8bb47cd3f51b10348cf2d7e65ec2725927397dd434aa7f54c2fb870344e9581ee194bc7693e4782fbf599631bdce408
7
+ data.tar.gz: f2656e1c31454ff8ef4bccf7b4b19bcb8483373891882219c8307f99f5e9a1e4952a1d83b6c59bb89cb3b68f87b25bd127ef209e9bbba948f75aa278b88b990c
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'filmaffinity'
3
- s.version = '0.1.3'
3
+ s.version = '0.2.3'
4
4
  s.date = '2016-04-05'
5
5
  s.summary = "filmaffinity"
6
6
  s.description = "Easily use Ruby or the command line to find information on Filmaffinity.com"
@@ -13,6 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.homepage = 'https://github.com/davidsantosmerino/filmaffinity-gem'
14
14
  s.license = 'MIT'
15
15
  s.add_dependency 'nokogiri', ' ~> 1.6'
16
+ s.add_dependency 'json', ' ~> 1.8'
16
17
  s.add_development_dependency 'rake', '~> 10.0'
17
18
  s.add_development_dependency 'rspec', '~> 3.3'
18
19
  end
@@ -2,6 +2,8 @@ require "open-uri"
2
2
  require "nokogiri"
3
3
 
4
4
  require_relative "constants/constants"
5
+ require_relative "filmaffinity/json-movies-parser"
6
+ require_relative "filmaffinity/json-movie-parser"
5
7
  require_relative "filmaffinity/movie"
6
8
  require_relative "filmaffinity/search"
7
9
  require_relative "filmaffinity/top"
@@ -0,0 +1,22 @@
1
+ require "json"
2
+
3
+ class JsonMovieParser
4
+
5
+ def to_hash movie
6
+ {
7
+ "title" => movie.title,
8
+ "rating" => movie.rating,
9
+ "director" => movie.director,
10
+ "year" => movie.year,
11
+ "duration" => movie.duration,
12
+ "country" => movie.country,
13
+ "script" => movie.script,
14
+ "cast" => movie.cast,
15
+ "sinopsis" => movie.sinopsis
16
+ }
17
+ end
18
+ def to_json movie
19
+ hash = to_hash movie
20
+ hash.to_json
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ class JsonMoviesParser
2
+
3
+ def to_hashes movies
4
+ hashes = []
5
+ movies.each do |movie|
6
+ hash = {
7
+ "id" => movie.id,
8
+ "title" => movie.title
9
+ }
10
+ hashes << hash
11
+ end
12
+ hashes
13
+ end
14
+ def to_json movies
15
+ hashes = to_hashes movies
16
+ hashes.to_json
17
+ end
18
+
19
+ end
@@ -4,6 +4,7 @@ module FilmAffinity
4
4
  def initialize id,title
5
5
  @id = id
6
6
  @title = title
7
+ @json_parser = JsonMovieParser.new
7
8
  end
8
9
 
9
10
  def document_html
@@ -84,5 +85,9 @@ module FilmAffinity
84
85
  def poster
85
86
  poster_url = document_html.at('img[itemprop="image"]')["src"]
86
87
  end
88
+
89
+ def to_json
90
+ @json_parser.to_json self
91
+ end
87
92
  end
88
93
  end
@@ -4,6 +4,7 @@ module FilmAffinity
4
4
  class Search
5
5
  def initialize query
6
6
  @query = query
7
+ @json_parser = JsonMoviesParser.new
7
8
  end
8
9
 
9
10
  def movies
@@ -39,5 +40,9 @@ module FilmAffinity
39
40
  movies
40
41
  end
41
42
 
43
+ def to_json
44
+ @json_parser.to_json movies
45
+ end
46
+
42
47
  end
43
48
  end
@@ -1,7 +1,8 @@
1
1
  module FilmAffinity
2
2
  class Top
3
- def initialize options = nil
3
+ def initialize options = {}
4
4
  @options = options
5
+ @json_parser = JsonMoviesParser.new
5
6
  end
6
7
 
7
8
  def movies
@@ -18,12 +19,10 @@ module FilmAffinity
18
19
 
19
20
  def query_options
20
21
  query_options = String.new
21
- if @options
22
22
  query_options += "?"
23
23
  @options.each do |key,value|
24
24
  query_options += Constants.query_params[key] % value
25
25
  end
26
- end
27
26
  query_options.gsub(/\&$/,"")
28
27
  end
29
28
 
@@ -38,5 +37,9 @@ module FilmAffinity
38
37
  movies
39
38
  end
40
39
 
40
+ def to_json
41
+ @json_parser.to_json movies
42
+ end
43
+
41
44
  end
42
45
  end
@@ -0,0 +1,15 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe "JsonMovieParser" do
4
+
5
+ describe "#to_hash" do
6
+ subject { JsonMovieParser.new }
7
+
8
+ it "return the right director for the given movie" do
9
+ hash = subject.to_hash FilmAffinity::Movie.new(504889, "El show de Truman (Una vida en directo)")
10
+ expect(hash["director"]).to eq("Peter Weir")
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "../spec_helper"
2
+
3
+ describe "JsonMoviesParser" do
4
+
5
+ describe "#to_hashes" do
6
+ subject { JsonMoviesParser.new }
7
+
8
+ it "return some valid ids for a given search" do
9
+ hashes = subject.to_hashes FilmAffinity::Search.new("truman").movies
10
+ expect(hashes.map {|hash| hash["id"]}).to include(193232, 504889)
11
+ end
12
+
13
+ end
14
+
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filmaffinity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Santos, Oriol Bellido
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,9 +80,13 @@ files:
66
80
  - filmaffinity.gemspec
67
81
  - lib/constants/constants.rb
68
82
  - lib/filmaffinity.rb
83
+ - lib/filmaffinity/json-movie-parser.rb
84
+ - lib/filmaffinity/json-movies-parser.rb
69
85
  - lib/filmaffinity/movie.rb
70
86
  - lib/filmaffinity/search.rb
71
87
  - lib/filmaffinity/top.rb
88
+ - spec/filmaffinity/json-movie-parser_spec.rb
89
+ - spec/filmaffinity/json-movies-parser_spec.rb
72
90
  - spec/filmaffinity/matchers/include-movie.rb
73
91
  - spec/filmaffinity/movie_spec.rb
74
92
  - spec/filmaffinity/search_spec.rb
@@ -99,6 +117,8 @@ signing_key:
99
117
  specification_version: 4
100
118
  summary: filmaffinity
101
119
  test_files:
120
+ - spec/filmaffinity/json-movie-parser_spec.rb
121
+ - spec/filmaffinity/json-movies-parser_spec.rb
102
122
  - spec/filmaffinity/matchers/include-movie.rb
103
123
  - spec/filmaffinity/movie_spec.rb
104
124
  - spec/filmaffinity/search_spec.rb