exact4r 0.9.1 → 0.9.2

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 (78) hide show
  1. data/CHANGELOG +6 -1
  2. data/README +71 -3
  3. data/Rakefile +8 -7
  4. data/VERSION +1 -1
  5. data/doc/classes/EWS/Transaction/FakeResponse.html +451 -0
  6. data/doc/classes/EWS/Transaction/Request.html +61 -80
  7. data/doc/classes/EWS/Transaction/Response.html +206 -14
  8. data/doc/classes/EWS/Transaction/Validator.html +182 -0
  9. data/doc/classes/EWS/Transporter.html +269 -0
  10. data/doc/classes/REXML/Document.html +176 -0
  11. data/doc/classes/REXML/Entity.html +150 -0
  12. data/doc/classes/REXML.html +112 -0
  13. data/doc/created.rid +1 -1
  14. data/doc/files/CHANGELOG.html +156 -0
  15. data/doc/files/LICENCE.html +109 -0
  16. data/doc/files/README.html +164 -23
  17. data/doc/files/VERSION.html +107 -0
  18. data/doc/files/lib/ews/transaction/fake_response_rb.html +101 -0
  19. data/doc/files/lib/ews/transaction/mapping_rb.html +1 -1
  20. data/doc/files/lib/ews/transaction/request_rb.html +8 -1
  21. data/doc/files/lib/ews/transaction/response_rb.html +1 -1
  22. data/doc/files/lib/ews/transaction/validator_rb.html +101 -0
  23. data/doc/files/lib/ews/{transaction/transporter_rb.html → transporter_rb.html} +3 -3
  24. data/doc/files/lib/exact4r_rb.html +6 -2
  25. data/doc/fr_class_index.html +6 -1
  26. data/doc/fr_file_index.html +6 -1
  27. data/doc/fr_method_index.html +22 -7
  28. data/lib/ews/transaction/mapping.rb +41 -40
  29. data/lib/ews/transaction/request.rb +3 -4
  30. data/lib/ews/transaction/response.rb +5 -0
  31. data/lib/ews/transaction/validator.rb +44 -34
  32. data/lib/ews/transporter.rb +3 -3
  33. data/lib/exact4r.rb +1 -1
  34. data/test/exhaustive/forced_post_test.rb +75 -0
  35. data/test/exhaustive/online_debit_purchase_test.rb +66 -0
  36. data/test/exhaustive/online_debit_refund_test.rb +66 -0
  37. data/test/exhaustive/pre_auth_completion_test.rb +99 -0
  38. data/test/exhaustive/pre_auth_only_test.rb +68 -0
  39. data/test/exhaustive/pre_auth_test.rb +68 -0
  40. data/test/exhaustive/purchase_correction_test.rb +79 -0
  41. data/test/exhaustive/purchase_test.rb +68 -0
  42. data/test/exhaustive/recurring_seed_pre_auth_test.rb +68 -0
  43. data/test/exhaustive/recurring_seed_purchase_test.rb +68 -0
  44. data/test/exhaustive/refund_correction_test.rb +79 -0
  45. data/test/exhaustive/refund_test.rb +68 -0
  46. data/test/exhaustive/secure_storage_test.rb +75 -0
  47. data/test/exhaustive/tagged_online_debit_refund_test.rb +168 -0
  48. data/test/exhaustive/tagged_pre_auth_completion_test.rb +119 -0
  49. data/test/exhaustive/tagged_pre_auth_test.rb +116 -0
  50. data/test/exhaustive/tagged_purchase_test.rb +116 -0
  51. data/test/exhaustive/tagged_refund_test.rb +144 -0
  52. data/test/exhaustive/transaction_details_test.rb +86 -0
  53. data/test/exhaustive/void_test.rb +75 -0
  54. data/{spec/avs_spec.rb → test/general/avs_test.rb} +33 -44
  55. data/test/general/json_encoding_test.rb +62 -0
  56. data/test/general/request_test.rb +185 -0
  57. data/test/general/rest_encoding_test.rb +174 -0
  58. data/test/general/soap_encoding_test.rb +211 -0
  59. data/test/general/transporter_test.rb +54 -0
  60. data/test/general/validator_test.rb +150 -0
  61. data/test/samples/rest.dodgy.response.xml +60 -0
  62. data/test/samples/rest.everything.response.xml +67 -0
  63. data/test/samples/rest.response.xml +60 -0
  64. data/test/samples/soap.deserialization.fault.xml +10 -0
  65. data/test/samples/soap.dodgy.response.xml +95 -0
  66. data/test/samples/soap.everything.response.xml +75 -0
  67. data/test/samples/soap.generalfailure.fault.xml +13 -0
  68. data/test/samples/soap.nulltransaction.fault.xml +14 -0
  69. data/test/samples/soap.response.xml +95 -0
  70. data/test/test_helper.rb +115 -0
  71. metadata +52 -12
  72. data/doc/classes/EWS/Transaction/Transporter.html +0 -251
  73. data/pkg/exact4r-0.5.gem +0 -0
  74. data/spec/mapping_spec.rb +0 -126
  75. data/spec/request_spec.rb +0 -154
  76. data/spec/spec_helper.rb +0 -55
  77. data/spec/transporter_spec.rb +0 -43
  78. data/spec/validator_spec.rb +0 -150
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:10:27 -0700 2008</td>
59
+ <td>Tue Sep 15 16:09:38 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -71,34 +71,45 @@
71
71
  <div id="description">
