dsander-reve 0.0.116

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.
Files changed (128) hide show
  1. data/ChangeLog +155 -0
  2. data/LICENSE +22 -0
  3. data/Rakefile +79 -0
  4. data/init.rb +1 -0
  5. data/lib/reve/classes.rb +1341 -0
  6. data/lib/reve/exceptions.rb +353 -0
  7. data/lib/reve/extensions.rb +108 -0
  8. data/lib/reve.rb +1001 -0
  9. data/reve.rb +1 -0
  10. data/test/test_reve.rb +1191 -0
  11. data/test/xml/alliances.xml +171 -0
  12. data/test/xml/assets.xml +32 -0
  13. data/test/xml/badxml.xml +6 -0
  14. data/test/xml/certificate_tree.xml +231 -0
  15. data/test/xml/char_facwarstats.xml +18 -0
  16. data/test/xml/char_medals.xml +12 -0
  17. data/test/xml/character_sheet.xml +288 -0
  18. data/test/xml/characterid.xml +11 -0
  19. data/test/xml/charactername.xml +11 -0
  20. data/test/xml/characters.xml +13 -0
  21. data/test/xml/conqurable_stations.xml +12 -0
  22. data/test/xml/corp_facwarstats.xml +17 -0
  23. data/test/xml/corp_medals.xml +23 -0
  24. data/test/xml/corp_member_medals.xml +20 -0
  25. data/test/xml/corp_membersecurity.xml +49 -0
  26. data/test/xml/corporate_assets_list.xml +16 -0
  27. data/test/xml/corporate_market_orders.xml +10 -0
  28. data/test/xml/corporate_wallet_balance.xml +16 -0
  29. data/test/xml/corporate_wallet_journal.xml +11 -0
  30. data/test/xml/corporate_wallet_transactions.xml +10 -0
  31. data/test/xml/corporation_sheet.xml +52 -0
  32. data/test/xml/errors/error_100.xml +5 -0
  33. data/test/xml/errors/error_101.xml +5 -0
  34. data/test/xml/errors/error_102.xml +5 -0
  35. data/test/xml/errors/error_103.xml +5 -0
  36. data/test/xml/errors/error_104.xml +5 -0
  37. data/test/xml/errors/error_105.xml +5 -0
  38. data/test/xml/errors/error_106.xml +5 -0
  39. data/test/xml/errors/error_107.xml +5 -0
  40. data/test/xml/errors/error_108.xml +5 -0
  41. data/test/xml/errors/error_109.xml +5 -0
  42. data/test/xml/errors/error_110.xml +5 -0
  43. data/test/xml/errors/error_111.xml +5 -0
  44. data/test/xml/errors/error_112.xml +5 -0
  45. data/test/xml/errors/error_113.xml +5 -0
  46. data/test/xml/errors/error_114.xml +5 -0
  47. data/test/xml/errors/error_115.xml +5 -0
  48. data/test/xml/errors/error_116.xml +5 -0
  49. data/test/xml/errors/error_117.xml +5 -0
  50. data/test/xml/errors/error_118.xml +5 -0
  51. data/test/xml/errors/error_119.xml +5 -0
  52. data/test/xml/errors/error_120.xml +5 -0
  53. data/test/xml/errors/error_121.xml +5 -0
  54. data/test/xml/errors/error_122.xml +5 -0
  55. data/test/xml/errors/error_123.xml +5 -0
  56. data/test/xml/errors/error_124.xml +5 -0
  57. data/test/xml/errors/error_125.xml +5 -0
  58. data/test/xml/errors/error_200.xml +5 -0
  59. data/test/xml/errors/error_201.xml +5 -0
  60. data/test/xml/errors/error_202.xml +5 -0
  61. data/test/xml/errors/error_203.xml +5 -0
  62. data/test/xml/errors/error_204.xml +5 -0
  63. data/test/xml/errors/error_205.xml +5 -0
  64. data/test/xml/errors/error_206.xml +5 -0
  65. data/test/xml/errors/error_207.xml +5 -0
  66. data/test/xml/errors/error_208.xml +5 -0
  67. data/test/xml/errors/error_209.xml +5 -0
  68. data/test/xml/errors/error_210.xml +5 -0
  69. data/test/xml/errors/error_211.xml +5 -0
  70. data/test/xml/errors/error_212.xml +5 -0
  71. data/test/xml/errors/error_213.xml +5 -0
  72. data/test/xml/errors/error_214.xml +5 -0
  73. data/test/xml/errors/error_500.xml +5 -0
  74. data/test/xml/errors/error_501.xml +5 -0
  75. data/test/xml/errors/error_502.xml +5 -0
  76. data/test/xml/errors/error_503.xml +5 -0
  77. data/test/xml/errors/error_504.xml +5 -0
  78. data/test/xml/errors/error_505.xml +5 -0
  79. data/test/xml/errors/error_506.xml +5 -0
  80. data/test/xml/errors/error_507.xml +5 -0
  81. data/test/xml/errors/error_508.xml +5 -0
  82. data/test/xml/errors/error_509.xml +5 -0
  83. data/test/xml/errors/error_510.xml +5 -0
  84. data/test/xml/errors/error_511.xml +5 -0
  85. data/test/xml/errors/error_512.xml +5 -0
  86. data/test/xml/errors/error_513.xml +5 -0
  87. data/test/xml/errors/error_514.xml +5 -0
  88. data/test/xml/errors/error_515.xml +5 -0
  89. data/test/xml/errors/error_516.xml +5 -0
  90. data/test/xml/errors/error_517.xml +5 -0
  91. data/test/xml/errors/error_518.xml +5 -0
  92. data/test/xml/errors/error_519.xml +5 -0
  93. data/test/xml/errors/error_520.xml +5 -0
  94. data/test/xml/errors/error_521.xml +5 -0
  95. data/test/xml/errors/error_522.xml +5 -0
  96. data/test/xml/errors/error_523.xml +5 -0
  97. data/test/xml/errors/error_524.xml +5 -0
  98. data/test/xml/errors/error_525.xml +5 -0
  99. data/test/xml/errors/error_900.xml +5 -0
  100. data/test/xml/errors/error_901.xml +5 -0
  101. data/test/xml/errors/error_902.xml +5 -0
  102. data/test/xml/errors/error_903.xml +5 -0
  103. data/test/xml/errors/error_999.xml +5 -0
  104. data/test/xml/errors.xml +70 -0
  105. data/test/xml/eve_facwarstats.xml +35 -0
  106. data/test/xml/eve_facwartopstats.xml +178 -0
  107. data/test/xml/industryjobs.xml +11 -0
  108. data/test/xml/kills.xml +569 -0
  109. data/test/xml/map_facwarsystems.xml +13 -0
  110. data/test/xml/mapjumps.xml +15 -0
  111. data/test/xml/mapkills.xml +16 -0
  112. data/test/xml/market_transactions.xml +79 -0
  113. data/test/xml/marketorders.xml +43 -0
  114. data/test/xml/member_tracking.xml +22 -0
  115. data/test/xml/nonmember_corpsheet.xml +30 -0
  116. data/test/xml/reftypes.xml +14 -0
  117. data/test/xml/server_status.xml +9 -0
  118. data/test/xml/skill_in_training-amarr-titan.xml +15 -0
  119. data/test/xml/skill_in_training-none.xml +7 -0
  120. data/test/xml/skill_queue.xml +18 -0
  121. data/test/xml/skilltree.xml +41 -0
  122. data/test/xml/sovereignty.xml +29 -0
  123. data/test/xml/starbase_fuel.xml +23 -0
  124. data/test/xml/starbases.xml +12 -0
  125. data/test/xml/wallet_balance.xml +17 -0
  126. data/test/xml/wallet_journal.xml +48 -0
  127. data/tester.rb +17 -0
  128. metadata +187 -0
