dsander-reve 0.0.116

Sign up to get free protection for your applications and to get access to all the features.
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