/*Canopy - The next generation of stoner streaming software
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.*/

/**
 * Object representing a piece of media
 */
class media{
    /**
     * Creates a new media object from scraped information
     * @param {String} title - Chosen title of media
     * @param {String} fileName - Original filename/title of media provided by source
     * @param {String} url - Original URL to file
     * @param {String} id - Video ID from source (IE: youtube watch code/archive.org file path)
     * @param {String} type - Original video source
     * @param {Number} duration - Length of media in seconds
     * @param {String} rawLink - URLs to raw file copies of media, not applicable to all sources, not saved to the DB
     */
    constructor(title, fileName, url, id, type, duration, rawLink){
        /**
         * Chosen title of media
         */
        this.title = title;

        /**
         * Original filename/title of media provided by source
         */
        this.fileName = fileName

        /**
         * Original URL to file
         */
        this.url = url;

        /**
         * Video ID from source (IE: youtube watch code/archive.org file path)
         */
        this.id = id;

        /**
         * Original video source
         */
        this.type = type;

        /**
         * Length of media in seconds
         */
        this.duration = duration;

        if(rawLink == null){
            /**
             * URL to raw file copy of media, not applicable to all sources
             */
            this.rawLink = {
                audio: [],
                video: [],
                combo: [['default',url]]
            };
        }else{
            this.rawLink = rawLink;
        }
    }
}

module.exports = media;