@@ -0,0 +1,353 @@
1
+ #--
2
+ # Code copyright Lisa Seelye, 2007-2008. www.crudvision.com
3
+ # Reve is not licensed for commercial use. For other uses there are no
4
+ # restrictions.
5
+ #
6
+ # The author is not adverse to tokens of appreciation in the form of Eve ISK,
7
+ # ships, and feedback. Please use
8
+ # http://www.crudvision.com/reve-ruby-eve-online-api-library/ to provide
9
+ # feedback or send ISK to Raquel Smith in Eve. :-)
10
+ #++
11
+ module Reve
12
+ # Exceptions live here.
13
+ module Exceptions
14
+ # Raise the flag!
15
+ def self.raise_it(code,msg = "No Error Message From CCP Server (But one DID occur!)")
16
+ msg = "(#{code.to_s}) #{msg}"
17
+ case code
18
+ when 100
19
+ raise WalletNotPreviouslyLoaded.new(msg)
20
+ when 101, 103
21
+ raise WalletExhausted.new(msg)
22
+ when 102
23
+ raise WalletPreviouslyLoaded.new(msg)
24
+ when 104
25
+ raise KeyNotFound.new(msg)
26
+ when 105
27
+ raise InvalidCharacterID.new(msg)
28
+ when 106
29
+ raise MustProvideUserIDParameterForAuthentication.new(msg)
30
+ when 107
31
+ raise InvalidBeforeRefID.new(msg)
32
+ when 108
33
+ raise InvalidAccountKey.new(msg)
34
+ when 109
35
+ raise AccountKeyOutOfRange.new(msg)
36
+ when 110
37
+ raise InvalidBeforeTransID.new(msg)
38
+ when 111
39
+ raise InvalidInteger.new(msg)
40
+ when 112
41
+ raise VersionMismatchException.new(msg)
42
+ when 113
43
+ raise VersionEscalationException.new(msg)
44
+ when 114
45
+ raise InvalidItemIDProvided.new(msg)
46
+ when 115
47
+ raise AssetsAlreadyFetched.new(msg)
48
+ when 116
49
+ raise IndustryJobsAlreadyFetched.new(msg)
50
+ when 117
51
+ raise MarketOrdersAlreadyFetched.new(msg)
52
+ when 118
53
+ raise ExpectedBeforeKillID.new(msg)
54
+ when 119
55
+ raise KillsExhausted.new(msg)
56
+ when 120
57
+ raise UnexpectedBeforeKillID.new(msg)
58
+ when 121
59
+ raise BadBeforeKillID.new(msg)
60
+ when 200
61
+ raise SecurityLevelNotHighEnough.new(msg + ' (Should you be using the full API Key?)')
62
+ when 201
63
+ raise CharacterDoesNotBelongToAccount.new(msg)
64
+ when 202
65
+ raise CachedAPIKeyAuthenticationFailure.new(msg)
66
+ when 203..205
67
+ raise AuthenticationFailure.new(msg)
68
+ when 206
69
+ raise MustHaveAccountantRole.new(msg)
70
+ when 207
71
+ raise NotAvailableForNPCCorps.new(msg)
72
+ when 208
73
+ raise MustHaveAccountantOrTraderRole.new(msg)
74
+ when 209
75
+ raise MustBeDirectorOrCEO.new(msg)
76
+ when 210,212
77
+ raise AuthenticationFailure.new(msg)
78
+ when 211
79
+ raise LoginDeniedByAccountStatus.new(msg)
80
+ when 213
81
+ raise CharacterNeedsFactoryManagerRole.new(msg)
82
+ when 214
83
+ raise CorporationNotInAlliance.new(msg)
84
+ when 500
85
+ raise GetNameInvalid.new(msg)
86
+ when 501
87
+ raise GetIDInvalid.new(msg)
88
+ when 502
89
+ raise CachedUntilException.new(msg)
90
+ when 503
91
+ raise InvalidInput.new(msg)
92
+ when 504
93
+ raise InvalidRace.new(msg)
94
+ when 505
95
+ raise InvalidGender.new(msg)
96
+ when 506
97
+ raise InvalidBloodline.new(msg)
98
+ when 507
99
+ raise InvalidAttribute.new(msg)
100
+ when 508
101
+ raise InvalidRefType.new(msg)
102
+ when 509
103
+ raise NullDataComponent.new(msg)
104
+ when 510
105
+ raise NoCorporationException.new(msg)
106
+ when 511
107
+ raise InvalidAccountKey.new(msg)
108
+ when 512
109
+ raise InvalidCharID.new(msg)
110
+ when 513
111
+ raise CorporateRoleFetchException.new(msg)
112
+ when 514
113
+ raise InvalidCorpID.new(msg)
114
+ when 515
115
+ raise InvalidUserIDOrAPIKey.new(msg)
116
+ when 516
117
+ raise UserInformationFetchException.new(msg)
118
+ when 517
119
+ raise CSVHeaderRowMismatch.new(msg)
120
+ when 518
121
+ raise TranquilityTimeException.new(msg)
122
+ when 519
123
+ raise StarbaseDetailFetchFailure.new(msg)
124
+ when 520
125
+ raise EveDatabaseConnectionFailure.new(msg)
126
+ when 521
127
+ raise InvalidUsernameOrPassword.new(msg)
128
+ when 522
129
+ raise CharacterRetrevialFailure.new(msg)
130
+ when 523
131
+ raise CorporationRetrevialFailure.new(msg)
132
+ when 524
133
+ raise FactionMemberInformationFailure.new(msg)
134
+ when 525
135
+ raise MedalInformationFetchFailure.new(msg)
136
+ when 900
137
+ raise BetaAccessDenied.new(msg)
138
+ when 901
139
+ raise WebsiteOffline.new(msg)
140
+ when 902
141
+ raise EveDatabaseOffline.new(msg)
142
+ when 903
143
+ raise ObeyCacheTimers.new(msg)
144
+ when 999
145
+ raise UserForcedException.new(msg)
146
+ end
147
+ end
148
+
149
+ # All API-specific exceptions derrive from this. Useful for rescuing one
150
+ # parent exception to handle all API exceptions.
151
+ class ReveError < StandardError
152
+ end
153
+
154
+ # 100
155
+ class WalletNotPreviouslyLoaded < ReveError #:nodoc:
156
+ end
157
+ # 101, 103
158
+ class WalletExhausted < ReveError #:nodoc:
159
+ end
160
+ # 102
161
+ class WalletPreviouslyLoaded < ReveError #:nodoc:
162
+ end
163
+ # 104
164
+ class KeyNotFound < ReveError #:nodoc:
165
+ end
166
+ # 105
167
+ class InvalidCharacterID < ReveError #:nodoc:
168
+ end
169
+ # 106
170
+ class MustProvideUserIDParameterForAuthentication < ReveError #:nodoc:
171
+ end
172
+ # 107
173
+ class InvalidBeforeRefID < ReveError #:nodoc:
174
+ end
175
+ # 108
176
+ class InvalidAccountKey < ReveError #:nodoc:
177
+ end
178
+ # 109
179
+ class AccountKeyOutOfRange < ReveError #:nodoc:
180
+ end
181
+ # 110
182
+ class InvalidBeforeTransID < ReveError #:nodoc:
183
+ end
184
+ # 111
185
+ class InvalidInteger < ReveError #:nodoc:
186
+ end
187
+ # 112
188
+ class VersionMismatchException < ReveError #:nodoc:
189
+ end
190
+ # 113
191
+ class VersionEscalationException < ReveError #:nodoc:
192
+ end
193
+ # 114
194
+ class InvalidItemIDProvided < ReveError #:nodoc:
195
+ end
196
+ # 115
197
+ class AssetsAlreadyFetched < ReveError #:nodoc:
198
+ end
199
+ # 116
200
+ class IndustryJobsAlreadyFetched < ReveError #:nodoc:
201
+ end
202
+ # 117
203
+ class MarketOrdersAlreadyFetched < ReveError #:nodoc:
204
+ end
205
+ # 118
206
+ class ExpectedBeforeKillID < ReveError #:nodoc:
207
+ end
208
+ # 119
209
+ class KillsExhausted < ReveError #:nodoc:
210
+ end
211
+ # 120
212
+ class UnexpectedBeforeKillID < ReveError #:nodoc:
213
+ end
214
+ # 121
215
+ class BadBeforeKillID < ReveError #:nodoc:
216
+ end
217
+ # 200
218
+ class SecurityLevelNotHighEnough < ReveError #:nodoc:
219
+ end
220
+ # 201
221
+ class CharacterDoesNotBelongToAccount < ReveError #:nodoc:
222
+ end
223
+ # 202
224
+ class CachedAPIKeyAuthenticationFailure < ReveError #:nodoc:
225
+ end
226
+ # 203, 204, 205, 210, 212
227
+ class AuthenticationFailure < ReveError #:nodoc:
228
+ end
229
+ # 206
230
+ class MustHaveAccountantRole < ReveError #:nodoc:
231
+ end
232
+ # 207
233
+ class NotAvailableForNPCCorps < ReveError #:nodoc:
234
+ end
235
+ # 208
236
+ class MustHaveAccountantOrTraderRole < ReveError #:nodoc:
237
+ end
238
+ # 209
239
+ class MustBeDirectorOrCEO < ReveError #:nodoc:
240
+ end
241
+ # 211
242
+ class LoginDeniedByAccountStatus < ReveError #:nodoc:
243
+ end
244
+ # 213
245
+ class CharacterNeedsFactoryManagerRole < ReveError #:nodoc:
246
+ end
247
+ # 214
248
+ class CorporationNotInAlliance < ReveError #:nodoc:
249
+ end
250
+
251
+ # 500
252
+ class GetNameInvalid < ReveError #:nodoc:
253
+ end
254
+ # 501
255
+ class GetIDInvalid < ReveError #:nodoc:
256
+ end
257
+ # 502
258
+ class CachedUntilException < ReveError #:nodoc:
259
+ end
260
+ # 503
261
+ class InvalidInput < ReveError #:nodoc:
262
+ end
263
+ # 504
264
+ class InvalidRace < ReveError #:nodoc:
265
+ end
266
+ # 505
267
+ class InvalidGender < ReveError #:nodoc:
268
+ end
269
+ # 506
270
+ class InvalidBloodline < ReveError #:nodoc:
271
+ end
272
+ # 507
273
+ class InvalidAttribute < ReveError #:nodoc:
274
+ end
275
+ # 508
276
+ class InvalidRefType < ReveError #:nodoc:
277
+ end
278
+ # 509
279
+ class NullDataComponent < ReveError #:nodoc:
280
+ end
281
+ # 510
282
+ class NoCorporationException < ReveError #:nodoc:
283
+ end
284
+ # 511
285
+ class InvalidAccountKey < ReveError #:nodoc:
286
+ end
287
+ # 512
288
+ class InvalidCharID < ReveError #:nodoc:
289
+ end
290
+ # 513
291
+ class CorporateRoleFetchException < ReveError #:nodoc:
292
+ end
293
+ # 514
294
+ class InvalidCorpID < ReveError #:nodoc:
295
+ end
296
+ # 515
297
+ class InvalidUserIDOrAPIKey < ReveError #:nodoc:
298
+ end
299
+ # 516
300
+ class UserInformationFetchException < ReveError #:nodoc:
301
+ end
302
+ # 517
303
+ class CSVHeaderRowMismatch < ReveError #:nodoc:
304
+ end
305
+ # 518
306
+ class TranquilityTimeException < ReveError #:nodoc:
307
+ end
308
+ # 519
309
+ class StarbaseDetailFetchFailure < ReveError #:nodoc:
310
+ end
311
+ # 520
312
+ class EveDatabaseConnectionFailure < ReveError #:nodoc:
313
+ end
314
+ # 521
315
+ class InvalidUsernameOrPassword < ReveError #:nodoc:
316
+ end
317
+ # 522
318
+ class CharacterRetrevialFailure < ReveError #:nodoc:
319
+ end
320
+ # 523
321
+ class CorporationRetrevialFailure < ReveError #:nodoc:
322
+ end
323
+ # 524
324
+ class FactionMemberInformationFailure < ReveError #:nodoc:
325
+ end
326
+ # 525
327
+ class MedalInformationFetchFailure < ReveError #:nodoc:
328
+ end
329
+
330
+ # 900
331
+ class BetaAccessDenied < ReveError #:nodoc:
332
+ end
333
+ class WebsiteOffline < ReveError #:nodoc:
334
+ end
335
+ # 902
336
+ class EveDatabaseOffline < ReveError #:nodoc:
337
+ end
338
+ # 903 - Obey the %*(&!*@ timers!!!
339
+ class ObeyCacheTimers < ReveError #:nodoc:
340
+ end
341
+
342
+ # 999
343
+ class UserForcedException < ReveError #:nodoc:
344
+ end
345
+
346
+ # this is an Exception to do with the connection to the Eve server failing
347
+ class ReveNetworkStatusException < StandardError
348
+ end
349
+ # used when something is encountered in XML that we didn't expect
350
+ class ReveUnexpectedEntityEncountered < StandardError
351
+ end
352
+ end
353
+ end
@@ -0,0 +1,108 @@
1
+ require 'parsedate'
2
+
3
+ module Reve #:nodoc:
4
+ # All of these are shamelessly nicked from Ruby on Rails.
5
+ # The String Extensions have a bit more fault tolerance.
6
+ module Extensions
7
+
8
+ module NilClass
9
+ def to_date
10
+ self
11
+ end
12
+ def to_time
13
+ self
14
+ end
15
+ end
16
+
17
+ module Hash
18
+ def stringify_keys
19
+ inject({}) do |h, (key,value)|
20
+ h[key.to_s] = value
21
+ h
22
+ end
23
+ end
24
+ def stringify_keys!
25
+ keys.each do |key|
26
+ unless key.class.to_s == "String" # See ActiveSupport for why this is needed!
27
+ self[key.to_s] = self[key]
28
+ delete(key)
29
+ end
30
+ end
31
+ self
32
+ end
33
+ end
34
+
35
+ # Rails's cattr_ things. activesupport/lib/active_support/core_ext/class
36
+ # Really quite handy.
37
+ module Class #:nodoc:
38
+ def cattr_reader(*syms) #:nodoc:
39
+ syms.flatten.each do |sym|
40
+ next if sym.is_a?(Hash)
41
+ class_eval(<<-EOS, __FILE__, __LINE__)
42
+ unless defined? @@#{sym}
43
+ @@#{sym} = nil
44
+ end
45
+
46
+ def self.#{sym}
47
+ @@#{sym}
48
+ end
49
+
50
+ def #{sym}
51
+ @@#{sym}
52
+ end
53
+ EOS
54
+ end
55
+ end
56
+
57
+ def cattr_writer(*syms) #:nodoc:
58
+ options = syms.last.is_a?(Hash) ? syms.pop : {}
59
+ syms.flatten.each do |sym|
60
+ class_eval(<<-EOS, __FILE__, __LINE__)
61
+ unless defined? @@#{sym}
62
+ @@#{sym} = nil
63
+ end
64
+
65
+ def self.#{sym}=(obj)
66
+ @@#{sym} = obj
67
+ end
68
+ #{"
69
+ def #{sym}=(obj)
70
+ @@#{sym} = obj
71
+ end
72
+ " unless options[:instance_writer] == false }
73
+ EOS
74
+ end
75
+ end
76
+ def cattr_accessor(*syms) #:nodoc:
77
+ cattr_reader(*syms)
78
+ cattr_writer(*syms)
79
+ end
80
+ end
81
+
82
+ module String
83
+ def to_time(form = :utc)
84
+ begin
85
+ ::Time.send(form, *ParseDate.parsedate(self))
86
+ rescue Exception
87
+ self
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ class String #:nodoc:
95
+ include Reve::Extensions::String
96
+ end
97
+
98
+ class Class #:nodoc:
99
+ include Reve::Extensions::Class
100
+ end
101
+
102
+ class Hash #:nodoc:
103
+ include Reve::Extensions::Hash
104
+ end
105
+
106
+ class NilClass #:nodoc:
107
+ include Reve::Extensions::NilClass
108
+ end