Pull contents from metadata file

This commit is contained in:
Abhishek Pandey 2024-01-25 22:24:32 -08:00
parent 0b4ea2f213
commit f8033e6b70

View File

@ -4,7 +4,9 @@ import (
"bytes" "bytes"
"context" "context"
"encoding/json" "encoding/json"
"fmt"
"io" "io"
"strings"
"time" "time"
"github.com/alcionai/clues" "github.com/alcionai/clues"
@ -224,7 +226,12 @@ func streamConversationPosts(
ictx := clues.Add(ctx, "path_short_ref", rc.FullPath().ShortRef()) ictx := clues.Add(ctx, "path_short_ref", rc.FullPath().ShortRef())
for item := range rc.Items(ctx, errs) { for item := range rc.Items(ctx, errs) {
name := item.ID() + ".eml" // Trim .data suffix from itemID
trimmedName := strings.TrimSuffix(item.ID(), dataFileSuffix)
name := trimmedName + ".eml"
meta, _ := getMetadataContents(ictx, item.ID(), rc)
fmt.Println(meta)
itemCtx := clues.Add(ictx, "stream_item_id", item.ID()) itemCtx := clues.Add(ictx, "stream_item_id", item.ID())
@ -285,47 +292,46 @@ func streamConversationPosts(
} }
} }
// func formatConversationPost( func getMetadataContents(
// cec control.ExportConfig, ctx context.Context,
// rc io.ReadCloser, itemID string,
// ) (io.ReadCloser, error) { fin data.FetchItemByNamer,
// if cec.Format == control.JSONFormat { ) (ConversationPostMetadata, error) {
// return rc, nil // Trim .data suffix from itemID
// } trimmedName := strings.TrimSuffix(itemID, dataFileSuffix)
metaName := trimmedName + metaFileSuffix
// bs, err := io.ReadAll(rc) meta, err := fin.FetchItemByName(ctx, metaName)
// if err != nil { if err != nil {
// return nil, clues.Wrap(err, "reading item bytes") return ConversationPostMetadata{}, clues.Wrap(err, "fetching metadata")
// } }
// defer rc.Close() metaReader := meta.ToReader()
defer metaReader.Close()
// cfb, err := api.CreateFromBytes(bs, models.CreateChatMessageFromDiscriminatorValue) metaFormatted, err := getMetadata(metaReader)
// if err != nil { if err != nil {
// return nil, clues.Wrap(err, "deserializing bytes to message") return ConversationPostMetadata{}, clues.Wrap(err, "deserializing metadata")
// } }
// msg, ok := cfb.(models.ChatMessageable) return metaFormatted, nil
// if !ok { }
// return nil, clues.New("expected deserialized item to implement models.ChatMessageable")
// }
// mItem := makeMinimumChannelMesasge(msg) // getMetadata read and parses the metadata info for an item
// replies := msg.GetReplies() func getMetadata(metar io.ReadCloser) (ConversationPostMetadata, error) {
var meta ConversationPostMetadata
// `metar` will be nil for the top level container folder
if metar != nil {
metaraw, err := io.ReadAll(metar)
if err != nil {
return ConversationPostMetadata{}, err
}
// mcmar := minimumChannelMessageAndReplies{ err = json.Unmarshal(metaraw, &meta)
// minimumChannelMessage: mItem, if err != nil {
// Replies: make([]minimumChannelMessage, 0, len(replies)), return ConversationPostMetadata{}, err
// } }
}
// for _, r := range replies { return meta, nil
// mcmar.Replies = append(mcmar.Replies, makeMinimumChannelMesasge(r)) }
// }
// bs, err = marshalJSONContainingHTML(mcmar)
// if err != nil {
// return nil, clues.Wrap(err, "serializing minimized channel message")
// }
// return io.NopCloser(bytes.NewReader(bs)), nil
// }