hoalife 0.1.6 → 0.1.7

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: 976883417dc4d556bf92d5dd493b06b6d334f76c2310759c5e4a7d5177102aa0
4
- data.tar.gz: 67a0105f764997958a1d42ac68659343b8090f174b225542b529ce73b5f7fe8a
3
+ metadata.gz: 574f6e811f81b395d73ab0fb26366f9b8ef7201fefd98c5a50fc5e3d0f2ec804
4
+ data.tar.gz: a222efe6f9fa58c5422572139913194f65ba6c1f9914c96c0dd83362d63747b4
5
5
  SHA512:
6
- metadata.gz: d0d0f200d11f20bd00820d66547e1e3f6b98ca431aec5f11c5b94fee43ee448dd79e5d5826eaa46cc5e6c5ede1a1c72c086138f4fd3668f5a9258e733fedce6c
7
- data.tar.gz: 629e1cf013dff435badbcf321a644d3b72ed1edc5a9f6978a0f8be9b740b65b0d3b3121475e9163490b8ea822356e91b87b67edef88145f19fd46410a7b08392
6
+ metadata.gz: '06099ee7c8213063c3e86552c6199e21ca6fdd43b09267fa12723a9d69ce03fb4812092d8c421493578df56db17a8f22b82dae3ea75982b54988b659d2a560bb'
7
+ data.tar.gz: be7e0a035ccda0f45ce974e4752db649d80415b50d7036e4b75c5353461a3bf91a5d0d9936f43c9d172045a696ca23fc9b4dcdf4db648d81dbe351b5cf866ff0
@@ -0,0 +1,39 @@
1
+ name: Development
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ name: ${{matrix.ruby}} on ${{matrix.os}}
8
+ runs-on: ${{matrix.os}}-latest
9
+ continue-on-error: ${{matrix.experimental}}
10
+
11
+ strategy:
12
+ matrix:
13
+ os:
14
+ - ubuntu
15
+
16
+ ruby:
17
+ - "2.6"
18
+ - "2.7"
19
+ - "3.0"
20
+ - "3.1"
21
+
22
+ experimental: [false]
23
+ env: [""]
24
+
25
+ include:
26
+ - os: ubuntu
27
+ ruby: head
28
+ experimental: true
29
+
30
+ steps:
31
+ - uses: actions/checkout@v2
32
+ - uses: ruby/setup-ruby@v1
33
+ with:
34
+ ruby-version: ${{matrix.ruby}}
35
+ bundler-cache: true
36
+
37
+ - name: Run tests
38
+ timeout-minutes: 5
39
+ run: ${{matrix.env}} bundle exec rake test
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.3
data/Gemfile.lock CHANGED
@@ -1,56 +1,58 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hoalife (0.1.6)
4
+ hoalife (0.1.7)
5
5
  zeitwerk (~> 2.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- addressable (2.6.0)
11
- public_suffix (>= 2.0.2, < 4.0)
12
- ast (2.4.0)
13
- crack (0.4.3)
14
- safe_yaml (~> 1.0.0)
15
- ffi (1.11.1)
16
- hashdiff (1.0.0)
17
- jaro_winkler (1.5.3)
18
- listen (3.1.5)
19
- rb-fsevent (~> 0.9, >= 0.9.4)
20
- rb-inotify (~> 0.9, >= 0.9.7)
21
- ruby_dep (~> 1.2)
22
- minitest (5.11.3)
23
- parallel (1.17.0)
24
- parser (2.6.3.0)
25
- ast (~> 2.4.0)
26
- public_suffix (3.1.1)
27
- rainbow (3.0.0)
28
- rake (13.0.1)
29
- rb-fsevent (0.10.3)
30
- rb-inotify (0.10.0)
10
+ addressable (2.8.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ ast (2.4.2)
13
+ crack (0.4.5)
14
+ rexml
15
+ ffi (1.15.5)
16
+ hashdiff (1.0.1)
17
+ listen (3.7.1)
18
+ rb-fsevent (~> 0.10, >= 0.10.3)
19
+ rb-inotify (~> 0.9, >= 0.9.10)
20
+ minitest (5.15.0)
21
+ parallel (1.21.0)
22
+ parser (3.1.1.0)
23
+ ast (~> 2.4.1)
24
+ public_suffix (4.0.6)
25
+ rainbow (3.1.1)
26
+ rake (13.0.6)
27
+ rb-fsevent (0.11.1)
28
+ rb-inotify (0.10.1)
31
29
  ffi (~> 1.0)
32
- rubocop (0.74.0)
33
- jaro_winkler (~> 1.5.1)
30
+ regexp_parser (2.2.1)
31
+ rexml (3.2.5)
32
+ rubocop (0.93.1)
34
33
  parallel (~> 1.10)
35
- parser (>= 2.6)
34
+ parser (>= 2.7.1.5)
36
35
  rainbow (>= 2.2.2, < 4.0)
36
+ regexp_parser (>= 1.8)
37
+ rexml
38
+ rubocop-ast (>= 0.6.0)
37
39
  ruby-progressbar (~> 1.7)
38
- unicode-display_width (>= 1.4.0, < 1.7)
39
- ruby-progressbar (1.10.1)
40
- ruby_dep (1.5.0)
41
- safe_yaml (1.0.5)
42
- unicode-display_width (1.6.0)
43
- webmock (3.6.2)
44
- addressable (>= 2.3.6)
40
+ unicode-display_width (>= 1.4.0, < 2.0)
41
+ rubocop-ast (1.16.0)
42
+ parser (>= 3.1.1.0)
43
+ ruby-progressbar (1.11.0)
44
+ unicode-display_width (1.8.0)
45
+ webmock (3.14.0)
46
+ addressable (>= 2.8.0)
45
47
  crack (>= 0.3.2)
46
48
  hashdiff (>= 0.4.0, < 2.0.0)
47
- zeitwerk (2.4.0)
49
+ zeitwerk (2.5.4)
48
50
 
49
51
  PLATFORMS
50
52
  ruby
51
53
 
52
54
  DEPENDENCIES
53
- bundler (~> 2.0)
55
+ bundler (> 2.3)
54
56
  hoalife!
55
57
  listen (~> 3.1)
56
58
  minitest (~> 5.0)
@@ -59,4 +61,4 @@ DEPENDENCIES
59
61
  webmock (~> 3.6)
60
62
 
61
63
  BUNDLED WITH
62
- 2.1.2
64
+ 2.3.8
data/hoalife.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_dependency 'zeitwerk', '~> 2.1'
35
35
 
36
- spec.add_development_dependency 'bundler', '~> 2.0'
36
+ spec.add_development_dependency 'bundler', '> 2.3'
37
37
  spec.add_development_dependency 'listen', '~> 3.1'
38
38
  spec.add_development_dependency 'minitest', '~> 5.0'
39
39
  spec.add_development_dependency 'rake', '~> 13.0'
@@ -0,0 +1,30 @@
1
+ # Pass a string, have it split with the given separator
2
+ module HOALife::Arrayable
3
+ BLANK_RE = /\A[[:space:]]*\z/
4
+
5
+ def as_array(method_name, separator: /,|\||;|\s&\s|\sand\s|\s\s+/, joiner: ",")
6
+ define_method("#{method_name}=") do |value|
7
+ case value
8
+ when String
9
+ super(value.split(separator).collect(&:strip).uniq)
10
+ when Array
11
+ super(
12
+ value.reject do |sub_val|
13
+ sub_val.nil? || sub_val.empty? || sub_val.to_s.match?(BLANK_RE)
14
+ end.collect do |sub_val|
15
+ case sub_val
16
+ when String
17
+ sub_val.split(separator).collect(&:strip)
18
+ else
19
+ sub_val
20
+ end
21
+ end.flatten.uniq
22
+ )
23
+ when nil
24
+ super([])
25
+ else
26
+ super(value)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -4,6 +4,9 @@
4
4
  class HOALife::Property < HOALife::Resource
5
5
  include HOALife::Resources::Persistable
6
6
 
7
+ as_array :emails
8
+ as_array :phone_numbers
9
+
7
10
  self.base_path = '/properties'
8
11
 
9
12
  def as_json
@@ -6,7 +6,11 @@ require 'time'
6
6
  require 'forwardable'
7
7
 
8
8
  # :nodoc
9
- class HOALife::Resource < OpenStruct
9
+ class HOALife::Resource
10
+ extend HOALife::Arrayable
11
+
12
+ attr_reader :attrs
13
+
10
14
  class << self
11
15
  extend Forwardable
12
16
 
@@ -36,10 +40,12 @@ class HOALife::Resource < OpenStruct
36
40
  end
37
41
  end
38
42
 
39
- def initialize(obj = {}, _relationships = {})
40
- @obj = cast_attrs(obj)
43
+ def initialize(attrs = {}, _relationships = {})
44
+ @attrs = {}
41
45
 
42
- super(obj)
46
+ cast_attrs(attrs.transform_keys(&:to_sym)).each do |k, v|
47
+ send("#{k}=".to_sym, v)
48
+ end
43
49
  end
44
50
 
45
51
  def as_json
@@ -50,7 +56,7 @@ class HOALife::Resource < OpenStruct
50
56
  }
51
57
  }
52
58
 
53
- each_pair do |k, _v|
59
+ @attrs.each do |k, _v|
54
60
  h['data']['attributes'][k] = send(k)
55
61
  end
56
62
 
@@ -61,6 +67,26 @@ class HOALife::Resource < OpenStruct
61
67
  JSON.generate as_json
62
68
  end
63
69
 
70
+ def method_missing(method_name, *args, &blk)
71
+ if method_name.match(/\=$/)
72
+ @attrs[method_name.to_s.gsub(/\=$/, "").to_sym] = args.first
73
+ elsif @attrs.key?(method_name)
74
+ @attrs[method_name]
75
+ else
76
+ super
77
+ end
78
+ end
79
+
80
+ def respond_to?(method_name, include_private = false)
81
+ !@attrs[method_name] ||
82
+ method_name.match(/\=$/) ||
83
+ super
84
+ end
85
+
86
+ def ==(other)
87
+ @attrs == other.attrs
88
+ end
89
+
64
90
  private
65
91
 
66
92
  # rubocop:disable Style/RescueModifier
@@ -5,12 +5,18 @@ module HOALife::Resources::Persistable
5
5
  include HOALife::Resources::Requestable
6
6
  extend HOALife::Concern
7
7
 
8
+ attr_accessor :errors
9
+
8
10
  class_methods do
9
11
  def create(attrs = {})
10
12
  new(attrs).tap(&:save)
11
13
  end
12
14
  end
13
15
 
16
+ def id
17
+ attrs[:id]
18
+ end
19
+
14
20
  def save
15
21
  self.errors = nil
16
22
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HOALife
4
- VERSION = '0.1.6'
4
+ VERSION = '0.1.7'
5
5
  end
data/lib/hoalife.rb CHANGED
@@ -21,7 +21,8 @@ end
21
21
 
22
22
  loader.setup
23
23
 
24
- require 'hoalife/error'
24
+ require "hoalife/error"
25
+ require "hoalife/concerns/arrayable"
25
26
 
26
27
  # :nodoc
27
28
  module HOALife
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoalife
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Westendorf
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-12 00:00:00.000000000 Z
11
+ date: 2022-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.0'
33
+ version: '2.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">"
39
39
  - !ruby/object:Gem::Version
40
- version: '2.0'
40
+ version: '2.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: listen
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -115,9 +115,10 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
+ - ".github/workflows/development.yml"
118
119
  - ".gitignore"
119
120
  - ".rubocop.yml"
120
- - ".travis.yml"
121
+ - ".ruby-version"
121
122
  - Gemfile
122
123
  - Gemfile.lock
123
124
  - LICENSE.txt
@@ -143,6 +144,7 @@ files:
143
144
  - lib/hoalife/client/post.rb
144
145
  - lib/hoalife/client/put.rb
145
146
  - lib/hoalife/concern.rb
147
+ - lib/hoalife/concerns/arrayable.rb
146
148
  - lib/hoalife/error.rb
147
149
  - lib/hoalife/escalation.rb
148
150
  - lib/hoalife/inspection.rb
@@ -165,7 +167,7 @@ metadata:
165
167
  homepage_uri: https://docs.hoalife.com
166
168
  source_code_uri: https://github.com/hoalife/hoalife-ruby
167
169
  changelog_uri: https://github.com/hoalife/hoalife-ruby/master/CHANGELOG.md
168
- post_install_message:
170
+ post_install_message:
169
171
  rdoc_options: []
170
172
  require_paths:
171
173
  - lib
@@ -180,8 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
182
  - !ruby/object:Gem::Version
181
183
  version: '0'
182
184
  requirements: []
183
- rubygems_version: 3.0.3
184
- signing_key:
185
+ rubygems_version: 3.1.6
186
+ signing_key:
185
187
  specification_version: 4
186
188
  summary: Ruby API Client for the HOALife.com API
187
189
  test_files: []
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.5
7
- - 2.6
8
- - 2.7
9
- before_install: gem install bundler -v 2.0.2