ygoprodeck 1.0.9 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 739b3a61061472446603384e83f9d1fb4fe1211b37d5f54e18e5b9f4e217167d
4
- data.tar.gz: f031cbac41a7d99021303ebb25565b6ab86dd09cf7502b2d8cbe1754a09cef62
3
+ metadata.gz: d7b8e5947a55893879f833bb1c573581a1debaacd252719387115e5e8d80c52c
4
+ data.tar.gz: d5f68bbfccb2a899f822cdf4742db3bbcc3ac80651ebc9c7b56e16483de02a11
5
5
  SHA512:
6
- metadata.gz: b36e0b2d8a72e623d51a805c445835cce78490b4e241b713847c5d06749691ddd2300d5326b71150b270e58e55302d727316bb88cfab76dc8b13175222d1e096
7
- data.tar.gz: 39c2ed2c668be13885260d342379be8f4641f5f379564980b777f60cb23d1fc20b53272b46a4c452d3e4d2e37c19f69027bcb02a4452ae9778894d8765edbc3e
6
+ metadata.gz: 3f5ce7c3509147d7d1eb318449af73ccc5724c9445ddd91c1554d4c56d12a2eab985f318164bc32f9c560ac8846a736e11f12360a32dc6004f036513241b0311
7
+ data.tar.gz: 3e3dcf4a3907d631579aaa30069fef46c0d633012c85ee89e797ad3f9726ba5d1e28d6206c73d469732702af1d6a138ad1240300c66f1e4198e3a1b745deed17
data/.gitignore CHANGED
@@ -9,4 +9,5 @@
9
9
  node_modules
10
10
  .rspec_status
11
11
  Gemfile.lock
12
- package-lock.json
12
+ package-lock.json
13
+ .rubocop_todo.yml
data/.rubocop.yml ADDED
@@ -0,0 +1,10 @@
1
+ inherit_from: .rubocop_todo.yml
2
+ AllCops:
3
+ Include:
4
+ - "**/*.rb"
5
+ - "**/*.rake"
6
+ - "."
7
+ Exclude:
8
+ - "vendor/**/*"
9
+ - "db/schema.rb"
10
+ NewCops: enable
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec name: 'ygoprodeck'
4
+
5
+ gem 'rubocop', '1.80.0'
data/README.md CHANGED
@@ -29,66 +29,78 @@ Or install it yourself as:
29
29
  require 'ygoprodeck'
30
30
  ```
31
31
 
32
-
33
32
  Search card by id :
33
+
34
34
  ```ruby
35
35
  Ygoprodeck::ID.is(*id)
36
36
  ```
37
37
 
38
38
  Search card by name :
39
+
39
40
  ```ruby
40
41
  Ygoprodeck::Name.is(*name)
41
42
  ```
42
43
 
43
- search card by name (use method fuzzy) :
44
+ search card by name (use method fuzzy) :
45
+
44
46
  ```ruby
45
47
  Ygoprodeck::Fname.is(*name)
46
48
  ```
47
49
 
48
50
  Search list card by name:
51
+
49
52
  ```ruby
50
53
  Ygoprodeck::List.is(*name)
51
54
  ```
52
55
 
53
56
  Search Archtype by name:
57
+
54
58
  ```ruby
55
59
  Ygoprodeck::Archetype.is(*name)
56
60
  ```
57
61
 
58
62
  Matching card by name :
63
+
59
64
  ```ruby
60
65
  Ygoprodeck::Match.is(*name)
61
66
  ```
62
67
 
63
68
  Random card :
69
+
64
70
  ```ruby
65
71
  Ygoprodeck::Card.random
66
72
  ```
67
73
 
68
74
  All card sets :
75
+
69
76
  ```ruby
70
77
  Ygoprodeck::Card.sets
71
78
  ```
72
79
 
73
- Banlist (TCG, OCG, GOAT) :
80
+ Banlist (MasterDuel, TCG, OCG, GOAT) :
81
+
74
82
  ```ruby
