railerr 0.0.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 +7 -0
- data/lib/railerr/api_exceptions.rb +52 -0
- data/lib/railerr/status.rb +70 -0
- data/lib/railerr.rb +2 -0
- metadata +115 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8d4bd95812d58ddf87e8b5a1d8deb962f3c10d329ad32108c537d0e8e5df1c16
|
4
|
+
data.tar.gz: 86311328d87f4a159f6495ba15c1cc592b22e62eb1cccebc7226d33784f1c9c3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b46e3748f88ba6a72c236f0ba1f0f5a23def27253e488f685e1ca1c7b788e4ae834646bb404846b73c4745d86eb2c2ab73ab423190bc1c50bbf6be859704b0e3
|
7
|
+
data.tar.gz: 8e73380426e860f6a9b2a1a95a8adfed7e7def951e44ce235e39f21f6e45aa4c4aae5fadc88c7526b07d41552fe0466b50dba964e994e0ed972b6cc79baa4f80
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'status'
|
4
|
+
|
5
|
+
module Railerr
|
6
|
+
# Base Exception class to raise exceptions associated with HTTP errors
|
7
|
+
class APIException < StandardError
|
8
|
+
DEFAULT_MESSAGE = 'A server error occurred'
|
9
|
+
STATUS_CODE = Status::HTTP_500_INTERNAL_SERVER_ERROR
|
10
|
+
|
11
|
+
def initialize(message = nil)
|
12
|
+
super(message || default_message)
|
13
|
+
end
|
14
|
+
|
15
|
+
def default_message
|
16
|
+
self.class::DEFAULT_MESSAGE
|
17
|
+
end
|
18
|
+
|
19
|
+
def status_code
|
20
|
+
self.class::STATUS_CODE
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Raised for HTTP 400 Bad Request
|
25
|
+
class BadRequestError < APIException
|
26
|
+
DEFAULT_MESSAGE = 'Bad request'
|
27
|
+
STATUS_CODE = Status::HTTP_400_BAD_REQUEST
|
28
|
+
end
|
29
|
+
|
30
|
+
# Raised for HTTP 500 Internal Server Errors
|
31
|
+
class InternalServerError < APIException
|
32
|
+
DEFAULT_MESSAGE = 'Internal server error'
|
33
|
+
end
|
34
|
+
|
35
|
+
# Raised for HTTP 423 Locked
|
36
|
+
class LockedError < APIException
|
37
|
+
DEFAULT_MESSAGE = 'Locked'
|
38
|
+
STATUS_CODE = Status::HTTP_423_LOCKED
|
39
|
+
end
|
40
|
+
|
41
|
+
# Raised for HTTP 404 Not Found.
|
42
|
+
class NotFoundError < APIException
|
43
|
+
DEFAULT_MESSAGE = 'Not found'
|
44
|
+
STATUS_CODE = Status::HTTP_404_NOT_FOUND
|
45
|
+
end
|
46
|
+
|
47
|
+
# Raised for HTTP 422 Unprocessable Content
|
48
|
+
class UnprocessableContentError < APIException
|
49
|
+
DEFAULT_MESSAGE = 'Unprocessable content'
|
50
|
+
STATUS_CODE = Status::HTTP_422_UNPROCESSABLE_ENTITY
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Railerr
|
4
|
+
module Status
|
5
|
+
HTTP_100_CONTINUE = 100
|
6
|
+
HTTP_101_SWITCHING_PROTOCOLS = 101
|
7
|
+
HTTP_102_PROCESSING = 102
|
8
|
+
HTTP_103_EARLY_HINTS = 103
|
9
|
+
HTTP_200_OK = 200
|
10
|
+
HTTP_201_CREATED = 201
|
11
|
+
HTTP_202_ACCEPTED = 202
|
12
|
+
HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203
|
13
|
+
HTTP_204_NO_CONTENT = 204
|
14
|
+
HTTP_205_RESET_CONTENT = 205
|
15
|
+
HTTP_206_PARTIAL_CONTENT = 206
|
16
|
+
HTTP_207_MULTI_STATUS = 207
|
17
|
+
HTTP_208_ALREADY_REPORTED = 208
|
18
|
+
HTTP_226_IM_USED = 226
|
19
|
+
HTTP_300_MULTIPLE_CHOICES = 300
|
20
|
+
HTTP_301_MOVED_PERMANENTLY = 301
|
21
|
+
HTTP_302_FOUND = 302
|
22
|
+
HTTP_303_SEE_OTHER = 303
|
23
|
+
HTTP_304_NOT_MODIFIED = 304
|
24
|
+
HTTP_305_USE_PROXY = 305
|
25
|
+
HTTP_306_RESERVED = 306
|
26
|
+
HTTP_307_TEMPORARY_REDIRECT = 307
|
27
|
+
HTTP_308_PERMANENT_REDIRECT = 308
|
28
|
+
HTTP_400_BAD_REQUEST = 400
|
29
|
+
HTTP_401_UNAUTHORIZED = 401
|
30
|
+
HTTP_402_PAYMENT_REQUIRED = 402
|
31
|
+
HTTP_403_FORBIDDEN = 403
|
32
|
+
HTTP_404_NOT_FOUND = 404
|
33
|
+
HTTP_405_METHOD_NOT_ALLOWED = 405
|
34
|
+
HTTP_406_NOT_ACCEPTABLE = 406
|
35
|
+
HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407
|
36
|
+
HTTP_408_REQUEST_TIMEOUT = 408
|
37
|
+
HTTP_409_CONFLICT = 409
|
38
|
+
HTTP_410_GONE = 410
|
39
|
+
HTTP_411_LENGTH_REQUIRED = 411
|
40
|
+
HTTP_412_PRECONDITION_FAILED = 412
|
41
|
+
HTTP_413_REQUEST_ENTITY_TOO_LARGE = 413
|
42
|
+
HTTP_414_REQUEST_URI_TOO_LONG = 414
|
43
|
+
HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415
|
44
|
+
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE = 416
|
45
|
+
HTTP_417_EXPECTATION_FAILED = 417
|
46
|
+
HTTP_418_IM_A_TEAPOT = 418
|
47
|
+
HTTP_421_MISDIRECTED_REQUEST = 421
|
48
|
+
HTTP_422_UNPROCESSABLE_ENTITY = 422
|
49
|
+
HTTP_423_LOCKED = 423
|
50
|
+
HTTP_424_FAILED_DEPENDENCY = 424
|
51
|
+
HTTP_425_TOO_EARLY = 425
|
52
|
+
HTTP_426_UPGRADE_REQUIRED = 426
|
53
|
+
HTTP_428_PRECONDITION_REQUIRED = 428
|
54
|
+
HTTP_429_TOO_MANY_REQUESTS = 429
|
55
|
+
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431
|
56
|
+
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451
|
57
|
+
HTTP_500_INTERNAL_SERVER_ERROR = 500
|
58
|
+
HTTP_501_NOT_IMPLEMENTED = 501
|
59
|
+
HTTP_502_BAD_GATEWAY = 502
|
60
|
+
HTTP_503_SERVICE_UNAVAILABLE = 503
|
61
|
+
HTTP_504_GATEWAY_TIMEOUT = 504
|
62
|
+
HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505
|
63
|
+
HTTP_506_VARIANT_ALSO_NEGOTIATES = 506
|
64
|
+
HTTP_507_INSUFFICIENT_STORAGE = 507
|
65
|
+
HTTP_508_LOOP_DETECTED = 508
|
66
|
+
HTTP_509_BANDWIDTH_LIMIT_EXCEEDED = 509
|
67
|
+
HTTP_510_NOT_EXTENDED = 510
|
68
|
+
HTTP_511_NETWORK_AUTHENTICATION_REQUIRED = 511
|
69
|
+
end
|
70
|
+
end
|
data/lib/railerr.rb
ADDED
metadata
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: railerr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bernhard Niksch
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-01-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '11.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '11.1'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.11'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.11'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.21'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.21'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov-console
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.9'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.9'
|
83
|
+
description: A declarative, fire and forget way to handle errors in a REST API
|
84
|
+
email:
|
85
|
+
executables: []
|
86
|
+
extensions: []
|
87
|
+
extra_rdoc_files: []
|
88
|
+
files:
|
89
|
+
- lib/railerr.rb
|
90
|
+
- lib/railerr/api_exceptions.rb
|
91
|
+
- lib/railerr/status.rb
|
92
|
+
homepage:
|
93
|
+
licenses:
|
94
|
+
- MIT
|
95
|
+
metadata: {}
|
96
|
+
post_install_message:
|
97
|
+
rdoc_options: []
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: 2.7.6
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
requirements: []
|
111
|
+
rubygems_version: 3.4.10
|
112
|
+
signing_key:
|
113
|
+
specification_version: 4
|
114
|
+
summary: RESTful API error handler
|
115
|
+
test_files: []
|