ews

package module
v0.0.0-...-9b5b312 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2024 License: MIT Imports: 15 Imported by: 0

README

EWS Exchange Web Service

Latest release Build status Go Report Card Documentation

Package ews is currently a work in progress.

This package started as a fork of github.com/mhewedy/ews but has since then changed severely. Therefore it is not backwards compatible. See the UPGRADE guide for additional details.

go get github.com/hsfish/go-ews
import "github.com/hsfish/go-ews"

EWS operations reference

https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/ews-operations-in-exchange

License

Copyright © 2022 Abovo Media. All rights reserved.

Additional information can be found in the LICENSE file.

Documentation

Index

Constants

View Source
const (
	Exchange2010     Version = "Exchange2010"
	Exchange2013_SP1 Version = "Exchange2013_SP1"

	RequestError   errors.Kind = "request error"
	UnmarshalError errors.Kind = "unmarshal error"
)
View Source
const PanicNilBody = "body must be a non-nil value"

Variables

This section is empty.

Functions

func NewError

func NewError(resp *http.Response) error

Types

type CancelCalendarItemOperation

type CancelCalendarItemOperation struct {
	CreateItem ewsxml.CreateItem
	// contains filtered or unexported fields
}

func (*CancelCalendarItemOperation) Body

func (op *CancelCalendarItemOperation) Body() interface{}

func (*CancelCalendarItemOperation) Header

type CancelCalendarItemResponse

type CancelCalendarItemResponse struct {
	XMLName          xml.Name `xml:"CreateItemResponse"`
	ResponseMessages struct {
		XMLName            xml.Name `xml:"ResponseMessages"`
		CreateItemResponse ewsxml.CreateItemResponseMessage
	}
}

type Client

type Client interface {
	Requester
	Log() Logger
	Url() string
	Username() string
	Do(req *Request) (*http.Response, error)
	ParseXML([]byte, interface{}) error
}

func NewClient

func NewClient(url string, ver Version, opts ...Option) (Client, error)

type CreateAttachmentOperation

type CreateAttachmentOperation struct {
	CreateAttachment struct {
		ewsxml.CreateAttachment
	}
	// contains filtered or unexported fields
}

func (*CreateAttachmentOperation) Body

func (op *CreateAttachmentOperation) Body() interface{}

func (*CreateAttachmentOperation) Header

func (op *CreateAttachmentOperation) Header() *ewsxml.Header

type CreateAttachmentResponse

type CreateAttachmentResponse struct {
	XMLName          xml.Name `xml:"CreateAttachmentResponse"`
	ResponseMessages struct {
		XMLName                          xml.Name `xml:"ResponseMessages"`
		CreateAttachmentsResponseMessage ewsxml.CreateAttachmentsResponseMessage
	}
}

type CreateCalendarItemsResponse

type CreateCalendarItemsResponse struct {
	XMLName          xml.Name `xml:"CreateItemResponse"`
	ResponseMessages struct {
		XMLName                   xml.Name `xml:"ResponseMessages"`
		CreateItemResponseMessage ewsxml.CreateItemResponseMessage
	}
}

type CreateFolderOperation

type CreateFolderOperation struct {
	CreateFolder ewsxml.CreateFolder
	// contains filtered or unexported fields
}

func (*CreateFolderOperation) Body

func (op *CreateFolderOperation) Body() interface{}

func (*CreateFolderOperation) Header

func (op *CreateFolderOperation) Header() *ewsxml.Header

type CreateFolderResponse

type CreateFolderResponse struct {
	XMLName          xml.Name `xml:"CreateFolderResponse"`
	ResponseMessages struct {
		XMLName                     xml.Name `xml:"ResponseMessages"`
		CreateFolderResponseMessage []ewsxml.CreateFolderResponseMessage
	}
}

type CreateItemCalendarItemsOperation

type CreateItemCalendarItemsOperation struct {
	CreateItem struct {
		ewsxml.CreateItem
	}
	// contains filtered or unexported fields
}

func (*CreateItemCalendarItemsOperation) Body

func (op *CreateItemCalendarItemsOperation) Body() interface{}

func (*CreateItemCalendarItemsOperation) Header

type DeleteAttachmentOperation

type DeleteAttachmentOperation struct {
	DeleteAttachment ewsxml.DeleteAttachment
	// contains filtered or unexported fields
}

