packages feed

lsp-client-0.1.0.0: src/Language/LSP/Client/Encoding.hs

module Language.LSP.Client.Encoding where

import Data.Aeson (ToJSON)
import Data.Aeson qualified as Aeson
import Data.ByteString.Lazy (LazyByteString)
import Data.ByteString.Lazy.Char8 qualified as LazyByteString
import Prelude

addHeader :: LazyByteString -> LazyByteString
addHeader content =
    mconcat
        [ "Content-Length: "
        , LazyByteString.pack $ show $ LazyByteString.length content
        , "\r\n"
        , "\r\n"
        , content
        ]

encode :: ToJSON a => a -> LazyByteString
encode = addHeader . Aeson.encode