@@ -190,8 +190,7 @@ type imageGenerationProcessorUpstreamFilter struct {
190190func (i * imageGenerationProcessorUpstreamFilter ) selectTranslator (out filterapi.VersionedAPISchema ) error {
191191 switch out .Name {
192192 case filterapi .APISchemaOpenAI :
193- // i.translator = translator.NewImageGenerationOpenAIToOpenAITranslator(out.Version, i.modelNameOverride)
194- i .translator = nil // Placeholder
193+ i .translator = translator .NewImageGenerationOpenAIToOpenAITranslator (out .Version , i .modelNameOverride )
195194 case filterapi .APISchemaAWSBedrock :
196195 // i.translator = translator.NewImageGenerationOpenAIToAWSBedrockTranslator(i.modelNameOverride)
197196 i .translator = nil // Placeholder
@@ -220,13 +219,18 @@ func (i *imageGenerationProcessorUpstreamFilter) ProcessRequestHeaders(ctx conte
220219
221220 // We force the body mutation in the following cases:
222221 // * The request is a retry request because the body mutation might have happened the previous iteration.
223- // TODO: Implement proper translator request body transformation
224- // forceBodyMutation := i.onRetry
225- // headerMutation, bodyMutation, err := i.translator.RequestBody(i.originalRequestBodyRaw, i.originalRequestBody, forceBodyMutation)
226- // if err != nil {
227- // return nil, fmt.Errorf("failed to transform request: %w", err)
228- // }
229- headerMutation , bodyMutation := & extprocv3.HeaderMutation {}, (* extprocv3 .BodyMutation )(nil )
222+ var headerMutation * extprocv3.HeaderMutation
223+ var bodyMutation * extprocv3.BodyMutation
224+ if i .translator != nil {
225+ forceBodyMutation := i .onRetry
226+ headerMutation , bodyMutation , err = i .translator .RequestBody (i .originalRequestBodyRaw , i .originalRequestBody , forceBodyMutation )
227+ if err != nil {
228+ return nil , fmt .Errorf ("failed to transform request: %w" , err )
229+ }
230+ }
231+ if headerMutation == nil {
232+ headerMutation = & extprocv3.HeaderMutation {}
233+ }
230234
231235 // Apply header mutations from the route and also restore original headers on retry.
232236 if h := i .headerMutator ; h != nil {
@@ -280,12 +284,13 @@ func (i *imageGenerationProcessorUpstreamFilter) ProcessResponseHeaders(ctx cont
280284 if enc := i .responseHeaders ["content-encoding" ]; enc != "" {
281285 i .responseEncoding = enc
282286 }
283- // TODO: Implement proper translator response headers transformation
284- // headerMutation, err := i.translator.ResponseHeaders(i.responseHeaders)
285- // if err != nil {
286- // return nil, fmt.Errorf("failed to transform response headers: %w", err)
287- // }
288- headerMutation := (* extprocv3 .HeaderMutation )(nil )
287+ var headerMutation * extprocv3.HeaderMutation
288+ if i .translator != nil {
289+ headerMutation , err = i .translator .ResponseHeaders (i .responseHeaders )
290+ if err != nil {
291+ return nil , fmt .Errorf ("failed to transform response headers: %w" , err )
292+ }
293+ }
289294
290295 var mode * extprocv3http.ProcessingMode
291296 if i .stream && i .responseHeaders [":status" ] == "200" {
@@ -317,12 +322,18 @@ func (i *imageGenerationProcessorUpstreamFilter) ProcessResponseBody(ctx context
317322 if code , _ := strconv .Atoi (i .responseHeaders [":status" ]); ! isGoodStatusCode (code ) {
318323 var headerMutation * extprocv3.HeaderMutation
319324 var bodyMutation * extprocv3.BodyMutation
320- // TODO: Implement proper translator response error transformation
321- // headerMutation, bodyMutation, err = i.translator.ResponseError(i.responseHeaders, bytes.NewReader(body.Body))
322- // if err != nil {
323- // return nil, fmt.Errorf("failed to transform response error: %w", err)
324- // }
325- headerMutation , bodyMutation = & extprocv3.HeaderMutation {}, & extprocv3.BodyMutation {}
325+ if i .translator != nil {
326+ headerMutation , bodyMutation , err = i .translator .ResponseError (i .responseHeaders , bytes .NewReader (body .Body ))
327+ if err != nil {
328+ return nil , fmt .Errorf ("failed to transform response error: %w" , err )
329+ }
330+ }
331+ if headerMutation == nil {
332+ headerMutation = & extprocv3.HeaderMutation {}
333+ }
334+ if bodyMutation == nil {
335+ bodyMutation = & extprocv3.BodyMutation {}
336+ }
326337 if i .span != nil {
327338 b := bodyMutation .GetBody ()
328339 if b == nil {
@@ -344,10 +355,16 @@ func (i *imageGenerationProcessorUpstreamFilter) ProcessResponseBody(ctx context
344355 }, nil
345356 }
346357
347- // TODO: Implement proper translator response body transformation
348- headerMutation , bodyMutation , tokenUsage , imageMetadata , err := i .translator .ResponseBody (i .responseHeaders , bytes .NewReader (body .Body ), body .EndOfStream )
349- if err != nil {
350- return nil , fmt .Errorf ("failed to transform response: %w" , err )
358+ // Translator response body transformation (if available)
359+ var headerMutation * extprocv3.HeaderMutation
360+ var bodyMutation * extprocv3.BodyMutation
361+ var tokenUsage translator.LLMTokenUsage
362+ var imageMetadata translator.ImageGenerationMetadata
363+ if i .translator != nil {
364+ headerMutation , bodyMutation , tokenUsage , imageMetadata , err = i .translator .ResponseBody (i .responseHeaders , bytes .NewReader (body .Body ), body .EndOfStream )
365+ if err != nil {
366+ return nil , fmt .Errorf ("failed to transform response: %w" , err )
367+ }
351368 }
352369
353370 // TODO: Implement gzip handling when bodyMutation is non-nil and response is gzipped
0 commit comments