Update to use internal fields rather than creating additional objects.

This commit is contained in:
Danny Adams 2023-01-06 09:38:26 -05:00
parent 9a872fd388
commit d331ad8ecf

View File

@ -13,8 +13,6 @@ import (
"time" "time"
absser "github.com/microsoft/kiota-abstractions-go/serialization" absser "github.com/microsoft/kiota-abstractions-go/serialization"
kioser "github.com/microsoft/kiota-serialization-json-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
"github.com/microsoftgraph/msgraph-sdk-go/models" "github.com/microsoftgraph/msgraph-sdk-go/models"
"github.com/pkg/errors" "github.com/pkg/errors"
@ -281,10 +279,11 @@ func (col *Collection) streamItems(ctx context.Context) {
return return
} }
service := col.service.(graph.Service)
byteCount, err := serializeFunc( byteCount, err := serializeFunc(
ctx, ctx,
col.service.Client(), &service,
kioser.NewJsonSerializationWriter(),
col.data, col.data,
response, response,
user) user)
@ -342,8 +341,7 @@ func getModTime(mt modTimer) time.Time {
// responses into data.Stream items contained within the Collection // responses into data.Stream items contained within the Collection
type GraphSerializeFunc func( type GraphSerializeFunc func(
ctx context.Context, ctx context.Context,
client *msgraphsdk.GraphServiceClient, service *graph.Service, // TODO: Keepers: Not sure how to have the interface use Serialize without updating all the files.
objectWriter *kioser.JsonSerializationWriter,
dataChannel chan<- data.Stream, dataChannel chan<- data.Stream,
parsable absser.Parsable, parsable absser.Parsable,
user string, user string,
@ -353,16 +351,13 @@ type GraphSerializeFunc func(
// data.Stream objects. Returns an error the process finishes unsuccessfully. // data.Stream objects. Returns an error the process finishes unsuccessfully.
func serializeAndStreamEvent( func serializeAndStreamEvent(
ctx context.Context, ctx context.Context,
client *msgraphsdk.GraphServiceClient, service *graph.Service,
objectWriter *kioser.JsonSerializationWriter,
dataChannel chan<- data.Stream, dataChannel chan<- data.Stream,
parsable absser.Parsable, parsable absser.Parsable,
user string, user string,
) (int, error) { ) (int, error) {
var err error var err error
defer objectWriter.Close()
event, ok := parsable.(models.Eventable) event, ok := parsable.(models.Eventable)
if !ok { if !ok {
return 0, fmt.Errorf("expected Eventable, got %T", parsable) return 0, fmt.Errorf("expected Eventable, got %T", parsable)
@ -372,7 +367,8 @@ func serializeAndStreamEvent(
var retriesErr error var retriesErr error
for count := 0; count < numberOfRetries; count++ { for count := 0; count < numberOfRetries; count++ {
attached, err := client. attached, err := service.
Client().
UsersById(user). UsersById(user).
EventsById(*event.GetId()). EventsById(*event.GetId()).
Attachments(). Attachments().
@ -395,12 +391,7 @@ func serializeAndStreamEvent(
} }
} }
err = objectWriter.WriteObjectValue("", event) byteArray, err := service.Serialize(event)
if err != nil {
return 0, support.SetNonRecoverableError(errors.Wrap(err, *event.GetId()))
}
byteArray, err := objectWriter.GetSerializedContent()
if err != nil { if err != nil {
return 0, support.WrapAndAppend(*event.GetId(), errors.Wrap(err, "serializing content"), nil) return 0, support.WrapAndAppend(*event.GetId(), errors.Wrap(err, "serializing content"), nil)
} }
@ -420,25 +411,17 @@ func serializeAndStreamEvent(
// serializeAndStreamContact is a GraphSerializeFunc for models.Contactable // serializeAndStreamContact is a GraphSerializeFunc for models.Contactable
func serializeAndStreamContact( func serializeAndStreamContact(
ctx context.Context, ctx context.Context,
client *msgraphsdk.GraphServiceClient, service *graph.Service,
objectWriter *kioser.JsonSerializationWriter,
dataChannel chan<- data.Stream, dataChannel chan<- data.Stream,
parsable absser.Parsable, parsable absser.Parsable,
user string, user string,
) (int, error) { ) (int, error) {
defer objectWriter.Close()
contact, ok := parsable.(models.Contactable) contact, ok := parsable.(models.Contactable)
if !ok { if !ok {
return 0, fmt.Errorf("expected Contactable, got %T", parsable) return 0, fmt.Errorf("expected Contactable, got %T", parsable)
} }
err := objectWriter.WriteObjectValue("", contact) bs, err := service.Serialize(contact)
if err != nil {
return 0, support.SetNonRecoverableError(errors.Wrap(err, *contact.GetId()))
}
bs, err := objectWriter.GetSerializedContent()
if err != nil { if err != nil {
return 0, support.WrapAndAppend(*contact.GetId(), err, nil) return 0, support.WrapAndAppend(*contact.GetId(), err, nil)
} }
@ -458,16 +441,13 @@ func serializeAndStreamContact(
// serializeAndStreamMessage is the GraphSerializeFunc for models.Messageable // serializeAndStreamMessage is the GraphSerializeFunc for models.Messageable
func serializeAndStreamMessage( func serializeAndStreamMessage(
ctx context.Context, ctx context.Context,
client *msgraphsdk.GraphServiceClient, service *graph.Service,
objectWriter *kioser.JsonSerializationWriter,
dataChannel chan<- data.Stream, dataChannel chan<- data.Stream,
parsable absser.Parsable, parsable absser.Parsable,
user string, user string,
) (int, error) { ) (int, error) {
var err error var err error
defer objectWriter.Close()
msg, ok := parsable.(models.Messageable) msg, ok := parsable.(models.Messageable)
if !ok { if !ok {
return 0, fmt.Errorf("expected Messageable, got %T", parsable) return 0, fmt.Errorf("expected Messageable, got %T", parsable)
@ -478,7 +458,8 @@ func serializeAndStreamMessage(
var retriesErr error var retriesErr error
for count := 0; count < numberOfRetries; count++ { for count := 0; count < numberOfRetries; count++ {
attached, err := client. attached, err := service.
Client().
UsersById(user). UsersById(user).
MessagesById(*msg.GetId()). MessagesById(*msg.GetId()).
Attachments(). Attachments().
@ -497,12 +478,7 @@ func serializeAndStreamMessage(
} }
} }
err = objectWriter.WriteObjectValue("", msg) bs, err := service.Serialize(msg)
if err != nil {
return 0, support.SetNonRecoverableError(errors.Wrapf(err, "%s", *msg.GetId()))
}
bs, err := objectWriter.GetSerializedContent()
if err != nil { if err != nil {
err = support.WrapAndAppend(*msg.GetId(), errors.Wrap(err, "serializing mail content"), nil) err = support.WrapAndAppend(*msg.GetId(), errors.Wrap(err, "serializing mail content"), nil)
return 0, support.SetNonRecoverableError(err) return 0, support.SetNonRecoverableError(err)