Browse Source

Convert the basic auth example to a release

Loïc Hoguin 11 years ago
parent
commit
51ce122858

+ 20 - 15
examples/basic_auth/README.md

@@ -1,24 +1,28 @@
-Cowboy Basic Authorization Rest Hello World
-===========================================
+Basic authorization example using REST
+======================================
 
-To compile this example you need rebar in your PATH.
+To try this example, you need GNU `make`, `git` and
+[relx](https://github.com/erlware/relx) in your PATH.
 
-Type the following command:
-```
-$ rebar get-deps compile
-```
+To build the example, run the following command:
 
-You can then start the Erlang node with the following command:
+``` bash
+$ make
 ```
-./start.sh
+
+To start the release in the foreground:
+
+``` bash
+$ ./_rel/bin/hello_world_example console
 ```
 
-Then run any given command or point your browser to the indicated URL.
+Then point your browser at [http://localhost:8080](http://localhost:8080).
 
-Examples
---------
+Example output
+--------------
+
+Request with no authentication:
 
-### Get 401
 ``` bash
 $ curl -i http://localhost:8080
 HTTP/1.1 401 Unauthorized
@@ -26,10 +30,11 @@ connection: keep-alive
 server: Cowboy
 date: Sun, 20 Jan 2013 14:10:27 GMT
 content-length: 0
-www-authenticate: Restricted
+www-authenticate: Basic realm="cowboy"
 ```
 
-### Get 200
+Request with authentication:
+
 ``` bash
 $ curl -i -u "Alladin:open sesame" http://localhost:8080
 HTTP/1.1 200 OK

+ 0 - 4
examples/basic_auth/rebar.config

@@ -1,4 +0,0 @@
-{deps, [
-	{cowboy, ".*",
-		{git, "git://github.com/extend/cowboy.git", "master"}}
-]}.

+ 0 - 15
examples/basic_auth/src/basic_auth.erl

@@ -1,15 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
--module(basic_auth).
-
-%% API.
--export([start/0]).
-
-%% API.
-
-start() ->
-	ok = application:start(crypto),
-	ok = application:start(cowlib),
-	ok = application:start(ranch),
-	ok = application:start(cowboy),
-	ok = application:start(basic_auth).

+ 7 - 10
examples/basic_auth/src/toppage_handler.erl

@@ -1,32 +1,29 @@
 %% Feel free to use, reuse and abuse the code in this file.
 
-%% @doc Basic authorization Hello world handler.
+%% @doc Handler with basic HTTP authorization.
 -module(toppage_handler).
 
 -export([init/3]).
 -export([content_types_provided/2]).
 -export([is_authorized/2]).
--export([hello_to_text/2]).
+-export([to_text/2]).
 
 init(_Transport, _Req, []) ->
 	{upgrade, protocol, cowboy_rest}.
 
-
-is_authorized(Req, S) ->
+is_authorized(Req, State) ->
 	{ok, Auth, Req1} = cowboy_req:parse_header(<<"authorization">>, Req),
 	case Auth of
 		{<<"basic">>, {User = <<"Alladin">>, <<"open sesame">>}} ->
 			{true, Req1, User};
 		_ ->
-			{{false, <<"Basic realm=\"cowboy\"">>}, Req1, S}
+			{{false, <<"Basic realm=\"cowboy\"">>}, Req1, State}
 	end.
 
 content_types_provided(Req, State) ->
 	{[
-		{<<"text/plain">>, hello_to_text}
+		{<<"text/plain">>, to_text}
 	], Req, State}.
 
-
-hello_to_text(Req, User) ->
-	{<< <<"Hello, ">>/binary, User/binary, <<"!\n">>/binary >>, Req, User}.
-
+to_text(Req, User) ->
+	{<< "Hello, ", User/binary, "!\n" >>, Req, User}.

+ 0 - 4
examples/basic_auth/start.sh

@@ -1,4 +0,0 @@
-#!/bin/sh
-erl -pa ebin deps/*/ebin -s basic_auth \
-	-eval "io:format(\"Get 401: curl -i http://localhost:8080~n\")." \
-	-eval "io:format(\"Get 200: curl -i -u \\\"Alladin:open sesame\\\" http://localhost:8080~n\")."