packages feed

phoityne-vscode-0.0.9.0: app/Phoityne/VSCode/TH/CompletionsResponseJSON.hs

{-# LANGUAGE TemplateHaskell     #-}


module Phoityne.VSCode.TH.CompletionsResponseJSON where

import Data.Aeson.TH

import Phoityne.VSCode.Utility
import Phoityne.VSCode.TH.CompletionsResponseBodyJSON
import Phoityne.VSCode.TH.CompletionsRequestJSON

-- |
--  Response to 'completions' request.
--
data CompletionsResponse =
  CompletionsResponse {
    seqCompletionsResponse         :: Int     -- Sequence number
  , typeCompletionsResponse        :: String  -- One of "request", "response", or "event"
  , request_seqCompletionsResponse :: Int     -- Sequence number of the corresponding request
  , successCompletionsResponse     :: Bool    -- Outcome of the request
  , commandCompletionsResponse     :: String  -- The command requested 
  , messageCompletionsResponse     :: String  -- Contains error message if success == false.
  , bodyCompletionsResponse        :: CompletionsResponseBody
  } deriving (Show, Read, Eq)

$(deriveJSON defaultOptions { fieldLabelModifier = rdrop (length "CompletionsResponse") } ''CompletionsResponse)

-- |
--
defaultCompletionsResponse :: Int -> CompletionsRequest -> CompletionsResponse
defaultCompletionsResponse seq (CompletionsRequest reqSeq _ _ _) =
  CompletionsResponse seq "response" reqSeq True "completions" "" defaultCompletionsResponseBody

-- |
--
errorCompletionsResponse :: Int -> CompletionsRequest -> String -> CompletionsResponse
errorCompletionsResponse seq (CompletionsRequest reqSeq _ _ _) msg =
  CompletionsResponse seq "response" reqSeq False "completions" msg defaultCompletionsResponseBody