1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2025-09-04 01:42:44 +00:00

openapigen: support for 204 No Content endpoints

This commit is contained in:
Chris Josten 2023-01-02 20:24:40 +01:00
parent b257fe60aa
commit 77cb5d5957
66 changed files with 6169 additions and 84 deletions

View file

@ -61,6 +61,34 @@ protected:
QByteArray body(const GetKeysParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Create a new api key.
*/
class CreateKeyLoader : public Jellyfin::Support::HttpLoader<void, CreateKeyParams> {
public:
explicit CreateKeyLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CreateKeyParams& parameters) const override;
QUrlQuery query(const CreateKeyParams& parameters) const override;
QByteArray body(const CreateKeyParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Remove an api key.
*/
class RevokeKeyLoader : public Jellyfin::Support::HttpLoader<void, RevokeKeyParams> {
public:
explicit RevokeKeyLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RevokeKeyParams& parameters) const override;
QUrlQuery query(const RevokeKeyParams& parameters) const override;
QByteArray body(const RevokeKeyParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -65,7 +65,7 @@ protected:
* @brief Gets branding css.
*/
class GetBrandingCssLoader : public Jellyfin::Support::HttpLoader<QString, GetBrandingCssParams> {
class GetBrandingCssLoader : public Jellyfin::Support::HttpLoader<void, GetBrandingCssParams> {
public:
explicit GetBrandingCssLoader(ApiClient *apiClient = nullptr);
@ -79,7 +79,7 @@ protected:
* @brief Gets branding css.
*/
class GetBrandingCss_2Loader : public Jellyfin::Support::HttpLoader<QString, GetBrandingCss_2Params> {
class GetBrandingCss_2Loader : public Jellyfin::Support::HttpLoader<void, GetBrandingCss_2Params> {
public:
explicit GetBrandingCss_2Loader(ApiClient *apiClient = nullptr);

View file

@ -61,6 +61,34 @@ protected:
QByteArray body(const CreateCollectionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Adds items to a collection.
*/
class AddToCollectionLoader : public Jellyfin::Support::HttpLoader<void, AddToCollectionParams> {
public:
explicit AddToCollectionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AddToCollectionParams& parameters) const override;
QUrlQuery query(const AddToCollectionParams& parameters) const override;
QByteArray body(const AddToCollectionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Removes items from a collection.
*/
class RemoveFromCollectionLoader : public Jellyfin::Support::HttpLoader<void, RemoveFromCollectionParams> {
public:
explicit RemoveFromCollectionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RemoveFromCollectionParams& parameters) const override;
QUrlQuery query(const RemoveFromCollectionParams& parameters) const override;
QByteArray body(const RemoveFromCollectionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -62,6 +62,20 @@ protected:
QByteArray body(const GetConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates application configuration.
*/
class UpdateConfigurationLoader : public Jellyfin::Support::HttpLoader<void, UpdateConfigurationParams> {
public:
explicit UpdateConfigurationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateConfigurationParams& parameters) const override;
QUrlQuery query(const UpdateConfigurationParams& parameters) const override;
QByteArray body(const UpdateConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a named configuration.
*/
@ -76,6 +90,20 @@ protected:
QByteArray body(const GetNamedConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates named configuration.
*/
class UpdateNamedConfigurationLoader : public Jellyfin::Support::HttpLoader<void, UpdateNamedConfigurationParams> {
public:
explicit UpdateNamedConfigurationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateNamedConfigurationParams& parameters) const override;
QUrlQuery query(const UpdateNamedConfigurationParams& parameters) const override;
QByteArray body(const UpdateNamedConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a default MetadataOptions object.
*/
@ -90,6 +118,20 @@ protected:
QByteArray body(const GetDefaultMetadataOptionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates the path to the media encoder.
*/
class UpdateMediaEncoderPathLoader : public Jellyfin::Support::HttpLoader<void, UpdateMediaEncoderPathParams> {
public:
explicit UpdateMediaEncoderPathLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateMediaEncoderPathParams& parameters) const override;
QUrlQuery query(const UpdateMediaEncoderPathParams& parameters) const override;
QByteArray body(const UpdateMediaEncoderPathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -63,6 +63,20 @@ protected:
QByteArray body(const GetDevicesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes a device.
*/
class DeleteDeviceLoader : public Jellyfin::Support::HttpLoader<void, DeleteDeviceParams> {
public:
explicit DeleteDeviceLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteDeviceParams& parameters) const override;
QUrlQuery query(const DeleteDeviceParams& parameters) const override;
QByteArray body(const DeleteDeviceParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Get info for a device.
*/
@ -91,6 +105,20 @@ protected:
QByteArray body(const GetDeviceOptionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Update device options.
*/
class UpdateDeviceOptionsLoader : public Jellyfin::Support::HttpLoader<void, UpdateDeviceOptionsParams> {
public:
explicit UpdateDeviceOptionsLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateDeviceOptionsParams& parameters) const override;
QUrlQuery query(const UpdateDeviceOptionsParams& parameters) const override;
QByteArray body(const UpdateDeviceOptionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -61,6 +61,20 @@ protected:
QByteArray body(const GetDisplayPreferencesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Update Display Preferences.
*/
class UpdateDisplayPreferencesLoader : public Jellyfin::Support::HttpLoader<void, UpdateDisplayPreferencesParams> {
public:
explicit UpdateDisplayPreferencesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateDisplayPreferencesParams& parameters) const override;
QUrlQuery query(const UpdateDisplayPreferencesParams& parameters) const override;
QByteArray body(const UpdateDisplayPreferencesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -63,6 +63,20 @@ protected:
QByteArray body(const GetProfileInfosParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Creates a profile.
*/
class CreateProfileLoader : public Jellyfin::Support::HttpLoader<void, CreateProfileParams> {
public:
explicit CreateProfileLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CreateProfileParams& parameters) const override;
QUrlQuery query(const CreateProfileParams& parameters) const override;
QByteArray body(const CreateProfileParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a single profile.
*/
@ -77,6 +91,34 @@ protected:
QByteArray body(const GetProfileParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes a profile.
*/
class DeleteProfileLoader : public Jellyfin::Support::HttpLoader<void, DeleteProfileParams> {
public:
explicit DeleteProfileLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteProfileParams& parameters) const override;
QUrlQuery query(const DeleteProfileParams& parameters) const override;
QByteArray body(const DeleteProfileParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a profile.
*/
class UpdateProfileLoader : public Jellyfin::Support::HttpLoader<void, UpdateProfileParams> {
public:
explicit UpdateProfileLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateProfileParams& parameters) const override;
QUrlQuery query(const UpdateProfileParams& parameters) const override;
QByteArray body(const UpdateProfileParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the default profile.
*/

View file

@ -120,6 +120,20 @@ protected:
QByteArray body(const GetParentPathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Validates path.
*/
class ValidatePathLoader : public Jellyfin::Support::HttpLoader<void, ValidatePathParams> {
public:
explicit ValidatePathLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ValidatePathParams& parameters) const override;
QUrlQuery query(const ValidatePathParams& parameters) const override;
QByteArray body(const ValidatePathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -46,6 +46,20 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Stops an active encoding.
*/
class StopEncodingProcessLoader : public Jellyfin::Support::HttpLoader<void, StopEncodingProcessParams> {
public:
explicit StopEncodingProcessLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const StopEncodingProcessParams& parameters) const override;
QUrlQuery query(const StopEncodingProcessParams& parameters) const override;
QByteArray body(const StopEncodingProcessParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -61,6 +61,132 @@ protected:
QByteArray body(const GetItemImageInfosParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Delete an item's image.
*/
class DeleteItemImageLoader : public Jellyfin::Support::HttpLoader<void, DeleteItemImageParams> {
public:
explicit DeleteItemImageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteItemImageParams& parameters) const override;
QUrlQuery query(const DeleteItemImageParams& parameters) const override;
QByteArray body(const DeleteItemImageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Set item image.
*/
class SetItemImageLoader : public Jellyfin::Support::HttpLoader<void, SetItemImageParams> {
public:
explicit SetItemImageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetItemImageParams& parameters) const override;
QUrlQuery query(const SetItemImageParams& parameters) const override;
QByteArray body(const SetItemImageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Delete an item's image.
*/
class DeleteItemImageByIndexLoader : public Jellyfin::Support::HttpLoader<void, DeleteItemImageByIndexParams> {
public:
explicit DeleteItemImageByIndexLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteItemImageByIndexParams& parameters) const override;
QUrlQuery query(const DeleteItemImageByIndexParams& parameters) const override;
QByteArray body(const DeleteItemImageByIndexParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Set item image.
*/
class SetItemImageByIndexLoader : public Jellyfin::Support::HttpLoader<void, SetItemImageByIndexParams> {
public:
explicit SetItemImageByIndexLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetItemImageByIndexParams& parameters) const override;
QUrlQuery query(const SetItemImageByIndexParams& parameters) const override;
QByteArray body(const SetItemImageByIndexParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates the index for an item image.
*/
class UpdateItemImageIndexLoader : public Jellyfin::Support::HttpLoader<void, UpdateItemImageIndexParams> {
public:
explicit UpdateItemImageIndexLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateItemImageIndexParams& parameters) const override;
QUrlQuery query(const UpdateItemImageIndexParams& parameters) const override;
QByteArray body(const UpdateItemImageIndexParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets the user image.
*/
class PostUserImageLoader : public Jellyfin::Support::HttpLoader<void, PostUserImageParams> {
public:
explicit PostUserImageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostUserImageParams& parameters) const override;
QUrlQuery query(const PostUserImageParams& parameters) const override;
QByteArray body(const PostUserImageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Delete the user's image.
*/
class DeleteUserImageLoader : public Jellyfin::Support::HttpLoader<void, DeleteUserImageParams> {
public:
explicit DeleteUserImageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteUserImageParams& parameters) const override;
QUrlQuery query(const DeleteUserImageParams& parameters) const override;
QByteArray body(const DeleteUserImageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets the user image.
*/
class PostUserImageByIndexLoader : public Jellyfin::Support::HttpLoader<void, PostUserImageByIndexParams> {
public:
explicit PostUserImageByIndexLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostUserImageByIndexParams& parameters) const override;
QUrlQuery query(const PostUserImageByIndexParams& parameters) const override;
QByteArray body(const PostUserImageByIndexParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Delete the user's image.
*/
class DeleteUserImageByIndexLoader : public Jellyfin::Support::HttpLoader<void, DeleteUserImageByIndexParams> {
public:
explicit DeleteUserImageByIndexLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteUserImageByIndexParams& parameters) const override;
QUrlQuery query(const DeleteUserImageByIndexParams& parameters) const override;
QByteArray body(const DeleteUserImageByIndexParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -70,6 +70,20 @@ protected:
QByteArray body(const GetExternalIdInfosParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Applies search criteria to an item and refreshes metadata.
*/
class ApplySearchCriteriaLoader : public Jellyfin::Support::HttpLoader<void, ApplySearchCriteriaParams> {
public:
explicit ApplySearchCriteriaLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ApplySearchCriteriaParams& parameters) const override;
QUrlQuery query(const ApplySearchCriteriaParams& parameters) const override;
QByteArray body(const ApplySearchCriteriaParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Get book remote search.
*/

View file

@ -46,6 +46,20 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Refreshes metadata for an item.
*/
class PostLoader : public Jellyfin::Support::HttpLoader<void, PostParams> {
public:
explicit PostLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostParams& parameters) const override;
QUrlQuery query(const PostParams& parameters) const override;
QByteArray body(const PostParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -47,6 +47,34 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Updates an item.
*/
class UpdateItemLoader : public Jellyfin::Support::HttpLoader<void, UpdateItemParams> {
public:
explicit UpdateItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateItemParams& parameters) const override;
QUrlQuery query(const UpdateItemParams& parameters) const override;
QByteArray body(const UpdateItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates an item's content type.
*/
class UpdateItemContentTypeLoader : public Jellyfin::Support::HttpLoader<void, UpdateItemContentTypeParams> {
public:
explicit UpdateItemContentTypeLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateItemContentTypeParams& parameters) const override;
QUrlQuery query(const UpdateItemContentTypeParams& parameters) const override;
QByteArray body(const UpdateItemContentTypeParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets metadata editor info for an item.
*/

View file

@ -61,6 +61,34 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Deletes items from the library and filesystem.
*/
class DeleteItemsLoader : public Jellyfin::Support::HttpLoader<void, DeleteItemsParams> {
public:
explicit DeleteItemsLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteItemsParams& parameters) const override;
QUrlQuery query(const DeleteItemsParams& parameters) const override;
QByteArray body(const DeleteItemsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes an item from the library and filesystem.
*/
class DeleteItemLoader : public Jellyfin::Support::HttpLoader<void, DeleteItemParams> {
public:
explicit DeleteItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteItemParams& parameters) const override;
QUrlQuery query(const DeleteItemParams& parameters) const override;
QByteArray body(const DeleteItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets similar items.
*/
@ -201,6 +229,20 @@ protected:
QByteArray body(const GetLibraryOptionsInfoParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that new movies have been added by an external source.
*/
class PostUpdatedMediaLoader : public Jellyfin::Support::HttpLoader<void, PostUpdatedMediaParams> {
public:
explicit PostUpdatedMediaLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostUpdatedMediaParams& parameters) const override;
QUrlQuery query(const PostUpdatedMediaParams& parameters) const override;
QByteArray body(const PostUpdatedMediaParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets all user media folders.
*/
@ -215,6 +257,34 @@ protected:
QByteArray body(const GetMediaFoldersParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that new movies have been added by an external source.
*/
class PostAddedMoviesLoader : public Jellyfin::Support::HttpLoader<void, PostAddedMoviesParams> {
public:
explicit PostAddedMoviesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostAddedMoviesParams& parameters) const override;
QUrlQuery query(const PostAddedMoviesParams& parameters) const override;
QByteArray body(const PostAddedMoviesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that new movies have been added by an external source.
*/
class PostUpdatedMoviesLoader : public Jellyfin::Support::HttpLoader<void, PostUpdatedMoviesParams> {
public:
explicit PostUpdatedMoviesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostUpdatedMoviesParams& parameters) const override;
QUrlQuery query(const PostUpdatedMoviesParams& parameters) const override;
QByteArray body(const PostUpdatedMoviesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a list of physical paths from virtual folders.
*/
@ -229,6 +299,48 @@ protected:
QByteArray body(const GetPhysicalPathsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Starts a library scan.
*/
class RefreshLibraryLoader : public Jellyfin::Support::HttpLoader<void, RefreshLibraryParams> {
public:
explicit RefreshLibraryLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RefreshLibraryParams& parameters) const override;
QUrlQuery query(const RefreshLibraryParams& parameters) const override;
QByteArray body(const RefreshLibraryParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that new episodes of a series have been added by an external source.
*/
class PostAddedSeriesLoader : public Jellyfin::Support::HttpLoader<void, PostAddedSeriesParams> {
public:
explicit PostAddedSeriesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostAddedSeriesParams& parameters) const override;
QUrlQuery query(const PostAddedSeriesParams& parameters) const override;
QByteArray body(const PostAddedSeriesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that new episodes of a series have been added by an external source.
*/
class PostUpdatedSeriesLoader : public Jellyfin::Support::HttpLoader<void, PostUpdatedSeriesParams> {
public:
explicit PostUpdatedSeriesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostUpdatedSeriesParams& parameters) const override;
QUrlQuery query(const PostUpdatedSeriesParams& parameters) const override;
QByteArray body(const PostUpdatedSeriesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets similar items.
*/

View file

@ -61,6 +61,104 @@ protected:
QByteArray body(const GetVirtualFoldersParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Adds a virtual folder.
*/
class AddVirtualFolderLoader : public Jellyfin::Support::HttpLoader<void, AddVirtualFolderParams> {
public:
explicit AddVirtualFolderLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AddVirtualFolderParams& parameters) const override;
QUrlQuery query(const AddVirtualFolderParams& parameters) const override;
QByteArray body(const AddVirtualFolderParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Removes a virtual folder.
*/
class RemoveVirtualFolderLoader : public Jellyfin::Support::HttpLoader<void, RemoveVirtualFolderParams> {
public:
explicit RemoveVirtualFolderLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RemoveVirtualFolderParams& parameters) const override;
QUrlQuery query(const RemoveVirtualFolderParams& parameters) const override;
QByteArray body(const RemoveVirtualFolderParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Update library options.
*/
class UpdateLibraryOptionsLoader : public Jellyfin::Support::HttpLoader<void, UpdateLibraryOptionsParams> {
public:
explicit UpdateLibraryOptionsLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateLibraryOptionsParams& parameters) const override;
QUrlQuery query(const UpdateLibraryOptionsParams& parameters) const override;
QByteArray body(const UpdateLibraryOptionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Renames a virtual folder.
*/
class RenameVirtualFolderLoader : public Jellyfin::Support::HttpLoader<void, RenameVirtualFolderParams> {
public:
explicit RenameVirtualFolderLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RenameVirtualFolderParams& parameters) const override;
QUrlQuery query(const RenameVirtualFolderParams& parameters) const override;
QByteArray body(const RenameVirtualFolderParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Add a media path to a library.
*/
class AddMediaPathLoader : public Jellyfin::Support::HttpLoader<void, AddMediaPathParams> {
public:
explicit AddMediaPathLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AddMediaPathParams& parameters) const override;
QUrlQuery query(const AddMediaPathParams& parameters) const override;
QByteArray body(const AddMediaPathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Remove a media path.
*/
class RemoveMediaPathLoader : public Jellyfin::Support::HttpLoader<void, RemoveMediaPathParams> {
public:
explicit RemoveMediaPathLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RemoveMediaPathParams& parameters) const override;
QUrlQuery query(const RemoveMediaPathParams& parameters) const override;
QByteArray body(const RemoveMediaPathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a media path.
*/
class UpdateMediaPathLoader : public Jellyfin::Support::HttpLoader<void, UpdateMediaPathParams> {
public:
explicit UpdateMediaPathLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateMediaPathParams& parameters) const override;
QUrlQuery query(const UpdateMediaPathParams& parameters) const override;
QByteArray body(const UpdateMediaPathParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -171,6 +171,20 @@ protected:
QByteArray body(const AddListingProviderParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Delete listing provider.
*/
class DeleteListingProviderLoader : public Jellyfin::Support::HttpLoader<void, DeleteListingProviderParams> {
public:
explicit DeleteListingProviderLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteListingProviderParams& parameters) const override;
QUrlQuery query(const DeleteListingProviderParams& parameters) const override;
QByteArray body(const DeleteListingProviderParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets default listings provider info.
*/
@ -297,6 +311,20 @@ protected:
QByteArray body(const GetRecordingParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes a live tv recording.
*/
class DeleteRecordingLoader : public Jellyfin::Support::HttpLoader<void, DeleteRecordingParams> {
public:
explicit DeleteRecordingLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteRecordingParams& parameters) const override;
QUrlQuery query(const DeleteRecordingParams& parameters) const override;
QByteArray body(const DeleteRecordingParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets recording folders.
*/
@ -353,6 +381,20 @@ protected:
QByteArray body(const GetSeriesTimersParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Creates a live tv series timer.
*/
class CreateSeriesTimerLoader : public Jellyfin::Support::HttpLoader<void, CreateSeriesTimerParams> {
public:
explicit CreateSeriesTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CreateSeriesTimerParams& parameters) const override;
QUrlQuery query(const CreateSeriesTimerParams& parameters) const override;
QByteArray body(const CreateSeriesTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a live tv series timer.
*/
@ -367,6 +409,34 @@ protected:
QByteArray body(const GetSeriesTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Cancels a live tv series timer.
*/
class CancelSeriesTimerLoader : public Jellyfin::Support::HttpLoader<void, CancelSeriesTimerParams> {
public:
explicit CancelSeriesTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CancelSeriesTimerParams& parameters) const override;
QUrlQuery query(const CancelSeriesTimerParams& parameters) const override;
QByteArray body(const CancelSeriesTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a live tv series timer.
*/
class UpdateSeriesTimerLoader : public Jellyfin::Support::HttpLoader<void, UpdateSeriesTimerParams> {
public:
explicit UpdateSeriesTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateSeriesTimerParams& parameters) const override;
QUrlQuery query(const UpdateSeriesTimerParams& parameters) const override;
QByteArray body(const UpdateSeriesTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the live tv timers.
*/
@ -381,6 +451,20 @@ protected:
QByteArray body(const GetTimersParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Creates a live tv timer.
*/
class CreateTimerLoader : public Jellyfin::Support::HttpLoader<void, CreateTimerParams> {
public:
explicit CreateTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CreateTimerParams& parameters) const override;
QUrlQuery query(const CreateTimerParams& parameters) const override;
QByteArray body(const CreateTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a timer.
*/
@ -395,6 +479,34 @@ protected:
QByteArray body(const GetTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Cancels a live tv timer.
*/
class CancelTimerLoader : public Jellyfin::Support::HttpLoader<void, CancelTimerParams> {
public:
explicit CancelTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CancelTimerParams& parameters) const override;
QUrlQuery query(const CancelTimerParams& parameters) const override;
QByteArray body(const CancelTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a live tv timer.
*/
class UpdateTimerLoader : public Jellyfin::Support::HttpLoader<void, UpdateTimerParams> {
public:
explicit UpdateTimerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateTimerParams& parameters) const override;
QUrlQuery query(const UpdateTimerParams& parameters) const override;
QByteArray body(const UpdateTimerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the default values for a new timer.
*/
@ -423,6 +535,20 @@ protected:
QByteArray body(const AddTunerHostParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes a tuner host.
*/
class DeleteTunerHostLoader : public Jellyfin::Support::HttpLoader<void, DeleteTunerHostParams> {
public:
explicit DeleteTunerHostLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteTunerHostParams& parameters) const override;
QUrlQuery query(const DeleteTunerHostParams& parameters) const override;
QByteArray body(const DeleteTunerHostParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Get tuner host types.
*/
@ -437,6 +563,20 @@ protected:
QByteArray body(const GetTunerHostTypesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Resets a tv tuner.
*/
class ResetTunerLoader : public Jellyfin::Support::HttpLoader<void, ResetTunerParams> {
public:
explicit ResetTunerLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ResetTunerParams& parameters) const override;
QUrlQuery query(const ResetTunerParams& parameters) const override;
QByteArray body(const ResetTunerParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Discover tuners.
*/

View file

@ -77,6 +77,20 @@ protected:
QByteArray body(const GetPostedPlaybackInfoParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Closes a media source.
*/
class CloseLiveStreamLoader : public Jellyfin::Support::HttpLoader<void, CloseLiveStreamParams> {
public:
explicit CloseLiveStreamLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CloseLiveStreamParams& parameters) const override;
QUrlQuery query(const CloseLiveStreamParams& parameters) const override;
QByteArray body(const CloseLiveStreamParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Opens a media source.
*/

View file

@ -64,6 +64,20 @@ protected:
QByteArray body(const GetNotificationsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets notifications as read.
*/
class SetReadLoader : public Jellyfin::Support::HttpLoader<void, SetReadParams> {
public:
explicit SetReadLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetReadParams& parameters) const override;
QUrlQuery query(const SetReadParams& parameters) const override;
QByteArray body(const SetReadParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a user's notification summary.
*/
@ -78,6 +92,34 @@ protected:
QByteArray body(const GetNotificationsSummaryParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets notifications as unread.
*/
class SetUnreadLoader : public Jellyfin::Support::HttpLoader<void, SetUnreadParams> {
public:
explicit SetUnreadLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetUnreadParams& parameters) const override;
QUrlQuery query(const SetUnreadParams& parameters) const override;
QByteArray body(const SetUnreadParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sends a notification to all admins.
*/
class CreateAdminNotificationLoader : public Jellyfin::Support::HttpLoader<void, CreateAdminNotificationParams> {
public:
explicit CreateAdminNotificationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CreateAdminNotificationParams& parameters) const override;
QUrlQuery query(const CreateAdminNotificationParams& parameters) const override;
QByteArray body(const CreateAdminNotificationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets notification services.
*/

View file

@ -77,6 +77,34 @@ protected:
QByteArray body(const GetPackageInfoParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Installs a package.
*/
class InstallPackageLoader : public Jellyfin::Support::HttpLoader<void, InstallPackageParams> {
public:
explicit InstallPackageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const InstallPackageParams& parameters) const override;
QUrlQuery query(const InstallPackageParams& parameters) const override;
QByteArray body(const InstallPackageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Cancels a package installation.
*/
class CancelPackageInstallationLoader : public Jellyfin::Support::HttpLoader<void, CancelPackageInstallationParams> {
public:
explicit CancelPackageInstallationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CancelPackageInstallationParams& parameters) const override;
QUrlQuery query(const CancelPackageInstallationParams& parameters) const override;
QByteArray body(const CancelPackageInstallationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets all package repositories.
*/
@ -91,6 +119,20 @@ protected:
QByteArray body(const GetRepositoriesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets the enabled and existing package repositories.
*/
class SetRepositoriesLoader : public Jellyfin::Support::HttpLoader<void, SetRepositoriesParams> {
public:
explicit SetRepositoriesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetRepositoriesParams& parameters) const override;
QUrlQuery query(const SetRepositoriesParams& parameters) const override;
QByteArray body(const SetRepositoriesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -62,6 +62,34 @@ protected:
QByteArray body(const CreatePlaylistParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Adds items to a playlist.
*/
class AddToPlaylistLoader : public Jellyfin::Support::HttpLoader<void, AddToPlaylistParams> {
public:
explicit AddToPlaylistLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AddToPlaylistParams& parameters) const override;
QUrlQuery query(const AddToPlaylistParams& parameters) const override;
QByteArray body(const AddToPlaylistParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Removes items from a playlist.
*/
class RemoveFromPlaylistLoader : public Jellyfin::Support::HttpLoader<void, RemoveFromPlaylistParams> {
public:
explicit RemoveFromPlaylistLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RemoveFromPlaylistParams& parameters) const override;
QUrlQuery query(const RemoveFromPlaylistParams& parameters) const override;
QByteArray body(const RemoveFromPlaylistParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the original items of a playlist.
*/
@ -76,6 +104,20 @@ protected:
QByteArray body(const GetPlaylistItemsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Moves a playlist item.
*/
class MoveItemLoader : public Jellyfin::Support::HttpLoader<void, MoveItemParams> {
public:
explicit MoveItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const MoveItemParams& parameters) const override;
QUrlQuery query(const MoveItemParams& parameters) const override;
QByteArray body(const MoveItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -48,6 +48,62 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Reports playback has started within a session.
*/
class ReportPlaybackStartLoader : public Jellyfin::Support::HttpLoader<void, ReportPlaybackStartParams> {
public:
explicit ReportPlaybackStartLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ReportPlaybackStartParams& parameters) const override;
QUrlQuery query(const ReportPlaybackStartParams& parameters) const override;
QByteArray body(const ReportPlaybackStartParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Pings a playback session.
*/
class PingPlaybackSessionLoader : public Jellyfin::Support::HttpLoader<void, PingPlaybackSessionParams> {
public:
explicit PingPlaybackSessionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PingPlaybackSessionParams& parameters) const override;
QUrlQuery query(const PingPlaybackSessionParams& parameters) const override;
QByteArray body(const PingPlaybackSessionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports playback progress within a session.
*/
class ReportPlaybackProgressLoader : public Jellyfin::Support::HttpLoader<void, ReportPlaybackProgressParams> {
public:
explicit ReportPlaybackProgressLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ReportPlaybackProgressParams& parameters) const override;
QUrlQuery query(const ReportPlaybackProgressParams& parameters) const override;
QByteArray body(const ReportPlaybackProgressParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports playback has stopped within a session.
*/
class ReportPlaybackStoppedLoader : public Jellyfin::Support::HttpLoader<void, ReportPlaybackStoppedParams> {
public:
explicit ReportPlaybackStoppedLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ReportPlaybackStoppedParams& parameters) const override;
QUrlQuery query(const ReportPlaybackStoppedParams& parameters) const override;
QByteArray body(const ReportPlaybackStoppedParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Marks an item as played for user.
*/
@ -76,6 +132,48 @@ protected:
QByteArray body(const MarkUnplayedItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that a user has begun playing an item.
*/
class OnPlaybackStartLoader : public Jellyfin::Support::HttpLoader<void, OnPlaybackStartParams> {
public:
explicit OnPlaybackStartLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const OnPlaybackStartParams& parameters) const override;
QUrlQuery query(const OnPlaybackStartParams& parameters) const override;
QByteArray body(const OnPlaybackStartParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that a user has stopped playing an item.
*/
class OnPlaybackStoppedLoader : public Jellyfin::Support::HttpLoader<void, OnPlaybackStoppedParams> {
public:
explicit OnPlaybackStoppedLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const OnPlaybackStoppedParams& parameters) const override;
QUrlQuery query(const OnPlaybackStoppedParams& parameters) const override;
QByteArray body(const OnPlaybackStoppedParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports a user's playback progress.
*/
class OnPlaybackProgressLoader : public Jellyfin::Support::HttpLoader<void, OnPlaybackProgressParams> {
public:
explicit OnPlaybackProgressLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const OnPlaybackProgressParams& parameters) const override;
QUrlQuery query(const OnPlaybackProgressParams& parameters) const override;
QByteArray body(const OnPlaybackProgressParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -62,6 +62,62 @@ protected:
QByteArray body(const GetPluginsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Uninstalls a plugin.
*/
class UninstallPluginLoader : public Jellyfin::Support::HttpLoader<void, UninstallPluginParams> {
public:
explicit UninstallPluginLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UninstallPluginParams& parameters) const override;
QUrlQuery query(const UninstallPluginParams& parameters) const override;
QByteArray body(const UninstallPluginParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Uninstalls a plugin by version.
*/
class UninstallPluginByVersionLoader : public Jellyfin::Support::HttpLoader<void, UninstallPluginByVersionParams> {
public:
explicit UninstallPluginByVersionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UninstallPluginByVersionParams& parameters) const override;
QUrlQuery query(const UninstallPluginByVersionParams& parameters) const override;
QByteArray body(const UninstallPluginByVersionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Disable a plugin.
*/
class DisablePluginLoader : public Jellyfin::Support::HttpLoader<void, DisablePluginParams> {
public:
explicit DisablePluginLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DisablePluginParams& parameters) const override;
QUrlQuery query(const DisablePluginParams& parameters) const override;
QByteArray body(const DisablePluginParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Enables a disabled plugin.
*/
class EnablePluginLoader : public Jellyfin::Support::HttpLoader<void, EnablePluginParams> {
public:
explicit EnablePluginLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const EnablePluginParams& parameters) const override;
QUrlQuery query(const EnablePluginParams& parameters) const override;
QByteArray body(const EnablePluginParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets plugin configuration.
*/
@ -76,6 +132,48 @@ protected:
QByteArray body(const GetPluginConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates plugin configuration.
*/
class UpdatePluginConfigurationLoader : public Jellyfin::Support::HttpLoader<void, UpdatePluginConfigurationParams> {
public:
explicit UpdatePluginConfigurationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdatePluginConfigurationParams& parameters) const override;
QUrlQuery query(const UpdatePluginConfigurationParams& parameters) const override;
QByteArray body(const UpdatePluginConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets a plugin's manifest.
*/
class GetPluginManifestLoader : public Jellyfin::Support::HttpLoader<void, GetPluginManifestParams> {
public:
explicit GetPluginManifestLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const GetPluginManifestParams& parameters) const override;
QUrlQuery query(const GetPluginManifestParams& parameters) const override;
QByteArray body(const GetPluginManifestParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates plugin security info.
*/
class UpdatePluginSecurityInfoLoader : public Jellyfin::Support::HttpLoader<void, UpdatePluginSecurityInfoParams> {
public:
explicit UpdatePluginSecurityInfoLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdatePluginSecurityInfoParams& parameters) const override;
QUrlQuery query(const UpdatePluginSecurityInfoParams& parameters) const override;
QByteArray body(const UpdatePluginSecurityInfoParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -49,6 +49,20 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Temporarily activates quick connect for five minutes.
*/
class ActivateLoader : public Jellyfin::Support::HttpLoader<void, ActivateParams> {
public:
explicit ActivateLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ActivateParams& parameters) const override;
QUrlQuery query(const ActivateParams& parameters) const override;
QByteArray body(const ActivateParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Authorizes a pending quick connect request.
*/
@ -63,6 +77,20 @@ protected:
QByteArray body(const AuthorizeParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Enables or disables quick connect.
*/
class AvailableLoader : public Jellyfin::Support::HttpLoader<void, AvailableParams> {
public:
explicit AvailableLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AvailableParams& parameters) const override;
QUrlQuery query(const AvailableParams& parameters) const override;
QByteArray body(const AvailableParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Attempts to retrieve authentication information.
*/

View file

@ -62,6 +62,20 @@ protected:
QByteArray body(const GetRemoteImagesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Downloads a remote image for an item.
*/
class DownloadRemoteImageLoader : public Jellyfin::Support::HttpLoader<void, DownloadRemoteImageParams> {
public:
explicit DownloadRemoteImageLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DownloadRemoteImageParams& parameters) const override;
QUrlQuery query(const DownloadRemoteImageParams& parameters) const override;
QByteArray body(const DownloadRemoteImageParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets available remote image providers for an item.
*/

View file

@ -76,6 +76,48 @@ protected:
QByteArray body(const GetTaskParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Update specified task triggers.
*/
class UpdateTaskLoader : public Jellyfin::Support::HttpLoader<void, UpdateTaskParams> {
public:
explicit UpdateTaskLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateTaskParams& parameters) const override;
QUrlQuery query(const UpdateTaskParams& parameters) const override;
QByteArray body(const UpdateTaskParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Start specified task.
*/
class StartTaskLoader : public Jellyfin::Support::HttpLoader<void, StartTaskParams> {
public:
explicit StartTaskLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const StartTaskParams& parameters) const override;
QUrlQuery query(const StartTaskParams& parameters) const override;
QByteArray body(const StartTaskParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Stop specified task.
*/
class StopTaskLoader : public Jellyfin::Support::HttpLoader<void, StopTaskParams> {
public:
explicit StopTaskLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const StopTaskParams& parameters) const override;
QUrlQuery query(const StopTaskParams& parameters) const override;
QByteArray body(const StopTaskParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -91,6 +91,188 @@ protected:
QByteArray body(const GetSessionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Issues a full general command to a client.
*/
class SendFullGeneralCommandLoader : public Jellyfin::Support::HttpLoader<void, SendFullGeneralCommandParams> {
public:
explicit SendFullGeneralCommandLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SendFullGeneralCommandParams& parameters) const override;
QUrlQuery query(const SendFullGeneralCommandParams& parameters) const override;
QByteArray body(const SendFullGeneralCommandParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Issues a general command to a client.
*/
class SendGeneralCommandLoader : public Jellyfin::Support::HttpLoader<void, SendGeneralCommandParams> {
public:
explicit SendGeneralCommandLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SendGeneralCommandParams& parameters) const override;
QUrlQuery query(const SendGeneralCommandParams& parameters) const override;
QByteArray body(const SendGeneralCommandParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Issues a command to a client to display a message to the user.
*/
class SendMessageCommandLoader : public Jellyfin::Support::HttpLoader<void, SendMessageCommandParams> {
public:
explicit SendMessageCommandLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SendMessageCommandParams& parameters) const override;
QUrlQuery query(const SendMessageCommandParams& parameters) const override;
QByteArray body(const SendMessageCommandParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Instructs a session to play an item.
*/
class PlayLoader : public Jellyfin::Support::HttpLoader<void, PlayParams> {
public:
explicit PlayLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PlayParams& parameters) const override;
QUrlQuery query(const PlayParams& parameters) const override;
QByteArray body(const PlayParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Issues a playstate command to a client.
*/
class SendPlaystateCommandLoader : public Jellyfin::Support::HttpLoader<void, SendPlaystateCommandParams> {
public:
explicit SendPlaystateCommandLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SendPlaystateCommandParams& parameters) const override;
QUrlQuery query(const SendPlaystateCommandParams& parameters) const override;
QByteArray body(const SendPlaystateCommandParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Issues a system command to a client.
*/
class SendSystemCommandLoader : public Jellyfin::Support::HttpLoader<void, SendSystemCommandParams> {
public:
explicit SendSystemCommandLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SendSystemCommandParams& parameters) const override;
QUrlQuery query(const SendSystemCommandParams& parameters) const override;
QByteArray body(const SendSystemCommandParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Adds an additional user to a session.
*/
class AddUserToSessionLoader : public Jellyfin::Support::HttpLoader<void, AddUserToSessionParams> {
public:
explicit AddUserToSessionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const AddUserToSessionParams& parameters) const override;
QUrlQuery query(const AddUserToSessionParams& parameters) const override;
QByteArray body(const AddUserToSessionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Removes an additional user from a session.
*/
class RemoveUserFromSessionLoader : public Jellyfin::Support::HttpLoader<void, RemoveUserFromSessionParams> {
public:
explicit RemoveUserFromSessionLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RemoveUserFromSessionParams& parameters) const override;
QUrlQuery query(const RemoveUserFromSessionParams& parameters) const override;
QByteArray body(const RemoveUserFromSessionParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Instructs a session to browse to an item or view.
*/
class DisplayContentLoader : public Jellyfin::Support::HttpLoader<void, DisplayContentParams> {
public:
explicit DisplayContentLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DisplayContentParams& parameters) const override;
QUrlQuery query(const DisplayContentParams& parameters) const override;
QByteArray body(const DisplayContentParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates capabilities for a device.
*/
class PostCapabilitiesLoader : public Jellyfin::Support::HttpLoader<void, PostCapabilitiesParams> {
public:
explicit PostCapabilitiesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostCapabilitiesParams& parameters) const override;
QUrlQuery query(const PostCapabilitiesParams& parameters) const override;
QByteArray body(const PostCapabilitiesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates capabilities for a device.
*/
class PostFullCapabilitiesLoader : public Jellyfin::Support::HttpLoader<void, PostFullCapabilitiesParams> {
public:
explicit PostFullCapabilitiesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const PostFullCapabilitiesParams& parameters) const override;
QUrlQuery query(const PostFullCapabilitiesParams& parameters) const override;
QByteArray body(const PostFullCapabilitiesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that a session has ended.
*/
class ReportSessionEndedLoader : public Jellyfin::Support::HttpLoader<void, ReportSessionEndedParams> {
public:
explicit ReportSessionEndedLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ReportSessionEndedParams& parameters) const override;
QUrlQuery query(const ReportSessionEndedParams& parameters) const override;
QByteArray body(const ReportSessionEndedParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Reports that a session is viewing an item.
*/
class ReportViewingLoader : public Jellyfin::Support::HttpLoader<void, ReportViewingParams> {
public:
explicit ReportViewingLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ReportViewingParams& parameters) const override;
QUrlQuery query(const ReportViewingParams& parameters) const override;
QByteArray body(const ReportViewingParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -49,6 +49,20 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Completes the startup wizard.
*/
class CompleteWizardLoader : public Jellyfin::Support::HttpLoader<void, CompleteWizardParams> {
public:
explicit CompleteWizardLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const CompleteWizardParams& parameters) const override;
QUrlQuery query(const CompleteWizardParams& parameters) const override;
QByteArray body(const CompleteWizardParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the initial startup wizard configuration.
*/
@ -63,6 +77,20 @@ protected:
QByteArray body(const GetStartupConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets the initial startup wizard configuration.
*/
class UpdateInitialConfigurationLoader : public Jellyfin::Support::HttpLoader<void, UpdateInitialConfigurationParams> {
public:
explicit UpdateInitialConfigurationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateInitialConfigurationParams& parameters) const override;
QUrlQuery query(const UpdateInitialConfigurationParams& parameters) const override;
QByteArray body(const UpdateInitialConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the first user.
*/
@ -77,6 +105,20 @@ protected:
QByteArray body(const GetFirstUser_2Params& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets remote access and UPnP.
*/
class SetRemoteAccessLoader : public Jellyfin::Support::HttpLoader<void, SetRemoteAccessParams> {
public:
explicit SetRemoteAccessLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SetRemoteAccessParams& parameters) const override;
QUrlQuery query(const SetRemoteAccessParams& parameters) const override;
QByteArray body(const SetRemoteAccessParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets the first user.
*/
@ -91,6 +133,20 @@ protected:
QByteArray body(const GetFirstUserParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Sets the user name and password.
*/
class UpdateStartupUserLoader : public Jellyfin::Support::HttpLoader<void, UpdateStartupUserParams> {
public:
explicit UpdateStartupUserLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateStartupUserParams& parameters) const override;
QUrlQuery query(const UpdateStartupUserParams& parameters) const override;
QByteArray body(const UpdateStartupUserParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -76,6 +76,48 @@ protected:
QByteArray body(const SearchRemoteSubtitlesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Downloads a remote subtitle.
*/
class DownloadRemoteSubtitlesLoader : public Jellyfin::Support::HttpLoader<void, DownloadRemoteSubtitlesParams> {
public:
explicit DownloadRemoteSubtitlesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DownloadRemoteSubtitlesParams& parameters) const override;
QUrlQuery query(const DownloadRemoteSubtitlesParams& parameters) const override;
QByteArray body(const DownloadRemoteSubtitlesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Upload an external subtitle file.
*/
class UploadSubtitleLoader : public Jellyfin::Support::HttpLoader<void, UploadSubtitleParams> {
public:
explicit UploadSubtitleLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UploadSubtitleParams& parameters) const override;
QUrlQuery query(const UploadSubtitleParams& parameters) const override;
QByteArray body(const UploadSubtitleParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes an external subtitle file.
*/
class DeleteSubtitleLoader : public Jellyfin::Support::HttpLoader<void, DeleteSubtitleParams> {
public:
explicit DeleteSubtitleLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteSubtitleParams& parameters) const override;
QUrlQuery query(const DeleteSubtitleParams& parameters) const override;
QByteArray body(const DeleteSubtitleParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -47,6 +47,48 @@ namespace HTTP {
using namespace Jellyfin::DTO;
/**
* @brief Notify SyncPlay group that member is buffering.
*/
class SyncPlayBufferingLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayBufferingParams> {
public:
explicit SyncPlayBufferingLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayBufferingParams& parameters) const override;
QUrlQuery query(const SyncPlayBufferingParams& parameters) const override;
QByteArray body(const SyncPlayBufferingParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Join an existing SyncPlay group.
*/
class SyncPlayJoinGroupLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayJoinGroupParams> {
public:
explicit SyncPlayJoinGroupLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayJoinGroupParams& parameters) const override;
QUrlQuery query(const SyncPlayJoinGroupParams& parameters) const override;
QByteArray body(const SyncPlayJoinGroupParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Leave the joined SyncPlay group.
*/
class SyncPlayLeaveGroupLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayLeaveGroupParams> {
public:
explicit SyncPlayLeaveGroupLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayLeaveGroupParams& parameters) const override;
QUrlQuery query(const SyncPlayLeaveGroupParams& parameters) const override;
QByteArray body(const SyncPlayLeaveGroupParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets all SyncPlay groups.
*/
@ -61,6 +103,244 @@ protected:
QByteArray body(const SyncPlayGetGroupsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to move an item in the playlist in SyncPlay group.
*/
class SyncPlayMovePlaylistItemLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayMovePlaylistItemParams> {
public:
explicit SyncPlayMovePlaylistItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayMovePlaylistItemParams& parameters) const override;
QUrlQuery query(const SyncPlayMovePlaylistItemParams& parameters) const override;
QByteArray body(const SyncPlayMovePlaylistItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Create a new SyncPlay group.
*/
class SyncPlayCreateGroupLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayCreateGroupParams> {
public:
explicit SyncPlayCreateGroupLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayCreateGroupParams& parameters) const override;
QUrlQuery query(const SyncPlayCreateGroupParams& parameters) const override;
QByteArray body(const SyncPlayCreateGroupParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request next item in SyncPlay group.
*/
class SyncPlayNextItemLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayNextItemParams> {
public:
explicit SyncPlayNextItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayNextItemParams& parameters) const override;
QUrlQuery query(const SyncPlayNextItemParams& parameters) const override;
QByteArray body(const SyncPlayNextItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request pause in SyncPlay group.
*/
class SyncPlayPauseLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayPauseParams> {
public:
explicit SyncPlayPauseLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayPauseParams& parameters) const override;
QUrlQuery query(const SyncPlayPauseParams& parameters) const override;
QByteArray body(const SyncPlayPauseParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Update session ping.
*/
class SyncPlayPingLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayPingParams> {
public:
explicit SyncPlayPingLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayPingParams& parameters) const override;
QUrlQuery query(const SyncPlayPingParams& parameters) const override;
QByteArray body(const SyncPlayPingParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request previous item in SyncPlay group.
*/
class SyncPlayPreviousItemLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayPreviousItemParams> {
public:
explicit SyncPlayPreviousItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayPreviousItemParams& parameters) const override;
QUrlQuery query(const SyncPlayPreviousItemParams& parameters) const override;
QByteArray body(const SyncPlayPreviousItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to queue items to the playlist of a SyncPlay group.
*/
class SyncPlayQueueLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayQueueParams> {
public:
explicit SyncPlayQueueLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayQueueParams& parameters) const override;
QUrlQuery query(const SyncPlayQueueParams& parameters) const override;
QByteArray body(const SyncPlayQueueParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Notify SyncPlay group that member is ready for playback.
*/
class SyncPlayReadyLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayReadyParams> {
public:
explicit SyncPlayReadyLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayReadyParams& parameters) const override;
QUrlQuery query(const SyncPlayReadyParams& parameters) const override;
QByteArray body(const SyncPlayReadyParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to remove items from the playlist in SyncPlay group.
*/
class SyncPlayRemoveFromPlaylistLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayRemoveFromPlaylistParams> {
public:
explicit SyncPlayRemoveFromPlaylistLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayRemoveFromPlaylistParams& parameters) const override;
QUrlQuery query(const SyncPlayRemoveFromPlaylistParams& parameters) const override;
QByteArray body(const SyncPlayRemoveFromPlaylistParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request seek in SyncPlay group.
*/
class SyncPlaySeekLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySeekParams> {
public:
explicit SyncPlaySeekLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySeekParams& parameters) const override;
QUrlQuery query(const SyncPlaySeekParams& parameters) const override;
QByteArray body(const SyncPlaySeekParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request SyncPlay group to ignore member during group-wait.
*/
class SyncPlaySetIgnoreWaitLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySetIgnoreWaitParams> {
public:
explicit SyncPlaySetIgnoreWaitLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySetIgnoreWaitParams& parameters) const override;
QUrlQuery query(const SyncPlaySetIgnoreWaitParams& parameters) const override;
QByteArray body(const SyncPlaySetIgnoreWaitParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to set new playlist in SyncPlay group.
*/
class SyncPlaySetNewQueueLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySetNewQueueParams> {
public:
explicit SyncPlaySetNewQueueLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySetNewQueueParams& parameters) const override;
QUrlQuery query(const SyncPlaySetNewQueueParams& parameters) const override;
QByteArray body(const SyncPlaySetNewQueueParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to change playlist item in SyncPlay group.
*/
class SyncPlaySetPlaylistItemLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySetPlaylistItemParams> {
public:
explicit SyncPlaySetPlaylistItemLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySetPlaylistItemParams& parameters) const override;
QUrlQuery query(const SyncPlaySetPlaylistItemParams& parameters) const override;
QByteArray body(const SyncPlaySetPlaylistItemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to set repeat mode in SyncPlay group.
*/
class SyncPlaySetRepeatModeLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySetRepeatModeParams> {
public:
explicit SyncPlaySetRepeatModeLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySetRepeatModeParams& parameters) const override;
QUrlQuery query(const SyncPlaySetRepeatModeParams& parameters) const override;
QByteArray body(const SyncPlaySetRepeatModeParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request to set shuffle mode in SyncPlay group.
*/
class SyncPlaySetShuffleModeLoader : public Jellyfin::Support::HttpLoader<void, SyncPlaySetShuffleModeParams> {
public:
explicit SyncPlaySetShuffleModeLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlaySetShuffleModeParams& parameters) const override;
QUrlQuery query(const SyncPlaySetShuffleModeParams& parameters) const override;
QByteArray body(const SyncPlaySetShuffleModeParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request stop in SyncPlay group.
*/
class SyncPlayStopLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayStopParams> {
public:
explicit SyncPlayStopLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayStopParams& parameters) const override;
QUrlQuery query(const SyncPlayStopParams& parameters) const override;
QByteArray body(const SyncPlayStopParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Request unpause in SyncPlay group.
*/
class SyncPlayUnpauseLoader : public Jellyfin::Support::HttpLoader<void, SyncPlayUnpauseParams> {
public:
explicit SyncPlayUnpauseLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const SyncPlayUnpauseParams& parameters) const override;
QUrlQuery query(const SyncPlayUnpauseParams& parameters) const override;
QByteArray body(const SyncPlayUnpauseParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -135,6 +135,34 @@ protected:
QByteArray body(const PostPingSystemParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Restarts the application.
*/
class RestartApplicationLoader : public Jellyfin::Support::HttpLoader<void, RestartApplicationParams> {
public:
explicit RestartApplicationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const RestartApplicationParams& parameters) const override;
QUrlQuery query(const RestartApplicationParams& parameters) const override;
QByteArray body(const RestartApplicationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Shuts down the application.
*/
class ShutdownApplicationLoader : public Jellyfin::Support::HttpLoader<void, ShutdownApplicationParams> {
public:
explicit ShutdownApplicationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const ShutdownApplicationParams& parameters) const override;
QUrlQuery query(const ShutdownApplicationParams& parameters) const override;
QByteArray body(const ShutdownApplicationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Gets wake on lan information.
*/

View file

@ -84,6 +84,34 @@ protected:
QByteArray body(const GetUserByIdParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Deletes a user.
*/
class DeleteUserLoader : public Jellyfin::Support::HttpLoader<void, DeleteUserParams> {
public:
explicit DeleteUserLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteUserParams& parameters) const override;
QUrlQuery query(const DeleteUserParams& parameters) const override;
QByteArray body(const DeleteUserParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a user.
*/
class UpdateUserLoader : public Jellyfin::Support::HttpLoader<void, UpdateUserParams> {
public:
explicit UpdateUserLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateUserParams& parameters) const override;
QUrlQuery query(const UpdateUserParams& parameters) const override;
QByteArray body(const UpdateUserParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Authenticates a user.
*/
@ -98,6 +126,62 @@ protected:
QByteArray body(const AuthenticateUserParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a user configuration.
*/
class UpdateUserConfigurationLoader : public Jellyfin::Support::HttpLoader<void, UpdateUserConfigurationParams> {
public:
explicit UpdateUserConfigurationLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateUserConfigurationParams& parameters) const override;
QUrlQuery query(const UpdateUserConfigurationParams& parameters) const override;
QByteArray body(const UpdateUserConfigurationParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a user's easy password.
*/
class UpdateUserEasyPasswordLoader : public Jellyfin::Support::HttpLoader<void, UpdateUserEasyPasswordParams> {
public:
explicit UpdateUserEasyPasswordLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateUserEasyPasswordParams& parameters) const override;
QUrlQuery query(const UpdateUserEasyPasswordParams& parameters) const override;
QByteArray body(const UpdateUserEasyPasswordParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a user's password.
*/
class UpdateUserPasswordLoader : public Jellyfin::Support::HttpLoader<void, UpdateUserPasswordParams> {
public:
explicit UpdateUserPasswordLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateUserPasswordParams& parameters) const override;
QUrlQuery query(const UpdateUserPasswordParams& parameters) const override;
QByteArray body(const UpdateUserPasswordParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Updates a user policy.
*/
class UpdateUserPolicyLoader : public Jellyfin::Support::HttpLoader<void, UpdateUserPolicyParams> {
public:
explicit UpdateUserPolicyLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const UpdateUserPolicyParams& parameters) const override;
QUrlQuery query(const UpdateUserPolicyParams& parameters) const override;
QByteArray body(const UpdateUserPolicyParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Authenticates a user by name.
*/

View file

@ -61,6 +61,34 @@ protected:
QByteArray body(const GetAdditionalPartParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Removes alternate video sources.
*/
class DeleteAlternateSourcesLoader : public Jellyfin::Support::HttpLoader<void, DeleteAlternateSourcesParams> {
public:
explicit DeleteAlternateSourcesLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const DeleteAlternateSourcesParams& parameters) const override;
QUrlQuery query(const DeleteAlternateSourcesParams& parameters) const override;
QByteArray body(const DeleteAlternateSourcesParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
/**
* @brief Merges videos into a single record.
*/
class MergeVersionsLoader : public Jellyfin::Support::HttpLoader<void, MergeVersionsParams> {
public:
explicit MergeVersionsLoader(ApiClient *apiClient = nullptr);
protected:
QString path(const MergeVersionsParams& parameters) const override;
QUrlQuery query(const MergeVersionsParams& parameters) const override;
QByteArray body(const MergeVersionsParams& parameters) const override;
QNetworkAccessManager::Operation operation() const override;
};
} // NS HTTP
} // NS Loader

View file

@ -62,40 +62,11 @@ static const int HTTP_TIMEOUT = 30000; // 30 seconds;
*/
class LoaderBase : public QObject {
Q_OBJECT
signals:
/**
* @brief Emitted when an error has occurred during loading and no result
* is available.
*/
void error(QString message = QString());
/**
* @brief Emitted when data was successfully loaded.
*/
void ready();
};
/**
* Interface describing a way to load items. Used to abstract away
* the difference between loading from a cache or loading over the network.
*
* To implement this class, implement prepareLoad() and load(). These are always called
* in the same order, but prepareLoad() must always be called on the same thread as the
* m_apiClient, while load() may be called on another thread.
*
* @note: Loaders should NEVER call load() again while load() is running on another
* thread or change the apiClient while running. This will result in undefined behaviour.
* Please use a Mutex to enforce this.
*
* @tparam R the type of data that should be fetched, R for result.
* @tparam P the type of paramaters given, to determine which resource should
* be loaded.
*/
template <typename R, typename P>
class Loader : public LoaderBase {
public:
explicit Loader(ApiClient *apiClient)
protected:
explicit LoaderBase(ApiClient *apiClient)
: m_apiClient(apiClient) {}
public:
/**
* @brief load Loads the given resource asynchronously.
*/
@ -103,19 +74,6 @@ public:
throw LoadException(QStringLiteral("Loader not set"));
}
/**
* @brief Retrieves the loaded resource. Only valid after the ready signal has been emitted.
*
* @return The loaded resource.
*/
R result() const {
return m_result.value();
}
bool hasResult() const {
return m_result;
}
/**
* @returns whether this loader is already fetching a resource
*/
@ -136,6 +94,61 @@ public:
void setApiClient(ApiClient *newApiClient) { m_apiClient = newApiClient; }
ApiClient *apiClient() const { return m_apiClient; }
signals:
/**
* @brief Emitted when an error has occurred during loading and no result
* is available.
*/
void error(QString message = QString());
/**
* @brief Emitted when data was successfully loaded.
*/
void ready();
protected:
Jellyfin::ApiClient *m_apiClient;
bool m_isRunning = false;
void stopWithError(QString message = QString()) {
m_isRunning = false;
emit this->error(message);
}
};
/**
* Interface describing a way to load items. Used to abstract away
* the difference between loading from a cache or loading over the network.
*
* To implement this class, implement prepareLoad() and load(). These are always called
* in the same order, but prepareLoad() must always be called on the same thread as the
* m_apiClient, while load() may be called on another thread.
*
* @note: Loaders should NEVER call load() again while load() is running on another
* thread or change the apiClient while running. This will result in undefined behaviour.
* Please use a Mutex to enforce this.
*
* @tparam R the type of data that should be fetched, R for result.
* @tparam P the type of paramaters given, to determine which resource should
* be loaded.
*/
template <typename R, typename P>
class Loader : public LoaderBase {
public:
using ResultType = std::optional<R>;
explicit Loader(ApiClient *apiClient)
: LoaderBase(apiClient) {}
/**
* @brief Retrieves the loaded resource. Only valid after the ready signal has been emitted.
*
* @return The loaded resource.
*/
R result() const {
return m_result.value();
}
bool hasResult() const {
return m_result;
}
/**
* @brief Sets the parameters for this loader.
* @param parameters The parameters to set
@ -146,26 +159,112 @@ public:
void setParameters(const P &parameters) {
m_parameters = parameters;
}
protected:
Jellyfin::ApiClient *m_apiClient;
std::optional<P> m_parameters;
std::optional<R> m_result;
bool m_isRunning = false;
void stopWithError(QString message = QString()) {
m_isRunning = false;
emit this->error(message);
protected:
std::optional<P> m_parameters;
ResultType m_result;
ResultType createFailureResult() {
return std::nullopt;
}
ResultType createSuccessResult(R &&result) {
return std::make_optional<R>(result);
}
static R createDummyResponse() {
return fromJsonValue<R>(QJsonValue());
}
};
template <typename P>
class Loader<void, P> : public LoaderBase {
public:
using ResultType = bool;
explicit Loader(ApiClient *apiClient)
: LoaderBase(apiClient) {}
void result() const { }
bool hasResult() const {
return m_result;
}
/**
* @brief Sets the parameters for this loader.
* @param parameters The parameters to set
*
* This method will copy the parameters. The parameters must have a
* copy constructor.
*/
void setParameters(const P &parameters) {
m_parameters = parameters;
}
protected:
std::optional<P> m_parameters;
ResultType m_result;
ResultType createFailureResult() {
return false;
}
ResultType createSuccessResult(void) {
return true;
}
static void createDummyResponse() { }
};
template<typename R, typename P>
class HttpLoaderBase : public Loader<R, P> {
public:
explicit HttpLoaderBase(Jellyfin::ApiClient *apiClient)
: Loader<R, P> (apiClient) {}
typename Loader<R, P>::ResultType parseResponse(int /*statusCode*/, QByteArray response) {
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(response, &error);
if (error.error != QJsonParseError::NoError) {
qWarning() << response;
this->stopWithError(error.errorString().toLocal8Bit().constData());
}
if (document.isNull() || document.isEmpty()) {
this->stopWithError(QStringLiteral("Unexpected empty JSON response"));
return this->createFailureResult();
} else if (document.isArray()) {
return this->createSuccessResult(fromJsonValue<R>(document.array()));
} else if (document.isObject()){
return this->createSuccessResult(fromJsonValue<R>(document.object()));
} else {
this->stopWithError(QStringLiteral("Unexpected JSON response"));
return this->createFailureResult();
}
}
};
// Specialisation for void result
template<typename P>
class HttpLoaderBase<void, P> : public Loader<void, P> {
public:
explicit HttpLoaderBase(Jellyfin::ApiClient *apiClient)
: Loader<void, P> (apiClient) {}
typename Loader<void, P>::ResultType parseResponse(int statusCode, QByteArray response) {
return statusCode == 204;
}
};
/**
* Implementation of Loader that loads Items over HTTP
*/
template <typename R, typename P>
class HttpLoader : public Loader<R, P> {
class HttpLoader : public HttpLoaderBase<R, P> {
public:
explicit HttpLoader(Jellyfin::ApiClient *apiClient)
: Loader<R, P> (apiClient) {
: HttpLoaderBase<R, P> (apiClient) {
this->connect(&m_parsedWatcher, &QFutureWatcher<std::optional<R>>::finished, this, &HttpLoader<R, P>::onResponseParsed);
}
@ -221,7 +320,7 @@ protected:
virtual QNetworkAccessManager::Operation operation() const = 0;
private:
QNetworkReply *m_reply = nullptr;
QFutureWatcher<std::optional<R>> m_parsedWatcher;
QFutureWatcher<typename Loader<R, P>::ResultType> m_parsedWatcher;
void onRequestFinished() {
if (m_reply->error() != QNetworkReply::NoError) {
@ -229,38 +328,32 @@ private:
m_parsedWatcher.cancel();
//: An HTTP has occurred. First argument is replaced by QNetworkReply->errorString()
this->stopWithError(QStringLiteral("HTTP error: %1").arg(m_reply->errorString()));
return;
}
QByteArray array = m_reply->readAll();
int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
m_reply->deleteLater();
m_reply = nullptr;
m_parsedWatcher.setFuture(QtConcurrent::run(this, &HttpLoader<R, P>::parseResponse, array));
}
std::optional<R> parseResponse(QByteArray response) {
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(response, &error);
if (error.error != QJsonParseError::NoError) {
qWarning() << response;
this->stopWithError(error.errorString().toLocal8Bit().constData());
}
if (document.isNull() || document.isEmpty()) {
this->stopWithError(QStringLiteral("Unexpected empty JSON response"));
return std::nullopt;
} else if (document.isArray()) {
return std::make_optional<R>(fromJsonValue<R>(document.array()));
} else if (document.isObject()){
return std::make_optional<R>(fromJsonValue<R>(document.object()));
} else {
this->stopWithError(QStringLiteral("Unexpected JSON response"));
return std::nullopt;
}
/*m_parsedWatcher.setFuture(QtConcurrent::run([this, statusCode, array]() {
return this->parseResponse(statusCode, array);
}));*/
m_parsedWatcher.setFuture(
QtConcurrent::run<typename HttpLoader<R, P>::ResultType, // Result
HttpLoader<R, P>, // class
int, int, // Argument 1
QByteArray, QByteArray> // Argument 2
(this, &HttpLoader<R, P>::parseResponse, statusCode, array)
);
}
void onResponseParsed() {
Q_ASSERT(m_parsedWatcher.isFinished());
try {
if (m_parsedWatcher.result().has_value()) {
this->m_result = m_parsedWatcher.result().value();
/* In case the result is an optional, it invokes the bool cast of std::optional, checking
if it has a value.
In case the result is a boolean, it just checks the boolean */
if (m_parsedWatcher.result()) {
this->m_result = m_parsedWatcher.result();
this->m_isRunning = false;
emit this->ready();
} else {