func (*DeleteAttachmentOperation) Body

func (op *DeleteAttachmentOperation) Body() interface{}

func (*DeleteAttachmentOperation) Header

func (op *DeleteAttachmentOperation) Header() *ewsxml.Header

type DeleteAttachmentResponse

type DeleteAttachmentResponse struct {
	XMLName          xml.Name `xml:"DeleteAttachmentResponse"`
	ResponseMessages struct {
		XMLName                      xml.Name `xml:"ResponseMessages"`
		GetAttachmentResponseMessage ewsxml.DeleteAttachmentResponseMessage
	}
}

type DeleteFolderOperation

type DeleteFolderOperation struct {
	DeleteFolder ewsxml.DeleteFolder
	// contains filtered or unexported fields
}

func (*DeleteFolderOperation) Body

func (op *DeleteFolderOperation) Body() interface{}

func (*DeleteFolderOperation) Header

func (op *DeleteFolderOperation) Header() *ewsxml.Header

type DeleteFolderResponse

type DeleteFolderResponse struct {
	XMLName          xml.Name `xml:"DeleteFolderResponse"`
	ResponseMessages struct {
		XMLName                     xml.Name `xml:"ResponseMessages"`
		DeleteFolderResponseMessage []ewsxml.DeleteFolderResponseMessage
	}
}

type DeleteItemCalendarItemsOperation

type DeleteItemCalendarItemsOperation struct {
	DeleteItem ewsxml.DeleteItem
	// contains filtered or unexported fields
}

func (*DeleteItemCalendarItemsOperation) Body

func (op *DeleteItemCalendarItemsOperation) Body() interface{}

func (*DeleteItemCalendarItemsOperation) Header

type DeleteItemCalendarItemsResponse

type DeleteItemCalendarItemsResponse struct {
	XMLName          xml.Name `xml:"DeleteItemResponse"`
	ResponseMessages struct {
		XMLName                   xml.Name `xml:"ResponseMessages"`
		DeleteItemResponseMessage ewsxml.DeleteItemResponseMessage
	}
}

type Fault

type Fault struct {
	Faultcode   string `xml:"faultcode"`
	Faultstring string `xml:"faultstring"`
	Detail      detail `xml:"detail"`
}

type FindFolderOperation

type FindFolderOperation struct {
	FindFolder ewsxml.FindFolder
	// contains filtered or unexported fields
}

func (*FindFolderOperation) Body

func (op *FindFolderOperation) Body() interface{}

func (*FindFolderOperation) Header

func (op *FindFolderOperation) Header() *ewsxml.Header

type FindFolderResponse

type FindFolderResponse struct {
	XMLName          xml.Name `xml:"FindFolderResponse"`
	ResponseMessages struct {
		XMLName                   xml.Name `xml:"ResponseMessages"`
		FindFolderResponseMessage []ewsxml.FindFolderResponseMessage
	}
}

func FindCalendarFolders

func FindCalendarFolders(ctx context.Context, req Requester, op *FindFolderOperation) (*FindFolderResponse, error)

type FindItemCalendarViewOperation

type FindItemCalendarViewOperation struct {
	FindItem struct {
		ewsxml.FindItem
		CalendarView ewsxml.CalendarView

		// https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/parentfolderids
		ParentFolderIds ewsxml.SendParentFolderIds
	}
	// contains filtered or unexported fields
}

func (*FindItemCalendarViewOperation) Body

func (op *FindItemCalendarViewOperation) Body() interface{}

func (*FindItemCalendarViewOperation) Header

type FindItemQueryStringOperation

type FindItemQueryStringOperation struct {
	FindItem struct {
		ewsxml.FindItem
		// https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/querystring-querystringtype
		QueryString string `xml:"m:QueryString"`
		SortOrder   ewsxml.SortOrder

		ParentFolderIds struct {
			DistinguishedFolderId ewsxml.DistinguishedFolderId `xml:"t:DistinguishedFolderId"`
		} `xml:"m:ParentFolderIds"`
	}
	// contains filtered or unexported fields
}

func (*FindItemQueryStringOperation) Body

func (op *FindItemQueryStringOperation) Body() interface{}

func (*FindItemQueryStringOperation) Header

type FindItemResponse

