0 | ||| HTTP methods
 1 | module Pact.WAI.Method
 2 |
 3 | import Derive.Prelude
 4 | import Pact.WAI.HTTPErr
 5 |
 6 | %language ElabReflection
 7 |
 8 | ||| HTTP method enum
 9 | ||| Defines supported HTTP request methods
10 | public export
11 | data Method =
12 |   HEAD | CONNECT 
13 |   | OPTIONS | TRACE | GET
14 |   | POST | PUT | PATCH | DELETE
15 |
16 | %runElab derive "Method" [Show,Eq,Ord]
17 |
18 |
19 | ||| Parse HTTP method string
20 | ||| 
21 | ||| Converts a string to a Method enum value
22 | ||| @ s Method string (e.g. "GET", "POST", etc.)
23 | public export
24 | method : String -> Either HTTPErr Method
25 | method "HEAD" = Right HEAD
26 | method "CONNECT" = Right CONNECT
27 |
28 | method "OPTIONS" = Right OPTIONS
29 | method "TRACE" = Right TRACE
30 | method "GET" = Right GET
31 |
32 | method "POST" = Right POST
33 | method "PUT" = Right PUT
34 | method "PATCH" = Right PATCH
35 | method "DELETE" = Right DELETE
36 | method _ = Left InvalidRequest
37 |
38 |