problem_detail 0.0.7

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1c48d34bd23a4fac2967fb379aaf9caba102022b
4
+ data.tar.gz: 9434a0365304cc2ea66c6f9bf5ce02ed10316204
5
+ SHA512:
6
+ metadata.gz: d2a19c79d47240d77dc6eac7c5e85116006c43e34cda3e50c8f02bc75a15dd18517c4a724394faad44663e5e615b475a66eca296a4a3d98231fb34881f6b186c
7
+ data.tar.gz: 8b665ed9b61522a38027f7203a0903027d343b3ae38632f180747a3767a83c5ff19bc5056dbf0707bcb8d767f3a49ae85fe608ff06f738e7cf1eb37e4d2dac59
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ �s`�U%�I2[���}u��/ NM�p��[�����۷N�������7!*B�]?ݞ!5`i|�}�������<!�(��qu���2'|8T����֮�7d2|rEcq�s�J���-�b�h�/W@}d?��ي&v�!k���c�l�V^�+�]���0�k��SʳB�
2
+ ����!�Ci4ܡ ]*�|�O˔���8:v'#��ׂ̈��Q����NE򗁧sj�f��^��/���%G�P��ۧTɷ��Ց�t�儂�
data.tar.gz.sig ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ sudo: false
3
+ cache: bundler
4
+ script: 'bundle exec rake test:coverage --trace'
5
+ before_install:
6
+ - gem install bundler
7
+ rvm:
8
+ - 2.2
9
+ - ruby-head
10
+ - jruby
11
+ - jruby-head
12
+ - rbx-2
13
+ matrix:
14
+ allow_failures:
15
+ - rvm: rbx-2
16
+ - rvm: jruby-head
17
+ - rvm: ruby-head
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at contact@cyril.email. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Cyril Wack
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ # Problem Detail
2
+
3
+ [![Build Status](https://travis-ci.org/cyril/problem_detail.rb.svg?branch=master)][travis]
4
+ [![Code Climate](https://codeclimate.com/github/cyril/problem_detail.rb/badges/gpa.svg)][codeclimate]
5
+ [![Dependency Status](https://gemnasium.com/cyril/problem_detail.rb.svg)][gemnasium]
6
+ [![Gem Version](https://badge.fury.io/rb/problem_detail.rb.svg)][gem]
7
+ [![Inline docs](http://inch-ci.org/github/cyril/problem_detail.rb.svg?branch=master)][inchpages]
8
+ [![Documentation](http://img.shields.io/:yard-docs-38c800.svg)][rubydoc]
9
+ [![Gitter](https://badges.gitter.im/Join%20Chat.svg)][gitter]
10
+
11
+ > Problem Details for HTTP APIs.
12
+
13
+ A structure to define a *problem detail* as a way to carry machine-readable details of errors in a HTTP response, to avoid the need to define new error response formats for HTTP APIs.
14
+
15
+ To read more: [Indicating Problems in HTTP APIs](http://www.mnot.net/blog/2013/05/15/http_problem).
16
+
17
+ Supported version: [draft-nottingham-http-problem-07](https://www.ietf.org/archive/id/draft-nottingham-http-problem-07.txt).
18
+
19
+ ## Rubies
20
+
21
+ * [MRI](https://www.ruby-lang.org/)
22
+ * [Rubinius](http://rubini.us/)
23
+ * [JRuby](http://jruby.org/)
24
+
25
+ ## Installation
26
+
27
+ __ProblemDetail__ is cryptographically signed.
28
+
29
+ To be sure the gem you install hasn't been tampered with, add my public key (if you haven't already) as a trusted certificate:
30
+
31
+ $ gem cert --add <(curl -Ls https://raw.github.com/cyril/problem_detail.rb/master/certs/gem-cyril-public_cert.pem)
32
+ $ gem install problem_detail -P HighSecurity
33
+
34
+ The `HighSecurity` trust profile will verify all gems. All of __ProblemDetail__'s dependencies are signed.
35
+
36
+ Or add this line to your application's Gemfile:
37
+
38
+ ```ruby
39
+ gem 'problem_detail'
40
+ ```
41
+
42
+ And then execute:
43
+
44
+ $ bundle
45
+
46
+ ## Usage
47
+
48
+ ```ruby
49
+ http_pb = ProblemDetail::Document.new(
50
+ type: 'http://example.com/probs/out-of-credit',
51
+ title: 'You do not have enough credit.',
52
+ detail: 'Your current balance is 30, but that costs 50.',
53
+ instance: 'http://example.net/account/12345/msgs/abc',
54
+ balance: 30,
55
+ accounts: [
56
+ 'http://example.net/account/12345',
57
+ 'http://example.net/account/67890'
58
+ ]
59
+ )
60
+
61
+ http_pb.type # => #<URI::HTTP http://example.com/probs/out-of-credit>
62
+ http_pb.to_h # => {:balance=>30, :accounts=>["http://example.net/account/12345", "http://example.net/account/67890"], :detail=>"Your current balance is 30, but that costs 50.", :instance=>#<URI::HTTP http://example.net/account/12345/msgs/abc>, :title=>"You do not have enough credit.", :type=>#<URI::HTTP http://example.com/probs/out-of-credit>}
63
+ ```
64
+
65
+ ## Security
66
+
67
+ As a basic form of security __ProblemDetail__ provides a set of SHA512 checksums for
68
+ every Gem release. These checksums can be found in the `checksum/` directory.
69
+ Although these checksums do not prevent malicious users from tampering with a
70
+ built Gem they can be used for basic integrity verification purposes.
71
+
72
+ The checksum of a file can be checked using the `sha512sum` command. For
73
+ example:
74
+
75
+ $ sha512sum pkg/problem_detail-0.0.1.gem
76
+ d12d7d9c2a4fdfe075cbb7a141fa5f2195175891e4098c7e1a28c8bca655ab44fb9d67b6a2e3991d0f852026c5e4537fdf7e314575c68d1c80b3a4b1eb1c041f pkg/problem_detail-0.0.1.gem
77
+
78
+ ## Versioning
79
+
80
+ __ProblemDetail__ follows [Semantic Versioning 2.0](http://semver.org/).
81
+
82
+ ## Contributing
83
+
84
+ 1. [Fork it](https://github.com/cyril/problem_detail.rb/fork)
85
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
86
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
87
+ 4. Push to the branch (`git push origin my-new-feature`)
88
+ 5. Create a new Pull Request
89
+
90
+ ## License
91
+
92
+ See `LICENSE.md` file.
93
+
94
+ [gem]: https://rubygems.org/gems/problem_detail
95
+ [travis]: https://travis-ci.org/cyril/problem_detail.rb
96
+ [codeclimate]: https://codeclimate.com/github/cyril/problem_detail.rb
97
+ [gemnasium]: https://gemnasium.com/cyril/problem_detail.rb
98
+ [inchpages]: http://inch-ci.org/github/cyril/problem_detail.rb
99
+ [rubydoc]: http://rubydoc.info/gems/problem_detail/frames
data/Rakefile ADDED
@@ -0,0 +1,21 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ require 'rubocop/rake_task'
4
+
5
+ RuboCop::RakeTask.new
6
+
7
+ Rake::TestTask.new do |t|
8
+ t.verbose = true
9
+ t.warning = true
10
+ t.pattern = File.join('test', '**', '*_fix.rb')
11
+ end
12
+
13
+ namespace :test do
14
+ task :coverage do
15
+ ENV['COVERAGE'] = 'true'
16
+ Rake::Task['test'].invoke
17
+ end
18
+ end
19
+
20
+ task(:doc_stats) { ruby '-S yard stats' }
21
+ task default: [:test, :doc_stats, :rubocop]
data/VERSION.semver ADDED
@@ -0,0 +1 @@
1
+ 0.0.7
data/bin/console ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'problem_detail'
5
+
6
+ require 'irb'
7
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
@@ -0,0 +1,21 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRAwDgYDVQQDDAdjb250
3
+ YWN0MRUwEwYKCZImiZPyLGQBGRYFY3lyaWwxFTATBgoJkiaJk/IsZAEZFgVlbWFp
4
+ bDAeFw0xNTA3MzExMjExMDZaFw0xNjA3MzAxMjExMDZaMEAxEDAOBgNVBAMMB2Nv
5
+ bnRhY3QxFTATBgoJkiaJk/IsZAEZFgVjeXJpbDEVMBMGCgmSJomT8ixkARkWBWVt
6
+ YWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6hUEYoxnn1mtoaiK
7
+ NiwjzVPqPgQCR9ZeYdWjLJ3UUG2h5Q6awJCnbaGr8LGGcKtveCDbOJRjtdKNuOTH
8
+ O2FLTkf46nrMGiF+6/j//qh8o0EQHBRKIVMYkxZxZe4Fcqtdf1bWNMZuXeyoDjdt
9
+ 4yiGfizbbTOu0gBf7Yrsv5DsL0a5CU/We7zxMfgGXCVb9PYkD+OWUMcTARYDKfYa
10
+ nN9ECI7CFm/yXcsof/eIQA5EmJNmQnhx8B+8L6jDqQeSUAUrBZnC9CdloKOoqmEL
11
+ weqM2g6LM932Ba74rEl4QlFRYDcs8kjr71UcvseHRCUkFr36j26OU8+gKelsTNdO
12
+ 7OZNKQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
13
+ LSJTN9h29D6bqOhp+vyvhyM0AF4wHgYDVR0RBBcwFYETY29udGFjdEBjeXJpbC5l
14
+ bWFpbDAeBgNVHRIEFzAVgRNjb250YWN0QGN5cmlsLmVtYWlsMA0GCSqGSIb3DQEB
15
+ BQUAA4IBAQArqCC1rUyGJlF0DF9ZhUOgggyROvO0/WroSI5zWgzdB8EU7RJpsDIV
16
+ caGnpji7h0rQIGWQuJ6TL2fTFLfeGRFdIzRZwWC7TeXhcXngJHZxSjDBt2OpfM8A
17
+ P5eElSQS9iJCetBGGMyt354PfgZkg3URaC+JA6mdEisdtEdo64ElnMsLg9shCqye
18
+ JSR3BbejbyPVva0/MHKD+dR6RswlcM9KMiYOXQml7a/kH6huOHvVq9gj5xC2ih8W
19
+ dzJvWzQ1+dJU6WQv75E9ddSkaQrK3nhdgQVu+/wgvGSrsMvOGNz+LXaSDxQqZuwX
20
+ 0KNQFuIukfrdk8URwRnHoAnvx4U93iUw
21
+ -----END CERTIFICATE-----
@@ -0,0 +1,78 @@
1
+ require 'uri'
2
+
3
+ # A parser and emitter for Problem Details for HTTP APIs.
4
+ # Version: https://www.ietf.org/archive/id/draft-nottingham-http-problem-07.txt
5
+ module ProblemDetail
6
+ # This document defines a "problem detail" as a way to carry machine-readable
7
+ # details of errors in a HTTP response, to avoid the need to define new error
8
+ # response formats for HTTP APIs.
9
+ class Document
10
+ # A problem details object can have some members.
11
+ #
12
+ # @param title [#to_s] A short, human-readable summary of the problem type.
13
+ # It SHOULD NOT change from occurrence to occurrence of the problem,
14
+ # except for purposes of localisation (e.g., using proactive content
15
+ # negotiation).
16
+ # @param type [#to_s, nil] A URI reference that identifies the problem type.
17
+ # When dereferenced, it is encouraged to provide human-readable
18
+ # documentation for the problem type (e.g., using HTML. When this member
19
+ # is not present, its value is assumed to be "about:blank".
20
+ # @param options [Hash] Extend the problem details with additional members
21
+ # such as:
22
+ # * status: the HTTP status code generated by the origin server for this
23
+ # occurrence of the problem;
24
+ # * detail: an human readable explanation specific to this occurrence of
25
+ # the problem;
26
+ # * instance: a URI reference that identifies the specific occurrence of
27
+ # the problem.
28
+ def initialize(title:, type: 'about:blank', **options)
29
+ @title = title.to_s
30
+ @type = URI(type.to_s)
31
+ @options = options
32
+ end
33
+
34
+ # @!attribute [r] title
35
+ #
36
+ # @return [String] A short, human-readable summary of the problem type.
37
+ attr_reader :title
38
+
39
+ # @!attribute [r] type
40
+ #
41
+ # @return [URI] A URI reference that identifies the problem type.
42
+ attr_reader :type
43
+
44
+ # @return [Fixnum, nil] The HTTP status code generated by the origin server.
45
+ def status
46
+ @options[:status].to_i unless @options[:status].nil?
47
+ end
48
+
49
+ # @return [String, nil] An human readable explanation.
50
+ def detail
51
+ @options[:detail].to_s unless @options[:detail].nil?
52
+ end
53
+
54
+ # @return [URI, nil] The specific occurrence of the problem.
55
+ def instance
56
+ URI(@options[:instance].to_s) unless @options[:instance].nil?
57
+ end
58
+
59
+ # @return [Hash] Additional members.
60
+ def options
61
+ @options.reject { |k, _v| %i(status detail instance).include?(k) }
62
+ end
63
+
64
+ # Properties of the result.
65
+ #
66
+ # @return [Hash] The properties of the result.
67
+ def to_h
68
+ options.merge({
69
+ status: status,
70
+ detail: detail,
71
+ instance: instance
72
+ }.reject { |_k, v| v.nil? }).merge(
73
+ title: title,
74
+ type: type
75
+ )
76
+ end
77
+ end
78
+ end
data/pkg_checksum ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'digest/sha2'
4
+
5
+ gemname = 'problem_detail'.to_sym
6
+ ARGV[0] = File.read('VERSION.semver').chomp if ARGV[0].nil?
7
+ built_gem_path = "pkg/#{gemname}-#{ARGV[0]}.gem"
8
+ checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
9
+ checksum_path = "checksum/#{gemname}-#{ARGV[0]}.gem.sha512"
10
+
11
+ File.open(checksum_path, 'w') { |f| f.write("#{checksum}\n") }
@@ -0,0 +1,31 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'problem_detail'
3
+ spec.version = File.read('VERSION.semver').chomp
4
+ spec.authors = ['Cyril Wack']
5
+ spec.email = ['contact@cyril.email']
6
+
7
+ spec.summary = 'Problem Details for HTTP APIs.'
8
+ spec.description = 'A "problem detail" as a way to carry machine-readable' \
9
+ ' details of errors in a HTTP response, to avoid the' \
10
+ ' need to define new error response formats for HTTP' \
11
+ ' APIs.'
12
+ spec.homepage = 'https://github.com/cyril/problem_detail.rb'
13
+ spec.license = 'MIT'
14
+
15
+ spec.files =
16
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^test/}) }
17
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_dependency 'fix', '~> 0.17.0'
21
+
22
+ spec.add_development_dependency 'bundler', '~> 1.10'
23
+ spec.add_development_dependency 'rake', '~> 10.4'
24
+ spec.add_development_dependency 'yard', '~> 0.8'
25
+ spec.add_development_dependency 'simplecov', '~> 0.10'
26
+ spec.add_development_dependency 'rubocop', '~> 0.35'
27
+
28
+ spec.cert_chain = ['certs/gem-cyril-public_cert.pem']
29
+ private_key = File.expand_path('~/.ssh/gem-cyril-private_key.pem')
30
+ spec.signing_key = private_key if File.exist?(private_key)
31
+ end
metadata ADDED
@@ -0,0 +1,167 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: problem_detail
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ platform: ruby
6
+ authors:
7
+ - Cyril Wack
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRAwDgYDVQQDDAdjb250
14
+ YWN0MRUwEwYKCZImiZPyLGQBGRYFY3lyaWwxFTATBgoJkiaJk/IsZAEZFgVlbWFp
15
+ bDAeFw0xNTA3MzExMjExMDZaFw0xNjA3MzAxMjExMDZaMEAxEDAOBgNVBAMMB2Nv
16
+ bnRhY3QxFTATBgoJkiaJk/IsZAEZFgVjeXJpbDEVMBMGCgmSJomT8ixkARkWBWVt
17
+ YWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6hUEYoxnn1mtoaiK
18
+ NiwjzVPqPgQCR9ZeYdWjLJ3UUG2h5Q6awJCnbaGr8LGGcKtveCDbOJRjtdKNuOTH
19
+ O2FLTkf46nrMGiF+6/j//qh8o0EQHBRKIVMYkxZxZe4Fcqtdf1bWNMZuXeyoDjdt
20
+ 4yiGfizbbTOu0gBf7Yrsv5DsL0a5CU/We7zxMfgGXCVb9PYkD+OWUMcTARYDKfYa
21
+ nN9ECI7CFm/yXcsof/eIQA5EmJNmQnhx8B+8L6jDqQeSUAUrBZnC9CdloKOoqmEL
22
+ weqM2g6LM932Ba74rEl4QlFRYDcs8kjr71UcvseHRCUkFr36j26OU8+gKelsTNdO
23
+ 7OZNKQIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
24
+ LSJTN9h29D6bqOhp+vyvhyM0AF4wHgYDVR0RBBcwFYETY29udGFjdEBjeXJpbC5l
25
+ bWFpbDAeBgNVHRIEFzAVgRNjb250YWN0QGN5cmlsLmVtYWlsMA0GCSqGSIb3DQEB
26
+ BQUAA4IBAQArqCC1rUyGJlF0DF9ZhUOgggyROvO0/WroSI5zWgzdB8EU7RJpsDIV
27
+ caGnpji7h0rQIGWQuJ6TL2fTFLfeGRFdIzRZwWC7TeXhcXngJHZxSjDBt2OpfM8A
28
+ P5eElSQS9iJCetBGGMyt354PfgZkg3URaC+JA6mdEisdtEdo64ElnMsLg9shCqye
29
+ JSR3BbejbyPVva0/MHKD+dR6RswlcM9KMiYOXQml7a/kH6huOHvVq9gj5xC2ih8W
30
+ dzJvWzQ1+dJU6WQv75E9ddSkaQrK3nhdgQVu+/wgvGSrsMvOGNz+LXaSDxQqZuwX
31
+ 0KNQFuIukfrdk8URwRnHoAnvx4U93iUw
32
+ -----END CERTIFICATE-----
33
+ date: 2015-12-18 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: fix
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.17.0
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.17.0
49
+ - !ruby/object:Gem::Dependency
50
+ name: bundler
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.10'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.10'
63
+ - !ruby/object:Gem::Dependency
64
+ name: rake
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '10.4'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '10.4'
77
+ - !ruby/object:Gem::Dependency
78
+ name: yard
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.8'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '0.8'
91
+ - !ruby/object:Gem::Dependency
92
+ name: simplecov
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '0.10'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '0.10'
105
+ - !ruby/object:Gem::Dependency
106
+ name: rubocop
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '0.35'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '0.35'
119
+ description: A "problem detail" as a way to carry machine-readable details of errors
120
+ in a HTTP response, to avoid the need to define new error response formats for HTTP
121
+ APIs.
122
+ email:
123
+ - contact@cyril.email
124
+ executables: []
125
+ extensions: []
126
+ extra_rdoc_files: []
127
+ files:
128
+ - ".gitignore"
129
+ - ".travis.yml"
130
+ - CODE_OF_CONDUCT.md
131
+ - Gemfile
132
+ - LICENSE.md
133
+ - README.md
134
+ - Rakefile
135
+ - VERSION.semver
136
+ - bin/console
137
+ - bin/setup
138
+ - certs/gem-cyril-public_cert.pem
139
+ - lib/problem_detail.rb
140
+ - pkg_checksum
141
+ - problem_detail.gemspec
142
+ homepage: https://github.com/cyril/problem_detail.rb
143
+ licenses:
144
+ - MIT
145
+ metadata: {}
146
+ post_install_message:
147
+ rdoc_options: []
148
+ require_paths:
149
+ - lib
150
+ required_ruby_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ required_rubygems_version: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ requirements: []
161
+ rubyforge_project:
162
+ rubygems_version: 2.4.5.1
163
+ signing_key:
164
+ specification_version: 4
165
+ summary: Problem Details for HTTP APIs.
166
+ test_files: []
167
+ has_rdoc:
metadata.gz.sig ADDED
Binary file