Files
Alvand-P/lib/opendax/payload.rb
2026-08-13 19:42:08 +03:30

47 lines
937 B
Ruby

require 'jwt'
module Opendax
class Error < StandardError
end
class Payload
def initialize(params)
@secret = params[:secret]
@expire = params[:expire] || 600
raise Opendax::Error.new unless @secret
raise Opendax::Error.new unless @expire > 0
end
def generate!(params)
raise Opendax::Error.new unless params[:service]
raise Opendax::Error.new unless params[:image]
token = params.merge({
'iat': Time.now.to_i,
'exp': (Time.now + @expire).to_i
})
JWT.encode token, @secret, 'HS256'
end
def decode!(token)
JWT.decode(token, @secret, true, {
algorithm: 'HS256'
}).first
end
def safe_decode(token)
begin
decode!(token)
rescue JWT::ExpiredSignature
rescue JWT::ImmatureSignature
rescue JWT::VerificationError
rescue JWT::DecodeError
nil
end
end
end
end