83
+ Ygoprodeck::Banlist.md
75
84
  Ygoprodeck::Banlist.tcg
76
85
  Ygoprodeck::Banlist.ocg
77
86
  Ygoprodeck::Banlist.goat
78
87
  ```
79
88
 
80
89
  Check Database Version :
90
+
81
91
  ```ruby
82
92
  Ygoprodeck::CheckDbVer.info
83
93
  ```
84
94
 
85
- Get Full Image :
95
+ Image card :
96
+
86
97
  ```ruby
87
98
  yugi = Ygoprodeck::Fname.is(*name)
88
99
  Ygoprodeck::Image.is(yugi['id'])
89
100
  ```
90
101
 
91
- Get Cropped Image :
102
+ Cropped Image card (Art) :
103
+
92
104
  ```ruby
93
105
  yugi = Ygoprodeck::Fname.is(*name)
94
106
  Ygoprodeck::Image_small.is(yugi['id'])
@@ -96,12 +108,14 @@ Ygoprodeck::Image_small.is(yugi['id'])
96
108
 
97
109
  or look [examples](https://github.com/whdzera/ygoprodeck/blob/master/examples)
98
110
 
99
- #### Noted
111
+ #### Noted
112
+
100
113
  Rate Limiting on the API is enabled. The rate limit is 20 requests per 1 second
101
114
 
102
115
  #### Response Information
103
116
 
104
117
  ##### Monster Cards
118
+
105
119
  - id - ID or Passocde of the card.
106
120
  - name - Name of the card.
107
121
  - type - The type of card you are viewing (Normal Monster, Effect Monster, Synchro Monster, etc).
@@ -132,15 +146,19 @@ Rate Limiting on the API is enabled. The rate limit is 20 requests per 1 second
132
146
  ## Development
133
147
 
134
148
  #### Unit Test
149
+
135
150
  ```
136
- rake spec
151
+ rake spec
137
152
  ```
138
153
 
139
154
  ## Contributing
155
+
140
156
  Fork and Pull Request to contibuting https://github.com/whdzera/ygoprodeck .
141
157
 
142
158
  ## License
159
+
143
160
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
144
161
 
145
162
  ## Code of Conduct
146
- Everyone interacting in the Ygoprodeck project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/whdzera/ygoprodeck/blob/master/CODE_OF_CONDUCT.md).
163
+
164
+ Everyone interacting in the Ygoprodeck project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/whdzera/ygoprodeck/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -1,9 +1,9 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec) do |t|
5
- t.pattern = "spec/**/*_spec.rb"
6
- t.rspec_opts = "--format documentation"
5
+ t.pattern = 'spec/**/*_spec.rb'
6
+ t.rspec_opts = '--format documentation'
7
7
  end
8
8
 
9
9
  task default: :spec
@@ -1,5 +1,11 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'uri'
4
+
1
5
  module Ygoprodeck
2
6
  class Banlist
7
+ API_BASE = 'https://ygoprodeck.com/api/banlist'
8
+
3
9
  def self.fetch_banlist(format)
4
10
  url = "#{Ygoprodeck::Endpoint.is}cardinfo.php?banlist=#{format}"
5
11
  uri = URI(url)
@@ -13,16 +19,15 @@ module Ygoprodeck
13
19
  else
14
20
  load
15
21
  end
16
-
17
- rescue JSON::ParserError => e
22
+ rescue JSON::ParserError
18
23
  { 'error' => 'Failed to parse JSON response' }
19
- rescue SocketError => e
24
+ rescue SocketError
20
25
  { 'error' => 'Network connection error' }
21
26
  rescue StandardError => e
22
27
  { 'error' => "An unexpected error occurred: #{e.message}" }
23
28
  end
24
29
  end
25
-
30
+
26
31
  def self.tcg
