Abhishek Pandey d8d4947bbf only have Id
2023-11-19 17:44:03 -08:00

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")
}