forked from seven1m/30-days-of-elixir
-
Notifications
You must be signed in to change notification settings - Fork 0
/
20-inets.exs
27 lines (22 loc) · 699 Bytes
/
20-inets.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# just playing with inets - nothing special
require Record
defmodule WebServer do
def run do
:inets.start()
options = [server_name: 'foo', server_root: '/tmp', document_root: '/tmp', port: 3000, modules: [App]]
{:ok, _pid} = :inets.start :httpd, options
IO.puts "running on port 3000"
receive do: (_ -> :ok) # TODO better way to wait?
end
end
defmodule App do
Record.defrecord :mod, Record.extract(:mod, from_lib: "inets/include/httpd.hrl")
def unquote(:do)(data) do
response = case mod(data, :request_uri) do
'/' -> 'hello world'
_ -> ['hello ', mod(data, :request_uri)]
end
{:proceed, [response: {200, response}]}
end
end
WebServer.run