From 3ac5a556c8ad13c21ffcaa597b3d132f13ab4ba5 Mon Sep 17 00:00:00 2001 From: Jeremy Prevost Date: Tue, 16 Feb 2016 12:34:44 -0500 Subject: [PATCH] Write zip file to disk then include it in sword post MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes #45 Ideally we’d not write this to disk and instead just generate it on demand and stream it through. It’s likely possible but this was a quick fix and should work fine as it’ll never be run on separate dynos since it’s all once request. --- app/controllers/callbacks_controller.rb | 8 ++++---- app/models/sword.rb | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/callbacks_controller.rb b/app/controllers/callbacks_controller.rb index 0d21df4..64933ed 100644 --- a/app/controllers/callbacks_controller.rb +++ b/app/controllers/callbacks_controller.rb @@ -5,7 +5,7 @@ def status initial_status = @submission.status extract_and_update_status_and_handle(params) unless @submission.save - fail ActionController::RoutingError, 'Approved Status Requires Handle' + raise ActionController::RoutingError, 'Approved Status Requires Handle' end @submission.send_status_email unless @submission.status == initial_status render nothing: true, status: 200 @@ -15,14 +15,14 @@ def status def extract_and_update_status_and_handle(params) json = JSON.parse(params[:body]) - fail ActionController::RoutingError, 'Invalid Status' unless json['status'] + raise ActionController::RoutingError, 'Invalid Status' unless json['status'] @submission.status = json['status'] if valid_status?(json['status']) extract_and_update_handle(json) if @submission.status == 'approved' end def validate_submission_and_params(params) - fail ActionController::RoutingError, 'Not Found' unless @submission - fail ActionController::RoutingError, 'Invalid Status' unless params[:body] + raise ActionController::RoutingError, 'Not Found' unless @submission + raise ActionController::RoutingError, 'Invalid Status' unless params[:body] end def extract_and_update_handle(json) diff --git a/app/models/sword.rb b/app/models/sword.rb index 07decd7..79bcca5 100644 --- a/app/models/sword.rb +++ b/app/models/sword.rb @@ -11,8 +11,9 @@ def initialize(submission, callback_uri) end def deposit + @submission.to_sword_package(@callback_uri) @response = @sword_server.post( - @submission.to_sword_package(@callback_uri), + File.read(@submission.sword_path), content_type: 'application/zip', x_packaging: 'http://purl.org/net/sword-types/METSDSpaceSIP') end