arbetsformedlingen 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,6 +13,7 @@ require 'arbetsformedlingen/api/matchning_client'
13
13
  require 'arbetsformedlingen/api/ledigtarbete_client'
14
14
 
15
15
  module Arbetsformedlingen
16
+ # API namespace
16
17
  module API
17
18
  # Main API client
18
19
  class Client
@@ -37,7 +38,7 @@ module Arbetsformedlingen
37
38
 
38
39
  # Post ad to API (ad => annons)
39
40
  # @return [Values::CreateAdPage] the result.
40
- # @param [Arbetsformedlingen::Packet] Packet object.
41
+ # @param [Arbetsformedlingen::Packet] packet
41
42
  # @example Post ad
42
43
  # client.ad(packet)
43
44
  def create_ad(packet)
@@ -16,7 +16,7 @@ module Arbetsformedlingen
16
16
  }.freeze
17
17
 
18
18
  # Post ad to API
19
- # @param [Arbetsformedlingen::Packet, #to_xml] the data to be sent
19
+ # @param [Arbetsformedlingen::Packet, #to_xml] packet the data to be sent
20
20
  # @return [Values::CreateAdPage] the API result
21
21
  def create_ad(packet)
22
22
  xml = packet.to_xml
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arbetsformedlingen
4
+ module API
5
+ # API client for ontology
6
+ # @see http://ontologi.arbetsformedlingen.se/ontology/v1/?url=swagger.json
7
+ class OntologyClient
8
+ attr_reader :request
9
+
10
+ # Base API URL
11
+ BASE_URL = 'http://ontologi.arbetsformedlingen.se/ontology/v1'
12
+
13
+ # Valid types
14
+ VALID_TYPES = %w[skill occupation trait].freeze
15
+
16
+ # Initialize client
17
+ def initialize(request: Request.new(base_url: BASE_URL))
18
+ @request = request
19
+ end
20
+
21
+ # GET /concept - Fetches a list of concepts
22
+ # @return [Response]
23
+ def concepts(filter: nil, offset: nil, limit: nil, type: nil)
24
+ query = to_params(filter: filter, offset: offset, limit: limit, type: type)
25
+
26
+ request.get('/concept', query: query)
27
+ end
28
+
29
+ # GET /concept/:uuid} - Fetch a concept given an uuid
30
+ # @return [Response]
31
+ def concept(uuid)
32
+ request.get("/concept/#{uuid}")
33
+ end
34
+
35
+ # GET /concept/related - Fetches related concepts for any number of
36
+ # concepts and/or uuids
37
+ # @return [Response]
38
+ def concepts_relations(uuids: [], names: [], limit: nil, type: nil)
39
+ concepts = (
40
+ names.map { |name| ['concept', name] } +
41
+ uuids.map { |name| ['uui', name] }
42
+ ).reject(&:empty?)
43
+
44
+ query = to_params(limit: limit, type: type).to_a.concat(concepts)
45
+
46
+ request.get('/concept/related', query: query)
47
+ end
48
+
49
+ # GET /concept/:uuid/terms - Fetches the terms for the given uuid
50
+ # @return [Response]
51
+ def concept_terms(concept_uuid, offset: nil, limit: nil)
52
+ query = to_params(offset: offset, limit: limit)
53
+
54
+ request.get("/concept/#{concept_uuid}/terms", query: query)
55
+ end
56
+
57
+ # GET /concept/:uuid/related/:type - Fetches related concepts for the
58
+ # given uuid, returning only concepts of the given type
59
+ # @return [Response]
60
+ def concept_relations(concept_uuid, type, offset: nil, limit: nil)
61
+ query = to_params(offset: offset, limit: limit)
62
+
63
+ request.get("/concept/#{concept_uuid}/related/#{type}", query: query)
64
+ end
65
+
66
+ # GET /terms - Fetches a list of terms
67
+ # @return [Response]
68
+ def terms(filter: nil, offset: nil, limit: nil, type: nil)
69
+ query = to_params(filter: filter, offset: offset, limit: limit, type: type)
70
+
71
+ request.get('/terms', query: query)
72
+ end
73
+
74
+ # GET /:type/:description - Redirects to the concepts UUID
75
+ # @return [Response]
76
+ def type_description(type, description)
77
+ request.get("/#{type}/#{description}")
78
+ end
79
+
80
+ # GET /:type/:description/related/:totype - Redirects to the concepts
81
+ # UUID related concepts
82
+ # @return [Response]
83
+ def type_description_relations(type, description, relation_type)
84
+ request.get("/#{type}/#{description}/related/#{relation_type}")
85
+ end
86
+
87
+ # POST /text-to-structure - Analyzes a text and returns the concepts found
88
+ # @return [Response]
89
+ def text_to_structure(text)
90
+ request.post('/text-to-structure', data: { text: text })
91
+ end
92
+
93
+ private
94
+
95
+ def to_params(filter: nil, offset: nil, limit: nil, type: nil)
96
+ if type && !VALID_TYPES.include?(type)
97
+ raise(ArgumentError, "invalid type #{type}, valid types are #{VALID_TYPES.join(', ')}") # rubocop:disable Metrics/LineLength
98
+ end
99
+
100
+ {
101
+ filter: filter,
102
+ offset: offset,
103
+ limit: limit,
104
+ type: type,
105
+ }.delete_if { |_k, v| v.nil? }
106
+ end
107
+ end
108
+ end
109
+ end
@@ -17,22 +17,52 @@ module Arbetsformedlingen
17
17
  @locale = locale
18
18
  end
19
19
 
20
- # Perform GEt request
20
+ # Perform GET request
21
21
  # @param [String] url to be fetched
22
- # @param [Hash] query params
22
+ # @param [Hash, Array<Array<#to_s>>] query params
23
23
  # @return [Response] response object
24
24
  def get(url, query: {})
25
- uri = URI("#{base_url}#{url}?#{URI.encode_www_form(query.to_a)}")
25
+ uri = to_uri(url, query: query)
26
26
 
27
27
  http = Net::HTTP.new(uri.host, uri.port)
28
-
29
28
  request = Net::HTTP::Get.new(uri)
30
29
  request['Content-Type'] = 'application/json'
31
30
  request['Accept-Language'] = locale
32
31
 
33
32
  response = http.request(request)
33
+ # AFs APIs somtimes redirects with HTTP 303
34
+ if response.code == '303' && response.header['Location']
35
+ return get(response.header['Location'], query: query)
36
+ end
37
+
38
+ Response.new(response, uri)
39
+ end
40
+
41
+ # Perform POST request
42
+ # @param [String] url to be fetched
43
+ # @param [Hash] data params
44
+ # @return [Response] response object
45
+ def post(url, data: {})
46
+ uri = to_uri(url)
47
+
48
+ http = Net::HTTP.new(uri.host, uri.port)
49
+ request = Net::HTTP::Post.new(uri)
50
+ request['Content-Type'] = 'application/json'
51
+ request['Accept-Language'] = locale
52
+ request['cache-control'] = 'no-cache'
53
+ request.body = JSON.dump(data)
54
+
55
+ response = http.request(request)
56
+
57
+ Response.new(response, uri)
58
+ end
59
+
60
+ private
61
+
62
+ def to_uri(url, query: {})
63
+ full_url = URI(url.to_s).absolute ? url : "#{base_url}#{url}"
34
64
 
35
- Response.new(response)
65
+ URI("#{full_url}?#{URI.encode_www_form(query.to_a)}")
36
66
  end
37
67
  end
38
68
  end
@@ -9,10 +9,13 @@ module Arbetsformedlingen
9
9
  module API
10
10
  # API response object
11
11
  class Response
12
+ attr_reader :uri
13
+
12
14
  # Initialize response
13
- def initialize(response)
15
+ def initialize(response, uri = nil)
14
16
  @response = response
15
17
  @json = nil
18
+ @uri = uri
16
19
  end
17
20
 
18
21
  # True if response is 200
@@ -16,6 +16,7 @@ module Arbetsformedlingen
16
16
 
17
17
  # private
18
18
 
19
+ # :nodoc:
19
20
  def self.build_page(response)
20
21
  response_data = response.json
21
22
  data = response_data.fetch('platsannons')
@@ -42,10 +43,12 @@ module Arbetsformedlingen
42
43
  )
43
44
  end
44
45
 
46
+ # :nodoc:
45
47
  def self.build_empty(response)
46
48
  Values::Ad.new(response: response)
47
49
  end
48
50
 
51
+ # :nodoc:
49
52
  def self.build_terms(data)
50
53
  Values::Terms.new(
51
54
  duration: data.fetch('varaktighet', nil),
@@ -56,6 +59,7 @@ module Arbetsformedlingen
56
59
  )
57
60
  end
58
61
 
62
+ # :nodoc:
59
63
  def self.build_application(data)
60
64
  Values::Application.new(
61
65
  reference: data['referens'],
@@ -66,6 +70,7 @@ module Arbetsformedlingen
66
70
  )
67
71
  end
68
72
 
73
+ # :nodoc:
69
74
  def self.build_workplace(data)
70
75
  Values::Workplace.new(
71
76
  name: data.fetch('arbetsplatsnamn'),
@@ -82,6 +87,7 @@ module Arbetsformedlingen
82
87
  )
83
88
  end
84
89
 
90
+ # :nodoc:
85
91
  def self.build_postal(data)
86
92
  Values::Postal.new(
87
93
  code: data.fetch('postnummer', nil),
@@ -91,6 +97,7 @@ module Arbetsformedlingen
91
97
  )
92
98
  end
93
99
 
100
+ # :nodoc:
94
101
  def self.build_workplace_contacts(data)
95
102
  Values::Contact.new(
96
103
  name: data['namn'],
@@ -99,6 +106,7 @@ module Arbetsformedlingen
99
106
  )
100
107
  end
101
108
 
109
+ # :nodoc:
102
110
  def self.build_requirements(data)
