convoy.rb 0.2.0 → 0.3.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 +4 -4
- data/README.md +8 -31
- data/convoy.gemspec +1 -1
- data/lib/convoy/resources/api_key.rb +1 -1
- data/lib/convoy/resources/delivery_attempt.rb +1 -1
- data/lib/convoy/resources/endpoint.rb +6 -1
- data/lib/convoy/resources/event.rb +6 -1
- data/lib/convoy/resources/event_delivery.rb +10 -2
- data/lib/convoy/resources/portal_link.rb +24 -0
- data/lib/convoy/resources/project.rb +1 -1
- data/lib/convoy/resources/source.rb +1 -1
- data/lib/convoy/resources/subscription.rb +1 -1
- data/lib/convoy/version.rb +1 -1
- data/lib/convoy/webhook.rb +5 -4
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d84ba6e548b79893bcad3e8deb0a86d80c591e4009f0d6a11d64011a7b918593
|
4
|
+
data.tar.gz: 2b5cf92c2939fb48e766928e86e63a0800ef99591a92a9472023a3f62d90e858
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30d0410db297a90f8a21243cf8aa477569865df8ae57af66159428f8745644f805f6900e18f0f0e022588ea2b0ee0b60ffa2bd961503ea625c21a9e791dfd14c
|
7
|
+
data.tar.gz: 939f323b06ff770b6f4b9d48a3c196fca4a4a99cc72889ae6876b1e8139497d09d2a3ede98091a4cd7b434629a1cad274d0759bf5eb68e166d62112fa5725ee0
|
data/README.md
CHANGED
@@ -20,39 +20,20 @@ Or install it yourself as:
|
|
20
20
|
## Usage
|
21
21
|
|
22
22
|
### Setup Client
|
23
|
-
|
23
|
+
To configure your client, provide your `api_key` and `project_id`, see below:
|
24
24
|
```ruby
|
25
25
|
require 'convoy'
|
26
26
|
|
27
27
|
Convoy.ssl = true
|
28
28
|
Convoy.api_key = "CO.M0aBe..."
|
29
|
-
Convoy.
|
30
|
-
Convoy.base_uri = "https://dashboard.getconvoy.io/api"
|
31
|
-
|
32
|
-
```
|
33
|
-
|
34
|
-
### Creating an application
|
35
|
-
An application represents a user's application trying to receive webhooks. Once you create an application, you'll receive a `uid` as part of the response that you should save and supply in subsequent API calls to perform other requests such as creating an event.
|
36
|
-
|
37
|
-
```ruby
|
38
|
-
app = Convoy::Application.new(
|
39
|
-
params: {
|
40
|
-
groupID: "c3637195-53cd-4eba-b9df-e7ba9479fbb2"
|
41
|
-
},
|
42
|
-
data: {
|
43
|
-
name: "Integration One"
|
44
|
-
}
|
45
|
-
)
|
46
|
-
|
47
|
-
app_response = app.save
|
29
|
+
Convoy.project_id = "23b1..."
|
48
30
|
```
|
49
31
|
|
50
|
-
###
|
51
|
-
|
32
|
+
### Create Endpoint
|
33
|
+
An endpoint represents a target URL to receive webhook events. You should create one endpoint per user/business or whatever scope works well for you.
|
52
34
|
|
53
35
|
```ruby
|
54
36
|
endpoint = Convoy::Endpoint.new(
|
55
|
-
app_id,
|
56
37
|
data: {
|
57
38
|
"description": "Endpoint One",
|
58
39
|
"http_timeout": "1m",
|
@@ -69,25 +50,21 @@ After creating an endpoint, we need to susbcribe the endpoint to events.
|
|
69
50
|
```ruby
|
70
51
|
subscription = Convoy::Subscription.new(
|
71
52
|
data: {
|
72
|
-
app_id: app_id,
|
73
53
|
endpoint_id: endpoint_id,
|
74
|
-
name: 'ruby subscription'
|
75
|
-
filter_config: {
|
76
|
-
event_types: [ "*" ]
|
77
|
-
}
|
54
|
+
name: 'ruby subscription'
|
78
55
|
}
|
79
56
|
)
|
80
57
|
|
81
58
|
subscription_response = subscription.save
|
82
59
|
```
|
83
60
|
|
84
|
-
###
|
85
|
-
|
61
|
+
### Send Event
|
62
|
+
To send an event, you'll need to pass the `uid` from the endpoint we created earlier.
|
86
63
|
|
87
64
|
```ruby
|
88
65
|
event = Convoy::Event.new(
|
89
66
|
data: {
|
90
|
-
|
67
|
+
endpoint_id: endpoint_id,
|
91
68
|
event_type: "wallet.created",
|
92
69
|
data: {
|
93
70
|
status: "completed",
|
data/convoy.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = "Convoy ruby client to push webhook events from any ruby application."
|
11
11
|
spec.homepage = "https://getconvoy.io"
|
12
12
|
spec.license = "MIT"
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new(">=
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.0.0")
|
14
14
|
|
15
15
|
spec.metadata["homepage_uri"] = spec.homepage
|
16
16
|
spec.metadata["source_code_uri"] = "https://github.com/frain-dev/convoy.rb"
|
@@ -10,7 +10,7 @@ module Convoy
|
|
10
10
|
@id = id
|
11
11
|
@config = config
|
12
12
|
|
13
|
-
super(kwargs)
|
13
|
+
super(**kwargs)
|
14
14
|
end
|
15
15
|
|
16
16
|
def resource_uri
|
@@ -20,5 +20,10 @@ module Convoy
|
|
20
20
|
|
21
21
|
"#{project_base_uri}/endpoints/#{@id}"
|
22
22
|
end
|
23
|
+
|
24
|
+
def pause
|
25
|
+
pause_uri = "#{resource_uri}/pause"
|
26
|
+
send_request(pause_uri, :post, data: @data, params: @params)
|
27
|
+
end
|
23
28
|
end
|
24
29
|
end
|
@@ -10,7 +10,7 @@ module Convoy
|
|
10
10
|
@id = id
|
11
11
|
@config = config
|
12
12
|
|
13
|
-
super(kwargs)
|
13
|
+
super(**kwargs)
|
14
14
|
end
|
15
15
|
|
16
16
|
def resource_uri
|
@@ -20,5 +20,10 @@ module Convoy
|
|
20
20
|
|
21
21
|
"#{project_base_uri}/events/#{@id}"
|
22
22
|
end
|
23
|
+
|
24
|
+
def fanout
|
25
|
+
fanout_uri = "#{resource_uri}/fanout"
|
26
|
+
send_request(fanout_uri, :post, data: @data, params: @params)
|
27
|
+
end
|
23
28
|
end
|
24
29
|
end
|
@@ -8,7 +8,7 @@ module Convoy
|
|
8
8
|
@eventId = eventId
|
9
9
|
@config = config
|
10
10
|
|
11
|
-
super(kwargs)
|
11
|
+
super(**kwargs)
|
12
12
|
end
|
13
13
|
|
14
14
|
def resource_uri
|
@@ -19,7 +19,15 @@ module Convoy
|
|
19
19
|
"#{project_base_uri}/events/#{@eventId}/eventdelivery/#{@id}"
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
|
23
|
+
def retry
|
24
|
+
retry_uri = "#{resource_uri}/resend"
|
25
|
+
send_request(retry_uri, :put, data: @data, params: @params)
|
26
|
+
end
|
23
27
|
|
28
|
+
def force_retry
|
29
|
+
force_retry_uri = "#{resource_uri}/forceresend"
|
30
|
+
send_request(force_retry_uri, :post, data: @data, params: @params)
|
31
|
+
end
|
24
32
|
end
|
25
33
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Convoy
|
2
|
+
class PortalLink < ApiResource
|
3
|
+
include ApiOperations::Get
|
4
|
+
include ApiOperations::Save
|
5
|
+
include ApiOperations::List
|
6
|
+
include ApiOperations::Delete
|
7
|
+
extend ApiOperations::Create
|
8
|
+
|
9
|
+
def initialize(id = nil, config = Convoy.config, **kwargs)
|
10
|
+
@id = id
|
11
|
+
@config = config
|
12
|
+
|
13
|
+
super(**kwargs)
|
14
|
+
end
|
15
|
+
|
16
|
+
def resource_uri
|
17
|
+
if @id.nil?
|
18
|
+
return "#{project_base_uri}/portal-links"
|
19
|
+
end
|
20
|
+
|
21
|
+
"#{project_base_uri}/portal-links/#{@id}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/convoy/version.rb
CHANGED
data/lib/convoy/webhook.rb
CHANGED
@@ -47,12 +47,13 @@ module Convoy
|
|
47
47
|
return Util.secure_compare(compute_signature(payload), sig_header)
|
48
48
|
end
|
49
49
|
|
50
|
-
def verify_advanced_signature
|
50
|
+
def verify_advanced_signature(payload, sig_header)
|
51
51
|
timestamp_header, signatures = get_timestamp_and_signatures(sig_header)
|
52
|
+
payload = "{#{timestamp_header}},{#{payload}}"
|
52
53
|
|
53
54
|
verify_timestamp(timestamp_header)
|
54
55
|
|
55
|
-
unless signatures.any? { |s| Util.secure_compare(
|
56
|
+
unless signatures.any? { |s| Util.secure_compare(compute_signature(payload), s) }
|
56
57
|
raise SignatureVerificationError.new,
|
57
58
|
"No signatures found matching the expected signature for payload"
|
58
59
|
end
|
@@ -74,9 +75,9 @@ module Convoy
|
|
74
75
|
# return encoded string
|
75
76
|
def compute_signature(payload)
|
76
77
|
case @encoding
|
77
|
-
when "hex"
|
78
|
+
when "hex"
|
78
79
|
return OpenSSL::HMAC.hexdigest(@hash, @secret, payload)
|
79
|
-
when "base64"
|
80
|
+
when "base64"
|
80
81
|
hmac = OpenSSL::HMAC.digest(@hash, @secret, payload)
|
81
82
|
return Base64.encode64(hmac)
|
82
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: convoy.rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Subomi Oluwalana
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zeitwerk
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- lib/convoy/resources/endpoint.rb
|
59
59
|
- lib/convoy/resources/event.rb
|
60
60
|
- lib/convoy/resources/event_delivery.rb
|
61
|
+
- lib/convoy/resources/portal_link.rb
|
61
62
|
- lib/convoy/resources/project.rb
|
62
63
|
- lib/convoy/resources/source.rb
|
63
64
|
- lib/convoy/resources/subscription.rb
|
@@ -71,7 +72,7 @@ metadata:
|
|
71
72
|
homepage_uri: https://getconvoy.io
|
72
73
|
source_code_uri: https://github.com/frain-dev/convoy.rb
|
73
74
|
changelog_uri: https://github.com/frain-dev/convoy.rb/blob/main/CHANGELOG
|
74
|
-
post_install_message:
|
75
|
+
post_install_message:
|
75
76
|
rdoc_options: []
|
76
77
|
require_paths:
|
77
78
|
- lib
|
@@ -79,15 +80,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
80
|
requirements:
|
80
81
|
- - ">="
|
81
82
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
+
version: 3.0.0
|
83
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
85
|
requirements:
|
85
86
|
- - ">="
|
86
87
|
- !ruby/object:Gem::Version
|
87
88
|
version: '0'
|
88
89
|
requirements: []
|
89
|
-
rubygems_version: 3.
|
90
|
-
signing_key:
|
90
|
+
rubygems_version: 3.3.7
|
91
|
+
signing_key:
|
91
92
|
specification_version: 4
|
92
93
|
summary: Convoy Ruby Client.
|
93
94
|
test_files: []
|