fishbans 1.1.4 → 2.0.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 +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/block_engine.rb +5 -3
- data/lib/fishbans.rb +45 -72
- data/lib/player_skins.rb +8 -4
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8afd3ab3a10bb5c4fd3749df793ec8a329ba8750
|
4
|
+
data.tar.gz: 239ee72e8c6559c1484d5beff351529876024841
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0edc84dbb944088d4fe827c44787acc37cccf27b2ee0650ea8c70630745bba5ebac3b3e380344876c93fbd3d0b96c635153b4a284960a45495259fdff455b3ff
|
7
|
+
data.tar.gz: 00f6bf0aea58828100e87bafa8fffee4c0ee47782390f27ccfe5a1fdb634b7ccfba4f6e1deb099c42169ff09716ca4e3986f01330d50a87a9b76054e29e0f760
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
# Changelog
|
2
|
+
## Version 2
|
3
|
+
### Version 2.0.0
|
4
|
+
* The `services` array is now a constant as `Fishbans::SERVICES`.
|
5
|
+
* Error strings are no longer returned from methods, but thrown as RuntimeErrors.
|
6
|
+
* `parse_generic_ban_result` no longer returns a hash of arrays, but a hash of hashes. See the docs for more details.
|
7
|
+
* Update to Ruby 2.4.0: `Fixnum` -> `Integer` in documentation.
|
8
|
+
|
2
9
|
## Version 1
|
3
10
|
### Version 1.1.4
|
4
11
|
* Remove a couple unnecessary things from the PlayerSkins and BlockEngine (is_a? check and downcase).
|
data/lib/block_engine.rb
CHANGED
@@ -6,10 +6,11 @@ module Fishbans
|
|
6
6
|
# Gets a block image by its ID and Metadata. Unfortunately it uses the old
|
7
7
|
# block IDs rather than the new ones, so you have to memorize those
|
8
8
|
# pesky integers.
|
9
|
-
# @param id [
|
10
|
-
# @param metadata [
|
9
|
+
# @param id [Integer] The (outdated) block ID number.
|
10
|
+
# @param metadata [Integer] The metadata, if any, for the block.
|
11
11
|
# @param size [Fixnum] The size of the image to get.
|
12
12
|
# @return [ChunkyPNG::Image] The ChunkyPNG instance of that block image.
|
13
|
+
# @raise see #get
|
13
14
|
def get_block(id, metadata = nil, size = 42)
|
14
15
|
url = "http://blocks.fishbans.com/#{id}"
|
15
16
|
url += "-#{metadata}" unless metadata.nil?
|
@@ -25,9 +26,10 @@ module Fishbans
|
|
25
26
|
# @param three [Boolean] Whether to get a three-dimensional monster image.
|
26
27
|
# The three-dimensional image is of the full monster, while the
|
27
28
|
# two-dimensional image is just its head.
|
28
|
-
# @param size [
|
29
|
+
# @param size [Integer] The size of the image (width) to get. For 3D images
|
29
30
|
# this will not be perfect just by nature of the API.
|
30
31
|
# @return [ChunkyPNG::Image] The ChunkyPNG instance of that monster image.
|
32
|
+
# @raise see #get
|
31
33
|
def get_monster(id, three = false, size = 42)
|
32
34
|
id = id.to_s
|
33
35
|
url = 'http://blocks.fishbans.com'
|
data/lib/fishbans.rb
CHANGED
@@ -9,7 +9,7 @@ module Fishbans
|
|
9
9
|
|
10
10
|
extend self
|
11
11
|
@client = HTTPClient.new
|
12
|
-
|
12
|
+
SERVICES = [
|
13
13
|
'mcbouncer',
|
14
14
|
'minebans',
|
15
15
|
'glizer',
|
@@ -19,136 +19,109 @@ module Fishbans
|
|
19
19
|
|
20
20
|
# Gets all bans on a user.
|
21
21
|
# @param username [String] The username to check.
|
22
|
-
# @return
|
23
|
-
#
|
24
|
-
# request failed.
|
22
|
+
# @return see #parse_generic_ban_result
|
23
|
+
# @raise see #get
|
25
24
|
def get_all_bans(username)
|
26
25
|
response = get("http://api.fishbans.com/bans/#{username}")
|
27
|
-
|
28
|
-
return response
|
29
|
-
else
|
30
|
-
return parse_generic_ban_result(response)
|
31
|
-
end
|
26
|
+
parse_generic_ban_result(response)
|
32
27
|
end
|
33
28
|
|
34
29
|
# Gets all bans for a given service for a user.
|
35
30
|
# @param username [String] The username to check.
|
36
|
-
# @param service [String] The service to check. Can be any of the values in
|
37
|
-
#
|
38
|
-
# @return [Hash
|
39
|
-
#
|
40
|
-
# if they aren't banned. An error string if the request failed.
|
31
|
+
# @param service [String] The service to check. Can be any of the values in the SERVICES array.
|
32
|
+
# @return [Boolean] False if the service is not an accepted value.
|
33
|
+
# @return [Hash<String, String>] Key: Minecraft server; value: reason
|
34
|
+
# @raise see #get
|
41
35
|
def get_ban_service(username, service)
|
42
|
-
service
|
36
|
+
service.downcase!
|
43
37
|
|
44
|
-
if
|
38
|
+
if SERVICES.include? service
|
45
39
|
response = get("http://api.fishbans.com/bans/#{username}/#{service}")
|
46
|
-
|
47
|
-
return response
|
48
|
-
else
|
49
|
-
return parse_generic_ban_result(response)
|
50
|
-
end
|
40
|
+
parse_generic_ban_result(response)[service]
|
51
41
|
else
|
52
|
-
|
42
|
+
false
|
53
43
|
end
|
54
44
|
end
|
55
45
|
|
56
46
|
# Gets the total number of bans that the user has.
|
57
47
|
# @param username [String] The username to check.
|
58
|
-
# @return [
|
59
|
-
#
|
48
|
+
# @return [Integer] The number of bans the user has.
|
49
|
+
# @raise see #get
|
60
50
|
def get_total_bans(username)
|
61
51
|
response = get("http://api.fishbans.com/stats/#{username}")
|
62
|
-
|
63
|
-
return response
|
64
|
-
else
|
65
|
-
return response['stats']['totalbans']
|
66
|
-
end
|
52
|
+
response['stats']['totalbans']
|
67
53
|
end
|
68
54
|
|
69
55
|
# Gets the total number of bans by service that the user has.
|
70
56
|
# @param username [String] The username to check.
|
71
57
|
# @param service [String] The service to check. Can be any of the values in
|
72
|
-
# the
|
73
|
-
# @return [
|
74
|
-
#
|
75
|
-
#
|
58
|
+
# the SERVICES array.
|
59
|
+
# @return [Boolean] False if the service is not an accepted value.
|
60
|
+
# @return [Integer] The number of bans the user has in the given service. See SERVICES for valid services.
|
61
|
+
# @raise see #get
|
76
62
|
def get_total_bans_service(username, service)
|
77
|
-
|
63
|
+
service.downcase!
|
64
|
+
|
65
|
+
if SERVICES.include?(service)
|
78
66
|
# Note that the /service part is not necessary, but it slightly improves
|
79
67
|
# performance of the API.
|
80
68
|
response = get("http://api.fishbans.com/stats/#{username}/#{service}")
|
81
|
-
|
82
|
-
return response
|
83
|
-
else
|
84
|
-
return response['stats']['service'][service]
|
85
|
-
end
|
69
|
+
response['stats']['service'][service]
|
86
70
|
else
|
87
|
-
|
71
|
+
false
|
88
72
|
end
|
89
73
|
end
|
90
74
|
|
91
75
|
# Gets the Minecraft UUID for the user.
|
92
76
|
# @param username [String] The username to get the ID for.
|
93
|
-
# @return [String] The user's UUID.
|
77
|
+
# @return [String] The user's UUID.
|
78
|
+
# @raise see #get
|
94
79
|
def get_userid(username)
|
95
80
|
response = get("http://api.fishbans.com/uuid/#{username}")
|
96
|
-
|
97
|
-
return response
|
98
|
-
else
|
99
|
-
return response['uuid']
|
100
|
-
end
|
81
|
+
response['uuid']
|
101
82
|
end
|
102
83
|
|
103
84
|
# Gets username history for the user.
|
104
85
|
# @param username [String] The username to get history for.
|
105
|
-
# @return [Array
|
106
|
-
#
|
86
|
+
# @return [Array<String>] Array of strings containing old usernames.
|
87
|
+
# @raise see #get
|
107
88
|
def get_username_history(username)
|
108
89
|
response = get("http://api.fishbans.com/history/#{username}")
|
109
|
-
|
110
|
-
return response
|
111
|
-
else
|
112
|
-
return response['data']['history']
|
113
|
-
end
|
90
|
+
response['data']['history']
|
114
91
|
end
|
115
92
|
|
116
93
|
private
|
117
94
|
|
118
95
|
# Performs a basic GET request.
|
119
96
|
# @param url [String] The URL to get.
|
120
|
-
# @param do_json [Boolean] Whether to parse the JSON.
|
121
|
-
# @return [
|
97
|
+
# @param do_json [Boolean] Whether to parse the JSON before returning.
|
98
|
+
# @return [Hash] The parsed JSON of the response, if do_json is true.
|
99
|
+
# @return [HTTP::Message] Unparsed response, if do_json is false.
|
100
|
+
# @raise [RuntimeError] An error if the request is not successful.
|
122
101
|
def get(url, do_json = true)
|
123
102
|
url = URI.encode(url)
|
124
103
|
uri = URI.parse(url)
|
125
104
|
response = @client.get(uri)
|
126
|
-
return response
|
105
|
+
return response unless do_json
|
127
106
|
json = JSON.parse(response.body)
|
128
|
-
if json['success']
|
129
|
-
|
130
|
-
else
|
131
|
-
return json['error']
|
132
|
-
end
|
107
|
+
return json if json['success']
|
108
|
+
fail json['error']
|
133
109
|
end
|
134
110
|
|
135
|
-
# Parses a basic ban result into a formatted hash.
|
111
|
+
# Parses a basic ban result into a formatted hash. This assumes it is not an errored response.
|
136
112
|
# @param response [JSON] The response to parse.
|
137
|
-
# @return [Hash
|
138
|
-
#
|
113
|
+
# @return [Hash<String, Hash<String, String>>] Service (see SERVICES) is the key; value is a hash with
|
114
|
+
# server as the key, and the reason as the value. Empty hash if there are no bans.
|
139
115
|
def parse_generic_ban_result(response)
|
140
116
|
ret = {}
|
141
|
-
response['bans']['service'].each do |
|
142
|
-
next if
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
{ s => r }
|
147
|
-
]
|
117
|
+
response['bans']['service'].each do |service, info|
|
118
|
+
next if info['bans'] == 0
|
119
|
+
ret[service] = {}
|
120
|
+
info['ban_info'].each do |server, reason|
|
121
|
+
ret[service][server] = reason
|
148
122
|
end
|
149
123
|
end
|
150
124
|
|
151
|
-
return nil if ret.empty?
|
152
125
|
ret
|
153
126
|
end
|
154
127
|
end
|
data/lib/player_skins.rb
CHANGED
@@ -5,24 +5,27 @@ module Fishbans
|
|
5
5
|
module PlayerSkins
|
6
6
|
# Gets the image for the front face of the player head.
|
7
7
|
# @param username [String] The username to get the head of.
|
8
|
-
# @param size [
|
8
|
+
# @param size [Integer] The width of the image to get.
|
9
9
|
# @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that head.
|
10
|
+
# @raise see #get
|
10
11
|
def get_player_head(username, size = 100)
|
11
12
|
get_player_image(username, 'helm', size)
|
12
13
|
end
|
13
14
|
|
14
15
|
# Gets the image for the entire front of the player.
|
15
16
|
# @param username [String] See #get_player_head.
|
16
|
-
# @param size [
|
17
|
+
# @param size [Integer] See #get_player_head.
|
17
18
|
# @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that front.
|
19
|
+
# @raise see #get
|
18
20
|
def get_player_front(username, size = 100)
|
19
21
|
get_player_image(username, 'player', size)
|
20
22
|
end
|
21
23
|
|
22
24
|
# Gets the image for the player's raw skin.
|
23
25
|
# @param username [String] See #get_player_head.
|
24
|
-
# @param size [
|
26
|
+
# @param size [Integer] See #get_player_head.
|
25
27
|
# @return [ChunkyPNG::Image] The ChunkyPNG::Image instance of that skin.
|
28
|
+
# @raise see #get
|
26
29
|
def get_player_skin(username, size = 64)
|
27
30
|
get_player_image(username, 'skin', size)
|
28
31
|
end
|
@@ -33,8 +36,9 @@ module Fishbans
|
|
33
36
|
# @param username [String] See #get_player_head.
|
34
37
|
# @param type [String] The type of image to get. Can be 'helm', 'player', or
|
35
38
|
# 'skin' as defined by the Fishbans Player Skins API.
|
36
|
-
# @param size [
|
39
|
+
# @param size [Integer] See #get_player_head.
|
37
40
|
# @return [ChunkyPNG::Image] The ChunkyPNG::Image instance for the params.
|
41
|
+
# @raise see #get
|
38
42
|
def get_player_image(username, type, size)
|
39
43
|
url = "http://i.fishbans.com/#{type}/#{username}/#{size}"
|
40
44
|
response = get(url, false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fishbans
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eli Foster
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
@@ -71,9 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
71
71
|
version: '0'
|
72
72
|
requirements: []
|
73
73
|
rubyforge_project:
|
74
|
-
rubygems_version: 2.6.
|
74
|
+
rubygems_version: 2.6.8
|
75
75
|
signing_key:
|
76
76
|
specification_version: 4
|
77
77
|
summary: A Ruby gem for accessing the Fishbans Minecraft API.
|
78
78
|
test_files: []
|
79
|
-
has_rdoc:
|