7
7
import net .xdow .aliyundrive .bean .AliyunDriveFilePartInfo ;
8
8
import net .xdow .aliyundrive .bean .AliyunDriveRequest ;
9
9
import net .xdow .aliyundrive .bean .AliyunDriveResponse ;
10
- import net .xdow .aliyundrive .net .AccessTokenInvalidInterceptor ;
11
10
import net .xdow .aliyundrive .net .AliyunDriveCall ;
12
- import net .xdow .aliyundrive .net .XHttpLoggingInterceptor ;
11
+ import net .xdow .aliyundrive .net .interceptor .AccessTokenInvalidInterceptor ;
12
+ import net .xdow .aliyundrive .net .interceptor .AliyunDriveAuthenticateInterceptor ;
13
+ import net .xdow .aliyundrive .net .interceptor .XHttpLoggingInterceptor ;
13
14
import net .xdow .aliyundrive .util .JsonUtils ;
14
15
import net .xdow .aliyundrive .util .StringUtils ;
15
16
import okhttp3 .*;
18
19
import java .util .*;
19
20
import java .util .concurrent .TimeUnit ;
20
21
21
- public class AliyunDriveOpenApiImplV1 implements IAliyunDrive {
22
+ public class AliyunDriveOpenApiImplV1 implements IAliyunDrive , AliyunDriveAuthenticateInterceptor . IAccessTokenInfoGetter {
22
23
23
24
private OkHttpClient mOkHttpClient ;
24
25
public static final MediaType JSON = MediaType .parse ("application/json; charset=utf-8" );
@@ -33,8 +34,10 @@ public AliyunDriveOpenApiImplV1() {
33
34
34
35
private void initOkHttp () {
35
36
XHttpLoggingInterceptor loggingInterceptor = new XHttpLoggingInterceptor ();
37
+ AliyunDriveAuthenticateInterceptor authenticateInterceptor = new AliyunDriveAuthenticateInterceptor (this );
36
38
this .mOkHttpClient = new OkHttpClient .Builder ()
37
39
.addInterceptor (loggingInterceptor )//response ↑
40
+ .addInterceptor (authenticateInterceptor ) //response ↑
38
41
.addInterceptor (this .mAccessTokenInvalidInterceptor ) //response ↑
39
42
.addInterceptor (new Interceptor () {
40
43
@ Override
@@ -109,21 +112,20 @@ private Request buildCommonRequestHeader(Request request) {
109
112
110
113
@ Override
111
114
public AliyunDriveCall <AliyunDriveResponse .AccessTokenInfo > getAccessToken (String url ) {
112
- return postApiRequest (url , AliyunDriveResponse .AccessTokenInfo .class );
115
+ return postApiRequest (url , AliyunDriveResponse .AccessTokenInfo .class , FLAG_API_ANONYMOUS_CALL );
113
116
}
114
117
115
118
@ Override
116
119
public AliyunDriveCall <AliyunDriveResponse .QrCodeGenerateInfo > qrCodeGenerate (String url ) {
117
- return postApiRequest (url , AliyunDriveResponse .QrCodeGenerateInfo .class );
120
+ return postApiRequest (url , AliyunDriveResponse .QrCodeGenerateInfo .class , FLAG_API_ANONYMOUS_CALL );
118
121
}
119
122
120
123
@ Override
121
124
public AliyunDriveCall <AliyunDriveResponse .QrCodeQueryStatusInfo > qrCodeQueryStatus (String sid ) {
122
125
String url = String .format (Locale .getDefault (), AliyunDriveConstant .API_QRCODE_QUERY_STATUS , sid );
123
- return getApiRequest (url , AliyunDriveResponse .QrCodeQueryStatusInfo .class );
126
+ return getApiRequest (url , AliyunDriveResponse .QrCodeQueryStatusInfo .class , FLAG_API_ANONYMOUS_CALL );
124
127
}
125
128
126
-
127
129
@ Override
128
130
public String qrCodeImageUrl (String sid ) {
129
131
return String .format (Locale .getDefault (), AliyunDriveConstant .API_QRCODE_IMAGE , sid );
@@ -140,37 +142,44 @@ public AliyunDriveCall<AliyunDriveResponse.AccessTokenInfo> getAccessToken(Aliyu
140
142
return new AliyunDriveCall <>(res );
141
143
}
142
144
}
143
- return postApiRequest (AliyunDriveConstant .API_ACCESS_TOKEN , query , AliyunDriveResponse .AccessTokenInfo .class );
145
+ return postApiRequest (AliyunDriveConstant .API_ACCESS_TOKEN , query ,
146
+ AliyunDriveResponse .AccessTokenInfo .class , FLAG_API_ANONYMOUS_CALL );
144
147
}
145
148
146
149
@ Override
147
150
public AliyunDriveCall <AliyunDriveResponse .QrCodeGenerateInfo > qrCodeGenerate (AliyunDriveRequest .QrCodeGenerateInfo query ) {
148
- return postApiRequest (AliyunDriveConstant .API_QRCODE_GENERATE , query , AliyunDriveResponse .QrCodeGenerateInfo .class );
151
+ return postApiRequest (AliyunDriveConstant .API_QRCODE_GENERATE , query ,
152
+ AliyunDriveResponse .QrCodeGenerateInfo .class , FLAG_API_ANONYMOUS_CALL );
149
153
}
150
154
151
155
@ Override
152
156
public AliyunDriveCall <AliyunDriveResponse .FileListInfo > fileList (AliyunDriveRequest .FileListInfo query ) {
153
- return postApiRequest (AliyunDriveConstant .API_FILE_LIST , query , AliyunDriveResponse .FileListInfo .class );
157
+ return postApiRequest (AliyunDriveConstant .API_FILE_LIST , query ,
158
+ AliyunDriveResponse .FileListInfo .class , FLAG_API_AUTHENTICATION_CALL );
154
159
}
155
160
156
161
@ Override
157
162
public AliyunDriveCall <AliyunDriveResponse .UserSpaceInfo > getUserSpaceInfo () {
158
- return postApiRequest (AliyunDriveConstant .API_USER_GET_SPACE_INFO , AliyunDriveResponse .UserSpaceInfo .class );
163
+ return postApiRequest (AliyunDriveConstant .API_USER_GET_SPACE_INFO ,
164
+ AliyunDriveResponse .UserSpaceInfo .class , FLAG_API_AUTHENTICATION_CALL );
159
165
}
160
166
161
167
@ Override
162
168
public AliyunDriveCall <AliyunDriveResponse .UserDriveInfo > getUserDriveInfo () {
163
- return postApiRequest (AliyunDriveConstant .API_USER_GET_DRIVE_INFO , AliyunDriveResponse .UserDriveInfo .class );
169
+ return postApiRequest (AliyunDriveConstant .API_USER_GET_DRIVE_INFO ,
170
+ AliyunDriveResponse .UserDriveInfo .class , FLAG_API_AUTHENTICATION_CALL );
164
171
}
165
172
166
173
@ Override
167
174
public AliyunDriveCall <AliyunDriveResponse .FileGetInfo > fileGet (AliyunDriveRequest .FileGetInfo query ) {
168
- return postApiRequest (AliyunDriveConstant .API_FILE_GET , query , AliyunDriveResponse .FileGetInfo .class );
175
+ return postApiRequest (AliyunDriveConstant .API_FILE_GET , query ,
176
+ AliyunDriveResponse .FileGetInfo .class , FLAG_API_AUTHENTICATION_CALL );
169
177
}
170
178
171
179
@ Override
172
180
public AliyunDriveCall <AliyunDriveResponse .FileBatchGetInfo > fileBatchGet (AliyunDriveRequest .FileBatchGetInfo query ) {
173
- return postApiRequest (AliyunDriveConstant .API_FILE_BATCH_GET , query , AliyunDriveResponse .FileBatchGetInfo .class );
181
+ return postApiRequest (AliyunDriveConstant .API_FILE_BATCH_GET , query ,
182
+ AliyunDriveResponse .FileBatchGetInfo .class , FLAG_API_AUTHENTICATION_CALL );
174
183
}
175
184
176
185
@ Override
@@ -179,7 +188,8 @@ public AliyunDriveCall<AliyunDriveResponse.FileGetDownloadUrlInfo> fileGetDownlo
179
188
if (expireSec < 900 || expireSec > 115200 ) {
180
189
throw new IllegalArgumentException ("Error: expire_sec argument must between 900-115200s, got: " + expireSec );
181
190
}
182
- return postApiRequest (AliyunDriveConstant .API_FILE_GET_DOWNLOAD_URL , query , AliyunDriveResponse .FileGetDownloadUrlInfo .class );
191
+ return postApiRequest (AliyunDriveConstant .API_FILE_GET_DOWNLOAD_URL , query ,
192
+ AliyunDriveResponse .FileGetDownloadUrlInfo .class , FLAG_API_AUTHENTICATION_CALL );
183
193
}
184
194
185
195
@ Override
@@ -192,22 +202,26 @@ public AliyunDriveCall<AliyunDriveResponse.FileCreateInfo> fileCreate(AliyunDriv
192
202
+ AliyunDriveConstant .MAX_FILE_CREATE_PART_INFO_LIST_SIZE + ", got: " + partInfoListSize );
193
203
}
194
204
}
195
- return postApiRequest (AliyunDriveConstant .API_FILE_CREATE , query , AliyunDriveResponse .FileCreateInfo .class );
205
+ return postApiRequest (AliyunDriveConstant .API_FILE_CREATE , query ,
206
+ AliyunDriveResponse .FileCreateInfo .class , FLAG_API_AUTHENTICATION_CALL );
196
207
}
197
208
198
209
@ Override
199
210
public AliyunDriveCall <AliyunDriveResponse .FileGetUploadUrlInfo > fileGetUploadUrl (AliyunDriveRequest .FileGetUploadUrlInfo query ) {
200
- return postApiRequest (AliyunDriveConstant .API_FILE_GET_UPLOAD_URL , query , AliyunDriveResponse .FileGetUploadUrlInfo .class );
211
+ return postApiRequest (AliyunDriveConstant .API_FILE_GET_UPLOAD_URL , query ,
212
+ AliyunDriveResponse .FileGetUploadUrlInfo .class , FLAG_API_AUTHENTICATION_CALL );
201
213
}
202
214
203
215
@ Override
204
216
public AliyunDriveCall <AliyunDriveResponse .FileListUploadPartsInfo > fileListUploadedParts (AliyunDriveRequest .FileListUploadPartsInfo query ) {
205
- return postApiRequest (AliyunDriveConstant .API_FILE_LIST_UPLOADED_PARTS , query , AliyunDriveResponse .FileListUploadPartsInfo .class );
217
+ return postApiRequest (AliyunDriveConstant .API_FILE_LIST_UPLOADED_PARTS , query ,
218
+ AliyunDriveResponse .FileListUploadPartsInfo .class , FLAG_API_AUTHENTICATION_CALL );
206
219
}
207
220
208
221
@ Override
209
222
public AliyunDriveCall <AliyunDriveResponse .FileUploadCompleteInfo > fileUploadComplete (AliyunDriveRequest .FileUploadCompleteInfo query ) {
210
- return postApiRequest (AliyunDriveConstant .API_FILE_UPLOAD_COMPLETE , query , AliyunDriveResponse .FileUploadCompleteInfo .class );
223
+ return postApiRequest (AliyunDriveConstant .API_FILE_UPLOAD_COMPLETE , query ,
224
+ AliyunDriveResponse .FileUploadCompleteInfo .class , FLAG_API_AUTHENTICATION_CALL );
211
225
}
212
226
213
227
@ Override
@@ -224,32 +238,38 @@ public AliyunDriveCall<AliyunDriveResponse.FileRenameInfo> fileRename(AliyunDriv
224
238
);
225
239
this .fileDelete (deleteQuery ).execute ();
226
240
}
227
- return postApiRequest (AliyunDriveConstant .API_FILE_RENAME , query , AliyunDriveResponse .FileRenameInfo .class );
241
+ return postApiRequest (AliyunDriveConstant .API_FILE_RENAME , query ,
242
+ AliyunDriveResponse .FileRenameInfo .class , FLAG_API_AUTHENTICATION_CALL );
228
243
}
229
244
230
245
@ Override
231
246
public AliyunDriveCall <AliyunDriveResponse .FileMoveInfo > fileMove (AliyunDriveRequest .FileMoveInfo query ) {
232
- return postApiRequest (AliyunDriveConstant .API_FILE_MOVE , query , AliyunDriveResponse .FileMoveInfo .class );
247
+ return postApiRequest (AliyunDriveConstant .API_FILE_MOVE , query ,
248
+ AliyunDriveResponse .FileMoveInfo .class , FLAG_API_AUTHENTICATION_CALL );
233
249
}
234
250
235
251
@ Override
236
252
public AliyunDriveCall <AliyunDriveResponse .FileCopyInfo > fileCopy (AliyunDriveRequest .FileCopyInfo query ) {
237
- return postApiRequest (AliyunDriveConstant .API_FILE_COPY , query , AliyunDriveResponse .FileCopyInfo .class );
253
+ return postApiRequest (AliyunDriveConstant .API_FILE_COPY , query ,
254
+ AliyunDriveResponse .FileCopyInfo .class , FLAG_API_AUTHENTICATION_CALL );
238
255
}
239
256
240
257
@ Override
241
258
public AliyunDriveCall <AliyunDriveResponse .FileMoveToTrashInfo > fileMoveToTrash (AliyunDriveRequest .FileMoveToTrashInfo query ) {
242
- return postApiRequest (AliyunDriveConstant .API_FILE_MOVE_TO_TRASH , query , AliyunDriveResponse .FileMoveToTrashInfo .class );
259
+ return postApiRequest (AliyunDriveConstant .API_FILE_MOVE_TO_TRASH , query ,
260
+ AliyunDriveResponse .FileMoveToTrashInfo .class , FLAG_API_AUTHENTICATION_CALL );
243
261
}
244
262
245
263
@ Override
246
264
public AliyunDriveCall <AliyunDriveResponse .FileDeleteInfo > fileDelete (AliyunDriveRequest .FileDeleteInfo query ) {
247
- return postApiRequest (AliyunDriveConstant .API_FILE_DELETE , query , AliyunDriveResponse .FileDeleteInfo .class );
265
+ return postApiRequest (AliyunDriveConstant .API_FILE_DELETE , query ,
266
+ AliyunDriveResponse .FileDeleteInfo .class , FLAG_API_AUTHENTICATION_CALL );
248
267
}
249
268
250
269
@ Override
251
270
public Call upload (String url , byte [] bytes , final int offset , final int byteCount ) {
252
271
Request request = new Request .Builder ()
272
+ .addHeader (AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_NAME , AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_VALUE )
253
273
.addHeader (XHttpLoggingInterceptor .SKIP_HEADER_NAME , XHttpLoggingInterceptor .SKIP_HEADER_VALUE )
254
274
.put (RequestBody .create (MediaType .parse ("" ), bytes , offset , byteCount ))
255
275
.url (url ).build ();
@@ -260,6 +280,8 @@ public Call upload(String url, byte[] bytes, final int offset, final int byteCou
260
280
public Call download (String url , String range , String ifRange ) {
261
281
Request .Builder builder = new Request .Builder ();
262
282
builder .addHeader (XHttpLoggingInterceptor .SKIP_HEADER_NAME , XHttpLoggingInterceptor .SKIP_HEADER_VALUE );
283
+ builder .addHeader (AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_NAME ,
284
+ AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_VALUE );
263
285
264
286
if (range != null ) {
265
287
builder .header ("range" , range );
@@ -284,7 +306,7 @@ public Map<String, String> getCommonHeaders() {
284
306
}
285
307
286
308
private <T extends AliyunDriveResponse .GenericMessageInfo > AliyunDriveCall <T > getApiRequest (
287
- String url , Class <T > classOfT ) {
309
+ String url , Class <T > classOfT , int flags ) {
288
310
Request request = new Request .Builder ()
289
311
.url (url )
290
312
.get ()
@@ -293,20 +315,28 @@ private <T extends AliyunDriveResponse.GenericMessageInfo> AliyunDriveCall<T> ge
293
315
}
294
316
295
317
private <T extends AliyunDriveResponse .GenericMessageInfo > AliyunDriveCall <T > postApiRequest (
296
- String url , Class <T > classOfT ) {
297
- Request request = new Request .Builder ()
298
- .url (url )
299
- .post (RequestBody .create (JSON , "{}" ))
300
- .build ();
301
- return new AliyunDriveCall <>(this .mOkHttpClient .newCall (request ), classOfT );
318
+ String url , Class <T > classOfT , int flags ) {
319
+ return postApiRequest (url , null , classOfT , flags );
302
320
}
303
321
304
322
private <T extends AliyunDriveResponse .GenericMessageInfo > AliyunDriveCall <T > postApiRequest (
305
- String url , Object object , Class <T > classOfT ) {
306
- Request request = new Request .Builder ()
307
- .url (url )
308
- .post (RequestBody .create (JSON , JsonUtils .toJson (object )))
309
- .build ();
310
- return new AliyunDriveCall <>(this .mOkHttpClient .newCall (request ), classOfT );
323
+ String url , Object object , Class <T > classOfT , int flags ) {
324
+ Request .Builder builder = new Request .Builder ();
325
+ builder .url (url );
326
+ if (object == null ) {
327
+ builder .post (RequestBody .create (JSON , "{}" ));
328
+ } else {
329
+ builder .post (RequestBody .create (JSON , JsonUtils .toJson (object )));
330
+ }
331
+ if ((FLAG_API_AUTHENTICATION_CALL & flags ) != 0 ) {
332
+ builder .addHeader (AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_NAME ,
333
+ AliyunDriveAuthenticateInterceptor .HEADER_AUTHENTICATE_VALUE );
334
+ }
335
+ return new AliyunDriveCall <>(this .mOkHttpClient .newCall (builder .build ()), classOfT );
336
+ }
337
+
338
+ @ Override
339
+ public AliyunDriveResponse .AccessTokenInfo getAccessTokenInfo () {
340
+ return this .mAccessTokenInfo ;
311
341
}
312
342
}
0 commit comments