MCPcopy Index your code
hub / github.com/TruthHun/BookStack / callback

Method callback

models/ebook.go:378–434  ·  view source on GitHub ↗
(identify, ebookPath string, errConvert error)

Source from the content-addressed store, hash-verified

376}
377
378func (m *Ebook) callback(identify, ebookPath string, errConvert error) {
379 var ebook Ebook
380 o := orm.NewOrm()
381
382 book, err := NewBook().FindByIdentify(identify)
383 if err != nil {
384 beego.Error(err)
385 m.deleteBook(book.BookId)
386 return
387 }
388
389 if errConvert != nil { // 电子书转换失败
390 beego.Error(errConvert)
391 ebook.Status = EBookStatusFailure
392 o.Update(&ebook)
393 return
394 }
395
396 ext := filepath.Ext(ebookPath)
397 if err = o.QueryTable(m).Filter("book_id", book.BookId).Filter("ext", ext).OrderBy("-id").One(&ebook); err != nil {
398 beego.Error(err)
399 return
400 }
401 if ebook.Id == 0 {
402 return
403 }
404
405 info, err := os.Stat(ebookPath)
406 if err != nil {
407 beego.Error(err)
408 ebook.Status = EBookStatusFailure
409 o.Update(&ebook)
410 return
411 }
412
413 newEbookPath := fmt.Sprintf("projects/%v/books/%v%v", book.Identify, time.Now().Unix(), ext)
414 switch utils.StoreType {
415 case utils.StoreOss:
416 //不要开启gzip压缩,否则会出现文件损坏的情况
417 if err := store.ModelStoreOss.MoveToOss(ebookPath, newEbookPath, true, false); err != nil {
418 beego.Error(err)
419 } else { // 设置下载头
420 store.ModelStoreOss.SetObjectMeta(newEbookPath, book.BookName+ext)
421 }
422 case utils.StoreLocal: //本地存储
423 newEbookPath = "uploads/" + newEbookPath
424 if err = store.ModelStoreLocal.MoveToStore(ebookPath, newEbookPath); err != nil {
425 beego.Error(err)
426 }
427 }
428
429 ebook.Size = info.Size()
430 ebook.Path = "/" + newEbookPath
431 ebook.Status = EBookStatusSuccess
432 o.Update(&ebook)
433 m.DeleteOldEbook(ebook.BookID, ebook.Ext, ebook.Id)
434}
435

Callers 1

layer.jsFile · 0.80

Calls 8

deleteBookMethod · 0.95
DeleteOldEbookMethod · 0.95
NewBookFunction · 0.85
MoveToOssMethod · 0.80
SetObjectMetaMethod · 0.80
MoveToStoreMethod · 0.80
FindByIdentifyMethod · 0.45
UpdateMethod · 0.45

Tested by

no test coverage detected