File indexing completed on 2024-04-21 03:51:29

0001 /*
0002     This file is part of KDE.
0003 
0004     SPDX-FileCopyrightText: 2009 Frederik Gladhorn <gladhorn@kde.org>
0005     SPDX-FileCopyrightText: 2011 Laszlo Papp <djszapi@archlinux.us>
0006 
0007     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0008  */
0009 
0010 #ifndef ATTICA_ITEMJOB_H
0011 #define ATTICA_ITEMJOB_H
0012 
0013 #include "attica_export.h"
0014 #include "deletejob.h"
0015 #include "getjob.h"
0016 #include "postjob.h"
0017 #include "putjob.h"
0018 
0019 namespace Attica
0020 {
0021 class Provider;
0022 
0023 /**
0024  * @class ItemJob itemjob.h <Attica/ItemJob>
0025  *
0026  * Represents an item get job.
0027  */
0028 template<class T>
0029 class ATTICA_EXPORT ItemJob : public GetJob
0030 {
0031 public:
0032     T result() const;
0033 
0034 private:
0035     ItemJob(PlatformDependent *, const QNetworkRequest &request);
0036     void parse(const QString &xml) override;
0037     T m_item;
0038     friend class Attica::Provider;
0039 };
0040 
0041 /**
0042  * @class ItemDeleteJob itemjob.h <Attica/ItemJob>
0043  *
0044  * Represents an item delete job.
0045  */
0046 template<class T>
0047 class ATTICA_EXPORT ItemDeleteJob : public DeleteJob
0048 {
0049 public:
0050     T result() const;
0051 
0052 private:
0053     ItemDeleteJob(PlatformDependent *, const QNetworkRequest &request);
0054     void parse(const QString &xml) override;
0055     T m_item;
0056     friend class Attica::Provider;
0057 };
0058 
0059 /**
0060  * @class ItemPostJob itemjob.h <Attica/ItemJob>
0061  *
0062  * Represents an item post job.
0063  */
0064 template<class T>
0065 class ATTICA_EXPORT ItemPostJob : public PostJob
0066 {
0067 public:
0068     T result() const;
0069 
0070 private:
0071     ItemPostJob(PlatformDependent *internals, const QNetworkRequest &request, QIODevice *data);
0072     ItemPostJob(PlatformDependent *internals, const QNetworkRequest &request, const StringMap &parameters = StringMap());
0073 
0074     void parse(const QString &xml) override;
0075     T m_item;
0076     friend class Attica::Provider;
0077 };
0078 
0079 /**
0080  * @class ItemPutJob itemjob.h <Attica/ItemJob>
0081  *
0082  * Represents an item put job.
0083  */
0084 template<class T>
0085 class ATTICA_EXPORT ItemPutJob : public PutJob
0086 {
0087 public:
0088     T result() const;
0089 
0090 private:
0091     ItemPutJob(PlatformDependent *internals, const QNetworkRequest &request, QIODevice *data);
0092     ItemPutJob(PlatformDependent *internals, const QNetworkRequest &request, const StringMap &parameters = StringMap());
0093 
0094     void parse(const QString &xml) override;
0095     T m_item;
0096     friend class Attica::Provider;
0097 };
0098 
0099 }
0100 
0101 #endif