scinote-web/app/services/label_templates_preview_service.rb

45 lines
1 KiB
Ruby
Raw Normal View History

# 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