animenewsnetwork 0.0.1 → 0.0.2

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.
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.9.2
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  TODO: Write a gem description
4
4
 
5
+ [![Build Status](https://travis-ci.org/riywo/animenewsnetwork.png?branch=master)](https://travis-ci.org/riywo/animenewsnetwork)
6
+
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
@@ -18,10 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.required_ruby_version = ">= 2.0.0"
21
+ spec.required_ruby_version = ">= 1.9"
22
22
 
23
23
  spec.add_dependency "nokogiri"
24
24
  spec.add_dependency "addressable"
25
+ spec.add_dependency "data_validator"
25
26
 
26
27
  spec.add_development_dependency "bundler", "~> 1.3"
27
28
  spec.add_development_dependency "rake"
@@ -1,30 +1,40 @@
1
1
  require 'open-uri'
2
2
  require 'nokogiri'
3
3
  require 'addressable/uri'
4
+ require 'data_validator'
4
5
 
5
6
  class AnimeNewsNetwork::Encyclopedia
6
- def initialize(url: 'http://cdn.animenewsnetwork.com/encyclopedia')
7
- @url = url.freeze
7
+ def initialize(args = {})
8
+ @url = args.has_key?(:url) ? args[:url] : 'http://cdn.animenewsnetwork.com/encyclopedia'
8
9
  end
9
10
 
10
- def get_reports(id: nil, type: nil)
11
- raise ArgumentError if id.nil?
12
- raise ArgumentError if type.nil?
11
+ def get_reports(args = {})
12
+ validator = DataValidator::Validator.new(
13
+ args, {
14
+ id: { presence: true, numericality: { only_integer: true } },
15
+ type: { presence: true, inclusion: { in: %w(anime manga) } },
16
+ nskip: { allow_nil: true, numericality: { only_integer: true } },
17
+ nlist: { allow_nil: true, format: { with: /^(\d+|all)$/ } },
18
+ }
19
+ )
20
+ raise ArgumentError, validator.errors unless validator.valid?
13
21
 
14
22
  path = '/reports.xml';
15
- query = {
16
- id: id,
17
- type: type,
18
- }
23
+ query = args
19
24
  Nokogiri::XML(get(path, query))
20
25
  end
21
26
 
22
- def get_details(id: nil, type: nil)
23
- raise ArgumentError if id.nil?
24
- raise ArgumentError if type.nil?
27
+ def get_details(args = {})
28
+ validator = DataValidator::Validator.new(
29
+ args, {
30
+ id: { presence: true, numericality: { only_integer: true } },
31
+ type: { presence: true, inclusion: { in: %w(anime manga) } },
32
+ }
33
+ )
34
+ raise ArgumentError, validator.errors unless validator.valid?
25
35
 
26
36
  path = '/api.xml';
27
- query = { type => id }
37
+ query = { args[:type] => args[:id] }
28
38
  Nokogiri::XML(get(path, query))
29
39
  end
30
40
 
@@ -1,3 +1,3 @@
1
1
  module AnimeNewsNetwork
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -7,6 +7,16 @@ describe AnimeNewsNetwork::Encyclopedia do
7
7
  .with(query: { id: 155, type: "anime" })
8
8
  .to_return(body: reports_xml)
9
9
 
10
+ reports_xml = File.new(File.expand_path('../../resources/reports_xml_id_155_type_anime', __FILE__))
11
+ stub_http_request(:get, "cdn.animenewsnetwork.com/encyclopedia/reports.xml")
12
+ .with(query: { id: 155, type: "anime", nskip: 10, nlist: 10 })
13
+ .to_return(body: reports_xml)
14
+
15
+ reports_xml = File.new(File.expand_path('../../resources/reports_xml_id_155_type_anime', __FILE__))
16
+ stub_http_request(:get, "cdn.animenewsnetwork.com/encyclopedia/reports.xml")
17
+ .with(query: { id: 155, type: "anime", nlist: "all" })
18
+ .to_return(body: reports_xml)
19
+
10
20
  api_xml = File.new(File.expand_path('../../resources/api_xml_anime_4658', __FILE__))
11
21
  stub_http_request(:get, "cdn.animenewsnetwork.com/encyclopedia/api.xml")
12
22
  .with(query: { anime: 4658 })
@@ -19,6 +29,14 @@ describe AnimeNewsNetwork::Encyclopedia do
19
29
  subject { ann.get_reports(id: 155, type: 'anime') }
20
30
  it { should be_a Nokogiri::XML::Document }
21
31
  end
32
+ describe "GET reports nskip & nlist" do
33
+ subject { ann.get_reports(id: 155, type: 'anime', nskip: 10, nlist: 10) }
34
+ it { should be_a Nokogiri::XML::Document }
35
+ end
36
+ describe "GET reports nlist all" do
37
+ subject { ann.get_reports(id: 155, type: 'anime', nlist: 'all') }
38
+ it { should be_a Nokogiri::XML::Document }
39
+ end
22
40
 
23
41
  describe "GET details" do
24
42
  subject { ann.get_details(id: 4658, type: 'anime') }
metadata CHANGED
@@ -1,46 +1,68 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: animenewsnetwork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Ryosuke IWANAGA
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-05-27 00:00:00.000000000 Z
12
+ date: 2013-05-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: nokogiri
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - '>='
19
+ - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: addressable
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: data_validator
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
39
60
  - !ruby/object:Gem::Version
40
61
  version: '0'
41
62
  - !ruby/object:Gem::Dependency
42
63
  name: bundler
43
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
44
66
  requirements:
45
67
  - - ~>
46
68
  - !ruby/object:Gem::Version
@@ -48,6 +70,7 @@ dependencies:
48
70
  type: :development
49
71
  prerelease: false
50
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
51
74
  requirements:
52
75
  - - ~>
53
76
  - !ruby/object:Gem::Version
@@ -55,57 +78,65 @@ dependencies:
55
78
  - !ruby/object:Gem::Dependency
56
79
  name: rake
57
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
58
82
  requirements:
59
- - - '>='
83
+ - - ! '>='
60
84
  - !ruby/object:Gem::Version
61
85
  version: '0'
62
86
  type: :development
63
87
  prerelease: false
64
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
65
90
  requirements:
66
- - - '>='
91
+ - - ! '>='
67
92
  - !ruby/object:Gem::Version
68
93
  version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rspec
71
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
72
98
  requirements:
73
- - - '>='
99
+ - - ! '>='
74
100
  - !ruby/object:Gem::Version
75
101
  version: '0'
76
102
  type: :development
77
103
  prerelease: false
78
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
79
106
  requirements:
80
- - - '>='
107
+ - - ! '>='
81
108
  - !ruby/object:Gem::Version
82
109
  version: '0'
83
110
  - !ruby/object:Gem::Dependency
84
111
  name: webmock
85
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
86
114
  requirements:
87
- - - '>='
115
+ - - ! '>='
88
116
  - !ruby/object:Gem::Version
89
117
  version: '0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
93
122
  requirements:
94
- - - '>='
123
+ - - ! '>='
95
124
  - !ruby/object:Gem::Version
96
125
  version: '0'
97
126
  - !ruby/object:Gem::Dependency
98
127
  name: pry
99
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
100
130
  requirements:
101
- - - '>='
131
+ - - ! '>='
102
132
  - !ruby/object:Gem::Version
103
133
  version: '0'
104
134
  type: :development
105
135
  prerelease: false
106
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
107
138
  requirements:
108
- - - '>='
139
+ - - ! '>='
109
140
  - !ruby/object:Gem::Version
110
141
  version: '0'
111
142
  description: AnimeNewsNetwork API
@@ -117,7 +148,7 @@ extra_rdoc_files: []
117
148
  files:
118
149
  - .gitignore
119
150
  - .rspec
120
- - .ruby-version
151
+ - .travis.yml
121
152
  - Gemfile
122
153
  - LICENSE.txt
123
154
  - README.md
@@ -134,26 +165,30 @@ files:
134
165
  homepage: ''
135
166
  licenses:
136
167
  - MIT
137
- metadata: {}
138
168
  post_install_message:
139
169
  rdoc_options: []
140
170
  require_paths:
141
171
  - lib
142
172
  required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
143
174
  requirements:
144
- - - '>='
175
+ - - ! '>='
145
176
  - !ruby/object:Gem::Version
146
- version: 2.0.0
177
+ version: '1.9'
147
178
  required_rubygems_version: !ruby/object:Gem::Requirement
179
+ none: false
148
180
  requirements:
149
- - - '>='
181
+ - - ! '>='
150
182
  - !ruby/object:Gem::Version
151
183
  version: '0'
184
+ segments:
185
+ - 0
186
+ hash: 3131183906614767275
152
187
  requirements: []
153
188
  rubyforge_project:
154
- rubygems_version: 2.0.2
189
+ rubygems_version: 1.8.23
155
190
  signing_key:
156
- specification_version: 4
191
+ specification_version: 3
157
192
  summary: AnimeNewsNetwork API
158
193
  test_files:
159
194
  - spec/animenewsnetwork_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 485242bb38a628015fa70c792bf057490beaeb8b
4
- data.tar.gz: c95fb34e388eca3cbf19c50ca04c716dd51130a8
5
- SHA512:
6
- metadata.gz: 5901394da31967f9223b752cf339da821c792742c4273a2f2fcd3ce151176cbef08f98c536a5b1a087e259a1cbae8aa352bc69c0e040d5c7c2d05be9aa2e7de7
7
- data.tar.gz: 8f6ef18be8eed9b75f96793dd135a26f0bc8dd849c9d178ec3c2a1913074279100e0c3307d9dc636bbea9447e69773bc109f4c7c48c044d29a3836686bff997a
@@ -1 +0,0 @@
1
- 2.0.0-p195