api_analytics 1.0.6 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: