packages feed

phoityne-vscode-0.0.3.0: app/Phoityne/IO/GUI/VSCode/TH/VariablesResponseJSON.hs

{-# LANGUAGE TemplateHaskell     #-}


module Phoityne.IO.GUI.VSCode.TH.VariablesResponseJSON where

import Data.Aeson.TH

import Phoityne.Utility
import Phoityne.IO.GUI.VSCode.TH.VariablesBodyJSON
import Phoityne.IO.GUI.VSCode.TH.VariablesRequestJSON

-- |
--  Response to "variables" request. 
--
data VariablesResponse =
  VariablesResponse {
    seqVariablesResponse         :: Int     -- Sequence number
  , typeVariablesResponse        :: String  -- One of "request", "response", or "event"
  , request_seqVariablesResponse :: Int     -- Sequence number of the corresponding request
  , successVariablesResponse     :: Bool    -- Outcome of the request
  , commandVariablesResponse     :: String  -- The command requested 
  , messageVariablesResponse     :: String  -- Contains error message if success == false.
  , bodyVariablesResponse        :: VariablesBody
  } deriving (Show, Read, Eq)

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



-- |
--
defaultVariablesResponse :: Int -> VariablesRequest -> VariablesResponse
defaultVariablesResponse seq (VariablesRequest reqSeq _ _ _) =
  VariablesResponse seq "response" reqSeq True "variables" "" defaultVariablesBody

-- |
--
errorVariablesResponse :: Int -> VariablesRequest -> String -> VariablesResponse
errorVariablesResponse seq (VariablesRequest reqSeq _ _ _) msg =
  VariablesResponse seq "response" reqSeq False "variables" msg defaultVariablesBody