simple_jsonapi_client 0.2.2 → 0.2.4

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
- SHA1:
3
- metadata.gz: d1f5f8cbf5a1f22d67d52b72720a21e54df1beb2
4
- data.tar.gz: b5a0a5beda4a430c7573a0286e548c974c66c265
2
+ SHA256:
3
+ metadata.gz: 77440c85cfcb332cb551cc83519593535a11311e2407b3b0bccaa73f685b8054
4
+ data.tar.gz: dd8c4bfc2423d80ecf755437ea3f5d1fd03f5df6351b4795f5b26a591b2cea5f
5
5
  SHA512:
6
- metadata.gz: f386decd929a9237e22abe4d18487595f0512402e60a12c159f87c97cf7b37d671ba0aeaa59a0fed37434ba1239cc6ff6b78048841f62568fbec36c122546d79
7
- data.tar.gz: fc8a72c564192f6ef4ea316d8b8400ee3ecd1ef307cdb2a9a8900ac35e8d117ee5d3814786d0bc06bcd23f19b8c6a759d53ca173b5563585ef67aa67352961e5
6
+ metadata.gz: ca09436cd3d0b17591aa1b1538fd5052c8e525157a785bb2c000fa5e6d2cc59d5f35d325170352a5529e189d87be4239740ab5c2864375a081ceab5e2433b840
7
+ data.tar.gz: f15be7fd5273d834e47a86234c6f57df916df49de79c90f15e8c6b29d3686d2539c1540bdaecf2aa6c497972a66a7f621403fa758bd947ae85782c4bc5f84885
data/.travis.yml CHANGED
@@ -4,5 +4,6 @@ services:
4
4
  - docker
5
5
  before_install:
6
6
  - bin/setup
7
+ - gem update bundler
7
8
  script:
8
9
  - rake
data/Dockerfile CHANGED
@@ -1,6 +1,7 @@
1
1
  FROM ruby:2.4.0
2
2
  RUN apt-get update -qq
3
3
  RUN gem update bundler
4
+ ENV BUNDLER_VERSION=2.0.2
4
5
  RUN mkdir /simple_jsonapi_client
5
6
  WORKDIR /simple_jsonapi_client
6
7
  ADD . .
@@ -1,5 +1,4 @@
1
- require 'active_support/core_ext/hash/keys'
2
- require 'active_support/core_ext/hash/transform_values'
1
+ require 'simple_jsonapi_client/utils'
3
2
  require 'simple_jsonapi_client/error'
4
3
  require 'simple_jsonapi_client/relationships/relationship'
5
4
  require 'simple_jsonapi_client/redirection/fetch_all'
@@ -208,12 +207,22 @@ module SimpleJSONAPIClient
208
207
  def interpret_empty_response(response, connection)
209
208
  end
210
209
 
211
- def interpreted_relationships(relationships)
212
- relationships.transform_values { |value|
213
- if (relationship = relationship_from(value))
214
- { data: relationship }
215
- end
216
- }
210
+ if {}.respond_to?(:transform_values)
211
+ def interpreted_relationships(relationships)
212
+ relationships.transform_values { |value|
213
+ if (relationship = relationship_from(value))
214
+ { data: relationship }
215
+ end
216
+ }
217
+ end
218
+ else
219
+ def interpreted_relationships(relationships)
220
+ Utils.transform_values(relationships) { |value|
221
+ if (relationship = relationship_from(value))
222
+ { data: relationship }
223
+ end
224
+ }
225
+ end
217
226
  end
218
227
 
219
228
  def relationship_from(value)
@@ -238,12 +247,12 @@ module SimpleJSONAPIClient
238
247
  attr_reader :id, :context
239
248
 
240
249
  def initialize(meta: nil, id:, attributes: nil, relationships: nil, included: {}, connection:, context: nil)
241
- @meta = meta.symbolize_keys if meta
250
+ @meta = Utils.symbolize_keys(meta) if meta
242
251
  @id = id
243
252
  @included = included
244
253
  @connection = connection
245
254
  @context = context
246
- @attributes = attributes.symbolize_keys if attributes
255
+ @attributes = Utils.symbolize_keys(attributes) if attributes
247
256
  @input_relationships = relationships
248
257
  end
249
258
 
@@ -267,7 +276,7 @@ module SimpleJSONAPIClient
267
276
  @relationships ||=
268
277
  begin
269
278
  if input_relationships
270
- relationships_to_models(input_relationships.symbolize_keys)
279
+ relationships_to_models(Utils.symbolize_keys(input_relationships))
271
280
  else
272
281
  loaded_record.relationships
273
282
  end
@@ -1,4 +1,5 @@
1
1
  require 'delegate'
2
+ require 'forwardable'
2
3
 
3
4
  module SimpleJSONAPIClient
4
5
  module Errors
