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  }