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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 929c35260f97e7e32df7cf490709d767df7a5c237a8e2afdb1c35f59b54ff2cd
4
- data.tar.gz: 87153830a05af4508213e719f6bb95469b2188a08153c86df4b18308624ab3df
3
+ metadata.gz: d268bd340f033da7fa9ecf15ddda386b3868420c5dfcc57d3243493621f538c9
4
+ data.tar.gz: 17d13fb5d7b40de355cd5d09a4e55423e90d498f676d2b8eda1c118e336e2ba4
5
5
  SHA512:
6
- metadata.gz: 75eca7fa2a5f62c87f95fa3c055f6a3d1b7c2fdf5a794fba5a10e603e4b4ed9bde291ecff18110beb5dc7b8680883d4ee51500cb407ad45a385d4ea22399e57c
7
- data.tar.gz: c4510f71f02adbb03cc88f81abb4fe82df3ad085f184b4b593bde0d7d7715911d6ed88fa5f10219539ce0072441d40421f3c49ba4c9b2aafa41be46c75d76d85
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 410
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 507
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
- block_given? ? transform_keys(&block).map do |key, val|
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
- block_given? ? transform_keys!(&block).map do |key, val|
29
- val = val.deep_transform_keys!(&block) if val.respond_to?(:deep_transform_keys!)
30
- [key, val]
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yake
4
- VERSION = '0.6.2'
4
+ VERSION = '0.6.5'
5
5
  end
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.2
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-07-06 00:00:00.000000000 Z
11
+ date: 2022-08-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: