et_ccd_client 0.3.1

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.
@@ -0,0 +1,40 @@
1
+ require "addressable/template"
2
+ require "addressable/uri"
3
+ require 'et_ccd_client/config'
4
+ module EtCcdClient
5
+ class UiIdamClient
6
+ include CommonRestClient
7
+ attr_reader :service_token, :user_token, :user_details
8
+
9
+ def initialize(config: ::EtCcdClient.config)
10
+ self.config = config
11
+ self.logger = config.logger
12
+ self.user_details = nil
13
+ end
14
+
15
+ def login(username: config.sidam_username, password: config.sidam_password)
16
+ logger.tagged('EtCcdClient::UiIdamClient') do
17
+ self.user_token = exchange_sidam_user_token(username, password)
18
+ self.user_details = get_user_details
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ attr_writer :user_token, :user_details
25
+ attr_accessor :config, :logger
26
+
27
+ def exchange_sidam_user_token(username, password)
28
+ url = "#{config.idam_base_url}/loginUser"
29
+ resp = post_request(url, {username: username, password: password}, extra_headers: { content_type: 'application/x-www-form-urlencoded', accept: 'application/json' }, log_subject: "IdamUI user token exchange")
30
+ token = resp['access_token']
31
+ token
32
+ end
33
+
34
+ def get_user_details
35
+ url = "#{config.idam_base_url}/details"
36
+ get_request(url, extra_headers: { 'Accept' => 'application/json', 'Authorization' => user_token }, log_subject: "UiIdam get user details")
37
+ end
38
+ end
39
+ end
40
+
@@ -0,0 +1,23 @@
1
+ require "singleton"
2
+ require "json"
3
+ require "rest-client"
4
+ module EtCcdClient
5
+ class UiRemoteConfig
6
+ include Singleton
7
+ attr_accessor :login_url, :logout_url, :api_url, :case_data_url, :document_management_url, :remote_document_management_url
8
+ attr_accessor :pagination_page_size, :postcode_lookup_url, :oauth2_token_endpoint_url, :oauth2_client_id
9
+
10
+ private :login_url=, :logout_url=, :api_url=, :case_data_url=, :document_management_url=, :remote_document_management_url=
11
+ private :pagination_page_size=, :postcode_lookup_url=, :oauth2_token_endpoint_url=, :oauth2_client_id=
12
+
13
+ private
14
+
15
+ def initialize
16
+ dynamic_config = JSON.parse(RestClient::Request.execute(method: :get, url: Config.instance.case_management_ui_config_url, verify_ssl: Config.instance.verify_ssl, proxy: Config.instance.proxy).body)
17
+ dynamic_config.each_pair do |key, value|
18
+ setter = :"#{key}="
19
+ send(setter, value) if respond_to?(setter, true)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,36 @@
1
+ module EtCcdClient
2
+ class UploadedFile
3
+ # The filename, *not* including the path, of the "uploaded" file
4
+ attr_reader :original_filename
5
+
6
+ # The content type of the "uploaded" file
7
+ attr_accessor :content_type
8
+
9
+ def initialize(path, content_type: "text/plain", binary: false, original_filename: File.basename(path))
10
+ raise "#{path} file does not exist" unless ::File.exist?(path)
11
+ @content_type = content_type
12
+ @original_filename = original_filename
13
+ @tempfile = Tempfile.new(encoding: Encoding::BINARY)
14
+ @tempfile.binmode if binary
15
+ FileUtils.copy_file(path, @tempfile.path)
16
+ end
17
+
18
+ def path
19
+ @tempfile.path
20
+ end
21
+
22
+ def to_s
23
+ inspect
24
+ end
25
+ alias_method :local_path, :path
26
+
27
+ def respond_to?(*args)
28
+ super or @tempfile.respond_to?(*args)
29
+ end
30
+
31
+ def method_missing(method_name, *args, &block) #:nodoc:
32
+ @tempfile.__send__(method_name, *args, &block)
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,3 @@
1
+ module EtCcdClient
2
+ VERSION = "0.3.1".freeze
3
+ end
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: et_ccd_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
5
+ platform: ruby
6
+ authors:
7
+ - Gary Taylor
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 2.0.2
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.2
47
+ - !ruby/object:Gem::Dependency
48
+ name: webmock
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.6'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.6'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rotp
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '6.0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '6.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: connection_pool
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.2'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 2.2.2
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '2.2'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 2.2.2
95
+ - !ruby/object:Gem::Dependency
96
+ name: bundler
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: '1.17'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: '1.17'
109
+ - !ruby/object:Gem::Dependency
110
+ name: rake
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '10.0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '10.0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: rspec
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '3.0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '3.0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: rubocop
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: 0.71.0
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: 0.71.0
151
+ - !ruby/object:Gem::Dependency
152
+ name: rubocop-rspec
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '1.33'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '1.33'
165
+ - !ruby/object:Gem::Dependency
166
+ name: rack
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '2.0'
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: 2.0.7
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '2.0'
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ version: 2.0.7
185
+ description: This client implements methods to call the relevant CCD endpoints for
186
+ the employment tribunals CCD system
187
+ email:
188
+ - gary.taylor@hmcts.net
189
+ executables: []
190
+ extensions: []
191
+ extra_rdoc_files: []
192
+ files:
193
+ - ".gitignore"
194
+ - ".rspec"
195
+ - ".rubocop.yml"
196
+ - ".rubocop_todo.yml"
197
+ - ".ruby-version"
198
+ - ".travis.yml"
199
+ - Gemfile
200
+ - Gemfile.lock
201
+ - LICENSE.txt
202
+ - README.md
203
+ - Rakefile
204
+ - bin/console
205
+ - bin/setup
206
+ - et_ccd_client.gemspec
207
+ - lib/et_ccd_client.rb
208
+ - lib/et_ccd_client/client.rb
209
+ - lib/et_ccd_client/common_rest_client.rb
210
+ - lib/et_ccd_client/common_rest_client_with_login.rb
211
+ - lib/et_ccd_client/config.rb
212
+ - lib/et_ccd_client/exceptions.rb
213
+ - lib/et_ccd_client/exceptions/base.rb
214
+ - lib/et_ccd_client/exceptions/forbidden.rb
215
+ - lib/et_ccd_client/exceptions/gateway_timeout.rb
216
+ - lib/et_ccd_client/exceptions/internal_server_error.rb
217
+ - lib/et_ccd_client/exceptions/not_found.rb
218
+ - lib/et_ccd_client/exceptions/unauthorized.rb
219
+ - lib/et_ccd_client/exceptions/unprocessable_entity.rb
220
+ - lib/et_ccd_client/idam_client.rb
221
+ - lib/et_ccd_client/null_logger.rb
222
+ - lib/et_ccd_client/tidam_client.rb
223
+ - lib/et_ccd_client/ui_client.rb
224
+ - lib/et_ccd_client/ui_idam_client.rb
225
+ - lib/et_ccd_client/ui_remote_config.rb
226
+ - lib/et_ccd_client/uploaded_file.rb
227
+ - lib/et_ccd_client/version.rb
228
+ homepage: https://github.com/hmcts/et-ccd-client-ruby
229
+ licenses:
230
+ - MIT
231
+ metadata: {}
232
+ post_install_message:
233
+ rdoc_options: []
234
+ require_paths:
235
+ - lib
236
+ required_ruby_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ required_rubygems_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ requirements: []
247
+ rubygems_version: 3.0.3
248
+ signing_key:
249
+ specification_version: 4
250
+ summary: A client to communicate with the employment tribunals CCD system
251
+ test_files: []