# ----------------------------------------------------------------------- # Copyright © 2012 ShepHertz Technologies Pvt Ltd. All rights reserved. # ----------------------------------------------------------------------- require "rubygems" require 'time' require 'base64' require 'cgi' require 'hmac-sha1' require 'App42Exception.rb' require 'App42BadParameterException.rb' require 'App42LimitException.rb' require 'App42NotFoundException.rb' require 'App42SecurityException.rb' module App42 class Util # # Finds the current time # # @return time format # # def get_timestamp_utc #time_stamp = Time.now.utc.iso8601 #time_stamp = Time.now.utc.xmlschema time_stamp = Time.now.utc time_stamp = time_stamp.strftime("%Y-%m-%dT%H:%M:%S.%LZ") puts "TimeStamp - #{time_stamp}" time_stamp end # # Finds the particular time for a particular date # # @param date # # @return time format # # def get_timestamp_utc_from_date(date) time = Time.parse(date).utc time_stamp = time.strftime("%Y-%m-%dT%H:%M:%S.%LZ") puts "TimeStamp - #{time_stamp}" time_stamp end def get_timestamp_utc_from_date_discount(date) time = Time.parse(date).utc time_stamp = time.strftime("%a %b %d %l:%M:%S %Z %Y") puts "TimeStamp - #{time_stamp}" time_stamp end # # This method sorts all the values that are stored in the table. # # @param table # @return sorted string # # def sort_convert_table(table) sorted_params = "" table.sort {|a,b| a[0] <=> b[0]}.each{ |key, val| sorted_params << key sorted_params << val } puts "Sorted params #{sorted_params}" sorted_params end # # It signs the request that has to be sent in the Hmac format. # # @param secretKey # @param params # # @throws InvalidKeyException # @throws NoSuchAlgorithmException # @throws IllegalStateException # @throws UnsupportedEncodingException # def sign(secret_key, params) sorted_params = sort_convert_table(params) puts sorted_params signature = compute_hmac(secret_key, sorted_params) puts "Signature #{signature}" signature end # # Encoding and decoding of the queries are done using the Hmac Algorithm. # # @param baseString # @param key # # @throws NoSuchAlgorithmException # @throws InvalidKeyException # @throws IllegalStateException # @throws UnsupportedEncodingException # def compute_hmac(secret_key, sorted_params) signature = Base64.encode64(HMAC::SHA1::digest(secret_key, sorted_params)).strip puts "Signature #{signature}" computed_hmac = CGI.escape(signature) puts "Computed Hmac #{computed_hmac}" computed_hmac end def my_strip(str) s = str.gsub(/ /,'') return s end # # An exception to check whether the object is null or blank. # # @param obj # @param name # def throwExceptionIfNullOrBlank(obj,name) if obj.kind_of?(String) trm = my_strip(obj) else trm = obj end if(trm==nil) raise App42Exception.new(name +" parameter can not be null"); end if(trm == "") raise App42Exception.new(name +" parameter can not be blank"); end end # # To check whether the max value is greater than zero or not. # # @param max # def validateMax(max) if(max.to_i < 1) raise App42Exception.new("Max must be greater than Zero."); end end # # To check whether the value of how many is less than 1000 or not. # # @param howMany # def validateHowMany(howMany) if(howMany.to_i > 1000) raise App42Exception.new("How Many should be less than 1000"); end end # # An exception to check whether the email entered is valid or not. # # @param obj # @param name # def throwExceptionIfEmailNotValid(obj, name) if(obj==nil) raise App42Exception.new(name +" parameter can not be null") end email_regex = %r{ ^ # Start of string [0-9a-z] # First character [0-9a-z.+]+ # Middle characters [0-9a-z] # Last character @ # Separating @ character [0-9a-z] # Domain name begin [0-9a-z.-]+ # Domain name middle [0-9a-z] # Domain name end $ # End of string }xi if (obj =~ email_regex) == 0 else raise App42Exception.new(name + " is not valid. ") end end # # An exception to check if the file has valid extension or not # # @param fileName # @param name # def throwExceptionIfNotValidExtension(fileName, name) if(fileName==nil) raise App42Exception.new(name + " parameter can not be null") end if(fileName.index('.') == -1) raise App42Exception.new(name + " does not contain valid extension. ") end end # # Taking extension out # # @param fileName # # @return extension # def extractFileExtension(fileName) ext = File.extname(fileName) return ext; end # # To check if the image has a valid extension or not. # # @param fileName # @param name # def throwExceptionIfNotValidImageExtension(fileName, name) if(fileName == nil) raise App42Exception.new(name + " parameter can not be null") end if(fileName.index('.') == -1) raise App42Exception.new(name + " does not contain valid extension. ") end ext = extractFileExtension(fileName); if((ext.eql?(".jpg") == false) && (ext.eql?(".JPG") == false) && (ext.eql?(".jpeg") == false) && (ext.eql?(".JPEG") == false) && (ext.eql?(".gif") == false) && (ext.eql?(".GIF") == false) && (ext.eql?(".png") == false) && (ext.eql?(".PNG") == false)) raise App42Exception.new( "The Request parameters are invalid. Only file with extensions jpg, jpeg, gif and png are supported"); end end end end