class BreezyPDF::Uploads::Base
Upload an asset
Public Class Methods
new(filename, content_type, file_path)
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 6 def initialize(filename, content_type, file_path) @filename = filename @content_type = content_type @file_path = file_path @start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) end
Public Instance Methods
id()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 26 def id resource.id end
public_url()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 14 def public_url @start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) BreezyPDF.logger.info(%([BreezyPDF] Starting private asset upload for #{@filename})) upload! @end_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) BreezyPDF.logger.info( %([BreezyPDF] Private asset upload for #{@filename} completed in #{timing} seconds) ) resource.presigned_url end
timing()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 30 def timing @timing ||= Process.clock_gettime(Process::CLOCK_MONOTONIC) - @start_time end
Private Instance Methods
client()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 36 def client @client ||= BreezyPDF::Client.new end
file()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 40 def file @file ||= File.open(@file_path) end
resource()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 56 def resource @resource ||= client.post("/uploads", resource_options).tap do BreezyPDF.logger.info(%([BreezyPDF] Initiating presign of private asset upload #{@filename})) end rescue Net::HTTP => error BreezyPDF.logger.fatal(%([BreezyPDF] Unable to presign private asset upload for #{@filename})) raise PresignError, error.message end
resource_options()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 65 def resource_options @resource_options ||= { filename: @filename, size: file.size, content_type: @content_type } end
upload!()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 44 def upload! BreezyPDF.logger.info(%([BreezyPDF] Initiating private asset upload of #{@filename})) upload_response = upload_http.request(upload_request) return if upload_response.code.to_i == 204 raise UploadError, "HTTP Status: #{upload_response.code}: #{upload_response.body}" rescue Net::HTTP => error BreezyPDF.logger.fatal(%([BreezyPDF] Unable to upload private asset #{@filename})) raise UploadError, error.message end
upload_http()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 73 def upload_http @upload_http ||= Net::HTTP.new(upload_uri.host, upload_uri.port).tap { |http| http.use_ssl = true } end
upload_request()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 77 def upload_request @upload_request ||= Net::HTTP::Post.new(upload_uri.request_uri).tap do |post| file_form_data = FileFormData.new(resource.presigned_upload_fields, @content_type, @filename, file) post.content_type = "multipart/form-data; boundary=#{file_form_data.boundary}" post.body = file_form_data.data end end
upload_uri()
click to toggle source
# File lib/breezy_pdf/uploads/base.rb, line 69 def upload_uri @upload_uri ||= URI.parse(resource.presigned_upload_url) end