apiphobic-resource 1.1.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.txt +1 -1
- data/lib/apiphobic/parameters/filter.rb +9 -10
- data/lib/apiphobic/parameters/include.rb +2 -6
- data/lib/apiphobic/parameters/sort.rb +2 -2
- data/lib/apiphobic/resource/collection.rb +4 -0
- data/lib/apiphobic/resource/model.rb +36 -9
- data/lib/apiphobic/resource/processors/filtering.rb +1 -1
- data/lib/apiphobic/resource/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +39 -27
- 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: 903c1eaded9d586c56a64b3d37262e2928e2ec21d68038bf6d0e74ec706bb21b
|
4
|
+
data.tar.gz: 4ffbae8c2c18055f11a915f9b4fad69349ce272f4bd67c84aaf5b50139d0bff4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 452c15e4c4f3083d5661c0cb553064d72018a56aed0233c7d7a9c367b5ef2455fabaa8b379ab4e0367fbd0f83f7453c4ff3ae4976456bcc68bdf04d27bca688a
|
7
|
+
data.tar.gz: d461fe912e2329d3528d5697497a2fcd1e563ed1da675108a0a6e98c623141a6d68589abddcd0c4f7e412888f04e3886cf2a6d8d0ebedee5f72bd59edfad0911
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/LICENSE.txt
CHANGED
@@ -5,7 +5,7 @@ module Parameters
|
|
5
5
|
class Filter
|
6
6
|
FLOAT = /\A[\-+]?[_\d]+\.[_\d]+\z/
|
7
7
|
INTEGER = /\A[\-+]?[_\d]+\z/
|
8
|
-
ISO8601 = /\d{4}
|
8
|
+
ISO8601 = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:[+\-]\d{2}:\d{2}|Z)/
|
9
9
|
NUMERICAL = /[\-+]?[_\d]+(?:\.\d+)?/
|
10
10
|
|
11
11
|
DATE_RANGE = /\A(#{ISO8601})\.\.\.?(#{ISO8601})\z/
|
@@ -39,12 +39,11 @@ class Filter
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
# rubocop:disable Lint/AssignmentInCondition
|
43
|
-
# rubocop:disable Metrics/
|
44
|
-
def format_value(value)
|
42
|
+
# rubocop:disable Lint/AssignmentInCondition
|
43
|
+
def format_value(value) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
|
45
44
|
return value unless value.is_a?(::String)
|
46
45
|
|
47
|
-
if range_points
|
46
|
+
if range_points = value.match(DATE_RANGE)
|
48
47
|
exclusive = value.include?('...')
|
49
48
|
starting_point = ::Time.iso8601(range_points[1])
|
50
49
|
ending_point = ::Time.iso8601(range_points[2])
|
@@ -66,17 +65,17 @@ class Filter
|
|
66
65
|
value
|
67
66
|
end
|
68
67
|
end
|
69
|
-
# rubocop:enable
|
70
|
-
# rubocop:enable Lint/AssignmentInCondition, Metrics/AbcSize,
|
68
|
+
# rubocop:enable Lint/AssignmentInCondition
|
71
69
|
|
72
70
|
def string_to_number(other)
|
73
71
|
other = other.delete('_')
|
74
72
|
|
75
|
-
|
73
|
+
case other
|
74
|
+
when 'Infinity'
|
76
75
|
9_999_999
|
77
|
-
|
76
|
+
when FLOAT
|
78
77
|
other.to_f
|
79
|
-
|
78
|
+
when INTEGER
|
80
79
|
other.to_i
|
81
80
|
end
|
82
81
|
end
|
@@ -23,9 +23,7 @@ class Include
|
|
23
23
|
|
24
24
|
private
|
25
25
|
|
26
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
27
|
-
# rubocop:disable Metrics/BlockNesting
|
28
|
-
def map_inclusions(array)
|
26
|
+
def map_inclusions(array) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
|
29
27
|
mapped = array.each_with_object([{}]) do |inclusion, memo|
|
30
28
|
if inclusion.is_a?(::Hash)
|
31
29
|
memo[0] = inclusion
|
@@ -37,7 +35,7 @@ class Include
|
|
37
35
|
else
|
38
36
|
memo.delete(first)
|
39
37
|
|
40
|
-
memo[0][first] = if memo[0][first].nil?
|
38
|
+
memo[0][first] = if memo[0][first].nil? # rubocop:disable Metrics/BlockNesting
|
41
39
|
rest
|
42
40
|
else
|
43
41
|
map_inclusions(Array(memo[0][first]) << rest)
|
@@ -50,8 +48,6 @@ class Include
|
|
50
48
|
|
51
49
|
mapped
|
52
50
|
end
|
53
|
-
# rubocop:enable Metrics/BlockNesting
|
54
|
-
# rubocop:enable Metrics/PerceivedComplexity,
|
55
51
|
end
|
56
52
|
end
|
57
53
|
end
|
@@ -16,13 +16,13 @@ class Sort
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def to_h
|
19
|
-
@to_h ||=
|
19
|
+
@to_h ||= to_a.to_h
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_a
|
23
23
|
@to_a ||= raw_parameters.map do |raw_parameter|
|
24
24
|
if raw_parameter.start_with?(DESCENDING_PREFIX)
|
25
|
-
[raw_parameter[1
|
25
|
+
[raw_parameter[1..], 'desc']
|
26
26
|
else
|
27
27
|
[raw_parameter, 'asc']
|
28
28
|
end
|
@@ -15,26 +15,35 @@ class Model
|
|
15
15
|
|
16
16
|
DEFAULT_PROCESSORS = %w{including}.freeze
|
17
17
|
|
18
|
-
attr_accessor :
|
18
|
+
attr_accessor :id,
|
19
|
+
:resource,
|
19
20
|
:parameters
|
20
21
|
attr_reader :processors
|
21
22
|
|
22
|
-
def_delegators :
|
23
|
-
:assign_attributes,
|
23
|
+
def_delegators :processed,
|
24
24
|
:delete,
|
25
|
-
:
|
26
|
-
:save
|
25
|
+
:subscribe
|
27
26
|
|
28
|
-
def initialize(resource:, parameters:, **options)
|
27
|
+
def initialize(resource:, id:, parameters:, **options)
|
28
|
+
self.id = id
|
29
29
|
self.resource = resource
|
30
30
|
self.parameters = parameters.dup
|
31
31
|
self.processors = options.fetch(:processors, self.class::DEFAULT_PROCESSORS)
|
32
32
|
end
|
33
33
|
|
34
34
|
def processed
|
35
|
-
@processed
|
36
|
-
|
37
|
-
|
35
|
+
@processed \
|
36
|
+
||= begin
|
37
|
+
processed = processors.inject(resource) do |processed_resource, processor|
|
38
|
+
processor.processed(processed_resource, parameters)
|
39
|
+
end
|
40
|
+
|
41
|
+
if instance_of?(::Apiphobic::Resource::Collection)
|
42
|
+
processed
|
43
|
+
else
|
44
|
+
processed.find_by(id: id) || processed.new
|
45
|
+
end
|
46
|
+
end
|
38
47
|
end
|
39
48
|
|
40
49
|
def meta
|
@@ -43,6 +52,24 @@ class Model
|
|
43
52
|
end
|
44
53
|
end
|
45
54
|
|
55
|
+
def assign_attributes(attrs)
|
56
|
+
processed.assign_attributes(attrs)
|
57
|
+
|
58
|
+
processed
|
59
|
+
end
|
60
|
+
|
61
|
+
def save!
|
62
|
+
processed.save!
|
63
|
+
|
64
|
+
processed
|
65
|
+
end
|
66
|
+
|
67
|
+
def save
|
68
|
+
processed.save
|
69
|
+
|
70
|
+
processed
|
71
|
+
end
|
72
|
+
|
46
73
|
def processors=(other)
|
47
74
|
@processors = other.map do |processor|
|
48
75
|
Object.const_get("::Apiphobic::Resource::Processors::#{processor.capitalize}")
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apiphobic-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thegranddesign
|
@@ -10,28 +10,34 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
13
|
+
MIIEyjCCAzKgAwIBAgIBATANBgkqhkiG9w0BAQsFADBVMSIwIAYDVQQDDBlsb2Nh
|
14
|
+
bGV1bmtub3duODEwX3J1YnlnZW1zMRowGAYKCZImiZPyLGQBGRYKcHJvdG9ubWFp
|
15
|
+
bDETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0yMjA3MDkwNTMxMjJaFw0yMzA3MDkw
|
16
|
+
NTMxMjJaMFUxIjAgBgNVBAMMGWxvY2FsZXVua25vd244MTBfcnVieWdlbXMxGjAY
|
17
|
+
BgoJkiaJk/IsZAEZFgpwcm90b25tYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
|
18
|
+
ojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA0otlhSPyU7jLLW1p786Mo/pV
|
19
|
+
5cJ1Ed8D/bJK78PqGFO2h0ZUefupxT5PRMokLYNNGRPopnAAxZ0zVxJ68aOyYCBW
|
20
|
+
Wk3/XFcXCrtk/OcFwLTltgeMjyqCBd/zRRx6CCjY4uOfH0E3n1gQ6Fbmewjg83XJ
|
21
|
+
nOs7Gu/hzj5+feEQ1Exmg6z1oCM/8BTIBtK+p++HvcDK3AhJ7x3fc6P9WS+22w6j
|
22
|
+
7jpi3p9YtoAjrXIzw3lsobiX+bEt+N+T47e8gOATVgapuZ/QmJzNU6LWepehs4V1
|
23
|
+
8J+FUaIMV7nAMKmpkbYL51uHEiGV+HDx1HUdOsCFx8zD4h49KRT2t6AcumJ5P1Cj
|
24
|
+
c7NX2xl85ShHDNNFkozuC2c5cwj6F20EVaVjGwv2OFq0S2tUw9EJXHTN9RpfRUmn
|
25
|
+
IHwS9M4gcJO7IzV39a1YL6+9hrabF4+JTSYDehq8oxTdcOPLYyvH54aJWVqCrnLO
|
26
|
+
KNa/p6hMmwxTWNS5Vz0uxuEGyE9E0tHbtjIs2XX5AgMBAAGjgaQwgaEwCQYDVR0T
|
27
|
+
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFAK3RicwO0f6+puFN6lRVMOKMJuu
|
28
|
+
MDMGA1UdEQQsMCqBKGxvY2FsZXVua25vd244MTArcnVieWdlbXNAcHJvdG9ubWFp
|
29
|
+
bC5jb20wMwYDVR0SBCwwKoEobG9jYWxldW5rbm93bjgxMCtydWJ5Z2Vtc0Bwcm90
|
30
|
+
b25tYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAQwV6pOp5gm8141pyXeQFI/5E
|
31
|
+
rZYO3MvdyZM8O3HMD51LDS8mtMURceaKZM6WTambe2RVX4A++0qUiEnn9K4Fexm/
|
32
|
+
SEGaC/Gp+Fg9D1SKfkdq9bgdIhOEUwiGqjczgzNC806AtWZ+awI940oydFYZlpo0
|
33
|
+
jMQihPPJEqF1U6JBDMZYV5tX/dJYSGRl9L3s1k2tjoN98q+beNaZQDn21Amml4eK
|
34
|
+
KEkMeTTJ2E4GVzR9eKEETLq2LygdUWWZ5NdWOYTxJMdg1GZp3b6X8hJrwfOiizqt
|
35
|
+
/ANlIEh11/pOnWa6WPUVpGIMpYdquvmJXnF2LX6zxkKK1hbrebt+vAEAGczgw1Ri
|
36
|
+
rkLM6y+BHQdkOTj3VG4MjIU8D4h1Z73Exzxds/VbVKMEz+8JrFjGJ/tYa0PZ8U5p
|
37
|
+
3yXL4G6eW3rdBW/OiLF7GgG2o26d02OMzf4+ubUVS5LQDOcd4vgNPLWzJSBt1YIh
|
38
|
+
TgBsED7Me5YdMVXxtTWYsF1VMzaL9hReD3UXGcxe
|
33
39
|
-----END CERTIFICATE-----
|
34
|
-
date:
|
40
|
+
date: 2022-07-17 00:00:00.000000000 Z
|
35
41
|
dependencies:
|
36
42
|
- !ruby/object:Gem::Dependency
|
37
43
|
name: rspec
|
@@ -39,14 +45,14 @@ dependencies:
|
|
39
45
|
requirements:
|
40
46
|
- - "~>"
|
41
47
|
- !ruby/object:Gem::Version
|
42
|
-
version: '3.
|
48
|
+
version: '3.11'
|
43
49
|
type: :development
|
44
50
|
prerelease: false
|
45
51
|
version_requirements: !ruby/object:Gem::Requirement
|
46
52
|
requirements:
|
47
53
|
- - "~>"
|
48
54
|
- !ruby/object:Gem::Version
|
49
|
-
version: '3.
|
55
|
+
version: '3.11'
|
50
56
|
- !ruby/object:Gem::Dependency
|
51
57
|
name: rspeckled
|
52
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,11 +90,18 @@ files:
|
|
84
90
|
- lib/apiphobic/resource/processors/paging.rb
|
85
91
|
- lib/apiphobic/resource/processors/sorting.rb
|
86
92
|
- lib/apiphobic/resource/version.rb
|
87
|
-
homepage:
|
93
|
+
homepage: https://github.com/thekompanee/apiphobic-resource
|
88
94
|
licenses:
|
89
95
|
- MIT
|
90
96
|
metadata:
|
91
97
|
allowed_push_host: https://rubygems.org
|
98
|
+
bug_tracker_uri: https://github.com/thekompanee/apiphobic-resource/issues
|
99
|
+
changelog_uri: https://github.com/thekompanee/apiphobic-resource/blob/master/CHANGELOG.md
|
100
|
+
documentation_uri: https://github.com/thekompanee/apiphobic-resource/tree/releases/v1.3.0
|
101
|
+
homepage_uri: https://github.com/thekompanee/apiphobic-resource
|
102
|
+
source_code_uri: https://github.com/thekompanee/apiphobic-resource
|
103
|
+
wiki_uri: https://github.com/thekompanee/apiphobic-resource/wiki
|
104
|
+
rubygems_mfa_required: 'true'
|
92
105
|
post_install_message:
|
93
106
|
rdoc_options: []
|
94
107
|
require_paths:
|
@@ -104,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
117
|
- !ruby/object:Gem::Version
|
105
118
|
version: '0'
|
106
119
|
requirements: []
|
107
|
-
|
108
|
-
rubygems_version: 2.7.6
|
120
|
+
rubygems_version: 3.3.7
|
109
121
|
signing_key:
|
110
122
|
specification_version: 4
|
111
123
|
summary: API Resources
|
metadata.gz.sig
CHANGED
Binary file
|