backpack_tf 0.5.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0bb160d7663670acc3d14ca49f79e5fc97f8387
4
- data.tar.gz: d928ca0ec022d0e73cebb5bd174dac654621623e
3
+ metadata.gz: bcb589dbd6d876a5691b061847e9a3a349a034c3
4
+ data.tar.gz: 6418bd7b7a7c3b6f4fc55577c1ef414208ce3ad5
5
5
  SHA512:
6
- metadata.gz: 5e10182770c9739e8ff40067e3da906923be2b2684a664e8e8d56fe9885e5dd1dda9c22b83fe95e22ee31bae202944e38a9ac81c9aa0b6beb6ba234c1ce9273e
7
- data.tar.gz: e0f8b763197c2f372385f090d4d9caa2d61688da1c37efeab0ae2ce37e5cffe1cc14d0a78d6b5ec23cb6918eae3cc4b39b44f35b48655ceedd47997ff2e1af1d
6
+ metadata.gz: 90d18da71c8c9504088b6a3a53956272430b512b72761143ad39669e7000054282f0c698eb455861ff3534e9a3b5c7c1563e27a7d81fe859ace62635025ba014
7
+ data.tar.gz: a0bdd6b0b0394126d92cf5f55cab2b7f70f19f88afe6d3de41101e7990ddd2c4c2d4fc42ff81c52d4d044e536e5d749dcb9e8ef350ea23d6c43771eb4b305614
@@ -36,22 +36,19 @@ module BackpackTF
36
36
  case action
37
37
  when :get_prices, :prices
38
38
  version = 4
39
- interface_url = "/#{Prices.interface}/v#{version}/?"
39
+ interface_url = "/#{Price.interface}/v#{version}/?"
40
40
  when :get_currencies, :currencies
41
41
  version = 1
42
- interface_url = "/#{Currencies.interface}/v#{version}/?"
42
+ interface_url = "/#{Currency.interface}/v#{version}/?"
43
43
  when :get_special_items, :special_items
44
- raise RuntimeError, "Unfortunately, this interface is not yet supported."
45
- #version = 1
46
- #interface_url = "/IGetSpecialItems/v#{version}/?"
44
+ version = 1
45
+ interface_url = "/#{SpecialItem.interface}/v#{version}/?"
47
46
  when :get_users, :users
48
- raise RuntimeError, "Unfortunately, this interface is not yet supported."
49
- #version = 3
50
- #interface_url = "/IGetUsers/v#{version}/?"
51
- when :get_user_listings, :user_listings
52
- raise RuntimeError, "Unfortunately, this interface is not yet supported."
53
- #version = 1
54
- #interface_url = "/IGetUserListings/v#{version}/?"
47
+ version = 3
48
+ interface_url = "/#{User.interface}/v#{version}/?"
49
+ when :get_user_listings, :user_listing, :user_listings
50
+ version = 1
51
+ interface_url = "/#{UserListing.interface}/v#{version}/?"
55
52
  else
56
53
  raise ArgumentError, 'pass in valid action as a Symbol object'
57
54
  end
@@ -2,7 +2,7 @@ module BackpackTF
2
2
 
3
3
  # ruby representations of a JSON response to
4
4
  # `IGetCurrencies`['response']
5
- class Currencies < Response
5
+ class Currency < Response
6
6
 
7
7
  ###########################
8
8
  # Class Methods
@@ -1,39 +1,13 @@
1
1
  module BackpackTF
2
2
 
3
3
  class Item
4
-
5
- include BackpackTF::Finder
6
-
7
- ###########################
8
- # Class Methods
9
- ###########################
10
-
11
- #def self.generate_price_keys item_hash
12
- # raise TypeError unless item_hash.class == Hash
13
- # prices = item_hash['prices']
14
-
15
- # prices.each_pair.inject([]) do |gen_keys, (key, val)|
16
- # quality = BackpackTF::ItemPrice.qualities[key.to_i]
17
- # new_key = [quality.to_s]
18
-
19
- # tradability = val.keys.first
20
- # new_key << tradability
21
-
22
- # craftability = prices[key][tradability].keys.first
23
- # new_key << craftability
24
-
25
- # gen_keys << new_key.join('_')
26
- # end
27
-
28
- #end
29
-
30
4
  ###########################
31
5
  # Instance Methods
32
6
  ###########################
33
7
 
34
8
  # @return [String] the name of item
35
9
  attr_reader :item_name
36
- # @return [Fixnum] the index on which you can link this item to Team Fortress 2's Item Schema
10
+ # @return [Fixnum] the index to which you can link this item to Team Fortress 2's Item Schema
37
11
  attr_reader :defindex
38
12
  # @return [Hash<Fixnum, ItemPrice>] a hash object
39
13
  attr_reader :prices
@@ -2,7 +2,41 @@ module BackpackTF
2
2
 
3
3
  class ItemPrice
4
4
 
5
- include BackpackTF::Finder
5
+ ###########################
6
+ # Class Methods
7
+ ###########################
8
+
9
+ @@required_keys = ['currency', 'value', 'last_update', 'difference']
10
+ def self.required_keys; @@required_keys; end
11
+
12
+ # mapping official API quality integers to quality names
13
+ # https://wiki.teamfortress.com/wiki/WebAPI/GetSchema#Result_Data
14
+ @@qualities = [
15
+ :Normal,
16
+ :Genuine,
17
+ nil,
18
+ :Vintage,
19
+ nil,
20
+ :Unusual,
21
+ :Unique,
22
+ :Community,
23
+ :Valve,
24
+ :"Self-Made",
25
+ nil,
26
+ :Strange,
27
+ nil,
28
+ :Haunted,
29
+ :"Collector's"
30
+ ]
31
+
32
+ def self.qualities; @@qualities; end
33
+
34
+ @@tradabilities = [:Tradable, :'Non-Tradable']
35
+ @@craftabilities = [:Craftable, :'Non-Craftable']
36
+
37
+ ###########################
38
+ # Instance Methods
39
+ ###########################
6
40
 
7
41
  # @return [String] the quality of the item being priced, converted to String
8
42
  attr_reader :quality
@@ -49,34 +83,6 @@ module BackpackTF
49
83
  @difference = attr['difference']
50
84
  end
51
85
 
52
- @@required_keys = %w(currency value last_update difference)
53
- def self.required_keys; @@required_keys; end
54
-
55
- # mapping official API quality integers to quality names
56
- # https://wiki.teamfortress.com/wiki/WebAPI/GetSchema#Result_Data
57
- @@qualities = [
58
- :Normal,
59
- :Genuine,
60
- nil,
61
- :Vintage,
62
- nil,
63
- :Unusual,
64
- :Unique,
65
- :Community,
66
- :Valve,
67
- :"Self-Made",
68
- nil,
69
- :Strange,
70
- nil,
71
- :Haunted,
72
- :"Collector's"
73
- ]
74
-
75
- def self.qualities; @@qualities; end
76
-
77
- @@tradabilities = [:Tradable, :'Non-Tradable']
78
- @@craftabilities = [:Craftable, :'Non-Craftable']
79
-
80
86
  end
81
87
 
82
88
  end
