Files
bifrost/core/providers/anthropic/files.go
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

72 lines
2.1 KiB
Go

package anthropic
import (
"time"
"github.com/maximhq/bifrost/core/schemas"
)
// ToAnthropicFileUploadResponse converts a Bifrost file upload response to Anthropic format.
func ToAnthropicFileUploadResponse(resp *schemas.BifrostFileUploadResponse) *AnthropicFileResponse {
return &AnthropicFileResponse{
ID: resp.ID,
Type: resp.Object,
Filename: resp.Filename,
MimeType: "",
SizeBytes: resp.Bytes,
CreatedAt: formatAnthropicFileTimestamp(resp.CreatedAt),
}
}
// ToAnthropicFileListResponse converts a Bifrost file list response to Anthropic format.
func ToAnthropicFileListResponse(resp *schemas.BifrostFileListResponse) *AnthropicFileListResponse {
data := make([]AnthropicFileResponse, len(resp.Data))
for i, file := range resp.Data {
data[i] = AnthropicFileResponse{
ID: file.ID,
Type: file.Object,
Filename: file.Filename,
MimeType: "",
SizeBytes: file.Bytes,
CreatedAt: formatAnthropicFileTimestamp(file.CreatedAt),
}
}
return &AnthropicFileListResponse{
Data: data,
HasMore: resp.HasMore,
}
}
// ToAnthropicFileRetrieveResponse converts a Bifrost file retrieve response to Anthropic format.
func ToAnthropicFileRetrieveResponse(resp *schemas.BifrostFileRetrieveResponse) *AnthropicFileResponse {
return &AnthropicFileResponse{
ID: resp.ID,
Type: resp.Object,
Filename: resp.Filename,
MimeType: "", // Not supported in Bifrost responses
SizeBytes: resp.Bytes,
CreatedAt: formatAnthropicFileTimestamp(resp.CreatedAt),
}
}
// ToAnthropicFileDeleteResponse converts a Bifrost file delete response to Anthropic format.
func ToAnthropicFileDeleteResponse(resp *schemas.BifrostFileDeleteResponse) *AnthropicFileDeleteResponse {
respType := "file"
if resp.Deleted {
respType = "file_deleted"
}
return &AnthropicFileDeleteResponse{
ID: resp.ID,
Type: respType,
}
}
// formatAnthropicFileTimestamp converts Unix timestamp to Anthropic ISO timestamp format.
func formatAnthropicFileTimestamp(unixTime int64) string {
if unixTime == 0 {
return ""
}
return time.Unix(unixTime, 0).UTC().Format(time.RFC3339)
}