Guest User

Untitled

a guest
May 26th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. ## gate_controller_test.rb
  2.  
  3. require File.dirname(__FILE__) + "/../test_helper"
  4. require 'gate_controller'
  5. class GateController; def rescue_action(e) raise e end; end
  6. class GateControllerTest < ActionController::TestCase
  7. def setup
  8. @controller = GateController.new
  9. @request = ActionController::TestRequest.new
  10. @response = ActionController::TestResponse.new
  11. end
  12.  
  13.  
  14. def simple_test
  15. get :process_ifree_request
  16. assert_response :success
  17. end
  18. # Replace this with your real tests.
  19. def test_truth
  20. assert true
  21. end
  22. end
  23.  
  24. ## gate_controller.rb
  25. class GateController < ApplicationController
  26. def process_ifree_request
  27. require 'preference'
  28. evt_id, phone, abonent_id, country, service_number, operator, operator_id, sms_text, now, md5key, test, retry_num, debug = String.new,
  29. String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,
  30. String.new
  31. #параметры для обработки смс
  32. evt_id ||= params[:evtId] # Уникальный ID SMS-запроса
  33. phone ||= params[:phone] # MSISDN абонента
  34. abonent_id ||= params[:abonentId] # Уникальный ID абонента в системе I-Free Partners
  35. country ||= params[:country] # Страна, к которой принадлежит MSISDN. Возможные значения: ru, ua, kz,... (согласно ISO-стандарту)
  36. service_number ||= params[:service_Number] # Сервисный номер, на который был произведен запрос
  37. operator ||= params[:operator] # Оператор сотовой связи, к которому принадлежит абонент
  38. operator_id ||= params[:operatorId] # ID оператора сотовой связи
  39. sms_text ||= params[:smsText] # Формат Base64. Кодировка UTF-8. При передаче по http протоколу данное значение передается как UrlEncoded.
  40. # параметры обеспечивающие безопасность
  41. now ||= params[:now] #Текущее значение времени Формат yyyyMMddHHmmss в UTC на сервере I-Free Partners (Мировое время).
  42. md5key ||= params[:md5key] # Контрольное значение. md5key = md5(serviceNumber + smsText + country + abonentId + SecretKey + now [+retry] [+ debug [+ DebugSecretKey]])
  43. # системные параметры
  44. test ||= params[:test] # Флаг тестового запроса
  45. retry_num ||= params[:retry] #Номер повторного вызова
  46. debug ||= params[:debug] # debug=1 Флаг отладочного запроса
  47. # внутренние настройки сервиса
  48. secret_key = get_setting("Secret Key") # ключ сервиса указанный в настройках
  49.  
  50. is_hash_valid = validate_hash(md5key, (service_number + sms_text + country + abonent_id+secret_key + now + retry_num + debug))
  51. #render :text => is_hash_valid
  52. end
  53. private
  54. def validate_hash(hash, string_to_check)
  55. require 'digest/md5'
  56. if Digest::MD5.hexdigest(string_to_check) == hash
  57. return true
  58. else
  59. return false
  60. end
  61. end
  62. end
  63.  
  64. ## preference.rb
  65. def get_setting(setting)
  66. return Preference.get_setting(setting)
  67. end
  68. class Preference < ActiveRecord::Base
  69. def Preference.get_setting(setting)
  70. result = Preference.find_by_setting( setting )
  71. unless result.nil?
  72. return result["value"]
  73. end
  74. return nil
  75. end
  76. end
Add Comment
Please, Sign In to add comment