yake 0.6.2 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -0
- data/lib/yake/errors.rb +50 -2
- data/lib/yake/support.rb +26 -8
- data/lib/yake/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d268bd340f033da7fa9ecf15ddda386b3868420c5dfcc57d3243493621f538c9
|
4
|
+
data.tar.gz: 17d13fb5d7b40de355cd5d09a4e55423e90d498f676d2b8eda1c118e336e2ba4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0fa7ea99f80783db6d7c194bacc3700afaec5ae945d9b7364c4bfa976ceaa8491c9a1596614632139700776235d74f86433319cb6fceb947e1d4427562df5543
|
7
|
+
data.tar.gz: fe09389ff1a12756ace3e03950b2e7fb241b21037d513c0bd23b1681b03072178ee5caf5947f98d2457ae760d2cc6f9405d9265974cc24650d440f8fe29a467f
|
data/README.md
CHANGED
@@ -239,6 +239,11 @@ hash.deep_transform_keys!(&:to_s)
|
|
239
239
|
{ f: 'g', a: { d: 'e', b: 'c' } }.to_json_sorted
|
240
240
|
# => '{"a":{"b":"c","d":"e"},"f":"g"}'
|
241
241
|
|
242
|
+
{ f: 'g', a: { d: 'e', b: 'c' } }.to_struct
|
243
|
+
# => #<OpenStruct f="g", a={:d=>"e", :b=>"c"}>
|
244
|
+
|
245
|
+
{ f: 'g', a: { d: 'e', b: 'c' } }.to_deep_struct
|
246
|
+
# => #<OpenStruct f="g", a=#<OpenStruct d="e", b="c">>
|
242
247
|
```
|
243
248
|
|
244
249
|
`Integer` helpers:
|
@@ -297,6 +302,9 @@ host / path
|
|
297
302
|
|
298
303
|
'fizz=buzz'.to_h_from_form
|
299
304
|
# => { "fizz" => "buzz" }
|
305
|
+
|
306
|
+
'2009-02-13T23:31:30Z'.utc
|
307
|
+
# => 2009-02-13 23:31:30 UTC
|
300
308
|
```
|
301
309
|
|
302
310
|
`Symbol` helpers
|
data/lib/yake/errors.rb
CHANGED
@@ -29,7 +29,7 @@ module Yake
|
|
29
29
|
class RequestTimeout < Error; end # HTTP 408
|
30
30
|
class Conflict < Error; end # HTTP 409
|
31
31
|
class Gone < Error; end # HTTP 410
|
32
|
-
class LengthRequired < Error; end # HTTP
|
32
|
+
class LengthRequired < Error; end # HTTP 411
|
33
33
|
class PreconditionFailed < Error; end # HTTP 412
|
34
34
|
class PayloadTooLarge < Error; end # HTTP 413
|
35
35
|
class UriTooLong < Error; end # HTTP 414
|
@@ -58,6 +58,54 @@ module Yake
|
|
58
58
|
class InsufficientStorage < Error; end # HTTP 507
|
59
59
|
class LoopDetected < Error; end # HTTP 508
|
60
60
|
class NotExtended < Error; end # HTTP 510
|
61
|
-
class NetworkAuthenticationRequired < Error; end # HTTP
|
61
|
+
class NetworkAuthenticationRequired < Error; end # HTTP 511
|
62
|
+
|
63
|
+
ERRORS = {
|
64
|
+
'400' => BadRequest,
|
65
|
+
'401' => Unauthorized,
|
66
|
+
'402' => PaymentRequired,
|
67
|
+
'403' => Forbidden,
|
68
|
+
'404' => NotFound,
|
69
|
+
'405' => MethodNotAllowed,
|
70
|
+
'406' => NotAcceptable,
|
71
|
+
'407' => ProxyAuthenticationRequired,
|
72
|
+
'408' => RequestTimeout,
|
73
|
+
'409' => Conflict,
|
74
|
+
'410' => Gone,
|
75
|
+
'411' => LengthRequired,
|
76
|
+
'412' => PreconditionFailed,
|
77
|
+
'413' => PayloadTooLarge,
|
78
|
+
'414' => UriTooLong,
|
79
|
+
'415' => UnsupportedMediaType,
|
80
|
+
'416' => RangeNotSatisfiable,
|
81
|
+
'417' => ExpectationFailed,
|
82
|
+
'418' => ImATeapot,
|
83
|
+
'420' => EnhanceYourCalm,
|
84
|
+
'421' => MisdirectedRequest,
|
85
|
+
'422' => UnprocessableEntity,
|
86
|
+
'423' => Locked,
|
87
|
+
'424' => FailedDependency,
|
88
|
+
'425' => TooEarly,
|
89
|
+
'426' => UpgradeRequired,
|
90
|
+
'428' => PreconditionRequired,
|
91
|
+
'429' => TooManyRequests,
|
92
|
+
'431' => RequestHeaderFieldsTooLarge,
|
93
|
+
'451' => UnavailableForLegalReasons,
|
94
|
+
'500' => InternalServerError,
|
95
|
+
'501' => NotImplemented,
|
96
|
+
'502' => BadGateway,
|
97
|
+
'503' => ServiceUnavailable,
|
98
|
+
'504' => GatewayTimeout,
|
99
|
+
'505' => HttpVersionNotSupported,
|
100
|
+
'506' => VariantAlsoNegotiates,
|
101
|
+
'507' => InsufficientStorage,
|
102
|
+
'508' => LoopDetected,
|
103
|
+
'510' => NotExtended,
|
104
|
+
'511' => NetworkAuthenticationRequired,
|
105
|
+
}
|
106
|
+
|
107
|
+
def self.[](code)
|
108
|
+
ERRORS.fetch(code.to_s)
|
109
|
+
end
|
62
110
|
end
|
63
111
|
end
|
data/lib/yake/support.rb
CHANGED
@@ -15,19 +15,36 @@ class Hash
|
|
15
15
|
def symbolize_names!() deep_transform_keys!(&:to_sym) end
|
16
16
|
def to_form() URI.encode_www_form(self) end
|
17
17
|
def to_json_sorted() deep_sort.to_json end
|
18
|
-
|
18
|
+
def to_struct() OpenStruct.new(self) end
|
19
19
|
|
20
20
|
def deep_transform_keys(&block)
|
21
|
-
|
22
|
-
val = val.deep_transform_keys(&block) if val.respond_to?(:deep_transform_keys)
|
23
|
-
[key, val]
|
24
|
-
end.to_h : self
|
21
|
+
deep_transform(:transform_keys, &block)
|
25
22
|
end
|
26
23
|
|
27
24
|
def deep_transform_keys!(&block)
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
deep_transform(:transform_keys!, &block)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_deep_struct
|
29
|
+
to_struct.tap do |struct|
|
30
|
+
struct.to_h.each do |key, val|
|
31
|
+
struct[key] = if val.is_a?(Array)
|
32
|
+
val.map do |item|
|
33
|
+
item.respond_to?(:to_deep_struct) ? item.to_deep_struct : item
|
34
|
+
end
|
35
|
+
elsif val.is_a?(Hash)
|
36
|
+
val.to_deep_struct
|
37
|
+
else
|
38
|
+
val
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private def deep_transform(method, &block)
|
45
|
+
f = -> (x) { x.respond_to?(:"deep_#{method}") ? x.send(:"deep_#{method}", &block) : x }
|
46
|
+
block_given? ? send(method, &block).map do |key, val|
|
47
|
+
[key, val.is_a?(Array) ? val.map(&f) : val.then(&f)]
|
31
48
|
end.to_h : self
|
32
49
|
end
|
33
50
|
end
|
@@ -67,6 +84,7 @@ class String
|
|
67
84
|
def strict_encode64() Base64.strict_encode64(self) end
|
68
85
|
def to_h_from_json(**params) JSON.parse(self, **params) end
|
69
86
|
def to_h_from_form() URI.decode_www_form(self).to_h end
|
87
|
+
def utc() UTC.parse(self) end
|
70
88
|
end
|
71
89
|
|
72
90
|
class Symbol
|
data/lib/yake/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Mancevice
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email:
|