module Strive.Actions.Uploads
( uploadActivity
, getUpload
) where
import Data.ByteString (ByteString)
import Network.HTTP.Client (RequestBody (RequestBodyBS), requestBody)
import Network.HTTP.Types (Query, methodPost, toQuery)
import Strive.Aliases (Extension, Result, UploadId)
import Strive.Client (Client)
import Strive.Internal.HTTP (buildRequest, get, handleResponse, performRequest)
import Strive.Options (UploadActivityOptions)
import Strive.Types (UploadStatus)
uploadActivity :: Client -> ByteString -> Extension -> UploadActivityOptions -> IO (Result UploadStatus)
uploadActivity client body dataType options = do
initialRequest <- buildRequest methodPost client resource query
let request = initialRequest
{ requestBody = RequestBodyBS body
}
response <- performRequest client request
return (handleResponse response)
where
resource = "api/v3/uploads"
query = toQuery
[ ("data_type", dataType)
] ++ toQuery options
getUpload :: Client -> UploadId -> IO (Result UploadStatus)
getUpload client uploadId = get client resource query
where
resource = "api/v3/uploads/" ++ show uploadId
query = [] :: Query