first commit
This commit is contained in:
89
core/providers/replicate/files.go
Normal file
89
core/providers/replicate/files.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package replicate
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/maximhq/bifrost/core/schemas"
|
||||
)
|
||||
|
||||
// Replicate File API Converters
|
||||
|
||||
// ToBifrostFileStatus converts Replicate file status to Bifrost file status.
|
||||
// Replicate doesn't explicitly provide status, so we infer from the response.
|
||||
func ToBifrostFileStatus(fileResp *ReplicateFileResponse) schemas.FileStatus {
|
||||
// If file has all required fields and is accessible, it's processed
|
||||
if fileResp.ID != "" && fileResp.Size > 0 {
|
||||
return schemas.FileStatusProcessed
|
||||
}
|
||||
return schemas.FileStatusUploaded
|
||||
}
|
||||
|
||||
// ToBifrostFileUploadResponse converts Replicate file response to Bifrost file upload response.
|
||||
func (r *ReplicateFileResponse) ToBifrostFileUploadResponse(providerName schemas.ModelProvider, latency time.Duration, sendBackRawRequest bool, sendBackRawResponse bool, rawRequest interface{}, rawResponse interface{}) *schemas.BifrostFileUploadResponse {
|
||||
resp := &schemas.BifrostFileUploadResponse{
|
||||
ID: r.ID,
|
||||
Object: "file",
|
||||
Bytes: r.Size,
|
||||
CreatedAt: ParseReplicateTimestamp(r.CreatedAt),
|
||||
Filename: r.Name,
|
||||
Purpose: schemas.FilePurposeBatch, // Replicate uses files primarily for batch/general purposes
|
||||
Status: ToBifrostFileStatus(r),
|
||||
StorageBackend: schemas.FileStorageAPI,
|
||||
ExtraFields: schemas.BifrostResponseExtraFields{
|
||||
Latency: latency.Milliseconds(),
|
||||
},
|
||||
}
|
||||
|
||||
// Add ExpiresAt if present
|
||||
if r.ExpiresAt != "" {
|
||||
expiresAt := ParseReplicateTimestamp(r.ExpiresAt)
|
||||
if expiresAt > 0 {
|
||||
resp.ExpiresAt = &expiresAt
|
||||
}
|
||||
}
|
||||
|
||||
if sendBackRawRequest {
|
||||
resp.ExtraFields.RawRequest = rawRequest
|
||||
}
|
||||
|
||||
if sendBackRawResponse {
|
||||
resp.ExtraFields.RawResponse = rawResponse
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
// ToBifrostFileRetrieveResponse converts Replicate file response to Bifrost file retrieve response.
|
||||
func (r *ReplicateFileResponse) ToBifrostFileRetrieveResponse(providerName schemas.ModelProvider, latency time.Duration, sendBackRawRequest bool, sendBackRawResponse bool, rawRequest interface{}, rawResponse interface{}) *schemas.BifrostFileRetrieveResponse {
|
||||
resp := &schemas.BifrostFileRetrieveResponse{
|
||||
ID: r.ID,
|
||||
Object: "file",
|
||||
Bytes: r.Size,
|
||||
CreatedAt: ParseReplicateTimestamp(r.CreatedAt),
|
||||
Filename: r.Name,
|
||||
Purpose: schemas.FilePurposeBatch,
|
||||
Status: ToBifrostFileStatus(r),
|
||||
StorageBackend: schemas.FileStorageAPI,
|
||||
ExtraFields: schemas.BifrostResponseExtraFields{
|
||||
Latency: latency.Milliseconds(),
|
||||
},
|
||||
}
|
||||
|
||||
// Add ExpiresAt if present
|
||||
if r.ExpiresAt != "" {
|
||||
expiresAt := ParseReplicateTimestamp(r.ExpiresAt)
|
||||
if expiresAt > 0 {
|
||||
resp.ExpiresAt = &expiresAt
|
||||
}
|
||||
}
|
||||
|
||||
if sendBackRawRequest {
|
||||
resp.ExtraFields.RawRequest = rawRequest
|
||||
}
|
||||
|
||||
if sendBackRawResponse {
|
||||
resp.ExtraFields.RawResponse = rawResponse
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
Reference in New Issue
Block a user