board-game-gem 0.2.8 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d992e082ecbc6ba804153d4a436d77ce1ba97b4c
4
- data.tar.gz: 2a7bc098550f61b8bd306931cc4dd960eb1a3573
3
+ metadata.gz: 885a33bd0b10621b111609e0c6fac82a1b2f70e3
4
+ data.tar.gz: 03e2c7b96ce5ed3e80c4d09e77f9e1088787067f
5
5
  SHA512:
6
- metadata.gz: 1af19a3020690d2c10d2a755f0a41bd72814aa36b74f0c4c4e287f97b69a3835a061bcaeab985b3d2104cf9c566b6f6c8ab0e16442ab8ae1a0039b47a83c2ba9
7
- data.tar.gz: 7981c3e9766e03183e5d7e490cc39c76c13234f0705c1557472925bc776cb563615d92294ae86697d3255b0b8ddab2c1cbe88ec7e7d797e7a89624cc7d0f5c40
6
+ metadata.gz: fad520ae5d8380c4941f6c604580d2d694dfdd9fb5cb2ab48ce3ee260a4e6ea4c5e07fead824ce629e406b790063bdeb7a39ac65dfa9507307dbc393cf33446e
7
+ data.tar.gz: b9cf6c632da9ed9e56db5b5ed49e76e47c7fc1ab1a0756f928111d4652047c35ee3110ec5d8853af80fcd1ae47c41aafbc7a02a299a0bdef101f8338f11037cd
data/lib/bgg_item.rb CHANGED
@@ -5,7 +5,6 @@ module BoardGameGem
5
5
  :playing_time, :min_playing_time, :max_playing_time, :statistics
6
6
 
7
7
  def initialize(xml)
8
- p xml.nil? ? "yes" : "no"
9
8
  if !xml.nil?
10
9
  @id = get_integer(xml, "item", "id")
11
10
  @type = get_string(xml, "item", "type")
data/lib/boardgamegem.rb CHANGED
@@ -60,34 +60,42 @@ module BoardGameGem
60
60
 
61
61
  def BoardGameGem.request_xml(method, hash, attempt = 0)
62
62
  params = BoardGameGem.hash_to_uri(hash)
63
- if attempt < MAX_ATTEMPTS
64
- begin
65
- open("#{API_ROOT}/#{method}?#{params}") do |file|
66
- if file.status[0] != "200"
67
- sleep 0.05
68
- BoardGameGem.request_xml(method, hash, attempt + 1)
69
- else
70
- Nokogiri::XML(file.read)
71
- end
63
+ value = BoardGameGem.retryable(tries: MAX_ATTEMPTS, on: OpenURI::HTTPError) do
64
+ open("#{API_ROOT}/#{method}?#{params}") do |file|
65
+ if file.status[0] != "200"
66
+ sleep 0.05
67
+ throw OpenURI::HTTPError
68
+ else
69
+ value = Nokogiri::XML(file.read)
72
70
  end
73
- rescue
74
- sleep 0.05
75
- BoardGameGem.request_xml(method, hash, attempt + 1)
76
71
  end
77
- else
78
- return nil
79
72
  end
73
+ value
80
74
  end
81
75
 
82
76
  def BoardGameGem.hash_to_uri(hash)
83
77
  return hash.to_a.map { |x| "#{x[0]}=#{x[1]}" }.join("&")
84
78
  end
79
+
80
+ def BoardGameGem.retryable(options = {}, &block)
81
+ opts = { :tries => 1, :on => Exception }.merge(options)
82
+
83
+ retry_exception, retries = opts[:on], opts[:tries]
84
+
85
+ begin
86
+ return yield
87
+ rescue retry_exception
88
+ retry if (retries -= 1) > 0
89
+ end
90
+
91
+ yield
92
+ end
85
93
  end
86
94
 
87
- require 'bgg_base'
88
- require 'bgg_item'
89
- require 'bgg_family'
90
- require 'bgg_user'
91
- require 'bgg_collection'
92
- require 'bgg_collection_item'
93
- require 'bgg_search_result'
95
+ require_relative 'bgg_base'
96
+ require_relative 'bgg_item'
97
+ require_relative 'bgg_family'
98
+ require_relative 'bgg_user'
99
+ require_relative 'bgg_collection'
100
+ require_relative 'bgg_collection_item'
101
+ require_relative 'bgg_search_result'
@@ -1,3 +1,3 @@
1
1
  module BoardGameGem
2
- VERSION = "0.2.8"
2
+ VERSION = "0.2.9"
3
3
  end
data/test.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  require_relative 'lib/boardgamegem'
2
2
 
3
- p BoardGameGem.get_user("AcceptableIce")
3
+ p BoardGameGem.get_item(13122)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: board-game-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Roussel