type FindItemResponse struct {
	XMLName          xml.Name `xml:"FindItemResponse"`
	ResponseMessages struct {
		XMLName                 xml.Name `xml:"ResponseMessages"`
		FindItemResponseMessage ewsxml.FindItemResponseMessage
	}
}

type GetAttachmentOperation

type GetAttachmentOperation struct {
	GetAttachment ewsxml.GetAttachment
	// contains filtered or unexported fields
}

func (*GetAttachmentOperation) Body

func (op *GetAttachmentOperation) Body() interface{}

func (*GetAttachmentOperation) Header

func (op *GetAttachmentOperation) Header() *ewsxml.Header

type GetAttachmentResponse

type GetAttachmentResponse struct {
	XMLName          xml.Name `xml:"GetAttachmentResponse"`
	ResponseMessages struct {
		XMLName                      xml.Name `xml:"ResponseMessages"`
		GetAttachmentResponseMessage ewsxml.GetAttachmentResponseMessage
	}
}

type GetFolderOperation

type GetFolderOperation struct {
	GetFolder ewsxml.GetFolder
	// contains filtered or unexported fields
}

func (*GetFolderOperation) Body

func (op *GetFolderOperation) Body() interface{}

func (*GetFolderOperation) Header

func (op *GetFolderOperation) Header() *ewsxml.Header

type GetFolderResponse

type GetFolderResponse struct {
	XMLName          xml.Name `xml:"GetFolderResponse"`
	ResponseMessages struct {
		XMLName                  xml.Name `xml:"ResponseMessages"`
		GetFolderResponseMessage []ewsxml.GetFolderResponseMessage
	}
}

func GetCalendarFolders

func GetCalendarFolders(ctx context.Context, req Requester, op *GetFolderOperation) (*GetFolderResponse, error)

type GetItemCalendarItemsOperation

type GetItemCalendarItemsOperation struct {
	GetItem ewsxml.GetItem
	// contains filtered or unexported fields
}

func (*GetItemCalendarItemsOperation) Body

func (op *GetItemCalendarItemsOperation) Body() interface{}

func (*GetItemCalendarItemsOperation) Header

type GetItemCalendarItemsResponse

type GetItemCalendarItemsResponse struct {
	XMLName          xml.Name `xml:"GetItemResponse"`
	ResponseMessages struct {
		XMLName                xml.Name `xml:"ResponseMessages"`
		GetItemResponseMessage ewsxml.GetItemResponseMessage
	}
}

type GetRemindersOperation

type GetRemindersOperation struct {
	GetReminders struct {
		ewsxml.GetReminders
	}
	// contains filtered or unexported fields
}

func (*GetRemindersOperation) Body

func (op *GetRemindersOperation) Body() interface{}

func (*GetRemindersOperation) Header

func (op *GetRemindersOperation) Header() *ewsxml.Header

type GetRemindersResponse

type GetRemindersResponse struct {
	XMLName   xml.Name `xml:"GetRemindersResponse"`
	Reminders ewsxml.Reminders
}

type GetRoomListsOperation

type GetRoomListsOperation struct {
	// contains filtered or unexported fields
}

func (*GetRoomListsOperation) Body

func (op *GetRoomListsOperation) Body() interface{}

func (*GetRoomListsOperation) Header

func (op *GetRoomListsOperation) Header() *ewsxml.Header

type GetRoomListsResponse

type GetRoomListsResponse struct {
	ewsxml.Response
	RoomLists struct {
		Address []ewsxml.Mailbox `xml:"Address"`
	} `xml:"RoomLists"`
}

type GetRoomsOperation

type GetRoomsOperation struct {
	GetRooms ewsxml.GetRooms
	// contains filtered or unexported fields
}

https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getrooms-operation

func (*GetRoomsOperation) Body

func (op *GetRoomsOperation) Body() interface{}

func (*GetRoomsOperation) Header

func (op *GetRoomsOperation) Header() *ewsxml.Header

type GetRoomsResponse

type GetRoomsResponse struct {
	ewsxml.Response
	Rooms []struct {
		Name         string
		EmailAddress string
		RoutingType  ewsxml.RoutingType
		MailboxType  ewsxml.MailboxType
	} `xml:"Rooms>Room>Id"`
}

https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getroomsresponse

type GetUserAvailabilityOperation