103
111
  Values::Requirements.new(
104
112
  own_car: data.fetch('egenbil')
@@ -30,7 +30,7 @@ module Arbetsformedlingen
30
30
  end
31
31
 
32
32
  # Performs a POST request
33
- # @param [String] the post body
33
+ # @param [String] body
34
34
  # @return [Response] the response
35
35
  def post(body)
36
36
  http = Net::HTTP.new(uri.host, uri.port)
@@ -43,7 +43,7 @@ module Arbetsformedlingen
43
43
 
44
44
  response = http.request(request)
45
45
 
46
- Response.new(response)
46
+ Response.new(response, uri)
47
47
  end
48
48
  end
49
49
  end
@@ -0,0 +1,797 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'arbetsformedlingen/api/base_soap_client'
4
+
5
+ module Arbetsformedlingen
6
+ module API
7
+ # WsOccupation API client
8
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx
9
+ class TaxonomyClient < BaseSOAPClient
10
+ # Service URL
11
+ SERVICE_URL = 'http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx'
12
+
13
+ # Namespace
14
+ NAMESPACE = 'urn:ams.se:Taxonomy'
15
+
16
+ # Initialize client
17
+ def initialize
18
+ super(SERVICE_URL, NAMESPACE)
19
+ end
20
+
21
+ # Returns occupation names
22
+ # @param language_id [String, Integer]
23
+ # @return [Response] the response
24
+ # @see Response
25
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllOccupationNames
26
+ def occupation_names(language_id:)
27
+ client_request('GetAllOccupationNames', args: { languageId: language_id })
28
+ end
29
+
30
+ # Returns AID occupation names
31
+ # @return [Response] the response
32
+ # @see Response
33
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllAIDOccupationNames
34
+ def aid_occupation_names
35
+ client_request('GetAllAIDOccupationNames')
36
+ end
37
+
38
+ # Returns continents
39
+ # @param language_id [String, Integer]
40
+ # @return [Response] the response
41
+ # @see Response
42
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllContinents
43
+ def continents(language_id:)
44
+ client_request('GetAllContinents', args: { languageId: language_id })
45
+ end
46
+
47
+ # Returns countries
48
+ # @param language_id [String, Integer]
49
+ # @return [Response] the response
50
+ # @see Response
51
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllCountries
52
+ def countries(language_id:)
53
+ client_request('GetAllCountries', args: { languageId: language_id })
54
+ end
55
+
56
+ # Returns drivers_licenses
57
+ # @param language_id [String, Integer]
58
+ # @return [Response] the response
59
+ # @see Response
60
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllDrivingLicences
61
+ def drivers_licenses(language_id:)
62
+ client_request('GetAllDrivingLicences', args: { languageId: language_id })
63
+ end
64
+
65
+ # Returns eu regions
66
+ # @param language_id [String, Integer]
67
+ # @return [Response] the response
68
+ # @see Response
69
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllEURegions
70
+ def eu_regions(language_id:)
71
+ client_request('GetAllEURegions', args: { languageId: language_id })
72
+ end
73
+
74
+ # Returns employment durations
75
+ # @param language_id [String, Integer]
76
+ # @return [Response] the response
77
+ # @see Response
78
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllEmploymentDurations
79
+ def employment_durations(language_id:)
80
+ client_request('GetAllEmploymentDurations', args: { languageId: language_id })
81
+ end
82
+
83
+ # Returns employment durations
84
+ # @param language_id [String, Integer]
85
+ # @return [Response] the response
86
+ # @see Response
87
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllEmploymentTypes
88
+ def employment_types(language_id:)
89
+ client_request('GetAllEmploymentTypes', args: { languageId: language_id })
90
+ end
91
+
92
+ # Returns experiences last
93
+ # @param language_id [String, Integer]
94
+ # @return [Response] the response
95
+ # @see Response
96
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllExperiencesLast
97
+ def experiences_last(language_id:)
98
+ client_request('GetAllExperiencesLast', args: { languageId: language_id })
99
+ end
100
+
101
+ # Returns experiences year
102
+ # @param language_id [String, Integer]
103
+ # @return [Response] the response
104
+ # @see Response
105
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllExperiencesYear
106
+ def experiences_year(language_id:)
107
+ client_request('GetAllExperiencesYear', args: { languageId: language_id })
108
+ end
109
+
110
+ # Returns AIDO occupation names
111
+ # @param label [String]
112
+ # @return [Response] the response
113
+ # @see Response
114
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAIDOccupationNameByLabel
115
+ def aido_occupation_names(label:)
116
+ client_request('GetAIDOccupationNameByLabel', args: { label: label })
117
+ end
118
+
119
+ # Returns internal job situations
120
+ # @return [Response] the response
121
+ # @see Response
122
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllInternalJobSituations
123
+ def internal_job_situations
124
+ client_request('GetAllInternalJobSituations')
125
+ end
126
+
127
+ # Returns job situations
128
+ # @param language_id [String, Integer]
129
+ # @return [Response] the response
130
+ # @see Response
131
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllJobSituations
132
+ def job_situations(language_id:)
133
+ client_request('GetAllJobSituations', args: { languageId: language_id })
134
+ end
135
+
136
+ # Returns language_levels
137
+ # @param language_id [String, Integer]
138
+ # @return [Response] the response
139
+ # @see Response
140
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLanguageLevels
141
+ def language_levels(language_id:)
142
+ client_request('GetAllLanguageLevels', args: { languageId: language_id })
143
+ end
144
+
145
+ # Returns languages
146
+ # @param language_id [String, Integer]
147
+ # @return [Response] the response
148
+ # @see Response
149
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLanguages
150
+ def languages(language_id:)
151
+ client_request('GetAllLanguages', args: { languageId: language_id })
152
+ end
153
+
154
+ # Returns languages with ISO
155
+ # @param language_id [String, Integer]
156
+ # @return [Response] the response
157
+ # @see Response
158
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLanguagesWithISO
159
+ def languages_with_iso(language_id:)
160
+ client_request('GetAllLanguagesWithISO', args: { languageId: language_id })
161
+ end
162
+
163
+ # Returns locale fields
164
+ # @param language_id [String, Integer]
165
+ # @return [Response] the response
166
+ # @see Response
167
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLanguagesWithISO
168
+ def locale_fields(language_id:)
169
+ client_request('GetAllLocaleFields', args: { languageId: language_id })
170
+ end
171
+
172
+ # Returns locale group skills
173
+ # @return [Response] the response
174
+ # @see Response
175
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLocaleGroupSkills
176
+ def locale_group_skills
177
+ client_request('GetAllLocaleGroupSkills')
178
+ end
179
+
180
+ # Returns locale groups
181
+ # @param language_id [String, Integer]
182
+ # @return [Response] the response
183
+ # @see Response
184
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLocaleGroups
185
+ def locale_groups(language_id:)
186
+ client_request('GetAllLocaleGroups', args: { languageId: language_id })
187
+ end
188
+
189
+ # Returns locale groups
190
+ # @param language_id [String, Integer]
191
+ # @return [Response] the response
192
+ # @see Response
193
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllLocaleLevel3
194
+ def locale_level3(language_id:)
195
+ client_request('GetAllLocaleLevel3', args: { languageId: language_id })
196
+ end
197
+
198
+ # Returns municipalities
199
+ # @param language_id [String, Integer]
200
+ # @return [Response] the response
201
+ # @see Response
202
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllMunicipalities
203
+ def municipalities(language_id:)
204
+ client_request('GetAllMunicipalities', args: { languageId: language_id })
205
+ end
206
+
207
+ # Returns municipality homepages
208
+ # @return [Response] the response
209
+ # @see Response
210
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllMunicipalityHomePages
211
+ def municipality_homepages
212
+ client_request('GetAllMunicipalityHomePages')
213
+ end
214
+
215
+ # Returns occupation name synonyms
216
+ # @param language_id [String, Integer]
217
+ # @return [Response] the response
218
+ # @see Response
219
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllOccupationNameSynonyms
220
+ def occupation_name_synonyms(language_id:)
221
+ client_request('GetAllOccupationNameSynonyms', args: { languageId: language_id })
222
+ end
223
+
224
+ # Returns occupation name versions
225
+ # @param language_id [String, Integer]
226
+ # @return [Response] the response
227
+ # @see Response
228
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllOccupationNameSynonyms
229
+ def occupation_name_versions(language_id:)
230
+ client_request('GetAllOccupationNamesVersion', args: { languageId: language_id })
231
+ end
232
+
233
+ # Returns post codes
234
+ # @param language_id [String, Integer]
235
+ # @return [Response] the response
236
+ # @see Response
237
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllPostCodes
238
+ def post_codes(language_id:)
239
+ client_request('GetAllPostCodes', args: { languageId: language_id })
240
+ end
241
+
242
+ # Returns post localities
243
+ # @param language_id [String, Integer]
244
+ # @return [Response] the response
245
+ # @see Response
246
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllPostLocalities
247
+ def post_localities(language_id:)
248
+ client_request('GetAllPostLocalities', args: { languageId: language_id })
249
+ end
250
+
251
+ # Returns SNI level 1
252
+ # @param language_id [String, Integer]
253
+ # @return [Response] the response
254
+ # @see Response
255
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSNILevel1
256
+ def sni_level1(language_id:)
257
+ client_request('GetAllSNILevel1', args: { languageId: language_id })
258
+ end
259
+
260
+ # Returns SNI level 2
261
+ # @param language_id [String, Integer]
262
+ # @return [Response] the response
263
+ # @see Response
264
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSNILevel2
265
+ def sni_level2(language_id:)
266
+ client_request('GetAllSNILevel2', args: { languageId: language_id })
267
+ end
268
+
269
+ # Returns SUN field 1
270
+ # @param language_id [String, Integer]
271
+ # @return [Response] the response
272
+ # @see Response
273
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNField1
274
+ def sun_field1(language_id:)
275
+ client_request('GetAllSUNField1', args: { languageId: language_id })
276
+ end
277
+
278
+ # Returns SUN field 2
279
+ # @param language_id [String, Integer]
280
+ # @return [Response] the response
281
+ # @see Response
282
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNField2
283
+ def sun_field2(language_id:)
284
+ client_request('GetAllSUNField2', args: { languageId: language_id })
285
+ end
286
+
287
+ # Returns SUN field 3
288
+ # @param language_id [String, Integer]
289
+ # @return [Response] the response
290
+ # @see Response
291
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNField3
292
+ def sun_field3(language_id:)
293
+ client_request('GetAllSUNField3', args: { languageId: language_id })
294
+ end
295
+
296
+ # Returns SUN level 1
297
+ # @param language_id [String, Integer]
298
+ # @return [Response] the response
299
+ # @see Response
300
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNLevel1
301
+ def sun_level1(language_id:)
302
+ client_request('GetAllSUNLevel1', args: { languageId: language_id })
303
+ end
304
+
305
+ # Returns SUN level 2
306
+ # @param language_id [String, Integer]
307
+ # @return [Response] the response
308
+ # @see Response
309
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNLevel2
310
+ def sun_level2(language_id:)
311
+ client_request('GetAllSUNLevel2', args: { languageId: language_id })
312
+ end
313
+
314
+ # Returns SUN level 3
315
+ # @param language_id [String, Integer]
316
+ # @return [Response] the response
317
+ # @see Response
318
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSUNLevel3
319
+ def sun_level3(language_id:)
320
+ client_request('GetAllSUNLevel3', args: { languageId: language_id })
321
+ end
322
+
323
+ # Returns skill headlines
324
+ # @param language_id [String, Integer]
325
+ # @return [Response] the response
326
+ # @see Response
327
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSkillHeadlines
328
+ def skill_headlines(language_id:)
329
+ client_request('GetAllSkillHeadlines', args: { languageId: language_id })
330
+ end
331
+
332
+ # Returns skill main headlines
333
+ # @param language_id [String, Integer]
334
+ # @return [Response] the response
335
+ # @see Response
336
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSkillMainHeadlines
337
+ def skill_main_headlines(language_id:)
338
+ client_request('GetAllSkillMainHeadlines', args: { languageId: language_id })
339
+ end
340
+
341
+ # Returns skills
342
+ # @param language_id [String, Integer]
343
+ # @return [Response] the response
344
+ # @see Response
345
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSkills
346
+ def skills(language_id:)
347
+ client_request('GetAllSkills', args: { languageId: language_id })
348
+ end
349
+
350
+ # Returns skill versions
351
+ # @param language_id [String, Integer]
352
+ # @return [Response] the response
353
+ # @see Response
354
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllSkillsVersion
355
+ def skill_versions(language_id:)
356
+ client_request('GetAllSkillsVersion', args: { languageId: language_id })
357
+ end
358
+
359
+ # Returns unemployment benefit societies
360
+ # @param language_id [String, Integer]
361
+ # @return [Response] the response
362
+ # @see Response
363
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllUnemploymentBenefitSocieties
364
+ def unemployment_benefit_societies(language_id:)
365
+ client_request('GetAllUnemploymentBenefitSocieties', args: { languageId: language_id })
366
+ end
367
+
368
+ # Returns unemployment benefit societies
369
+ # @param language_id [String, Integer]
370
+ # @return [Response] the response
371
+ # @see Response
372
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllWageTypes
373
+ def wage_types(language_id:)
374
+ client_request('GetAllWageTypes', args: { languageId: language_id })
375
+ end
376
+
377
+ # Returns work time extents
378
+ # @return [Response] the response
379
+ # @param language_id [String, Integer]
380
+ # @see Response
381
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetAllWorkTimeExtents
382
+ def work_time_extents(language_id:)
383
+ client_request('GetAllWorkTimeExtents', args: { languageId: language_id })
384
+ end
385
+
386
+ # Returns EU regions by country
387
+ # @return [Response] the response
388
+ # @param language_id [String, Integer]
389
+ # @param country_id [String, Integer]
390
+ # @see Response
391
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetEURegionsByCountryID
392
+ def eu_regions_by_country(language_id:, country_id:)
393
+ args = { countryId: country_id, languageId: language_id }
394
+ client_request('GetEURegionsByCountryID', args: args)
395
+ end
396
+
397
+ # Returns ISCO by local code
398
+ # @param locale_code [String, Integer]
399
+ # @return [Response] the response
400
+ # @see Response
401
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetISCOByLocaleCode
402
+ def isco_by_locale_code(locale_code:)
403
+ client_request('GetISCOByLocaleCode', args: { localeCode: locale_code })
404
+ end
405
+
406
+ # Returns ISCO by ISO2 code
407
+ # @param iso2_code [String]
408
+ # @return [Response] the response
409
+ # @see Response
410
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLanguageIDByISO2Code
411
+ def isco_by_iso2_code(iso2_code:)
412
+ client_request('GetLanguageIDByISO2Code', args: { ISO2Code: iso2_code })
413
+ end
414
+
415
+ # Returns locale code by ISCO
416
+ # @return [Response] the response
417
+ # @see Response
418
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleCodeByISCO
419
+ def locale_code_by_isco(isco:)
420
+ client_request('GetLocaleCodeByISCO', args: { ISCO: isco })
421
+ end
422
+
423
+ # Returns locale fields by locale code
424
+ # @param language_id [String, Integer]
425
+ # @param locale_code [String, Integer]
426
+ # @return [Response] the response
427
+ # @see Response
428
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleFieldsByLocaleCode
429
+ def locale_fields_by_locale_code(language_id:, locale_code:)
430
+ args = { languageId: language_id, localeCode: locale_code }
431
+ client_request('GetLocaleFieldsByLocaleCode', args: args)
432
+ end
433
+
434
+ # Returns locale fields by locale fields
435
+ # @param language_id [String, Integer]
436
+ # @param locale_field_ids [Array<String>, Array<Integer>]
437
+ # @return [Response] the response
438
+ # @see Response
439
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleFieldsByLocaleFieldIds
440
+ def locale_fields_by_locale_field_ids(language_id:, locale_field_ids:)
441
+ args = {
442
+ languageId: language_id,
443
+ localeFieldIds: locale_field_ids.map { |id| [:int, id] },
444
+ }
445
+ client_request('GetLocaleFieldsByLocaleFieldIds', args: args)
446
+ end
447
+
448
+ # Returns locale fields by text
449
+ # @param language_id [String, Integer]
450
+ # @param text [String]
451
+ # @param exact_match [true, false]
452
+ # @return [Response] the response
453
+ # @see Response
454
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleFieldsByText
455
+ def locale_fields_by_text(language_id:, text:, exact_match: false)
456
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
457
+ client_request('GetLocaleFieldsByText', args: args)
458
+ end
459
+
460
+ # Returns locale group by occupation name id
461
+ # @param language_id [String, Integer]
462
+ # @param occupation_name_id [String, Integer]
463
+ # @return [Response] the response
464
+ # @see Response
465
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleGroupByOccupationNameId
466
+ def locale_group_by_occupation_name_id(language_id:, occupation_name_id:)
467
+ args = { languageId: language_id, occupationNameId: occupation_name_id }
468
+ client_request('GetLocaleGroupByOccupationNameId', args: args)
469
+ end
470
+
471
+ # Returns locale group skills by locale code
472
+ # @param locale_code [String, Integer]
473
+ # @return [Response] the response
474
+ # @see Response
475
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleGroupSkillsByLocaleCode
476
+ def locale_group_skills_by_locale_code(locale_code:)
477
+ args = { localeCode: locale_code }
478
+ client_request('GetLocaleGroupSkillsByLocaleCode', args: args)
479
+ end
480
+
481
+ # Returns locale group skills by locale code
482
+ # @param language_id [String, Integer]
483
+ # @param locale_codes [Array<String>, Array<Integer>]
484
+ # @return [Response] the response
485
+ # @see Response
486
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleGroupsByLocaleCodes
487
+ def locale_groups_by_locale_codes(language_id:, locale_codes:)
488
+ args = {
489
+ languageId: language_id,
490
+ localeCodes: locale_codes.map { |code| [:string, code] },
491
+ }
492
+ client_request('GetLocaleGroupsByLocaleCodes', args: args)
493
+ end
494
+
495
+ # Returns locale groups by locale field id
496
+ # @param language_id [String, Integer]
497
+ # @param locale_field_id [String, Integer]
498
+ # @return [Response] the response
499
+ # @see Response
500
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleGroupsByLocaleFieldId
501
+ def locale_groups_by_locale_field_id(language_id:, locale_field_id:)
502
+ args = { languageId: language_id, localeFieldId: locale_field_id }
503
+ client_request('GetLocaleGroupsByLocaleFieldId', args: args)
504
+ end
505
+
506
+ # Returns locale groups by text
507
+ # @param language_id [String, Integer]
508
+ # @param text [String]
509
+ # @param exact_match [true, false]
510
+ # @return [Response] the response
511
+ # @see Response
512
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetLocaleGroupsByText
513
+ def locale_groups_by_text(language_id:, text:, exact_match: false)
514
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
515
+ client_request('GetLocaleGroupsByText', args: args)
516
+ end
517
+
518
+ # Returns occupation names for jobs with culture
519
+ # @param language_id [String, Integer]
520
+ # @return [Response] the response
521
+ # @see Response
522
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesArt
523
+ def occupation_names_art(language_id:)
524
+ client_request('GetOccupationNamesArt', args: { languageId: language_id })
525
+ end
526
+
527
+ # Returns occupation names by locale code
528
+ # @param language_id [String, Integer]
529
+ # @param locale_code [String, Integer]
530
+ # @return [Response] the response
531
+ # @see Response
532
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesByLocaleCode
533
+ def occupation_names_by_locale_code(language_id:, locale_code:)
534
+ args = { languageId: language_id, localeCode: locale_code }
535
+ client_request('GetOccupationNamesByLocaleCode', args: args)
536
+ end
537
+
538
+ # Returns occupation names by occupation name ids
539
+ # @param language_id [String, Integer]
540
+ # @param occupation_name_ids [Array<String>, Array<Integer>]
541
+ # @return [Response] the response
542
+ # @see Response
543
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesByOccupationNameIds
544
+ def occupation_names_by_occupation_name_ids(language_id:, occupation_name_ids:)
545
+ args = {
546
+ languageId: language_id,
547
+ occupationNameIds: occupation_name_ids.map { |id| [:int, id] },
548
+ }
549
+ client_request('GetOccupationNamesByOccupationNameIds', args: args)
550
+ end
551
+
552
+ # Returns occupation names versions by occupation name ids
553
+ # @param language_id [String, Integer]
554
+ # @param occupation_name_ids [Array<String>, Array<Integer>]
555
+ # @return [Response] the response
556
+ # @see Response
557
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesByOccupationNameIdsVersion
558
+ def occupation_names_versions_by_occupation_name_ids(language_id:, occupation_name_ids:)
559
+ args = {
560
+ languageId: language_id,
561
+ occupationNameIds: occupation_name_ids.map { |id| [:int, id] },
562
+ }
563
+ client_request('GetOccupationNamesByOccupationNameIdsVersion', args: args)
564
+ end
565
+
566
+ # Returns occupation names by text
567
+ # @param language_id [String, Integer]
568
+ # @param text [String]
569
+ # @param exact_match [true, false]
570
+ # @return [Response] the response
571
+ # @see Response
572
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesByText
573
+ def occupation_names_by_text(language_id:, text:, exact_match: false)
574
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
575
+ client_request('GetOccupationNamesByText', args: args)
576
+ end
577
+
578
+ # Returns occupation names within construction
579
+ # @param language_id [String, Integer]
580
+ # @return [Response] the response
581
+ # @see Response
582
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesConstruction
583
+ def occupation_names_construction(language_id:)
584
+ args = { languageId: language_id }
585
+ client_request('GetOccupationNamesConstruction', args: args)
586
+ end
587
+
588
+ # Returns occupation names within navigation
589
+ # @param language_id [String, Integer]
590
+ # @return [Response] the response
591
+ # @see Response
592
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetOccupationNamesNavigation
593
+ def occupation_names_navigation(language_id:)
594
+ args = { languageId: language_id }
595
+ client_request('GetOccupationNamesNavigation', args: args)
596
+ end
597
+
598
+ # Returns post codes by municipality
599
+ # @param language_id [String, Integer]
600
+ # @param municipality_id [String, Integer]
601
+ # @return [Response] the response
602
+ # @see Response
603
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetPostCodesByNationalNUTSLAU2Code
604
+ def post_codes_by_municipality(language_id:, municipality_id:)
605
+ args = { languageId: language_id, NUTSCode: municipality_id }
606
+ client_request('GetPostCodesByNationalNUTSLAU2Code', args: args)
607
+ end
608
+
609
+ # Returns post codes by post code
610
+ # @param language_id [String, Integer]
611
+ # @param post_code [String, Integer]
612
+ # @return [Response] the response
613
+ # @see Response
614
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetPostCodesByPostCode
615
+ def post_codes_by_post_code(language_id:, post_code:)
616
+ args = { languageId: language_id, postCode: post_code }
617
+ client_request('GetPostCodesByPostCode', args: args)
618
+ end
619
+
620
+ # Returns post codes by post locality
621
+ # @param language_id [String, Integer]
622
+ # @param post_locality_id [String, Integer]
623
+ # @return [Response] the response
624
+ # @see Response
625
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetPostCodesByPostLocality
626
+ def post_codes_by_post_locality(language_id:, post_locality_id:)
627
+ args = { languageId: language_id, postLocalityId: post_locality_id }
628
+ client_request('GetPostCodesByPostLocality', args: args)
629
+ end
630
+
631
+ # Returns post codes by post locality
632
+ # @param language_id [String, Integer]
633
+ # @param sun_level1_id [String, Integer]
634
+ # @return [Response] the response
635
+ # @see Response
636
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSUNField3ByGuide
637
+ def sun_field3_by_guide(language_id:, sun_level1_id:)
638
+ args = { languageId: language_id, SUNLevel1ID: sun_level1_id }
639
+ client_request('GetSUNField3ByGuide', args: args)
640
+ end
641
+
642
+ # Returns SUN guide tree
643
+ # @param language_id [String, Integer]
644
+ # @return [Response] the response
645
+ # @see Response
646
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSUNGuideTree
647
+ def sun_guide_tree(language_id:)
648
+ client_request('GetSUNGuideTree', args: { languageId: language_id })
649
+ end
650
+
651
+ # Returns skill headlines by main headline
652
+ # @param language_id [String, Integer]
653
+ # @param skill_headline_ids [Array<String>, Array<Integer>]
654
+ # @return [Response] the response
655
+ # @see Response
656
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillHeadlinesBySkillHeadlineIds
657
+ def skill_headlines_by_headline_ids(language_id:, skill_headline_ids:)
658
+ args = {
659
+ languageId: language_id,
660
+ skillHeadlineIds: skill_headline_ids.map { |id| [:int, id] },
661
+ }
662
+ client_request('GetSkillHeadlinesBySkillHeadlineIds', args: args)
663
+ end
664
+
665
+ # Returns skill headlines by main headline
666
+ # @param language_id [String, Integer]
667
+ # @param skill_main_headline_id [String, Integer]
668
+ # @return [Response] the response
669
+ # @see Response
670
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillHeadlinesBySkillMainHeadlineId
671
+ def skill_headlines_by_main_headline(language_id:, skill_main_headline_id:)
672
+ args = { languageId: language_id, skillMainHeadlineId: skill_main_headline_id }
673
+ client_request('GetSkillHeadlinesBySkillMainHeadlineId', args: args)
674
+ end
675
+
676
+ # Returns skill headlines by text
677
+ # @param language_id [String, Integer]
678
+ # @param text [String]
679
+ # @param exact_match [true, false]
680
+ # @return [Response] the response
681
+ # @see Response
682
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillHeadlinesByText
683
+ def skill_headlines_by_text(language_id:, text:, exact_match: false)
684
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
685
+ client_request('GetSkillHeadlinesByText', args: args)
686
+ end
687
+
688
+ # Returns skill headlines by text
689
+ # @param language_id [String, Integer]
690
+ # @param skill_main_headline_ids [Array<String>, Array<Integer>]
691
+ # @return [Response] the response
692
+ # @see Response
693
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillMainHeadlinesBySkillMainHeadlineIds
694
+ def skill_headlines_by_skill_main_headlines_ids(language_id:, skill_main_headline_ids:)
695
+ args = {
696
+ languageId: language_id,
697
+ skillMainHeadlineIds: skill_main_headline_ids.map { |id| [:int, id] },
698
+ }
699
+ client_request('GetSkillMainHeadlinesBySkillMainHeadlineIds', args: args)
700
+ end
701
+
702
+ # Returns skill main headlines by text
703
+ # @param language_id [String, Integer]
704
+ # @param text [String]
705
+ # @param exact_match [true, false]
706
+ # @return [Response] the response
707
+ # @see Response
708
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillMainHeadlinesByText
709
+ def skill_main_headlines_by_text(language_id:, text:, exact_match: false)
710
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
711
+ client_request('GetSkillMainHeadlinesByText', args: args)
712
+ end
713
+
714
+ # Returns skills by locale code
715
+ # @param language_id [String, Integer]
716
+ # @param locale_code [String, Integer]
717
+ # @return [Response] the response
718
+ # @see Response
719
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsByLocaleCode
720
+ def skills_by_locale_code(language_id:, locale_code:)
721
+ # NOTE: Yes there is a typo, "localCode" instead of "localeCode", in the API
722
+ args = { languageId: language_id, localCode: locale_code }
723
+ client_request('GetSkillsByLocaleCode', args: args)
724
+ end
725
+
726
+ # Returns skills by main headline
727
+ # @param language_id [String, Integer]
728
+ # @param skill_headline_id [String, Integer]
729
+ # @return [Response] the response
730
+ # @see Response
731
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsBySkillHeadlineId
732
+ def skills_by_headline(language_id:, skill_headline_id:)
733
+ args = { languageId: language_id, skillHeadlineId: skill_headline_id }
734
+ client_request('GetSkillsBySkillHeadlineId', args: args)
735
+ end
736
+
737
+ # Returns skills by skill ids
738
+ # @param language_id [String, Integer]
739
+ # @param skill_ids [Array<String>, Array<Integer>]
740
+ # @return [Response] the response
741
+ # @see Response
742
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsBySkillIds
743
+ def skills_by_skill_ids(language_id:, skill_ids:)
744
+ args = {
745
+ languageId: language_id,
746
+ skillIds: skill_ids.map { |id| [:int, id] },
747
+ }
748
+ client_request('GetSkillsBySkillIds', args: args)
749
+ end
750
+
751
+ # Returns skills versions by skill ids
752
+ # @param language_id [String, Integer]
753
+ # @param skill_ids [Array<String>, Array<Integer>]
754
+ # @return [Response] the response
755
+ # @see Response
756
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsBySkillIdsVersion
757
+ def skills_versions_by_skill_ids(language_id:, skill_ids:)
758
+ args = {
759
+ languageId: language_id,
760
+ skillIds: skill_ids.map { |id| [:int, id] },
761
+ }
762
+ client_request('GetSkillsBySkillIdsVersion', args: args)
763
+ end
764
+
765
+ # Returns skill headlines by main headline
766
+ # @param language_id [String, Integer]
767
+ # @param skill_main_headline_id [String, Integer]
768
+ # @return [Response] the response
769
+ # @see Response
770
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsBySkillMainHeadlineId
771
+ def skills_by_main_headline(language_id:, skill_main_headline_id:)
772
+ args = { languageId: language_id, skillMainHeadlineId: skill_main_headline_id }
773
+ client_request('GetSkillsBySkillMainHeadlineId', args: args)
774
+ end
775
+
776
+ # Returns skills by text
777
+ # @param language_id [String, Integer]
778
+ # @param text [String]
779
+ # @param exact_match [true, false]
780
+ # @return [Response] the response
781
+ # @see Response
782
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetSkillsByText
783
+ def skills_by_text(language_id:, text:, exact_match: false)
784
+ args = { languageId: language_id, term: text, exactMatch: exact_match }
785
+ client_request('GetSkillsByText', args: args)
786
+ end
787
+
788
+ # Returns version information
789
+ # @return [Response] the response
790
+ # @see Response
791
+ # @see http://api.arbetsformedlingen.se/taxonomi/v0/TaxonomiService.asmx?op=GetVersionInformations
792
+ def version_information
793
+ client_request('GetVersionInformations')
794
+ end
795
+ end
796
+ end
797
+ end