Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## gate_controller_test.rb
- require File.dirname(__FILE__) + "/../test_helper"
- require 'gate_controller'
- class GateController; def rescue_action(e) raise e end; end
- class GateControllerTest < ActionController::TestCase
- def setup
- @controller = GateController.new
- @request = ActionController::TestRequest.new
- @response = ActionController::TestResponse.new
- end
- def simple_test
- get :process_ifree_request
- assert_response :success
- end
- # Replace this with your real tests.
- def test_truth
- assert true
- end
- end
- ## gate_controller.rb
- class GateController < ApplicationController
- def process_ifree_request
- require 'preference'
- evt_id, phone, abonent_id, country, service_number, operator, operator_id, sms_text, now, md5key, test, retry_num, debug = String.new,
- String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,String.new,
- String.new
- #параметры для обработки смс
- evt_id ||= params[:evtId] # Уникальный ID SMS-запроса
- phone ||= params[:phone] # MSISDN абонента
- abonent_id ||= params[:abonentId] # Уникальный ID абонента в системе I-Free Partners
- country ||= params[:country] # Страна, к которой принадлежит MSISDN. Возможные значения: ru, ua, kz,... (согласно ISO-стандарту)
- service_number ||= params[:service_Number] # Сервисный номер, на который был произведен запрос
- operator ||= params[:operator] # Оператор сотовой связи, к которому принадлежит абонент
- operator_id ||= params[:operatorId] # ID оператора сотовой связи
- sms_text ||= params[:smsText] # Формат Base64. Кодировка UTF-8. При передаче по http протоколу данное значение передается как UrlEncoded.
- # параметры обеспечивающие безопасность
- now ||= params[:now] #Текущее значение времени Формат yyyyMMddHHmmss в UTC на сервере I-Free Partners (Мировое время).
- md5key ||= params[:md5key] # Контрольное значение. md5key = md5(serviceNumber + smsText + country + abonentId + SecretKey + now [+retry] [+ debug [+ DebugSecretKey]])
- # системные параметры
- test ||= params[:test] # Флаг тестового запроса
- retry_num ||= params[:retry] #Номер повторного вызова
- debug ||= params[:debug] # debug=1 Флаг отладочного запроса
- # внутренние настройки сервиса
- secret_key = get_setting("Secret Key") # ключ сервиса указанный в настройках
- is_hash_valid = validate_hash(md5key, (service_number + sms_text + country + abonent_id+secret_key + now + retry_num + debug))
- #render :text => is_hash_valid
- end
- private
- def validate_hash(hash, string_to_check)
- require 'digest/md5'
- if Digest::MD5.hexdigest(string_to_check) == hash
- return true
- else
- return false
- end
- end
- end
- ## preference.rb
- def get_setting(setting)
- return Preference.get_setting(setting)
- end
- class Preference < ActiveRecord::Base
- def Preference.get_setting(setting)
- result = Preference.find_by_setting( setting )
- unless result.nil?
- return result["value"]
- end
- return nil
- end
- end
Add Comment
Please, Sign In to add comment