remote_entity 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
- - ">="
|