package officeconvertclient import ( "context" "fmt" "path/filepath" officeconvertapiv1 "gitea.auvem.com/end/officeconvert/gen/go/officeconvertapi/v1" ) // ConversionResult groups the terminal status and deck payload for one conversion. type ConversionResult struct { Status *GetConversionStatusResponse Deck *officeconvertapiv1.SlideDeck } // ConvertPPTXFile runs the full create-upload-start-wait-fetch flow. func (c *Client) ConvertPPTXFile(ctx context.Context, localPPTXPath string) (*ConversionResult, error) { createRes, err := c.CreateConversion( ctx, &CreateConversionOptions{ SourceFilename: filepath.Base(localPPTXPath), }, ) if err != nil { return nil, fmt.Errorf("create conversion: %w", err) } if err := c.UploadPPTX(ctx, createRes.UploadUrl, localPPTXPath); err != nil { return nil, err } if _, err := c.StartConversion(ctx, createRes.ConversionKSUID); err != nil { return nil, fmt.Errorf("start conversion: %w", err) } statusRes, err := c.WaitForCompletion(ctx, createRes.ConversionKSUID) if err != nil { return nil, fmt.Errorf("wait for completion: %w", err) } deckRes, err := c.GetSlideDeck(ctx, createRes.ConversionKSUID) if err != nil { return nil, fmt.Errorf("get slide deck: %w", err) } return &ConversionResult{ Status: statusRes, Deck: deckRes.SlideDeck, }, nil }