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 +4 -4
- data/README.md +3 -3
- data/lib/api_analytics/version.rb +1 -1
- data/lib/api_analytics.rb +31 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 168ec8494abbf47ad60453d1a21f836f9b860b65caaa7816ade1bea3627d72da
|
4
|
+
data.tar.gz: 4e88773a2b4cab22e0e39a256ca737817d761e0ff47275f43fb26950bb4a042b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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, <
|
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, <
|
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": <
|
78
|
+
"API-Key": <API-KEY>
|
79
79
|
}
|
80
80
|
|
81
81
|
response = requests.get("https://api-analytics-server.vercel.app/api/data", headers=headers)
|
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
|
-
|
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
|
-
|
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
|
40
|
-
|
41
|
-
|
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.
|
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-
|
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:
|