You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-12-01 04:43:29 +03:00
Merge pull request #659 from matrix-org/t3chguy/media_fixes
fix auth header and filename=undefined
This commit is contained in:
@@ -1071,6 +1071,10 @@ MatrixBaseApis.prototype.searchUserDirectory = function(opts) {
|
|||||||
* @param {string=} opts.name Name to give the file on the server. Defaults
|
* @param {string=} opts.name Name to give the file on the server. Defaults
|
||||||
* to <tt>file.name</tt>.
|
* to <tt>file.name</tt>.
|
||||||
*
|
*
|
||||||
|
* @param {boolean=} opts.includeFilename if false will not send the filename,
|
||||||
|
* e.g for encrypted file uploads where filename leaks are undesirable.
|
||||||
|
* Defaults to true.
|
||||||
|
*
|
||||||
* @param {string=} opts.type Content-type for the upload. Defaults to
|
* @param {string=} opts.type Content-type for the upload. Defaults to
|
||||||
* <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.
|
* <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -118,6 +118,10 @@ module.exports.MatrixHttpApi.prototype = {
|
|||||||
* @param {string=} opts.name Name to give the file on the server. Defaults
|
* @param {string=} opts.name Name to give the file on the server. Defaults
|
||||||
* to <tt>file.name</tt>.
|
* to <tt>file.name</tt>.
|
||||||
*
|
*
|
||||||
|
* @param {boolean=} opts.includeFilename if false will not send the filename,
|
||||||
|
* e.g for encrypted file uploads where filename leaks are undesirable.
|
||||||
|
* Defaults to true.
|
||||||
|
*
|
||||||
* @param {string=} opts.type Content-type for the upload. Defaults to
|
* @param {string=} opts.type Content-type for the upload. Defaults to
|
||||||
* <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.
|
* <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.
|
||||||
*
|
*
|
||||||
@@ -152,6 +156,9 @@ module.exports.MatrixHttpApi.prototype = {
|
|||||||
opts = {};
|
opts = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// default opts.includeFilename to true (ignoring falsey values)
|
||||||
|
const includeFilename = opts.includeFilename !== false;
|
||||||
|
|
||||||
// if the file doesn't have a mime type, use a default since
|
// if the file doesn't have a mime type, use a default since
|
||||||
// the HS errors if we don't supply one.
|
// the HS errors if we don't supply one.
|
||||||
const contentType = opts.type || file.type || 'application/octet-stream';
|
const contentType = opts.type || file.type || 'application/octet-stream';
|
||||||
@@ -272,10 +279,26 @@ module.exports.MatrixHttpApi.prototype = {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
let url = this.opts.baseUrl + "/_matrix/media/v1/upload";
|
let url = this.opts.baseUrl + "/_matrix/media/v1/upload";
|
||||||
url += "?access_token=" + encodeURIComponent(this.opts.accessToken);
|
|
||||||
url += "&filename=" + encodeURIComponent(fileName);
|
const queryArgs = [];
|
||||||
|
|
||||||
|
if (includeFilename && fileName) {
|
||||||
|
queryArgs.push("filename=" + encodeURIComponent(fileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.useAuthorizationHeader) {
|
||||||
|
queryArgs.push("access_token="
|
||||||
|
+ encodeURIComponent(this.opts.accessToken));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (queryArgs.length > 0) {
|
||||||
|
url += "?" + queryArgs.join("&");
|
||||||
|
}
|
||||||
|
|
||||||
xhr.open("POST", url);
|
xhr.open("POST", url);
|
||||||
|
if (this.useAuthorizationHeader) {
|
||||||
|
xhr.setRequestHeader("Authorization", "Bearer " + this.opts.accessToken);
|
||||||
|
}
|
||||||
xhr.setRequestHeader("Content-Type", contentType);
|
xhr.setRequestHeader("Content-Type", contentType);
|
||||||
xhr.send(body);
|
xhr.send(body);
|
||||||
promise = defer.promise;
|
promise = defer.promise;
|
||||||
@@ -283,9 +306,11 @@ module.exports.MatrixHttpApi.prototype = {
|
|||||||
// dirty hack (as per _request) to allow the upload to be cancelled.
|
// dirty hack (as per _request) to allow the upload to be cancelled.
|
||||||
promise.abort = xhr.abort.bind(xhr);
|
promise.abort = xhr.abort.bind(xhr);
|
||||||
} else {
|
} else {
|
||||||
const queryParams = {
|
const queryParams = {};
|
||||||
filename: fileName,
|
|
||||||
};
|
if (includeFilename && fileName) {
|
||||||
|
queryParams.filename = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
promise = this.authedRequest(
|
promise = this.authedRequest(
|
||||||
opts.callback, "POST", "/upload", queryParams, body, {
|
opts.callback, "POST", "/upload", queryParams, body, {
|
||||||
|
|||||||
Reference in New Issue
Block a user