1 /*
2
3 Copyright 2011 Cuong Le <metacuong@gmail.com>
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License as
7 published by the Free Software Foundation; either version 2 of
8 the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17
18 */
19
20 #include "droprestapi.h"
21 #include "json.h"
22
23 #include <QUrlQuery>
24 #include <QDebug>
25
26
DropRestAPI()27 DropRestAPI::DropRestAPI()
28 {
29 oauth = new OAuth();
30 }
31
~DropRestAPI()32 DropRestAPI::~DropRestAPI(){
33 delete oauth;
34 }
35
request_token()36 QNetworkRequest DropRestAPI::request_token() {
37 QUrl url(REQUEST_TOKEN_URL);
38 QNetworkRequest rt;
39
40 rt.setUrl(url);
41
42 oauth->sign("GET", &rt);
43
44 return rt;
45 }
46
request_access_token()47 QNetworkRequest DropRestAPI::request_access_token() {
48 QUrl url(REQUEST_ACCESS_TOKEN);
49 QNetworkRequest rt;
50
51 rt.setUrl(url);
52
53 oauth->sign("POST", &rt);
54
55 return rt;
56 }
57
root_dir(const QString & folder_name)58 QNetworkRequest DropRestAPI::root_dir(const QString &folder_name){
59 QUrl url(QString("%1%2").arg(FILES_URL).arg(folder_name));
60 QNetworkRequest rt;
61
62 rt.setUrl(url);
63
64 oauth->sign("GET", &rt);
65
66 return rt;
67 }
68
oauth_request_token_reply_process(QNetworkReply * networkreply)69 void DropRestAPI::oauth_request_token_reply_process(QNetworkReply *networkreply){
70 QList<QByteArray> oauth_content = networkreply->readAll().split('&');
71
72 oauth->m_secret = oauth_content.at(0).split('=').at(1);
73 oauth->m_token = oauth_content.at(1).split('=').at(1);
74 }
75
file_transfer(QString filename,QString dropbox_folder,QString boundaryStr)76 QNetworkRequest DropRestAPI::file_transfer(QString filename, QString dropbox_folder, QString boundaryStr){
77 QUrl url;
78 QNetworkRequest rt;
79
80 url.setUrl(QString("%1%2").arg(FILES_TRANSFER_URL).arg(dropbox_folder));
81 QUrlQuery query;
82 query.addQueryItem("file", filename);
83 url.setQuery(query);
84
85 rt.setUrl(url);
86 rt.setHeader(QNetworkRequest::ContentTypeHeader, QString("multipart/form-data; boundary=").append(boundaryStr));
87
88 oauth->sign("POST", &rt);
89
90 return rt;
91 }
92
file_transfer_download(QString dropbox_filepath)93 QNetworkRequest DropRestAPI::file_transfer_download(QString dropbox_filepath){
94 QUrl url;
95 url.setUrl(QString("%1%2").arg(FILES_TRANSFER_URL).arg(dropbox_filepath));
96 QNetworkRequest rt(url);
97 oauth->sign("GET", &rt);
98 return rt;
99 }
100
__delete(QString dropbox_filepath)101 QNetworkRequest DropRestAPI::__delete(QString dropbox_filepath){
102 QUrl url;
103 url.setUrl(QString("%1").arg(FILE_DELETE_URL));
104 QUrlQuery query;
105 query.addQueryItem("root", "dropbox");
106 query.addQueryItem("path", dropbox_filepath);
107 url.setQuery(query);
108 QNetworkRequest rt(url);
109 oauth->sign("GET", &rt);
110 return rt;
111 }
112
__create(QString dropbox_filepath)113 QNetworkRequest DropRestAPI::__create(QString dropbox_filepath){
114 QUrl url;
115 url.setUrl(QString("%1").arg(CREATE_FOLDER_URL));
116 QUrlQuery query;
117 query.addQueryItem("root", "dropbox");
118 query.addQueryItem("path", dropbox_filepath);
119 url.setQuery(query);
120 QNetworkRequest rt(url);
121 oauth->sign("GET", &rt);
122 return rt;
123 }
124
__move(QString path_source,QString path_destination)125 QNetworkRequest DropRestAPI::__move(QString path_source, QString path_destination){
126 QUrl url;
127 url.setUrl(QString("%1").arg(FILE_MOVE_URL));
128 QUrlQuery query;
129 query.addQueryItem("root", "dropbox");
130 query.addQueryItem("from_path", path_source);
131 query.addQueryItem("to_path", path_destination);
132 url.setQuery(query);
133
134 QNetworkRequest rt(url);
135 oauth->sign("GET", &rt);
136 return rt;
137 }
138
__copy(QString path_source,QString path_destination)139 QNetworkRequest DropRestAPI::__copy(QString path_source, QString path_destination){
140 QUrl url;
141 url.setUrl(QString("%1").arg(FILE_COPY_URL));
142 QUrlQuery query;
143 query.addQueryItem("root", "dropbox");
144 query.addQueryItem("from_path", path_source);
145 query.addQueryItem("to_path", path_destination);
146 url.setQuery(query);
147
148 QNetworkRequest rt(url);
149 oauth->sign("GET", &rt);
150 return rt;
151 }
152
__shares(QString dropbox_filepath)153 QNetworkRequest DropRestAPI::__shares(QString dropbox_filepath){
154 QUrl url;
155 url.setUrl(QString("%1").arg(SHARES_URL));
156 QUrlQuery query;
157 query.addQueryItem("root", "dropbox");
158 query.addQueryItem("path", dropbox_filepath);
159 url.setQuery(query);
160
161 QNetworkRequest rt(url);
162 oauth->sign("POST", &rt);
163 return rt;
164 }
165
accountinfo()166 QNetworkRequest DropRestAPI::accountinfo() {
167 QUrl url;
168 url.setUrl(QString("%1").arg(ACCOUNT_INFO_URL));
169 QNetworkRequest rt(url);
170 oauth->sign("GET", &rt);
171 return rt;
172 }
173