web_pipe 0.15.0 → 0.15.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +1 -0
- data/docs/extensions/not_found.md +40 -0
- data/lib/web_pipe/extensions/not_found/not_found.rb +64 -0
- data/lib/web_pipe/version.rb +1 -1
- data/lib/web_pipe.rb +4 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8148f2a5701baf60d74d238ed32b6fcdaadaaf5006431322222a081d005caa01
|
4
|
+
data.tar.gz: 90a38228ba60cd9637584b85cffd06d0271df5bd2d3d9bc721b3d3cb7de61287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd1b21978116a5743d53106cc4c2b8f042dba4cbe63804adbc370174bf08a9221f563561b123a10445e5cb3f87b7672d9cf0ef8c1161e53a9b54f83ae3aba13
|
7
|
+
data.tar.gz: a0028185e4bfe8858206fc90c8e355891d3e9a14db81fad7076fd8c05960f01abd1418fc05bece3c6fe73585a5732e2f13318a6529e9d6fef75f4e86181da376
|
data/CHANGELOG.md
CHANGED
@@ -4,11 +4,16 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
|
+
## [0.15.1] - 2021-09-19
|
8
|
+
### Added
|
9
|
+
- `:not_found` extension
|
10
|
+
[#46](https://github.com/waiting-for-dev/web_pipe/pull/46)
|
11
|
+
|
7
12
|
## [0.15.0] - 2021-09-12
|
13
|
+
### Added
|
8
14
|
- **BREAKING**. Switch `dry_view` extension with `hanami_view`.
|
9
15
|
[#45](https://github.com/waiting-for-dev/web_pipe/pull/45)
|
10
16
|
|
11
|
-
### Added
|
12
17
|
## [0.14.0] - 2021-04-14
|
13
18
|
### Added
|
14
19
|
- Inspecting operations
|
data/README.md
CHANGED
@@ -41,6 +41,7 @@ extension](docs/extensions/rails.md).
|
|
41
41
|
1. [Flash](docs/extensions/flash.md)
|
42
42
|
1. [Dry Schema](docs/extensions/dry_schema.md)
|
43
43
|
1. [Hanami View](docs/extensions/hanami_view.md)
|
44
|
+
1. [Not found](docs/extensions/not_found.md)
|
44
45
|
1. [Params](docs/extensions/params.md)
|
45
46
|
1. [Rails](docs/extensions/rails.md)
|
46
47
|
1. [Redirect](docs/extensions/redirect.md)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Not found
|
2
|
+
|
3
|
+
This extension helps to build a not-found response in a single method
|
4
|
+
invocation. The `WebPipe::Conn#not_found` method will:
|
5
|
+
|
6
|
+
- Set 404 as response status.
|
7
|
+
- Set 'Not found' as the response body, or instead run a step configured in
|
8
|
+
`:not_found_body_step` config key.
|
9
|
+
- Halt the connection struct.
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require 'web_pipe'
|
13
|
+
require 'web_pipe/plugs/config'
|
14
|
+
|
15
|
+
WebPipe.load_extensions(:params, :not_found)
|
16
|
+
|
17
|
+
class ShowItem
|
18
|
+
include 'web_pipe'
|
19
|
+
|
20
|
+
plug :config, WebPipe::Plugs::Config.(
|
21
|
+
not_found_body_step: ->(conn) { conn.set_response_body('Nothing') }
|
22
|
+
)
|
23
|
+
|
24
|
+
plug :fetch_item do |conn|
|
25
|
+
conn.add(:item, Item[params['id']])
|
26
|
+
end
|
27
|
+
|
28
|
+
plug :check_item do |conn|
|
29
|
+
if conn.fetch(:item)
|
30
|
+
conn
|
31
|
+
else
|
32
|
+
conn.not_found
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
plug :render do |conn|
|
37
|
+
conn.set_response_body(conn.fetch(:item).name)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
```
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#:nodoc:
|
4
|
+
module WebPipe
|
5
|
+
# Generates a not-found response
|
6
|
+
#
|
7
|
+
# This extension helps to build a not-found response in a single method
|
8
|
+
# invocation. The {#not_found} method will:
|
9
|
+
#
|
10
|
+
# - Set 404 as response status.
|
11
|
+
# - Set 'Not found' as the response body, or instead run a step configured in
|
12
|
+
# a `:not_found_body_step` config key.
|
13
|
+
# - Halt the connection struct.
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# require 'web_pipe'
|
17
|
+
# require 'web_pipe/plugs/config'
|
18
|
+
#
|
19
|
+
# WebPipe.load_extensions(:params, :not_found)
|
20
|
+
#
|
21
|
+
# class ShowItem
|
22
|
+
# include 'web_pipe'
|
23
|
+
#
|
24
|
+
# plug :config, WebPipe::Plugs::Config.(
|
25
|
+
# not_found_body_step: ->(conn) { conn.set_response_body('Nothing') }
|
26
|
+
# )
|
27
|
+
#
|
28
|
+
# plug :fetch_item do |conn|
|
29
|
+
# conn.add(:item, Item[params['id']])
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# plug :check_item do |conn|
|
33
|
+
# if conn.fetch(:item)
|
34
|
+
# conn
|
35
|
+
# else
|
36
|
+
# conn.not_found
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# plug :render do |conn|
|
41
|
+
# conn.set_response_body(conn.fetch(:item).name)
|
42
|
+
# end
|
43
|
+
# end
|
44
|
+
module NotFound
|
45
|
+
# @api private
|
46
|
+
RESPONSE_BODY_STEP_CONFIG_KEY = :not_found_body_step
|
47
|
+
|
48
|
+
# Generates the not-found response
|
49
|
+
#
|
50
|
+
# @return [WebPipe::Conn::Halted]
|
51
|
+
# @see NotFound
|
52
|
+
def not_found
|
53
|
+
set_status(404)
|
54
|
+
.then do |conn|
|
55
|
+
response_body_step = conn.fetch_config(RESPONSE_BODY_STEP_CONFIG_KEY,
|
56
|
+
->(c) { c.set_response_body('Not found') })
|
57
|
+
|
58
|
+
response_body_step.call(conn)
|
59
|
+
end.halt
|
60
|
+
end
|
61
|
+
|
62
|
+
Conn.include(NotFound)
|
63
|
+
end
|
64
|
+
end
|
data/lib/web_pipe/version.rb
CHANGED
data/lib/web_pipe.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web_pipe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Busqué
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-monads
|
@@ -279,6 +279,7 @@ files:
|
|
279
279
|
- docs/extensions/dry_schema.md
|
280
280
|
- docs/extensions/flash.md
|
281
281
|
- docs/extensions/hanami_view.md
|
282
|
+
- docs/extensions/not_found.md
|
282
283
|
- docs/extensions/params.md
|
283
284
|
- docs/extensions/rails.md
|
284
285
|
- docs/extensions/redirect.md
|
@@ -320,6 +321,7 @@ files:
|
|
320
321
|
- lib/web_pipe/extensions/dry_schema/plugs/sanitize_params.rb
|
321
322
|
- lib/web_pipe/extensions/flash/flash.rb
|
322
323
|
- lib/web_pipe/extensions/hanami_view/hanami_view.rb
|
324
|
+
- lib/web_pipe/extensions/not_found/not_found.rb
|
323
325
|
- lib/web_pipe/extensions/params/params.rb
|
324
326
|
- lib/web_pipe/extensions/params/params/transf.rb
|
325
327
|
- lib/web_pipe/extensions/rails/rails.rb
|