client-api-builder 0.3.1 → 0.4.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 +32 -1
- data/client-api-builder.gemspec +3 -3
- data/examples/lorem_ipsum_client.rb +16 -0
- data/lib/client_api_builder/router.rb +2 -1
- data/script/console +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c22eb6c8362909af90380e2513875c7a82c4bd67028e5a601694c1d604fc599d
|
4
|
+
data.tar.gz: e6ad4f872b67a07563b88f3880bbd1f3375ed2d628a4c15cdedb0734fc9723a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5bbe4fe12d3ea5ca240b445630360346a0a1628c340c9ce602efbacfb185ad23c7215233dcb84cb245ff5d3961b0695e8d177a15c39f87e9f6f6b4c0d030e60c
|
7
|
+
data.tar.gz: 44c82d195b80ad34205af3fa256523fa0a3a1e7249bd857ac7cc0cece431d9d75906f26a5714914075e0b9291d84ad5649704add740c099d960ad2e60ad3e2ee
|
data/README.md
CHANGED
@@ -1,2 +1,33 @@
|
|
1
1
|
# client-api-builder
|
2
|
-
|
2
|
+
|
3
|
+
Utility for creating API clients through configuration
|
4
|
+
|
5
|
+
Example:
|
6
|
+
|
7
|
+
```
|
8
|
+
class LoremIpsumClient
|
9
|
+
include ClientApiBuilder::Router
|
10
|
+
|
11
|
+
# by default it converts the body data to JSON
|
12
|
+
# to convert the body to query params (x=1&y=2) use the following
|
13
|
+
# if using active support change this to :to_query
|
14
|
+
body_builder :query_params
|
15
|
+
|
16
|
+
base_url 'https://www.lipsum.com'
|
17
|
+
|
18
|
+
header 'Content-Type', 'application/x-www-form-urlencoded'
|
19
|
+
header 'Accept', 'application/json'
|
20
|
+
|
21
|
+
# this creates a method called create_lorem_ipsum with 2 named arguments amont and what
|
22
|
+
route :create_lorem_ipsum, '/feed/json', body: {amount: :amount, what: :what, start: 'yes', generate: 'Generate Lorem Ipsum'}
|
23
|
+
end
|
24
|
+
```
|
25
|
+
|
26
|
+
How to use:
|
27
|
+
|
28
|
+
```
|
29
|
+
client = LoremIpsumClient.new
|
30
|
+
payload = client.create_lorem_ipsum(amount: 10, what: 'words')
|
31
|
+
puts payload.dig('feed', 'lipsum')
|
32
|
+
# outputs: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam at.
|
33
|
+
```
|
data/client-api-builder.gemspec
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'client-api-builder'
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.4.0'
|
6
6
|
s.licenses = ['MIT']
|
7
|
-
s.summary = '
|
8
|
-
s.description = '
|
7
|
+
s.summary = 'Utility for creating API clients through configuration'
|
8
|
+
s.description = 'Create API clients through configuration with complete transparency'
|
9
9
|
s.authors = ['Doug Youch']
|
10
10
|
s.email = 'dougyouch@gmail.com'
|
11
11
|
s.homepage = 'https://github.com/dougyouch/client-api-builder'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class LoremIpsumClient
|
2
|
+
include ClientApiBuilder::Router
|
3
|
+
|
4
|
+
# by default it converts the body data to JSON
|
5
|
+
# to convert the body to query params (x=1&y=2) use the following
|
6
|
+
# if using active support change this to :to_query
|
7
|
+
body_builder :query_params
|
8
|
+
|
9
|
+
base_url 'https://www.lipsum.com'
|
10
|
+
|
11
|
+
header 'Content-Type', 'application/x-www-form-urlencoded'
|
12
|
+
header 'Accept', 'application/json'
|
13
|
+
|
14
|
+
# this creates a method called create_lorem_ipsum with 2 named arguments amont and what
|
15
|
+
route :create_lorem_ipsum, '/feed/json', body: {amount: :amount, what: :what, start: 'yes', generate: 'Generate Lorem Ipsum'}
|
16
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'inheritance-helper'
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module ClientApiBuilder
|
5
6
|
module Router
|
@@ -9,7 +10,7 @@ module ClientApiBuilder
|
|
9
10
|
base.include ::ClientApiBuilder::Section
|
10
11
|
base.include ::ClientApiBuilder::NetHTTP::Request
|
11
12
|
base.include(::ClientApiBuilder::ActiveSupportNotifications) if defined?(ActiveSupport)
|
12
|
-
base.send(:attr_reader, :response, :request_options, :total_request_time, :
|
13
|
+
base.send(:attr_reader, :response, :request_options, :total_request_time, :request_attempts)
|
13
14
|
end
|
14
15
|
|
15
16
|
module ClassMethods
|
data/script/console
CHANGED
@@ -6,6 +6,7 @@ $LOAD_PATH << File.expand_path('../examples', __dir__)
|
|
6
6
|
require 'client-api-builder'
|
7
7
|
autoload :BasicAuthExampleClient, 'basic_auth_example_client'
|
8
8
|
autoload :IMDBDatesetsClient, 'imdb_datasets_client'
|
9
|
+
autoload :LoremIpsumClient, 'lorem_ipsum_client'
|
9
10
|
require 'logger'
|
10
11
|
LOG = Logger.new(STDOUT)
|
11
12
|
ClientApiBuilder.logger = LOG
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: client-api-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Doug Youch
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.2.5
|
27
|
-
description:
|
27
|
+
description: Create API clients through configuration with complete transparency
|
28
28
|
email: dougyouch@gmail.com
|
29
29
|
executables: []
|
30
30
|
extensions: []
|
@@ -40,6 +40,7 @@ files:
|
|
40
40
|
- client-api-builder.gemspec
|
41
41
|
- examples/basic_auth_example_client.rb
|
42
42
|
- examples/imdb_datasets_client.rb
|
43
|
+
- examples/lorem_ipsum_client.rb
|
43
44
|
- lib/client-api-builder.rb
|
44
45
|
- lib/client_api_builder/active_support_log_subscriber.rb
|
45
46
|
- lib/client_api_builder/active_support_notifications.rb
|
@@ -71,5 +72,5 @@ requirements: []
|
|
71
72
|
rubygems_version: 3.3.3
|
72
73
|
signing_key:
|
73
74
|
specification_version: 4
|
74
|
-
summary:
|
75
|
+
summary: Utility for creating API clients through configuration
|
75
76
|
test_files: []
|