jofh22 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/jofh22.rb +144 -0
  4. data.tar.gz.sig +0 -0
  5. metadata +110 -0
  6. metadata.gz.sig +0 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7dcdc2521319123e2c811fcf7a3cbb43c1ab4e003277e43d3cfb0cc15c0df09d
4
+ data.tar.gz: b384667c9c65ba2a6f36a00a84a78c2a8a81f7451b2c3d021df37365bbca8562
5
+ SHA512:
6
+ metadata.gz: 3721a5cfd7dac65d6c49c5dce0473f79a6c74b105145c50a6a35768543ce9566419a46e102c59528ff048d5d925a12e34fc29986f50a6e9f7c3fd9a374159807
7
+ data.tar.gz: 42749c78d3ec47283c6bdec4170dcabcdc8853198227e5aef4e96fa57de464ac71c388441d1058ff94690837471d0a6648f0107818560251ab133bdcea17300c
checksums.yaml.gz.sig ADDED
Binary file
data/lib/jofh22.rb ADDED
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: jofh22.rb
4
+
5
+ # description: Jobs Online form helper 2022 (Experimental)
6
+
7
+ require 'yaml'
8
+ require 'ferrumwizard'
9
+ require 'nokorexi'
10
+
11
+
12
+ module Jofh22
13
+
14
+ class NHSScot
15
+
16
+ attr_reader :browser, :h, :doc
17
+
18
+ # notes:
19
+ #
20
+ # * the *cookies* parameter can reference a file path to save or
21
+ # read a cookie file
22
+ # * the *yml* parameter refeference the YAML file containing the inputs
23
+ #
24
+ def initialize(yml='/tmp/tmp.yaml', cookies: nil, debug: false)
25
+
26
+ @debug = debug
27
+ url = 'https://apply.jobs.scot.nhs.uk/register.aspx'
28
+ @browser = browser = FerrumWizard.new(url, headless: false,
29
+ cookies: cookies)
30
+ sleep 1
31
+ @doc = Nokorexi.new(browser.body).to_doc
32
+ sleep 1
33
+
34
+ filepath = yml
35
+ @h = YAML.load(File.read(filepath))
36
+
37
+ end
38
+
39
+ def populate_form()
40
+
41
+ h, browser = @h, @browser
42
+ r = browser.at_xpath('//select[@name="cmdTitle"]')
43
+
44
+ # Title
45
+ # options: , Councillor, Doctor, Father, Friar, Lady, Lord, Major,
46
+ # Miss, Mr., Mrs., Ms., Mx., Professor, Reverend, Sir
47
+ title = h['title']
48
+ titles = %w( Councillor Doctor Father Friar Lady Lord Major Miss Mr.) +
49
+ %w(Mrs. Ms. Mx. Professor Reverend Sir)
50
+ r = titles.grep /#{title}/i
51
+ n = titles.index(r.first) + 1
52
+ r = browser.at_xpath('//div[select/@name="cmdTitle"]')
53
+ r.focus
54
+ n.times { r.type(:down); sleep 0.4}
55
+ r.click
56
+ sleep 0.5
57
+
58
+ r = browser.at_xpath('//input[@name="txtForename"]')
59
+
60
+ # First name
61
+ first_name = h['first_name']
62
+ r.focus.type first_name
63
+ sleep 0.5
64
+
65
+ r = browser.at_xpath('//input[@name="txtSurname"]')
66
+
67
+ # Last name
68
+ last_name = h['last_name']
69
+ r.focus.type last_name
70
+ sleep 0.5
71
+
72
+ r = browser.at_xpath('//input[@name="txtHomePostcode"]')
73
+
74
+ # Postcode
75
+ postcode = h['postcode']
76
+ r.focus.type postcode
77
+ sleep 0.5
78
+
79
+ r = browser.at_xpath('//input[@name="txtHomeTelephone"]')
80
+
81
+ # Home Telephone
82
+ home_telephone = h['home_telephone']
83
+ r.focus.type '+' + home_telephone.to_s.sub(/^\+/,'')
84
+ sleep 0.5
85
+
86
+ r = browser.at_xpath('//input[@name="recoveryOption"]')
87
+ r.focus.click
88
+
89
+ r = browser.at_xpath('//input[@name="txtHomeEmail"]')
90
+
91
+ # Email address
92
+ email_address = h['email_address']
93
+ r.focus.type email_address
94
+ sleep 0.5
95
+
96
+ r = browser.at_xpath('//input[@name="txtPassword"]')
97
+
98
+ # Password
99
+ password = h['password']
100
+ r.focus.type password
101
+ sleep 0.5
102
+
103
+ r = browser.at_xpath('//input[@name="txtPassword2"]')
104
+
105
+ # Re-type password
106
+ retype_password = h['retype_password']
107
+ r.focus.type retype_password
108
+ sleep 0.5
109
+
110
+ r = browser.at_xpath('//select[@name="cmbEmployed"]')
111
+ sleep 0.5
112
+ # Are you currently employed by NHS Scotland?
113
+ # options: Please select, Yes, No
114
+ ayceb = h['ayceb']
115
+ titles = ['Please select', 'Yes', 'No']
116
+ puts 'ayceb: ' + ayceb.inspect if @debug
117
+ puts 'titles: ' + titles.inspect if @debug
118
+
119
+ r2 = titles.grep /#{ayceb}/i
120
+ puts 'r2: ' + r2.inspect if @debug
121
+ n = titles.index(r2.first) + 1
122
+ r = browser.at_xpath('//div[select/@name="cmbEmployed"]')
123
+ r.focus
124
+ n.times { r.type(:down); sleep 0.4}
125
+ r.click
126
+ sleep 0.5
127
+
128
+ r = browser.at_xpath('//input[@name="Termscheckbox"]')
129
+ r.focus.click
130
+
131
+ r = browser.at_xpath('//button[@type="submit"]')
132
+ r.focus.click
133
+
134
+ #r.focus.type(:enter)
135
+ sleep 2
136
+ browser.save_cookies(cookie_filepath)
137
+ puts 'cookies saved to ' + cookie_filepath
138
+
139
+
140
+ end
141
+
142
+ end
143
+
144
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jofh22
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjIwNTI5MDk0NjM5WhcN
15
+ MjMwNTI5MDk0NjM5WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDOCxEO
17
+ us/eoqaF2gMPNSQsrCfM/YVNFhewKUUnmVizDkglYuGeHaVqgdXAbJ73Bqeo9RM3
18
+ /7eYNXTpQ54PFD+tmLf74r0Jm6/oi+JOCKUpllk5obeTn0X35kHlxlbZJqc6BXho
19
+ xRtlveen8zZdIZU6EbH3E7f1YMSPoQ96hLTUFen1sH2oo3HViEECC0SQTLOQTCnj
20
+ pIPyPRpWZduwx+UfJX4f0fDJz2ecHfnEKfero2Vu6Nd76wGNiSjknIebOhbNGEJg
21
+ YppmRRvHiICcSQncQ+jxrrhhtdFWjouFI3nVqGb4w7BBG9TEN/Rl0QKD4B02+hiX
22
+ 6nuFY80nOysG7eBZrgaUCs5c2fPTMTq8S3cNAClPVXGmw9kABtWsJDpe+QsrGLkx
23
+ SFOST4lLa1tqZXyvVpuYaT99eAjMXGNEMKt16Gy2A+IeWdggc4HDjETUzQTNP8XQ
24
+ HIjOEMOtOEo1/87zJq5OaF10tydpLQhwGCdVPpoLuQ0H1C1G7MxfG30yQbECAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUgekvotAl
26
+ UUmCf95kiJtMt9QeUIgwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEApE0bZSA9ovCoZiWQB7Psrhm0BlZ1ixuVxQXZZog6
29
+ ysHeQxkM7LvS1LKzF/mlkDmS1ZNI9WtjBIMXikVov9XnpzotwCzqoh47dxILspfJ
30
+ z9sivbgVtg4rYJhfs8Gqah6xL0Zid2eDLvl7iDDQVl4JQzSZXCaQAjbVYGRyCTTO
31
+ Cmuen42zvPXqc4M+poFY2cZCKnmbVC9voYKf7Pm+wWJ9w7/uk6ZE1yKh9QYiXjh0
32
+ EjhFZmqTGFwEfcT8quv9h32KqKbM3J1kX38zmN13PMgRqldPP5xgfawskWxcnCGs
33
+ 6EgRYIhn7Au55QpOL2nDXS4zgV/KNukpNEY197vu4n22KAEJXVJgS1Gs+dKFL20g
34
+ VGCkcvSO/tN/w7e9PmlP8Ci/kQor4IFmuc37+OiVnvgE6SjWkkHPxTyNmqaFn6m4
35
+ cf1DJMYHlnirwc8n9E70PSbNohM3s47lbjLfbQRTb18TFrHi4OHXv7M9xaYxVQhQ
36
+ /FCeM970TfCe+6ZwjFwlykWw
37
+ -----END CERTIFICATE-----
38
+ date: 2022-05-29 00:00:00.000000000 Z
39
+ dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: ferrumwizard
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.3'
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.3.3
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.3'
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.3.3
60
+ - !ruby/object:Gem::Dependency
61
+ name: nokorexi
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '0.7'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.7.0
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '0.7'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.7.0
80
+ description:
81
+ email: digital.robertson@gmail.com
82
+ executables: []
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - lib/jofh22.rb
87
+ homepage: https://github.com/jrobertson/jofh22
88
+ licenses:
89
+ - MIT
90
+ metadata: {}
91
+ post_install_message:
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubygems_version: 3.2.22
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Jobs Online form helper 2022 (Experimental)
110
+ test_files: []
metadata.gz.sig ADDED
Binary file