mergent 0.1.2 → 0.2.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/CHANGELOG.md +4 -0
- data/Gemfile.lock +4 -4
- data/README.md +5 -4
- data/lib/mergent/client.rb +13 -3
- data/lib/mergent/request_validator.rb +19 -0
- data/lib/mergent/version.rb +1 -1
- data/lib/mergent.rb +6 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc06e24825269b013a4a16a36b4efbacce4bff7072a3f477d315a2662b6e9d1b
|
4
|
+
data.tar.gz: e1827059fe19cce91e14bacea197db6d56d9faafb4499103e2a03515491064be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b205d9443bb5589e6425969bc735fdfb01b43f14b60c5b94b5409e8ce4113c11c3504f2f28dd1898030a4ca2364d7162367ff59f4483ea1d0d299ac4182b953
|
7
|
+
data.tar.gz: baeff3cb6c216746c0b39007b4271282cdc85a9c2ef9de0d7953a0ad6cd46e0a09b4bbec8b231377f72ae2ee977b6d0255ff58f3292d00002faacf507682a57b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.2.0] - 2022-01-20
|
4
|
+
|
5
|
+
- Add `Mergent::RequestValidator` to validate that webhooks came from Mergent's API
|
6
|
+
|
3
7
|
## [0.1.2] - 2022-1-13
|
4
8
|
|
5
9
|
- Define explicit methods in `Mergent::Task`, to allow for use of verifying doubles when testing against them.
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mergent (0.
|
4
|
+
mergent (0.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -17,7 +17,7 @@ GEM
|
|
17
17
|
parser (3.1.0.0)
|
18
18
|
ast (~> 2.4.1)
|
19
19
|
public_suffix (4.0.6)
|
20
|
-
rainbow (3.
|
20
|
+
rainbow (3.1.1)
|
21
21
|
rake (13.0.6)
|
22
22
|
regexp_parser (2.2.0)
|
23
23
|
rexml (3.2.5)
|
@@ -27,7 +27,7 @@ GEM
|
|
27
27
|
rspec-mocks (~> 3.10.0)
|
28
28
|
rspec-core (3.10.1)
|
29
29
|
rspec-support (~> 3.10.0)
|
30
|
-
rspec-expectations (3.10.
|
30
|
+
rspec-expectations (3.10.2)
|
31
31
|
diff-lcs (>= 1.2.0, < 2.0)
|
32
32
|
rspec-support (~> 3.10.0)
|
33
33
|
rspec-mocks (3.10.2)
|
@@ -45,7 +45,7 @@ GEM
|
|
45
45
|
unicode-display_width (>= 1.4.0, < 3.0)
|
46
46
|
rubocop-ast (1.15.1)
|
47
47
|
parser (>= 3.0.1.1)
|
48
|
-
rubocop-performance (1.13.
|
48
|
+
rubocop-performance (1.13.2)
|
49
49
|
rubocop (>= 1.7.0, < 2.0)
|
50
50
|
rubocop-ast (>= 0.4.0)
|
51
51
|
rubocop-rake (0.6.0)
|
data/README.md
CHANGED
@@ -47,10 +47,11 @@ After checking out the repo, run `bundle` to install dependencies. Then, run
|
|
47
47
|
`rake spec` to run the tests.
|
48
48
|
|
49
49
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
50
|
+
|
51
|
+
To release a new version, update the changelog, bump the version number in
|
52
|
+
`version.rb`, commit that change, and then run `bundle exec rake release`, which
|
53
|
+
will create a git tag for the version, push git commits and the created tag, and
|
54
|
+
push the `.gem` file to [rubygems.org](https://rubygems.org).
|
54
55
|
|
55
56
|
## Contributing
|
56
57
|
|
data/lib/mergent/client.rb
CHANGED
@@ -6,7 +6,7 @@ require "json"
|
|
6
6
|
module Mergent
|
7
7
|
class Client
|
8
8
|
def self.post(resource, params) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
9
|
-
uri = URI("
|
9
|
+
uri = URI("#{Mergent.endpoint}/#{resource}")
|
10
10
|
headers = {
|
11
11
|
Authorization: "Bearer #{Mergent.api_key}",
|
12
12
|
"Content-Type": "application/json"
|
@@ -15,7 +15,7 @@ module Mergent
|
|
15
15
|
request.body = params.to_json
|
16
16
|
|
17
17
|
https = Net::HTTP.new(uri.host, uri.port)
|
18
|
-
https.use_ssl =
|
18
|
+
https.use_ssl = Mergent.endpoint.start_with?("https")
|
19
19
|
response = https.request(request)
|
20
20
|
|
21
21
|
case response
|
@@ -27,10 +27,20 @@ module Mergent
|
|
27
27
|
rescue JSON::ParserError
|
28
28
|
body = {}
|
29
29
|
end
|
30
|
-
raise Mergent::Error, body
|
30
|
+
raise Mergent::Error, error_message(body)
|
31
31
|
end
|
32
32
|
rescue EOFError, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EHOSTUNREACH, Errno::ETIMEDOUT, SocketError
|
33
33
|
raise Mergent::ConnectionError
|
34
34
|
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def self.error_message(body)
|
39
|
+
breakdown = body.fetch("errors", []).map { |error| error.fetch("message", nil) }.compact.join(", ")
|
40
|
+
msg = body["message"]
|
41
|
+
msg << " - #{breakdown}" unless breakdown.empty?
|
42
|
+
msg
|
43
|
+
end
|
44
|
+
private_class_method :error_message
|
35
45
|
end
|
36
46
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mergent
|
4
|
+
class RequestValidator
|
5
|
+
def initialize(api_key)
|
6
|
+
@api_key = api_key || Mergent.api_key
|
7
|
+
end
|
8
|
+
|
9
|
+
def build_signature_for(url, body)
|
10
|
+
data = (url || "") + (body || "")
|
11
|
+
digest = OpenSSL::Digest.new("sha1")
|
12
|
+
Base64.strict_encode64(OpenSSL::HMAC.digest(digest, @api_key, data))
|
13
|
+
end
|
14
|
+
|
15
|
+
def valid_signature?(url, body, signature)
|
16
|
+
build_signature_for(url, body) == signature
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/mergent/version.rb
CHANGED
data/lib/mergent.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "mergent/errors"
|
4
|
+
require_relative "mergent/request_validator"
|
4
5
|
require_relative "mergent/task"
|
5
6
|
require_relative "mergent/version"
|
6
7
|
|
7
8
|
module Mergent
|
9
|
+
ENDPOINT = "https://api.mergent.co/v1"
|
10
|
+
|
8
11
|
class << self
|
9
|
-
attr_accessor :api_key
|
12
|
+
attr_accessor :api_key, :endpoint
|
10
13
|
end
|
11
14
|
end
|
15
|
+
|
16
|
+
Mergent.endpoint = Mergent::ENDPOINT
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mergent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mergent
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby library for the Mergent API. See https://mergent.co for details.
|
14
14
|
email: support@mergent.co
|
@@ -29,6 +29,7 @@ files:
|
|
29
29
|
- lib/mergent/client.rb
|
30
30
|
- lib/mergent/errors.rb
|
31
31
|
- lib/mergent/object.rb
|
32
|
+
- lib/mergent/request_validator.rb
|
32
33
|
- lib/mergent/task.rb
|
33
34
|
- lib/mergent/version.rb
|
34
35
|
- mergent.gemspec
|