github.com/Financial-Times/publish-availability-monitor@v1.12.0/content/video.go (about) 1 package content 2 3 import ( 4 "net/http" 5 6 "github.com/Financial-Times/go-logger/v2" 7 uuidutils "github.com/Financial-Times/uuid-utils-go" 8 ) 9 10 const videoType = "video" 11 12 type Video struct { 13 ID string `json:"id"` 14 Deleted bool `json:"deleted,omitempty"` 15 BinaryContent []byte `json:"-"` //This field is for internal application usage 16 } 17 18 func (video Video) Initialize(binaryContent []byte) Content { 19 video.BinaryContent = binaryContent 20 return video 21 } 22 23 func (video Video) Validate(externalValidationEndpoint, tid, username, password string, log *logger.UPPLogger) ValidationResponse { 24 uuid := video.GetUUID() 25 26 if uuidutils.ValidateUUID(uuid) != nil { 27 log.WithUUID(uuid).Warnf("Invalid video UUID") 28 return ValidationResponse{IsValid: false, IsMarkedDeleted: video.isMarkedDeleted()} 29 } 30 31 param := validationParam{ 32 binaryContent: video.BinaryContent, 33 validationURL: externalValidationEndpoint, 34 username: username, 35 password: password, 36 tid: tid, 37 uuid: uuid, 38 contentType: video.GetType(), 39 } 40 41 return doExternalValidation( 42 param, 43 video.isValid, 44 video.isMarkedDeleted, 45 log, 46 ) 47 } 48 49 func (video Video) isValid(status int) bool { 50 return status != http.StatusBadRequest 51 } 52 53 func (video Video) isMarkedDeleted(status ...int) bool { 54 return video.Deleted 55 } 56 57 func (video Video) GetType() string { 58 return videoType 59 } 60 61 func (video Video) GetUUID() string { 62 return video.ID 63 }