lib/html2pdf/rails/rendering.rb in html2pdf-rails-0.1.1 vs lib/html2pdf/rails/rendering.rb in html2pdf-rails-0.2.0

- old
+ new

@@ -7,30 +7,60 @@ module Rendering def render_to_pdf(options) _html2pdf_make_and_send_pdf(options.delete(:pdf), options) end + def render_pdf_and_get_url(options) + _html2_pdf_render_pdf_and_get_url(options.delete(:pdf), options) + end + private + def _html2pdf_default_options(pdf_name, options) + new_options = options.dup + new_options[:layout] ||= false + new_options[:template] ||= File.join(controller_path, action_name) + new_options[:pdf_options] ||= {} + new_options[:file_name] = "#{pdf_name}.pdf" + new_options[:disposition] ||= 'inline' + new_options + end + + def _html2_pdf_render_pdf_and_get_url(pdf_name, options = {}) + options = _html2pdf_default_options(pdf_name, options) + options[:put_to_storage] = true + json = JSON.parse _html2pdf_make_pdf(options) + json['url'] + end + def _html2pdf_make_and_send_pdf(pdf_name, options = {}) - options[:layout] ||= false - options[:template] ||= File.join(controller_path, action_name) - options[:disposition] ||= 'inline' - options[:pdf_options] ||= {} + options = _html2pdf_default_options(pdf_name, options) if options[:show_as_html] render_opts = options.slice(:template, :layout, :formats, :handlers) render(render_opts.merge({ content_type: 'text/html' })) else pdf_content = _html2pdf_make_pdf(options) - send_data(pdf_content, filename: pdf_name + '.pdf', type: 'application/pdf', disposition: options[:disposition]) + send_data(pdf_content, filename: options[:file_name], type: 'application/pdf', disposition: options[:disposition]) end end def _html2pdf_make_pdf(options = {}) render_opts = options.slice(:template, :layout, :formats, :handlers) html = render_to_string(render_opts) - Client.post(html, options[:pdf_options]).body + response = Client.post( + html: html, + put_to_storage: options[:put_to_storage], + file_name: options[:file_name], + disposition: options[:disposition], + pdf_options: options[:pdf_options] + ) + case response.code + when '200' + response.body + else + raise Html2Pdf::Rails::RequestError.new(response) + end end end end end