packages feed

hcoap-0.1.0.0: example-server/Main.hs

import Network.CoAP.Server
import Network.CoAP.Transport
import Network.Socket
import qualified Data.ByteString.Char8 as B

findPath :: [Option] -> B.ByteString
findPath [] = B.empty
findPath (option:options) =
  case option of
    UriPath value -> value
    _             -> findPath options

requestHandler :: RequestHandler
requestHandler (request, _) = do
  let options = requestOptions request
  let path = findPath options
  let payload = Just (B.pack ("{\"path\":\"" ++ B.unpack path ++ "\"}"))
  return (Response Content [ContentFormat ApplicationJson] payload)
              

main :: IO ()
main =
  withSocketsDo $ do
    sock <- socket AF_INET6 Datagram defaultProtocol
    bindSocket sock (SockAddrInet6 12345 0 iN6ADDR_ANY 0)
    server <- createServer (createUDPTransport sock) requestHandler
    runServer server