aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/api/v1/internals/netex_exports_controller.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/app/controllers/api/v1/internals/netex_exports_controller.rb b/app/controllers/api/v1/internals/netex_exports_controller.rb
new file mode 100644
index 000000000..8e69af635
--- /dev/null
+++ b/app/controllers/api/v1/internals/netex_exports_controller.rb
@@ -0,0 +1,51 @@
+module Api
+ module V1
+ module Internals
+ class NetexExportsController < Api::V1::Internals::ApplicationController
+ include ControlFlow
+ skip_before_action :require_token, only: :upload
+ before_action :find_netex_export
+
+ def upload
+ if authenticate_token
+ @netex_export.file = params[:file]
+ @netex_export.save!
+ @netex_export.successful!
+ @netex_export.notify_parent
+ render json: {
+ status: "ok",
+ message:"File successfully uploaded for #{@netex_export.type} (id: #{@netex_export.id})"
+ }
+ else
+ @netex_export.failed!
+ @netex_export.notify_parent
+ render_unauthorized("Access denied")
+ end
+ end
+
+ def notify_parent
+ if @netex_export.notify_parent
+ render json: {
+ status: "ok",
+ message:"#{@netex_export.parent_type} (id: #{@netex_export.parent_id}) successfully notified at #{l(@netex_export.notified_parent_at)}"
+ }
+ else
+ render json: {status: "error", message: @netex_export.errors.full_messages }
+ end
+ end
+
+ private
+
+ def find_netex_export
+ @netex_export = Export::Netex.find(params[:id])
+ rescue ActiveRecord::RecordNotFound
+ render json: {
+ status: "error",
+ message: "Record not found"
+ }, status: 404
+ finish_action!
+ end
+ end
+ end
+ end
+end