dato 0.6.10 → 0.6.11

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: 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: