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