module Network.Syncthing.Get
(
ping
, apiKey
, config
, completion
, connections
, deviceId
, discovery
, errors
, ignores
, model
, need
, report
, sync
, system
, tree
, upgrade
, version
) where
import Control.Applicative ((<$>))
import Control.Monad ((>=>))
import qualified Data.Map as M
import Data.Maybe (catMaybes)
import Data.Text (Text, pack)
import Network.Syncthing.Internal.Error
import Network.Syncthing.Internal.Monad
import Network.Syncthing.Internal.Request
import Network.Syncthing.Internal.Types
ping :: MonadSync m => SyncM m Text
ping = getPing <$> ping'
where
ping' = query $ getRequest { path = "/rest/ping" }
config :: MonadSync m => SyncM m Config
config = query $ getRequest { path = "/rest/config" }
apiKey :: MonadSync m => SyncM m (Maybe Text)
apiKey = getApiKey . getGuiConfig <$> config
completion :: MonadSync m => Device -> FolderName -> SyncM m Int
completion device folder = getCompletion <$> completion'
where
completion' = query $ getRequest { path = "/rest/completion"
, params = [ ("device", device)
, ("folder", folder) ]
}
connections :: MonadSync m => SyncM m (M.Map Device Connection)
connections = query $ getRequest { path = "/rest/connections" }
deviceId :: MonadSync m => Device -> SyncM m Device
deviceId = deviceId' >=> either (liftLeft . InvalidDeviceId) liftRight
where
deviceId' :: MonadSync m => Device -> SyncM m (Either DeviceError Device)
deviceId' device = query $ getRequest { path = "/rest/deviceid"
, params = [("id", device)]
}
discovery :: MonadSync m => SyncM m (M.Map Device [CacheEntry])
discovery = query $ getRequest { path = "/rest/discovery" }
errors :: MonadSync m => SyncM m [Error]
errors = getErrors <$> errors'
where
errors' = query $ getRequest { path = "/rest/errors" }
ignores :: MonadSync m => FolderName -> SyncM m Ignore
ignores folder = query $ getRequest { path = "/rest/ignores"
, params = [("folder", folder)]
}
model :: MonadSync m => FolderName -> SyncM m Model
model folder = query $ getRequest { path = "/rest/model"
, params = [("folder", folder)]
}
need :: MonadSync m => FolderName -> SyncM m Need
need folder = query $ getRequest { path = "/rest/need"
, params = [("folder", folder)]
}
report :: MonadSync m => SyncM m UsageReport
report = query $ getRequest { path = "/rest/report" }
sync :: MonadSync m => SyncM m Bool
sync = getSync <$> sync'
where
sync' = query $ getRequest { path = "/rest/config/sync" }
system :: MonadSync m => SyncM m System
system = query $ getRequest { path = "/rest/system" }
tree :: MonadSync m
=> FolderName
-> Maybe Path
-> Maybe Int
-> SyncM m (Maybe DirTree)
tree folder prefix levels =
queryMaybe $ getRequest { path = "/rest/tree"
, params = [("folder", folder)] ++ optionals
}
where
optionals = catMaybes [("prefix",) <$> prefix, ("levels",) <$> levelsText]
levelsText = pack . show <$> levels
upgrade :: MonadSync m => SyncM m Upgrade
upgrade = query $ getRequest { path = "/rest/upgrade" }
version :: MonadSync m => SyncM m Version
version = query $ getRequest { path = "/rest/version" }