@@ -0,0 +1,97 @@
1
+ module BackpackTF
2
+
3
+ # ruby representations of a JSON response to
4
+ # `IGetPrices`['response']
5
+ class Price < Response
6
+
7
+ INTERFACE = :IGetPrices
8
+ @interface = INTERFACE
9
+ @response = nil
10
+ @items = nil
11
+
12
+ ############################
13
+ # CLASS METHODS
14
+ ############################
15
+
16
+ def self.response
17
+ @response = superclass.responses[to_sym]
18
+ end
19
+
20
+ def self.items
21
+ if @items.nil?
22
+ generate_items
23
+ else
24
+ @items
25
+ end
26
+ end
27
+
28
+ def self.generate_items
29
+ @items = @response[:items].inject({}) do |items, (name)|
30
+ defindex = @response[:items][name]['defindex'][0]
31
+
32
+ if defindex.nil? || defindex < 0
33
+ items
34
+ else
35
+ items[name] = Item.new(name, @response[:items][name])
36
+ items
37
+ end
38
+ end
39
+ end
40
+
41
+ def self.find_item_by_name item_name, opt = nil
42
+ if @items[item_name].nil?
43
+ raise KeyError, "item with the name #{item_name} was not found"
44
+ else
45
+ if opt.nil?
46
+ @items[item_name]
47
+ elsif @items[item_name].respond_to? opt
48
+ @items[item_name].public_send(opt)
49
+ else
50
+ raise KeyError, "the item, #{item_name} does not have that attribute"
51
+ end
52
+ end
53
+ end
54
+
55
+ def self.random_item opt = nil
56
+ case opt
57
+ when :prices, :price
58
+ @items[@items.keys.sample].prices
59
+ else
60
+ @items.keys.sample
61
+ end
62
+ end
63
+
64
+ def self.generate_price_keys item_hash
65
+ raise TypeError unless item_hash.class == Hash
66
+ prices = item_hash['prices']
67
+
68
+ prices.each_pair.inject([]) do |gen_keys, (key, val)|
69
+ quality = BackpackTF::ItemPrice.qualities[key.to_i]
70
+ new_key = [quality.to_s]
71
+
72
+ tradability = val.keys.first
73
+ new_key << tradability
74
+
75
+ craftability = prices[key][tradability].keys.first
76
+ new_key << craftability
77
+
78
+ gen_keys << new_key.join('_')
79
+ end
80
+
81
+ end
82
+
83
+ ############################
84
+ # INSTANCE METHODS
85
+ ############################
86
+
87
+ def initialize
88
+ msg = "This class is meant to receive the JSON response from the #{self.class.interface} interface."
89
+ msg << "It holds a Hash array of prices of items, but not is meant to be instantiated."
90
+ msg << "See the Item class if you are interested in an item."
91
+ msg << "However, information on items should be stored in the @items property of #{self.class}."
92
+ raise RuntimeError, msg
93
+ end
94
+
95
+ end
96
+
97
+ end
@@ -5,14 +5,14 @@ module BackpackTF
5
5
  # CLASS METHODS
6
6
  ############################
7
7
 
8
+ @responses = {}
9
+
8
10
  def self.interface; @interface; end
9
11
 
10
12
  def self.to_sym
11
13
  self.name.to_sym
12
14
  end
13
15
 
14
- @responses = {}
15
-
16
16
  def self.responses key_val = nil
17
17
  unless key_val.nil?
18
18
  key_val = { key_val => nil } unless key_val.class == Hash