27
32
  fetch_banlist('tcg')
28
33
  end
@@ -34,5 +39,40 @@ module Ygoprodeck
34
39
  def self.goat
35
40
  fetch_banlist('goat')
36
41
  end
42
+
43
+ def self.md
44
+
45
+ dates_uri = URI("#{API_BASE}/getBanListDates.php")
46
+ dates_res = Net::HTTP.get(dates_uri)
47
+ dates = JSON.parse(dates_res)
48
+
49
+ master_duel_dates = dates.select { |d| d['type'] == 'Master Duel' }
50
+ return { 'error' => 'No Master Duel dates found' } if master_duel_dates.empty?
51
+
52
+ latest_date = master_duel_dates.map { |d| d['date'] }.max
53
+
54
+ list_uri = URI("#{API_BASE}/getBanList.php?list=Master%20Duel&date=#{latest_date}")
55
+ req = Net::HTTP::Get.new(list_uri)
56
+ req['User-Agent'] = 'Mozilla/5.0'
57
+
58
+ res = Net::HTTP.start(list_uri.host, list_uri.port, use_ssl: true) do |http|
59
+ http.request(req)
60
+ end
61
+
62
+ load = JSON.parse(res.body)
63
+
64
+ if load.is_a?(Hash) && load.key?('error')
65
+ { 'error' => load['error'] }
66
+ else
67
+ load
68
+ end
69
+ rescue JSON::ParserError
70
+ { 'error' => 'Failed to parse JSON response' }
71
+ rescue SocketError
72
+ { 'error' => 'Network connection error' }
73
+ rescue StandardError => e
74
+ { 'error' => "An unexpected error occurred: #{e.message}" }
75
+
76
+ end
37
77
  end
38
- end
78
+ end
@@ -1,3 +1,3 @@
1
1
  module Ygoprodeck
2
- VERSION = "1.0.9"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,6 +1,5 @@
1
1
  RSpec.describe Ygoprodeck do
2
- it "check DB Ygoprodeck version" do
3
- expect(Ygoprodeck::CheckDbVer.info).not_to be nil
4
- end
5
-
6
- end
2
+ it "check DB Ygoprodeck version" do
3
+ expect(Ygoprodeck::CheckDbVer.info).not_to be nil
4
+ end
5
+ end
data/ygoprodeck.gemspec CHANGED
@@ -1,29 +1,29 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "ygoprodeck/version"
3
+ require 'ygoprodeck/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "ygoprodeck"
6
+ spec.name = 'ygoprodeck'
7
7
  spec.version = Ygoprodeck::VERSION
8
- spec.authors = ["Rokhimin Wahid"]
9
- spec.email = ["whdzera@gmail.com"]
8
+ spec.authors = ['Rokhimin Wahid']
9
+ spec.email = ['whdzera@gmail.com']
10
10
  spec.summary = "ygoprodeck API wrapper for search yugioh's card"
11
- spec.description = "ygoprodeck API wrapper for search yugioh card"
12
- spec.homepage = "http://github.com/whdzera/ygoprodeck"
13
- spec.license = "MIT"
11
+ spec.description = 'ygoprodeck API wrapper for search yugioh card'
12
+ spec.homepage = 'http://github.com/whdzera/ygoprodeck'
13
+ spec.license = 'MIT'
14
14
 
15
15
  spec.files = `git ls-files -z`.split("\x0")
16
- spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
16
  spec.executables =
18
17
  `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
20
19
 
21
- spec.required_ruby_version = ">= 2.0.0"
20
+ spec.required_ruby_version = '>= 2.0.0'
22
21
 
23
- spec.add_dependency "amatch", "~> 0.4.1"
24
- spec.add_development_dependency "bundler", "~> 2.5.23"
25
- spec.add_development_dependency "rake", "~> 13.0"
26
- spec.add_development_dependency "rspec", "~> 3.0"
27
- spec.add_development_dependency "rspec-prof", "~> 0.0.7"
28
- spec.add_development_dependency "syntax_tree", "6.2.0"
22
+ spec.add_dependency 'amatch', '~> 0.4.1'
23
+ spec.add_development_dependency 'bundler', '~> 2.5.23'
24
+ spec.add_development_dependency 'rake', '~> 13.0'
25
+ spec.add_development_dependency 'rspec', '~> 3.0'
26
+ spec.add_development_dependency 'rspec-prof', '~> 0.0.7'
27
+ spec.add_development_dependency 'syntax_tree', '6.2.0'
28
+ spec.metadata['rubygems_mfa_required'] = 'true'
29
29
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ygoprodeck
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rokhimin Wahid
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-07-19 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: amatch
@@ -97,21 +97,19 @@ description: ygoprodeck API wrapper for search yugioh card
97
97
  email:
98
98
  - whdzera@gmail.com
99
99
  executables:
100
- - console
101
100
  - setup
102
101
  extensions: []
103
102
  extra_rdoc_files: []
104
103
  files:
105
104
  - ".github/workflows/ruby.yml"
106
105
  - ".gitignore"
107
- - ".prettierrc"
108
106
  - ".rspec"
107
+ - ".rubocop.yml"
109
108
  - CODE_OF_CONDUCT.md
110
109
  - Gemfile
111
110
  - LICENSE.txt
112
111
  - README.md
113
112
  - Rakefile
114
- - bin/console
115
113
  - bin/setup
116
114
  - examples/archetype.rb
117
115
  - examples/banlist.rb
@@ -140,7 +138,6 @@ files:
140
138
  - lib/ygoprodeck/search/name.rb
141
139
  - lib/ygoprodeck/search/random.rb
142
140
  - lib/ygoprodeck/version.rb
143
- - package.json
144
141
  - spec/archetype_spec.rb
145
142
  - spec/banlist_spec.rb
146
143
  - spec/cardsets_spec.rb
@@ -158,7 +155,8 @@ files:
158
155
  homepage: http://github.com/whdzera/ygoprodeck
159
156
  licenses:
160
157
  - MIT
161
- metadata: {}
158
+ metadata:
159
+ rubygems_mfa_required: 'true'
162
160
  rdoc_options: []
163
161
  require_paths:
164
162
  - lib
@@ -173,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
171
  - !ruby/object:Gem::Version
174
172
  version: '0'
175
173
  requirements: []
176
- rubygems_version: 3.6.3
174
+ rubygems_version: 3.7.1
177
175
  specification_version: 4
178
176
  summary: ygoprodeck API wrapper for search yugioh's card
179
177
  test_files: []
data/.prettierrc DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "plugins": ["@prettier/plugin-ruby"],
3
- "rubyStrictMode": false,
4
- "tabWidth": 2,
5
- "useTabs": false,
6
- "singleQuote": true
7
- }
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "ygoprodeck"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/package.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "name": "ygoprodeck",
3
- "version": "1.0.0",
4
- "description": "![Lang](https://img.shields.io/badge/language-ruby-red)\r [![Gem Version](https://img.shields.io/gem/v/ygoprodeck.svg)](https://rubygems.org/gems/ygoprodeck)\r [![Gem Downloads](https://img.shields.io/gem/dt/ygoprodeck.svg)](https://rubygems.org/gems/ygoprodeck)\r [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)",
5
- "main": "index.js",
6
- "directories": {
7
- "example": "examples",
8
- "lib": "lib"
9
- },
10
- "scripts": {
11
- "test": "echo \"Error: no test specified\" && exit 1"
12
- },
13
- "keywords": [],
14
- "author": "",
15
- "license": "ISC",
16
- "devDependencies": {
17
- "@prettier/plugin-ruby": "^4.0.4",
18
- "prettier": "^3.5.3"
19
- }
20
- }