@@ -30,7 +30,7 @@ module SimpleJSONAPIClient
30
30
  current_response['data'].each do |record|
31
31
  yielder << record
32
32
  end
33
- break unless (next_link = current_response.dig('links', 'next'))
33
+ break unless (next_link = Utils.hash_dig(current_response, 'links', 'next'))
34
34
  current_opts.merge!(url_opts: {}, url: next_link)
35
35
  current_opts.delete(:page_opts)
36
36
  end
@@ -0,0 +1,47 @@
1
+ module SimpleJSONAPIClient
2
+ module Utils
3
+ class << self
4
+ # Implementation adapted from ActiveSupport
5
+ # Copyright (c) 2005-2019 David Heinemeier Hansson
6
+ # https://github.com/rails/rails/blob/b9ca94caea2ca6a6cc09abaffaad67b447134079/activesupport/lib/active_support/core_ext/hash/keys.rb
7
+ def symbolize_keys(hash)
8
+ result = {}
9
+ hash.each_key do |key|
10
+ result[(key.to_sym rescue key)] = hash[key]
11
+ end
12
+ result
13
+ end
14
+
15
+ def hash_dig(hash, *keys)
16
+ if hash.respond_to?(:dig)
17
+ hash.dig(*keys)
18
+ else
19
+ dig(hash, keys)
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ # Implementation adapted from the hash_dig gem, Copyright (c) 2015 Colin Kelley, MIT License
26
+ # https://github.com/Invoca/ruby_dig/blob/19fa8c1d2cc7706d015a3004f028169a2ff83391/lib/ruby_dig.rb
27
+ def dig(hash, key, *rest)
28
+ value = hash[key]
29
+ if value.nil? || rest.empty?
30
+ value
31
+ elsif value.is_a?(Hash) || value.is_a?(Array)
32
+ dig(value, *rest)
33
+ else
34
+ fail TypeError, "#{value.class} does not work with #dig" # should not happen with our use of #dig
35
+ end
36
+ end
37
+
38
+ def transform_values(hash)
39
+ result = {}
40
+ hash.each do |key, value|
41
+ result[key] = yield(value)
42
+ end
43
+ result
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module SimpleJSONAPIClient
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -22,9 +22,8 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_dependency "faraday", "~> 0.12"
24
24
  spec.add_dependency "faraday_middleware", "~> 0.11"
25
- spec.add_dependency "activesupport", ">= 3.1.12", "< 6"
26
25
 
27
- spec.add_development_dependency "bundler", "~> 1.15"
26
+ spec.add_development_dependency "bundler", "~> 2.0.2"
28
27
  spec.add_development_dependency "rake", "~> 10.0"
29
28
  spec.add_development_dependency "rspec", "~> 3.0"
30
29
  spec.add_development_dependency "pry", "~> 0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_jsonapi_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ariel Caplan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-13 00:00:00.000000000 Z
11
+ date: 2019-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,40 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.11'
41
- - !ruby/object:Gem::Dependency
42
- name: activesupport
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 3.1.12
48
- - - "<"
49
- - !ruby/object:Gem::Version
50
- version: '6'
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: 3.1.12
58
- - - "<"
59
- - !ruby/object:Gem::Version
60
- version: '6'
61
41
  - !ruby/object:Gem::Dependency
62
42
  name: bundler
63
43
  requirement: !ruby/object:Gem::Requirement
64
44
  requirements:
65
45
  - - "~>"
66
46
  - !ruby/object:Gem::Version
67
- version: '1.15'
47
+ version: 2.0.2
68
48
  type: :development
69
49
  prerelease: false
70
50
  version_requirements: !ruby/object:Gem::Requirement
71
51
  requirements:
72
52
  - - "~>"
73
53
  - !ruby/object:Gem::Version
74
- version: '1.15'
54
+ version: 2.0.2
75
55
  - !ruby/object:Gem::Dependency
76
56
  name: rake
77
57
  requirement: !ruby/object:Gem::Requirement
@@ -151,6 +131,7 @@ files:
151
131
  - lib/simple_jsonapi_client/relationships/relationship.rb
152
132
  - lib/simple_jsonapi_client/relationships/singular_data_relationship.rb
153
133
  - lib/simple_jsonapi_client/relationships/singular_link_relationship.rb
134
+ - lib/simple_jsonapi_client/utils.rb
154
135
  - lib/simple_jsonapi_client/version.rb
155
136
  - simple_jsonapi_client.gemspec
156
137
  homepage: https://github.com/amcaplan/simple_jsonapi_client
@@ -173,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
154
  version: '0'
174
155
  requirements: []
175
156
  rubyforge_project:
176
- rubygems_version: 2.2.2
157
+ rubygems_version: 2.7.8
177
158
  signing_key:
178
159
  specification_version: 4
179
160
  summary: Framework for writing clients for JSONAPI APIs in Ruby.