ygoprodeck 1.0.6 → 1.0.9
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 +4 -4
- data/.github/workflows/ruby.yml +29 -0
- data/.gitignore +2 -4
- data/.prettierrc +7 -0
- data/README.md +41 -18
- data/Rakefile +2 -1
- data/examples/archetype.rb +19 -19
- data/examples/banlist.rb +2 -2
- data/examples/check_db.rb +2 -2
- data/examples/id.rb +25 -0
- data/examples/match.rb +6 -0
- data/examples/random.rb +14 -14
- data/examples/search.rb +19 -20
- data/examples/search_fuzzy.rb +19 -20
- data/examples/set.rb +2 -2
- data/lib/ygoprodeck/search/archetype.rb +14 -12
- data/lib/ygoprodeck/search/assets/names_card.json +13719 -0
- data/lib/ygoprodeck/search/id.rb +19 -0
- data/lib/ygoprodeck/search/match.rb +35 -0
- data/lib/ygoprodeck/version.rb +1 -1
- data/lib/ygoprodeck.rb +7 -16
- data/package.json +20 -0
- data/spec/id_spec.rb +10 -0
- data/spec/ygoprodeck_spec.rb +4 -6
- data/ygoprodeck.gemspec +22 -21
- metadata +34 -26
- data/.rubocop.yml +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 739b3a61061472446603384e83f9d1fb4fe1211b37d5f54e18e5b9f4e217167d
|
4
|
+
data.tar.gz: f031cbac41a7d99021303ebb25565b6ab86dd09cf7502b2d8cbe1754a09cef62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b36e0b2d8a72e623d51a805c445835cce78490b4e241b713847c5d06749691ddd2300d5326b71150b270e58e55302d727316bb88cfab76dc8b13175222d1e096
|
7
|
+
data.tar.gz: 39c2ed2c668be13885260d342379be8f4641f5f379564980b777f60cb23d1fc20b53272b46a4c452d3e4d2e37c19f69027bcb02a4452ae9778894d8765edbc3e
|
@@ -0,0 +1,29 @@
|
|
1
|
+
name: Ruby Gem CI
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [master]
|
6
|
+
pull_request:
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
test:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
|
12
|
+
strategy:
|
13
|
+
matrix:
|
14
|
+
ruby-version: [3.3]
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v4
|
18
|
+
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
23
|
+
bundler-cache: false
|
24
|
+
|
25
|
+
- name: Install bundler and run tests
|
26
|
+
run: |
|
27
|
+
gem install bundler -v 2.5.23
|
28
|
+
bundle _2.5.23_ install
|
29
|
+
bundle _2.5.23_ exec rspec --format documentation
|
data/.gitignore
CHANGED
data/.prettierrc
ADDED
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# Ygoprodeck
|
2
2
|
|
3
3
|

|
4
|
-
[](https://rubygems.org/gems/ygoprodeck)
|
5
|
-
[](https://rubygems.org/gems/ygoprodeck)
|
6
|
-
[](https://rubygems.org/gems/ygoprodeck)
|
5
|
+
[](https://rubygems.org/gems/ygoprodeck)
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
7
7
|
|
8
8
|
API wrapper for search yugioh card
|
9
9
|
|
@@ -24,34 +24,45 @@ Or install it yourself as:
|
|
24
24
|
$ gem install ygoprodeck
|
25
25
|
|
26
26
|
## Usage
|
27
|
-
|
27
|
+
|
28
28
|
```ruby
|
29
29
|
require 'ygoprodeck'
|
30
30
|
```
|
31
31
|
|
32
|
-
|
32
|
+
|
33
|
+
Search card by id :
|
33
34
|
```ruby
|
34
|
-
Ygoprodeck::
|
35
|
+
Ygoprodeck::ID.is(*id)
|
35
36
|
```
|
36
37
|
|
37
|
-
|
38
|
+
Search card by name :
|
38
39
|
```ruby
|
39
|
-
Ygoprodeck::Name.is(name
|
40
|
+
Ygoprodeck::Name.is(*name)
|
40
41
|
```
|
41
42
|
|
42
|
-
|
43
|
+
search card by name (use method fuzzy) :
|
43
44
|
```ruby
|
44
|
-
Ygoprodeck::
|
45
|
+
Ygoprodeck::Fname.is(*name)
|
46
|
+
```
|
47
|
+
|
48
|
+
Search list card by name:
|
49
|
+
```ruby
|
50
|
+
Ygoprodeck::List.is(*name)
|
51
|
+
```
|
52
|
+
|
53
|
+
Search Archtype by name:
|
54
|
+
```ruby
|
55
|
+
Ygoprodeck::Archetype.is(*name)
|
45
56
|
```
|
46
57
|
|
47
|
-
|
58
|
+
Matching card by name :
|
48
59
|
```ruby
|
49
|
-
Ygoprodeck::
|
60
|
+
Ygoprodeck::Match.is(*name)
|
50
61
|
```
|
51
62
|
|
52
|
-
|
63
|
+
Random card :
|
53
64
|
```ruby
|
54
|
-
Ygoprodeck::
|
65
|
+
Ygoprodeck::Card.random
|
55
66
|
```
|
56
67
|
|
57
68
|
All card sets :
|
@@ -71,7 +82,19 @@ Check Database Version :
|
|
71
82
|
Ygoprodeck::CheckDbVer.info
|
72
83
|
```
|
73
84
|
|
74
|
-
|
85
|
+
Get Full Image :
|
86
|
+
```ruby
|
87
|
+
yugi = Ygoprodeck::Fname.is(*name)
|
88
|
+
Ygoprodeck::Image.is(yugi['id'])
|
89
|
+
```
|
90
|
+
|
91
|
+
Get Cropped Image :
|
92
|
+
```ruby
|
93
|
+
yugi = Ygoprodeck::Fname.is(*name)
|
94
|
+
Ygoprodeck::Image_small.is(yugi['id'])
|
95
|
+
```
|
96
|
+
|
97
|
+
or look [examples](https://github.com/whdzera/ygoprodeck/blob/master/examples)
|
75
98
|
|
76
99
|
#### Noted
|
77
100
|
Rate Limiting on the API is enabled. The rate limit is 20 requests per 1 second
|
@@ -110,14 +133,14 @@ Rate Limiting on the API is enabled. The rate limit is 20 requests per 1 second
|
|
110
133
|
|
111
134
|
#### Unit Test
|
112
135
|
```
|
113
|
-
|
136
|
+
rake spec
|
114
137
|
```
|
115
138
|
|
116
139
|
## Contributing
|
117
|
-
Fork and Pull Request to contibuting https://github.com/
|
140
|
+
Fork and Pull Request to contibuting https://github.com/whdzera/ygoprodeck .
|
118
141
|
|
119
142
|
## License
|
120
143
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
121
144
|
|
122
145
|
## Code of Conduct
|
123
|
-
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/
|
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).
|
data/Rakefile
CHANGED
data/examples/archetype.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
3
|
# kaiba is example, you free to change card name
|
4
|
-
kaiba = Ygoprodeck::Archetype.is(
|
4
|
+
kaiba = Ygoprodeck::Archetype.is("blue-eyes") # example I wanna search 'blue-eyes' archetype
|
5
|
+
|
6
|
+
# make for looping for listing archetype
|
7
|
+
kaiba_listing = [] # save listing here
|
8
|
+
count = 50 # count max listing . example 50
|
9
|
+
num_default = 0 # number default
|
10
|
+
|
11
|
+
# looping logic
|
12
|
+
for logic_search in 1..50
|
13
|
+
if kaiba[num_default] == nil
|
14
|
+
else
|
15
|
+
kaiba_listing << kaiba[num_default]["name"]
|
16
|
+
num_default += 1
|
17
|
+
count -= 1
|
18
|
+
end
|
19
|
+
end
|
5
20
|
|
6
|
-
# make for looping for listing archetype
|
7
|
-
kaiba_listing = [] # save listing here
|
8
|
-
count = 50 # count max listing . example 50
|
9
|
-
num_default = 0 # number default
|
10
|
-
|
11
|
-
# looping logic
|
12
|
-
for logic_search in 1..50 do
|
13
|
-
if kaiba[num_default] == nil
|
14
|
-
else
|
15
|
-
kaiba_listing << kaiba[num_default]["name"]
|
16
|
-
num_default += 1
|
17
|
-
count -= 1
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
21
|
puts "#{kaiba_listing.length} card matches for blue-eyes archetype" #length blue-eyes archetype
|
22
|
-
puts "#" *30
|
23
|
-
puts "#{kaiba_listing.join(" \n")}" # each listing
|
22
|
+
puts "#" * 30
|
23
|
+
puts "#{kaiba_listing.join(" \n")}" # each listing
|
data/examples/banlist.rb
CHANGED
data/examples/check_db.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
|
-
puts Ygoprodeck::CheckDbVer.info
|
3
|
+
puts Ygoprodeck::CheckDbVer.info
|
data/examples/id.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "ygoprodeck"
|
2
|
+
|
3
|
+
yugi = Ygoprodeck::ID.is("46986414")
|
4
|
+
|
5
|
+
case
|
6
|
+
when yugi == nil
|
7
|
+
puts "Card not found"
|
8
|
+
else
|
9
|
+
puts yugi # => get all information of dark magician (name,id,level,attr,atk,def,etc)
|
10
|
+
|
11
|
+
puts "#" * 10
|
12
|
+
|
13
|
+
# => get specific information of dark magician
|
14
|
+
puts yugi["id"]
|
15
|
+
puts yugi["name"]
|
16
|
+
puts yugi["attribute"]
|
17
|
+
puts yugi["type"]
|
18
|
+
puts yugi["race"]
|
19
|
+
puts yugi["level"]
|
20
|
+
puts yugi["desc"]
|
21
|
+
puts yugi["atk"]
|
22
|
+
puts yugi["def"]
|
23
|
+
puts Ygoprodeck::Image.is(yugi["id"]) # => use id from yugi['id'] to get dark magician image
|
24
|
+
puts Ygoprodeck::Image_small.is(yugi["id"]) # => small version
|
25
|
+
end
|
data/examples/match.rb
ADDED
data/examples/random.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
3
|
yugi = Ygoprodeck::Card.random
|
4
|
-
|
4
|
+
puts yugi
|
5
5
|
|
6
|
-
|
6
|
+
puts "#" * 10
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
puts yugi["id"]
|
9
|
+
puts yugi["name"]
|
10
|
+
puts yugi["attribute"]
|
11
|
+
puts yugi["type"]
|
12
|
+
puts yugi["race"]
|
13
|
+
puts yugi["level"]
|
14
|
+
puts yugi["desc"]
|
15
|
+
puts yugi["atk"]
|
16
|
+
puts yugi["def"]
|
17
|
+
puts Ygoprodeck::Image.is(yugi["id"])
|
18
|
+
puts Ygoprodeck::Image_small.is(yugi["id"])
|
data/examples/search.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
3
|
# yugi is example, you free to change name card
|
4
|
-
yugi = Ygoprodeck::Name.is(
|
4
|
+
yugi = Ygoprodeck::Name.is("dark magician") # example I wanna search 'dark magician' using fuzzy search
|
5
5
|
|
6
6
|
case
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
when yugi == nil
|
8
|
+
puts "Card not found"
|
9
|
+
else
|
10
|
+
puts yugi # => get all information of dark magician (name,id,level,attr,atk,def,etc)
|
11
11
|
|
12
|
-
|
12
|
+
puts "#" * 10
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
puts Ygoprodeck::Image_small.is(yugi['id']) # => small version
|
14
|
+
# => get specific information of dark magician
|
15
|
+
puts yugi["id"]
|
16
|
+
puts yugi["name"]
|
17
|
+
puts yugi["attribute"]
|
18
|
+
puts yugi["type"]
|
19
|
+
puts yugi["race"]
|
20
|
+
puts yugi["level"]
|
21
|
+
puts yugi["desc"]
|
22
|
+
puts yugi["atk"]
|
23
|
+
puts yugi["def"]
|
24
|
+
puts Ygoprodeck::Image.is(yugi["id"]) # => use id from yugi['id'] to get dark magician image
|
25
|
+
puts Ygoprodeck::Image_small.is(yugi["id"]) # => small version
|
27
26
|
end
|
data/examples/search_fuzzy.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
3
|
# yugi is example, you free to change name card
|
4
|
-
yugi = Ygoprodeck::Fname.is(
|
4
|
+
yugi = Ygoprodeck::Fname.is("dark magician") # example I wanna search 'dark magician' using fuzzy search
|
5
5
|
|
6
6
|
case
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
when yugi == nil
|
8
|
+
puts "Card not found"
|
9
|
+
else
|
10
|
+
puts yugi # => get all information of dark magician (name,id,level,attr,atk,def,etc)
|
11
11
|
|
12
|
-
|
12
|
+
puts "#" * 10
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
puts Ygoprodeck::Image_small.is(yugi['id']) # => small version
|
14
|
+
# => get specific information of dark magician
|
15
|
+
puts yugi["id"]
|
16
|
+
puts yugi["name"]
|
17
|
+
puts yugi["attribute"]
|
18
|
+
puts yugi["type"]
|
19
|
+
puts yugi["race"]
|
20
|
+
puts yugi["level"]
|
21
|
+
puts yugi["desc"]
|
22
|
+
puts yugi["atk"]
|
23
|
+
puts yugi["def"]
|
24
|
+
puts Ygoprodeck::Image.is(yugi["id"]) # => use id from yugi['id'] to get dark magician image
|
25
|
+
puts Ygoprodeck::Image_small.is(yugi["id"]) # => small version
|
27
26
|
end
|
data/examples/set.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
require
|
1
|
+
require "ygoprodeck"
|
2
2
|
|
3
|
-
puts Ygoprodeck::Card.sets
|
3
|
+
puts Ygoprodeck::Card.sets
|
@@ -1,28 +1,30 @@
|
|
1
1
|
module Ygoprodeck
|
2
2
|
class Archetype
|
3
3
|
attr_reader :archetype
|
4
|
-
|
4
|
+
|
5
5
|
def self.is(archetype)
|
6
|
-
url =
|
6
|
+
url =
|
7
|
+
"#{Ygoprodeck::Endpoint.is}cardinfo.php?archetype=#{URI.encode_www_form_component(archetype)}"
|
7
8
|
uri = URI(url)
|
8
|
-
|
9
|
+
|
9
10
|
begin
|
10
11
|
response = Net::HTTP.get(uri)
|
11
12
|
load = JSON.parse(response)
|
12
|
-
|
13
|
-
if load[
|
14
|
-
{
|
13
|
+
|
14
|
+
if load["data"].nil? || load["data"].empty?
|
15
|
+
{
|
16
|
+
"error" => "No card matching your query was found in the database."
|
17
|
+
}
|
15
18
|
else
|
16
|
-
load[
|
19
|
+
load["data"]
|
17
20
|
end
|
18
|
-
|
19
21
|
rescue JSON::ParserError => e
|
20
|
-
{
|
22
|
+
{ "error" => "Failed to parse JSON response" }
|
21
23
|
rescue SocketError => e
|
22
|
-
{
|
24
|
+
{ "error" => "Network connection error" }
|
23
25
|
rescue StandardError => e
|
24
|
-
{
|
26
|
+
{ "error" => "An unexpected error occurred: #{e.message}" }
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
28
|
-
end
|
30
|
+
end
|