concourse-fuselage 0.4.1 → 0.5.0

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
  SHA1:
3
- metadata.gz: 65ba071b22550d022af777d1eb8b0c6b6644ecef
4
- data.tar.gz: efa384c58f5a8c544d2252fc9dba144695de14ba
3
+ metadata.gz: 0805880c68aa9ebaaa89bf993e07f77f467733c7
4
+ data.tar.gz: 7c8fc4b3911f8a37bdda6cfb452a77767a475c80
5
5
  SHA512:
6
- metadata.gz: 6a18b082b123ed6895fbe15417ab6ac79006b7294832a45605ff8e11c362ca8909c24130a86aaca73a41733663a44e42d1ab31974a2a78e8895d7d2ab3d2569a
7
- data.tar.gz: 9effd092a1c02f609f8a0478929f67c832fec9592155196427df3d87069031852300546571ffe384948b5805cbd5362915a99fc1af2f3fe0efdf1da69e234c71
6
+ metadata.gz: a19256f28c3ed4428469ca57708818d9cc387498e4f37ab10223d52be10f2a405a924b737d7b3aeeead3f27790045369b9abd786d05e64280ce8409d79e39c3b
7
+ data.tar.gz: 1ab5d172dfca9f0af012c46c038bec8cfb55788487725b3974c48970fc31ef4ce1e0a1214e8b74752d520517c527c9d911a310f54a01c484a769caf42f917e18
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'concourse-fuselage'
3
- gem.version = '0.4.1'
3
+ gem.version = '0.5.0'
4
4
  gem.authors = ['Chris Olstrom']
5
5
  gem.email = 'chris@olstrom.com'
6
6
  gem.license = 'Apache-2.0'
@@ -1,6 +1,7 @@
1
1
  require 'contracts'
2
2
  require_relative 'support/source'
3
3
  require_relative 'support/debugging'
4
+ require_relative 'support/validation'
4
5
 
5
6
  module Fuselage
6
7
  class Step
@@ -8,5 +9,6 @@ module Fuselage
8
9
  include ::Contracts::Builtin
9
10
  include Support::Source
10
11
  include Support::Debugging
12
+ include Support::Validation
11
13
  end
12
14
  end
@@ -0,0 +1,33 @@
1
+ require 'contracts'
2
+ require 'json'
3
+
4
+ module Fuselage
5
+ module Support
6
+ # Payload validation for Resource
7
+ module Validation
8
+ include ::Contracts::Core
9
+ include ::Contracts::Builtin
10
+
11
+ Contract None => String
12
+ def validated(payload)
13
+ return payload unless malformed? payload
14
+
15
+ STDERR.puts 'Resource failed to produce valid JSON', payload
16
+ abort
17
+ end
18
+
19
+ Contract None => Bool
20
+ def valid?(payload)
21
+ JSON.parse payload
22
+ true
23
+ rescue JSON::ParseError
24
+ false
25
+ end
26
+
27
+ Contract None => Bool
28
+ def malformed?(payload)
29
+ !valid? payload
30
+ end
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concourse-fuselage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Olstrom
@@ -53,6 +53,7 @@ files:
53
53
  - lib/concourse-fuselage/support/debugging.rb
54
54
  - lib/concourse-fuselage/support/params.rb
55
55
  - lib/concourse-fuselage/support/source.rb
56
+ - lib/concourse-fuselage/support/validation.rb
56
57
  - lib/concourse-fuselage/support/work_dir.rb
57
58
  homepage:
58
59
  licenses: