aboutsummaryrefslogtreecommitdiff
path: root/lib/csapi/content-repo.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csapi/content-repo.h')
-rw-r--r--lib/csapi/content-repo.h121
1 files changed, 106 insertions, 15 deletions
diff --git a/lib/csapi/content-repo.h b/lib/csapi/content-repo.h
index 6a871893..85d7cb49 100644
--- a/lib/csapi/content-repo.h
+++ b/lib/csapi/content-repo.h
@@ -13,14 +13,23 @@ namespace QMatrixClient
{
// Operations
+ /// Upload some content to the content repository.
class UploadContentJob : public BaseJob
{
public:
+ /*! Upload some content to the content repository.
+ * \param content
+ * \param filename
+ * The name of the file being uploaded
+ * \param contentType
+ * The content type of the file being uploaded
+ */
explicit UploadContentJob(QIODevice* content, const QString& filename = {}, const QString& contentType = {});
~UploadContentJob() override;
// Result properties
+ /// The MXC URI to the uploaded content.
const QString& contentUri() const;
protected:
@@ -31,14 +40,26 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Download content from the content repository.
class GetContentJob : public BaseJob
{
public:
+ /*! Download content from the content repository.
+ * \param serverName
+ * The server name from the ``mxc://`` URI (the authoritory component)
+ * \param mediaId
+ * The media ID from the ``mxc://`` URI (the path component)
+ * \param allowRemote
+ * Indicates to the server that it should not attempt to fetch the media if it is deemed
+ * remote. This is to prevent routing loops where the server contacts itself. Defaults to
+ * true if not provided.
+ */
explicit GetContentJob(const QString& serverName, const QString& mediaId, bool allowRemote = true);
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetContentJob. This function can be used when
- * a URL for GetContentJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetContentJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl, const QString& serverName, const QString& mediaId, bool allowRemote = true);
@@ -47,8 +68,11 @@ namespace QMatrixClient
// Result properties
+ /// The content type of the file that was previously uploaded.
const QString& contentType() const;
+ /// The name of the file that was previously uploaded, if set.
const QString& contentDisposition() const;
+ /// The content that was previously uploaded.
QIODevice* data() const;
protected:
@@ -59,14 +83,28 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Download content from the content repository as a given filename.
class GetContentOverrideNameJob : public BaseJob
{
public:
+ /*! Download content from the content repository as a given filename.
+ * \param serverName
+ * The server name from the ``mxc://`` URI (the authoritory component)
+ * \param mediaId
+ * The media ID from the ``mxc://`` URI (the path component)
+ * \param fileName
+ * The filename to give in the Content-Disposition
+ * \param allowRemote
+ * Indicates to the server that it should not attempt to fetch the media if it is deemed
+ * remote. This is to prevent routing loops where the server contacts itself. Defaults to
+ * true if not provided.
+ */
explicit GetContentOverrideNameJob(const QString& serverName, const QString& mediaId, const QString& fileName, bool allowRemote = true);
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetContentOverrideNameJob. This function can be used when
- * a URL for GetContentOverrideNameJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetContentOverrideNameJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl, const QString& serverName, const QString& mediaId, const QString& fileName, bool allowRemote = true);
@@ -75,8 +113,11 @@ namespace QMatrixClient
// Result properties
+ /// The content type of the file that was previously uploaded.
const QString& contentType() const;
+ /// The name of file given in the request
const QString& contentDisposition() const;
+ /// The content that was previously uploaded.
QIODevice* data() const;
protected:
@@ -87,14 +128,34 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Download a thumbnail of the content from the content repository.
class GetContentThumbnailJob : public BaseJob
{
public:
+ /*! Download a thumbnail of the content from the content repository.
+ * \param serverName
+ * The server name from the ``mxc://`` URI (the authoritory component)
+ * \param mediaId
+ * The media ID from the ``mxc://`` URI (the path component)
+ * \param width
+ * The *desired* width of the thumbnail. The actual thumbnail may not
+ * match the size specified.
+ * \param height
+ * The *desired* height of the thumbnail. The actual thumbnail may not
+ * match the size specified.
+ * \param method
+ * The desired resizing method.
+ * \param allowRemote
+ * Indicates to the server that it should not attempt to fetch the media if it is deemed
+ * remote. This is to prevent routing loops where the server contacts itself. Defaults to
+ * true if not provided.
+ */
explicit GetContentThumbnailJob(const QString& serverName, const QString& mediaId, int width, int height, const QString& method = {}, bool allowRemote = true);
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetContentThumbnailJob. This function can be used when
- * a URL for GetContentThumbnailJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetContentThumbnailJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl, const QString& serverName, const QString& mediaId, int width, int height, const QString& method = {}, bool allowRemote = true);
@@ -103,7 +164,9 @@ namespace QMatrixClient
// Result properties
+ /// The content type of the thumbnail.
const QString& contentType() const;
+ /// A thumbnail of the requested content.
QIODevice* data() const;
protected:
@@ -114,14 +177,24 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Get information about a URL for a client
class GetUrlPreviewJob : public BaseJob
{
public:
+ /*! Get information about a URL for a client
+ * \param url
+ * The URL to get a preview of
+ * \param ts
+ * The preferred point in time to return a preview for. The server may
+ * return a newer version if it does not have the requested version
+ * available.
+ */
explicit GetUrlPreviewJob(const QString& url, Omittable<qint64> ts = none);
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetUrlPreviewJob. This function can be used when
- * a URL for GetUrlPreviewJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetUrlPreviewJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl, const QString& url, Omittable<qint64> ts = none);
@@ -130,7 +203,9 @@ namespace QMatrixClient
// Result properties
+ /// The byte-size of the image. Omitted if there is no image attached.
Omittable<qint64> matrixImageSize() const;
+ /// An MXC URI to the image. Omitted if there is no image.
const QString& ogImage() const;
protected:
@@ -141,14 +216,27 @@ namespace QMatrixClient
QScopedPointer<Private> d;
};
+ /// Get the configuration for the content repository.
+ ///
+ /// This endpoint allows clients to retrieve the configuration of the content
+ /// repository, such as upload limitations.
+ /// Clients SHOULD use this as a guide when using content repository endpoints.
+ /// All values are intentionally left optional. Clients SHOULD follow
+ /// the advice given in the field description when the field is not available.
+ ///
+ /// **NOTE:** Both clients and server administrators should be aware that proxies
+ /// between the client and the server may affect the apparent behaviour of content
+ /// repository APIs, for example, proxies may enforce a lower upload size limit
+ /// than is advertised by the server on this endpoint.
class GetConfigJob : public BaseJob
{
public:
explicit GetConfigJob();
- /** Construct a URL out of baseUrl and usual parameters passed to
- * GetConfigJob. This function can be used when
- * a URL for GetConfigJob is necessary but the job
+ /*! Construct a URL without creating a full-fledged job object
+ *
+ * This function can be used when a URL for
+ * GetConfigJob is necessary but the job
* itself isn't.
*/
static QUrl makeRequestUrl(QUrl baseUrl);
@@ -157,6 +245,9 @@ namespace QMatrixClient
// Result properties
+ /// The maximum size an upload can be in bytes.
+ /// Clients SHOULD use this as a guide when uploading content.
+ /// If not listed or null, the size limit should be treated as unknown.
Omittable<double> uploadSize() const;
protected: