MCPcopy
hub / github.com/the-open-agent/openagent / RefineMessageFiles

Function RefineMessageFiles

object/message.go:266–341  ·  view source on GitHub ↗
(message *Message, origin string, lang string)

Source from the content-addressed store, hash-verified

264}
265
266func RefineMessageFiles(message *Message, origin string, lang string) error {
267 text := message.Text
268 // re := regexp.MustCompile(`data:image\/([a-zA-Z]*);base64,([^"]*)`)
269 re := regexp.MustCompile(`data:([a-zA-Z0-9][a-zA-Z0-9!#$&^_.+\-]*\/[a-zA-Z0-9][a-zA-Z0-9!#$&^_.+\-]*);base64,[a-zA-Z0-9+/=_-]+`)
270 matches := re.FindAllString(text, -1)
271 if len(matches) > 0 {
272 if message.FileName == "" {
273 mimeType := dataURLMimeType(matches[0])
274 if mimeType != "" {
275 ext, err := getExtFromMimeType(mimeType, lang)
276 if err == nil {
277 message.FileName = fmt.Sprintf("%s.%s", message.Name, ext)
278 }
279 }
280 }
281
282 var store *Store
283 var err error
284 store, err = ResolveStoreByOwnerAndName(message.Owner, message.Store)
285 if err != nil {
286 return err
287 }
288 if store == nil {
289 store, err = GetDefaultStore(message.Owner)
290 if err != nil {
291 return err
292 }
293 }
294 if store == nil && message.Owner != "admin" {
295 store, err = GetDefaultStore("admin")
296 if err != nil {
297 return err
298 }
299 }
300 if store == nil {
301 return fmt.Errorf(i18n.Translate(lang, "account:The default store is not found"))
302 }
303
304 obj, err := store.GetImageProviderObj(lang)
305 if err != nil {
306 return err
307 }
308
309 for _, match := range matches {
310 var content []byte
311 content, err = parseBase64Image(match, lang)
312 if err != nil {
313 return err
314 }
315
316 filePath := fmt.Sprintf("%s/%s/%s/%s", message.Organization, message.User, message.Chat, message.FileName)
317
318 var fileUrl string
319 fileUrl, err = obj.PutObject(message.User, message.Chat, filePath, bytes.NewBuffer(content))
320 if err != nil {
321 return err
322 }
323

Callers 3

AddMessageMethod · 0.92
storeImageFunction · 0.92
storeInlineBase64ImagesFunction · 0.92

Calls 9

GetImageProviderObjMethod · 0.95
TranslateFunction · 0.92
dataURLMimeTypeFunction · 0.85
getExtFromMimeTypeFunction · 0.85
GetDefaultStoreFunction · 0.85
parseBase64ImageFunction · 0.85
getUrlFromPathFunction · 0.85
PutObjectMethod · 0.65

Tested by

no test coverage detected