Class: Learnosity::Sdk::Request::Init
- Inherits:
-
Object
- Object
- Learnosity::Sdk::Request::Init
- Defined in:
- lib/learnosity/sdk/request/init.rb
Constant Summary collapse
- @@validSecurityKeys =
Keynames that are valid in the security_packet, they are also in the correct order for signature generation.
['consumer_key', 'domain', 'timestamp', 'expires', 'user_id']
- @@validServices =
Service names that are valid for ‘$service`
['assess', 'author', 'data', 'events', 'items', 'questions', 'reports']
Instance Attribute Summary collapse
-
#request_string ⇒ Object
readonly
XXX: Needs to be public for unit tests.
-
#security_packet ⇒ Object
readonly
XXX: Needs to be public for unit tests.
Instance Method Summary collapse
- #generate(encode = true) ⇒ Object
- #generate_signature ⇒ Object
-
#initialize(service, security_packet, secret, request_packet = nil, action = nil) ⇒ Init
constructor
A new instance of Init.
Constructor Details
#initialize(service, security_packet, secret, request_packet = nil, action = nil) ⇒ Init
Returns a new instance of Init.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/learnosity/sdk/request/init.rb', line 22 def initialize(service, security_packet, secret, request_packet = nil, action = nil) @sign_request_data = false @service = service @security_packet = security_packet.clone if ! security_packet.nil? @secret = secret @request_packet = request_packet.clone if ! request_packet.nil? @action = action self.validate() self.() @request_string = self.generate_request_string() @security_packet['signature'] = self.generate_signature() end |
Instance Attribute Details
#request_string ⇒ Object
XXX: Needs to be public for unit tests
13 14 15 |
# File 'lib/learnosity/sdk/request/init.rb', line 13 def request_string @request_string end |
#security_packet ⇒ Object
XXX: Needs to be public for unit tests
13 14 15 |
# File 'lib/learnosity/sdk/request/init.rb', line 13 def security_packet @security_packet end |
Instance Method Details
#generate(encode = true) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/learnosity/sdk/request/init.rb', line 58 def generate(encode = true) output = {} case @service when 'assess', 'author', 'data', 'items', 'reports' output['security'] = @security_packet if !@request_packet.nil? output['request'] = @request_packet end case @service when 'data' dataOutput = { 'security' => JSON.generate(output['security']) } if output.key?('request') dataOutput['request'] = JSON.generate(output['request']) end if !@action.nil? dataOutput['action'] = @action end return dataOutput when 'assess' output = output['request'] end when 'questions' output = hash_except(@security_packet, 'domain') if !@request_packet.nil? output = output.merge(@request_packet) end when 'events' output['security'] = @security_packet output['config'] = @request_packet else raise Exception, "generate() for #{@service} not implemented" end if !encode return output end return JSON.generate(output) end |
#generate_signature ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/learnosity/sdk/request/init.rb', line 37 def generate_signature() signature_array = [] @@validSecurityKeys.each do |k| if @security_packet.include? k signature_array.<< @security_packet[k] end end signature_array << @secret if @sign_request_data and ! @request_string.nil? signature_array << @request_string end if ! @action.nil? signature_array << @action end return self.hash_signature(signature_array) end |