wrapi 0.1.3 → 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/CHANGELOG.md +7 -0
- data/Gemfile +1 -1
- data/lib/wrapi/configuration.rb +8 -2
- data/lib/wrapi/connection.rb +2 -2
- data/lib/wrapi/pagination.rb +39 -0
- data/lib/wrapi/request.rb +44 -30
- data/lib/wrapi/version.rb +1 -1
- data/lib/wrapi.rb +5 -4
- 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: 1d7d0d197548b78702536dcb3ffd582f1a637ba7c4563b678b682702a55f1f92
|
4
|
+
data.tar.gz: 944dd3cb645f422900a45ff8728a08f47472abb98c64e7c3c34a3a8e696ad0d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51854938895ac5cfdcb616fd9a6a6de72ed0e4a7544bea9eca525b64b8c370b2dbc9b0ca2b596fcbd1838f7b4eaec0a4fa476666e1bca79436f448c647d358cb
|
7
|
+
data.tar.gz: fe27c57580cf3d50d49830d0b1449d177f0de21cb077eb12a3cc953351c1f3d9dc898de8cf4391130dea6f5e549cf9b6530928094cf5866482fefb5e1d795cca
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/lib/wrapi/configuration.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
require_relative './
|
1
|
+
#require_relative './pagination'
|
2
|
+
#require_relative './version'
|
3
|
+
|
2
4
|
module WrAPI
|
3
5
|
# Defines constants and methods related to configuration
|
4
6
|
module Configuration
|
@@ -18,7 +20,8 @@ module WrAPI
|
|
18
20
|
:logger,
|
19
21
|
:format,
|
20
22
|
:page_size,
|
21
|
-
:user_agent
|
23
|
+
:user_agent,
|
24
|
+
:pagination_class
|
22
25
|
].freeze
|
23
26
|
|
24
27
|
# By default, don't set any connection options
|
@@ -36,6 +39,8 @@ module WrAPI
|
|
36
39
|
|
37
40
|
# The user agent that will be sent to the API endpoint if none is set
|
38
41
|
DEFAULT_USER_AGENT = "Ruby API wrapper #{WrAPI::VERSION}".freeze
|
42
|
+
|
43
|
+
DEFAULT_PAGINATION = WrAPI::RequestPagination::DefaultPager
|
39
44
|
|
40
45
|
# @private
|
41
46
|
attr_accessor *VALID_OPTIONS_KEYS
|
@@ -74,6 +79,7 @@ module WrAPI
|
|
74
79
|
self.format = DEFAULT_FORMAT
|
75
80
|
self.page_size = DEFAULT_PAGE_SIZE
|
76
81
|
self.user_agent = DEFAULT_USER_AGENT
|
82
|
+
self.pagination_class = DEFAULT_PAGINATION
|
77
83
|
end
|
78
84
|
end
|
79
85
|
end
|
data/lib/wrapi/connection.rb
CHANGED
@@ -52,9 +52,9 @@ module WrAPI
|
|
52
52
|
connection.response :logger, logger, { headers: true, bodies: true } do |l|
|
53
53
|
# filter json content
|
54
54
|
l.filter(/("password":")(.+?)(".*)/, '\1[REMOVED]\3')
|
55
|
-
l.filter(/("
|
55
|
+
l.filter(/("[Aa]ccess_?[Tt]oken":")(.+?)(".*)/, '\1[REMOVED]\3')
|
56
56
|
# filter header content
|
57
|
-
l.filter(/(client-secret
|
57
|
+
l.filter(/(client[-_]secret[:=].)([^&]+)/, '\1[REMOVED]')
|
58
58
|
l.filter(/(Authorization:.)([^&]+)/, '\1[REMOVED]')
|
59
59
|
end
|
60
60
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module WrAPI
|
5
|
+
# Defines HTTP request methods
|
6
|
+
# required attributes format
|
7
|
+
module RequestPagination
|
8
|
+
|
9
|
+
# Defaut pages asumes all data retrieved in a single go.
|
10
|
+
class DefaultPager
|
11
|
+
|
12
|
+
# initialize with page size
|
13
|
+
def initialize(page_size=nil)
|
14
|
+
@page = 0
|
15
|
+
end
|
16
|
+
|
17
|
+
# go to next page
|
18
|
+
# @return true if nore pages
|
19
|
+
def next_page!(data=nil)
|
20
|
+
@page += 1
|
21
|
+
more_pages?
|
22
|
+
end
|
23
|
+
|
24
|
+
# assume single page
|
25
|
+
def more_pages?
|
26
|
+
@page < 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def page_options
|
30
|
+
{}
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.data(body)
|
34
|
+
body
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
data/lib/wrapi/request.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'json'
|
3
|
-
require File.expand_path('entity', __dir__)
|
4
3
|
|
5
4
|
module WrAPI
|
6
5
|
# Defines HTTP request methods
|
@@ -8,65 +7,80 @@ module WrAPI
|
|
8
7
|
module Request
|
9
8
|
|
10
9
|
# Perform an HTTP GET request and return entity incase format is :json
|
10
|
+
# @return if format is :json an [Entity] is returned, otherwhise the response body
|
11
11
|
def get(path, options = {})
|
12
|
-
response = request(:get, path, options)
|
13
|
-
|
12
|
+
response = request(:get, path, options) do |request|
|
13
|
+
yield(request) if block_given?
|
14
|
+
end
|
15
|
+
:json.eql?(format) ? Entity.new(pagination_class.data(response.body)) : response.body
|
14
16
|
end
|
15
17
|
|
16
|
-
# Perform an HTTP GET request for paged date sets response
|
17
|
-
#
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
#
|
22
|
-
# response format { "page": 0, "totalPages": 0, "total": 0, "nextPageToken": "string", "data": [] }
|
23
|
-
def get_paged(path, options = {}, &block)
|
24
|
-
raise! ArgumentError,
|
25
|
-
"Pages requests should be json formatted (given format '#{format}')" unless :json.eql? format
|
18
|
+
# Perform an HTTP GET request for paged date sets response
|
19
|
+
# @return nil if block given, otherwise complete concatenated json result set
|
20
|
+
def get_paged(path, options = {}, request_labda = nil)
|
21
|
+
raise ArgumentError,
|
22
|
+
"Pages requests should be json formatted (given format '#{format}')" unless :json.eql? format
|
26
23
|
|
27
24
|
result = []
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
25
|
+
pager = create_pager
|
26
|
+
while pager.more_pages?
|
27
|
+
response = request(:get, path, options.merge(pager.page_options)) do |req|
|
28
|
+
request_labda.call(req) if request_labda
|
29
|
+
end
|
30
|
+
d = pager.class.data(response.body)
|
31
|
+
if d.is_a? Array
|
32
|
+
d = pager.class.data(response.body).map { |e| Entity.new(e) }
|
33
|
+
else
|
34
|
+
d = Entity.new(d)
|
35
|
+
end
|
38
36
|
if block_given?
|
39
37
|
yield(d)
|
40
38
|
else
|
41
|
-
|
39
|
+
if d.is_a? Array
|
40
|
+
result += d
|
41
|
+
else
|
42
|
+
result << d
|
43
|
+
end
|
42
44
|
end
|
43
|
-
|
44
|
-
total = data['totalPages'].to_i
|
45
|
-
next_page = data['nextPageToken']
|
45
|
+
pager.next_page!(response.body)
|
46
46
|
end
|
47
47
|
result unless block_given?
|
48
48
|
end
|
49
49
|
|
50
50
|
# Perform an HTTP POST request
|
51
|
+
# @return response is returned in json if format is :json
|
51
52
|
def post(path, options = {})
|
52
|
-
request(:post, path, options)
|
53
|
+
response = request(:post, path, options) do |request|
|
54
|
+
yield(request) if block_given?
|
55
|
+
end
|
53
56
|
end
|
54
57
|
|
55
58
|
# Perform an HTTP PUT request
|
59
|
+
# @return response is returned in json if format is :json
|
56
60
|
def put(path, options = {})
|
57
|
-
request(:put, path, options)
|
61
|
+
response = request(:put, path, options) do |request|
|
62
|
+
yield(request) if block_given?
|
63
|
+
end
|
58
64
|
end
|
59
65
|
|
60
66
|
# Perform an HTTP DELETE request
|
67
|
+
# @return response is returened
|
61
68
|
def delete(path, options = {})
|
62
|
-
request(:delete, path, options)
|
69
|
+
response = request(:delete, path, options) do |request|
|
70
|
+
yield(request) if block_given?
|
71
|
+
end
|
63
72
|
end
|
64
73
|
|
65
74
|
private
|
66
75
|
|
76
|
+
def create_pager
|
77
|
+
pagination_class ? pagination_class.new(page_size) : WrAPI::RequestPagination::DefaultPager
|
78
|
+
end
|
79
|
+
|
67
80
|
# Perform an HTTP request
|
68
81
|
def request(method, path, options)
|
69
82
|
response = connection.send(method) do |request|
|
83
|
+
yield(request) if block_given?
|
70
84
|
uri = URI::Parser.new
|
71
85
|
case method
|
72
86
|
when :get, :delete
|
data/lib/wrapi/version.rb
CHANGED
data/lib/wrapi.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
require File.expand_path('wrapi/
|
2
|
-
require File.expand_path('wrapi/
|
1
|
+
require File.expand_path('wrapi/version', __dir__)
|
2
|
+
require File.expand_path('wrapi/pagination', __dir__)
|
3
3
|
require File.expand_path('wrapi/configuration', __dir__)
|
4
|
+
require File.expand_path('wrapi/connection', __dir__)
|
4
5
|
require File.expand_path('wrapi/api', __dir__)
|
5
|
-
require File.expand_path('wrapi/request', __dir__)
|
6
6
|
require File.expand_path('wrapi/entity', __dir__)
|
7
|
+
require File.expand_path('wrapi/request', __dir__)
|
7
8
|
require File.expand_path('wrapi/respond_to', __dir__)
|
8
|
-
require File.expand_path('wrapi/
|
9
|
+
require File.expand_path('wrapi/authentication', __dir__)
|
9
10
|
|
10
11
|
module WrAPI
|
11
12
|
extend RespondTo
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Janco Tanis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- lib/wrapi/configuration.rb
|
70
70
|
- lib/wrapi/connection.rb
|
71
71
|
- lib/wrapi/entity.rb
|
72
|
+
- lib/wrapi/pagination.rb
|
72
73
|
- lib/wrapi/request.rb
|
73
74
|
- lib/wrapi/respond_to.rb
|
74
75
|
- lib/wrapi/version.rb
|