marketo_api 0.1.1.pre.alpha → 0.3.0.pre.alpha
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/.gitignore +1 -1
- data/.rubocop_todo.yml +44 -0
- data/Gemfile.lock +102 -87
- data/lib/marketo_api/concerns/caching.rb +8 -0
- data/lib/marketo_api/concerns/connection.rb +3 -3
- data/lib/marketo_api/middleware/caching.rb +17 -11
- data/lib/marketo_api/middleware/caching_strategy.rb +75 -0
- data/lib/marketo_api/middleware/logger.rb +18 -9
- data/lib/marketo_api/middleware/raise_error.rb +4 -4
- data/lib/marketo_api/middleware.rb +1 -0
- data/lib/marketo_api/version.rb +1 -1
- data/lib/marketo_api.rb +2 -1
- data/marketo_api.gemspec +12 -11
- metadata +56 -42
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 621998d3de29611ae32a2da7e8501ea13ea0384434126e4de6e8e8802c00bfb5
|
|
4
|
+
data.tar.gz: 9eff51f7105d9e8f369f6e60fddbb18f096eeaa4b1086667f0d235686728b25f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7c25909ea2fd725ebc104199697787d902a28b6670d0d9a3d95d1a06f2b660d2702fbbd8b5569a683a0796f2c8e36d14f020411bdd28462ed90fc3f2c29d2b9
|
|
7
|
+
data.tar.gz: b7e76af0270a5425e83c659b70dbc8e2ed4e6083a2f9cffff951ff054a93f417e4407228f21bccf544cc0b7c2a627600c6ab2f812bea57b71e40ca1ab321e469
|
data/.gitignore
CHANGED
data/.rubocop_todo.yml
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# This configuration was generated by
|
|
2
|
+
# `rubocop --auto-gen-config`
|
|
3
|
+
# on 2023-06-22 18:49:35 UTC using RuboCop version 1.52.1.
|
|
4
|
+
# The point is for the user to remove these configuration records
|
|
5
|
+
# one by one as the offenses are removed from the code base.
|
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
+
|
|
9
|
+
# Offense count: 4
|
|
10
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
11
|
+
# Configuration parameters: EnforcedStyle, IndentationWidth.
|
|
12
|
+
# SupportedStyles: with_first_argument, with_fixed_indentation
|
|
13
|
+
Layout/ArgumentAlignment:
|
|
14
|
+
Exclude:
|
|
15
|
+
- 'bin/_guard-core'
|
|
16
|
+
- 'bin/guard'
|
|
17
|
+
- 'bin/rake'
|
|
18
|
+
- 'bin/rspec'
|
|
19
|
+
|
|
20
|
+
# Offense count: 4
|
|
21
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
22
|
+
Layout/EmptyLineAfterMagicComment:
|
|
23
|
+
Exclude:
|
|
24
|
+
- 'bin/_guard-core'
|
|
25
|
+
- 'bin/guard'
|
|
26
|
+
- 'bin/rake'
|
|
27
|
+
- 'bin/rspec'
|
|
28
|
+
|
|
29
|
+
# Offense count: 2
|
|
30
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
31
|
+
# Configuration parameters: EnforcedStyle.
|
|
32
|
+
# SupportedStyles: always, always_true, never
|
|
33
|
+
Style/FrozenStringLiteralComment:
|
|
34
|
+
Exclude:
|
|
35
|
+
- 'Rakefile'
|
|
36
|
+
- 'bin/console'
|
|
37
|
+
|
|
38
|
+
# Offense count: 1
|
|
39
|
+
# This cop supports safe autocorrection (--autocorrect).
|
|
40
|
+
# Configuration parameters: EnforcedShorthandSyntax, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
|
|
41
|
+
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
|
|
42
|
+
# SupportedShorthandSyntax: always, never, either, consistent
|
|
43
|
+
Style/HashSyntax:
|
|
44
|
+
EnforcedStyle: hash_rockets
|
data/Gemfile.lock
CHANGED
|
@@ -1,110 +1,125 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
marketo_api (0.
|
|
5
|
-
faraday (~>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
marketo_api (0.3.0.pre.alpha)
|
|
5
|
+
faraday (~> 2.7.10)
|
|
6
|
+
faraday-follow_redirects (~> 0.3.0)
|
|
7
|
+
faraday-http-cache (~> 2.2)
|
|
8
|
+
hashie
|
|
9
|
+
json
|
|
9
10
|
|
|
10
11
|
GEM
|
|
11
12
|
remote: https://rubygems.org/
|
|
12
13
|
specs:
|
|
13
|
-
addressable (2.
|
|
14
|
-
public_suffix (
|
|
15
|
-
ast (2.
|
|
16
|
-
coderay (1.1.
|
|
17
|
-
crack (0.4.
|
|
18
|
-
|
|
19
|
-
diff-lcs (1.
|
|
20
|
-
docile (1.
|
|
21
|
-
faraday (
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
addressable (2.8.4)
|
|
15
|
+
public_suffix (>= 2.0.2, < 6.0)
|
|
16
|
+
ast (2.4.2)
|
|
17
|
+
coderay (1.1.3)
|
|
18
|
+
crack (0.4.5)
|
|
19
|
+
rexml
|
|
20
|
+
diff-lcs (1.5.0)
|
|
21
|
+
docile (1.4.0)
|
|
22
|
+
faraday (2.7.10)
|
|
23
|
+
faraday-net_http (>= 2.0, < 3.1)
|
|
24
|
+
ruby2_keywords (>= 0.0.4)
|
|
25
|
+
faraday-follow_redirects (0.3.0)
|
|
26
|
+
faraday (>= 1, < 3)
|
|
27
|
+
faraday-http-cache (2.5.0)
|
|
28
|
+
faraday (>= 0.8)
|
|
29
|
+
faraday-net_http (3.0.2)
|
|
30
|
+
ffi (1.15.5)
|
|
31
|
+
formatador (1.1.0)
|
|
32
|
+
guard (2.18.0)
|
|
28
33
|
formatador (>= 0.2.4)
|
|
29
34
|
listen (>= 2.7, < 4.0)
|
|
30
|
-
lumberjack (
|
|
35
|
+
lumberjack (>= 1.0.12, < 2.0)
|
|
31
36
|
nenv (~> 0.1)
|
|
32
37
|
notiffany (~> 0.0)
|
|
33
|
-
pry (>= 0.
|
|
38
|
+
pry (>= 0.13.0)
|
|
34
39
|
shellany (~> 0.0)
|
|
35
40
|
thor (>= 0.18.1)
|
|
36
|
-
guard-
|
|
41
|
+
guard-compat (1.2.1)
|
|
42
|
+
guard-rspec (4.7.3)
|
|
37
43
|
guard (~> 2.1)
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
guard-compat (~> 1.1)
|
|
45
|
+
rspec (>= 2.99.0, < 4.0)
|
|
46
|
+
guard-rubocop (1.5.0)
|
|
40
47
|
guard (~> 2.0)
|
|
41
|
-
rubocop (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
rubocop (< 2.0)
|
|
49
|
+
hashdiff (1.0.1)
|
|
50
|
+
hashie (5.0.0)
|
|
51
|
+
json (2.6.3)
|
|
52
|
+
language_server-protocol (3.17.0.3)
|
|
53
|
+
listen (3.8.0)
|
|
54
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
55
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
|
56
|
+
lumberjack (1.2.9)
|
|
57
|
+
method_source (1.0.0)
|
|
51
58
|
nenv (0.3.0)
|
|
52
|
-
notiffany (0.1.
|
|
59
|
+
notiffany (0.1.3)
|
|
53
60
|
nenv (~> 0.1)
|
|
54
61
|
shellany (~> 0.0)
|
|
55
|
-
parallel (1.
|
|
56
|
-
parser (2.
|
|
57
|
-
ast (~> 2.
|
|
58
|
-
|
|
59
|
-
pry (0.
|
|
60
|
-
coderay (~> 1.1
|
|
61
|
-
method_source (~> 0
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
rainbow (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
rb-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
rspec-
|
|
73
|
-
rspec-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
parallel (1.23.0)
|
|
63
|
+
parser (3.2.2.3)
|
|
64
|
+
ast (~> 2.4.1)
|
|
65
|
+
racc
|
|
66
|
+
pry (0.14.2)
|
|
67
|
+
coderay (~> 1.1)
|
|
68
|
+
method_source (~> 1.0)
|
|
69
|
+
public_suffix (5.0.3)
|
|
70
|
+
racc (1.7.1)
|
|
71
|
+
rainbow (3.1.1)
|
|
72
|
+
rake (13.0.6)
|
|
73
|
+
rb-fsevent (0.11.2)
|
|
74
|
+
rb-inotify (0.10.1)
|
|
75
|
+
ffi (~> 1.0)
|
|
76
|
+
regexp_parser (2.8.1)
|
|
77
|
+
rexml (3.2.6)
|
|
78
|
+
rspec (3.12.0)
|
|
79
|
+
rspec-core (~> 3.12.0)
|
|
80
|
+
rspec-expectations (~> 3.12.0)
|
|
81
|
+
rspec-mocks (~> 3.12.0)
|
|
82
|
+
rspec-core (3.12.2)
|
|
83
|
+
rspec-support (~> 3.12.0)
|
|
84
|
+
rspec-expectations (3.12.3)
|
|
77
85
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
78
|
-
rspec-support (~> 3.
|
|
79
|
-
rspec-mocks (3.6
|
|
86
|
+
rspec-support (~> 3.12.0)
|
|
87
|
+
rspec-mocks (3.12.6)
|
|
80
88
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
81
|
-
rspec-support (~> 3.
|
|
82
|
-
rspec-support (3.
|
|
83
|
-
rubocop (
|
|
89
|
+
rspec-support (~> 3.12.0)
|
|
90
|
+
rspec-support (3.12.1)
|
|
91
|
+
rubocop (1.55.0)
|
|
92
|
+
json (~> 2.3)
|
|
93
|
+
language_server-protocol (>= 3.17.0)
|
|
84
94
|
parallel (~> 1.10)
|
|
85
|
-
parser (>= 2.
|
|
86
|
-
|
|
87
|
-
|
|
95
|
+
parser (>= 3.2.2.3)
|
|
96
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
97
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
98
|
+
rexml (>= 3.2.5, < 4.0)
|
|
99
|
+
rubocop-ast (>= 1.28.1, < 2.0)
|
|
88
100
|
ruby-progressbar (~> 1.7)
|
|
89
|
-
unicode-display_width (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
101
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
102
|
+
rubocop-ast (1.29.0)
|
|
103
|
+
parser (>= 3.2.1.0)
|
|
104
|
+
ruby-progressbar (1.13.0)
|
|
105
|
+
ruby2_keywords (0.0.5)
|
|
93
106
|
shellany (0.0.1)
|
|
94
|
-
simplecov (0.
|
|
95
|
-
docile (~> 1.1
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
simplecov-html (0.
|
|
99
|
-
|
|
100
|
-
thor (
|
|
101
|
-
unicode-display_width (
|
|
102
|
-
webmock (
|
|
103
|
-
addressable (>= 2.
|
|
107
|
+
simplecov (0.22.0)
|
|
108
|
+
docile (~> 1.1)
|
|
109
|
+
simplecov-html (~> 0.11)
|
|
110
|
+
simplecov_json_formatter (~> 0.1)
|
|
111
|
+
simplecov-html (0.12.3)
|
|
112
|
+
simplecov_json_formatter (0.1.4)
|
|
113
|
+
thor (1.2.2)
|
|
114
|
+
unicode-display_width (2.4.2)
|
|
115
|
+
webmock (3.18.1)
|
|
116
|
+
addressable (>= 2.8.0)
|
|
104
117
|
crack (>= 0.3.2)
|
|
118
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
105
119
|
|
|
106
120
|
PLATFORMS
|
|
107
|
-
|
|
121
|
+
arm64-darwin-21
|
|
122
|
+
x86_64-darwin-22
|
|
108
123
|
|
|
109
124
|
DEPENDENCIES
|
|
110
125
|
guard
|
|
@@ -112,11 +127,11 @@ DEPENDENCIES
|
|
|
112
127
|
guard-rubocop
|
|
113
128
|
marketo_api!
|
|
114
129
|
pry
|
|
115
|
-
rake
|
|
116
|
-
rspec
|
|
117
|
-
rubocop
|
|
118
|
-
simplecov
|
|
119
|
-
webmock
|
|
130
|
+
rake
|
|
131
|
+
rspec
|
|
132
|
+
rubocop
|
|
133
|
+
simplecov
|
|
134
|
+
webmock
|
|
120
135
|
|
|
121
136
|
BUNDLED WITH
|
|
122
|
-
|
|
137
|
+
2.4.10
|
|
@@ -23,7 +23,7 @@ module MarketoApi
|
|
|
23
23
|
# Converts the request into JSON.
|
|
24
24
|
builder.request(:json)
|
|
25
25
|
|
|
26
|
-
# Handles
|
|
26
|
+
# Handles re-authentication for 403 responses.
|
|
27
27
|
if authentication_middleware
|
|
28
28
|
builder.use(authentication_middleware, self, options)
|
|
29
29
|
end
|
|
@@ -35,10 +35,10 @@ module MarketoApi
|
|
|
35
35
|
# builder.use(MarketoApi::Middleware::InstanceURL, self, options)
|
|
36
36
|
|
|
37
37
|
# Caches GET requests.
|
|
38
|
-
builder.use(MarketoApi::Middleware::Caching,
|
|
38
|
+
builder.use(MarketoApi::Middleware::Caching, options_with_custom_strategy) if cache
|
|
39
39
|
|
|
40
40
|
# Follows 30x redirects.
|
|
41
|
-
builder.
|
|
41
|
+
builder.response(:follow_redirects)
|
|
42
42
|
|
|
43
43
|
# Raises errors for 40x responses.
|
|
44
44
|
builder.use(MarketoApi::Middleware::RaiseError)
|
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
module MarketoApi
|
|
2
|
-
class Middleware::Caching <
|
|
2
|
+
class Middleware::Caching < Faraday::HttpCache
|
|
3
3
|
def call(env)
|
|
4
|
-
|
|
4
|
+
unless use_cache?
|
|
5
|
+
expire(@strategy.cache_key_for(
|
|
6
|
+
env[:url],
|
|
7
|
+
env[:request_headers][MarketoApi::Middleware::Authorization::AUTH_HEADER]
|
|
8
|
+
))
|
|
9
|
+
end
|
|
5
10
|
super
|
|
6
11
|
end
|
|
7
12
|
|
|
8
13
|
def expire(key)
|
|
9
|
-
|
|
14
|
+
@strategy.delete(key)
|
|
10
15
|
end
|
|
11
16
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
def delete(request, response)
|
|
18
|
+
headers = %w[Location Content-Location]
|
|
19
|
+
headers.each do |header|
|
|
20
|
+
url = response.headers[header]
|
|
21
|
+
@strategy.delete(request, url) if url
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
@strategy.delete(request, request.url)
|
|
25
|
+
trace :delete
|
|
16
26
|
end
|
|
17
27
|
|
|
18
28
|
def use_cache?
|
|
19
29
|
@options.fetch(:use_cache, true)
|
|
20
30
|
end
|
|
21
|
-
|
|
22
|
-
def hashed_auth_header(env)
|
|
23
|
-
Digest::SHA1.hexdigest(env[:request_headers][MarketoApi::Middleware::Authorization::AUTH_HEADER])
|
|
24
|
-
end
|
|
25
31
|
end
|
|
26
32
|
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'digest/sha1'
|
|
4
|
+
|
|
5
|
+
module MarketoApi
|
|
6
|
+
class Middleware::CachingStrategy < Faraday::HttpCache::Strategies::BaseStrategy
|
|
7
|
+
def write(request, response)
|
|
8
|
+
oauth_token = get_oauth_token(request)
|
|
9
|
+
key = cache_key_for(request.url, oauth_token)
|
|
10
|
+
entry = serialize_entry(request.serializable_hash, response.serializable_hash)
|
|
11
|
+
entries = cache.read(key) || []
|
|
12
|
+
entries = entries.dup if entries.frozen?
|
|
13
|
+
entries.reject! do |(cached_request, cached_response)|
|
|
14
|
+
response_matches?(request, deserialize_object(cached_request), deserialize_object(cached_response))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
entries << entry
|
|
18
|
+
|
|
19
|
+
cache.write(key, entries)
|
|
20
|
+
rescue ::Encoding::UndefinedConversionError => e
|
|
21
|
+
warn "Response could not be serialized: #{e.message}. Try using Marshal to serialize."
|
|
22
|
+
raise e
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def read(request)
|
|
26
|
+
oauth_token = get_oauth_token(request)
|
|
27
|
+
cache_key = cache_key_for(request.url, oauth_token)
|
|
28
|
+
entries = cache.read(cache_key)
|
|
29
|
+
response = lookup_response(request, entries)
|
|
30
|
+
return nil unless response
|
|
31
|
+
|
|
32
|
+
Faraday::HttpCache::Response.new(response)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def delete(request, url)
|
|
36
|
+
oauth_token = get_oauth_token(request)
|
|
37
|
+
cache_key = cache_key_for(url, oauth_token)
|
|
38
|
+
cache.delete(cache_key)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# We don't want to cache requests for different clients, so append the
|
|
42
|
+
# oauth token to the cache key.
|
|
43
|
+
def cache_key_for(url, oauth_token)
|
|
44
|
+
Digest::SHA1.hexdigest("#{@cache_salt}#{url}") + Digest::SHA1.hexdigest(oauth_token)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def lookup_response(request, entries)
|
|
50
|
+
if entries
|
|
51
|
+
entries = entries.map { |entry| deserialize_entry(*entry) }
|
|
52
|
+
_, response = entries.find { |req, res| response_matches?(request, req, res) }
|
|
53
|
+
response
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def response_matches?(request, cached_request, cached_response)
|
|
58
|
+
request.method.to_s == cached_request[:method].to_s &&
|
|
59
|
+
vary_matches?(cached_response, request, cached_request)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def vary_matches?(cached_response, request, cached_request)
|
|
63
|
+
headers = Faraday::Utils::Headers.new(cached_response[:response_headers])
|
|
64
|
+
vary = headers['Vary'].to_s
|
|
65
|
+
|
|
66
|
+
vary.empty? || (vary != '*' && vary.split(/[\s,]+/).all? do |header|
|
|
67
|
+
request.headers[header] == cached_request[:headers][header]
|
|
68
|
+
end)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def get_oauth_token(request)
|
|
72
|
+
request.headers[MarketoApi::Middleware::Authorization::AUTH_HEADER]
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'forwardable'
|
|
2
4
|
|
|
3
5
|
module MarketoApi
|
|
4
|
-
class Middleware::Logger < Faraday::
|
|
6
|
+
class Middleware::Logger < Faraday::Middleware
|
|
5
7
|
extend Forwardable
|
|
6
8
|
|
|
7
9
|
def initialize(app, logger, options)
|
|
@@ -9,7 +11,7 @@ module MarketoApi
|
|
|
9
11
|
@options = options
|
|
10
12
|
@logger = logger || begin
|
|
11
13
|
require 'logger'
|
|
12
|
-
::Logger.new(
|
|
14
|
+
::Logger.new($stdout)
|
|
13
15
|
end
|
|
14
16
|
end
|
|
15
17
|
|
|
@@ -17,19 +19,26 @@ module MarketoApi
|
|
|
17
19
|
|
|
18
20
|
def call(env)
|
|
19
21
|
debug('request') do
|
|
20
|
-
dump url
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
dump :url => env[:url].to_s,
|
|
23
|
+
:method => env[:method],
|
|
24
|
+
:headers => env[:request_headers],
|
|
25
|
+
:body => env[:body]
|
|
24
26
|
end
|
|
25
27
|
super
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def on_complete(env)
|
|
29
31
|
debug('response') do
|
|
30
|
-
dump status
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
dump :status => env[:status].to_s,
|
|
33
|
+
:headers => env[:response_headers],
|
|
34
|
+
:body => env[:body]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def on_error(exc)
|
|
39
|
+
debug('response') do
|
|
40
|
+
dump :details => "#{self.class.name}::#{__method__} - Exception: #{exc.message}",
|
|
41
|
+
:backtrace => exc.backtrace.join("\n")
|
|
33
42
|
end
|
|
34
43
|
end
|
|
35
44
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
module MarketoApi
|
|
2
|
-
class Middleware::RaiseError < Faraday::
|
|
2
|
+
class Middleware::RaiseError < Faraday::Middleware
|
|
3
3
|
def on_complete(env)
|
|
4
4
|
@env = env
|
|
5
5
|
case env[:status]
|
|
@@ -38,9 +38,9 @@ module MarketoApi
|
|
|
38
38
|
|
|
39
39
|
def response_values
|
|
40
40
|
{
|
|
41
|
-
status
|
|
42
|
-
headers
|
|
43
|
-
body
|
|
41
|
+
:status => @env[:status],
|
|
42
|
+
:headers => @env[:response_headers],
|
|
43
|
+
:body => @env[:body]
|
|
44
44
|
}
|
|
45
45
|
end
|
|
46
46
|
end
|
|
@@ -6,6 +6,7 @@ module MarketoApi
|
|
|
6
6
|
autoload :Authentication, 'marketo_api/middleware/authentication'
|
|
7
7
|
autoload :Authorization, 'marketo_api/middleware/authorization'
|
|
8
8
|
autoload :Caching, 'marketo_api/middleware/caching'
|
|
9
|
+
autoload :CachingStrategy,'marketo_api/middleware/caching_strategy'
|
|
9
10
|
autoload :Logger, 'marketo_api/middleware/logger'
|
|
10
11
|
|
|
11
12
|
def initialize(app, client, options)
|
data/lib/marketo_api/version.rb
CHANGED
data/lib/marketo_api.rb
CHANGED
data/marketo_api.gemspec
CHANGED
|
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
5
5
|
require 'marketo_api/version'
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |spec|
|
|
8
|
-
spec.authors = ['
|
|
8
|
+
spec.authors = ['Marketo Sales Connect Team']
|
|
9
9
|
spec.name = 'marketo_api'
|
|
10
10
|
spec.version = MarketoApi::VERSION
|
|
11
11
|
spec.summary = spec.description = %q{Marketo REST API ruby gem}
|
|
@@ -18,20 +18,21 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ['lib']
|
|
20
20
|
|
|
21
|
-
spec.required_ruby_version = '>=
|
|
21
|
+
spec.required_ruby_version = '>= 3.0'
|
|
22
22
|
|
|
23
|
-
spec.add_dependency '
|
|
24
|
-
spec.add_dependency 'faraday', '~> 0.
|
|
25
|
-
spec.add_dependency '
|
|
26
|
-
spec.add_dependency '
|
|
23
|
+
spec.add_dependency 'faraday', '~> 2.7.10'
|
|
24
|
+
spec.add_dependency 'faraday-follow_redirects', '~> 0.3.0'
|
|
25
|
+
spec.add_dependency 'faraday-http-cache', '~> 2.2'
|
|
26
|
+
spec.add_dependency 'hashie'
|
|
27
|
+
spec.add_dependency 'json'
|
|
27
28
|
|
|
28
|
-
spec.add_development_dependency 'rake'
|
|
29
|
-
spec.add_development_dependency 'rspec'
|
|
29
|
+
spec.add_development_dependency 'rake'
|
|
30
|
+
spec.add_development_dependency 'rspec'
|
|
30
31
|
spec.add_development_dependency 'pry'
|
|
31
32
|
spec.add_development_dependency 'guard'
|
|
32
33
|
spec.add_development_dependency 'guard-rspec'
|
|
33
34
|
spec.add_development_dependency 'guard-rubocop'
|
|
34
|
-
spec.add_development_dependency 'rubocop'
|
|
35
|
-
spec.add_development_dependency 'simplecov'
|
|
36
|
-
spec.add_development_dependency 'webmock'
|
|
35
|
+
spec.add_development_dependency 'rubocop'
|
|
36
|
+
spec.add_development_dependency 'simplecov'
|
|
37
|
+
spec.add_development_dependency 'webmock'
|
|
37
38
|
end
|
metadata
CHANGED
|
@@ -1,100 +1,113 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: marketo_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0.pre.alpha
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
autorequire:
|
|
7
|
+
- Marketo Sales Connect Team
|
|
8
|
+
autorequire:
|
|
10
9
|
bindir: exe
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2023-08-14 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
|
-
name:
|
|
14
|
+
name: faraday
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
16
|
requirements:
|
|
18
17
|
- - "~>"
|
|
19
18
|
- !ruby/object:Gem::Version
|
|
20
|
-
version:
|
|
19
|
+
version: 2.7.10
|
|
21
20
|
type: :runtime
|
|
22
21
|
prerelease: false
|
|
23
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
23
|
requirements:
|
|
25
24
|
- - "~>"
|
|
26
25
|
- !ruby/object:Gem::Version
|
|
27
|
-
version:
|
|
26
|
+
version: 2.7.10
|
|
28
27
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name: faraday
|
|
28
|
+
name: faraday-follow_redirects
|
|
30
29
|
requirement: !ruby/object:Gem::Requirement
|
|
31
30
|
requirements:
|
|
32
31
|
- - "~>"
|
|
33
32
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: 0.
|
|
33
|
+
version: 0.3.0
|
|
35
34
|
type: :runtime
|
|
36
35
|
prerelease: false
|
|
37
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
37
|
requirements:
|
|
39
38
|
- - "~>"
|
|
40
39
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: 0.
|
|
40
|
+
version: 0.3.0
|
|
42
41
|
- !ruby/object:Gem::Dependency
|
|
43
|
-
name:
|
|
42
|
+
name: faraday-http-cache
|
|
44
43
|
requirement: !ruby/object:Gem::Requirement
|
|
45
44
|
requirements:
|
|
46
45
|
- - "~>"
|
|
47
46
|
- !ruby/object:Gem::Version
|
|
48
|
-
version:
|
|
47
|
+
version: '2.2'
|
|
49
48
|
type: :runtime
|
|
50
49
|
prerelease: false
|
|
51
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
51
|
requirements:
|
|
53
52
|
- - "~>"
|
|
54
53
|
- !ruby/object:Gem::Version
|
|
55
|
-
version:
|
|
54
|
+
version: '2.2'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: hashie
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
56
69
|
- !ruby/object:Gem::Dependency
|
|
57
70
|
name: json
|
|
58
71
|
requirement: !ruby/object:Gem::Requirement
|
|
59
72
|
requirements:
|
|
60
73
|
- - ">="
|
|
61
74
|
- !ruby/object:Gem::Version
|
|
62
|
-
version:
|
|
75
|
+
version: '0'
|
|
63
76
|
type: :runtime
|
|
64
77
|
prerelease: false
|
|
65
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
79
|
requirements:
|
|
67
80
|
- - ">="
|
|
68
81
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
82
|
+
version: '0'
|
|
70
83
|
- !ruby/object:Gem::Dependency
|
|
71
84
|
name: rake
|
|
72
85
|
requirement: !ruby/object:Gem::Requirement
|
|
73
86
|
requirements:
|
|
74
|
-
- - "
|
|
87
|
+
- - ">="
|
|
75
88
|
- !ruby/object:Gem::Version
|
|
76
|
-
version:
|
|
89
|
+
version: '0'
|
|
77
90
|
type: :development
|
|
78
91
|
prerelease: false
|
|
79
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
93
|
requirements:
|
|
81
|
-
- - "
|
|
94
|
+
- - ">="
|
|
82
95
|
- !ruby/object:Gem::Version
|
|
83
|
-
version:
|
|
96
|
+
version: '0'
|
|
84
97
|
- !ruby/object:Gem::Dependency
|
|
85
98
|
name: rspec
|
|
86
99
|
requirement: !ruby/object:Gem::Requirement
|
|
87
100
|
requirements:
|
|
88
|
-
- - "
|
|
101
|
+
- - ">="
|
|
89
102
|
- !ruby/object:Gem::Version
|
|
90
|
-
version:
|
|
103
|
+
version: '0'
|
|
91
104
|
type: :development
|
|
92
105
|
prerelease: false
|
|
93
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
107
|
requirements:
|
|
95
|
-
- - "
|
|
108
|
+
- - ">="
|
|
96
109
|
- !ruby/object:Gem::Version
|
|
97
|
-
version:
|
|
110
|
+
version: '0'
|
|
98
111
|
- !ruby/object:Gem::Dependency
|
|
99
112
|
name: pry
|
|
100
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -155,46 +168,46 @@ dependencies:
|
|
|
155
168
|
name: rubocop
|
|
156
169
|
requirement: !ruby/object:Gem::Requirement
|
|
157
170
|
requirements:
|
|
158
|
-
- - "
|
|
171
|
+
- - ">="
|
|
159
172
|
- !ruby/object:Gem::Version
|
|
160
|
-
version: 0
|
|
173
|
+
version: '0'
|
|
161
174
|
type: :development
|
|
162
175
|
prerelease: false
|
|
163
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
164
177
|
requirements:
|
|
165
|
-
- - "
|
|
178
|
+
- - ">="
|
|
166
179
|
- !ruby/object:Gem::Version
|
|
167
|
-
version: 0
|
|
180
|
+
version: '0'
|
|
168
181
|
- !ruby/object:Gem::Dependency
|
|
169
182
|
name: simplecov
|
|
170
183
|
requirement: !ruby/object:Gem::Requirement
|
|
171
184
|
requirements:
|
|
172
|
-
- - "
|
|
185
|
+
- - ">="
|
|
173
186
|
- !ruby/object:Gem::Version
|
|
174
|
-
version: 0
|
|
187
|
+
version: '0'
|
|
175
188
|
type: :development
|
|
176
189
|
prerelease: false
|
|
177
190
|
version_requirements: !ruby/object:Gem::Requirement
|
|
178
191
|
requirements:
|
|
179
|
-
- - "
|
|
192
|
+
- - ">="
|
|
180
193
|
- !ruby/object:Gem::Version
|
|
181
|
-
version: 0
|
|
194
|
+
version: '0'
|
|
182
195
|
- !ruby/object:Gem::Dependency
|
|
183
196
|
name: webmock
|
|
184
197
|
requirement: !ruby/object:Gem::Requirement
|
|
185
198
|
requirements:
|
|
186
|
-
- - "
|
|
199
|
+
- - ">="
|
|
187
200
|
- !ruby/object:Gem::Version
|
|
188
|
-
version:
|
|
201
|
+
version: '0'
|
|
189
202
|
type: :development
|
|
190
203
|
prerelease: false
|
|
191
204
|
version_requirements: !ruby/object:Gem::Requirement
|
|
192
205
|
requirements:
|
|
193
|
-
- - "
|
|
206
|
+
- - ">="
|
|
194
207
|
- !ruby/object:Gem::Version
|
|
195
|
-
version:
|
|
208
|
+
version: '0'
|
|
196
209
|
description: Marketo REST API ruby gem
|
|
197
|
-
email:
|
|
210
|
+
email:
|
|
198
211
|
executables:
|
|
199
212
|
- ".keep"
|
|
200
213
|
extensions: []
|
|
@@ -204,6 +217,7 @@ files:
|
|
|
204
217
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
|
205
218
|
- ".gitignore"
|
|
206
219
|
- ".rubocop.yml"
|
|
220
|
+
- ".rubocop_todo.yml"
|
|
207
221
|
- ".travis.yml"
|
|
208
222
|
- CODE_OF_CONDUCT.md
|
|
209
223
|
- Gemfile
|
|
@@ -241,6 +255,7 @@ files:
|
|
|
241
255
|
- lib/marketo_api/middleware/authentication/token.rb
|
|
242
256
|
- lib/marketo_api/middleware/authorization.rb
|
|
243
257
|
- lib/marketo_api/middleware/caching.rb
|
|
258
|
+
- lib/marketo_api/middleware/caching_strategy.rb
|
|
244
259
|
- lib/marketo_api/middleware/logger.rb
|
|
245
260
|
- lib/marketo_api/middleware/raise_error.rb
|
|
246
261
|
- lib/marketo_api/version.rb
|
|
@@ -249,7 +264,7 @@ homepage: https://github.com/toutapp/marketo_api
|
|
|
249
264
|
licenses:
|
|
250
265
|
- MIT
|
|
251
266
|
metadata: {}
|
|
252
|
-
post_install_message:
|
|
267
|
+
post_install_message:
|
|
253
268
|
rdoc_options: []
|
|
254
269
|
require_paths:
|
|
255
270
|
- lib
|
|
@@ -257,16 +272,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
257
272
|
requirements:
|
|
258
273
|
- - ">="
|
|
259
274
|
- !ruby/object:Gem::Version
|
|
260
|
-
version: '
|
|
275
|
+
version: '3.0'
|
|
261
276
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
277
|
requirements:
|
|
263
278
|
- - ">"
|
|
264
279
|
- !ruby/object:Gem::Version
|
|
265
280
|
version: 1.3.1
|
|
266
281
|
requirements: []
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
signing_key:
|
|
282
|
+
rubygems_version: 3.3.7
|
|
283
|
+
signing_key:
|
|
270
284
|
specification_version: 4
|
|
271
285
|
summary: Marketo REST API ruby gem
|
|
272
286
|
test_files: []
|