packages feed

tinkoff-invest-sdk-0.1.0.0: src/Invest/Service/StopOrders.hs

module Invest.Service.StopOrders(
    postStopOrder,
    getStopOrders,
    cancelStopOrder
) where

import           Control.Lens                    ((&), (.~), (^.))
import           Data.ProtoLens.Message          (defMessage)
import           Data.Text                       as T
import           Invest.Client.Helpers           (GrpcClient, GrpcIO, runUnary,
                                                  runUnary_)
import           Network.GRPC.HTTP2.ProtoLens    (RPC (..))
import           Proto.Google.Protobuf.Timestamp
import qualified Proto.Invest.Common_Fields      as C
import           Proto.Invest.Stoporders
import qualified Proto.Invest.Stoporders_Fields  as SO

postStopOrder :: GrpcClient -> PostStopOrderRequest -> GrpcIO Text
postStopOrder = runUnary_ (^. SO.stopOrderId) (RPC :: RPC StopOrdersService "postStopOrder")

getStopOrders :: GrpcClient -> Text -> GrpcIO [StopOrder]
getStopOrders gc accountId = runUnary_ (^. SO.stopOrders) (RPC :: RPC StopOrdersService "getStopOrders") gc message
    where message = defMessage & SO.accountId .~ accountId

cancelStopOrder :: GrpcClient -> CancelStopOrderRequest -> GrpcIO Timestamp
cancelStopOrder = runUnary_ (^. C.time) (RPC :: RPC StopOrdersService "cancelStopOrder")