2021-08-12 15:58:55 +05:30
type ThumbnailType = "default" | "hqdefault" | "mqdefault" | "sddefault" | "maxresdefault" | "ultrares" ;
export class Thumbnail {
id? : string ;
2021-08-13 13:16:34 +05:30
width? : number ;
height? : number ;
2021-08-12 15:58:55 +05:30
url? : string ;
constructor ( data : any ) {
if ( ! data ) throw new Error ( ` Cannot instantiate the ${ this . constructor . name } class without data! ` ) ;
this . _patch ( data ) ;
}
private _patch ( data : any ) {
if ( ! data ) data = { } ;
this . id = data . id || undefined ;
this . width = data . width || 0 ;
this . height = data . height || 0 ;
this . url = data . url || undefined ;
}
displayThumbnailURL ( thumbnailType : ThumbnailType = "maxresdefault" ) : string {
if ( ! [ "default" , "hqdefault" , "mqdefault" , "sddefault" , "maxresdefault" , "ultrares" ] . includes ( thumbnailType ) ) throw new Error ( ` Invalid thumbnail type " ${ thumbnailType } "! ` ) ;
if ( thumbnailType === "ultrares" ) return this . url as string ;
return ` https://i3.ytimg.com/vi/ ${ this . id } / ${ thumbnailType } .jpg ` ;
}
defaultThumbnailURL ( id : "0" | "1" | "2" | "3" | "4" ) : string {
if ( ! id ) id = "0" ;
if ( ! [ "0" , "1" , "2" , "3" , "4" ] . includes ( id ) ) throw new Error ( ` Invalid thumbnail id " ${ id } "! ` ) ;
return ` https://i3.ytimg.com/vi/ ${ this . id } / ${ id } .jpg ` ;
}
toString ( ) : string {
return this . url ? ` ${ this . url } ` : "" ;
}
toJSON() {
return {
id : this.id ,
width : this.width ,
height : this.height ,
url : this.url
} ;
}
}