class Tr8n::Utils
Public Class Methods
browser_accepted_locales(request)
click to toggle source
Author: Iain Hecker reference: github.com/iain/http_accept_language
# File lib/tr8n/utils.rb, line 132 def self.browser_accepted_locales(request) request.env['HTTP_ACCEPT_LANGUAGE'].split(/\s*,\s*/).collect do |l| l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/ l.split(';q=') end.sort do |x,y| raise Tr8n::Exception.new("Not correctly formatted") unless x.first =~ /^[a-z\-]+$/i y.last.to_f <=> x.last.to_f end.collect do |l| l.first.downcase.gsub(/-[a-z]+$/i) { |x| x.upcase } end rescue [] end
decode_and_verify_params(signed_request, secret)
click to toggle source
# File lib/tr8n/utils.rb, line 104 def self.decode_and_verify_params(signed_request, secret) payload = URI::decode(signed_request) payload = Base64.decode64(payload) JSON.parse(payload) #parts = signed_request.split('.') #return JSON.parse(Base64.decode64(parts.first)) if parts.size == 1 #encoded_sig = parts.first #payload = parts.last #expected_sig = OpenSSL::HMAC.digest('sha256', secret, payload) #expected_sig = Base64.encode64(expected_sig) #if expected_sig != encoded_sig # raise Tr8n::Exception.new('Bad signature') #end #JSON.parse(Base64.decode64(payload)) rescue Exception => ex {} end
guid()
click to toggle source
# File lib/tr8n/utils.rb, line 61 def self.guid (0..16).to_a.map{|a| rand(16).to_s(16)}.join end
hash_value(hash, key)
click to toggle source
# File lib/tr8n/utils.rb, line 65 def self.hash_value(hash, key) hash[key.to_s] || hash[key.to_sym] end
load_json(file_path, env = nil)
click to toggle source
# File lib/tr8n/utils.rb, line 80 def self.load_json(file_path, env = nil) json = JSON.parse(File.read(file_path)) return json if env.nil? return yml['defaults'] if env == 'defaults' yml['defaults'].rmerge(yml[env] || {}) end
load_yaml(file_path, env = nil)
click to toggle source
# File lib/tr8n/utils.rb, line 87 def self.load_yaml(file_path, env = nil) yaml = YAML.load_file(file_path) return yaml if env.nil? return yaml['defaults'] if env == 'defaults' yaml['defaults'].rmerge(yaml[env] || {}) end
normalize_tr_params(label, description, tokens, options)
click to toggle source
# File lib/tr8n/utils.rb, line 41 def self.normalize_tr_params(label, description, tokens, options) return label if label.is_a?(Hash) if description.is_a?(Hash) return { :label => label, :description => nil, :tokens => description, :options => tokens } end { :label => label, :description => description, :tokens => tokens, :options => options } end
sign_and_encode_params(params, secret)
click to toggle source
# File lib/tr8n/utils.rb, line 94 def self.sign_and_encode_params(params, secret) URI::encode(Base64.encode64(params.to_json)) #payload = params.merge(:algorithm => 'HMAC-SHA256', :ts => Time.now.to_i).to_json #payload = Base64.encode64(payload) #sig = OpenSSL::HMAC.digest('sha256', secret, payload) #encoded_sig = Base64.encode64(sig) #URI::encode(Base64.encode64("#{encoded_sig}.#{payload}")) end
split_by_sentence(text)
click to toggle source
# File lib/tr8n/utils.rb, line 69 def self.split_by_sentence(text) sentence_regex = /[^.!?\s][^.!?]*(?:[.!?](?![\'"]?\s|$)[^.!?]*)*[.!?]?[\'"]?(?=\s|$)/ sentences = [] text.scan(sentence_regex).each do |s| sentences << s end sentences end
split_sentences(paragraph)
click to toggle source
# File lib/tr8n/utils.rb, line 123 def self.split_sentences(paragraph) sentence_regex = /[^.!?\s][^.!?]*(?:[.!?](?![\'"]?\s|$)[^.!?]*)*[.!?]?[\'"]?(?=\s|$)/ paragraph.match(sentence_regex) end