async-rest 0.18.0 → 0.19.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
- checksums.yaml.gz.sig +0 -0
- data/lib/async/rest/version.rb +1 -1
- data/lib/async/rest/wrapper/generic.rb +21 -2
- data/readme.md +7 -0
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9feb22e0660bd79fdf80e6fc2146afa4b6c51f6ef9a08e912415c59d99677232
|
4
|
+
data.tar.gz: 4ed1027a6ff4cd8af484bbe7a237f3aef1933ef7e965551e0289ab672c8429e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c79a403bc85492375ec4cc0f3a396a3beb834f1cd6813a631b0e6eeca99a65e4d7aae2c575892513ac93d4d885dce621e35cf8590fdcb0788254a031fc59b6bb
|
7
|
+
data.tar.gz: 0c99e3832e8faf24bfec7778cc13879aa9f59b90f0fb9662ff585cdfa34d1227301baf44bc5f49be27c77064933abe6c1b5929b52eda78f06a3fee88b2378140
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/async/rest/version.rb
CHANGED
@@ -7,12 +7,29 @@ module Async
|
|
7
7
|
module REST
|
8
8
|
module Wrapper
|
9
9
|
class Generic
|
10
|
+
protected def response_for(resource, request)
|
11
|
+
while true
|
12
|
+
response = resource.call(request)
|
13
|
+
|
14
|
+
if response.status == 429
|
15
|
+
if retry_after = response.headers["retry-after"]
|
16
|
+
sleep(retry_after.to_f)
|
17
|
+
else
|
18
|
+
# Without the `retry-after` header, we can't determine how long to wait, so we just return the response.
|
19
|
+
return response
|
20
|
+
end
|
21
|
+
else
|
22
|
+
return response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
10
27
|
def call(resource, method = "GET", payload = nil, &block)
|
11
28
|
request = ::Protocol::HTTP::Request[method, nil]
|
12
29
|
|
13
30
|
self.prepare_request(request, payload)
|
14
31
|
|
15
|
-
response =
|
32
|
+
response = self.response_for(resource, request)
|
16
33
|
|
17
34
|
# If we exit this block because of an exception, we close the response. This ensures we don't have any dangling connections.
|
18
35
|
begin
|
@@ -48,7 +65,9 @@ module Async
|
|
48
65
|
# Wrap the response body in the given klass.
|
49
66
|
def wrap_response(response)
|
50
67
|
if body = response.body
|
51
|
-
|
68
|
+
if parser = parser_for(response)
|
69
|
+
response.body = parser.new(body)
|
70
|
+
end
|
52
71
|
end
|
53
72
|
|
54
73
|
return response
|
data/readme.md
CHANGED
@@ -15,6 +15,13 @@ Please see the [project documentation](https://socketry.github.io/async-rest/) f
|
|
15
15
|
|
16
16
|
- [Getting Started](https://socketry.github.io/async-rest/guides/getting-started/index) - This guide explains the design of the `async-rest` gem and how to use it to access RESTful APIs.
|
17
17
|
|
18
|
+
## See Also
|
19
|
+
|
20
|
+
- [async-ollama](https://github.com/socketry/async-ollama) - A client for Ollama, a local large language model server.
|
21
|
+
- [async-discord](https://github.com/socketry/async-discord) - A client for Discord, a popular chat platform.
|
22
|
+
- [cloudflare](https://github.com/socketry/cloudflare) - A client for Cloudflare, a popular CDN and DDoS protection service.
|
23
|
+
- [async-slack](https://github.com/socketry/async-slack) - A client for Slack, a popular chat platform.
|
24
|
+
|
18
25
|
## Contributing
|
19
26
|
|
20
27
|
We welcome contributions to this project.
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -40,7 +40,7 @@ cert_chain:
|
|
40
40
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
41
41
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
42
42
|
-----END CERTIFICATE-----
|
43
|
-
date: 2024-
|
43
|
+
date: 2024-11-26 00:00:00.000000000 Z
|
44
44
|
dependencies:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: async-http
|
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
110
|
requirements: []
|
111
|
-
rubygems_version: 3.5.
|
111
|
+
rubygems_version: 3.5.22
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
114
|
summary: A library for RESTful clients (and hopefully servers).
|
metadata.gz.sig
CHANGED
Binary file
|