72
72
  <h1>exact4r</h1>
73
73
  <p>
74
- Provides access to E-xact Web Services API, which allows the submission via
75
- REST, JSON or SOAP.
74
+ A gem which provides access to E-xact&#8216;s Web Services API, allowing
75
+ the submission of financial transactions via REST, JSON or SOAP.
76
76
  </p>
77
77
  <h2>Getting Started</h2>
78
+ <p>
79
+ To submit requests to our transaction processing service, you must first
80
+ have a Gateway ID, and a password. Test logins are as follows:
81
+ </p>
82
+ <pre>
83
+ Account 1: :gateway_id =&gt; &quot;A00049-01&quot;, :password =&gt; &quot;test1&quot;
84
+ Account 2: :gateway_id =&gt; &quot;A00427-01&quot;, :password =&gt; &quot;testus&quot;
85
+ </pre>
78
86
  <h1>1. Submit a transaction</h1>
79
87
  <pre>
88
+ require 'rubygems'
89
+ require 'exact4r'
90
+
80
91
  # build a purchase request
81
92
  request = EWS::Transaction::Request.new({
82
93
  :transaction_type =&gt; :purchase,
83
94
  :amount =&gt; 10.50,
84
95
  :cardholder_name =&gt; &quot;Simon Brown&quot;,
85
96
  :cc_number =&gt; &quot;4111111111111111&quot;,
86
- :cc_expiry =&gt; &quot;1005&quot;, # MUST be YYMM format
97
+ :cc_expiry =&gt; &quot;1012&quot;, # MUST be MMYY format
87
98
  :gateway_id =&gt; &quot;XXXXXXX&quot;, # which gateway to submit the request to
88
99
  :password =&gt; &quot;YYYYYY&quot; # your password for that gateway
89
100
  })
90
101
 
91
- transporter = EWS::Transaction::Transporter.new
92
- response = transporter.send(request) # submits using REST (XML) by default
102
+ transporter = EWS::Transporter.new
103
+ response = transporter.submit(request) # submits using REST (XML) by default
93
104
 
94
105
  # submit using JSON, or
95
- response = transporter.send(request, :json)
106
+ response = transporter.submit(request, :json)
96
107
 
97
108
  # submit using SOAP, or
98
- response = transporter.send(request, :soap)
109
+ response = transporter.submit(request, :soap)
99
110
 
100
111
  # submit explicitly via REST
101
- response = transporter.send(request, :rest)
112
+ response = transporter.submit(request, :rest)
102
113
 
103
114
  # The response object is independent of type of transport chosen.
104
115
  # We decode the payload into a regular object
@@ -110,19 +121,22 @@ REST, JSON or SOAP.
110
121
  </pre>
111
122
  <h1>2. Find information on an existing transaction</h1>
112
123
  <pre>
124
+ require 'rubygems'
125
+ require 'exact4r'
126
+
113
127
  # build a purchase request
114
128
  request = EWS::Transaction::Request.new({
115
129
  :transaction_type =&gt; :purchase,
116
130
  :amount =&gt; 10.50,
117
131
  :cardholder_name =&gt; &quot;Simon Brown&quot;,
118
132
  :cc_number =&gt; &quot;4111111111111111&quot;,
119
- :cc_expiry =&gt; &quot;1005&quot;, # MUST be YYMM format
133
+ :cc_expiry =&gt; &quot;1012&quot;, # MUST be MMYY format
120
134
  :gateway_id =&gt; &quot;XXXXXXX&quot;, # which gateway to submit the request to
121
135
  :password =&gt; &quot;YYYYYY&quot; # your password for that gateway
122
136
  })
123
137
 
124
- transporter = EWS::Transaction::Transporter.new
125
- response = transporter.send(request) # submits using REST (XML) by default
138
+ transporter = EWS::Transporter.new
139
+ response = transporter.submit(request) # submits using REST (XML) by default
126
140
 
127
141
  # you need to know the transaction tag of the transaction you are looking for
128
142
  find_request = EWS::Transaction::Request.new({
@@ -132,15 +146,20 @@ REST, JSON or SOAP.
132
146
  :password =&gt; &quot;YYYYYY&quot;
133
147
  })
134
148
 
135
- find_response = transporter.send(find_request, :json) # again, can choose your transport type as before
149
+ find_response = transporter.submit(find_request, :json) # again, can choose your transport type as before
136
150
  find_response.cc_number # 4111111111111111
137
151
  find_response.amount # 10.50
138
152
  </pre>
139
153
  <h1>3. Re-using a Transporter</h1>
140
154
  <pre>
155
+ require 'rubygems'
156
+ require 'exact4r'
157
+
141
158
  # The transporter object can be re-used across multiple transactions, so set it up once
142
159
  # and forget about it.
