mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-04-05 10:59:33 +00:00
2039 lines
63 KiB
Elm
2039 lines
63 KiB
Elm
{-
|
|
Copyright 2020 Docspell Contributors
|
|
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
-}
|
|
|
|
|
|
module Api exposing
|
|
( addConcEquip
|
|
, addConcPerson
|
|
, addCorrOrg
|
|
, addCorrPerson
|
|
, addMember
|
|
, addTag
|
|
, addTagsMultiple
|
|
, attachmentPreviewURL
|
|
, cancelJob
|
|
, changeFolderName
|
|
, changePassword
|
|
, checkCalEvent
|
|
, confirmMultiple
|
|
, createImapSettings
|
|
, createMailSettings
|
|
, createNewFolder
|
|
, createNotifyDueItems
|
|
, createScanMailbox
|
|
, deleteAllItems
|
|
, deleteAttachment
|
|
, deleteAttachments
|
|
, deleteCustomField
|
|
, deleteCustomValue
|
|
, deleteCustomValueMultiple
|
|
, deleteEquip
|
|
, deleteFolder
|
|
, deleteImapSettings
|
|
, deleteItem
|
|
, deleteMailSettings
|
|
, deleteNotifyDueItems
|
|
, deleteOrg
|
|
, deletePerson
|
|
, deleteScanMailbox
|
|
, deleteSource
|
|
, deleteTag
|
|
, deleteUser
|
|
, fileURL
|
|
, getAttachmentMeta
|
|
, getClientSettings
|
|
, getCollective
|
|
, getCollectiveSettings
|
|
, getContacts
|
|
, getCustomFields
|
|
, getEquipment
|
|
, getEquipments
|
|
, getFolderDetail
|
|
, getFolders
|
|
, getImapSettings
|
|
, getInsights
|
|
, getItemProposals
|
|
, getJobQueueState
|
|
, getJobQueueStateIn
|
|
, getMailSettings
|
|
, getNotifyDueItems
|
|
, getOrgFull
|
|
, getOrgLight
|
|
, getOrganizations
|
|
, getPersonFull
|
|
, getPersons
|
|
, getPersonsLight
|
|
, getScanMailbox
|
|
, getSentMails
|
|
, getSources
|
|
, getTagCloud
|
|
, getTags
|
|
, getUsers
|
|
, itemBasePreviewURL
|
|
, itemDetail
|
|
, itemIndexSearch
|
|
, itemSearch
|
|
, itemSearchStats
|
|
, login
|
|
, loginSession
|
|
, logout
|
|
, moveAttachmentBefore
|
|
, newInvite
|
|
, postCustomField
|
|
, postEquipment
|
|
, postNewUser
|
|
, postOrg
|
|
, postPerson
|
|
, postSource
|
|
, postTag
|
|
, putCustomField
|
|
, putCustomValue
|
|
, putCustomValueMultiple
|
|
, putUser
|
|
, refreshSession
|
|
, register
|
|
, removeMember
|
|
, removeTagsMultiple
|
|
, reprocessItem
|
|
, reprocessMultiple
|
|
, saveClientSettings
|
|
, sendMail
|
|
, setAttachmentName
|
|
, setCollectiveSettings
|
|
, setConcEquip
|
|
, setConcEquipmentMultiple
|
|
, setConcPerson
|
|
, setConcPersonMultiple
|
|
, setConfirmed
|
|
, setCorrOrg
|
|
, setCorrOrgMultiple
|
|
, setCorrPerson
|
|
, setCorrPersonMultiple
|
|
, setDateMultiple
|
|
, setDirection
|
|
, setDirectionMultiple
|
|
, setDueDateMultiple
|
|
, setFolder
|
|
, setFolderMultiple
|
|
, setItemDate
|
|
, setItemDueDate
|
|
, setItemName
|
|
, setItemNotes
|
|
, setJobPrio
|
|
, setNameMultiple
|
|
, setTags
|
|
, setTagsMultiple
|
|
, setUnconfirmed
|
|
, startClassifier
|
|
, startOnceNotifyDueItems
|
|
, startOnceScanMailbox
|
|
, startReIndex
|
|
, submitNotifyDueItems
|
|
, toggleTags
|
|
, unconfirmMultiple
|
|
, updateNotifyDueItems
|
|
, updateScanMailbox
|
|
, upload
|
|
, uploadAmend
|
|
, uploadSingle
|
|
, versionInfo
|
|
)
|
|
|
|
import Api.Model.AttachmentMeta exposing (AttachmentMeta)
|
|
import Api.Model.AuthResult exposing (AuthResult)
|
|
import Api.Model.BasicResult exposing (BasicResult)
|
|
import Api.Model.CalEventCheck exposing (CalEventCheck)
|
|
import Api.Model.CalEventCheckResult exposing (CalEventCheckResult)
|
|
import Api.Model.Collective exposing (Collective)
|
|
import Api.Model.CollectiveSettings exposing (CollectiveSettings)
|
|
import Api.Model.ContactList exposing (ContactList)
|
|
import Api.Model.CustomFieldList exposing (CustomFieldList)
|
|
import Api.Model.CustomFieldValue exposing (CustomFieldValue)
|
|
import Api.Model.DirectionValue exposing (DirectionValue)
|
|
import Api.Model.EmailSettings exposing (EmailSettings)
|
|
import Api.Model.EmailSettingsList exposing (EmailSettingsList)
|
|
import Api.Model.Equipment exposing (Equipment)
|
|
import Api.Model.EquipmentList exposing (EquipmentList)
|
|
import Api.Model.FolderDetail exposing (FolderDetail)
|
|
import Api.Model.FolderList exposing (FolderList)
|
|
import Api.Model.GenInvite exposing (GenInvite)
|
|
import Api.Model.IdList exposing (IdList)
|
|
import Api.Model.IdResult exposing (IdResult)
|
|
import Api.Model.ImapSettings exposing (ImapSettings)
|
|
import Api.Model.ImapSettingsList exposing (ImapSettingsList)
|
|
import Api.Model.InviteResult exposing (InviteResult)
|
|
import Api.Model.ItemDetail exposing (ItemDetail)
|
|
import Api.Model.ItemInsights exposing (ItemInsights)
|
|
import Api.Model.ItemLightList exposing (ItemLightList)
|
|
import Api.Model.ItemProposals exposing (ItemProposals)
|
|
import Api.Model.ItemQuery exposing (ItemQuery)
|
|
import Api.Model.ItemUploadMeta exposing (ItemUploadMeta)
|
|
import Api.Model.ItemsAndDate exposing (ItemsAndDate)
|
|
import Api.Model.ItemsAndDirection exposing (ItemsAndDirection)
|
|
import Api.Model.ItemsAndFieldValue exposing (ItemsAndFieldValue)
|
|
import Api.Model.ItemsAndName exposing (ItemsAndName)
|
|
import Api.Model.ItemsAndRef exposing (ItemsAndRef)
|
|
import Api.Model.ItemsAndRefs exposing (ItemsAndRefs)
|
|
import Api.Model.JobPriority exposing (JobPriority)
|
|
import Api.Model.JobQueueState exposing (JobQueueState)
|
|
import Api.Model.MoveAttachment exposing (MoveAttachment)
|
|
import Api.Model.NewCustomField exposing (NewCustomField)
|
|
import Api.Model.NewFolder exposing (NewFolder)
|
|
import Api.Model.NotificationSettings exposing (NotificationSettings)
|
|
import Api.Model.NotificationSettingsList exposing (NotificationSettingsList)
|
|
import Api.Model.OptionalDate exposing (OptionalDate)
|
|
import Api.Model.OptionalId exposing (OptionalId)
|
|
import Api.Model.OptionalText exposing (OptionalText)
|
|
import Api.Model.Organization exposing (Organization)
|
|
import Api.Model.OrganizationList exposing (OrganizationList)
|
|
import Api.Model.PasswordChange exposing (PasswordChange)
|
|
import Api.Model.Person exposing (Person)
|
|
import Api.Model.PersonList exposing (PersonList)
|
|
import Api.Model.ReferenceList exposing (ReferenceList)
|
|
import Api.Model.Registration exposing (Registration)
|
|
import Api.Model.ScanMailboxSettings exposing (ScanMailboxSettings)
|
|
import Api.Model.ScanMailboxSettingsList exposing (ScanMailboxSettingsList)
|
|
import Api.Model.SearchStats exposing (SearchStats)
|
|
import Api.Model.SentMails exposing (SentMails)
|
|
import Api.Model.SimpleMail exposing (SimpleMail)
|
|
import Api.Model.SourceAndTags exposing (SourceAndTags)
|
|
import Api.Model.SourceList exposing (SourceList)
|
|
import Api.Model.SourceTagIn
|
|
import Api.Model.StringList exposing (StringList)
|
|
import Api.Model.Tag exposing (Tag)
|
|
import Api.Model.TagCloud exposing (TagCloud)
|
|
import Api.Model.TagList exposing (TagList)
|
|
import Api.Model.User exposing (User)
|
|
import Api.Model.UserList exposing (UserList)
|
|
import Api.Model.UserPass exposing (UserPass)
|
|
import Api.Model.VersionInfo exposing (VersionInfo)
|
|
import Data.ContactType exposing (ContactType)
|
|
import Data.Flags exposing (Flags)
|
|
import Data.Priority exposing (Priority)
|
|
import Data.UiSettings exposing (UiSettings)
|
|
import File exposing (File)
|
|
import Http
|
|
import Json.Decode as JsonDecode
|
|
import Json.Encode as JsonEncode
|
|
import Set exposing (Set)
|
|
import Task
|
|
import Url
|
|
import Util.File
|
|
import Util.Http as Http2
|
|
|
|
|
|
|
|
--- Custom Fields
|
|
|
|
|
|
putCustomValueMultiple :
|
|
Flags
|
|
-> ItemsAndFieldValue
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
putCustomValueMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/customfield"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndFieldValue.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteCustomValueMultiple :
|
|
Flags
|
|
-> ItemsAndName
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteCustomValueMultiple flags data receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/customfieldremove"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndName.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteCustomValue :
|
|
Flags
|
|
-> String
|
|
-> String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteCustomValue flags item field receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/customfield/" ++ field
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
putCustomValue :
|
|
Flags
|
|
-> String
|
|
-> CustomFieldValue
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
putCustomValue flags item fieldValue receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/customfield"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.CustomFieldValue.encode fieldValue)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getCustomFields : Flags -> String -> (Result Http.Error CustomFieldList -> msg) -> Cmd msg
|
|
getCustomFields flags query receive =
|
|
Http2.authGet
|
|
{ url =
|
|
flags.config.baseUrl
|
|
++ "/api/v1/sec/customfield?q="
|
|
++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.CustomFieldList.decoder
|
|
}
|
|
|
|
|
|
postCustomField :
|
|
Flags
|
|
-> NewCustomField
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
postCustomField flags field receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/customfield"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NewCustomField.encode field)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
putCustomField :
|
|
Flags
|
|
-> String
|
|
-> NewCustomField
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
putCustomField flags id field receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/customfield/" ++ id
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NewCustomField.encode field)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteCustomField : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteCustomField flags id receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/customfield/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Folders
|
|
|
|
|
|
deleteFolder : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteFolder flags id receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
removeMember : Flags -> String -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
removeMember flags id user receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder/" ++ id ++ "/member/" ++ user
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addMember : Flags -> String -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addMember flags id user receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder/" ++ id ++ "/member/" ++ user
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
changeFolderName : Flags -> String -> NewFolder -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
changeFolderName flags id ns receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder/" ++ id
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NewFolder.encode ns)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
createNewFolder : Flags -> NewFolder -> (Result Http.Error IdResult -> msg) -> Cmd msg
|
|
createNewFolder flags ns receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NewFolder.encode ns)
|
|
, expect = Http.expectJson receive Api.Model.IdResult.decoder
|
|
}
|
|
|
|
|
|
getFolderDetail : Flags -> String -> (Result Http.Error FolderDetail -> msg) -> Cmd msg
|
|
getFolderDetail flags id receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/folder/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.FolderDetail.decoder
|
|
}
|
|
|
|
|
|
getFolders : Flags -> String -> Bool -> (Result Http.Error FolderList -> msg) -> Cmd msg
|
|
getFolders flags query owningOnly receive =
|
|
Http2.authGet
|
|
{ url =
|
|
flags.config.baseUrl
|
|
++ "/api/v1/sec/folder?q="
|
|
++ Url.percentEncode query
|
|
++ (if owningOnly then
|
|
"&owning=true"
|
|
|
|
else
|
|
""
|
|
)
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.FolderList.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Full-Text
|
|
|
|
|
|
startReIndex : Flags -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
startReIndex flags receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/fts/reIndex"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Scan Mailboxes
|
|
|
|
|
|
deleteScanMailbox :
|
|
Flags
|
|
-> String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteScanMailbox flags id receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/scanmailbox/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
startOnceScanMailbox :
|
|
Flags
|
|
-> ScanMailboxSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
startOnceScanMailbox flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/scanmailbox/startonce"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ScanMailboxSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
updateScanMailbox :
|
|
Flags
|
|
-> ScanMailboxSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
updateScanMailbox flags settings receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/scanmailbox"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ScanMailboxSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
createScanMailbox :
|
|
Flags
|
|
-> ScanMailboxSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
createScanMailbox flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/scanmailbox"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ScanMailboxSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getScanMailbox :
|
|
Flags
|
|
-> (Result Http.Error ScanMailboxSettingsList -> msg)
|
|
-> Cmd msg
|
|
getScanMailbox flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/scanmailbox"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ScanMailboxSettingsList.decoder
|
|
}
|
|
|
|
|
|
|
|
--- NotifyDueItems
|
|
|
|
|
|
deleteNotifyDueItems :
|
|
Flags
|
|
-> String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteNotifyDueItems flags id receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
startOnceNotifyDueItems :
|
|
Flags
|
|
-> NotificationSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
startOnceNotifyDueItems flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems/startonce"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NotificationSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
updateNotifyDueItems :
|
|
Flags
|
|
-> NotificationSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
updateNotifyDueItems flags settings receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NotificationSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
createNotifyDueItems :
|
|
Flags
|
|
-> NotificationSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
createNotifyDueItems flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NotificationSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getNotifyDueItems :
|
|
Flags
|
|
-> (Result Http.Error NotificationSettingsList -> msg)
|
|
-> Cmd msg
|
|
getNotifyDueItems flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.NotificationSettingsList.decoder
|
|
}
|
|
|
|
|
|
submitNotifyDueItems :
|
|
Flags
|
|
-> NotificationSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
submitNotifyDueItems flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/usertask/notifydueitems"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.NotificationSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- CalEvent
|
|
|
|
|
|
checkCalEvent :
|
|
Flags
|
|
-> CalEventCheck
|
|
-> (Result Http.Error CalEventCheckResult -> msg)
|
|
-> Cmd msg
|
|
checkCalEvent flags input receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/calevent/check"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.CalEventCheck.encode input)
|
|
, expect = Http.expectJson receive Api.Model.CalEventCheckResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Delete Attachment
|
|
|
|
|
|
deleteAttachment :
|
|
Flags
|
|
-> String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteAttachment flags attachId receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/attachment/" ++ attachId
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Delete Attachments
|
|
|
|
|
|
deleteAttachments :
|
|
Flags
|
|
-> Set String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteAttachments flags attachIds receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/attachments/delete"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (Set.toList attachIds |> IdList))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Attachment Metadata
|
|
|
|
|
|
getAttachmentMeta :
|
|
Flags
|
|
-> String
|
|
-> (Result Http.Error AttachmentMeta -> msg)
|
|
-> Cmd msg
|
|
getAttachmentMeta flags id receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/attachment/" ++ id ++ "/meta"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.AttachmentMeta.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Get Sent Mails
|
|
|
|
|
|
getSentMails :
|
|
Flags
|
|
-> String
|
|
-> (Result Http.Error SentMails -> msg)
|
|
-> Cmd msg
|
|
getSentMails flags item receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/sent/item/" ++ item
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.SentMails.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Mail Send
|
|
|
|
|
|
sendMail :
|
|
Flags
|
|
-> { conn : String, item : String, mail : SimpleMail }
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
sendMail flags opts receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/send/" ++ opts.conn ++ "/" ++ opts.item
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.SimpleMail.encode opts.mail)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Mail Settings
|
|
|
|
|
|
deleteMailSettings : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteMailSettings flags name receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/smtp/" ++ name
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteImapSettings : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteImapSettings flags name receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/imap/" ++ name
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getMailSettings : Flags -> String -> (Result Http.Error EmailSettingsList -> msg) -> Cmd msg
|
|
getMailSettings flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/smtp?q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.EmailSettingsList.decoder
|
|
}
|
|
|
|
|
|
getImapSettings : Flags -> String -> (Result Http.Error ImapSettingsList -> msg) -> Cmd msg
|
|
getImapSettings flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/imap?q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ImapSettingsList.decoder
|
|
}
|
|
|
|
|
|
createMailSettings :
|
|
Flags
|
|
-> Maybe String
|
|
-> EmailSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
createMailSettings flags mname ems receive =
|
|
case mname of
|
|
Just en ->
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/smtp/" ++ en
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.EmailSettings.encode ems)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
Nothing ->
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/smtp"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.EmailSettings.encode ems)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
createImapSettings :
|
|
Flags
|
|
-> Maybe String
|
|
-> ImapSettings
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
createImapSettings flags mname ems receive =
|
|
case mname of
|
|
Just en ->
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/imap/" ++ en
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ImapSettings.encode ems)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
Nothing ->
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/email/settings/imap"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ImapSettings.encode ems)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Upload
|
|
|
|
|
|
uploadAmend :
|
|
Flags
|
|
-> String
|
|
-> List File
|
|
-> (String -> Result Http.Error BasicResult -> msg)
|
|
-> List (Cmd msg)
|
|
uploadAmend flags itemId files receive =
|
|
let
|
|
mkReq file =
|
|
let
|
|
fid =
|
|
Util.File.makeFileId file
|
|
|
|
path =
|
|
"/api/v1/sec/upload/item/" ++ itemId
|
|
in
|
|
Http2.authPostTrack
|
|
{ url = flags.config.baseUrl ++ path
|
|
, account = getAccount flags
|
|
, body =
|
|
Http.multipartBody <|
|
|
[ Http.filePart "file[]" file ]
|
|
, expect = Http.expectJson (receive fid) Api.Model.BasicResult.decoder
|
|
, tracker = fid
|
|
}
|
|
in
|
|
List.map mkReq files
|
|
|
|
|
|
upload :
|
|
Flags
|
|
-> Maybe String
|
|
-> ItemUploadMeta
|
|
-> List File
|
|
-> (String -> Result Http.Error BasicResult -> msg)
|
|
-> List (Cmd msg)
|
|
upload flags sourceId meta files receive =
|
|
let
|
|
metaStr =
|
|
JsonEncode.encode 0 (Api.Model.ItemUploadMeta.encode meta)
|
|
|
|
mkReq file =
|
|
let
|
|
fid =
|
|
Util.File.makeFileId file
|
|
|
|
path =
|
|
Maybe.map ((++) "/api/v1/open/upload/item/") sourceId
|
|
|> Maybe.withDefault "/api/v1/sec/upload/item"
|
|
in
|
|
Http2.authPostTrack
|
|
{ url = flags.config.baseUrl ++ path
|
|
, account = getAccount flags
|
|
, body =
|
|
Http.multipartBody <|
|
|
[ Http.stringPart "meta" metaStr, Http.filePart "file[]" file ]
|
|
, expect = Http.expectJson (receive fid) Api.Model.BasicResult.decoder
|
|
, tracker = fid
|
|
}
|
|
in
|
|
List.map mkReq files
|
|
|
|
|
|
uploadSingle :
|
|
Flags
|
|
-> Maybe String
|
|
-> ItemUploadMeta
|
|
-> String
|
|
-> List File
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
uploadSingle flags sourceId meta track files receive =
|
|
let
|
|
metaStr =
|
|
JsonEncode.encode 0 (Api.Model.ItemUploadMeta.encode meta)
|
|
|
|
fileParts =
|
|
List.map (\f -> Http.filePart "file[]" f) files
|
|
|
|
allParts =
|
|
Http.stringPart "meta" metaStr :: fileParts
|
|
|
|
path =
|
|
Maybe.map ((++) "/api/v1/open/upload/item/") sourceId
|
|
|> Maybe.withDefault "/api/v1/sec/upload/item"
|
|
in
|
|
Http2.authPostTrack
|
|
{ url = flags.config.baseUrl ++ path
|
|
, account = getAccount flags
|
|
, body = Http.multipartBody allParts
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
, tracker = track
|
|
}
|
|
|
|
|
|
|
|
--- Registration
|
|
|
|
|
|
register : Flags -> Registration -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
register flags reg receive =
|
|
Http.post
|
|
{ url = flags.config.baseUrl ++ "/api/v1/open/signup/register"
|
|
, body = Http.jsonBody (Api.Model.Registration.encode reg)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
newInvite : Flags -> GenInvite -> (Result Http.Error InviteResult -> msg) -> Cmd msg
|
|
newInvite flags req receive =
|
|
Http.post
|
|
{ url = flags.config.baseUrl ++ "/api/v1/open/signup/newinvite"
|
|
, body = Http.jsonBody (Api.Model.GenInvite.encode req)
|
|
, expect = Http.expectJson receive Api.Model.InviteResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Login
|
|
|
|
|
|
login : Flags -> UserPass -> (Result Http.Error AuthResult -> msg) -> Cmd msg
|
|
login flags up receive =
|
|
Http.post
|
|
{ url = flags.config.baseUrl ++ "/api/v1/open/auth/login"
|
|
, body = Http.jsonBody (Api.Model.UserPass.encode up)
|
|
, expect = Http.expectJson receive Api.Model.AuthResult.decoder
|
|
}
|
|
|
|
|
|
logout : Flags -> (Result Http.Error () -> msg) -> Cmd msg
|
|
logout flags receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/auth/logout"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectWhatever receive
|
|
}
|
|
|
|
|
|
loginSession : Flags -> (Result Http.Error AuthResult -> msg) -> Cmd msg
|
|
loginSession flags receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/auth/session"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.AuthResult.decoder
|
|
}
|
|
|
|
|
|
refreshSession : Flags -> (Result Http.Error AuthResult -> msg) -> Cmd msg
|
|
refreshSession flags receive =
|
|
case flags.account of
|
|
Just acc ->
|
|
if acc.success && acc.validMs > 30000 then
|
|
let
|
|
delay =
|
|
acc.validMs - 30000 |> toFloat
|
|
in
|
|
Http2.executeIn delay receive (refreshSessionTask flags)
|
|
|
|
else
|
|
Cmd.none
|
|
|
|
Nothing ->
|
|
Cmd.none
|
|
|
|
|
|
refreshSessionTask : Flags -> Task.Task Http.Error AuthResult
|
|
refreshSessionTask flags =
|
|
Http2.authTask
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/auth/session"
|
|
, method = "POST"
|
|
, headers = []
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, resolver = Http2.jsonResolver Api.Model.AuthResult.decoder
|
|
, timeout = Nothing
|
|
}
|
|
|
|
|
|
|
|
--- Version
|
|
|
|
|
|
versionInfo : Flags -> (Result Http.Error VersionInfo -> msg) -> Cmd msg
|
|
versionInfo flags receive =
|
|
Http.get
|
|
{ url = flags.config.baseUrl ++ "/api/info/version"
|
|
, expect = Http.expectJson receive Api.Model.VersionInfo.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Collective
|
|
|
|
|
|
startClassifier :
|
|
Flags
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
startClassifier flags receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/classifier/startonce"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getTagCloud : Flags -> (Result Http.Error TagCloud -> msg) -> Cmd msg
|
|
getTagCloud flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/tagcloud"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.TagCloud.decoder
|
|
}
|
|
|
|
|
|
getInsights : Flags -> (Result Http.Error ItemInsights -> msg) -> Cmd msg
|
|
getInsights flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/insights"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ItemInsights.decoder
|
|
}
|
|
|
|
|
|
getCollective : Flags -> (Result Http.Error Collective -> msg) -> Cmd msg
|
|
getCollective flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.Collective.decoder
|
|
}
|
|
|
|
|
|
getCollectiveSettings : Flags -> (Result Http.Error CollectiveSettings -> msg) -> Cmd msg
|
|
getCollectiveSettings flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/settings"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.CollectiveSettings.decoder
|
|
}
|
|
|
|
|
|
setCollectiveSettings : Flags -> CollectiveSettings -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setCollectiveSettings flags settings receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/settings"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.CollectiveSettings.encode settings)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Contacts
|
|
|
|
|
|
getContacts :
|
|
Flags
|
|
-> Maybe ContactType
|
|
-> Maybe String
|
|
-> (Result Http.Error ContactList -> msg)
|
|
-> Cmd msg
|
|
getContacts flags kind q receive =
|
|
let
|
|
pk =
|
|
case kind of
|
|
Just k ->
|
|
[ "kind=" ++ Data.ContactType.toString k ]
|
|
|
|
Nothing ->
|
|
[]
|
|
|
|
pq =
|
|
case q of
|
|
Just str ->
|
|
[ "q=" ++ str ]
|
|
|
|
Nothing ->
|
|
[]
|
|
|
|
params =
|
|
pk ++ pq
|
|
|
|
query =
|
|
case String.join "&" params of
|
|
"" ->
|
|
""
|
|
|
|
str ->
|
|
"?" ++ str
|
|
in
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/collective/contacts" ++ query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ContactList.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Tags
|
|
|
|
|
|
getTags : Flags -> String -> (Result Http.Error TagList -> msg) -> Cmd msg
|
|
getTags flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/tag?q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.TagList.decoder
|
|
}
|
|
|
|
|
|
postTag : Flags -> Tag -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postTag flags tag receive =
|
|
let
|
|
params =
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/tag"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Tag.encode tag)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
in
|
|
if tag.id == "" then
|
|
Http2.authPost params
|
|
|
|
else
|
|
Http2.authPut params
|
|
|
|
|
|
deleteTag : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteTag flags tag receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/tag/" ++ tag
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Equipments
|
|
|
|
|
|
getEquipments : Flags -> String -> (Result Http.Error EquipmentList -> msg) -> Cmd msg
|
|
getEquipments flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/equipment?q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.EquipmentList.decoder
|
|
}
|
|
|
|
|
|
getEquipment : Flags -> String -> (Result Http.Error Equipment -> msg) -> Cmd msg
|
|
getEquipment flags id receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/equipment/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.Equipment.decoder
|
|
}
|
|
|
|
|
|
postEquipment : Flags -> Equipment -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postEquipment flags equip receive =
|
|
let
|
|
params =
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/equipment"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Equipment.encode equip)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
in
|
|
if equip.id == "" then
|
|
Http2.authPost params
|
|
|
|
else
|
|
Http2.authPut params
|
|
|
|
|
|
deleteEquip : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteEquip flags equip receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/equipment/" ++ equip
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Organization
|
|
|
|
|
|
getOrgLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
|
getOrgLight flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ReferenceList.decoder
|
|
}
|
|
|
|
|
|
getOrgFull : String -> Flags -> (Result Http.Error Organization -> msg) -> Cmd msg
|
|
getOrgFull id flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.Organization.decoder
|
|
}
|
|
|
|
|
|
getOrganizations : Flags -> String -> (Result Http.Error OrganizationList -> msg) -> Cmd msg
|
|
getOrganizations flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization?full=true&q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.OrganizationList.decoder
|
|
}
|
|
|
|
|
|
postOrg : Flags -> Organization -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postOrg flags org receive =
|
|
let
|
|
params =
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Organization.encode org)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
in
|
|
if org.id == "" then
|
|
Http2.authPost params
|
|
|
|
else
|
|
Http2.authPut params
|
|
|
|
|
|
deleteOrg : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteOrg flags org receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization/" ++ org
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Person
|
|
|
|
|
|
getPersonsLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
|
getPersonsLight flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/person?full=false"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ReferenceList.decoder
|
|
}
|
|
|
|
|
|
getPersonFull : String -> Flags -> (Result Http.Error Person -> msg) -> Cmd msg
|
|
getPersonFull id flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/person/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.Person.decoder
|
|
}
|
|
|
|
|
|
getPersons : Flags -> String -> (Result Http.Error PersonList -> msg) -> Cmd msg
|
|
getPersons flags query receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/person?full=true&q=" ++ Url.percentEncode query
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.PersonList.decoder
|
|
}
|
|
|
|
|
|
postPerson : Flags -> Person -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postPerson flags person receive =
|
|
let
|
|
params =
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/person"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Person.encode person)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
in
|
|
if person.id == "" then
|
|
Http2.authPost params
|
|
|
|
else
|
|
Http2.authPut params
|
|
|
|
|
|
deletePerson : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deletePerson flags person receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/person/" ++ person
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Sources
|
|
|
|
|
|
getSources : Flags -> (Result Http.Error SourceList -> msg) -> Cmd msg
|
|
getSources flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/source"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.SourceList.decoder
|
|
}
|
|
|
|
|
|
postSource : Flags -> SourceAndTags -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postSource flags source receive =
|
|
let
|
|
st =
|
|
{ source = source.source
|
|
, tags = List.map .id source.tags.items
|
|
}
|
|
|
|
params =
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/source"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.SourceTagIn.encode st)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
in
|
|
if source.source.id == "" then
|
|
Http2.authPost params
|
|
|
|
else
|
|
Http2.authPut params
|
|
|
|
|
|
deleteSource : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteSource flags src receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/source/" ++ src
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Users
|
|
|
|
|
|
getUsers : Flags -> (Result Http.Error UserList -> msg) -> Cmd msg
|
|
getUsers flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/user"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.UserList.decoder
|
|
}
|
|
|
|
|
|
postNewUser : Flags -> User -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
postNewUser flags user receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/user"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.User.encode user)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
putUser : Flags -> User -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
putUser flags user receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/user"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.User.encode user)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
changePassword : Flags -> PasswordChange -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
changePassword flags cp receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/user/changePassword"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.PasswordChange.encode cp)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteUser : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteUser flags user receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/user/" ++ user
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Job Queue
|
|
|
|
|
|
setJobPrio : Flags -> String -> Priority -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setJobPrio flags jobid prio receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/queue/" ++ jobid ++ "/priority"
|
|
, account = getAccount flags
|
|
, body =
|
|
Data.Priority.toName prio
|
|
|> String.toLower
|
|
|> JobPriority
|
|
|> Api.Model.JobPriority.encode
|
|
|> Http.jsonBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
cancelJob : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
cancelJob flags jobid receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/queue/" ++ jobid ++ "/cancel"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getJobQueueState : Flags -> (Result Http.Error JobQueueState -> msg) -> Cmd msg
|
|
getJobQueueState flags receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/queue/state"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.JobQueueState.decoder
|
|
}
|
|
|
|
|
|
getJobQueueStateIn : Flags -> Float -> (Result Http.Error JobQueueState -> msg) -> Cmd msg
|
|
getJobQueueStateIn flags delay receive =
|
|
case flags.account of
|
|
Just acc ->
|
|
if acc.success && delay > 100 then
|
|
Http2.executeIn delay receive (getJobQueueStateTask flags)
|
|
|
|
else
|
|
Cmd.none
|
|
|
|
Nothing ->
|
|
Cmd.none
|
|
|
|
|
|
getJobQueueStateTask : Flags -> Task.Task Http.Error JobQueueState
|
|
getJobQueueStateTask flags =
|
|
Http2.authTask
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/queue/state"
|
|
, method = "GET"
|
|
, headers = []
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, resolver = Http2.jsonResolver Api.Model.JobQueueState.decoder
|
|
, timeout = Nothing
|
|
}
|
|
|
|
|
|
|
|
--- Item (Mulit Edit)
|
|
|
|
|
|
reprocessMultiple :
|
|
Flags
|
|
-> Set String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
reprocessMultiple flags items receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/reprocess"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (Set.toList items |> IdList))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
confirmMultiple :
|
|
Flags
|
|
-> Set String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
confirmMultiple flags ids receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/confirm"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (IdList (Set.toList ids)))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
unconfirmMultiple :
|
|
Flags
|
|
-> Set String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
unconfirmMultiple flags ids receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/unconfirm"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (IdList (Set.toList ids)))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setTagsMultiple :
|
|
Flags
|
|
-> ItemsAndRefs
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setTagsMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/tags"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRefs.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addTagsMultiple :
|
|
Flags
|
|
-> ItemsAndRefs
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
addTagsMultiple flags data receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/tags"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRefs.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
removeTagsMultiple :
|
|
Flags
|
|
-> ItemsAndRefs
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
removeTagsMultiple flags data receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/tagsremove"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRefs.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setNameMultiple :
|
|
Flags
|
|
-> ItemsAndName
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setNameMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/name"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndName.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setFolderMultiple :
|
|
Flags
|
|
-> ItemsAndRef
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setFolderMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/folder"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRef.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setDirectionMultiple :
|
|
Flags
|
|
-> ItemsAndDirection
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setDirectionMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/direction"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndDirection.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setDateMultiple :
|
|
Flags
|
|
-> ItemsAndDate
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setDateMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/date"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndDate.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setDueDateMultiple :
|
|
Flags
|
|
-> ItemsAndDate
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setDueDateMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/duedate"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndDate.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setCorrOrgMultiple :
|
|
Flags
|
|
-> ItemsAndRef
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setCorrOrgMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/corrOrg"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRef.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setCorrPersonMultiple :
|
|
Flags
|
|
-> ItemsAndRef
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setCorrPersonMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/corrPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRef.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setConcPersonMultiple :
|
|
Flags
|
|
-> ItemsAndRef
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setConcPersonMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/concPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRef.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setConcEquipmentMultiple :
|
|
Flags
|
|
-> ItemsAndRef
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setConcEquipmentMultiple flags data receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/concEquipment"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemsAndRef.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteAllItems :
|
|
Flags
|
|
-> Set String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
deleteAllItems flags ids receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/items/deleteAll"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (IdList (Set.toList ids)))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Item
|
|
|
|
|
|
reprocessItem :
|
|
Flags
|
|
-> String
|
|
-> List String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
reprocessItem flags itemId attachIds receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ itemId ++ "/reprocess"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.IdList.encode (IdList attachIds))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
attachmentPreviewURL : String -> String
|
|
attachmentPreviewURL id =
|
|
"/api/v1/sec/attachment/" ++ id ++ "/preview?withFallback=true"
|
|
|
|
|
|
itemBasePreviewURL : String -> String
|
|
itemBasePreviewURL itemId =
|
|
"/api/v1/sec/item/" ++ itemId ++ "/preview?withFallback=true"
|
|
|
|
|
|
fileURL : String -> String
|
|
fileURL attachId =
|
|
"/api/v1/sec/attachment/" ++ attachId
|
|
|
|
|
|
setAttachmentName :
|
|
Flags
|
|
-> String
|
|
-> Maybe String
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
setAttachmentName flags attachId newName receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/attachment/" ++ attachId ++ "/name"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalText.encode (OptionalText newName))
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
moveAttachmentBefore :
|
|
Flags
|
|
-> String
|
|
-> MoveAttachment
|
|
-> (Result Http.Error BasicResult -> msg)
|
|
-> Cmd msg
|
|
moveAttachmentBefore flags itemId data receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ itemId ++ "/attachment/movebefore"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.MoveAttachment.encode data)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
itemIndexSearch :
|
|
Flags
|
|
-> ItemQuery
|
|
-> (Result Http.Error ItemLightList -> msg)
|
|
-> Cmd msg
|
|
itemIndexSearch flags query receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/searchIndex"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemQuery.encode query)
|
|
, expect = Http.expectJson receive Api.Model.ItemLightList.decoder
|
|
}
|
|
|
|
|
|
itemSearch : Flags -> ItemQuery -> (Result Http.Error ItemLightList -> msg) -> Cmd msg
|
|
itemSearch flags search receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/search"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemQuery.encode search)
|
|
, expect = Http.expectJson receive Api.Model.ItemLightList.decoder
|
|
}
|
|
|
|
|
|
itemSearchStats : Flags -> ItemQuery -> (Result Http.Error SearchStats -> msg) -> Cmd msg
|
|
itemSearchStats flags search receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/searchStats"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.ItemQuery.encode search)
|
|
, expect = Http.expectJson receive Api.Model.SearchStats.decoder
|
|
}
|
|
|
|
|
|
itemDetail : Flags -> String -> (Result Http.Error ItemDetail -> msg) -> Cmd msg
|
|
itemDetail flags id receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ id
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ItemDetail.decoder
|
|
}
|
|
|
|
|
|
setTags : Flags -> String -> StringList -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setTags flags item tags receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/tags"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.StringList.encode tags)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
toggleTags : Flags -> String -> StringList -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
toggleTags flags item tags receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/tagtoggle"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.StringList.encode tags)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addTag : Flags -> String -> Tag -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addTag flags item tag receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/tags"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Tag.encode tag)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setDirection : Flags -> String -> DirectionValue -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setDirection flags item dir receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/direction"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.DirectionValue.encode dir)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setFolder : Flags -> String -> OptionalId -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setFolder flags item id receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/folder"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalId.encode id)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setCorrOrg : Flags -> String -> OptionalId -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setCorrOrg flags item id receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/corrOrg"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalId.encode id)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addCorrOrg : Flags -> String -> Organization -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addCorrOrg flags item org receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/corrOrg"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Organization.encode org)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setCorrPerson : Flags -> String -> OptionalId -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setCorrPerson flags item id receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/corrPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalId.encode id)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addCorrPerson : Flags -> String -> Person -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addCorrPerson flags item person receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/corrPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Person.encode person)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setConcPerson : Flags -> String -> OptionalId -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setConcPerson flags item id receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/concPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalId.encode id)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addConcPerson : Flags -> String -> Person -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addConcPerson flags item person receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/concPerson"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Person.encode person)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setConcEquip : Flags -> String -> OptionalId -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setConcEquip flags item id receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/concEquipment"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalId.encode id)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
addConcEquip : Flags -> String -> Equipment -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
addConcEquip flags item equip receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/concEquipment"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.Equipment.encode equip)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setItemName : Flags -> String -> OptionalText -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setItemName flags item text receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/name"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalText.encode text)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setItemNotes : Flags -> String -> OptionalText -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setItemNotes flags item text receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/notes"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalText.encode text)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setItemDate : Flags -> String -> OptionalDate -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setItemDate flags item date receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/date"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalDate.encode date)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setItemDueDate : Flags -> String -> OptionalDate -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setItemDueDate flags item date receive =
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/duedate"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody (Api.Model.OptionalDate.encode date)
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setConfirmed : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setConfirmed flags item receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/confirm"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
setUnconfirmed : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
setUnconfirmed flags item receive =
|
|
Http2.authPost
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/unconfirm"
|
|
, account = getAccount flags
|
|
, body = Http.emptyBody
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
deleteItem : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
deleteItem flags item receive =
|
|
Http2.authDelete
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
getItemProposals : Flags -> String -> (Result Http.Error ItemProposals -> msg) -> Cmd msg
|
|
getItemProposals flags item receive =
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/proposals"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive Api.Model.ItemProposals.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Client Settings
|
|
|
|
|
|
getClientSettings : Flags -> (Result Http.Error UiSettings -> msg) -> Cmd msg
|
|
getClientSettings flags receive =
|
|
let
|
|
defaults =
|
|
Data.UiSettings.defaults
|
|
|
|
decoder =
|
|
JsonDecode.map (\s -> Data.UiSettings.merge s defaults)
|
|
Data.UiSettings.storedUiSettingsDecoder
|
|
in
|
|
Http2.authGet
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/clientSettings/webClient"
|
|
, account = getAccount flags
|
|
, expect = Http.expectJson receive decoder
|
|
}
|
|
|
|
|
|
saveClientSettings : Flags -> UiSettings -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
|
saveClientSettings flags settings receive =
|
|
let
|
|
storedSettings =
|
|
Data.UiSettings.toStoredUiSettings settings
|
|
|
|
encode =
|
|
Data.UiSettings.storedUiSettingsEncode storedSettings
|
|
in
|
|
Http2.authPut
|
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/clientSettings/webClient"
|
|
, account = getAccount flags
|
|
, body = Http.jsonBody encode
|
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
|
}
|
|
|
|
|
|
|
|
--- Helper
|
|
|
|
|
|
getAccount : Flags -> AuthResult
|
|
getAccount flags =
|
|
Maybe.withDefault Api.Model.AuthResult.empty flags.account
|