Skip to content

Commit 4fcb412

Browse files
committed
Merge pull request #53 from rhafer/me-expand
Add $expand for memberOf to /me
1 parent d0b2106 commit 4fcb412

File tree

2 files changed

+106
-17
lines changed

2 files changed

+106
-17
lines changed

client/OAIMeUserApi.cpp

Lines changed: 96 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ void OAIMeUserApi::initializeServerConfigs() {
3939
QUrl("https://ocis.ocis-traefik.latest.owncloud.works/"),
4040
"ownCloud Infinite Scale Latest",
4141
QMap<QString, OAIServerVariable>()));
42-
_serverConfigs.insert("meGet", defaultConf);
43-
_serverIndices.insert("meGet", 0);
42+
_serverConfigs.insert("getOwnUser", defaultConf);
43+
_serverIndices.insert("getOwnUser", 0);
4444
}
4545

4646
/**
@@ -216,9 +216,95 @@ QString OAIMeUserApi::getParamStyleDelimiter(const QString &style, const QString
216216
}
217217
}
218218

219-
void OAIMeUserApi::meGet() {
220-
QString fullPath = QString(_serverConfigs["meGet"][_serverIndices.value("meGet")].URL()+"/me");
219+
void OAIMeUserApi::getOwnUser(const ::OpenAPI::OptionalParam<QSet<QString>> &expand) {
220+
QString fullPath = QString(_serverConfigs["getOwnUser"][_serverIndices.value("getOwnUser")].URL()+"/me");
221221

222+
QString queryPrefix, querySuffix, queryDelimiter, queryStyle;
223+
if (expand.hasValue())
224+
{
225+
queryStyle = "form";
226+
if (queryStyle == "")
227+
queryStyle = "form";
228+
queryPrefix = getParamStylePrefix(queryStyle);
229+
querySuffix = getParamStyleSuffix(queryStyle);
230+
queryDelimiter = getParamStyleDelimiter(queryStyle, "$expand", false);
231+
if (expand.value().size() > 0) {
232+
if (QString("csv").indexOf("multi") == 0) {
233+
foreach (QString t, expand.value()) {
234+
if (fullPath.indexOf("?") > 0)
235+
fullPath.append(queryPrefix);
236+
else
237+
fullPath.append("?");
238+
fullPath.append("$expand=").append(::OpenAPI::toStringValue(t));
239+
}
240+
} else if (QString("csv").indexOf("ssv") == 0) {
241+
if (fullPath.indexOf("?") > 0)
242+
fullPath.append("&");
243+
else
244+
fullPath.append("?").append(queryPrefix).append("$expand").append(querySuffix);
245+
qint32 count = 0;
246+
foreach (QString t, expand.value()) {
247+
if (count > 0) {
248+
fullPath.append((false)? queryDelimiter : QUrl::toPercentEncoding(queryDelimiter));
249+
}
250+
fullPath.append(::OpenAPI::toStringValue(t));
251+
count++;
252+
}
253+
} else if (QString("csv").indexOf("tsv") == 0) {
254+
if (fullPath.indexOf("?") > 0)
255+
fullPath.append("&");
256+
else
257+
fullPath.append("?").append(queryPrefix).append("$expand").append(querySuffix);
258+
qint32 count = 0;
259+
foreach (QString t, expand.value()) {
260+
if (count > 0) {
261+
fullPath.append("\t");
262+
}
263+
fullPath.append(::OpenAPI::toStringValue(t));
264+
count++;
265+
}
266+
} else if (QString("csv").indexOf("csv") == 0) {
267+
if (fullPath.indexOf("?") > 0)
268+
fullPath.append("&");
269+
else
270+
fullPath.append("?").append(queryPrefix).append("$expand").append(querySuffix);
271+
qint32 count = 0;
272+
foreach (QString t, expand.value()) {
273+
if (count > 0) {
274+
fullPath.append(queryDelimiter);
275+
}
276+
fullPath.append(::OpenAPI::toStringValue(t));
277+
count++;
278+
}
279+
} else if (QString("csv").indexOf("pipes") == 0) {
280+
if (fullPath.indexOf("?") > 0)
281+
fullPath.append("&");
282+
else
283+
fullPath.append("?").append(queryPrefix).append("$expand").append(querySuffix);
284+
qint32 count = 0;
285+
foreach (QString t, expand.value()) {
286+
if (count > 0) {
287+
fullPath.append(queryDelimiter);
288+
}
289+
fullPath.append(::OpenAPI::toStringValue(t));
290+
count++;
291+
}
292+
} else if (QString("csv").indexOf("deepObject") == 0) {
293+
if (fullPath.indexOf("?") > 0)
294+
fullPath.append("&");
295+
else
296+
fullPath.append("?").append(queryPrefix).append("$expand").append(querySuffix);
297+
qint32 count = 0;
298+
foreach (QString t, expand.value()) {
299+
if (count > 0) {
300+
fullPath.append(queryDelimiter);
301+
}
302+
fullPath.append(::OpenAPI::toStringValue(t));
303+
count++;
304+
}
305+
}
306+
}
307+
}
222308
OAIHttpRequestWorker *worker = new OAIHttpRequestWorker(this, _manager);
223309
worker->setTimeOut(_timeOut);
224310
worker->setWorkingDirectory(_workingDirectory);
@@ -235,7 +321,7 @@ void OAIMeUserApi::meGet() {
235321
}
236322
#endif
237323

238-
connect(worker, &OAIHttpRequestWorker::on_execution_finished, this, &OAIMeUserApi::meGetCallback);
324+
connect(worker, &OAIHttpRequestWorker::on_execution_finished, this, &OAIMeUserApi::getOwnUserCallback);
239325
connect(this, &OAIMeUserApi::abortRequestsSignal, worker, &QObject::deleteLater);
240326
connect(worker, &QObject::destroyed, this, [this]() {
241327
if (findChildren<OAIHttpRequestWorker*>().count() == 0) {
@@ -246,7 +332,7 @@ void OAIMeUserApi::meGet() {
246332
worker->execute(&input);
247333
}
248334

249-
void OAIMeUserApi::meGetCallback(OAIHttpRequestWorker *worker) {
335+
void OAIMeUserApi::getOwnUserCallback(OAIHttpRequestWorker *worker) {
250336
QString error_str = worker->error_str;
251337
QNetworkReply::NetworkError error_type = worker->error_type;
252338

@@ -257,11 +343,11 @@ void OAIMeUserApi::meGetCallback(OAIHttpRequestWorker *worker) {
257343
worker->deleteLater();
258344

259345
if (worker->error_type == QNetworkReply::NoError) {
260-
emit meGetSignal(output);
261-
emit meGetSignalFull(worker, output);
346+
emit getOwnUserSignal(output);
347+
emit getOwnUserSignalFull(worker, output);
262348
} else {
263-
emit meGetSignalE(output, error_type, error_str);
264-
emit meGetSignalEFull(worker, error_type, error_str);
349+
emit getOwnUserSignalE(output, error_type, error_str);
350+
emit getOwnUserSignalEFull(worker, error_type, error_str);
265351
}
266352
}
267353

client/OAIMeUserApi.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
#include "OAIOdata_error.h"
2525
#include "OAIUser.h"
26+
#include <QSet>
2627
#include <QString>
2728

2829
#include <QObject>
@@ -61,8 +62,10 @@ class OAIMeUserApi : public QObject {
6162
QString getParamStyleSuffix(const QString &style);
6263
QString getParamStyleDelimiter(const QString &style, const QString &name, bool isExplode);
6364

64-
65-
void meGet();
65+
/**
66+
* @param[in] expand QSet<QString> [optional]
67+
*/
68+
void getOwnUser(const ::OpenAPI::OptionalParam<QSet<QString>> &expand = ::OpenAPI::OptionalParam<QSet<QString>>());
6669

6770

6871
private:
@@ -87,17 +90,17 @@ class OAIMeUserApi : public QObject {
8790
OauthPassword _passwordFlow;
8891
int _OauthMethod = 0;
8992

90-
void meGetCallback(OAIHttpRequestWorker *worker);
93+
void getOwnUserCallback(OAIHttpRequestWorker *worker);
9194

9295
signals:
9396

94-
void meGetSignal(OAIUser summary);
97+
void getOwnUserSignal(OAIUser summary);
9598

96-
void meGetSignalFull(OAIHttpRequestWorker *worker, OAIUser summary);
99+
void getOwnUserSignalFull(OAIHttpRequestWorker *worker, OAIUser summary);
97100

98-
void meGetSignalE(OAIUser summary, QNetworkReply::NetworkError error_type, QString error_str);
101+
void getOwnUserSignalE(OAIUser summary, QNetworkReply::NetworkError error_type, QString error_str);
99102

100-
void meGetSignalEFull(OAIHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str);
103+
void getOwnUserSignalEFull(OAIHttpRequestWorker *worker, QNetworkReply::NetworkError error_type, QString error_str);
101104

102105
void abortRequestsSignal();
103106
void allPendingRequestsCompleted();

0 commit comments

Comments
 (0)