143
- transporter = EWS::Transaction::Transporter.new
160
+ # In this example, we will continue to use E-xact's default web-service URL, but we
161
+ # will specify a default transport_type of :soap
162
+ transporter = EWS::Transporter.new(&quot;https://api.e-xact.com/&quot;, {:transaction_type =&gt; :soap})
144
163
 
145
164
  # now let's submit do a recurring seed purchase...
146
165
  rsp_req = EWS::Transaction::Request.new({
@@ -148,12 +167,12 @@ REST, JSON or SOAP.
148
167
  :amount =&gt; 12.00,
149
168
  :cardholder_name =&gt; &quot;Simon Brown&quot;,
150
169
  :cc_number =&gt; &quot;4111111111111111&quot;,
151
- :cc_expiry =&gt; &quot;1005&quot;,
170
+ :cc_expiry =&gt; &quot;1012&quot;,
152
171
  :gateway_id =&gt; &quot;XXXXXX&quot;,
153
172
  :password =&gt; &quot;YYYYYY&quot;
154
173
  })
155
174
 
156
- rsp_resp = transporter.send(rsp_req, :json)
175
+ rsp_resp = transporter.submit(rsp_req)
157
176
  raise &quot;Seed Purchase failed&quot; unless rsp_resp.approved?
158
177
 
159
178
  # ...then do multiple refunds against it
@@ -161,27 +180,149 @@ REST, JSON or SOAP.
161
180
  rf_req = EWS::Transaction::Request.new({
162
181
  :transaction_type =&gt; :tagged_refund,
163
182
  :transaction_tag =&gt; rsp_resp.transaction_tag, # need to know which transaction we're refunding against...
164
- :auth_number =&gt; rsp_resp.auth_number, # and its auth_number
183
+ :authorization_num =&gt; rsp_resp.authorization_num, # and its authorization_num
165
184
  :amount =&gt; 1.00, # refund a dollar at a time
166
185
  :gateway_id =&gt; &quot;XXXXXX&quot;,
167
186
  :password =&gt; &quot;YYYYYY&quot;
168
187
  })
169
- rf_resp = transporter.send(rf_req, :json)
188
+ rf_resp = transporter.submit(rf_req)
170
189
  raise &quot;Refund failed: #{rf_resp.exact_resp_code}, #{rf_resp.exact_message}&quot; unless rf_resp.approved?
171
190
  end
172
191
  </pre>
173
- <h2>Rake tasks</h2>
192
+ <h1>4. Using the AVS API</h1>
193
+ <p>
194
+ Allowable AVS params are:
195
+ </p>
196
+ <ul>
197
+ <li>:avs_street_address =&gt; &quot;7501ELMST.&quot;
198
+
199
+ </li>
200
+ <li>:avs_unit_no =&gt; &quot;801&quot;
201
+
202
+ </li>
203
+ <li>:avs_po_box =&gt; nil # P.O. Box or street address may be specified, but
204
+ not both
205
+
206
+ </li>
207
+ <li>:avs_postal_code =&gt; &quot;90210&quot;
208
+
209
+ </li>
210
+ <li>:avs_test_flag =&gt; &quot;X&quot; # AVS test flag (optional)
211
+
212
+ </li>
213
+ </ul>
214
+ <h3>Test Flags</h3>
174
215
  <p>
175
- spec
216
+ In order to simulate an AVS response in the test environment, set the
217
+ :<tt>avs_test_flag</tt> to the AVS result code you would like returned. The
218
+ AVS result is a one-character response that indicates the degree of match
219
+ for the provided address. The following AVS responses are currently
220
+ supported:
176
221
  </p>
222
+ <h3>North American Response Codes</h3>
223
+ <pre>
224
+ AVS Code - ABS Definition - Explanation
225
+ </pre>
226
+ <ul>
227
+ <li>X - Exact match, 9 digit zip - Street Address, and 9 digit ZIP Code match
228
+
229
+ </li>
230
+ <li>Y - Exact match, 5 digit zip - Street Address, and 5 digit ZIP Code match
231
+
232
+ </li>
233
+ <li>A - Partial match - Street Address matches, ZIP Code does not
234
+
235
+ </li>
236
+ <li>W - Partial match - ZIP Code matches, Street Address does not
237
+
238
+ </li>
239
+ <li>Z - Partial match - 5 digit ZIP Code match only
240
+
241
+ </li>
242
+ <li>N - No match - No Address or ZIP Code match
243
+
244
+ </li>
245
+ <li>U - Unavailable - Address information is unavailable for that account
246
+ number, or the card issuer does not support
247
+
248
+ </li>
249
+ <li>G - Service Not supported, non-US Issuer does not participate
250
+
251
+ </li>
252
+ <li>R - Retry - Issuer system unavailable, retry later
253
+
254
+ </li>
255
+ <li>E - Not a mail or phone order
256
+
257
+ </li>
258
+ <li>S - Service not supported
259
+
260
+ </li>
261
+ </ul>
262
+ <h3>International Response Codes</h3>
263
+ <pre>
264
+ AVS Code - ABS Definition and Explanation
265
+ </pre>
266
+ <ul>
267
+ <li>G - Global non-AVS participant
268
+
269
+ </li>
270
+ <li>B - Address matches only
271
+
272
+ </li>
273
+ <li>C - Address and Postal Code do not match
274
+
275
+ </li>
276
+ <li>D - Address and Postal Code match
277
+
278
+ </li>
279
+ <li>F - Address and Postal Code match (UK only)
280
+
281
+ </li>
282
+ <li>I - Address information not verified for international transaction
283
+
284
+ </li>
285
+ <li>M - Address and Postal Code match
286
+
287
+ </li>
288
+ <li>P - Postal Code matches only
289
+
290
+ </li>
291
+ </ul>
292
+ <h3>Code Sample</h3>
177
293
  <pre>
178
- Run all test in spec/ folder (default)
294
+ avs_params = {
295
+ :avs_test_flag =&gt; 'N',
296
+ :avs_street_address =&gt; '123BROWNSTREET',
297
+ :avs_unit_no =&gt; '4,
298
+ :avs_po_box =&gt; nil,
299
+ :avs_postal_code =&gt; '902101234'
300
+ }
301
+
302
+ tx_params = {
303
+ :transaction_type =&gt; :purchase,
304
+ :amount =&gt; 10.50,
305
+ :cardholder_name =&gt; &quot;Simon Brown&quot;,
306
+ :cc_number =&gt; &quot;4111111111111111&quot;,
307
+ :cc_expiry =&gt; &quot;1012&quot;,
308
+ :gateway_id =&gt; &quot;XXXXXXX&quot;,
309
+ :password =&gt; &quot;YYYYYY&quot;
310
+ }.merge(avs_params)
311
+
312
+ request = EWS::Transaction::Request.new(tx_params)
313
+
314
+ transporter = EWS::Transporter.new(&quot;https://api.e-xact.com/&quot;)
315
+ response = transporter.submit(request)
316
+
317
+ response.cc_verification_str1.should == &quot;N123BROWNSTREET4902101234&quot;
318
+ response.avs.should == N
179
319
  </pre>
320
+ <h1>Rake tasks</h1>
180
321
  <p>
181
- rcov
322
+ test
182
323
  </p>
183
324
  <pre>
184
- Run all test and generate coverage report in coverage/
325
+ Run all tests (default)
185
326
  </pre>
186
327
  <p>
187
328
  rdoc
@@ -0,0 +1,107 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: VERSION</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>VERSION</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>VERSION
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Tue Sep 15 16:05:10 +1000 2009</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ 0.9.2
74
+ </p>
75
+
76
+ </div>
77
+
78
+
79
+ </div>
80
+
81
+
82
+ </div>
83
+
84
+
85
+ <!-- if includes -->
86
+
87
+ <div id="section">
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <!-- if method_list -->
97
+
98
+
99
+ </div>
100
+
101
+
102
+ <div id="validator-badges">
103
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
104
+ </div>
105
+
106
+ </body>
107
+ </html>
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: fake_response.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>fake_response.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/ews/transaction/fake_response.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Tue Sep 15 15:52:11 +1000 2009</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <!-- if method_list -->
91
+
92
+
93
+ </div>
94
+
95
+
96
+ <div id="validator-badges">
97
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
+ </div>
99
+
100
+ </body>
101
+ </html>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:10:27 -0700 2008</td>
59
+ <td>Tue Sep 15 15:54:32 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:10:27 -0700 2008</td>
59
+ <td>Tue Sep 15 15:54:32 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -69,6 +69,13 @@
69
69
  <div id="contextContent">
70
70
 
71
71
 
72
+ <div id="requires-list">
73
+ <h3 class="section-bar">Required files</h3>
74
+
75
+ <div class="name-list">
76
+ ews/transaction/validator&nbsp;&nbsp;
77
+ </div>
78
+ </div>
72
79
 
73
80
  </div>
74
81
 
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:10:27 -0700 2008</td>
59
+ <td>Tue Sep 15 15:54:31 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: validator.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>validator.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/ews/transaction/validator.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Tue Sep 15 15:54:32 +1000 2009</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <!-- if method_list -->
91
+
92
+
93
+ </div>
94
+
95
+
96
+ <div id="validator-badges">
97
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
+ </div>
99
+
100
+ </body>
101
+ </html>
@@ -8,7 +8,7 @@
8
8
  <title>File: transporter.rb</title>
9
9
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
10
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
- <link rel="stylesheet" href="../../../.././rdoc-style.css" type="text/css" media="screen" />
11
+ <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12
12
  <script type="text/javascript">
13
13
  // <![CDATA[
14
14
 
@@ -51,12 +51,12 @@
51
51
  <table class="header-table">
52
52
  <tr class="top-aligned-row">
53
53
  <td><strong>Path:</strong></td>
54
- <td>lib/ews/transaction/transporter.rb
54
+ <td>lib/ews/transporter.rb
55
55
  </td>
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:35:29 -0700 2008</td>
59
+ <td>Tue Sep 15 15:54:32 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu May 29 14:10:27 -0700 2008</td>
59
+ <td>Tue Sep 15 16:00:02 +1000 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -78,7 +78,11 @@
78
78
  ews/transaction/mapping&nbsp;&nbsp;
79
79
  ews/transaction/request&nbsp;&nbsp;
80
80
  ews/transaction/response&nbsp;&nbsp;
81
- ews/transaction/transporter&nbsp;&nbsp;
81
+ ews/transaction/validator&nbsp;&nbsp;
82
+ ews/transporter&nbsp;&nbsp;
83
+ ews/transaction/fake_response&nbsp;&nbsp;
84
+ rexml/document&nbsp;&nbsp;
85
+ rexml/entity&nbsp;&nbsp;
82
86
  </div>
83
87
  </div>
84
88