Documentation
¶
Overview ¶
Package wrapping Exchange Web Service (EWS)
Index ¶
- Constants
- func CreateCalendarItem(c Client, ci ...CalendarItem) (string, error)
- func CreateMessageItem(c Client, m ...Message) error
- func DeleteCalendarItem(c Client, id string) (string, error)
- func GetCalendarItemChangeKey(c Client, id string) (string, error)
- func GetCalendarItemsChangeKeys(ctx context.Context, c Client, ids []string) (map[string]string, []string, error)
- func NewError(resp *http.Response) error
- func UpdateCalendarItemTime(c Client, id string, start, end time.Time) (string, error)
- type AdditionalProperties
- type ArrayOfAttendeeConflictData
- type Attachments
- type Attendee
- type AttendeeType
- type Attendees
- type BasePoint
- type BaseShape
- type Body
- type BusinessPhoneNumbers
- type BusyType
- type CalendarEvent
- type CalendarEventArray
- type CalendarEventDetails
- type CalendarItem
- type CalendarItemResponse
- type Client
- type Config
- type CreateItem
- type CreateItemResponse
- type CreateItemResult
- type DeleteItem
- type DeleteItemId
- type DeleteItemResponse
- type DeleteItemResponseMessage
- type DeleteItemResult
- type DeleteResponseMessages
- type Departments
- type DistinguishedFolderId
- type Email
- type EmailAddress
- type Fault
- type FieldURI
- type FileAttachment
- type FindPeopleRequest
- type FindPeopleResponse
- type FreeBusyResponse
- type FreeBusyResponseArray
- type FreeBusyView
- type FreeBusyViewOptions
- type GetItem
- type GetItemIds
- type GetItemResponse
- type GetItemResponseMessage
- type GetItemResponseMessages
- type GetPersonaRequest
- type GetPersonaResponse
- type GetRoomListsRequest
- type GetRoomListsResponse
- type GetUserAvailabilityRequest
- type GetUserAvailabilityResponse
- type GetUserPhotoRequest
- type GetUserPhotoResponse
- type GroupAttendeeConflictData
- type HTTPError
- type IndexedPageItemView
- type ItemChange
- type ItemChanges
- type ItemId
- type ItemIds
- type ItemIdsList
- type ItemShape
- type Items
- type Mailbox
- type MailboxData
- type MailboxDataArray
- type MeetingTimeZone
- type Message
- type MessageXml
- type MobilePhones
- type OfficeLocations
- type OneMailbox
- type ParentFolderId
- type People
- type Persona
- type PersonaId
- type PersonaShape
- type PhoneNumberAttributedValue
- type Response
- type ResponseClass
- type ResponseItemId
- type ResponseItems
- type ResponseMessage
- type ResponseMessages
- type RoomLists
- type SavedItemFolderId
- type SetItemField
- type SoapError
- type StringAttributedValue
- type Suggestion
- type SuggestionArray
- type SuggestionDayResult
- type SuggestionDayResultArray
- type SuggestionsResponse
- type Time
- type TimeWindow
- type TimeZone
- type TimeZoneDefinition
- type TimeZoneTime
- type UpdateCalendarItemInput
- type UpdateItem
- type UpdateItemResponse
- type UpdateItemResponseMessage
- type UpdateItemResult
- type UpdateResponseMessages
- type Updates
- type Value
- type WorkingHours
- type WorkingPeriod
- type WorkingPeriodArray
- type XMailbox
Constants ¶
const ( RequestedViewNone = "None" RequestedViewMergedOnly = "MergedOnly" RequestedViewFreeBusy = "FreeBusy" RequestedViewFreeBusyMerged = "FreeBusyMerged" RequestedViewDetailed = "Detailed" RequestedViewDetailedMerged = "DetailedMerged" )
const ( BusyTypeFree = "Free" BusyTypeTentative = "Tentative" BusyTypeBusy = "Busy" BusyTypeOOF = "OOF" BusyTypeNoData = "NoData" )
const MaxCreateItemsPerRequest = 50
MaxCreateItemsPerRequest — лимит числа элементов в одном EWS CreateItem. Exchange документирует потолок 50; больше — ErrorTooManyObjectsOpened.
const MaxDeleteItemsPerRequest = 50
MaxDeleteItemsPerRequest — лимит числа элементов в одном EWS DeleteItem. Exchange документирует потолок 50 (общий лимит на batch-операцию).
const MaxGetItemsPerRequest = 50
MaxGetItemsPerRequest — лимит числа элементов в одном EWS GetItem. Exchange документирует потолок 50 (общий лимит на batch-операцию).
const MaxUpdateItemsPerRequest = 50
MaxUpdateItemsPerRequest — лимит числа элементов в одном EWS UpdateItem. Exchange документирует потолок 50 (общий лимит на batch-операцию).
Variables ¶
This section is empty.
Functions ¶
func CreateCalendarItem ¶
func CreateCalendarItem(c Client, ci ...CalendarItem) (string, error)
CreateCalendarItem https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/createitem-operation-calendar-item
func CreateMessageItem ¶
CreateMessageItem https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/createitem-operation-email-message
func DeleteCalendarItem ¶ added in v0.0.15
DeleteItem operation https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/deleteitem-operation
func GetCalendarItemChangeKey ¶ added in v0.0.18
GetCalendarItemChangeKey resolves the current ChangeKey of a calendar item by its ID via the GetItem operation. Exchange requires a valid ChangeKey on UpdateItem requests; use this helper to obtain one when only the item ID is known.
Реализован как тонкая обёртка над batch-версией GetCalendarItemsChangeKeys (см. spec §2.5).
https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/getitem-operation
func GetCalendarItemsChangeKeys ¶ added in v0.0.19
func GetCalendarItemsChangeKeys(ctx context.Context, c Client, ids []string) (map[string]string, []string, error)
GetCalendarItemsChangeKeys резолвит ChangeKey для набора item id одним GetItem-запросом.
Возвращает:
- map[itemID]changeKey для успешно найденных элементов;
- слайс id, которые не удалось найти (ResponseClass=Error или пустой ChangeKey в ответе);
- top-level error при ошибке маршалинга, HTTP ≠ 200, пустом конверте, превышении лимита или отмене контекста.
В случае top-level error остальные возвращаемые значения — nil/пустые.
https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/getitem-operation
func UpdateCalendarItemTime ¶ added in v0.0.17
UpdateCalendarItemTime updates only the start and end time of a calendar item https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/updateitem-operation
Types ¶
type AdditionalProperties ¶
type AdditionalProperties struct {
FieldURI []FieldURI `xml:"t:FieldURI,omitempty"`
}
type ArrayOfAttendeeConflictData ¶
type ArrayOfAttendeeConflictData struct {
UnknownAttendeeConflictData string `xml:"UnknownAttendeeConflictData"`
IndividualAttendeeConflictData string `xml:"IndividualAttendeeConflictData"`
TooBigGroupAttendeeConflictData string `xml:"TooBigGroupAttendeeConflictData"`
GroupAttendeeConflictData GroupAttendeeConflictData `xml:"GroupAttendeeConflictData"`
}
type Attachments ¶ added in v0.0.16
type Attachments struct {
XMLName xml.Name `xml:"t:Attachments"`
Attachments []FileAttachment `xml:"t:FileAttachment"`
}
type AttendeeType ¶
type AttendeeType string
const ( AttendeeTypeOrganizer AttendeeType = "Organizer" AttendeeTypeRequired AttendeeType = "Required" AttendeeTypeOptional AttendeeType = "Optional" AttendeeTypeRoom AttendeeType = "Room" AttendeeTypeResource AttendeeType = "Resource" )
type BusinessPhoneNumbers ¶
type BusinessPhoneNumbers struct {
PhoneNumberAttributedValue PhoneNumberAttributedValue `xml:"PhoneNumberAttributedValue"`
}
type CalendarEvent ¶
type CalendarEvent struct {
StartTime Time `xml:"StartTime"`
EndTime Time `xml:"EndTime"`
BusyType BusyType `xml:"BusyType"`
CalendarEventDetails CalendarEventDetails `xml:"CalendarEventDetails"`
}
type CalendarEventArray ¶
type CalendarEventArray struct {
CalendarEvent []CalendarEvent `xml:"CalendarEvent"`
}
type CalendarEventDetails ¶
type CalendarEventDetails struct {
ID string `xml:"ID"`
Subject string `xml:"Subject"`
Location string `xml:"Location"`
IsMeeting bool `xml:"IsMeeting"`
IsRecurring bool `xml:"IsRecurring"`
IsException bool `xml:"IsException"`
IsReminderSet bool `xml:"IsReminderSet"`
IsPrivate bool `xml:"IsPrivate"`
}
type CalendarItem ¶
type CalendarItem struct {
Subject string `xml:"t:Subject"`
Body Body `xml:"t:Body"`
ReminderIsSet bool `xml:"t:ReminderIsSet"`
ReminderMinutesBeforeStart int `xml:"t:ReminderMinutesBeforeStart"`
UID string `xml:"t:UID,omitempty"`
MeetingTimeZone *MeetingTimeZone `xml:"t:MeetingTimeZone,omitempty"`
StartTimeZone *TimeZoneDefinition `xml:"t:StartTimeZone,omitempty"`
EndTimeZone *TimeZoneDefinition `xml:"t:EndTimeZone,omitempty"`
Start time.Time `xml:"t:Start"`
End time.Time `xml:"t:End"`
IsAllDayEvent bool `xml:"t:IsAllDayEvent"`
LegacyFreeBusyStatus string `xml:"t:LegacyFreeBusyStatus"`
Location string `xml:"t:Location"`
RequiredAttendees []Attendees `xml:"t:RequiredAttendees"`
OptionalAttendees []Attendees `xml:"t:OptionalAttendees"`
Resources []Attendees `xml:"t:Resources"`
Attachments *Attachments `xml:"t:Attachments,omitempty"`
}
type CalendarItemResponse ¶ added in v0.0.13
type CalendarItemResponse struct {
ItemId ResponseItemId `xml:"ItemId"`
}
type Client ¶
type CreateItem ¶
type CreateItem struct {
XMLName struct{} `xml:"m:CreateItem"`
MessageDisposition string `xml:"MessageDisposition,attr"`
SendMeetingInvitations string `xml:"SendMeetingInvitations,attr"`
SavedItemFolderId SavedItemFolderId `xml:"m:SavedItemFolderId"`
Items Items `xml:"m:Items"`
}
type CreateItemResponse ¶
type CreateItemResponse struct {
ResponseMessages ResponseMessages `xml:"ResponseMessages"`
}
type CreateItemResult ¶ added in v0.0.19
CreateItemResult — результат одного элемента batch-Create.
Index соответствует позиции входного CalendarItem в слайсе, переданном в CreateCalendarItems. При успешном создании ItemID/ChangeKey заполнены, Error == nil. При неудаче ItemID/ChangeKey пустые, Error описывает причину.
func CreateCalendarItems ¶ added in v0.0.19
func CreateCalendarItems(ctx context.Context, c Client, items []CalendarItem) ([]CreateItemResult, error)
CreateCalendarItems создаёт несколько событий в одном SOAP-запросе.
Возвращает по одному CreateItemResult на каждый входной CalendarItem в том же порядке. Частичные ошибки (один ResponseClass="Error" в батче) не заваливают весь вызов: такие элементы возвращаются с Error != nil, остальные — со штатными ItemID/ChangeKey.
Второе возвращаемое значение (top-level error) непусто только при:
- ошибке маршалинга запроса или анмаршалинга ответа;
- HTTP ≠ 200 (проброс *ews.HTTPError / *ews.SoapError — almanac делает ретраи);
- превышении лимита MaxCreateItemsPerRequest;
- пустом конверте ответа (ни одного CreateItemResponseMessage);
- отмене контекста.
В этих случаях []CreateItemResult — nil.
type DeleteItem ¶ added in v0.0.15
type DeleteItemId ¶ added in v0.0.15
type DeleteItemId struct {
Id string `xml:"Id,attr"`
}
type DeleteItemResponse ¶ added in v0.0.15
type DeleteItemResponse struct {
ResponseMessages DeleteResponseMessages `xml:"ResponseMessages"`
}
type DeleteItemResponseMessage ¶ added in v0.0.15
type DeleteItemResponseMessage struct {
DeleteResponseClass ResponseClass `xml:"ResponseClass,attr"`
MessageText string `xml:"MessageText"`
ResponseCode string `xml:"ResponseCode"`
}
type DeleteItemResult ¶ added in v0.0.19
DeleteItemResult — результат одного элемента batch-Delete.
ItemID — эхо входного id (Exchange не возвращает новых id для Delete). При неудаче Error описывает причину (например, ErrorItemNotFound для уже удалённого события).
func DeleteCalendarItems ¶ added in v0.0.19
DeleteCalendarItems удаляет несколько событий в одном SOAP-запросе.
Возвращает по одному DeleteItemResult на каждый входной id в том же порядке. Частичные ошибки (один ResponseClass="Error" в батче, например ErrorItemNotFound для уже удалённого) не заваливают весь вызов — такие элементы возвращаются с Error != nil, остальные с пустым Error.
Top-level error непусто при ошибке маршалинга, HTTP ≠ 200, пустом конверте, превышении лимита или отмене контекста — в этих случаях []DeleteItemResult — nil. См. CreateCalendarItems для подробностей.
type DeleteResponseMessages ¶ added in v0.0.15
type DeleteResponseMessages struct {
DeleteItemResponseMessage DeleteItemResponseMessage `xml:"DeleteItemResponseMessage"`
}
type Departments ¶
type Departments struct {
StringAttributedValue StringAttributedValue `xml:"StringAttributedValue"`
}
type DistinguishedFolderId ¶
type DistinguishedFolderId struct {
// List of values:
// https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distinguishedfolderid
Id string `xml:"Id,attr"`
}
type EmailAddress ¶
type FieldURI ¶
type FieldURI struct {
// List of possible values:
// https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/fielduri
FieldURI string `xml:"FieldURI,attr,omitempty"`
}
type FileAttachment ¶ added in v0.0.16
type FindPeopleRequest ¶
type FindPeopleRequest struct {
XMLName struct{} `xml:"m:FindPeople"`
PersonaShape *PersonaShape `xml:"m:PersonaShape,omitempty"`
IndexedPageItemView IndexedPageItemView `xml:"m:IndexedPageItemView"`
ParentFolderId ParentFolderId `xml:"m:ParentFolderId"`
QueryString string `xml:"m:QueryString,omitempty"`
}
type FindPeopleResponse ¶
type FindPeopleResponse struct {
Response
People People `xml:"People"`
TotalNumberOfPeopleInView int `xml:"TotalNumberOfPeopleInView"`
FirstMatchingRowIndex int `xml:"FirstMatchingRowIndex"`
FirstLoadedRowIndex int `xml:"FirstLoadedRowIndex"`
}
func FindPeople ¶
func FindPeople(c Client, r *FindPeopleRequest) (*FindPeopleResponse, error)
GetUserAvailability https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/findpeople-operation
type FreeBusyResponse ¶
type FreeBusyResponse struct {
ResponseMessage ResponseMessage `xml:"ResponseMessage"`
FreeBusyView FreeBusyView `xml:"FreeBusyView"`
}
type FreeBusyResponseArray ¶
type FreeBusyResponseArray struct {
FreeBusyResponse []FreeBusyResponse `xml:"FreeBusyResponse"`
}
type FreeBusyView ¶
type FreeBusyView struct {
FreeBusyViewType string `xml:"FreeBusyViewType"`
MergedFreeBusy string `xml:"MergedFreeBusy"`
CalendarEventArray CalendarEventArray `xml:"CalendarEventArray"`
WorkingHours WorkingHours `xml:"WorkingHours"`
}
type FreeBusyViewOptions ¶
type FreeBusyViewOptions struct {
TimeWindow TimeWindow `xml:"t:TimeWindow"`
MergedFreeBusyIntervalInMinutes int `xml:"t:MergedFreeBusyIntervalInMinutes,omitempty"`
RequestedView string `xml:"t:RequestedView"`
}
type GetItem ¶ added in v0.0.18
type GetItem struct {
XMLName struct{} `xml:"m:GetItem"`
ItemShape ItemShape `xml:"m:ItemShape"`
ItemIds GetItemIds `xml:"m:ItemIds"`
}
GetItem represents a SOAP request for the GetItem operation. https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/getitem-operation
Зарезервирован для обратной совместимости с тестами и потребителями, рассчитывающими на синглтон-запрос. Публичная функция GetCalendarItemChangeKey теперь делегирует в batch-версию GetCalendarItemsChangeKeys (см. get_item_batch.go).
type GetItemIds ¶ added in v0.0.18
type GetItemIds struct {
ItemId ItemId `xml:"t:ItemId"`
}
GetItemIds wraps the list of ItemId elements for a GetItem request.
type GetItemResponse ¶ added in v0.0.18
type GetItemResponse struct {
ResponseMessages GetItemResponseMessages `xml:"ResponseMessages"`
}
GetItemResponse is the top-level body of a GetItem SOAP response.
type GetItemResponseMessage ¶ added in v0.0.18
type GetItemResponseMessage struct {
ResponseClass ResponseClass `xml:"ResponseClass,attr"`
MessageText string `xml:"MessageText"`
ResponseCode string `xml:"ResponseCode"`
Items ResponseItems `xml:"Items"`
}
GetItemResponseMessage carries the result for a single requested item.
type GetItemResponseMessages ¶ added in v0.0.18
type GetItemResponseMessages struct {
GetItemResponseMessage GetItemResponseMessage `xml:"GetItemResponseMessage"`
}
GetItemResponseMessages wraps the per-item response messages.
type GetPersonaRequest ¶
type GetPersonaRequest struct {
XMLName struct{} `xml:"m:GetPersona"`
PersonaId PersonaId `xml:"m:PersonaId"`
}
type GetPersonaResponse ¶
func GetPersona ¶
func GetPersona(c Client, r *GetPersonaRequest) (*GetPersonaResponse, error)
type GetRoomListsRequest ¶
type GetRoomListsRequest struct {
XMLName struct{} `xml:"m:GetRoomLists"`
}
type GetRoomListsResponse ¶
func GetRoomLists ¶
func GetRoomLists(c Client) (*GetRoomListsResponse, error)
type GetUserAvailabilityRequest ¶
type GetUserAvailabilityRequest struct {
XMLName struct{} `xml:"m:GetUserAvailabilityRequest"`
TimeZone TimeZone `xml:"t:TimeZone"`
MailboxDataArray MailboxDataArray `xml:"m:MailboxDataArray"`
FreeBusyViewOptions FreeBusyViewOptions `xml:"t:FreeBusyViewOptions"`
}
type GetUserAvailabilityResponse ¶
type GetUserAvailabilityResponse struct {
FreeBusyResponseArray FreeBusyResponseArray `xml:"FreeBusyResponseArray"`
SuggestionsResponse SuggestionsResponse `xml:"SuggestionsResponse"`
}
func GetUserAvailability ¶
func GetUserAvailability(c Client, r *GetUserAvailabilityRequest) (*GetUserAvailabilityResponse, error)
GetUserAvailability https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getuseravailability-operation
type GetUserPhotoRequest ¶
type GetUserPhotoResponse ¶
type GetUserPhotoResponse struct {
Response
HasChanged bool `xml:"HasChanged"`
PictureData string `xml:"PictureData"`
}
func GetUserPhoto ¶
func GetUserPhoto(c Client, r *GetUserPhotoRequest) (*GetUserPhotoResponse, error)
GetUserPhoto https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getuserphoto-operation
type IndexedPageItemView ¶
type ItemChange ¶ added in v0.0.17
type ItemChanges ¶ added in v0.0.19
type ItemChanges struct {
XMLName struct{} `xml:"m:ItemChanges"`
Items []ItemChange `xml:"t:ItemChange"`
}
ItemChanges — обёртка вокруг списка ItemChange.
Когда поле parent'а имеет тег xml:"m:ItemChanges", а сам элемент слайса ItemChange несёт собственный XMLName с t:ItemChange, Go-кодер игнорирует тег слайса и рендерит каждый <t:ItemChange> напрямую под <m:UpdateItem>, пропуская обязательный элемент <m:ItemChanges>. Exchange в таком случае отвергает запрос с HTTP 500 (ErrorInvalidArgument, "The request is invalid."). Явная обёртка с собственным XMLName заставляет Go выдать корректную структуру <m:ItemChanges><t:ItemChange>...</t:ItemChange></m:ItemChanges>.
type ItemIds ¶ added in v0.0.15
type ItemIds struct {
ItemId DeleteItemId `xml:"t:ItemId"`
}
type ItemIdsList ¶ added in v0.0.19
type ItemIdsList struct {
XMLName struct{} `xml:"m:ItemIds"`
ItemId []ItemId `xml:"t:ItemId"`
}
ItemIdsList — plural-версия ItemIds для batch-операций (Delete, Get).
Существующий ItemIds (singular) остаётся для DeleteCalendarItem(c, id) без изменений; см. spec §2.4.
type ItemShape ¶ added in v0.0.18
type ItemShape struct {
BaseShape BaseShape `xml:"t:BaseShape"`
}
ItemShape describes the set of properties to return for items in GetItem/FindItem responses.
type Items ¶
type Items struct {
Message []Message `xml:"t:Message"`
CalendarItem []CalendarItem `xml:"t:CalendarItem"`
}
type MailboxData ¶
type MailboxData struct {
Email Email `xml:"t:Email"`
AttendeeType AttendeeType `xml:"t:AttendeeType"`
ExcludeConflicts bool `xml:"t:ExcludeConflicts"`
}
type MailboxDataArray ¶
type MailboxDataArray struct {
MailboxData []MailboxData `xml:"t:MailboxData"`
}
type MeetingTimeZone ¶ added in v0.0.19
type MeetingTimeZone struct {
Name string `xml:"Name,attr,omitempty"`
}
MeetingTimeZone задаёт часовой пояс, в котором интерпретируются Start/End календарного события (Exchange 2007 SP1+).
Без этого элемента (и без пары StartTimeZone/EndTimeZone) EWS «прилипает» к полуночи в часовом поясе сервисного аккаунта (часто UTC). Для all-day событий это ломает отображение в Outlook: пользователь в MSK видит «03:00» вместо честного полного дня.
Поле Name принимает Microsoft timezone names (например "Russian Standard Time"); в этом случае Bias/StandardTime/DaylightTime можно не задавать — Exchange резолвит их по имени.
Deprecated с Exchange 2010 в пользу StartTimeZone/EndTimeZone, но продолжает работать на всех актуальных версиях Exchange.
type Message ¶
type Message struct {
ItemClass string `xml:"t:ItemClass"`
Subject string `xml:"t:Subject"`
Body Body `xml:"t:Body"`
Sender OneMailbox `xml:"t:Sender"`
ToRecipients XMailbox `xml:"t:ToRecipients"`
}
type MessageXml ¶
type MobilePhones ¶
type MobilePhones struct {
PhoneNumberAttributedValue PhoneNumberAttributedValue `xml:"PhoneNumberAttributedValue"`
}
type OfficeLocations ¶
type OfficeLocations struct {
StringAttributedValue StringAttributedValue `xml:"StringAttributedValue"`
}
type OneMailbox ¶
type OneMailbox struct {
Mailbox Mailbox `xml:"t:Mailbox"`
}
type ParentFolderId ¶
type ParentFolderId struct {
DistinguishedFolderId DistinguishedFolderId `xml:"t:DistinguishedFolderId"`
}
type Persona ¶
type Persona struct {
PersonaId PersonaId `xml:"PersonaId"`
DisplayName string `xml:"DisplayName"`
Title string `xml:"Title"`
Department string `xml:"Department"`
Departments Departments `xml:"Departments"`
EmailAddress EmailAddress `xml:"EmailAddress"`
RelevanceScore int `xml:"RelevanceScore"`
BusinessPhoneNumbers BusinessPhoneNumbers `xml:"BusinessPhoneNumbers"`
MobilePhones MobilePhones `xml:"MobilePhones"`
OfficeLocations OfficeLocations `xml:"OfficeLocations"`
}
type PersonaShape ¶
type PersonaShape struct {
BaseShape BaseShape `xml:"t:BaseShape,omitempty"`
AdditionalProperties AdditionalProperties `xml:"t:AdditionalProperties,omitempty"`
}
type PhoneNumberAttributedValue ¶
type PhoneNumberAttributedValue struct {
Value Value `json:"Value"`
}
type Response ¶
type Response struct {
ResponseClass ResponseClass `xml:"ResponseClass,attr"`
MessageText string `xml:"MessageText"`
ResponseCode string `xml:"ResponseCode"`
MessageXml MessageXml `xml:"MessageXml"`
Items ResponseItems `xml:"Items"`
}
type ResponseClass ¶
type ResponseClass string
const ( ResponseClassSuccess ResponseClass = "Success" ResponseClassWarning ResponseClass = "Warning" ResponseClassError ResponseClass = "Error" )
type ResponseItemId ¶ added in v0.0.13
type ResponseItems ¶ added in v0.0.13
type ResponseItems struct {
CalendarItem CalendarItemResponse `xml:"CalendarItem"`
}
type ResponseMessage ¶
type ResponseMessages ¶
type ResponseMessages struct {
CreateItemResponseMessage Response `xml:"CreateItemResponseMessage"`
}
type RoomLists ¶
type RoomLists struct {
Address []EmailAddress `xml:"Address"`
}
type SavedItemFolderId ¶
type SavedItemFolderId struct {
DistinguishedFolderId DistinguishedFolderId `xml:"t:DistinguishedFolderId"`
}
type SetItemField ¶ added in v0.0.17
type SetItemField struct {
FieldURI FieldURI `xml:"t:FieldURI"`
CalendarItem updateCalendarItem `xml:"t:CalendarItem"`
}
type StringAttributedValue ¶
type StringAttributedValue struct {
Value string `json:"Value"`
}
type Suggestion ¶
type Suggestion struct {
MeetingTime time.Time `xml:"MeetingTime"`
IsWorkTime bool `xml:"IsWorkTime"`
SuggestionQuality string `xml:"SuggestionQuality"`
ArrayOfAttendeeConflictData ArrayOfAttendeeConflictData `xml:"ArrayOfAttendeeConflictData"`
}
type SuggestionArray ¶
type SuggestionArray struct {
Suggestion []Suggestion `xml:"Suggestion"`
}
type SuggestionDayResult ¶
type SuggestionDayResult struct {
Date time.Time `xml:"Date"`
DayQuality string `xml:"DayQuality"`
SuggestionArray SuggestionArray `xml:"SuggestionArray"`
}
type SuggestionDayResultArray ¶
type SuggestionDayResultArray struct {
SuggestionDayResult []SuggestionDayResult `xml:"SuggestionDayResult"`
}
type SuggestionsResponse ¶
type SuggestionsResponse struct {
ResponseMessage ResponseMessage `xml:"ResponseMessage"`
SuggestionDayResultArray SuggestionDayResultArray `xml:"SuggestionDayResultArray"`
}
type TimeWindow ¶
type TimeZone ¶
type TimeZone struct {
Bias int `xml:"t:Bias"`
StandardTime TimeZoneTime `xml:"t:StandardTime"`
DaylightTime TimeZoneTime `xml:"t:DaylightTime"`
}
type TimeZoneDefinition ¶ added in v0.0.19
type TimeZoneDefinition struct {
Id string `xml:"Id,attr,omitempty"`
Name string `xml:"Name,attr,omitempty"`
}
TimeZoneDefinition — современное (Exchange 2010+) описание часового пояса для StartTimeZone/EndTimeZone. Атрибут Id принимает Microsoft timezone names (например "Russian Standard Time"). Name — человекочитаемая подпись, Exchange её не интерпретирует.
type TimeZoneTime ¶
type UpdateCalendarItemInput ¶ added in v0.0.19
type UpdateCalendarItemInput struct {
ItemID string
ChangeKey string
Start time.Time
End time.Time
}
UpdateCalendarItemInput — вход одной операции batch-Update.
Если ChangeKey пуст, библиотека резолвит его одним batch-запросом GetItem (GetCalendarItemsChangeKeys) для ВСЕХ элементов батча с пустым ChangeKey. Если ChangeKey заполнен вызывающей стороной —额外的 GetItem не делается.
type UpdateItem ¶ added in v0.0.17
type UpdateItem struct {
XMLName struct{} `xml:"m:UpdateItem"`
MessageDisposition string `xml:"MessageDisposition,attr"`
SendMeetingInvitationsOrCancellations string `xml:"SendMeetingInvitationsOrCancellations,attr"`
ConflictResolution string `xml:"ConflictResolution,attr"`
ItemChanges ItemChanges `xml:"m:ItemChanges"`
}
type UpdateItemResponse ¶ added in v0.0.17
type UpdateItemResponse struct {
ResponseMessages UpdateResponseMessages `xml:"ResponseMessages"`
}
type UpdateItemResponseMessage ¶ added in v0.0.17
type UpdateItemResponseMessage struct {
ResponseClass ResponseClass `xml:"ResponseClass,attr"`
MessageText string `xml:"MessageText"`
ResponseCode string `xml:"ResponseCode"`
Items ResponseItems `xml:"Items"`
}
type UpdateItemResult ¶ added in v0.0.19
UpdateItemResult — результат одного элемента batch-Update.
ItemID/ChangeKey — обновлённые значения после апдейта (Exchange может менять ChangeKey при каждом успешном UpdateItem). При неудаче Error != nil, остальные поля пустые.
func UpdateCalendarItemsTime ¶ added in v0.0.19
func UpdateCalendarItemsTime(ctx context.Context, c Client, items []UpdateCalendarItemInput) ([]UpdateItemResult, error)
UpdateCalendarItemsTime обновляет время набора событий в одном SOAP-запросе.
Возвращает по одному UpdateItemResult на каждый входной элемент в том же порядке. Частичные ошибки (ResponseClass="Error" на конкретном элементе) возвращаются как Error в соответствующей позиции слайса.
ChangeKey handling:
- если входной ChangeKey заполнен — используется как есть;
- если пуст — библиотека резолвит ChangeKey одним batch-запросом GetItem для всех элементов с пустым ChangeKey. Если хотя бы один id не зарезолвился — весь батч отменяется (Exchange всё равно отвергнет апдейт без валидного ChangeKey).
Top-level error непусто при ошибке маршалинга, HTTP ≠ 200, превышении лимита, невозможности зарезолвить ChangeKey, пустом конверте или отмене контекста. В этих случаях []UpdateItemResult — nil.
type UpdateResponseMessages ¶ added in v0.0.17
type UpdateResponseMessages struct {
UpdateItemResponseMessage UpdateItemResponseMessage `xml:"UpdateItemResponseMessage"`
}
type Updates ¶ added in v0.0.17
type Updates struct {
SetItem []SetItemField `xml:"t:SetItemField"`
}
type WorkingHours ¶
type WorkingHours struct {
TimeZone TimeZone `xml:"TimeZone"`
WorkingPeriodArray WorkingPeriodArray `xml:"WorkingPeriodArray"`
}
type WorkingPeriod ¶
type WorkingPeriodArray ¶
type WorkingPeriodArray struct {
WorkingPeriod []WorkingPeriod `xml:"WorkingPeriod"`
}