dato 0.6.10 → 0.6.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e965d544e11d85ebaf829b6aff17334fc58b9aab772297a47d409f2f858ed622
4
- data.tar.gz: 5898c9367032bc65546562070207ef1ad66a4da4196e82cf03f0d4b20e4eeacf
3
+ metadata.gz: 96fce297ebbcc86fe447ec10bfc8ead9d90f992f3c37b2971de6aea960f56032
4
+ data.tar.gz: 563f0f8f3948fb763c77ba579b2761fab8069064b352fa70beda631ca757db78
5
5
  SHA512:
6
- metadata.gz: 5a7f9f76d1b9fcbd035186f5e1cb696b82c17a5a68a56cdb70fcc65704dac5c97a109941d836925265260cca3330279f1b68c1ad8510ac7553b0a08a0ec4caf0
7
- data.tar.gz: '035934e55ecef6d1173ee2bfd0f8ea6c20607a88d31acbe43b7ba94633098c07c72de97eb949b89b4ef000c0accec85660d15423a9d3aa1349633dbc62d6b62b'
6
+ metadata.gz: d9372f9af15aaa8a15410a432ff51baa4b7d79fa8a8c726d0ad455d6e9bff1d57a5bb0c4fc21b07fe6b5ef72ec4921f4ec381ffb94b7cba5d1f70d87dffbdd8c
7
+ data.tar.gz: 7db9db1546cab20b112804e9bd4365781ea3c72a45832af5a1940dd81232c7b0862abee12ff59edc073c79ee71d610366879ae137ec476bd175f35a0c09e8ff2
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'rubocop'
31
31
  spec.add_development_dependency 'coveralls'
32
32
  spec.add_development_dependency 'pry'
33
- spec.add_runtime_dependency 'front_matter_parser'
33
+ spec.add_development_dependency 'front_matter_parser'
34
34
 
35
35
  spec.add_runtime_dependency 'faraday', ['>= 0.9.0']
36
36
  spec.add_runtime_dependency 'faraday_middleware', ['>= 0.9.0']
@@ -15,6 +15,7 @@ module Dato
15
15
  def deserialize_resource(data)
16
16
  result = { id: data[:id] }
17
17
 
18
+ result[:meta] = data[:meta] if data[:meta]
18
19
  result.merge!(data[:attributes]) if data[:attributes]
19
20
 
20
21
  relationships = data.delete(:relationships)
@@ -15,6 +15,10 @@ module Dato
15
15
 
16
16
  data[:id] = id || resource[:id] if id || resource[:id]
17
17
 
18
+ if resource.has_key?(:meta)
19
+ resource.delete(:meta)
20
+ end
21
+
18
22
  data[:type] = type
19
23
  data[:attributes] = serialized_attributes(resource)
20
24
 
@@ -72,9 +76,6 @@ module Dato
72
76
  id
73
77
  created_at
74
78
  updated_at
75
- is_valid
76
- published_version
77
- current_version
78
79
  ]
79
80
  end
80
81
 
@@ -19,73 +19,85 @@ module Dato
19
19
  @client = client
20
20
  @type = type
21
21
  @schema = schema
22
+ end
23
+
24
+ def respond_to_missing?(method, include_private = false)
25
+ respond_to_missing = schema.links.any? do |link|
26
+ METHOD_NAMES.fetch(link.rel, link.rel).to_sym == method.to_sym
27
+ end
28
+
29
+ respond_to_missing || super
30
+ end
31
+
32
+ private
33
+
34
+ def method_missing(method, *args, &block)
35
+ link = schema.links.find do |link|
36
+ METHOD_NAMES.fetch(link.rel, link.rel).to_sym == method.to_sym
37
+ end
38
+
39
+ return super if !link
40
+
41
+ min_arguments_count = [
42
+ link.href.scan(IDENTITY_REGEXP).size,
43
+ link.schema && link.method != :get ? 1 : 0
44
+ ].reduce(0, :+)
45
+
46
+ (args.size >= min_arguments_count) or
47
+ raise ArgumentError, "wrong number of arguments (given #{args.size}, expected #{min_arguments_count})"
48
+
49
+ placeholders = []
50
+
51
+ url = link['href'].gsub(IDENTITY_REGEXP) do |_stuff|
52
+ placeholder = args.shift.to_s
53
+ placeholders << placeholder
54
+ placeholder
55
+ end
22
56
 
