scinote-web/app/services/label_templates_preview_service.rb
ajugo aa10259d40
Fix loading of zebra printers to modal and some other small fixes [SCI-7244] (#4463)
* Fix loading of zebra printers to modal and some other small fixes [SCI-7244]

* Fix zebra printing [SCI-7244]
2022-09-27 09:58:22 +02:00

45 lines
1 KiB
Ruby

# frozen_string_literal: true
class LabelTemplatesPreviewService
extend Service
attr_reader :error, :preview
def initialize(params, user)
@user = user
@params = params
end
def generate_zpl_preview!
client = Aws::Lambda::Client.new(region: ENV['AWS_REGION'])
resp = client.invoke(
function_name: 'BinaryKitsZplViewer',
invocation_type: 'RequestResponse',
log_type: 'Tail',
payload:
"{ \"content\": #{sanitize_zpl_code(@params[:zpl]).to_json},"\
"\"width\": #{@params[:width]},"\
"\"height\": #{@params[:height]},"\
"\"density\": #{@params[:density]} "\
"}"
)
if resp.function_error.nil?
@preview = resp.payload.string.delete('"')
else
begin
error_response = JSON.parse(resp.payload.string)
@error = error_response['errorMessage']
rescue JSON::ParserError
@error = resp.function_error
end
end
end
private
def sanitize_zpl_code(zpl_code)
zpl_code.gsub('_', '_5F')
end
end