remote_entity 2.0.0 → 2.1.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/.rubocop.yml +1 -1
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +6 -4
- data/README.md +11 -3
- data/lib/remote_entity/version.rb +1 -1
- data/lib/remote_entity.rb +16 -7
- data/remote_entity.gemspec +4 -4
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b067d90ced8890a77499154dea7970e77d5805d48a16b5d67eef7890a3d21b9
|
4
|
+
data.tar.gz: 99284e3c3f68804086a88b6d0bad1b55b5cc3b52b2c38f1b5a7c314a0334467f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e557430c6043180f1ca654c62f143798764a7297154823528cd7e327f68a764a6684224672ca744dca94682562a96d7b9d96123df79651568c7773e4bed1c53
|
7
|
+
data.tar.gz: d527cfc59ec21bf1c969dc7c29beb515097f5b62f18597bdb7ee41bfeb3ec867092e21a4f602fee7acec52e5c269d9ac1459f1b1b416d0c925c3ef4c49e8d051
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -5,3 +5,9 @@
|
|
5
5
|
## [2.0.0] - 2024-02-09
|
6
6
|
|
7
7
|
- Add `RemoteEntity` namespace to class generated. For example, `RemoteEntity::User`.
|
8
|
+
|
9
|
+
|
10
|
+
## [2.1.0] - 2024-04-26
|
11
|
+
|
12
|
+
- Allow instant authorized token in the method params and bypass request to get oauth2 token
|
13
|
+
- Allow this gem to use with Ruby >= 2.5.0
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
remote_entity (2.
|
4
|
+
remote_entity (2.1.0)
|
5
5
|
cgi (~> 0.2)
|
6
6
|
oauth2 (~> 2.0)
|
7
7
|
|
@@ -9,6 +9,7 @@ GEM
|
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
ast (2.4.2)
|
12
|
+
base64 (0.2.0)
|
12
13
|
cgi (0.4.1)
|
13
14
|
diff-lcs (1.5.0)
|
14
15
|
docile (1.4.0)
|
@@ -18,7 +19,8 @@ GEM
|
|
18
19
|
net-http
|
19
20
|
hashie (5.0.0)
|
20
21
|
json (2.7.1)
|
21
|
-
jwt (2.
|
22
|
+
jwt (2.8.1)
|
23
|
+
base64
|
22
24
|
language_server-protocol (3.17.0.3)
|
23
25
|
multi_xml (0.6.0)
|
24
26
|
net-http (0.4.1)
|
@@ -35,7 +37,7 @@ GEM
|
|
35
37
|
ast (~> 2.4.1)
|
36
38
|
racc
|
37
39
|
racc (1.7.3)
|
38
|
-
rack (3.0.
|
40
|
+
rack (3.0.10)
|
39
41
|
rainbow (3.1.1)
|
40
42
|
rake (13.1.0)
|
41
43
|
regexp_parser (2.9.0)
|
@@ -78,7 +80,7 @@ GEM
|
|
78
80
|
version_gem (~> 1.1, >= 1.1.1)
|
79
81
|
unicode-display_width (2.5.0)
|
80
82
|
uri (0.13.0)
|
81
|
-
version_gem (1.1.
|
83
|
+
version_gem (1.1.4)
|
82
84
|
|
83
85
|
PLATFORMS
|
84
86
|
ruby
|
data/README.md
CHANGED
@@ -6,6 +6,9 @@ It is something less restricts than [her](https://github.com/remi/her) which map
|
|
6
6
|
|
7
7
|
Currently it supports oauth2 `client_credentials` grant type for API authentication.
|
8
8
|
|
9
|
+
## Supporting Ruby versions
|
10
|
+
This gem can be used in Ruby >= 2.5.0. However, it might have incompatibilities as this gem was tested with Ruby 3.2.2. Please test thoroughly.
|
11
|
+
|
9
12
|
## Installation
|
10
13
|
|
11
14
|
Install the gem and add to the application's Gemfile by executing:
|
@@ -31,7 +34,8 @@ RemoteEntity.configure(
|
|
31
34
|
query_params: [:public]
|
32
35
|
},
|
33
36
|
authentication: {
|
34
|
-
method: "oauth2.client_credentials"
|
37
|
+
method: "oauth2.client_credentials",
|
38
|
+
accepting_instant_token: :authorized_token
|
35
39
|
},
|
36
40
|
r_turn: true
|
37
41
|
},
|
@@ -83,7 +87,11 @@ curl --location 'https://example.com/users/1?public=true' \
|
|
83
87
|
|
84
88
|
`Content-Type` header as `application/json` is by default.
|
85
89
|
|
86
|
-
`Authorization` header is generated by oauth2 request using grant type defined in the configuration. The example above uses ouath2 client_credentials grant type. (The gem uses [oauth2](https://gitlab.com/oauth-xx/oauth2/) gem underdying, so the param structure is pretty the same as oauth2)
|
90
|
+
`Authorization` header is generated by oauth2 request using grant type defined in the configuration. The example above uses ouath2 client_credentials grant type. (The gem uses [oauth2](https://gitlab.com/oauth-xx/oauth2/) gem underdying, so the param structure is pretty the same as oauth2). However, if the method has `authentication` key which includes `accepting_instant_token: :authorized_token`, the authentication token request will be bypassed. The `authorized_token` param value will pass instantly in the request `Authorization` header. For example:
|
91
|
+
|
92
|
+
```
|
93
|
+
RemoteEntity::User.find(id: 1, public: true, authorized_token: "authorized-token")
|
94
|
+
```
|
87
95
|
|
88
96
|
Since the `find` method is configured to return value (`r_turn` is set to `true`), it will return whatever the http response has. For example:
|
89
97
|
```
|
@@ -113,7 +121,7 @@ It does not return anything as `r_turn` is set to `false`.
|
|
113
121
|
|
114
122
|
## Contributing
|
115
123
|
|
116
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
124
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/kuroun/remote_entity. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/remote_entity/blob/main/CODE_OF_CONDUCT.md).
|
117
125
|
|
118
126
|
## License
|
119
127
|
|
data/lib/remote_entity.rb
CHANGED
@@ -32,24 +32,32 @@ module RemoteEntity
|
|
32
32
|
request = http_class.new(url)
|
33
33
|
request["Content-Type"] = "application/json"
|
34
34
|
|
35
|
-
|
36
|
-
request["Authorization"] =
|
37
|
-
RemoteEntity.build_oauth2_authorized_token_header(method[:authentication][:method],
|
38
|
-
options[:authentications])
|
39
|
-
end
|
35
|
+
RemoteEntity.set_authorization_header(request, method, arg, options) if method[:authentication]
|
40
36
|
|
41
37
|
if method[:param_mapping] && method[:param_mapping][:body_params]
|
42
38
|
request.body = JSON.dump(RemoteEntity.build_body_params(method[:param_mapping][:body_params], arg))
|
43
39
|
end
|
44
40
|
|
45
41
|
response = https.request(request)
|
46
|
-
|
47
|
-
return
|
42
|
+
|
43
|
+
return JSON.parse(response.read_body) if method[:r_turn] && !response.read_body.empty?
|
48
44
|
end
|
49
45
|
end
|
50
46
|
end
|
51
47
|
end
|
52
48
|
|
49
|
+
def self.set_authorization_header(request, method, arg, options)
|
50
|
+
accepting_instant_token_key = method[:authentication][:accepting_instant_token]
|
51
|
+
|
52
|
+
if accepting_instant_token_key && arg[accepting_instant_token_key]
|
53
|
+
request["Authorization"] = "Bearer #{arg[accepting_instant_token_key]}"
|
54
|
+
elsif method[:authentication][:method].include?("oauth2")
|
55
|
+
request["Authorization"] =
|
56
|
+
RemoteEntity.build_oauth2_authorized_token_header(method[:authentication][:method],
|
57
|
+
options[:authentications])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
53
61
|
def self.build_url(method, arg)
|
54
62
|
url = method[:url]
|
55
63
|
|
@@ -102,6 +110,7 @@ module RemoteEntity
|
|
102
110
|
site: credentials_info[:site],
|
103
111
|
token_url: credentials_info[:token_url])
|
104
112
|
token = client.send(grant_type).get_token(scope: credentials_info[:scope]).token
|
113
|
+
|
105
114
|
"Bearer #{token}"
|
106
115
|
end
|
107
116
|
|
data/remote_entity.gemspec
CHANGED
@@ -9,15 +9,15 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.email = ["kuroun.seung@gmail.com"]
|
10
10
|
|
11
11
|
spec.summary = "Using configuration style to generate Ruby classes and methods that wrap the API calls to a remote service."
|
12
|
-
spec.homepage = "https://github.com/
|
12
|
+
spec.homepage = "https://github.com/kuroun/remote_entity"
|
13
13
|
spec.license = "MIT"
|
14
|
-
spec.required_ruby_version = ">= 2.
|
14
|
+
spec.required_ruby_version = ">= 2.5.0"
|
15
15
|
|
16
16
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
17
17
|
|
18
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
19
|
-
spec.metadata["source_code_uri"] = "https://github.com/
|
20
|
-
spec.metadata["changelog_uri"] = "https://github.com/
|
19
|
+
spec.metadata["source_code_uri"] = "https://github.com/kuroun/remote_entity"
|
20
|
+
spec.metadata["changelog_uri"] = "https://github.com/kuroun/remote_entity/blob/main/CHANGELOG.md"
|
21
21
|
|
22
22
|
# Specify which files should be added to the gem when it is released.
|
23
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_entity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kuroun Seung
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cgi
|
@@ -64,14 +64,14 @@ files:
|
|
64
64
|
- lib/remote_entity/version.rb
|
65
65
|
- remote_entity.gemspec
|
66
66
|
- sig/remote_entity.rbs
|
67
|
-
homepage: https://github.com/
|
67
|
+
homepage: https://github.com/kuroun/remote_entity
|
68
68
|
licenses:
|
69
69
|
- MIT
|
70
70
|
metadata:
|
71
71
|
allowed_push_host: https://rubygems.org
|
72
|
-
homepage_uri: https://github.com/
|
73
|
-
source_code_uri: https://github.com/
|
74
|
-
changelog_uri: https://github.com/
|
72
|
+
homepage_uri: https://github.com/kuroun/remote_entity
|
73
|
+
source_code_uri: https://github.com/kuroun/remote_entity
|
74
|
+
changelog_uri: https://github.com/kuroun/remote_entity/blob/main/CHANGELOG.md
|
75
75
|
post_install_message:
|
76
76
|
rdoc_options: []
|
77
77
|
require_paths:
|
@@ -80,7 +80,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 2.
|
83
|
+
version: 2.5.0
|
84
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - ">="
|