GoogleV3UploadClient.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.epson.iprint.storage.gdrivev3;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.os.AsyncTask;
  5. import com.epson.iprint.storage.StorageItem;
  6. import com.epson.iprint.storage.StorageServiceClient;
  7. import com.epson.iprint.storage.gdrivev3.IprintGoogleSignIn;
  8. import epson.print.R;
  9. public class GoogleV3UploadClient extends StorageServiceClient {
  10. public static final String UPLOAD_FOLDER_NAME = "Epson iPrint";
  11. private static boolean sCheckSignIn;
  12. private IprintGoogleSignIn mIprintGoogleSignIn = new IprintGoogleSignIn();
  13. public boolean isSupportedUploadType(StorageServiceClient.UploadFileType uploadFileType) {
  14. return true;
  15. }
  16. public static boolean isCheckSignIn() {
  17. return sCheckSignIn;
  18. }
  19. public static void setSingInValue(boolean z) {
  20. sCheckSignIn = z;
  21. }
  22. public GoogleV3UploadClient() {
  23. sCheckSignIn = false;
  24. }
  25. public StorageServiceClient.Uploader getUploader(Context context, StorageServiceClient.UploadFileType uploadFileType, String str, String str2) {
  26. return new GoogleV3Uploader(context, new UploadInfo(uploadFileType, str, str2));
  27. }
  28. public StorageServiceClient.Downloader getDownloader(Context context, StorageItem storageItem, String str) {
  29. throw new UnsupportedOperationException();
  30. }
  31. @NonNull
  32. public StorageServiceClient.Enumerator getEnumerator(Context context) {
  33. throw new UnsupportedOperationException();
  34. }
  35. public boolean isSignedIn(Context context) {
  36. if (!isCheckSignIn()) {
  37. return false;
  38. }
  39. return this.mIprintGoogleSignIn.isSignInValid(context, IprintGoogleSignIn.OperationType.UPLOAD);
  40. }
  41. public boolean revokeSignedInData(Activity activity) {
  42. activity.startActivity(GoogleV3UploadSignInActivity.getDisconnectIntent(activity));
  43. return false;
  44. }
  45. public String getStorageServiceName(Context context) {
  46. return context.getString(R.string.google_drive);
  47. }
  48. class GoogleV3Uploader extends StorageServiceClient.Uploader {
  49. private final Context mContext;
  50. private UploadInfo mUploadInfo;
  51. public boolean isCancelable() {
  52. return false;
  53. }
  54. public GoogleV3Uploader(Context context, @NonNull UploadInfo uploadInfo) {
  55. super();
  56. this.mContext = context.getApplicationContext();
  57. this.mUploadInfo = uploadInfo;
  58. }
  59. public void start(StorageServiceClient.UploadCompletion uploadCompletion) {
  60. new UploadTask(this.mContext, uploadCompletion).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new UploadInfo[]{this.mUploadInfo});
  61. }
  62. }
  63. private static class UploadTask extends AsyncTask<UploadInfo, Void, Void> {
  64. private final Context mContext;
  65. private final StorageServiceClient.UploadCompletion mUploadNotifier;
  66. UploadTask(Context context, StorageServiceClient.UploadCompletion uploadCompletion) {
  67. this.mContext = context;
  68. this.mUploadNotifier = uploadCompletion;
  69. }
  70. protected Void doInBackground(UploadInfo... uploadInfoArr) {
  71. if (uploadInfoArr == null || uploadInfoArr[0] == null) {
  72. this.mUploadNotifier.onUploadComplete((String) null, (String) null, StorageServiceClient.ProcessError.ERROR);
  73. return null;
  74. }
  75. UploadInfo uploadInfo = uploadInfoArr[0];
  76. DriveWriter createDriveWriter = DriveWriter.createDriveWriter(this.mContext);
  77. try {
  78. createDriveWriter.uploadFile(uploadInfo.originalLocalPath, uploadInfo.uploadFilename, uploadInfo.fileType == StorageServiceClient.UploadFileType.PDF ? "application/pdf" : "image/jpeg", createDriveWriter.findOrCreateFolder("Epson iPrint"));
  79. notifyUploadEnd(uploadInfo, StorageServiceClient.ProcessError.NONE);
  80. return null;
  81. } catch (Exception unused) {
  82. notifyUploadEnd(uploadInfo, StorageServiceClient.ProcessError.ERROR);
  83. return null;
  84. }
  85. }
  86. private void notifyUploadEnd(UploadInfo uploadInfo, StorageServiceClient.ProcessError processError) {
  87. StorageServiceClient.UploadCompletion uploadCompletion = this.mUploadNotifier;
  88. if (uploadCompletion != null) {
  89. uploadCompletion.onUploadComplete(uploadInfo.originalLocalPath, uploadInfo.uploadFilename, processError);
  90. }
  91. }
  92. }
  93. public static class UploadInfo {
  94. StorageServiceClient.UploadFileType fileType;
  95. String originalLocalPath;
  96. String uploadFilename;
  97. public UploadInfo(@NonNull StorageServiceClient.UploadFileType uploadFileType, @NonNull String str, @NonNull String str2) {
  98. this.fileType = uploadFileType;
  99. this.originalLocalPath = str;
  100. this.uploadFilename = str2;
  101. }
  102. }
  103. }