web_pipe 0.15.0 → 0.15.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|