|
|
@@ -426,6 +426,9 @@ func (a *Adaptor) ConvertAudioRequest(c *gin.Context, info *relaycommon.RelayInf
|
|
|
func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommon.RelayInfo, request dto.ImageRequest) (any, error) {
|
|
|
switch info.RelayMode {
|
|
|
case relayconstant.RelayModeImagesEdits:
|
|
|
+ if isJSONRequest(c) {
|
|
|
+ return request, nil
|
|
|
+ }
|
|
|
|
|
|
var requestBody bytes.Buffer
|
|
|
writer := multipart.NewWriter(&requestBody)
|
|
|
@@ -551,6 +554,13 @@ func (a *Adaptor) ConvertImageRequest(c *gin.Context, info *relaycommon.RelayInf
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+func isJSONRequest(c *gin.Context) bool {
|
|
|
+ if c == nil || c.Request == nil {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return strings.HasPrefix(c.Request.Header.Get("Content-Type"), "application/json")
|
|
|
+}
|
|
|
+
|
|
|
// detectImageMimeType determines the MIME type based on the file extension
|
|
|
func detectImageMimeType(filename string) string {
|
|
|
ext := strings.ToLower(filepath.Ext(filename))
|
|
|
@@ -593,7 +603,7 @@ func (a *Adaptor) ConvertOpenAIResponsesRequest(c *gin.Context, info *relaycommo
|
|
|
func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, requestBody io.Reader) (any, error) {
|
|
|
if info.RelayMode == relayconstant.RelayModeAudioTranscription ||
|
|
|
info.RelayMode == relayconstant.RelayModeAudioTranslation ||
|
|
|
- info.RelayMode == relayconstant.RelayModeImagesEdits {
|
|
|
+ (info.RelayMode == relayconstant.RelayModeImagesEdits && !isJSONRequest(c)) {
|
|
|
return channel.DoFormRequest(a, c, info, requestBody)
|
|
|
} else if info.RelayMode == relayconstant.RelayModeRealtime {
|
|
|
return channel.DoWssRequest(a, c, info, requestBody)
|