portal_scraper 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/portal_scraper/accounts/client.rb +47 -20
- data/lib/portal_scraper/version.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64ff22e3f3fc86f6db06fbee7fcef9f81e671c487eb9970eb200854b35d632ab
|
4
|
+
data.tar.gz: 95bd91bbbc537a433a0d0c9f8be8a772c12df3bd94d9663fbf46e1f253fb5549
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 291bad49b4ea5774b82bccbb00668789e902b20939d41888961f72c739bf75a68e29d4055b03983cdd2ba6feb7de0d85410ceb848972c4f5c81e2cd30214d09a
|
7
|
+
data.tar.gz: 98e73d79dff179d8be8f5a02c6d671c2a9e60040dae0464f5ed0a05d0f85c6f59d861b8ed6e8310cefd3a40ade43a7276e0d0274ac226e2ab699e719c1dd182b
|
@@ -11,26 +11,6 @@ module PortalScraper
|
|
11
11
|
raise BadRootUrl unless config.root_url =~ URI::regexp
|
12
12
|
end
|
13
13
|
|
14
|
-
def try_form_fields(form, fields, value)
|
15
|
-
fields.each do |field|
|
16
|
-
if form.has_field?(field)
|
17
|
-
form[field] = value
|
18
|
-
break
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def login
|
24
|
-
raise BadLoginUrl if config.login_url.nil?
|
25
|
-
app.get(url_for(config.login_url)) do |login_page|
|
26
|
-
form = login_page.form_with(name: /login/i) || login_page.forms[0]
|
27
|
-
try_form_fields(form, %w(username login), app_id)
|
28
|
-
try_form_fields(form, %w(password secret), secret)
|
29
|
-
form.submit
|
30
|
-
end
|
31
|
-
app.get(url_for(config.token_url)) unless config.token_url.nil?
|
32
|
-
end
|
33
|
-
|
34
14
|
def get_accounts_balance
|
35
15
|
login
|
36
16
|
accounts_data = { accounts: [] }
|
@@ -45,6 +25,26 @@ module PortalScraper
|
|
45
25
|
accounts_data
|
46
26
|
end
|
47
27
|
|
28
|
+
def create_account(user)
|
29
|
+
login
|
30
|
+
app.get(url_for('/appTiersCreation.do')) do |create_page|
|
31
|
+
create_page.form_with(name: /(create|creation)/i) do |form|
|
32
|
+
form.fields.each { |f| try_form_fields(form, [f.name], user[f.name.to_sym]) }
|
33
|
+
fill_commune(app, form, user[:codePostal], user[:ville])
|
34
|
+
form['modeContact'] = ''
|
35
|
+
form['creerTiers'] = 'Créer'
|
36
|
+
form.submit
|
37
|
+
result_page = app.post(url_for('/appTiersCreation.do'), { confirmer: 'Confirmer' })
|
38
|
+
if result_page.uri.path =~ /error.do/
|
39
|
+
return { error: 'Missing data' }
|
40
|
+
else
|
41
|
+
return { client_ref: result_page.search('td.ZMSG').text.split(':')[1].strip }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
nil
|
46
|
+
end
|
47
|
+
|
48
48
|
private
|
49
49
|
|
50
50
|
def app
|
@@ -55,6 +55,33 @@ module PortalScraper
|
|
55
55
|
[config.root_url, path].join
|
56
56
|
end
|
57
57
|
|
58
|
+
def login
|
59
|
+
raise BadLoginUrl if config.login_url.nil?
|
60
|
+
app.get(url_for(config.login_url)) do |login_page|
|
61
|
+
form = login_page.form_with(name: /login/i) || login_page.forms[0]
|
62
|
+
try_form_fields(form, %w(username login), app_id)
|
63
|
+
try_form_fields(form, %w(password secret), secret)
|
64
|
+
form.submit
|
65
|
+
end
|
66
|
+
app.get(url_for(config.token_url)) unless config.token_url.nil?
|
67
|
+
end
|
68
|
+
|
69
|
+
def try_form_fields(form, fields, value)
|
70
|
+
fields.each do |field|
|
71
|
+
if form.has_field?(field)
|
72
|
+
form[field] = value
|
73
|
+
break
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def fill_commune(app, form, postal_code, city)
|
79
|
+
app.post(url_for('/tiersCommunes.do'), { codPos: postal_code }).tap do |mappings|
|
80
|
+
code = mappings.search('td.t').find { |c| c.text.strip == city }.parent.search('a.PL_LST').text.strip
|
81
|
+
form['commune'] = code
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
58
85
|
def find_table_value(node, column_name)
|
59
86
|
node.search('td.CA_LABEL').find { |column| column.text.strip == column_name }.parent.search('td.CA_LIB').text.strip
|
60
87
|
end
|