arbetsformedlingen 0.6.0 → 0.7.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.
@@ -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