hearthstone_card_api 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/LICENSE.txt +22 -0
- data/hearthstone_card_api.gemspec +21 -0
- data/lib/hearthstone_card_api/caller.rb +47 -0
- data/lib/hearthstone_card_api/data.rb +59 -0
- data/lib/hearthstone_card_api/version.rb +3 -0
- data/lib/hearthstone_card_api.rb +54 -0
- data/lib/helpers/configuration.rb +27 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d79457c921527c72de8580ffd57d65f1986c6a6
|
4
|
+
data.tar.gz: 97499ca213a04cddd5872bbd3b2d90df5b6c07d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bff57d7eff33868cb9c7a0537b73a0f4af09b2868ee64eb461c7895dad9523b0dcbfe3fab3a567f0d573639e58c26c8aecebdd6943288eafa95cc96b5f0ff387
|
7
|
+
data.tar.gz: 19ca1b33ade1e2da85813d642e01e9009806d42bba5a592614a64e76cf907aba7ccf24f4ed0b5f3778287c8929d02fa985112807bbd44a3a0c7970b057720c17
|
data/.gitignore
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015, 2016 Jeane Ramos
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path('../lib/hearthstone_card_api/version', __FILE__)
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'hearthstone_card_api'
|
7
|
+
s.version = HearthstoneCardApi::VERSION
|
8
|
+
s.date = '2017-03-10'
|
9
|
+
s.summary = "An easy to use Ruby wrapper for the api at HearthstoneAPI.com"
|
10
|
+
s.description = "An easy to use Ruby wrapper for the api at HearthstoneAPI.com. Return cards in multiple formats (objects, json, hash) and with multiple filters easily."
|
11
|
+
s.authors = ["Jeane Ramos"]
|
12
|
+
s.email = 'msjeanneramos@gmail.com'
|
13
|
+
s.require_path = "lib"
|
14
|
+
|
15
|
+
s.files = `git ls-files -z`.split("\x0")
|
16
|
+
s.add_dependency "unirest", "~> 1.1"
|
17
|
+
|
18
|
+
s.homepage = 'https://github.com/jeanbeanie/hearthstone_card_api.git'
|
19
|
+
s.license = 'MIT'
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module HearthstoneCardApi
|
2
|
+
|
3
|
+
class Caller
|
4
|
+
attr_accessor :api_url, :api_key, :filters, :collectible
|
5
|
+
|
6
|
+
def initialize(args={})
|
7
|
+
@api_key = HearthstoneCardApi.api_key
|
8
|
+
@api_url = "https://omgvamp-hearthstone-v1.p.mashape.com/"
|
9
|
+
|
10
|
+
@collectible = "1"
|
11
|
+
@filters = {cost: nil, attack: nil, health: nil, durability: nil}
|
12
|
+
end
|
13
|
+
|
14
|
+
def return_cards(args={})
|
15
|
+
url = add_filters_to_url(args)
|
16
|
+
api_response(endpoint(url))
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def add_filters_to_url(args={})
|
21
|
+
url = args[:url]
|
22
|
+
arg_filters = args[:filters] || {}
|
23
|
+
arg_collectible = args[:collectible] || "1"
|
24
|
+
url += "?"
|
25
|
+
url += "&collectible=#{arg_collectible}"
|
26
|
+
arg_filters.each do |key, value|
|
27
|
+
if !value.nil?
|
28
|
+
url += "&#{key}=#{value}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
return url
|
32
|
+
end
|
33
|
+
|
34
|
+
def api_response(url_param)
|
35
|
+
url = url_param
|
36
|
+
response = Unirest.get url,
|
37
|
+
headers:{
|
38
|
+
"X-Mashape-Key" => api_key}
|
39
|
+
data = HearthstoneCardApi::Data.new(response)
|
40
|
+
return data.formatted
|
41
|
+
end
|
42
|
+
|
43
|
+
def endpoint(url_param)
|
44
|
+
api_url + url_param
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module HearthstoneCardApi
|
2
|
+
class Data
|
3
|
+
attr_reader :format, :data, :objs
|
4
|
+
|
5
|
+
def initialize(api_response)
|
6
|
+
@objs = []
|
7
|
+
@data = api_response
|
8
|
+
@format = HearthstoneCardApi.data_format
|
9
|
+
end
|
10
|
+
|
11
|
+
def formatted
|
12
|
+
return self.send("return_#{format}", data)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def return_objects(d)
|
17
|
+
data = d.body
|
18
|
+
if data.is_a? Hash
|
19
|
+
if data.key?("error")
|
20
|
+
return data
|
21
|
+
else
|
22
|
+
data.each_pair do |key,value|
|
23
|
+
data_to_objects(value)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
elsif data.is_a? Array
|
27
|
+
data_to_objects(data)
|
28
|
+
end
|
29
|
+
return objs
|
30
|
+
end
|
31
|
+
|
32
|
+
def return_json(data)
|
33
|
+
json = data.raw_body
|
34
|
+
return json
|
35
|
+
end
|
36
|
+
|
37
|
+
def return_hash(data)
|
38
|
+
hashes = data.body
|
39
|
+
return hashes
|
40
|
+
end
|
41
|
+
|
42
|
+
def data_to_objects(hash)
|
43
|
+
hash.each do |a|
|
44
|
+
b = Hash[a.map{|(k,v)| [underscore(k).to_sym, v]}]
|
45
|
+
obj = Struct.new(*b.keys).new(*b.values)
|
46
|
+
objs.push(obj)
|
47
|
+
end
|
48
|
+
return objs
|
49
|
+
end
|
50
|
+
|
51
|
+
def underscore(string)
|
52
|
+
string.gsub(/::/, '/').
|
53
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
54
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
55
|
+
tr("-", "_").
|
56
|
+
downcase
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module HearthstoneCardApi
|
2
|
+
|
3
|
+
require_relative 'helpers/configuration'
|
4
|
+
require_relative 'hearthstone_card_api/caller'
|
5
|
+
require_relative 'hearthstone_card_api/data'
|
6
|
+
require 'unirest'
|
7
|
+
extend Configuration
|
8
|
+
|
9
|
+
define_setting :api_key
|
10
|
+
define_setting :data_format, "objects"
|
11
|
+
|
12
|
+
class Public
|
13
|
+
|
14
|
+
attr_accessor :call
|
15
|
+
|
16
|
+
def initialize(args={})
|
17
|
+
@call = HearthstoneCardApi::Caller.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_cards(args={})
|
21
|
+
url = "cards"
|
22
|
+
args[:url] = url
|
23
|
+
call.return_cards(args)
|
24
|
+
end
|
25
|
+
|
26
|
+
def search_cards(args={}) #expects {:name}
|
27
|
+
name = args[:name]
|
28
|
+
url= "cards/search/#{name}"
|
29
|
+
args[:url] = url
|
30
|
+
call.return_cards(args)
|
31
|
+
end
|
32
|
+
|
33
|
+
def get_cards_by(args={}) #expects {:trait, :value}
|
34
|
+
trait = args[:trait]
|
35
|
+
value = args[:value]
|
36
|
+
url= "cards/#{trait}/#{value}"
|
37
|
+
args[:url] = url
|
38
|
+
call.return_cards(args)
|
39
|
+
end
|
40
|
+
|
41
|
+
def get_card_by_id(args={}) #expects {:id}
|
42
|
+
url = "cards/#{args[:id]}"
|
43
|
+
args[:url] = url
|
44
|
+
call.return_cards(args)
|
45
|
+
end
|
46
|
+
|
47
|
+
def get_card_by_name(args={}) #expects {:name}
|
48
|
+
name = args[:name]
|
49
|
+
url = "cards/#{name}"
|
50
|
+
args[:url] = url
|
51
|
+
call.return_cards(args)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Configuration
|
2
|
+
|
3
|
+
def configuration
|
4
|
+
yield self
|
5
|
+
end
|
6
|
+
|
7
|
+
def define_setting(name, default = nil)
|
8
|
+
class_variable_set("@@#{name}", default)
|
9
|
+
|
10
|
+
define_class_method "#{name}=" do |value|
|
11
|
+
class_variable_set("@@#{name}", value)
|
12
|
+
end
|
13
|
+
|
14
|
+
define_class_method name do
|
15
|
+
class_variable_get("@@#{name}")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def define_class_method(name, &block)
|
22
|
+
(class << self; self; end).instance_eval do
|
23
|
+
define_method name, &block
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hearthstone_card_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeane Ramos
|
@@ -30,7 +30,15 @@ email: msjeanneramos@gmail.com
|
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
|
-
files:
|
33
|
+
files:
|
34
|
+
- ".gitignore"
|
35
|
+
- LICENSE.txt
|
36
|
+
- hearthstone_card_api.gemspec
|
37
|
+
- lib/hearthstone_card_api.rb
|
38
|
+
- lib/hearthstone_card_api/caller.rb
|
39
|
+
- lib/hearthstone_card_api/data.rb
|
40
|
+
- lib/hearthstone_card_api/version.rb
|
41
|
+
- lib/helpers/configuration.rb
|
34
42
|
homepage: https://github.com/jeanbeanie/hearthstone_card_api.git
|
35
43
|
licenses:
|
36
44
|
- MIT
|