apiphobic-resource 1.1.0 → 1.3.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/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
|