@@ -0,0 +1,58 @@
1
+ module BackpackTF
2
+ class SpecialItem < Response
3
+ INTERFACE = :IGetSpecialItems
4
+ @interface = INTERFACE
5
+ @response = nil
6
+ @@items = {}
7
+
8
+ def self.response
9
+ @response = superclass.responses[to_sym]
10
+ end
11
+
12
+ def self.items
13
+ return @response if @response.nil?
14
+ @@items = response[:items].inject({}) do |hash, item|
15
+ #item = hash_keys_to_sym(item)
16
+ name = item['name']
17
+ hash[name] = new(name, item)
18
+ hash
19
+ end
20
+ end
21
+
22
+ attr_reader :name
23
+ attr_reader :item_name
24
+ attr_reader :defindex
25
+ attr_reader :item_class
26
+ attr_reader :item_type_name
27
+ attr_reader :item_description
28
+ attr_reader :proper_name
29
+ attr_reader :item_quality
30
+ attr_reader :min_ilevel
31
+ attr_reader :max_ilevel
32
+ attr_reader :image_url
33
+ attr_reader :image_url_large
34
+ attr_reader :image_url_orig
35
+ attr_reader :image_url_large_orig
36
+ attr_reader :appid
37
+
38
+ def initialize name, attr
39
+ attr = check_attr_keys(attr)
40
+
41
+ @name = name
42
+ @item_name = attr[:item_name]
43
+ @defindex = attr[:defindex]
44
+ @item_class = attr[:item_class]
45
+ @item_type_name = attr[:item_type_name]
46
+ @item_description = attr[:item_description]
47
+ @proper_name = attr[:proper_name]
48
+ @item_quality = attr[:item_quality]
49
+ @min_ilevel = attr[:min_ilevel]
50
+ @max_ilevel = attr[:max_ilevel]
51
+ @image_url = attr[:image_url]
52
+ @image_url_large = attr[:image_url_large]
53
+ @image_url_orig = attr[:image_url_orig]
54
+ @image_url_large_orig = attr[:image_url_large_orig]
55
+ @appid = attr[:appid]
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,54 @@
1
+ module BackpackTF
2
+ class User < Response
3
+ INTERFACE = :IGetUsers
4
+ @interface = INTERFACE
5
+ @response = nil
6
+ @@players = {}
7
+
8
+ def self.response
9
+ @response = superclass.responses[to_sym]
10
+ end
11
+
12
+ def self.players
13
+ return @response if response.nil?
14
+ @@players = response[:players].inject({}) do |players, (steamid, attr)|
15
+ players[steamid] = new(attr)
16
+ players
17
+ end
18
+ end
19
+
20
+ attr_reader :steamid
21
+ attr_reader :success
22
+ attr_reader :backpack_value
23
+ attr_reader :backpack_update
24
+ attr_reader :name
25
+ attr_reader :backpack_tf_reputation
26
+ attr_reader :backpack_tf_group
27
+ attr_reader :backpack_tf_banned
28
+ attr_reader :backpack_tf_trust
29
+ attr_reader :steamrep_scammer
30
+ attr_reader :ban_economy
31
+ attr_reader :ban_community
32
+ attr_reader :ban_vac
33
+ attr_reader :notifications
34
+
35
+ def initialize attr
36
+ attr = check_attr_keys(attr)
37
+
38
+ @steamid = attr[:steamid]
39
+ @success = attr[:success]
40
+ @backpack_value = attr[:backpack_value]
41
+ @backpack_update = attr[:backpack_update]
42
+ @name = attr[:name]
43
+ @backpack_tf_reputation = attr[:backpack_tf_reputation]
44
+ @backpack_tf_group = attr[:backpack_tf_group]
45
+ @backpack_tf_banned = attr[:backpack_tf_banned]
46
+ @backpack_tf_trust = attr[:backpack_tf_trust]
47
+ @steamrep_scammer = attr[:steamrep_scammer]
48
+ @ban_economy = attr[:ban_economy]
49
+ @ban_community = attr[:ban_community]
50
+ @ban_vac = attr[:ban_vac]
51
+ @notifications = attr[:notifications]
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,60 @@
1
+ module BackpackTF
2
+ class UserListing < Response
3
+
4
+ INTERFACE = :IGetUserListings
5
+
6
+ @interface = INTERFACE
7
+ @response = nil
8
+ @@listings = []
9
+
10
+ def self.interface; @interface; end
11
+
12
+ def self.response
13
+ @response = superclass.responses[to_sym]
14
+ end
15
+
16
+ def self.listings
17
+ return @response if response.nil?
18
+ @@listings = response[:listings].inject([]) do |listings, attr|
19
+ listings << new(attr)
20
+ listings
21
+ end
22
+ end
23
+
24
+ attr_reader :id
25
+ attr_reader :bump
26
+ attr_reader :created
27
+ attr_reader :currencies
28
+ attr_reader :item
29
+ attr_reader :details
30
+ attr_reader :meta
31
+ attr_reader :buyout
32
+
33
+ def initialize attr
34
+ attr = check_attr_keys(attr)
35
+
36
+ @id = attr[:id].to_sym
37
+ @bump = attr[:bump]
38
+ @created = attr[:created]
39
+ @currencies = attr[:currencies]
40
+ @item = set_keys_of_key_to_symbols(attr[:item], 'attributes')
41
+ @details = attr[:details]
42
+ @meta = self.class.hash_keys_to_sym(attr[:meta])
43
+ @buyout = attr[:buyout]
44
+ end
45
+
46
+ private
47
+ # Similar to Response.hash_key_to_sym, except you are returning
48
+ # an Array of Hash objects instead of a Hash.
49
+ def set_keys_of_key_to_symbols attr, key
50
+ return nil unless attr.has_key? key
51
+
52
+ item_attributes = attr[key].map do |set_of_attr|
53
+ self.class.hash_keys_to_sym(set_of_attr)
54
+ end
55
+ attr[key] = item_attributes
56
+
57
+ self.class.hash_keys_to_sym(attr)
58
+ end
59
+ end
60
+ end