module SunGem
Constants
- REQUIRED_KEYS
- TIMEOUT_MINUTES
- VERSION
Public Class Methods
authenticate(params, optional_params = {})
click to toggle source
# File lib/sun_gem.rb, line 13 def authenticate(params, optional_params = {}) return false, 'invalid_parameter', 400 unless params[:signature] required_params = params.stringify_keys!.slice(*REQUIRED_KEYS) return false, 'invalid_parameter', 400 if required_params.size != REQUIRED_KEYS.size return false, 'expired_signature', 400 if expired_signature?(required_params[:time]) return false, 'invalid_server', 401 unless secret_key signature = Digest::SHA1.hexdigest(required_params.merge(optional_params).merge(secret_key: secret_key)) if signature == params[:signature] true else return false, 'invalid_signature', 400 end end
generate_signature(params, optional_params = {})
click to toggle source
# File lib/sun_gem.rb, line 8 def generate_signature(params, optional_params = {}) params = params.merge(secret_key: secret_key).merge(optional_params) Digest::SHA1.hexdigest(convert_params(params).flatten.join) end
secret_key()
click to toggle source
# File lib/sun_gem.rb, line 28 def secret_key data = YAML.load_file("#{Rails.root}/config/sun_gem.yml") data["secret_key"] end
Private Class Methods
convert_params(params)
click to toggle source
# File lib/sun_gem.rb, line 39 def convert_params(params) params.sort.to_h.values.flatten.map { |e| e.is_a?(Hash) ? convert_params(e) : e } end
expired_signature?(time)
click to toggle source
# File lib/sun_gem.rb, line 35 def expired_signature?(time) time.to_i < TIMEOUT_MINUTES.minutes.ago.to_i end