package main
import (
"fmt"
"time"
goews "github.com/beorereleverion/go-ews"
"github.com/beorereleverion/go-ews/elements"
"github.com/beorereleverion/go-ews/operations"
)
func getPTR[T any](v T) *T {
return &v
}
func main() {
client := goews.NewClient("https://domain.ru/EWS/Exchange.asmx", "e-mail", "pa$$", goews.Config{
Dump: false,
NTLM: true,
SkipTLS: false,
})
loc, _ := time.LoadLocation("Local")
now := time.Now().In(loc)
start := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, loc)
end := start.Add(24 * time.Hour)
startStr := start.Format(time.RFC3339)
endStr := end.Format(time.RFC3339)
findItemEnvelope, err := operations.NewEnvelopeMarshal(&elements.FindItem{
ItemShape: &elements.ItemShape{
BaseShape: &elements.BaseShape{
TEXT: elements.BaseShapeAllProperties,
},
},
ParentFolderIds: &elements.ParentFolderIds{
DistinguishedFolderId: &elements.DistinguishedFolderId{
Id: getPTR(elements.DistinguishedFolderIdcalendar),
},
},
CalendarView: &elements.CalendarView{
StartDate: &startStr,
EndDate: &endStr,
},
})
if err != nil {
panic(err)
}
findItemResp := &elements.FindItemResponse{}
err = client.DoRequest(findItemEnvelope, findItemResp)
if err != nil {
panic(err)
}
for _, item := range findItemResp.ResponseMessages.FindItemResponseMessage.RootFolder.Items.CalendarItem {
fmt.Printf("Тема: %s\n", item.Subject.TEXT)
fmt.Printf("Время начала: %s\n", item.Start.TEXT)
fmt.Printf("Время конца: %s\n", item.End.TEXT)
fmt.Printf("Организатор: [[%s]]\n", item.Organizer.Mailbox.Name.TEXT)
fmt.Println("------")
}
}