Breinify 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf5392a6679d6b10894f7d9edf7f4debe08f2986
4
- data.tar.gz: ade9f86a134fb13c853ee943edfcd774d97dedb1
3
+ metadata.gz: 8c8821732d52cf7d678064177e737b4675fc4567
4
+ data.tar.gz: 76f2c0cdb6f247bcc4ecfde1984087e7ac4e44f6
5
5
  SHA512:
6
- metadata.gz: 8c883cd84e949df17d0c3c0462129482cec2666ec15048ceb35acfa8b339b71e0028ca553c14c127aed3becdeea88da100f3da909e995643386d9feb058c0ca7
7
- data.tar.gz: efd03992099f0c45965d6baa72459e768d6764d20edb03d9bc0438821dd5b9cb0fa952583e1f15ce62c85382ed7bec8371233ad39bc5f3de0bd58f66dd4be87c
6
+ metadata.gz: 8499453201e5e40f0ff5409dbb6c380f2b8ae59e64204f17fd9c5b62b79bd4ca6f775d40a208893f22c7a0522e28f1bb081f54124eab0ecaaab1542bff64f83b
7
+ data.tar.gz: 4d0c707d1cedcdd2636af5a5706961c29f483a8882d03f5262747a5088cb13f2ba7bd3bd38ba29982f8cf91a7dfd4832d8562cd023450916f3256ab47052442f
@@ -1,9 +1,3 @@
1
- # require "Breinify/version"
2
-
3
- #require 'rubygems'
4
- #require 'uri'
5
- #require 'net/http'
6
-
7
1
  require 'net/https'
8
2
  require 'json'
9
3
  require 'base64'
@@ -18,11 +12,6 @@ module Breinify
18
12
  @@logger.sev_threshold = Logger::DEBUG
19
13
  # @@logger = Logger.new('breinify.log', 'daily')
20
14
 
21
-
22
- ## question should I have a class ???
23
- class BreinConfig
24
- end
25
-
26
15
  ## default values
27
16
 
28
17
  ##
@@ -48,19 +37,19 @@ module Breinify
48
37
  ## module values
49
38
 
50
39
  ##
51
- # url
40
+ # contains the url
52
41
  @@url
53
42
 
54
43
  ##
55
- # api key
44
+ # contains the api key
56
45
  @@apiKey
57
46
 
58
47
  ##
59
- # secret
48
+ # contains the secret
60
49
  @@secret
61
50
 
62
51
  ##
63
- # timeout (in ms)
52
+ # contains the timeout (in ms)
64
53
  @@timeout
65
54
 
66
55
  ##
@@ -135,32 +124,12 @@ module Breinify
135
124
 
136
125
  begin
137
126
 
138
- # url to use with actvitiy endpoint
139
- fullUrl = @@url + @@activityEndpoint
140
-
141
- # retrieve all the options
142
- uri = URI(fullUrl)
143
- header = {'accept': 'application/json'}
144
-
145
127
  # unix timestamp
146
128
  unixTimestamp = Time.now.getutc.to_i
147
129
  @@logger.debug 'Unix timestamp is: ' + unixTimestamp.to_s
148
130
 
149
- signature = nil
150
- if @@secret != nil
151
-
152
- activityData = options.fetch('activity', nil)
153
- activityType = activityData.fetch('type', nil)
154
- message = activityType + unixTimestamp.to_s + '1'
155
- hash = OpenSSL::HMAC.digest('sha256', @@secret, message)
156
- signature = Base64.encode64(hash).strip
157
-
158
- @@logger.debug 'Secret value is: ' + signature
159
- end
160
-
161
131
  @@logger.debug 'activity values are: ' + options.to_s
162
132
 
163
-
164
133
  ## the following fields have to be added
165
134
  # apiKey
166
135
  # unixTimestamp
@@ -170,14 +139,44 @@ module Breinify
170
139
  data['apiKey'] = @@apiKey
171
140
  data['unixTimestamp'] = unixTimestamp
172
141
 
142
+ signature = handleSignature(options, unixTimestamp)
173
143
  if signature != nil
174
144
  data['signature'] = signature
175
145
  end
176
146
 
147
+ ## add the userAgent
148
+ userAgent = retrieiveUserAgentInformation
149
+
150
+ # for test purposes
151
+ userAgent = 'BLABLA'
152
+
153
+ # fetch previous values - if they exists
154
+ begin
155
+ additionalValues = options.fetch('user', {}).fetch('additional', {})
156
+ if additionalValues.empty?
157
+
158
+ userAgentHash = Hash.new
159
+ userAgentHash['userAgent'] = userAgent
160
+
161
+ userData = options.fetch('user', {})
162
+ userData['additional'] = userAgentHash
163
+ else
164
+ additionalValues['userAgent'] = userAgent
165
+ end
166
+ rescue
167
+ @@logger.debug 'Could not handle userAgent information'
168
+ end
169
+
170
+ # url to use with actvitiy endpoint
171
+ fullUrl = @@url + @@activityEndpoint
172
+
173
+ # retrieve all the options
174
+ uri = URI(fullUrl)
175
+
177
176
  # Create the HTTP objects
178
177
  http = Net::HTTP.new(uri.host, uri.port)
179
178
  http.use_ssl = true if uri.scheme == 'https'
180
- request = Net::HTTP::Post.new(uri.request_uri, header)
179
+ request = Net::HTTP::Post.new(uri.request_uri, {'accept': 'application/json'})
181
180
  request.body = data.to_json
182
181
  @@logger.debug 'JSON data is: ' + data.to_json.to_s
183
182
 
@@ -193,5 +192,40 @@ module Breinify
193
192
 
194
193
  end
195
194
 
195
+ ##
196
+ # == Description
197
+ #
198
+ def self.retrieiveUserAgentInformation
199
+ begin
200
+ userAgent = request.env['HTTP_USER_AGENT']
201
+ @@logger.debug 'userAgent is: ' + userAgent
202
+ rescue
203
+ @@logger.debug 'Sorry, no userAgent can be detected'
204
+ userAgent = nil
205
+ end
206
+ userAgent
207
+ end
208
+
209
+ ##
210
+ # == Description
211
+ #
212
+ # Handles the signature...
213
+ #
214
+ def self.handleSignature(options, unixTimestamp)
215
+ signature = nil
216
+ if @@secret != nil
217
+
218
+ activityData = options.fetch('activity', nil)
219
+ activityType = activityData.fetch('type', nil)
220
+ message = activityType + unixTimestamp.to_s + '1'
221
+ hash = OpenSSL::HMAC.digest('sha256', @@secret, message)
222
+ signature = Base64.encode64(hash).strip
223
+
224
+ @@logger.debug 'Secret value is: ' + signature
225
+ end
226
+ signature
227
+ end
228
+
229
+
196
230
  end
197
231
 
@@ -1,5 +1,5 @@
1
1
  module Breinify
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
4
4
 
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Breinify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco