haveapi 0.27.0 → 0.27.1

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: 8307e5e40983cf927641fd3d4052058406209093520a83d89121883f64a9ba0e
4
- data.tar.gz: b2d80c7621b7f8870e89dff0ae78c3f4f2d5587ddc9151733d795df0c279fbb7
3
+ metadata.gz: c1d65a2661353ff707b5b33f0bf8df446bfd4dcc6c669b5af8fdc46dbbf8a0a5
4
+ data.tar.gz: ddb0c92670d615f22468c91c96f8e83e34cf53a3680cf55c588936aa95a34df7
5
5
  SHA512:
6
- metadata.gz: b93b9411fb84cf5e67763e9384746da97f32903126e802ca2a47f545f68c9d37f66c54c280e78bc7b25e9abad19ca99e3a6d9ed68a985daa8c053119d459ed6d
7
- data.tar.gz: 06fff468dc3e939c838689fbd515ae280cf590c9a05d1c36dc81ba7c2723ab344acadee67ece39fb782ff10c75baf7be906fa2e786e5f7cf9a9ae47fe110d9f1
6
+ metadata.gz: 908348858c2829a57531813ceb696c47768ec9a5e29133e8fb64e2c33613949ef70dd52468480a5a2e33c25c9c204541946ccfb982a17cec27656f4b184c2724
7
+ data.tar.gz: 82e5b873d368caf4914895b24fa4e57d6b0b39c55357910c307496c535cacbdfebb35cd4036b2d07bb1627625a951f5e04fa440416f1eaa141980a22e943468e
data/haveapi.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.required_ruby_version = ">= #{File.read('../../.ruby-version').strip}"
16
16
 
17
17
  s.add_dependency 'activesupport', '>= 7.1'
18
- s.add_dependency 'haveapi-client', '~> 0.27.0'
18
+ s.add_dependency 'haveapi-client', '~> 0.27.1'
19
19
  s.add_dependency 'json'
20
20
  s.add_dependency 'mail'
21
21
  s.add_dependency 'nesty', '~> 1.0'
@@ -148,7 +148,12 @@ module HaveAPI::ModelAdapters
148
148
 
149
149
  if raw.is_a?(String)
150
150
  stripped = raw.strip
151
- raise HaveAPI::ValidationError, "not a valid id #{original.inspect}" if stripped.empty?
151
+
152
+ if stripped.empty?
153
+ return nil if extra && extra[:optional]
154
+
155
+ raise HaveAPI::ValidationError, "not a valid id #{original.inspect}"
156
+ end
152
157
 
153
158
  raw = stripped
154
159
 
@@ -92,9 +92,16 @@ module HaveAPI::Parameters
92
92
  end
93
93
 
94
94
  def clean(raw)
95
+ if raw.is_a?(String)
96
+ stripped = raw.strip
97
+ return nil if stripped.empty? && optional?
98
+ end
99
+
100
+ extra = @extra.merge(optional: optional?)
101
+
95
102
  ::HaveAPI::ModelAdapter.for(
96
103
  show_action.input.layout, @resource.model
97
- ).input_clean(@resource.model, raw, @extra)
104
+ ).input_clean(@resource.model, raw, extra)
98
105
  end
99
106
 
100
107
  def validate(v, params)
@@ -1,4 +1,4 @@
1
1
  module HaveAPI
2
2
  PROTOCOL_VERSION = '2.0'.freeze
3
- VERSION = '0.27.0'.freeze
3
+ VERSION = '0.27.1'.freeze
4
4
  end
@@ -343,6 +343,8 @@ describe HaveAPI::ModelAdapters::ActiveRecord do
343
343
  expect(described_class::Input.clean(ARAdapterSpec::Environment, 1, {})).to eq(environment)
344
344
  expect(described_class::Input.clean(ARAdapterSpec::Environment, '1', {})).to eq(environment)
345
345
  expect(described_class::Input.clean(ARAdapterSpec::Environment, 1.0, {})).to eq(environment)
346
+ expect(described_class::Input.clean(ARAdapterSpec::Environment, '', { optional: true })).to be_nil
347
+ expect(described_class::Input.clean(ARAdapterSpec::Environment, ' ', { optional: true })).to be_nil
346
348
 
347
349
  expect do
348
350
  described_class::Input.clean(ARAdapterSpec::Environment, 'abc', {})
@@ -473,6 +473,30 @@ module HaveAPI
473
473
  { project: input[:project] }
474
474
  end
475
475
  end
476
+
477
+ define_action(:EchoResourceOptional) do
478
+ extend DocFilter
479
+ route 'echo_resource_optional'
480
+ http_method :get
481
+ input(:hash) do
482
+ resource HaveAPI::ClientTestAPI::Resources::Project, required: false
483
+ end
484
+ output(:hash) do
485
+ bool :project_provided, required: true
486
+ bool :project_nil, required: true
487
+ integer :project
488
+ end
489
+ authorize { allow }
490
+
491
+ def exec
492
+ ret = {
493
+ project_provided: input.has_key?(:project),
494
+ project_nil: input[:project].nil?
495
+ }
496
+ ret[:project] = input[:project] unless input[:project].nil?
497
+ ret
498
+ end
499
+ end
476
500
  end
477
501
  end
478
502
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haveapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.0
4
+ version: 0.27.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakub Skokan
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: 0.27.0
32
+ version: 0.27.1
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.27.0
39
+ version: 0.27.1
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: json
42
42
  requirement: !ruby/object:Gem::Requirement