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