Files
adamantium/app/actions/workouts/create.rb

36 lines
789 B
Ruby

require "pry"
module Adamantium
module Actions
module Workouts
class Create < Action
include Deps["geo.gpx_parser", "commands.workouts.create"]
def handle(req, res)
tempfile = Tempfile.new(%w/path .gpx/)
if req.params.to_h.dig(:file, :tempfile) != nil
tempfile.write req.params[:file][:tempfile].read
else
tempfile.write req.params[:file]
end
tempfile.rewind
gpxfile = gpx_parser.call(path: tempfile.path)
if gpxfile.success?
create.call(**gpxfile.value!)
res.status = 201
else
res.status = 500
end
ensure
tempfile.close
tempfile.unlink
end
end
end
end
end