The hcoap package

[Tags:bsd3, library, program, test]

CoAP library for writing CoAP clients, servers or just for decoding and encoding CoAP messages. The Network.CoAP.Server and Network.CoAP.Client modules allows building CoAP servers and clients on top of a messaging layer which provides reliable transport of CoAP requests/responses.


[Skip to Readme]

Properties

Versions 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1.0, 0.1.2.0, 0.1.2.1
Dependencies async (>=2.0 && <3), base (==4.*), binary (==0.7.*), bytestring (==0.10.*), dns (==2.*), hcoap, iproute (>=1.3 && <2), mtl (>=2.1 && <2.3), network (==2.6.*), network-uri (>=2.6 && <3), random (>=1.1 && <2), stm (==2.4.*), time (>=1.4 && <1.6) [details]
License BSD3
Copyright Copyright (c) 2016, Ulf Lilleengen
Author Ulf Lilleengen
Maintainer ulf.lilleengen@gmail.com
Category Network
Home page https://github.com/lulf/hcoap
Source repository head: git clone git://github.com/lulf/hcoap.git
Uploaded Thu Feb 18 21:36:00 UTC 2016 by lulf
Distributions NixOS:0.1.2.1
Downloads 244 total (11 in the last 30 days)
Votes
0 []
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for hcoap

Readme for hcoap-0.1.2.1

Hcoap is a haskell CoAP library. See http://coap.technology/ for more information about the CoAP protocol. The library aims to support RFC 7252 specification, and currently only support non-secure CoAP transport.

The library is split into a high-level API in Network.CoAP.Server and Network.CoAP.Client, and a lower layer API in Network.CoAP.Message for working directly with CoAP messages.

Build Status

Example server

main =
  withSocketsDo $ do
    sock <- socket AF_INET6 Datagram defaultProtocol
    bindSocket sock (SockAddrInet6 5683 0 iN6ADDR_ANY 0)
    server <- createServer (createUDPTransport sock) (\(request, _) -> do
      let payload = Just (B.pack "{\"value\":\"foo\"}")
      return (Response Content [ContentFormat ApplicationJson] payload))
    runServer server

Example client

main = do
  let request = Request { requestMethod = GET
                        , requestOptions = []
                        , requestPayload = Nothing
                        , requestReliable = True }
withSocketsDo $ do
  sock <- socket AF_INET6 Datagram defaultProtocol
  bindSocket sock (SockAddrInet6 0 0 iN6ADDR_ANY 0)
  let transport = createUDPTransport sock
  client <- createClient transport
  uri <- parseURI "coap://[::1]:5683/hello"
  response <- doRequest client uri request
  putStrLn ("Got response: " ++ show response)
  return ()