aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/api
diff options
context:
space:
mode:
authorAlban Peignier2017-08-28 00:27:29 +0200
committerAlban Peignier2017-08-28 00:27:29 +0200
commitd01ec772b1e65e5d00f56bcd288bf710d1b55712 (patch)
tree5a251e3c08a4050fba629003bfbc33a6d62b919c /app/controllers/api
parentb240f38d661e6e11428e3f09258ba29bcbf228bb (diff)
parentd79f84398849e9c32fdf41582d299dd914fb8452 (diff)
downloadchouette-core-d01ec772b1e65e5d00f56bcd288bf710d1b55712.tar.bz2
Merge branch '4273_http_service_broken'
Diffstat (limited to 'app/controllers/api')
-rw-r--r--app/controllers/api/v1/netex_imports_controller.rb45
1 files changed, 38 insertions, 7 deletions
diff --git a/app/controllers/api/v1/netex_imports_controller.rb b/app/controllers/api/v1/netex_imports_controller.rb
index 8f7c8e67e..cb863b9fc 100644
--- a/app/controllers/api/v1/netex_imports_controller.rb
+++ b/app/controllers/api/v1/netex_imports_controller.rb
@@ -3,6 +3,8 @@ module Api
class NetexImportsController < ChouetteController
include ControlFlow
+ skip_before_action :authenticate
+
def create
respond_to do | format |
format.json(&method(:create_models))
@@ -26,8 +28,20 @@ module Api
end
def create_netex_import
- @netex_import = NetexImport.new(netex_import_params.merge(referential_id: @new_referential.id, creator: 'Webservice'))
+ attributes = netex_import_params
+ if @new_referential.persisted?
+ attributes = attributes.merge referential_id: @new_referential.id, creator: "Webservice"
+ else
+ attributes = attributes.merge status: "failed"
+ end
+
+ @netex_import = NetexImport.new attributes
@netex_import.save!
+
+ unless @netex_import.referential
+ Rails.logger.info "Can't create referential for import #{@netex_import.id}: #{@new_referential.inspect} #{@new_referential.metadatas.inspect} #{@new_referential.errors.full_messages}"
+ @netex_import.messages.create criticity: :error, message_key: "cant_create_referential"
+ end
rescue ActiveRecord::RecordInvalid
render json: {errors: @netex_import.errors}, status: 406
finish_action!
@@ -38,17 +52,34 @@ module Api
Referential.new(
name: netex_import_params['name'],
organisation_id: @workbench.organisation_id,
- workbench_id: @workbench.id)
- @new_referential.save!
- rescue ActiveRecord::RecordInvalid
- render json: {errors: @new_referential.errors}, status: 406
- finish_action!
+ workbench_id: @workbench.id,
+ metadatas: [metadata]
+ )
+ @new_referential.save
+ end
+
+ def metadata
+ metadata = ReferentialMetadata.new
+
+ if netex_import_params['file']
+ netex_file = STIF::NetexFile.new(netex_import_params['file'].to_io)
+ frame = netex_file.frames.first
+
+ if frame
+ metadata.periodes = frame.periods
+
+ line_objectids = frame.line_refs.map { |ref| "STIF:CODIFLIGNE:Line:#{ref}" }
+ metadata.line_ids = @workbench.lines.where(objectid: line_objectids).pluck(:id)
+ end
+ end
+
+ metadata
end
def netex_import_params
params
.require('netex_import')
- .permit(:file, :name, :workbench_id)
+ .permit(:file, :name, :workbench_id, :parent_id, :parent_type)
end
end
end