136 lines
2.9 KiB
Go
136 lines
2.9 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
abstractions "github.com/microsoft/kiota-abstractions-go"
|
|
)
|
|
|
|
const (
|
|
maxNonDeltaPageSize = int32(999)
|
|
maxDeltaPageSize = int32(500)
|
|
)
|
|
|
|
// selectable values, case insensitive
|
|
// not comprehensive - just adding ones that might
|
|
// get easily misspelled.
|
|
// eg: we don't need a const for "id"
|
|
const (
|
|
bccRecipients = "bccRecipients"
|
|
ccRecipients = "ccRecipients"
|
|
createdDateTime = "createdDateTime"
|
|
displayName = "displayName"
|
|
emailAddresses = "emailAddresses"
|
|
givenName = "givenName"
|
|
isCancelled = "isCancelled"
|
|
isDraft = "isDraft"
|
|
lastModifiedDateTime = "lastModifiedDateTime"
|
|
mobilePhone = "mobilePhone"
|
|
parentFolderID = "parentFolderId"
|
|
receivedDateTime = "receivedDateTime"
|
|
recurrence = "recurrence"
|
|
sentDateTime = "sentDateTime"
|
|
surname = "surname"
|
|
toRecipients = "toRecipients"
|
|
userPrincipalName = "userPrincipalName"
|
|
)
|
|
|
|
// header keys
|
|
const (
|
|
headerKeyConsistencyLevel = "ConsistencyLevel"
|
|
headerKeyPrefer = "Prefer"
|
|
)
|
|
|
|
// header values
|
|
const (
|
|
idTypeImmutable = `IdType="ImmutableId"`
|
|
eventual = "eventual"
|
|
)
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// not exported
|
|
// ---------------------------------------------------------------------------
|
|
|
|
func preferPageSize(size int32) string {
|
|
return fmt.Sprintf("odata.maxpagesize=%d", size)
|
|
}
|
|
|
|
func preferImmutableIDs(t bool) string {
|
|
if !t {
|
|
return ""
|
|
}
|
|
|
|
return idTypeImmutable
|
|
}
|
|
|
|
func newPreferHeaders(values ...string) *abstractions.RequestHeaders {
|
|
vs := []string{}
|
|
|
|
for _, v := range values {
|
|
if len(v) > 0 {
|
|
vs = append(vs, v)
|
|
}
|
|
}
|
|
|
|
headers := abstractions.NewRequestHeaders()
|
|
headers.Add(headerKeyPrefer, strings.Join(vs, ","))
|
|
|
|
return headers
|
|
}
|
|
|
|
func newEventualConsistencyHeaders() *abstractions.RequestHeaders {
|
|
headers := abstractions.NewRequestHeaders()
|
|
headers.Add(headerKeyConsistencyLevel, eventual)
|
|
|
|
return headers
|
|
}
|
|
|
|
func SelectProps(ss ...string) []string {
|
|
return idAnd(ss...)
|
|
}
|
|
|
|
// makes a slice with []string{"id", s...}
|
|
func idAnd(ss ...string) []string {
|
|
id := []string{"id"}
|
|
|
|
if len(ss) == 0 {
|
|
return id
|
|
}
|
|
|
|
return append(id, ss...)
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// exported
|
|
// ---------------------------------------------------------------------------
|
|
|
|
func DefaultDriveItemProps() []string {
|
|
return idAnd(
|
|
// "content.downloadUrl",
|
|
// "createdBy",
|
|
// "createdDateTime",
|
|
// "file",
|
|
// "folder",
|
|
// "lastModifiedDateTime",
|
|
// "name",
|
|
// "package",
|
|
// "parentReference",
|
|
// "root",
|
|
// "sharepointIds",
|
|
// "size",
|
|
// "deleted",
|
|
// "malware",
|
|
// "shared")
|
|
)
|
|
}
|
|
|
|
// URL cache only needs to fetch a small subset of item properties
|
|
func URLCacheDriveItemProps() []string {
|
|
return idAnd(
|
|
"content.downloadUrl",
|
|
"deleted",
|
|
"file",
|
|
"folder")
|
|
}
|