api_analytics 1.0.6 → 1.1.1

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
  SHA256:
3
- metadata.gz: a1996495deb639bff1cc01ca3be055e4ceec8d8e41e3b647555384ef64dfddc7
4
- data.tar.gz: ebc8466eb19a599e2de5c1cf5f4d8957f38daf5322ab654b8eba2cc1977a8bf7
3
+ metadata.gz: 168ec8494abbf47ad60453d1a21f836f9b860b65caaa7816ade1bea3627d72da
4
+ data.tar.gz: 4e88773a2b4cab22e0e39a256ca737817d761e0ff47275f43fb26950bb4a042b
5
5
  SHA512:
6
- metadata.gz: a6d73643ce69c4616dc0cbb1905c12d839960d19c496ca046c24afbdd4a36b52d7180d26b8a5f14c59f904bd966cfb4029e3ce14a06a26c21c6e5b56819c0372
7
- data.tar.gz: 9a958b58d0f639774446e3c19df1b29d072dc42e0f0d3d8a30301d03251ec2c2ae2d49e2fc0cb76ccd5193ca563c48b3eed8e6fd1693503f02eae1eecbbc9583
6
+ metadata.gz: efd0cdc91ebcdc11db6a7a7fc4135e9c336a5a71441b9a5be8324738451efcace71d4685c16ad999dea36cb1d88670640f768d3fab0ef5adf8658d55d7b04f0d
7
+ data.tar.gz: f4ea4b6320d3e47fc9634bdded2cf3c4f4b61914721f1dc28c913565c9bee6cafdf9cd838b5dd8c3502c40e34816b7bba3c1aca4e345c3f4c010eb2f04bc2a55
data/README.md CHANGED
@@ -31,7 +31,7 @@ module RailsMiddleware
31
31
  config.load_defaults 6.1
32
32
  config.api_only = true
33
33
 
34
- config.middleware.use ::Analytics::Rails, <api_key> # Add middleware
34
+ config.middleware.use ::Analytics::Rails, <API-KEY> # Add middleware
35
35
  end
36
36
  end
37
37
  ```
@@ -42,7 +42,7 @@ end
42
42
  require 'sinatra'
43
43
  require 'api_analytics'
44
44
 
45
- use Analytics::Sinatra, <api_key> # Add middleware
45
+ use Analytics::Sinatra, <API-KEY> # Add middleware
46
46
 
47
47
  before do
48
48
  content_type 'application/json'
@@ -75,7 +75,7 @@ Logged data for all requests can be accessed via our API. Simply send a GET requ
75
75
  import requests
76
76
 
77
77
  headers = {
78
- "API-Key": <api_key>
78
+ "API-Key": <API-KEY>
79
79
  }
80
80
 
81
81
  response = requests.get("https://api-analytics-server.vercel.app/api/data", headers=headers)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Analytics
4
- VERSION = "1.0.6"
4
+ VERSION = "1.1.1"
5
5
  end
data/lib/api_analytics.rb CHANGED
@@ -9,36 +9,56 @@ module Analytics
9
9
  def initialize(app, api_key)
10
10
  @app = app
11
11
  @api_key = api_key
12
+ @requests = Array.new
13
+ @last_posted = Time.now
12
14
  end
13
15
 
14
16
  def call(env)
15
17
  start = Time.now
16
18
  status, headers, response = @app.call(env)
17
19
 
18
- data = {
19
- api_key: @api_key,
20
+ request_data = {
20
21
  hostname: env['HTTP_HOST'],
21
22
  ip_address: env['REMOTE_ADDR'],
22
23
  path: env['REQUEST_PATH'],
23
24
  user_agent: env['HTTP_USER_AGENT'],
24
25
  method: env['REQUEST_METHOD'],
25
26
  status: status,
26
- framework: @framework,
27
27
  response_time: (Time.now - start).to_f.round,
28
+ created_at: Time.now.utc.iso8601
28
29
  }
29
30
 
30
- Thread.new {
31
- log_request(data)
32
- }
31
+ log_request(request_data)
33
32
 
34
33
  [status, headers, response]
35
34
  end
36
-
35
+
37
36
  private
38
37
 
39
- def log_request(data)
40
- uri = URI('https://api-analytics-server.vercel.app/api/log-request')
41
- res = Net::HTTP.post(uri, data.to_json)
38
+ def post_requests(api_key, requests, framework)
39
+ payload = {
40
+ api_key: api_key,
41
+ requests: requests,
42
+ framework: framework
43
+ }
44
+ uri = URI('https://213.168.248.206/api/log-request')
45
+ res = Net::HTTP.post(uri, payload.to_json)
46
+ end
47
+
48
+ def log_request(request_data)
49
+ if @api_key.empty?
50
+ return
51
+ end
52
+ now = Time.now
53
+ @requests.push(request_data)
54
+ if (now - @last_posted) > 5
55
+ requests = @requests.dup
56
+ Thread.new {
57
+ post_requests(@api_key, requests, @framework)
58
+ }
59
+ @requests = Array.new
60
+ @last_posted = now
61
+ end
42
62
  end
43
63
  end
44
64
 
@@ -58,3 +78,4 @@ module Analytics
58
78
  end
59
79
  end
60
80
  end
81
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_analytics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Draper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-10 00:00:00.000000000 Z
11
+ date: 2023-04-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Monitoring and analytics for API applications.
14
14
  email: