Browse Source

Fix using custom fields in Req

Loïc Hoguin 5 years ago
parent
commit
42eb6bae69
3 changed files with 16 additions and 2 deletions
  1. 1 1
      doc/src/manual/cowboy_req.asciidoc
  2. 5 1
      src/cowboy_req.erl
  3. 10 0
      test/handlers/custom_req_fields_h.erl

+ 1 - 1
doc/src/manual/cowboy_req.asciidoc

@@ -156,7 +156,7 @@ them by prepending an underscore and the name of your application:
 .Setting a custom field
 [source,erlang]
 ----
-Req#{_myapp_auth_method => pubkey}.
+Req#{'_myapp_auth_method' => pubkey}.
 ----
 
 === resp_body()

+ 5 - 1
src/cowboy_req.erl

@@ -160,7 +160,11 @@
 	charset => binary() | undefined,
 	range => {binary(), binary()
 		| [{non_neg_integer(), non_neg_integer() | infinity} | neg_integer()]},
-	websocket_version => 7 | 8 | 13
+	websocket_version => 7 | 8 | 13,
+
+	%% The user is encouraged to use the Req to store information
+	%% when no better solution is available.
+	_ => _
 }.
 -export_type([req/0]).
 

+ 10 - 0
test/handlers/custom_req_fields_h.erl

@@ -0,0 +1,10 @@
+%% This module adds custom fields to the Req object.
+%% It is only meant to be checked by Dialyzer.
+
+-module(custom_req_fields_h).
+
+-export([init/2]).
+
+-spec init(Req, Opts) -> {ok, Req, Opts} when Req::cowboy_req:req().
+init(Req, Opts) ->
+	{ok, Req#{'_myapp_auth_method' => pubkey}, Opts}.