src/content-repo.js
function(baseUrl, mxc, width, height,
                               resizeMethod, allowDirectLinks) {
        if (typeof mxc !== "string" || !mxc) {
            return '';
        }
        if (mxc.indexOf("mxc://") !== 0) {
            if (allowDirectLinks) {
                return mxc;
            } else {
                return '';
            }
        }
        let serverAndMediaId = mxc.slice(6); // strips mxc://
        let prefix = "/_matrix/media/v1/download/";
        const params = {};

        if (width) {
            params.width = width;
        }
        if (height) {
            params.height = height;
        }
        if (resizeMethod) {
            params.method = resizeMethod;
        }
        if (utils.keys(params).length > 0) {
            // these are thumbnailing params so they probably want the
            // thumbnailing API...
            prefix = "/_matrix/media/v1/thumbnail/";
        }

        const fragmentOffset = serverAndMediaId.indexOf("#");
        let fragment = "";
        if (fragmentOffset >= 0) {
            fragment = serverAndMediaId.substr(fragmentOffset);
            serverAndMediaId = serverAndMediaId.substr(0, fragmentOffset);
        }
        return baseUrl + prefix + serverAndMediaId +
            (utils.keys(params).length === 0 ? "" :
            ("?" + utils.encodeParams(params))) + fragment;
    }
function(baseUrl, mxc, width, height,
                               resizeMethod, allowDirectLinks) {
        if (typeof mxc !== "string" || !mxc) {
            return '';
        }
        if (mxc.indexOf("mxc://") !== 0) {
            if (allowDirectLinks) {
                return mxc;
            } else {
                return '';
            }
        }
        let serverAndMediaId = mxc.slice(6); // strips mxc://
        let prefix = "/_matrix/media/v1/download/";
        const params = {};

        if (width) {
            params.width = width;
        }
        if (height) {
            params.height = height;
        }
        if (resizeMethod) {
            params.method = resizeMethod;
        }
        if (utils.keys(params).length > 0) {
            // these are thumbnailing params so they probably want the
            // thumbnailing API...
            prefix = "/_matrix/media/v1/thumbnail/";
        }

        const fragmentOffset = serverAndMediaId.indexOf("#");
        let fragment = "";
        if (fragmentOffset >= 0) {
            fragment = serverAndMediaId.substr(fragmentOffset);
            serverAndMediaId = serverAndMediaId.substr(0, fragmentOffset);
        }
        return baseUrl + prefix + serverAndMediaId +
            (utils.keys(params).length === 0 ? "" :
            ("?" + utils.encodeParams(params))) + fragment;
    }
function ( baseUrl , mxc , width , height , resizeMethod , allowDirectLinks ) { if ( typeof mxc !== "string" || ! mxc ) { return '' ; } if ( mxc . indexOf ( "mxc://" ) !== 0 ) { if ( allowDirectLinks ) { return mxc ; } else { return '' ; } } let serverAndMediaId = mxc . slice ( 6 ) ; // strips mxc:// let prefix = "/_matrix/media/v1/download/" ; const params = { } ; if ( width ) { params . width = width ; } if ( height ) { params . height = height ; } if ( resizeMethod ) { params . method = resizeMethod ; } if ( utils . keys ( params ) . length > 0 ) { // these are thumbnailing params so they probably want the // thumbnailing API... prefix = "/_matrix/media/v1/thumbnail/" ; } const fragmentOffset = serverAndMediaId . indexOf ( "#" ) ; let fragment = "" ; if ( fragmentOffset >= 0 ) { fragment = serverAndMediaId . substr ( fragmentOffset ) ; serverAndMediaId = serverAndMediaId . substr ( 0 , fragmentOffset ) ; } return baseUrl + prefix + serverAndMediaId + ( utils . keys ( params ) . length === 0 ? "" : ( "?" + utils . encodeParams ( params ) ) ) + fragment ; }
Get the HTTP URL for an MXC URI.
@param {string} baseUrl The base homeserver url which has a content repo.
@param {string} mxc The mxc:// URI.
@param {Number} width The desired width of the thumbnail.
@param {Number} height The desired height of the thumbnail.
@param {string} resizeMethod The thumbnail resize method to use, either
"crop" or "scale".
@param {Boolean} allowDirectLinks If true, return any non-mxc URLs
directly. Fetching such URLs will leak information about the user to
anyone they share a room with. If false, will return the emptry string
for such URLs.
@return {string} The complete URL to the content.
Get the HTTP URL for an MXC URI .