nordea-rb 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/nordea.rb ADDED
@@ -0,0 +1,72 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'net/https'
4
+ begin
5
+ require 'hpricot'
6
+ rescue LoadError => e
7
+ puts "Hpricot is missing. Run `sudo gem install hpricot` to install"
8
+ exit
9
+ end
10
+
11
+ $:.unshift File.dirname(__FILE__)
12
+
13
+ require 'nordea/request'
14
+ require 'nordea/resources'
15
+ require 'nordea/session'
16
+ require 'nordea/support'
17
+ require 'nordea/transaction'
18
+ require 'nordea/version'
19
+
20
+ module Nordea
21
+ class InvalidLogin < StandardError; end
22
+
23
+ module Commands
24
+ LOGIN_PHASE_1 = "WAP00"
25
+ LOGIN_PHASE_2 = "KK10"
26
+ OVERVIEW = "WAP11TW"
27
+ PAYMENTS = "FB00TW"
28
+ LOGOUT = "LL99"
29
+ RESOURCE = "KF00TW"
30
+ MAIN_MENU = "WAPL10"
31
+ TRANSACTIONS = "KF11TW"
32
+ TRANSFERS = "WAP12TW"
33
+ TRANSFER_TO_OWN_ACCOUNT_PHASE_1 = "OF00TW"
34
+ TRANSFER_TO_OWN_ACCOUNT_PHASE_2 = "OF10TW"
35
+ TRANSFER_TO_OWN_ACCOUNT_PHASE_3 = "OF12TW"
36
+ end
37
+
38
+ def Nordea.new(pnr_or_hash, pin_or_options = {}, &block)
39
+ pnr, pin = extract_login_details(pnr_or_hash, pin_or_options)
40
+ raise ArgumentError unless pnr.length == 10 && pin.length == 4
41
+ Session.new(pnr.to_s, pin.to_s, &block)
42
+ end
43
+
44
+ private
45
+
46
+ # TODO clean up
47
+ def self.extract_login_details(pnr_or_hash, pin_or_options)
48
+ if pnr_or_hash.is_a?(Hash)
49
+ pnr_or_hash.symbolize_keys!
50
+ pnr = pnr_or_hash[:pnr]
51
+ pin = pnr_or_hash[:pin]
52
+ elsif pnr_or_hash.is_a?(Symbol)
53
+ if pnr_or_hash == :keychain
54
+ options = { :label => 'Nordea' }.merge(pin_or_options.symbolize_keys)
55
+ pnr, pin = account_details_from_keychain(options)
56
+ end
57
+ elsif pnr_or_hash.is_a?(String) && pin_or_options.is_a?(String)
58
+ pnr = pnr_or_hash
59
+ pin = pin_or_options
60
+ else
61
+ raise ArgumentError
62
+ end
63
+ [pnr.to_s.gsub(/\D+/, ''), pin.to_s.gsub(/\D+/, '')]
64
+ end
65
+
66
+ def Nordea.account_details_from_keychain(options)
67
+ command = "security find-generic-password -l '#{options[:label]}' -g"
68
+ command << " #{options[:keychain_file].inspect}" if options[:keychain_file]
69
+ command << " 2>&1"
70
+ `#{command}`.scan(/password: "(\d{4})"|"acct"<blob>="(\d{10})"/).flatten.compact.reverse
71
+ end
72
+ end
@@ -0,0 +1,408 @@
1
+ <?xml version="1.0"?>
2
+ <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
3
+
4
+
5
+ <wml>
6
+
7
+ <template>
8
+ <do type="options" label="Solo meny">
9
+ <go method="
10
+ get
11
+
12
+ " href="https://gfs.nb.se/bin2/gfskod">
13
+ <postfield name="OBJECT" value="WAPL10"/>
14
+ <postfield name="sid" value="123456789"/>
15
+ </go>
16
+ </do>
17
+
18
+ <do type="prev" label="Tillbaka">
19
+ <prev/>
20
+ </do>
21
+ </template>
22
+
23
+ <card title="Kontoinform.">
24
+
25
+ <onevent type="onenterforward">
26
+ <refresh>
27
+ <setvar name="sid" value="123456789"/>
28
+ </refresh>
29
+ </onevent>
30
+
31
+ <p>
32
+ <a href="#info">Kontoinformation</a>
33
+
34
+
35
+ <br/>
36
+
37
+ Kontoh&#228;ndelser:<br/>
38
+
39
+
40
+ <anchor>090816&#160;&#160;-52,70
41
+ <go href="#trans">
42
+ <setvar name="date" value="2009-08-16"/>
43
+ <setvar name="amount" value="-52,70"/>
44
+ <setvar name="text" value="Res. k&#246;p"/>
45
+ </go>
46
+ </anchor>
47
+
48
+
49
+ <br/>
50
+
51
+
52
+ <anchor>090815&#160;&#160;-300,00
53
+ <go href="#trans">
54
+ <setvar name="date" value="2009-08-15"/>
55
+ <setvar name="amount" value="-300,00"/>
56
+ <setvar name="text" value="Res. k&#246;p"/>
57
+ </go>
58
+ </anchor>
59
+
60
+
61
+ <br/>
62
+
63
+
64
+ <anchor>090815&#160;&#160;-23,70
65
+ <go href="#trans">
66
+ <setvar name="date" value="2009-08-15"/>
67
+ <setvar name="amount" value="-23,70"/>
68
+ <setvar name="text" value="Res. k&#246;p"/>
69
+ </go>
70
+ </anchor>
71
+
72
+
73
+ <br/>
74
+
75
+
76
+ <anchor>090813&#160;&#160;-45,70
77
+ <go href="#trans">
78
+ <setvar name="date" value="2009-08-13"/>
79
+ <setvar name="amount" value="-45,70"/>
80
+ <setvar name="text" value="Res. k&#246;p"/>
81
+ </go>
82
+ </anchor>
83
+
84
+
85
+ <br/>
86
+
87
+
88
+ <anchor>090813&#160;&#160;-23,32
89
+ <go href="#trans">
90
+ <setvar name="date" value="2009-08-13"/>
91
+ <setvar name="amount" value="-23,32"/>
92
+ <setvar name="text" value="Res. k&#246;p"/>
93
+ </go>
94
+ </anchor>
95
+
96
+
97
+ <br/>
98
+
99
+
100
+ <anchor>090813&#160;&#160;-196,00
101
+ <go href="#trans">
102
+ <setvar name="date" value="2009-08-13"/>
103
+ <setvar name="amount" value="-196,00"/>
104
+ <setvar name="text" value="Res. k&#246;p"/>
105
+ </go>
106
+ </anchor>
107
+
108
+
109
+ <br/>
110
+
111
+
112
+ <anchor>090812&#160;&#160;-400,00
113
+ <go href="#trans">
114
+ <setvar name="date" value="2009-08-12"/>
115
+ <setvar name="amount" value="-400,00"/>
116
+ <setvar name="text" value="Kortk&#246;p"/>
117
+ </go>
118
+ </anchor>
119
+
120
+
121
+ <br/>
122
+
123
+
124
+
125
+
126
+
127
+ <anchor>090811&#160;&#160;-52,62
128
+ <go href="#trans">
129
+ <setvar name="date" value="2009-08-11"/>
130
+ <setvar name="amount" value="-52,62"/>
131
+ <setvar name="text" value="Kortk&#246;p"/>
132
+ </go>
133
+ </anchor>
134
+
135
+
136
+ <br/>
137
+
138
+
139
+
140
+
141
+
142
+ <anchor>090811&#160;&#160;-185,16
143
+ <go href="#trans">
144
+ <setvar name="date" value="2009-08-11"/>
145
+ <setvar name="amount" value="-185,16"/>
146
+ <setvar name="text" value="Kortk&#246;p"/>
147
+ </go>
148
+ </anchor>
149
+
150
+
151
+ <br/>
152
+
153
+
154
+
155
+
156
+
157
+ <anchor>090805&#160;&#160;-287,03
158
+ <go href="#trans">
159
+ <setvar name="date" value="2009-08-05"/>
160
+ <setvar name="amount" value="-287,03"/>
161
+ <setvar name="text" value="Kortk&#246;p"/>
162
+ </go>
163
+ </anchor>
164
+
165
+
166
+ <br/>
167
+
168
+
169
+
170
+
171
+
172
+ <anchor>090805&#160;&#160;-252,74
173
+ <go href="#trans">
174
+ <setvar name="date" value="2009-08-05"/>
175
+ <setvar name="amount" value="-252,74"/>
176
+ <setvar name="text" value="Kortk&#246;p"/>
177
+ </go>
178
+ </anchor>
179
+
180
+
181
+ <br/>
182
+
183
+
184
+
185
+
186
+
187
+ <anchor>090804&#160;&#160;-300,00
188
+ <go href="#trans">
189
+ <setvar name="date" value="2009-08-04"/>
190
+ <setvar name="amount" value="-300,00"/>
191
+ <setvar name="text" value="Bankomat"/>
192
+ </go>
193
+ </anchor>
194
+
195
+
196
+ <br/>
197
+
198
+
199
+
200
+
201
+
202
+ <anchor>090804&#160;&#160;-103,00
203
+ <go href="#trans">
204
+ <setvar name="date" value="2009-08-04"/>
205
+ <setvar name="amount" value="-103,00"/>
206
+ <setvar name="text" value="Kortk&#246;p"/>
207
+ </go>
208
+ </anchor>
209
+
210
+
211
+ <br/>
212
+
213
+
214
+
215
+
216
+
217
+ <anchor>090804&#160;&#160;2.500,00
218
+ <go href="#trans">
219
+ <setvar name="date" value="2009-08-04"/>
220
+ <setvar name="amount" value="2.500,00"/>
221
+ <setvar name="text" value="&#214;verf&#246;ring"/>
222
+ </go>
223
+ </anchor>
224
+
225
+
226
+ <br/>
227
+
228
+
229
+
230
+
231
+
232
+ <anchor>090801&#160;&#160;-236,35
233
+ <go href="#trans">
234
+ <setvar name="date" value="2009-08-01"/>
235
+ <setvar name="amount" value="-236,35"/>
236
+ <setvar name="text" value="Kortk&#246;p"/>
237
+ </go>
238
+ </anchor>
239
+
240
+
241
+ <br/>
242
+
243
+
244
+
245
+
246
+
247
+ <anchor>090731&#160;&#160;-488,99
248
+ <go href="#trans">
249
+ <setvar name="date" value="2009-07-31"/>
250
+ <setvar name="amount" value="-488,99"/>
251
+ <setvar name="text" value="Kortk&#246;p"/>
252
+ </go>
253
+ </anchor>
254
+
255
+
256
+ <br/>
257
+
258
+
259
+
260
+
261
+
262
+ <anchor>090729&#160;&#160;-33,00
263
+ <go href="#trans">
264
+ <setvar name="date" value="2009-07-29"/>
265
+ <setvar name="amount" value="-33,00"/>
266
+ <setvar name="text" value="Kortk&#246;p"/>
267
+ </go>
268
+ </anchor>
269
+
270
+
271
+ <br/>
272
+
273
+
274
+
275
+
276
+
277
+ <anchor>090729&#160;&#160;-464,00
278
+ <go href="#trans">
279
+ <setvar name="date" value="2009-07-29"/>
280
+ <setvar name="amount" value="-464,00"/>
281
+ <setvar name="text" value="Kortk&#246;p"/>
282
+ </go>
283
+ </anchor>
284
+
285
+
286
+ <br/>
287
+
288
+
289
+
290
+
291
+
292
+ <anchor>090729&#160;&#160;-198,00
293
+ <go href="#trans">
294
+ <setvar name="date" value="2009-07-29"/>
295
+ <setvar name="amount" value="-198,00"/>
296
+ <setvar name="text" value="Kortk&#246;p"/>
297
+ </go>
298
+ </anchor>
299
+
300
+
301
+ <br/>
302
+
303
+
304
+
305
+
306
+
307
+ <anchor>090726&#160;&#160;-440,12
308
+ <go href="#trans">
309
+ <setvar name="date" value="2009-07-26"/>
310
+ <setvar name="amount" value="-440,12"/>
311
+ <setvar name="text" value="Kortk&#246;p"/>
312
+ </go>
313
+ </anchor>
314
+
315
+
316
+ <br/>
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+ <anchor title="N&#228;sta sida">N&#228;sta sida 2(7)
327
+ <go method="
328
+ get
329
+
330
+ " href="https://gfs.nb.se/bin2/gfskod">
331
+ <postfield name="OBJECT" value="KF11TW"/>
332
+ <postfield name="sid" value="123456789"/>
333
+ <postfield name="current_page" value="2"/>
334
+ <postfield name="account_type" value="001"/>
335
+ <postfield name="account_currency_code" value="SEK"/>
336
+ <postfield name="start_transaction" value="21"/>
337
+ <postfield name="account_name" value="Betalkonto"/>
338
+ </go>
339
+ </anchor>
340
+
341
+
342
+ <br/>
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+ <anchor title="Solo meny">Huvudmeny
353
+ <go method="
354
+ get
355
+
356
+ " href="https://gfs.nb.se/bin2/gfskod">
357
+ <postfield name="OBJECT" value="WAPL10"/>
358
+ <postfield name="sid" value="123456789"/>
359
+ </go>
360
+ </anchor>
361
+ </p>
362
+ </card>
363
+
364
+
365
+
366
+ <card id="trans" title="Kontoh&#228;nd.">
367
+ <p>
368
+ $date<br/>
369
+ $amount<br/>
370
+ $text<br/>
371
+ <br/>
372
+
373
+ <anchor title="Solo meny">Huvudmeny
374
+ <go method="
375
+ get
376
+
377
+ " href="https://gfs.nb.se/bin2/gfskod">
378
+ <postfield name="OBJECT" value="WAPL10"/>
379
+ <postfield name="sid" value="123456789"/>
380
+ </go>
381
+ </anchor>
382
+ </p>
383
+ </card>
384
+
385
+
386
+ <card id="info" title="Kontoinform.">
387
+ <p>
388
+ Betalkonto<br/>
389
+ Valuta: SEK<br/>
390
+ Saldo: 179,05<br/>
391
+ Disponibelt belopp: 179,05<br/>
392
+ <br/>
393
+
394
+ <anchor title="Solo meny">Huvudmeny
395
+ <go method="
396
+ get
397
+
398
+ " href="https://gfs.nb.se/bin2/gfskod">
399
+ <postfield name="OBJECT" value="WAPL10"/>
400
+ <postfield name="sid" value="123456789"/>
401
+ </go>
402
+ </anchor>
403
+ </p>
404
+ </card>
405
+
406
+ </wml>
407
+
408
+