23
- schema.links.each do |link|
24
- method_name = METHOD_NAMES.fetch(link.rel, link.rel)
25
-
26
- define_singleton_method(method_name) do |*args|
27
- min_arguments_count = [
28
- link.href.scan(IDENTITY_REGEXP).size,
29
- link.schema && link.method != :get ? 1 : 0
30
- ].reduce(0, :+)
31
-
32
- (args.size >= min_arguments_count) or
33
- raise ArgumentError, "wrong number of arguments (given #{args.size}, expected #{min_arguments_count})"
34
-
35
- placeholders = []
36
-
37
- url = link['href'].gsub(IDENTITY_REGEXP) do |_stuff|
38
- placeholder = args.shift.to_s
39
- placeholders << placeholder
40
- placeholder
41
- end
42
-
43
- response = if %i[post put].include?(link.method)
44
- body = if link.schema
45
- unserialized_body = args.shift
46
-
47
- JsonApiSerializer.new(type, link).serialize(
48
- unserialized_body,
49
- link.method == :post ? nil : placeholders.last
50
- )
51
- else
52
- {}
53
- end
54
-
55
- client.request(link.method, url, body)
56
-
57
- elsif link.method == :delete
58
- client.request(:delete, url)
59
-
60
- elsif link.method == :get
61
- query_string = args.shift
62
-
63
- all_pages = (args[0] || {})
64
- .symbolize_keys
65
- .fetch(:all_pages, false)
66
-
67
- is_paginated_endpoint = link.schema &&
68
- link.schema.properties.key?('page[limit]')
69
-
70
- if is_paginated_endpoint && all_pages
71
- Paginator.new(client, url, query_string).response
72
- else
73
- client.request(:get, url, query_string)
74
- end
75
- end
76
-
77
- options = if args.any?
78
- args.shift.symbolize_keys
79
- else
80
- {}
81
- end
82
-
83
- if options.fetch(:deserialize_response, true)
84
- JsonApiDeserializer.new.deserialize(response)
85
- else
86
- response
87
- end
88
- end
57
+ response = if %i[post put].include?(link.method)
58
+ body = if link.schema
59
+ unserialized_body = args.shift
60
+
61
+ JsonApiSerializer.new(type, link).serialize(
62
+ unserialized_body,
63
+ link.method == :post ? nil : placeholders.last
64
+ )
65
+ else
66
+ {}
67
+ end
68
+
69
+ client.request(link.method, url, body)
70
+
71
+ elsif link.method == :delete
72
+ client.request(:delete, url)
73
+
74
+ elsif link.method == :get
75
+ query_string = args.shift
76
+
77
+ all_pages = (args[0] || {})
78
+ .symbolize_keys
79
+ .fetch(:all_pages, false)
80
+
81
+ is_paginated_endpoint = link.schema &&
82
+ link.schema.properties.key?('page[limit]')
83
+
84
+ if is_paginated_endpoint && all_pages
85
+ Paginator.new(client, url, query_string).response
86
+ else
87
+ client.request(:get, url, query_string)
88
+ end
89
+ end
90
+
91
+ options = if args.any?
92
+ args.shift.symbolize_keys
93
+ else
94
+ {}
95
+ end
96
+
97
+ if options.fetch(:deserialize_response, true)
98
+ JsonApiDeserializer.new.deserialize(response)
99
+ else
100
+ response
89
101
  end
90
102
  end
91
103
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dato
4
- VERSION = '0.6.10'
4
+ VERSION = '0.6.11'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.10
4
+ version: 0.6.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Verna
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-05 00:00:00.000000000 Z
11
+ date: 2018-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -157,7 +157,7 @@ dependencies:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
- type: :runtime
160
+ type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements: