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.
- data/CHANGELOG +6 -1
- data/README +71 -3
- data/Rakefile +8 -7
- data/VERSION +1 -1
- data/doc/classes/EWS/Transaction/FakeResponse.html +451 -0
- data/doc/classes/EWS/Transaction/Request.html +61 -80
- data/doc/classes/EWS/Transaction/Response.html +206 -14
- data/doc/classes/EWS/Transaction/Validator.html +182 -0
- data/doc/classes/EWS/Transporter.html +269 -0
- data/doc/classes/REXML/Document.html +176 -0
- data/doc/classes/REXML/Entity.html +150 -0
- data/doc/classes/REXML.html +112 -0
- data/doc/created.rid +1 -1
- data/doc/files/CHANGELOG.html +156 -0
- data/doc/files/LICENCE.html +109 -0
- data/doc/files/README.html +164 -23
- data/doc/files/VERSION.html +107 -0
- data/doc/files/lib/ews/transaction/fake_response_rb.html +101 -0
- data/doc/files/lib/ews/transaction/mapping_rb.html +1 -1
- data/doc/files/lib/ews/transaction/request_rb.html +8 -1
- data/doc/files/lib/ews/transaction/response_rb.html +1 -1
- data/doc/files/lib/ews/transaction/validator_rb.html +101 -0
- data/doc/files/lib/ews/{transaction/transporter_rb.html → transporter_rb.html} +3 -3
- data/doc/files/lib/exact4r_rb.html +6 -2
- data/doc/fr_class_index.html +6 -1
- data/doc/fr_file_index.html +6 -1
- data/doc/fr_method_index.html +22 -7
- data/lib/ews/transaction/mapping.rb +41 -40
- data/lib/ews/transaction/request.rb +3 -4
- data/lib/ews/transaction/response.rb +5 -0
- data/lib/ews/transaction/validator.rb +44 -34
- data/lib/ews/transporter.rb +3 -3
- data/lib/exact4r.rb +1 -1
- data/test/exhaustive/forced_post_test.rb +75 -0
- data/test/exhaustive/online_debit_purchase_test.rb +66 -0
- data/test/exhaustive/online_debit_refund_test.rb +66 -0
- data/test/exhaustive/pre_auth_completion_test.rb +99 -0
- data/test/exhaustive/pre_auth_only_test.rb +68 -0
- data/test/exhaustive/pre_auth_test.rb +68 -0
- data/test/exhaustive/purchase_correction_test.rb +79 -0
- data/test/exhaustive/purchase_test.rb +68 -0
- data/test/exhaustive/recurring_seed_pre_auth_test.rb +68 -0
- data/test/exhaustive/recurring_seed_purchase_test.rb +68 -0
- data/test/exhaustive/refund_correction_test.rb +79 -0
- data/test/exhaustive/refund_test.rb +68 -0
- data/test/exhaustive/secure_storage_test.rb +75 -0
- data/test/exhaustive/tagged_online_debit_refund_test.rb +168 -0
- data/test/exhaustive/tagged_pre_auth_completion_test.rb +119 -0
- data/test/exhaustive/tagged_pre_auth_test.rb +116 -0
- data/test/exhaustive/tagged_purchase_test.rb +116 -0
- data/test/exhaustive/tagged_refund_test.rb +144 -0
- data/test/exhaustive/transaction_details_test.rb +86 -0
- data/test/exhaustive/void_test.rb +75 -0
- data/{spec/avs_spec.rb → test/general/avs_test.rb} +33 -44
- data/test/general/json_encoding_test.rb +62 -0
- data/test/general/request_test.rb +185 -0
- data/test/general/rest_encoding_test.rb +174 -0
- data/test/general/soap_encoding_test.rb +211 -0
- data/test/general/transporter_test.rb +54 -0
- data/test/general/validator_test.rb +150 -0
- data/test/samples/rest.dodgy.response.xml +60 -0
- data/test/samples/rest.everything.response.xml +67 -0
- data/test/samples/rest.response.xml +60 -0
- data/test/samples/soap.deserialization.fault.xml +10 -0
- data/test/samples/soap.dodgy.response.xml +95 -0
- data/test/samples/soap.everything.response.xml +75 -0
- data/test/samples/soap.generalfailure.fault.xml +13 -0
- data/test/samples/soap.nulltransaction.fault.xml +14 -0
- data/test/samples/soap.response.xml +95 -0
- data/test/test_helper.rb +115 -0
- metadata +52 -12
- data/doc/classes/EWS/Transaction/Transporter.html +0 -251
- data/pkg/exact4r-0.5.gem +0 -0
- data/spec/mapping_spec.rb +0 -126
- data/spec/request_spec.rb +0 -154
- data/spec/spec_helper.rb +0 -55
- data/spec/transporter_spec.rb +0 -43
- data/spec/validator_spec.rb +0 -150
data/doc/files/README.html
CHANGED
@@ -56,7 +56,7 @@
|
|
56
56
|
</tr>
|
57
57
|
<tr class="top-aligned-row">
|
58
58
|
<td><strong>Last Update:</strong></td>
|
59
|
-
<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
|
-
|
75
|
-
REST, JSON or SOAP.
|
74
|
+
A gem which provides access to E-xact‘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 => "A00049-01", :password => "test1"
|
84
|
+
Account 2: :gateway_id => "A00427-01", :password => "testus"
|
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 => :purchase,
|
83
94
|
:amount => 10.50,
|
84
95
|
:cardholder_name => "Simon Brown",
|
85
96
|
:cc_number => "4111111111111111",
|
86
|
-
:cc_expiry => "
|
97
|
+
:cc_expiry => "1012", # MUST be MMYY format
|
87
98
|
:gateway_id => "XXXXXXX", # which gateway to submit the request to
|
88
99
|
:password => "YYYYYY" # your password for that gateway
|
89
100
|
})
|
90
101
|
|
91
|
-
transporter = EWS::
|
92
|
-
response = transporter.
|
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.
|
106
|
+
response = transporter.submit(request, :json)
|
96
107
|
|
97
108
|
# submit using SOAP, or
|
98
|
-
response = transporter.
|
109
|
+
response = transporter.submit(request, :soap)
|
99
110
|
|
100
111
|
# submit explicitly via REST
|
101
|
-
response = transporter.
|
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 => :purchase,
|
116
130
|
:amount => 10.50,
|
117
131
|
:cardholder_name => "Simon Brown",
|
118
132
|
:cc_number => "4111111111111111",
|
119
|
-
:cc_expiry => "
|
133
|
+
:cc_expiry => "1012", # MUST be MMYY format
|
120
134
|
:gateway_id => "XXXXXXX", # which gateway to submit the request to
|
121
135
|
:password => "YYYYYY" # your password for that gateway
|
122
136
|
})
|
123
137
|
|
124
|
-
transporter = EWS::
|
125
|
-
response = transporter.
|
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 => "YYYYYY"
|
133
147
|
})
|
134
148
|
|
135
|
-
find_response = transporter.
|
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
|
-
|
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("https://api.e-xact.com/", {:transaction_type => :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 => 12.00,
|
149
168
|
:cardholder_name => "Simon Brown",
|
150
169
|
:cc_number => "4111111111111111",
|
151
|
-
:cc_expiry => "
|
170
|
+
:cc_expiry => "1012",
|
152
171
|
:gateway_id => "XXXXXX",
|
153
172
|
:password => "YYYYYY"
|
154
173
|
})
|
155
174
|
|
156
|
-
rsp_resp = transporter.
|
175
|
+
rsp_resp = transporter.submit(rsp_req)
|
157
176
|
raise "Seed Purchase failed" 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 => :tagged_refund,
|
163
182
|
:transaction_tag => rsp_resp.transaction_tag, # need to know which transaction we're refunding against...
|
164
|
-
:
|
183
|
+
:authorization_num => rsp_resp.authorization_num, # and its authorization_num
|
165
184
|
:amount => 1.00, # refund a dollar at a time
|
166
185
|
:gateway_id => "XXXXXX",
|
167
186
|
:password => "YYYYYY"
|
168
187
|
})
|
169
|
-
rf_resp = transporter.
|
188
|
+
rf_resp = transporter.submit(rf_req)
|
170
189
|
raise "Refund failed: #{rf_resp.exact_resp_code}, #{rf_resp.exact_message}" unless rf_resp.approved?
|
171
190
|
end
|
172
191
|
</pre>
|
173
|
-
<
|
192
|
+
<h1>4. Using the AVS API</h1>
|
193
|
+
<p>
|
194
|
+
Allowable AVS params are:
|
195
|
+
</p>
|
196
|
+
<ul>
|
197
|
+
<li>:avs_street_address => "7501ELMST."
|
198
|
+
|
199
|
+
</li>
|
200
|
+
<li>:avs_unit_no => "801"
|
201
|
+
|
202
|
+
</li>
|
203
|
+
<li>:avs_po_box => nil # P.O. Box or street address may be specified, but
|
204
|
+
not both
|
205
|
+
|
206
|
+
</li>
|
207
|
+
<li>:avs_postal_code => "90210"
|
208
|
+
|
209
|
+
</li>
|
210
|
+
<li>:avs_test_flag => "X" # AVS test flag (optional)
|
211
|
+
|
212
|
+
</li>
|
213
|
+
</ul>
|
214
|
+
<h3>Test Flags</h3>
|
174
215
|
<p>
|
175
|
-
|
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
|
-
|
294
|
+
avs_params = {
|
295
|
+
:avs_test_flag => 'N',
|
296
|
+
:avs_street_address => '123BROWNSTREET',
|
297
|
+
:avs_unit_no => '4,
|
298
|
+
:avs_po_box => nil,
|
299
|
+
:avs_postal_code => '902101234'
|
300
|
+
}
|
301
|
+
|
302
|
+
tx_params = {
|
303
|
+
:transaction_type => :purchase,
|
304
|
+
:amount => 10.50,
|
305
|
+
:cardholder_name => "Simon Brown",
|
306
|
+
:cc_number => "4111111111111111",
|
307
|
+
:cc_expiry => "1012",
|
308
|
+
:gateway_id => "XXXXXXX",
|
309
|
+
:password => "YYYYYY"
|
310
|
+
}.merge(avs_params)
|
311
|
+
|
312
|
+
request = EWS::Transaction::Request.new(tx_params)
|
313
|
+
|
314
|
+
transporter = EWS::Transporter.new("https://api.e-xact.com/")
|
315
|
+
response = transporter.submit(request)
|
316
|
+
|
317
|
+
response.cc_verification_str1.should == "N123BROWNSTREET4902101234"
|
318
|
+
response.avs.should == N
|
179
319
|
</pre>
|
320
|
+
<h1>Rake tasks</h1>
|
180
321
|
<p>
|
181
|
-
|
322
|
+
test
|
182
323
|
</p>
|
183
324
|
<pre>
|
184
|
-
Run all
|
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>
|
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
|
77
|
+
</div>
|
78
|
+
</div>
|
72
79
|
|
73
80
|
</div>
|
74
81
|
|
@@ -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="
|
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/
|
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>
|
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>
|
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
|
79
79
|
ews/transaction/request
|
80
80
|
ews/transaction/response
|
81
|
-
ews/transaction/
|
81
|
+
ews/transaction/validator
|
82
|
+
ews/transporter
|
83
|
+
ews/transaction/fake_response
|
84
|
+
rexml/document
|
85
|
+
rexml/entity
|
82
86
|
</div>
|
83
87
|
</div>
|
84
88
|
|