File: ofxconnect_8cpp-source.html

package info (click to toggle)
libofx 1%3A0.9.0-3
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 9,864 kB
  • ctags: 31,331
  • sloc: sh: 8,861; cpp: 5,714; ansic: 2,524; makefile: 204; xml: 61
file content (500 lines) | stat: -rw-r--r-- 54,913 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>LibOFX: ofxconnect.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
  </ul>
</div>
<h1>ofxconnect.cpp</h1><a href="ofxconnect_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/***************************************************************************</span>
<a name="l00002"></a>00002 <span class="comment">         ofx_connect.cpp </span>
<a name="l00003"></a>00003 <span class="comment">                             -------------------</span>
<a name="l00004"></a>00004 <span class="comment">    copyright            : (C) 2005 by Ace Jones</span>
<a name="l00005"></a>00005 <span class="comment">    email                : acejones@users.sourceforge.net</span>
<a name="l00006"></a>00006 <span class="comment">***************************************************************************/</span>
<a name="l00023"></a>00023 <span class="comment">/***************************************************************************</span>
<a name="l00024"></a>00024 <span class="comment"> *                                                                         *</span>
<a name="l00025"></a>00025 <span class="comment"> *   This program is free software; you can redistribute it and/or modify  *</span>
<a name="l00026"></a>00026 <span class="comment"> *   it under the terms of the GNU General Public License as published by  *</span>
<a name="l00027"></a>00027 <span class="comment"> *   the Free Software Foundation; either version 2 of the License, or     *</span>
<a name="l00028"></a>00028 <span class="comment"> *   (at your option) any later version.                                   *</span>
<a name="l00029"></a>00029 <span class="comment"> *                                                                         *</span>
<a name="l00030"></a>00030 <span class="comment"> ***************************************************************************/</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;iostream&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;fstream&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00034"></a>00034 <span class="preprocessor">#include "<a class="code" href="libofx-0_89_80_2inc_2libofx_8h.html" title="Main header file containing the LibOfx API.">libofx.h</a>"</span>
<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;config.h&gt;</span>             <span class="comment">/* Include config constants, e.g., VERSION TF */</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;stdio.h&gt;</span>
<a name="l00037"></a>00037 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
<a name="l00038"></a>00038 <span class="preprocessor">#include &lt;unistd.h&gt;</span>
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 <span class="preprocessor">#ifdef HAVE_LIBCURL</span>
<a name="l00041"></a>00041 <span class="preprocessor"></span><span class="preprocessor">#include &lt;curl/curl.h&gt;</span>
<a name="l00042"></a>00042 <span class="preprocessor">#endif</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span>
<a name="l00044"></a>00044 <span class="preprocessor">#include "cmdline.h"</span> <span class="comment">/* Gengetopt generated parser */</span>
<a name="l00045"></a>00045 
<a name="l00046"></a>00046 <span class="preprocessor">#include "<a class="code" href="nodeparser_8h.html" title="Declaration of nodeparser object, which facilitiates searching for nodes in an XML...">nodeparser.h</a>"</span>
<a name="l00047"></a>00047 <span class="preprocessor">#include "<a class="code" href="ofxpartner_8h.html" title="Methods for connecting to the OFX partner server to retrieve OFX server information...">ofxpartner.h</a>"</span>
<a name="l00048"></a>00048 
<a name="l00049"></a>00049 <span class="keyword">using namespace </span>std;
<a name="l00050"></a>00050 
<a name="l00051"></a>00051 <span class="preprocessor">#ifdef HAVE_LIBCURL</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* request, <span class="keyword">const</span> <span class="keywordtype">char</span>* url, <span class="keyword">const</span> <span class="keywordtype">char</span>* filename)
<a name="l00053"></a>00053 {
<a name="l00054"></a>00054   CURL *curl = curl_easy_init();
<a name="l00055"></a>00055   <span class="keywordflow">if</span>(! curl)
<a name="l00056"></a>00056     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00057"></a>00057 
<a name="l00058"></a>00058   unlink(<span class="stringliteral">"tmpout"</span>);  
<a name="l00059"></a>00059   FILE* file = fopen(filename,<span class="stringliteral">"wb"</span>);
<a name="l00060"></a>00060   <span class="keywordflow">if</span> (! file )
<a name="l00061"></a>00061   {
<a name="l00062"></a>00062     curl_easy_cleanup(curl);
<a name="l00063"></a>00063     <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00064"></a>00064   }
<a name="l00065"></a>00065     
<a name="l00066"></a>00066   curl_easy_setopt(curl, CURLOPT_URL, url);
<a name="l00067"></a>00067   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request);
<a name="l00068"></a>00068 
<a name="l00069"></a>00069   <span class="keyword">struct </span>curl_slist *headerlist=NULL;
<a name="l00070"></a>00070   headerlist=curl_slist_append(headerlist, <span class="stringliteral">"Content-type: application/x-ofx"</span>);
<a name="l00071"></a>00071   headerlist=curl_slist_append(headerlist, <span class="stringliteral">"Accept: */*, application/x-ofx"</span>);    
<a name="l00072"></a>00072   
<a name="l00073"></a>00073   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
<a name="l00074"></a>00074   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
<a name="l00075"></a>00075   curl_easy_setopt(curl, CURLOPT_WRITEDATA, (<span class="keywordtype">void</span> *)file);
<a name="l00076"></a>00076     
<a name="l00077"></a>00077   CURLcode res = curl_easy_perform(curl);
<a name="l00078"></a>00078 
<a name="l00079"></a>00079   curl_easy_cleanup(curl);
<a name="l00080"></a>00080   curl_slist_free_all (headerlist);
<a name="l00081"></a>00081   
<a name="l00082"></a>00082   fclose(file);
<a name="l00083"></a>00083   
<a name="l00084"></a>00084   <span class="keywordflow">return</span> <span class="keyword">true</span>;
<a name="l00085"></a>00085 }
<a name="l00086"></a>00086 <span class="preprocessor">#else</span>
<a name="l00087"></a>00087 <span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*, <span class="keyword">const</span> <span class="keywordtype">char</span>*, <span class="keyword">const</span> <span class="keywordtype">char</span>*)
<a name="l00088"></a>00088 {
<a name="l00089"></a>00089   cerr &lt;&lt; <span class="stringliteral">"ERROR: libox must be configured with libcurl to post this request directly"</span> &lt;&lt; endl;
<a name="l00090"></a>00090   <span class="keywordflow">return</span> <span class="keyword">false</span>;
<a name="l00091"></a>00091 }
<a name="l00092"></a>00092 <span class="preprocessor">#endif</span>
<a name="l00093"></a>00093 <span class="preprocessor"></span>
<a name="l00094"></a>00094 ostream&amp; operator&lt;&lt;(ostream&amp; os,const vector&lt;string&gt;&amp; strvect)
<a name="l00095"></a>00095 {
<a name="l00096"></a>00096   <span class="keywordflow">for</span>( vector&lt;string&gt;::const_iterator it=strvect.begin(); it!=strvect.end(); ++it)
<a name="l00097"></a>00097   {
<a name="l00098"></a>00098     os &lt;&lt; (*it) &lt;&lt; endl;
<a name="l00099"></a>00099   }
<a name="l00100"></a>00100   <span class="keywordflow">return</span> os;
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 <span class="keywordtype">int</span> <a class="code" href="ofx2qif_8c.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[])
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105   <a class="code" href="structgengetopt__args__info.html" title="Where the command line options are stored.">gengetopt_args_info</a> args_info;
<a name="l00106"></a>00106   
<a name="l00107"></a>00107   <span class="keywordflow">if</span> (cmdline_parser (argc, argv, &amp;args_info) != 0)
<a name="l00108"></a>00108     exit(1) ;
<a name="l00109"></a>00109 
<a name="l00110"></a>00110   <span class="keywordflow">if</span> ( argc == 1 )
<a name="l00111"></a>00111   {
<a name="l00112"></a>00112     cmdline_parser_print_help();
<a name="l00113"></a>00113     exit(1);
<a name="l00114"></a>00114   }
<a name="l00115"></a>00115 
<a name="l00116"></a>00116   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#063bf1b6f11f5e4db33ac1412b8d31c5" title="Whether statement-req was given.">statement_req_given</a> || args_info.<a class="code" href="structgengetopt__args__info.html#b1a8345c77a731b5f65984fad47b2956" title="Whether accountinfo-req was given.">accountinfo_req_given</a> )
<a name="l00117"></a>00117   {
<a name="l00118"></a>00118   <span class="keywordflow">if</span> ( (args_info.<a class="code" href="structgengetopt__args__info.html#3d69c180d5ac0b1124fd9a6fe680706c" title="unamed options number">inputs_num</a> &gt; 0) )
<a name="l00119"></a>00119   {
<a name="l00120"></a>00120     cout &lt;&lt; <span class="stringliteral">"file "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0] &lt;&lt; endl;
<a name="l00121"></a>00121   }
<a name="l00122"></a>00122   <span class="keywordflow">else</span>
<a name="l00123"></a>00123   {
<a name="l00124"></a>00124     cerr &lt;&lt; <span class="stringliteral">"ERROR: You must specify an output file"</span> &lt;&lt; endl;
<a name="l00125"></a>00125   }
<a name="l00126"></a>00126   }
<a name="l00127"></a>00127   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#32a2498992d05de63e896b129b8dc67c" title="Whether bank-fipid was given.">bank_fipid_given</a> || args_info.<a class="code" href="structgengetopt__args__info.html#9dbe59781a36b20cae7937c1fd4aacf5" title="Whether bank-services was given.">bank_services_given</a> )
<a name="l00128"></a>00128   {
<a name="l00129"></a>00129   <span class="keywordflow">if</span> ( (args_info.<a class="code" href="structgengetopt__args__info.html#3d69c180d5ac0b1124fd9a6fe680706c" title="unamed options number">inputs_num</a> &gt; 0) )
<a name="l00130"></a>00130   {
<a name="l00131"></a>00131     cout &lt;&lt; <span class="stringliteral">"bank "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0] &lt;&lt; endl;
<a name="l00132"></a>00132   }
<a name="l00133"></a>00133   <span class="keywordflow">else</span>
<a name="l00134"></a>00134   {
<a name="l00135"></a>00135     cerr &lt;&lt; <span class="stringliteral">"ERROR: You must specify an bank"</span> &lt;&lt; endl;
<a name="l00136"></a>00136   }
<a name="l00137"></a>00137   }
<a name="l00138"></a>00138  
<a name="l00139"></a>00139   <a class="code" href="structOfxFiLogin.html" title="Information sufficient to log into an financial institution.">OfxFiLogin</a> fi;
<a name="l00140"></a>00140   memset(&amp;fi,0,<span class="keyword">sizeof</span>(<a class="code" href="structOfxFiLogin.html" title="Information sufficient to log into an financial institution.">OfxFiLogin</a>));
<a name="l00141"></a>00141   <span class="keywordtype">bool</span> ok = <span class="keyword">true</span>;
<a name="l00142"></a>00142   <span class="keywordtype">string</span> url;
<a name="l00143"></a>00143  
<a name="l00144"></a>00144   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#063bf1b6f11f5e4db33ac1412b8d31c5" title="Whether statement-req was given.">statement_req_given</a> || args_info.<a class="code" href="structgengetopt__args__info.html#b1a8345c77a731b5f65984fad47b2956" title="Whether accountinfo-req was given.">accountinfo_req_given</a> || args_info.<a class="code" href="structgengetopt__args__info.html#9f1e1e221bc2cfb9d9f1ea282a972086" title="Whether payment-req was given.">payment_req_given</a> || args_info.<a class="code" href="structgengetopt__args__info.html#9b8cbcd89d6db648b84019f742993a2e" title="Whether paymentinquiry-req was given.">paymentinquiry_req_given</a> )
<a name="l00145"></a>00145   {
<a name="l00146"></a>00146   <span class="comment">// Get the FI Login information</span>
<a name="l00147"></a>00147   <span class="comment">// </span>
<a name="l00148"></a>00148  
<a name="l00149"></a>00149   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#c57d973bc45cc2ec3297ace92381a9ea" title="Whether fipid was given.">fipid_given</a> )
<a name="l00150"></a>00150   {
<a name="l00151"></a>00151     cerr &lt;&lt; <span class="stringliteral">"fipid "</span> &lt;&lt;  args_info.<a class="code" href="structgengetopt__args__info.html#8e4b8a15e80788cd882773a08d9e123f" title="FI partner identifier (looks up fid, org &amp;amp; url from partner server).">fipid_arg</a> &lt;&lt; endl;  
<a name="l00152"></a>00152     cerr &lt;&lt; <span class="stringliteral">"contacting partner server..."</span> &lt;&lt; endl;
<a name="l00153"></a>00153     <a class="code" href="structOfxFiServiceInfo.html" title="Information returned by the OFX Partner Server about a financial institution.">OfxFiServiceInfo</a> svcinfo = <a class="code" href="namespaceOfxPartner.html#7707f0e2acc21b43faca823ef9a2fef3">OfxPartner::ServiceInfo</a>(args_info.<a class="code" href="structgengetopt__args__info.html#8e4b8a15e80788cd882773a08d9e123f" title="FI partner identifier (looks up fid, org &amp;amp; url from partner server).">fipid_arg</a>);
<a name="l00154"></a>00154     cout &lt;&lt; <span class="stringliteral">"fid "</span> &lt;&lt; svcinfo.<a class="code" href="structOfxFiServiceInfo.html#88f49d1eb8a58dd0af68b04839a742c1">fid</a> &lt;&lt; endl;
<a name="l00155"></a>00155     strncpy(fi.<a class="code" href="structOfxFiLogin.html#ae44e5ea969520f461489956fce0ed58">fid</a>,svcinfo.<a class="code" href="structOfxFiServiceInfo.html#88f49d1eb8a58dd0af68b04839a742c1">fid</a>,<a class="code" href="inc_2libofx_8h.html#5524910cf3ba47b3d7a1b6752b69d056">OFX_FID_LENGTH</a>-1);
<a name="l00156"></a>00156     cout &lt;&lt; <span class="stringliteral">"org "</span> &lt;&lt; svcinfo.<a class="code" href="structOfxFiServiceInfo.html#3c7f2c8d42640c526ff8849d17a1ca08">org</a> &lt;&lt; endl;
<a name="l00157"></a>00157     strncpy(fi.<a class="code" href="structOfxFiLogin.html#8fac30b84cbaab576b14c1c9c9f583b2">org</a>,svcinfo.<a class="code" href="structOfxFiServiceInfo.html#3c7f2c8d42640c526ff8849d17a1ca08">org</a>,<a class="code" href="inc_2libofx_8h.html#74914e6380be88d51ab921a0f3078646">OFX_ORG_LENGTH</a>-1);
<a name="l00158"></a>00158     cout &lt;&lt; <span class="stringliteral">"url "</span> &lt;&lt; svcinfo.<a class="code" href="structOfxFiServiceInfo.html#d346b124e8c33724472150fc8addaed0">url</a> &lt;&lt; endl;
<a name="l00159"></a>00159     url = svcinfo.<a class="code" href="structOfxFiServiceInfo.html#d346b124e8c33724472150fc8addaed0">url</a>;
<a name="l00160"></a>00160   }
<a name="l00161"></a>00161   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#2de3501f16039be562ebec78d9c6d8cc" title="Whether fid was given.">fid_given</a> )
<a name="l00162"></a>00162   {
<a name="l00163"></a>00163     cerr &lt;&lt; <span class="stringliteral">"fid "</span> &lt;&lt;  args_info.<a class="code" href="structgengetopt__args__info.html#769a7d51e9b55012f76116e3340f941a" title="FI identifier.">fid_arg</a> &lt;&lt; endl;  
<a name="l00164"></a>00164     strncpy(fi.<a class="code" href="structOfxFiLogin.html#ae44e5ea969520f461489956fce0ed58">fid</a>,args_info.<a class="code" href="structgengetopt__args__info.html#769a7d51e9b55012f76116e3340f941a" title="FI identifier.">fid_arg</a>,<a class="code" href="inc_2libofx_8h.html#5524910cf3ba47b3d7a1b6752b69d056">OFX_FID_LENGTH</a>-1);
<a name="l00165"></a>00165   }
<a name="l00166"></a>00166   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( ! args_info.<a class="code" href="structgengetopt__args__info.html#c57d973bc45cc2ec3297ace92381a9ea" title="Whether fipid was given.">fipid_given</a> )
<a name="l00167"></a>00167   {
<a name="l00168"></a>00168     cerr &lt;&lt; <span class="stringliteral">"ERROR: --fid is required"</span> &lt;&lt; endl;
<a name="l00169"></a>00169     ok = <span class="keyword">false</span>;
<a name="l00170"></a>00170   }
<a name="l00171"></a>00171   
<a name="l00172"></a>00172   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#77b56ac023414fbc6382ceef8beac1de" title="Whether org was given.">org_given</a> )
<a name="l00173"></a>00173   {
<a name="l00174"></a>00174     cerr &lt;&lt; <span class="stringliteral">"org "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#b51b741c99eed627eb564837e2509cfb" title="FI org tag.">org_arg</a> &lt;&lt; endl;  
<a name="l00175"></a>00175     strncpy(fi.<a class="code" href="structOfxFiLogin.html#8fac30b84cbaab576b14c1c9c9f583b2">org</a>,args_info.<a class="code" href="structgengetopt__args__info.html#b51b741c99eed627eb564837e2509cfb" title="FI org tag.">org_arg</a>,<a class="code" href="inc_2libofx_8h.html#74914e6380be88d51ab921a0f3078646">OFX_ORG_LENGTH</a>-1);
<a name="l00176"></a>00176   }
<a name="l00177"></a>00177   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( ! args_info.<a class="code" href="structgengetopt__args__info.html#c57d973bc45cc2ec3297ace92381a9ea" title="Whether fipid was given.">fipid_given</a> )
<a name="l00178"></a>00178   {
<a name="l00179"></a>00179     cerr &lt;&lt; <span class="stringliteral">"ERROR: --org is required"</span> &lt;&lt; endl;
<a name="l00180"></a>00180     ok = <span class="keyword">false</span>;
<a name="l00181"></a>00181   }
<a name="l00182"></a>00182 
<a name="l00183"></a>00183   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#b01392f9a3dfc7fff650bc2403d66f6e" title="Whether user was given.">user_given</a> )
<a name="l00184"></a>00184   {
<a name="l00185"></a>00185     cerr &lt;&lt; <span class="stringliteral">"user "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#11ca6d492eeee3424c10e21e3dd0438e" title="User name.">user_arg</a> &lt;&lt; endl;  
<a name="l00186"></a>00186     strncpy(fi.<a class="code" href="structOfxFiLogin.html#655c23be41b28f250175501414523825">userid</a>,args_info.<a class="code" href="structgengetopt__args__info.html#11ca6d492eeee3424c10e21e3dd0438e" title="User name.">user_arg</a>,<a class="code" href="inc_2libofx_8h.html#385135109c07d8a1a72fc3edcb5f115f">OFX_USERID_LENGTH</a>-1);
<a name="l00187"></a>00187   }
<a name="l00188"></a>00188   <span class="keywordflow">else</span>
<a name="l00189"></a>00189   {
<a name="l00190"></a>00190     cerr &lt;&lt; <span class="stringliteral">"ERROR: --user is required"</span> &lt;&lt; endl;
<a name="l00191"></a>00191     ok = <span class="keyword">false</span>;
<a name="l00192"></a>00192   }
<a name="l00193"></a>00193   
<a name="l00194"></a>00194   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#9f0a2216247bf6c1fd7ad31b133937ed" title="Whether pass was given.">pass_given</a> )
<a name="l00195"></a>00195   {
<a name="l00196"></a>00196     cerr &lt;&lt; <span class="stringliteral">"pass "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#20c4ea31f5af4f9d2d8760bb26d252a0" title="Password.">pass_arg</a> &lt;&lt; endl;  
<a name="l00197"></a>00197     strncpy(fi.<a class="code" href="structOfxFiLogin.html#8507687737334b8e5559d8aafe190878">userpass</a>,args_info.<a class="code" href="structgengetopt__args__info.html#20c4ea31f5af4f9d2d8760bb26d252a0" title="Password.">pass_arg</a>,<a class="code" href="inc_2libofx_8h.html#57b6f3b8bd4d0012d1a26ffa6e636d4c">OFX_USERPASS_LENGTH</a>-1);
<a name="l00198"></a>00198   }
<a name="l00199"></a>00199   <span class="keywordflow">else</span>
<a name="l00200"></a>00200   {
<a name="l00201"></a>00201     cerr &lt;&lt; <span class="stringliteral">"ERROR: --pass is required"</span> &lt;&lt; endl;
<a name="l00202"></a>00202     ok = <span class="keyword">false</span>;
<a name="l00203"></a>00203   }
<a name="l00204"></a>00204   
<a name="l00205"></a>00205   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#cca9dc1044aa37ed4b0545c4e4c4d5dd" title="Whether url was given.">url_given</a> )
<a name="l00206"></a>00206     url = args_info.<a class="code" href="structgengetopt__args__info.html#e3d508befbb231ac680a49a6735c1354" title="Url to POST the data to (otherwise goes to stdout).">url_arg</a>;
<a name="l00207"></a>00207   }
<a name="l00208"></a>00208   
<a name="l00209"></a>00209   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#063bf1b6f11f5e4db33ac1412b8d31c5" title="Whether statement-req was given.">statement_req_given</a> )
<a name="l00210"></a>00210   {
<a name="l00211"></a>00211     cerr &lt;&lt; <span class="stringliteral">"Statement request"</span> &lt;&lt; endl;
<a name="l00212"></a>00212     
<a name="l00213"></a>00213     <a class="code" href="structOfxAccountData.html" title="An abstraction of an account.">OfxAccountData</a> account;
<a name="l00214"></a>00214     memset(&amp;account,0,<span class="keyword">sizeof</span>(<a class="code" href="structOfxAccountData.html" title="An abstraction of an account.">OfxAccountData</a>));
<a name="l00215"></a>00215     
<a name="l00216"></a>00216     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#dd74e62aef73d2f759e5134446b035ad" title="Whether bank was given.">bank_given</a> )
<a name="l00217"></a>00217     {
<a name="l00218"></a>00218       cerr &lt;&lt; <span class="stringliteral">"bank "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#61b58de298d23d8d6de7f1840c54a4fb" title="IBAN bank identifier.">bank_arg</a> &lt;&lt; endl;  
<a name="l00219"></a>00219       strncpy(account.<a class="code" href="structOfxAccountData.html#e7f1e1e41cb6c19ca9a4bdee2b6d3c3b">bank_id</a>,args_info.<a class="code" href="structgengetopt__args__info.html#61b58de298d23d8d6de7f1840c54a4fb" title="IBAN bank identifier.">bank_arg</a>,<a class="code" href="inc_2libofx_8h.html#70f2178af34abf7e98bee521b745f780">OFX_BANKID_LENGTH</a>-1);
<a name="l00220"></a>00220     }
<a name="l00221"></a>00221     <span class="keywordflow">else</span>    
<a name="l00222"></a>00222     {
<a name="l00223"></a>00223       <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> &amp;&amp; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> == 1 )
<a name="l00224"></a>00224       {
<a name="l00225"></a>00225         cerr &lt;&lt; <span class="stringliteral">"ERROR: --bank is required for a bank request"</span> &lt;&lt; endl;
<a name="l00226"></a>00226         ok = <span class="keyword">false</span>;
<a name="l00227"></a>00227       }
<a name="l00228"></a>00228     }
<a name="l00229"></a>00229     
<a name="l00230"></a>00230     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#26347117c8e45981c19f59473b25f172" title="Whether broker was given.">broker_given</a> )
<a name="l00231"></a>00231     {
<a name="l00232"></a>00232       cerr &lt;&lt; <span class="stringliteral">"broker "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#b539641d9837528631bfb4acda002c0d" title="Broker identifier.">broker_arg</a> &lt;&lt; endl;  
<a name="l00233"></a>00233       strncpy(account.<a class="code" href="structOfxAccountData.html#51cd1ff5d5809de171bf9071517239e7">broker_id</a>,args_info.<a class="code" href="structgengetopt__args__info.html#b539641d9837528631bfb4acda002c0d" title="Broker identifier.">broker_arg</a>,<a class="code" href="inc_2libofx_8h.html#a1256fa7603b452e20a4701e2aae53d5">OFX_BROKERID_LENGTH</a>-1);
<a name="l00234"></a>00234     }
<a name="l00235"></a>00235     <span class="keywordflow">else</span>
<a name="l00236"></a>00236     {
<a name="l00237"></a>00237       <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> &amp;&amp; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> == 2 )
<a name="l00238"></a>00238       {
<a name="l00239"></a>00239         cerr &lt;&lt; <span class="stringliteral">"ERROR: --broker is required for an investment statement request"</span> &lt;&lt; endl;
<a name="l00240"></a>00240         ok = <span class="keyword">false</span>;
<a name="l00241"></a>00241       }
<a name="l00242"></a>00242     }
<a name="l00243"></a>00243     
<a name="l00244"></a>00244     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#75d753965d65a29a8c7cfdfdda5f51f4" title="Whether acct was given.">acct_given</a> )
<a name="l00245"></a>00245     {
<a name="l00246"></a>00246       cerr &lt;&lt; <span class="stringliteral">"acct "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#8d3cdcdd6c12a5a20c7591653b4f2281" title="Account ID.">acct_arg</a> &lt;&lt; endl;  
<a name="l00247"></a>00247       strncpy(account.<a class="code" href="structOfxAccountData.html#b7a689ab5977bd72653046449534f7f7">account_number</a>,args_info.<a class="code" href="structgengetopt__args__info.html#8d3cdcdd6c12a5a20c7591653b4f2281" title="Account ID.">acct_arg</a>,<a class="code" href="inc_2libofx_8h.html#68c0d75fde3884b2ace680ef8b5fdd07">OFX_ACCTID_LENGTH</a>-1);
<a name="l00248"></a>00248     }
<a name="l00249"></a>00249     <span class="keywordflow">else</span>
<a name="l00250"></a>00250     {
<a name="l00251"></a>00251       cerr &lt;&lt; <span class="stringliteral">"ERROR: --acct is required for a statement request"</span> &lt;&lt; endl;
<a name="l00252"></a>00252       ok = <span class="keyword">false</span>;
<a name="l00253"></a>00253     }
<a name="l00254"></a>00254     
<a name="l00255"></a>00255     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> )
<a name="l00256"></a>00256     {
<a name="l00257"></a>00257       cerr &lt;&lt; <span class="stringliteral">"type "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> &lt;&lt; endl;
<a name="l00258"></a>00258       <span class="keywordflow">switch</span> (args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a>) {
<a name="l00259"></a>00259       <span class="keywordflow">case</span> 1: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab1028432212e64e77d0f487d8ac7078204a56c">OFX_CHECKING</a>;
<a name="l00260"></a>00260         <span class="keywordflow">break</span>;
<a name="l00261"></a>00261       <span class="keywordflow">case</span> 2: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab1028471412f0985b2443ef3cf35dc131c227a">OFX_INVESTMENT</a>;
<a name="l00262"></a>00262         <span class="keywordflow">break</span>;
<a name="l00263"></a>00263       <span class="keywordflow">case</span> 3: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab10284ef7a40d4a94b79cb30e36e9d2d767446">OFX_CREDITCARD</a> ;
<a name="l00264"></a>00264         <span class="keywordflow">break</span>;
<a name="l00265"></a>00265       <span class="keywordflow">default</span>:
<a name="l00266"></a>00266         cerr &lt;&lt; <span class="stringliteral">"ERROR: --type is not valid.  Must be between 1 and 3"</span> &lt;&lt; endl;
<a name="l00267"></a>00267         ok = <span class="keyword">false</span>;
<a name="l00268"></a>00268       }
<a name="l00269"></a>00269     }
<a name="l00270"></a>00270     <span class="keywordflow">else</span>
<a name="l00271"></a>00271     {
<a name="l00272"></a>00272       cerr &lt;&lt; <span class="stringliteral">"ERROR: --type is required for a statement request"</span> &lt;&lt; endl;
<a name="l00273"></a>00273       ok = <span class="keyword">false</span>;
<a name="l00274"></a>00274     }
<a name="l00275"></a>00275     
<a name="l00276"></a>00276     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#fbe6f10a6693b2e26ceff818c98ba796" title="Whether past was given.">past_given</a> )
<a name="l00277"></a>00277     {
<a name="l00278"></a>00278       cerr &lt;&lt; <span class="stringliteral">"past "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#9654176cd23987658362a4f8f9d74a01" title="How far back to look from today (in days).">past_arg</a> &lt;&lt; endl;  
<a name="l00279"></a>00279     }
<a name="l00280"></a>00280     <span class="keywordflow">else</span>
<a name="l00281"></a>00281     {
<a name="l00282"></a>00282       cerr &lt;&lt; <span class="stringliteral">"ERROR: --past is required for a statement request"</span> &lt;&lt; endl;
<a name="l00283"></a>00283       ok = <span class="keyword">false</span>;
<a name="l00284"></a>00284     }
<a name="l00285"></a>00285     
<a name="l00286"></a>00286     <span class="keywordflow">if</span> ( ok )
<a name="l00287"></a>00287     {
<a name="l00288"></a>00288       <span class="keywordtype">char</span>* request = <a class="code" href="inc_2libofx_8h.html#8095d04a045a8f0bdfd5c32ea6f1638d" title="Creates an OFX statement request in string form.">libofx_request_statement</a>( &amp;fi, &amp;account, time(NULL) - args_info.<a class="code" href="structgengetopt__args__info.html#9654176cd23987658362a4f8f9d74a01" title="How far back to look from today (in days).">past_arg</a> * 86400L );
<a name="l00289"></a>00289     
<a name="l00290"></a>00290       <span class="keywordflow">if</span> ( url.length() ) 
<a name="l00291"></a>00291         <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(request,url.c_str(),args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00292"></a>00292       <span class="keywordflow">else</span>
<a name="l00293"></a>00293         cout &lt;&lt; request;
<a name="l00294"></a>00294       
<a name="l00295"></a>00295       free(request);
<a name="l00296"></a>00296     }
<a name="l00297"></a>00297   }
<a name="l00298"></a>00298 
<a name="l00299"></a>00299   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#9b8cbcd89d6db648b84019f742993a2e" title="Whether paymentinquiry-req was given.">paymentinquiry_req_given</a> )
<a name="l00300"></a>00300   {
<a name="l00301"></a>00301     <span class="keywordtype">char</span> tridstr[33];
<a name="l00302"></a>00302     memset(tridstr,0,33);
<a name="l00303"></a>00303 
<a name="l00304"></a>00304     <span class="keywordtype">bool</span> ok = <span class="keyword">true</span>;
<a name="l00305"></a>00305 
<a name="l00306"></a>00306     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#9c40bb058e29fc138e454f461824cefc" title="Whether trid was given.">trid_given</a> )
<a name="l00307"></a>00307     {
<a name="l00308"></a>00308       cerr &lt;&lt; <span class="stringliteral">"trid "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#88eed5f134272a39745075b5001d76b4" title="Transaction id.">trid_arg</a> &lt;&lt; endl;  
<a name="l00309"></a>00309       snprintf(tridstr,32,<span class="stringliteral">"%i"</span>,args_info.<a class="code" href="structgengetopt__args__info.html#88eed5f134272a39745075b5001d76b4" title="Transaction id.">trid_arg</a>);
<a name="l00310"></a>00310     }
<a name="l00311"></a>00311     <span class="keywordflow">else</span>
<a name="l00312"></a>00312     {
<a name="l00313"></a>00313       cerr &lt;&lt; <span class="stringliteral">"ERROR: --trid is required for a payment inquiry request"</span> &lt;&lt; endl;
<a name="l00314"></a>00314       ok = <span class="keyword">false</span>;
<a name="l00315"></a>00315     }
<a name="l00316"></a>00316  
<a name="l00317"></a>00317     <span class="keywordflow">if</span> ( ok )
<a name="l00318"></a>00318     {
<a name="l00319"></a>00319       <span class="keywordtype">char</span>* request = <a class="code" href="inc_2libofx_8h.html#b9b42a433677da688d0f9f37d9da24d1">libofx_request_payment_status</a>( &amp;fi, tridstr );
<a name="l00320"></a>00320  
<a name="l00321"></a>00321       filebuf fb;
<a name="l00322"></a>00322       fb.open (<span class="stringliteral">"query"</span>,ios::out);
<a name="l00323"></a>00323       ostream os(&amp;fb);
<a name="l00324"></a>00324       os &lt;&lt; request;
<a name="l00325"></a>00325       fb.close();
<a name="l00326"></a>00326       
<a name="l00327"></a>00327       <span class="keywordflow">if</span> ( url.length() ) 
<a name="l00328"></a>00328         <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(request,url.c_str(),args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00329"></a>00329       <span class="keywordflow">else</span>
<a name="l00330"></a>00330         cout &lt;&lt; request;
<a name="l00331"></a>00331     
<a name="l00332"></a>00332       free(request);
<a name="l00333"></a>00333     }
<a name="l00334"></a>00334   }
<a name="l00335"></a>00335   
<a name="l00336"></a>00336   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#9f1e1e221bc2cfb9d9f1ea282a972086" title="Whether payment-req was given.">payment_req_given</a> )
<a name="l00337"></a>00337   {
<a name="l00338"></a>00338     <a class="code" href="structOfxAccountData.html" title="An abstraction of an account.">OfxAccountData</a> account;
<a name="l00339"></a>00339     memset(&amp;account,0,<span class="keyword">sizeof</span>(<a class="code" href="structOfxAccountData.html" title="An abstraction of an account.">OfxAccountData</a>));
<a name="l00340"></a>00340     <a class="code" href="structOfxPayee.html">OfxPayee</a> payee;
<a name="l00341"></a>00341     memset(&amp;payee,0,<span class="keyword">sizeof</span>(<a class="code" href="structOfxPayee.html">OfxPayee</a>));
<a name="l00342"></a>00342     <a class="code" href="structOfxPayment.html">OfxPayment</a> payment;
<a name="l00343"></a>00343     memset(&amp;payment,0,<span class="keyword">sizeof</span>(<a class="code" href="structOfxPayment.html">OfxPayment</a>));
<a name="l00344"></a>00344 
<a name="l00345"></a>00345     strcpy(payee.<a class="code" href="structOfxPayee.html#2ad9e35d86d1f7432114048a55bb5a73">name</a>,<span class="stringliteral">"MARTIN PREUSS"</span>);
<a name="l00346"></a>00346     strcpy(payee.<a class="code" href="structOfxPayee.html#985439daf6ac8a7a34c92e5f9e829901">address1</a>,<span class="stringliteral">"1 LAUREL ST"</span>);
<a name="l00347"></a>00347     strcpy(payee.<a class="code" href="structOfxPayee.html#03d236ffc1640ecc56640c4e29093215">city</a>,<span class="stringliteral">"SAN CARLOS"</span>);
<a name="l00348"></a>00348     strcpy(payee.<a class="code" href="structOfxPayee.html#d93547c7b47ed9d2428c0516fec2ed55">state</a>,<span class="stringliteral">"CA"</span>);
<a name="l00349"></a>00349     strcpy(payee.<a class="code" href="structOfxPayee.html#b23cc650855fe8313f3a984a76b233cb">postalcode</a>,<span class="stringliteral">"94070"</span>);
<a name="l00350"></a>00350     strcpy(payee.<a class="code" href="structOfxPayee.html#90f01576639fa04ff30a4c8836b6491f">phone</a>,<span class="stringliteral">"866-555-1212"</span>);
<a name="l00351"></a>00351         
<a name="l00352"></a>00352     strcpy(payment.<a class="code" href="structOfxPayment.html#ce2679ca7e17d6ba7a79cf03399beb8a">amount</a>,<span class="stringliteral">"200.00"</span>);
<a name="l00353"></a>00353     strcpy(payment.<a class="code" href="structOfxPayment.html#851acab467352b911fa62781657ce328">account</a>,<span class="stringliteral">"1234"</span>);
<a name="l00354"></a>00354     strcpy(payment.<a class="code" href="structOfxPayment.html#8c7bf483dba9043d5c49993756681e7b">datedue</a>,<span class="stringliteral">"20060301"</span>);
<a name="l00355"></a>00355     strcpy(payment.<a class="code" href="structOfxPayment.html#3d6cbc61b6b1561f6a641bedcb5d25f5">memo</a>,<span class="stringliteral">"This is a test"</span>);
<a name="l00356"></a>00356 
<a name="l00357"></a>00357     <span class="keywordtype">bool</span> ok = <span class="keyword">true</span>;
<a name="l00358"></a>00358 
<a name="l00359"></a>00359     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#dd74e62aef73d2f759e5134446b035ad" title="Whether bank was given.">bank_given</a> )
<a name="l00360"></a>00360     {
<a name="l00361"></a>00361       cerr &lt;&lt; <span class="stringliteral">"bank "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#61b58de298d23d8d6de7f1840c54a4fb" title="IBAN bank identifier.">bank_arg</a> &lt;&lt; endl;  
<a name="l00362"></a>00362       strncpy(account.<a class="code" href="structOfxAccountData.html#e7f1e1e41cb6c19ca9a4bdee2b6d3c3b">bank_id</a>,args_info.<a class="code" href="structgengetopt__args__info.html#61b58de298d23d8d6de7f1840c54a4fb" title="IBAN bank identifier.">bank_arg</a>,<a class="code" href="inc_2libofx_8h.html#70f2178af34abf7e98bee521b745f780">OFX_BANKID_LENGTH</a>-1);
<a name="l00363"></a>00363     }
<a name="l00364"></a>00364     <span class="keywordflow">else</span>    
<a name="l00365"></a>00365     {
<a name="l00366"></a>00366       <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> &amp;&amp; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> == 1 )
<a name="l00367"></a>00367       {
<a name="l00368"></a>00368         cerr &lt;&lt; <span class="stringliteral">"ERROR: --bank is required for a bank request"</span> &lt;&lt; endl;
<a name="l00369"></a>00369         ok = <span class="keyword">false</span>;
<a name="l00370"></a>00370       }
<a name="l00371"></a>00371     }
<a name="l00372"></a>00372     
<a name="l00373"></a>00373     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#26347117c8e45981c19f59473b25f172" title="Whether broker was given.">broker_given</a> )
<a name="l00374"></a>00374     {
<a name="l00375"></a>00375       cerr &lt;&lt; <span class="stringliteral">"broker "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#b539641d9837528631bfb4acda002c0d" title="Broker identifier.">broker_arg</a> &lt;&lt; endl;  
<a name="l00376"></a>00376       strncpy(account.<a class="code" href="structOfxAccountData.html#51cd1ff5d5809de171bf9071517239e7">broker_id</a>,args_info.<a class="code" href="structgengetopt__args__info.html#b539641d9837528631bfb4acda002c0d" title="Broker identifier.">broker_arg</a>,<a class="code" href="inc_2libofx_8h.html#a1256fa7603b452e20a4701e2aae53d5">OFX_BROKERID_LENGTH</a>-1);
<a name="l00377"></a>00377     }
<a name="l00378"></a>00378     <span class="keywordflow">else</span>
<a name="l00379"></a>00379     {
<a name="l00380"></a>00380       <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> &amp;&amp; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> == 2 )
<a name="l00381"></a>00381       {
<a name="l00382"></a>00382         cerr &lt;&lt; <span class="stringliteral">"ERROR: --broker is required for an investment statement request"</span> &lt;&lt; endl;
<a name="l00383"></a>00383         ok = <span class="keyword">false</span>;
<a name="l00384"></a>00384       }
<a name="l00385"></a>00385     }
<a name="l00386"></a>00386     
<a name="l00387"></a>00387     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#75d753965d65a29a8c7cfdfdda5f51f4" title="Whether acct was given.">acct_given</a> )
<a name="l00388"></a>00388     {
<a name="l00389"></a>00389       cerr &lt;&lt; <span class="stringliteral">"acct "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#8d3cdcdd6c12a5a20c7591653b4f2281" title="Account ID.">acct_arg</a> &lt;&lt; endl;  
<a name="l00390"></a>00390       strncpy(account.<a class="code" href="structOfxAccountData.html#b7a689ab5977bd72653046449534f7f7">account_number</a>,args_info.<a class="code" href="structgengetopt__args__info.html#8d3cdcdd6c12a5a20c7591653b4f2281" title="Account ID.">acct_arg</a>,<a class="code" href="inc_2libofx_8h.html#68c0d75fde3884b2ace680ef8b5fdd07">OFX_ACCTID_LENGTH</a>-1);
<a name="l00391"></a>00391     }
<a name="l00392"></a>00392     <span class="keywordflow">else</span>
<a name="l00393"></a>00393     {
<a name="l00394"></a>00394       cerr &lt;&lt; <span class="stringliteral">"ERROR: --acct is required for a statement request"</span> &lt;&lt; endl;
<a name="l00395"></a>00395       ok = <span class="keyword">false</span>;
<a name="l00396"></a>00396     }
<a name="l00397"></a>00397     
<a name="l00398"></a>00398     <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#7a7436030c9630a78ac6adda5c5026f1" title="Whether type was given.">type_given</a> )
<a name="l00399"></a>00399     { 
<a name="l00400"></a>00400       cerr &lt;&lt; <span class="stringliteral">"type "</span> &lt;&lt; args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a> &lt;&lt; endl;
<a name="l00401"></a>00401       <span class="keywordflow">switch</span> (args_info.<a class="code" href="structgengetopt__args__info.html#093feef6ca6c9164a2f32ed5f569c53e" title="Account Type 1=checking 2=invest 3=ccard.">type_arg</a>) {
<a name="l00402"></a>00402       <span class="keywordflow">case</span> 1: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab1028432212e64e77d0f487d8ac7078204a56c">OFX_CHECKING</a>;
<a name="l00403"></a>00403         <span class="keywordflow">break</span>;
<a name="l00404"></a>00404       <span class="keywordflow">case</span> 2: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab1028471412f0985b2443ef3cf35dc131c227a">OFX_INVESTMENT</a>;
<a name="l00405"></a>00405         <span class="keywordflow">break</span>;
<a name="l00406"></a>00406       <span class="keywordflow">case</span> 3: account.<a class="code" href="structOfxAccountData.html#86c1f1fc9d27be97de56b2ca1feef70f">account_type</a> = account.<a class="code" href="structOfxAccountData.html#3835390f3072fc32736780f44ab10284ef7a40d4a94b79cb30e36e9d2d767446">OFX_CREDITCARD</a> ;
<a name="l00407"></a>00407         <span class="keywordflow">break</span>;
<a name="l00408"></a>00408       <span class="keywordflow">default</span>:
<a name="l00409"></a>00409         cerr &lt;&lt; <span class="stringliteral">"ERROR: --type is not valid.  Must be between 1 and 3"</span> &lt;&lt; endl;
<a name="l00410"></a>00410         ok = <span class="keyword">false</span>;
<a name="l00411"></a>00411       }
<a name="l00412"></a>00412     }
<a name="l00413"></a>00413     <span class="keywordflow">else</span>
<a name="l00414"></a>00414     {
<a name="l00415"></a>00415       cerr &lt;&lt; <span class="stringliteral">"ERROR: --type is required for a statement request"</span> &lt;&lt; endl;
<a name="l00416"></a>00416       ok = <span class="keyword">false</span>;
<a name="l00417"></a>00417     }
<a name="l00418"></a>00418     
<a name="l00419"></a>00419     <span class="keywordflow">if</span> ( ok )
<a name="l00420"></a>00420     {
<a name="l00421"></a>00421       <span class="keywordtype">char</span>* request = libofx_request_payment( &amp;fi, &amp;account, &amp;payee, &amp;payment );
<a name="l00422"></a>00422     
<a name="l00423"></a>00423       filebuf fb;
<a name="l00424"></a>00424       fb.open (<span class="stringliteral">"query"</span>,ios::out);
<a name="l00425"></a>00425       ostream os(&amp;fb);
<a name="l00426"></a>00426       os &lt;&lt; request;
<a name="l00427"></a>00427       fb.close();
<a name="l00428"></a>00428       
<a name="l00429"></a>00429       <span class="keywordflow">if</span> ( url.length() ) 
<a name="l00430"></a>00430         <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(request,url.c_str(),args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00431"></a>00431       <span class="keywordflow">else</span>
<a name="l00432"></a>00432         cout &lt;&lt; request;
<a name="l00433"></a>00433     
<a name="l00434"></a>00434       free(request);
<a name="l00435"></a>00435     }
<a name="l00436"></a>00436         
<a name="l00437"></a>00437   }
<a name="l00438"></a>00438   
<a name="l00439"></a>00439   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#b1a8345c77a731b5f65984fad47b2956" title="Whether accountinfo-req was given.">accountinfo_req_given</a> )
<a name="l00440"></a>00440   {
<a name="l00441"></a>00441     <span class="keywordflow">if</span> ( ok )
<a name="l00442"></a>00442     {
<a name="l00443"></a>00443       <span class="keywordtype">char</span>* request = <a class="code" href="inc_2libofx_8h.html#24821dd5f7269d3b58e6bbaeb0bf0449" title="Creates an OFX account info (list) request in string form.">libofx_request_accountinfo</a>( &amp;fi );
<a name="l00444"></a>00444     
<a name="l00445"></a>00445       <span class="keywordflow">if</span> ( url.length() ) 
<a name="l00446"></a>00446         <a class="code" href="namespaceOfxPartner.html#eae033ba144dd6e1a27a81d80fb985f4">post</a>(request,url.c_str(),args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00447"></a>00447       <span class="keywordflow">else</span>
<a name="l00448"></a>00448         cout &lt;&lt; request;
<a name="l00449"></a>00449     
<a name="l00450"></a>00450       free(request);
<a name="l00451"></a>00451     }
<a name="l00452"></a>00452   }
<a name="l00453"></a>00453         
<a name="l00454"></a>00454   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#102408dce4663f3bbeb8d3d7af51e2ce" title="Whether bank-list was given.">bank_list_given</a> )
<a name="l00455"></a>00455   {
<a name="l00456"></a>00456     cout &lt;&lt; <a class="code" href="namespaceOfxPartner.html#849cbb4d1d013b56c3ba28ef1e574fba">OfxPartner::BankNames</a>();
<a name="l00457"></a>00457   }
<a name="l00458"></a>00458   
<a name="l00459"></a>00459   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#32a2498992d05de63e896b129b8dc67c" title="Whether bank-fipid was given.">bank_fipid_given</a> )
<a name="l00460"></a>00460   {
<a name="l00461"></a>00461     cout &lt;&lt; <a class="code" href="namespaceOfxPartner.html#cfd9337cce7e4f82bd69b5d78362f7bb">OfxPartner::FipidForBank</a>(args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00462"></a>00462   }
<a name="l00463"></a>00463   
<a name="l00464"></a>00464   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#9dbe59781a36b20cae7937c1fd4aacf5" title="Whether bank-services was given.">bank_services_given</a> )
<a name="l00465"></a>00465   {
<a name="l00466"></a>00466     <a class="code" href="structOfxFiServiceInfo.html" title="Information returned by the OFX Partner Server about a financial institution.">OfxFiServiceInfo</a> svcinfo = <a class="code" href="namespaceOfxPartner.html#7707f0e2acc21b43faca823ef9a2fef3">OfxPartner::ServiceInfo</a>(args_info.<a class="code" href="structgengetopt__args__info.html#9604690019dd09b318302dae6868726c" title="unamed options (options without names)">inputs</a>[0]);
<a name="l00467"></a>00467     cout &lt;&lt; <span class="stringliteral">"Account List? "</span> &lt;&lt; (svcinfo.<a class="code" href="structOfxFiServiceInfo.html#aecf3ea65f7ccd118d1264739da3f915">accountlist</a>?<span class="stringliteral">"Yes"</span>:<span class="stringliteral">"No"</span>) &lt;&lt; endl;
<a name="l00468"></a>00468     cout &lt;&lt; <span class="stringliteral">"Statements? "</span> &lt;&lt; (svcinfo.<a class="code" href="structOfxFiServiceInfo.html#49e460457156291004eed7c1841c9efe">statements</a>?<span class="stringliteral">"Yes"</span>:<span class="stringliteral">"No"</span>) &lt;&lt; endl;
<a name="l00469"></a>00469     cout &lt;&lt; <span class="stringliteral">"Billpay? "</span> &lt;&lt; (svcinfo.<a class="code" href="structOfxFiServiceInfo.html#40a3cf5456923865ec22cc3bb2e3b07c">billpay</a>?<span class="stringliteral">"Yes"</span>:<span class="stringliteral">"No"</span>) &lt;&lt; endl;
<a name="l00470"></a>00470     cout &lt;&lt; <span class="stringliteral">"Investments? "</span> &lt;&lt; (svcinfo.<a class="code" href="structOfxFiServiceInfo.html#37b1522705817d12494f524658d7633b">investments</a>?<span class="stringliteral">"Yes"</span>:<span class="stringliteral">"No"</span>) &lt;&lt; endl;
<a name="l00471"></a>00471   }
<a name="l00472"></a>00472  
<a name="l00473"></a>00473   <span class="keywordflow">if</span> ( args_info.<a class="code" href="structgengetopt__args__info.html#20870925eb8d04253efcf788f10a5f19" title="Whether allsupport was given.">allsupport_given</a> )
<a name="l00474"></a>00474   {
<a name="l00475"></a>00475     vector&lt;string&gt; banks = <a class="code" href="namespaceOfxPartner.html#849cbb4d1d013b56c3ba28ef1e574fba">OfxPartner::BankNames</a>();
<a name="l00476"></a>00476     vector&lt;string&gt;::const_iterator it_bank = banks.begin();
<a name="l00477"></a>00477     <span class="keywordflow">while</span> ( it_bank != banks.end() )
<a name="l00478"></a>00478     {
<a name="l00479"></a>00479       vector&lt;string&gt; fipids = <a class="code" href="namespaceOfxPartner.html#cfd9337cce7e4f82bd69b5d78362f7bb">OfxPartner::FipidForBank</a>(*it_bank);
<a name="l00480"></a>00480       vector&lt;string&gt;::const_iterator it_fipid = fipids.begin();
<a name="l00481"></a>00481       <span class="keywordflow">while</span> ( it_fipid != fipids.end() )
<a name="l00482"></a>00482       {
<a name="l00483"></a>00483         <span class="keywordflow">if</span> ( <a class="code" href="namespaceOfxPartner.html#7707f0e2acc21b43faca823ef9a2fef3">OfxPartner::ServiceInfo</a>(*it_fipid).<a class="code" href="structOfxFiServiceInfo.html#aecf3ea65f7ccd118d1264739da3f915">accountlist</a> )
<a name="l00484"></a>00484           cout &lt;&lt; *it_bank &lt;&lt; endl;
<a name="l00485"></a>00485         ++it_fipid;
<a name="l00486"></a>00486       }
<a name="l00487"></a>00487       ++it_bank;
<a name="l00488"></a>00488     }
<a name="l00489"></a>00489   }
<a name="l00490"></a>00490   
<a name="l00491"></a>00491   <span class="keywordflow">return</span> 0;
<a name="l00492"></a>00492 }
<a name="l00493"></a>00493 
<a name="l00494"></a>00494 
<a name="l00495"></a>00495 <span class="comment">// vim:cin:si:ai:et:ts=2:sw=2:</span>
<a name="l00496"></a>00496 
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 19 20:27:59 2007 for LibOFX by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>
</body>
</html>