appodeal_id_client 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 +4 -4
- data/lib/appodeal_id_client/client.rb +49 -8
- data/lib/appodeal_id_client/version.rb +1 -1
- data/lib/appodeal_id_client.rb +2 -2
- 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: 11ee90820d7d01ea121504aae5fa471462205228f1e4cb2d57f6a731ad8f3512
|
4
|
+
data.tar.gz: 4697f4a431d61c62a9e135f961f9e5bc95441327142f451f681b7e1b5b6c7517
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2a5c60df8cd6feb157c253d568bd4fe94829fc3c3e57da8c96d41bef177347238181bec38ae380764dbb8f28dd685175f028bab8e0b41a91fae99c3f0f50312
|
7
|
+
data.tar.gz: 8af711407bea7613f729f4ae449d82750a514672bccf8e54ed033771de89622ab01ba54fc91c0bedb2c2c23398fc90087060bdc4fcdde3c49e52d4ff8b0eaaf1
|
@@ -5,29 +5,54 @@ require 'faraday'
|
|
5
5
|
module AppodealIdClient
|
6
6
|
# Client for appodeal_id_services
|
7
7
|
class Client
|
8
|
-
|
8
|
+
ZeroAppodealIdException = Class.new(StandardError)
|
9
|
+
RETRY_LIMIT = 3
|
10
|
+
|
11
|
+
def initialize(api_url, logger)
|
9
12
|
@api_url = api_url
|
13
|
+
@logger = logger
|
10
14
|
end
|
11
15
|
|
12
16
|
def find_or_create(data)
|
13
|
-
|
14
|
-
|
17
|
+
@retries = 0
|
18
|
+
request_id = SecureRandom.uuid
|
15
19
|
|
16
|
-
|
17
|
-
rescue StandardError
|
18
|
-
check_appodeal_id(data[:appodeal_id])
|
20
|
+
post_request(data, request_id)
|
19
21
|
end
|
20
22
|
|
21
23
|
private
|
22
24
|
|
23
|
-
attr_reader :api_url
|
25
|
+
attr_reader :api_url, :logger
|
24
26
|
|
25
27
|
def connection
|
26
28
|
@connection ||= Faraday.new(api_url) do |c|
|
27
29
|
c.adapter Faraday.default_adapter
|
28
30
|
c.request :json
|
29
|
-
c.request :retry,
|
31
|
+
c.request :retry, retry_options
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def post_request(data, request_id) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
36
|
+
log_request(data, request_id)
|
37
|
+
|
38
|
+
response = connection.post('/v1', data) do |req|
|
39
|
+
req.headers['X-Request-ID'] = request_id
|
40
|
+
end
|
41
|
+
|
42
|
+
if response.status == 200
|
43
|
+
appodeal_id = response.body.to_i
|
44
|
+
raise ZeroAppodealIdException if appodeal_id.zero?
|
45
|
+
|
46
|
+
appodeal_id
|
30
47
|
end
|
48
|
+
|
49
|
+
check_appodeal_id(data[:appodeal_id])
|
50
|
+
rescue ZeroAppodealIdException
|
51
|
+
retry if (@retries += 1) < RETRY_LIMIT
|
52
|
+
|
53
|
+
check_appodeal_id(data[:appodeal_id])
|
54
|
+
rescue StandardError
|
55
|
+
check_appodeal_id(data[:appodeal_id])
|
31
56
|
end
|
32
57
|
|
33
58
|
def check_appodeal_id(appodeal_id)
|
@@ -41,5 +66,21 @@ module AppodealIdClient
|
|
41
66
|
appodeal_id.bit_length > 60 &&
|
42
67
|
appodeal_id.bit_length <= 64
|
43
68
|
end
|
69
|
+
|
70
|
+
def retry_options
|
71
|
+
{
|
72
|
+
max: 3,
|
73
|
+
interval: 0.05,
|
74
|
+
interval_randomness: 0.5,
|
75
|
+
backoff_factor: 2
|
76
|
+
}
|
77
|
+
end
|
78
|
+
|
79
|
+
def log_request(data, request_id)
|
80
|
+
return unless logger
|
81
|
+
|
82
|
+
params = data.merge(request_id: request_id)
|
83
|
+
logger.info("[NEEDED] [APPODEAL ID] #{params.inspect}")
|
84
|
+
end
|
44
85
|
end
|
45
86
|
end
|
data/lib/appodeal_id_client.rb
CHANGED
@@ -6,7 +6,7 @@ require 'appodeal_id_client/client'
|
|
6
6
|
# Service find or create appodeal_id from appodeal_id_services
|
7
7
|
module AppodealIdClient
|
8
8
|
class << self
|
9
|
-
attr_accessor :api_url
|
9
|
+
attr_accessor :api_url, :logger
|
10
10
|
|
11
11
|
def configure
|
12
12
|
yield self
|
@@ -21,7 +21,7 @@ module AppodealIdClient
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def client
|
24
|
-
@client ||= Client.new(api_url)
|
24
|
+
@client ||= Client.new(api_url, logger)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appodeal_id_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Ilchenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|