type GetUserAvailabilityOperation struct {
	GetUserAvailabilityRequest ewsxml.GetUserAvailabilityRequest
	// contains filtered or unexported fields
}

func (*GetUserAvailabilityOperation) Body

func (op *GetUserAvailabilityOperation) Body() interface{}

func (*GetUserAvailabilityOperation) Header

type GetUserAvailabilityResponse

type GetUserAvailabilityResponse struct {
	XMLName               xml.Name `xml:"GetUserAvailabilityResponse"`
	FreeBusyResponseArray ewsxml.FreeBusyResponseArray
	SuggestionsResponse   ewsxml.SuggestionsResponse
}

type GetUserConfigurationOperation

type GetUserConfigurationOperation struct {
	GetUserConfiguration ewsxml.GetUserConfiguration
	// contains filtered or unexported fields
}

func (*GetUserConfigurationOperation) Body

func (op *GetUserConfigurationOperation) Body() interface{}

func (*GetUserConfigurationOperation) Header

type GetUserConfigurationResponse

type GetUserConfigurationResponse struct {
	XMLName          xml.Name `xml:"GetUserConfigurationResponse"`
	ResponseMessages struct {
		XMLName                             xml.Name `xml:"ResponseMessages"`
		GetUserConfigurationResponseMessage ewsxml.GetUserConfigurationResponseMessage
	}
}

type HTTPError

type HTTPError struct {
	Status     string
	StatusCode int
}

func (HTTPError) Error

func (s HTTPError) Error() string

type Logger

type Logger interface {
	Server(url string, ver Version)
	HttpRequest(req *http.Request, body []byte)
	HttpResponse(resp *http.Response, body []byte)
	Response(resp ewsxml.Response)
}

func DefaultLogger

func DefaultLogger() Logger

func NopLogger

func NopLogger() Logger

type MoveItemOperation

type MoveItemOperation struct {
	MoveItem struct {
		ewsxml.MoveItem
	}
	// contains filtered or unexported fields
}

func (*MoveItemOperation) Body

func (op *MoveItemOperation) Body() interface{}

func (*MoveItemOperation) Header

func (op *MoveItemOperation) Header() *ewsxml.Header

type MoveItemResponse

type MoveItemResponse struct {
	XMLName          xml.Name `xml:"MoveItemResponse"`
	ResponseMessages struct {
		XMLName                 xml.Name `xml:"ResponseMessages"`
		MoveItemResponseMessage ewsxml.MoveItemResponseMessage
	}
}

func MoveCalendarItems

func MoveCalendarItems(ctx context.Context, req Requester, op *MoveItemOperation) (*MoveItemResponse, error)

type Operation

type Operation interface {
	Header() *ewsxml.Header
	Body() interface{}
}

type Option

type Option func(c *client) error

func WithBasicAuth

func WithBasicAuth(user, pass string) Option

func WithDefaultLogger

func WithDefaultLogger() Option

func WithDefaultTransport

func WithDefaultTransport(skipTls bool) Option

func WithExchangeImpersonation

func WithExchangeImpersonation(v string) Option

func WithLogger

func WithLogger(l Logger) Option

func WithNTLM

func WithNTLM(skipTls bool) Option

func WithTimeout

func WithTimeout(t time.Duration) Option

WithTimeout sets the Timeout field on the http.Client.

func WithTransport

func WithTransport(t http.RoundTripper) Option

type Request

type Request struct {
	// contains filtered or unexported fields
}

func NewOperationRequest

func NewOperationRequest(ctx context.Context, op Operation) *Request

func NewRequest

func NewRequest(ctx context.Context, head *ewsxml.Header, body interface{}) *Request

func (*Request) Body

func (r *Request) Body() interface{}

func (*Request) Header

func (r *Request) Header() *ewsxml.Header

func (*Request) WriteBody

func (r *Request) WriteBody(w io.Writer) error

type Requester

type Requester interface {
	// Request
	// Argument out must be of []byte or any type that xml.Marshal
	// successfully can handle.
	Request(req *Request, out interface{}) error
}

type RespondToCalendarItemOperation

type RespondToCalendarItemOperation struct {
	CreateItem struct {
		ewsxml.CreateItem
	}
	// contains filtered or unexported fields
}

func (*RespondToCalendarItemOperation) Body

func (op *RespondToCalendarItemOperation) Body() interface{}

func (*RespondToCalendarItemOperation) Header

type RespondToCalendarItemResponse

type RespondToCalendarItemResponse struct {
	XMLName          xml.Name `xml:"CreateItemResponse"`
	ResponseMessages struct {
		XMLName                   xml.Name `xml:"ResponseMessages"`
		CreateItemResponseMessage ewsxml.CreateItemResponseMessage
	}
}

type SendNotificationResponse

type SendNotificationResponse struct {
	XMLName          xml.Name `xml:"SendNotification"`
	ResponseMessages struct {
		XMLName                         xml.Name `xml:"ResponseMessages"`
		SendNotificationResponseMessage ewsxml.SendNotificationResponseMessage
	}
}

type SendNotificationResultOperation

type SendNotificationResultOperation struct {
	SendNotificationResult ewsxml.SendNotificationResult
	// contains filtered or unexported fields
}

func (*SendNotificationResultOperation) Body

func (op *SendNotificationResultOperation) Body() interface{}

func (*SendNotificationResultOperation) Header

type SoapError

type SoapError struct {
	Fault *Fault
}

func (SoapError) Error

func (s SoapError) Error() string

type SubscribeOperation

type SubscribeOperation struct {
	Subscribe ewsxml.Subscribe
	// contains filtered or unexported fields
}

func (*SubscribeOperation) Body

func (op *SubscribeOperation) Body() interface{}

func (*SubscribeOperation) Header

func (op *SubscribeOperation) Header() *ewsxml.Header

type SubscribeResponse

type SubscribeResponse struct {
	XMLName          xml.Name `xml:"SubscribeResponse"`
	ResponseMessages struct {
		XMLName                  xml.Name `xml:"ResponseMessages"`
		SubscribeResponseMessage ewsxml.SubscribeResponseMessage
	}
}

func SubscribeToNotifications

func SubscribeToNotifications(ctx context.Context, req Requester, op *SubscribeOperation) (*SubscribeResponse, error)

type UpdateCalendarItemResponse

type UpdateCalendarItemResponse struct {
	XMLName          xml.Name `xml:"UpdateItemResponse"`
	ResponseMessages struct {
		XMLName                   xml.Name `xml:"ResponseMessages"`
		UpdateItemResponseMessage ewsxml.UpdateItemResponseMessage
	}
}

type UpdateCalendarItemsOperation

type UpdateCalendarItemsOperation struct {
	UpdateItem struct {
		ewsxml.UpdateItem
	}
	// contains filtered or unexported fields
}

func (*UpdateCalendarItemsOperation) Body

func (op *UpdateCalendarItemsOperation) Body() interface{}

func (*UpdateCalendarItemsOperation) Header

type UpdateFolderOperation

type UpdateFolderOperation struct {
	UpdateFolder struct {
		ewsxml.UpdateFolder
	}
	// contains filtered or unexported fields
}

func (*UpdateFolderOperation) Body

func (op *UpdateFolderOperation) Body() interface{}

func (*UpdateFolderOperation) Header

func (op *UpdateFolderOperation) Header() *ewsxml.Header

type UpdateFolderResponse

type UpdateFolderResponse struct {
	XMLName          xml.Name `xml:"UpdateFolderResponse"`
	ResponseMessages struct {
		XMLName                     xml.Name `xml:"ResponseMessages"`
		UpdateFolderResponseMessage ewsxml.UpdateFolderResponseMessage
	}
}

type UpdateUserConfigurationOperation

type UpdateUserConfigurationOperation struct {
	UpdateUserConfiguration ewsxml.UpdateUserConfiguration
	// contains filtered or unexported fields
}

func (*UpdateUserConfigurationOperation) Body

func (op *UpdateUserConfigurationOperation) Body() interface{}

func (*UpdateUserConfigurationOperation) Header

type UpdateUserConfigurationResponse

type UpdateUserConfigurationResponse struct {
	XMLName          xml.Name `xml:"UpdateUserConfigurationResponse"`
	ResponseMessages struct {
		XMLName                                xml.Name `xml:"ResponseMessages"`
		UpdateUserConfigurationResponseMessage ewsxml.Response
	}
}

type Version

type Version = ewsxml.Version

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL