Skip to content
Snippets Groups Projects
logic.go 852 B
Newer Older
package quarantine

import (
	"io"

	"github.com/turt2live/matrix-media-repo/common"
	"github.com/turt2live/matrix-media-repo/common/rcontext"
	"github.com/turt2live/matrix-media-repo/pipelines/_steps/download"
)

func ReturnAppropriateThing(ctx rcontext.RequestContext, isDownload bool, recordOnly bool, width int, height int, startByte int64, endByte int64) (io.ReadCloser, error) {
	flag := ctx.Config.Quarantine.ReplaceDownloads
	if !isDownload {
		flag = ctx.Config.Quarantine.ReplaceThumbnails
	}
	if !flag || recordOnly {
		return nil, common.ErrMediaQuarantined
	} else {
		if qr, err := MakeThumbnail(ctx, width, height); err != nil {
			return nil, err
		} else {
			if r, err2 := download.CreateLimitedStream(ctx, qr, startByte, endByte); err2 != nil {
				return nil, err2
			} else {
				return r, common.ErrMediaQuarantined
			}
		}
	}
}