aboutsummaryrefslogtreecommitdiffstats
path: root/app/workers
diff options
context:
space:
mode:
authorRobert2017-07-26 08:13:43 +0200
committerRobert2017-07-26 14:35:42 +0200
commitd385a6da731dc6b3ec0ec5bec1e94eb2dcff5efb (patch)
tree0e2113f5292a7929d3a3e34d06121302b0f70949 /app/workers
parentfe46c7832fa1e0c6af450f0937aea3534c0f6b01 (diff)
downloadchouette-core-d385a6da731dc6b3ec0ec5bec1e94eb2dcff5efb.tar.bz2
Refs: #3507@4h; Finished Basic WorkbenchImportWorker
- speced but missing error treatment
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/workbench_import_worker.rb83
1 files changed, 53 insertions, 30 deletions
diff --git a/app/workers/workbench_import_worker.rb b/app/workers/workbench_import_worker.rb
index d1a381e0c..2973d97c5 100644
--- a/app/workers/workbench_import_worker.rb
+++ b/app/workers/workbench_import_worker.rb
@@ -3,65 +3,88 @@ class WorkbenchImportWorker
include Rails.application.routes.url_helpers
include Configurable
- attr_reader :import, :downloaded
+
+ # Workers
+ # =======
def perform(import_id)
@import = Import.find(import_id)
@downloaded = nil
download
+ @zip_service = ZipService.new(@zipfile_data)
+ upload
end
def download
logger.warn "HTTP GET #{import_url}"
- zipfile_data = AF83::HTTPFetcher.get_resource(
+ @zipfile_data = HTTPService.get_resource(
host: import_host,
path: import_path,
- params: {token: import.token_download})
-
- path = File.join(config.dir, import.name.gsub(%r{\s+}, '-'))
- unique_path = FileService.unique_filename path
- Dir.mkdir unique_path
- @downloaded = File.join(unique_path, import.name)
- File.open(downloaded, 'wb') do | file |
- file.write zipfile_data
- end
-
- if single_entry?
- upload(downloaded)
- else
- split_zip.each(&method(:upload))
- end
+ params: {token: @import.token_download})
+
+ # TODO: Delete me after stable implementation of #1726
+ # path = File.join(config.dir, import.name.gsub(%r{\s+}, '-'))
+ # unique_path = FileService.unique_filename path
+ # Dir.mkdir unique_path
+ # @downloaded = File.join(unique_path, import.name)
+ # File.open(downloaded, 'wb') do | file |
+ # file.write zipfile_data
+ # end
end
- def single_entry?
- true
+ def upload
+ @zip_service.entry_group_streams.each(&method(:upload_entry_group))
end
- def split_zip
- []
+ def upload_entry_group key_pair
+ eg_name, eg_stream = key_pair
+ logger.warn "HTTP POST #{export_url} (for #{complete_entry_group_name(eg_name)})"
+ HTTPService.post_resource(
+ host: export_host,
+ path: export_path,
+ resource_name: 'netex_import',
+ token: token(eg_name),
+ params: params,
+ upload: {file: [eg_stream, 'application/zip', eg_name]})
+ end
+
+
+ # Queries
+ # =======
+
+ def complete_entry_group_name entry_group_name
+ [@import.name, entry_group_name].join("--")
end
- def upload zip_file
+ def token entry_group_name
+ Api::V1::ApiKey.from(@import.referential, name: complete_entry_group_name(entry_group_name)).token
end
- # Memoized Values
+ # Constants
+ # =========
- def dirname
- @__dirname__ ||= make_unique_dir
+ def export_host
+ Rails.application.config.front_end_host
+ end
+ def export_path
+ '/api/v1/netex_imports.json'
+ end
+ def export_url
+ @__export_url__ ||= File.join(export_host, export_path)
end
def import_host
- @__import_host__ ||= Rails.application.config.front_end_host
+ Rails.application.config.front_end_host
end
def import_path
- @__import_path__ ||= File.join(download_workbench_import_path(import.workbench, import))
- end
- def import_uri
- @__import_uri__ ||= URI(import_url)
+ @__import_path__ ||= File.join(download_workbench_import_path(@import.workbench, @import))
end
def import_url
@__import_url__ ||= File.join(import_host, import_path)
end
+ def params
+ @__params__ ||= { referential_id: @import.referential_id, workbench_id: @import.workbench_id }
+ end
end