udene_sdk 1.0.0
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 +7 -0
- data/LICENSE +1372 -0
- data/README.md +3 -0
- data/lib/udene_sdk/client.rb +77 -0
- data/lib/udene_sdk/errors.rb +27 -0
- data/lib/udene_sdk/models.rb +8 -0
- data/lib/udene_sdk/version.rb +6 -0
- data/lib/udene_sdk.rb +20 -0
- metadata +123 -0
data/README.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "faraday"
|
5
|
+
require "faraday_middleware"
|
6
|
+
require "json"
|
7
|
+
|
8
|
+
module UdeneSDK
|
9
|
+
class Client
|
10
|
+
attr_reader :api_key, :base_url
|
11
|
+
|
12
|
+
def initialize(api_key = nil, base_url = "https://udene.net/v1")
|
13
|
+
@api_key = api_key || UdeneSDK.api_key
|
14
|
+
@base_url = base_url
|
15
|
+
|
16
|
+
raise ArgumentError, "API key is required" unless @api_key
|
17
|
+
|
18
|
+
@connection = build_connection
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_metrics
|
22
|
+
response = @connection.get("metrics")
|
23
|
+
handle_response(response)
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_activity
|
27
|
+
response = @connection.get("activity")
|
28
|
+
handle_response(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
def track_interaction(data)
|
32
|
+
response = @connection.post("track") do |req|
|
33
|
+
req.body = data
|
34
|
+
end
|
35
|
+
handle_response(response)
|
36
|
+
end
|
37
|
+
|
38
|
+
def analyze_transaction(transaction_data)
|
39
|
+
response = @connection.post("analyze-transaction") do |req|
|
40
|
+
req.body = transaction_data
|
41
|
+
end
|
42
|
+
handle_response(response)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def build_connection
|
48
|
+
Faraday.new(url: @base_url) do |conn|
|
49
|
+
conn.request :json
|
50
|
+
conn.response :json, content_type: /\bjson$/
|
51
|
+
conn.headers = {
|
52
|
+
"Authorization" => "Bearer #{@api_key}",
|
53
|
+
"Content-Type" => "application/json",
|
54
|
+
"X-Client-Version" => UdeneSDK::VERSION,
|
55
|
+
"X-SDK-Type" => "ruby"
|
56
|
+
}
|
57
|
+
conn.adapter Faraday.default_adapter
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def handle_response(response)
|
62
|
+
case response.status
|
63
|
+
when 200..299
|
64
|
+
OpenStruct.new(response.body)
|
65
|
+
when 429
|
66
|
+
retry_after = response.headers["retry-after"].to_i || 60
|
67
|
+
raise RateLimitError.new("Rate limit exceeded", retry_after)
|
68
|
+
when 400..499
|
69
|
+
raise ClientError.new(response.body["error"] || "Client error", response.status, response.body)
|
70
|
+
when 500..599
|
71
|
+
raise ServerError.new(response.body["error"] || "Server error", response.status, response.body)
|
72
|
+
else
|
73
|
+
raise APIError.new("Unknown error", response.status, response.body)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module UdeneSDK
|
5
|
+
class APIError < StandardError
|
6
|
+
attr_reader :status_code, :response
|
7
|
+
|
8
|
+
def initialize(message, status_code = nil, response = nil)
|
9
|
+
@status_code = status_code
|
10
|
+
@response = response
|
11
|
+
super(message)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class ClientError < APIError; end
|
16
|
+
|
17
|
+
class ServerError < APIError; end
|
18
|
+
|
19
|
+
class RateLimitError < APIError
|
20
|
+
attr_reader :retry_after
|
21
|
+
|
22
|
+
def initialize(message, retry_after)
|
23
|
+
@retry_after = retry_after
|
24
|
+
super(message)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/udene_sdk.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require "udene_sdk/version"
|
5
|
+
require "udene_sdk/client"
|
6
|
+
require "udene_sdk/errors"
|
7
|
+
require "udene_sdk/models"
|
8
|
+
|
9
|
+
module UdeneSDK
|
10
|
+
class << self
|
11
|
+
# Set the API key directly at the module level (optional)
|
12
|
+
def api_key=(api_key)
|
13
|
+
@api_key = api_key
|
14
|
+
end
|
15
|
+
|
16
|
+
def api_key
|
17
|
+
@api_key
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: udene_sdk
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Udene Team
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2025-03-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday_middleware
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '13.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '13.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description: Ruby SDK for integrating with Udene's fraud detection and security services
|
84
|
+
email:
|
85
|
+
- support@udene.net
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- LICENSE
|
91
|
+
- README.md
|
92
|
+
- lib/udene_sdk.rb
|
93
|
+
- lib/udene_sdk/client.rb
|
94
|
+
- lib/udene_sdk/errors.rb
|
95
|
+
- lib/udene_sdk/models.rb
|
96
|
+
- lib/udene_sdk/version.rb
|
97
|
+
homepage: https://github.com/udene/ruby-sdk
|
98
|
+
licenses:
|
99
|
+
- MIT
|
100
|
+
metadata:
|
101
|
+
homepage_uri: https://github.com/udene/ruby-sdk
|
102
|
+
source_code_uri: https://github.com/udene/ruby-sdk
|
103
|
+
documentation_uri: https://docs.udene.net
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 2.5.0
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubygems_version: 3.5.22
|
120
|
+
signing_key:
|
121
|
+
specification_version: 4
|
122
|
+
summary: Udene Fraud Detection SDK for Ruby
|
123
|
+
test_files: []
|