コード例 #1
0
ファイル: file_service.go プロジェクト: scharsey/nafue
func (self *FileService) AddFile(fileDisplay *display.FileDisplay) error {

	// generate random uuid
	s3u, err := uuid.NewV4()
	if err != nil {
		return err
	}
	shortUrl, err := uuid.NewV4()
	if err != nil {
		return err
	}

	// create put request on s3
	req, _ := GetS3Service().PutObjectRequest(&s3.PutObjectInput{
		Bucket:      aws.String(config.S3Bucket),
		Key:         aws.String(config.S3Key + "/" + s3u.String()),
		ContentType: aws.String("text/plain;charset=UTF-8"),
	})
	url, err := req.Presign(15 * time.Minute)
	if err != nil {
		log.Println("--ERROR---", err.Error())
		return err
	}

	// create domain model from display
	file := models.File{
		S3Path:    s3u.String(),
		ShortUrl:  shortUrl.String(),
		TTL:       (1 * 60 * 60 * 24), // 24h in seconds
		IV:        fileDisplay.IV,
		Salt:      fileDisplay.Salt,
		AData:     fileDisplay.AData,
		UploadUrl: url,
	}

	// add upload url to display
	fileDisplay.UploadUrl = file.UploadUrl
	fileDisplay.ShortUrl = file.ShortUrl

	// add file to db
	err = self.fileRepository.AddFile(&file)
	if err != nil {
		return err
	}

	return nil
}