ECAvailableCheckTask.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package epson.epsonconnectregistration;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.content.Context;
  5. import android.content.DialogInterface;
  6. import android.net.Uri;
  7. import android.os.AsyncTask;
  8. import android.util.Base64;
  9. import android.util.Xml;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.TextView;
  13. import com.epson.mobilephone.common.wifidirect.WiFiControl;
  14. import com.epson.mobilephone.common.wifidirect.WiFiDirectManager;
  15. import epson.common.httpclient.IAHttpClient;
  16. import epson.print.BuildConfig;
  17. import java.io.ByteArrayInputStream;
  18. import java.io.IOException;
  19. import java.io.UnsupportedEncodingException;
  20. import org.apache.commons.lang.CharEncoding;
  21. import org.xmlpull.v1.XmlPullParserException;
  22. public class ECAvailableCheckTask extends ECBaseTask {
  23. private static final String CONTENT_TYPE_FORM = "application/x-www-form-urlencoded";
  24. private static final String HEALTHCHECK_BODY = "c=1";
  25. private static final String HEALTHCHECK_ENCODE = "aHR0cHM6Ly93d3cuZXBzb25jb25uZWN0LmNvbS9kOGQzYjkwNGJkYzk2YzZjMjc1NTAwYjVhZWZk\nM2U0YS92MS9zZXR1cA==\n";
  26. private static final String HEALTHCHECK_ENCODE2 = "aHR0cHM6Ly9zdGcxLWhyby13MDEuZXBzb25jb25uZWN0LmNvbS9kOGQzYjkwNGJkYzk2YzZjMjc1\nNTAwYjVhZWZkM2U0YS92MS9zZXR1cA==\n";
  27. private static final String HEALTHCHECK_OK = "Open";
  28. private static final String TAG = "ECAvailableCheckTask";
  29. private boolean mIsBLEContent;
  30. public ECAvailableCheckTask(boolean z) {
  31. mIsBLEContent = z;
  32. }
  33. protected ECStatus doInBackground(Void... voidArr) {
  34. String str;
  35. IAHttpClient iAHttpClient = new IAHttpClient();
  36. Context checkParam = checkParam();
  37. if (checkParam == null) {
  38. return ECStatus.ERROR_UNEXPECTED;
  39. }
  40. String curSSID = WiFiDirectManager.getCurSSID(checkParam);
  41. if (curSSID == null || !curSSID.startsWith(WiFiControl.SSID_SIMPLEAP_PREFIX)) {
  42. try {
  43. if ("Beta".equals(BuildConfig.FLAVOR)) {
  44. str = new String(Base64.decode(HEALTHCHECK_ENCODE2, 0), CharEncoding.UTF_8);
  45. } else {
  46. str = new String(Base64.decode(HEALTHCHECK_ENCODE, 0), CharEncoding.UTF_8);
  47. }
  48. IAHttpClient.HttpPost httpPost = new IAHttpClient.HttpPost(str);
  49. httpPost.setContentType("application/x-www-form-urlencoded");
  50. httpPost.setEntity(HEALTHCHECK_BODY.getBytes());
  51. httpPost.setContentLength(Integer.valueOf(HEALTHCHECK_BODY.getBytes().length));
  52. try {
  53. IAHttpClient.HttpResponse execute = iAHttpClient.execute(httpPost);
  54. if (execute.getResponseCode() != 200) {
  55. throw new IOException("health_check ResponseCode = " + execute.getResponseCode());
  56. } else if (!HEALTHCHECK_OK.equals(execute.getEntity().toString())) {
  57. EPLog.m83w(TAG, "EC Service Down");
  58. return ECStatus.ERROR_CANNOT_ENABLE;
  59. } else {
  60. Uri endpoint = getEndpoint();
  61. IAHttpClient.HttpPost httpPost2 = new IAHttpClient.HttpPost(endpoint.toString());
  62. SoapWEBSETUPDataInfo soapWEBSETUPDataInfo = new SoapWEBSETUPDataInfo();
  63. SoapAUTHENTICATIONDataInfo soapAUTHENTICATIONDataInfo = new SoapAUTHENTICATIONDataInfo();
  64. try {
  65. String createGetRequest = SoapRequestFactory.createGetRequest(checkParam, endpoint);
  66. httpPost2.setContentType("application/soap+xml");
  67. byte[] bytes = createGetRequest.getBytes(Xml.Encoding.UTF_8.name());
  68. httpPost2.setEntity(bytes);
  69. httpPost2.setContentLength(Integer.valueOf(bytes.length));
  70. IAHttpClient.HttpResponse execute2 = iAHttpClient.execute(httpPost2);
  71. if (execute2.getResponseCode() == 200) {
  72. ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(execute2.getEntity().toByteArray());
  73. soapWEBSETUPDataInfo.parseXml(byteArrayInputStream);
  74. ECStatus checkECPrinterStatus = soapWEBSETUPDataInfo.checkECPrinterStatus();
  75. if (checkECPrinterStatus != ECStatus.ERROR_NONE) {
  76. return checkECPrinterStatus;
  77. }
  78. soapAUTHENTICATIONDataInfo.parseXml(byteArrayInputStream);
  79. if (soapAUTHENTICATIONDataInfo.isAdminMode()) {
  80. return ECStatus.ERROR_PRINTER_ADMIN_MODE;
  81. }
  82. return ECStatus.ERROR_NONE;
  83. } else if (execute2.getResponseCode() == 500) {
  84. return ECStatus.ERROR_PRINTER_NOT_SUPPORT_EC;
  85. } else {
  86. throw new IOException("soapRequest ResponseCode = " + execute2.getResponseCode());
  87. }
  88. } catch (IOException e) {
  89. e.printStackTrace();
  90. return ECStatus.ERROR_COMMUNICATION;
  91. } catch (XmlPullParserException e2) {
  92. e2.printStackTrace();
  93. return ECStatus.ERROR_UNEXPECTED;
  94. }
  95. }
  96. } catch (IOException e3) {
  97. e3.printStackTrace();
  98. return ECStatus.ERROR_COMMUNICATION;
  99. }
  100. } catch (UnsupportedEncodingException e4) {
  101. e4.printStackTrace();
  102. return ECStatus.ERROR_UNEXPECTED;
  103. }
  104. } else {
  105. EPLog.m83w(TAG, "Connected SimpleAP !!");
  106. return ECStatus.ERROR_CANNOT_ENABLE;
  107. }
  108. }
  109. protected void onPostExecute(ECStatus eCStatus) {
  110. super.onPostExecute(eCStatus);
  111. Activity activity = (Activity) activityWeakReference.get();
  112. if (activity == null) {
  113. EPLog.m83w(TAG, "activity is null. Maybe activity died");
  114. } else if (!mIsBLEContent) {
  115. if (C19985.$SwitchMap$epson$epsonconnectregistration$ECStatus[eCStatus.ordinal()] != 1) {
  116. createECDialog(eCStatus);
  117. return;
  118. }
  119. openWebPage(activity, Uri.parse("https://www.epsonconnect.com/user/"));
  120. activity.finish();
  121. } else if (C19985.$SwitchMap$epson$epsonconnectregistration$ECStatus[eCStatus.ordinal()] != 2) {
  122. activity.finish();
  123. } else {
  124. createECDialog(eCStatus);
  125. }
  126. }
  127. private void startECConfigure(Activity activity, Uri uri) {
  128. ECConfigurationTask eCConfigurationTask = new ECConfigurationTask();
  129. eCConfigurationTask.setContext(activity);
  130. eCConfigurationTask.setRootUri(uri);
  131. eCConfigurationTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Void[0]);
  132. }
  133. private void createECDialog(ECStatus eCStatus) {
  134. final Activity activity = (Activity) activityWeakReference.get();
  135. if (activity != null) {
  136. View inflate = activity.getLayoutInflater().inflate(R.layout.dialog_epsonconnect, (ViewGroup) null);
  137. TextView textView = (TextView) inflate.findViewById(R.id.epsonconnect_title_tv);
  138. TextView textView2 = (TextView) inflate.findViewById(R.id.epsonconnect_msg_tv);
  139. if (mIsBLEContent) {
  140. textView.setText(R.string.ec_ble_registration_dialog_title);
  141. } else {
  142. textView.setText(R.string.ec_registration_dialog_title);
  143. }
  144. if (eCStatus != ECStatus.ERROR_NONE) {
  145. inflate.findViewById(R.id.epsonconnect_title_tv).setVisibility(View.GONE);
  146. inflate.findViewById(R.id.epsonconnect_sub_msg_tv).setVisibility(View.GONE);
  147. switch (eCStatus) {
  148. case ERROR_PRINTER_NOT_SUPPORT_EC:
  149. textView2.setText(R.string.ec_registration_dialog_not_support_ec);
  150. break;
  151. case ERROR_PRINTER_ADMIN_MODE:
  152. textView2.setText(R.string.ec_registration_dialog_admin_mode);
  153. break;
  154. default:
  155. textView2.setText(R.string.ec_registration_dialog_communication_error);
  156. break;
  157. }
  158. }
  159. final C19941 r2 = new DialogInterface.OnCancelListener() {
  160. public void onCancel(DialogInterface dialogInterface) {
  161. dialogInterface.dismiss();
  162. activity.finish();
  163. }
  164. };
  165. AlertDialog.Builder view = new AlertDialog.Builder(activity).setView(inflate);
  166. if (C19985.$SwitchMap$epson$epsonconnectregistration$ECStatus[eCStatus.ordinal()] != 2) {
  167. view.setNegativeButton(R.string.ec_registration_button_close, new DialogInterface.OnClickListener() {
  168. public void onClick(DialogInterface dialogInterface, int i) {
  169. r2.onCancel(dialogInterface);
  170. }
  171. });
  172. } else {
  173. view.setNeutralButton(R.string.ec_registration_button_signup, new DialogInterface.OnClickListener() {
  174. public void onClick(DialogInterface dialogInterface, int i) {
  175. ECAvailableCheckTask eCAvailableCheckTask = ECAvailableCheckTask.this;
  176. eCAvailableCheckTask.startECConfigure(activity, eCAvailableCheckTask.rootUri);
  177. }
  178. }).setPositiveButton(R.string.ec_registration_button_skip, new DialogInterface.OnClickListener() {
  179. public void onClick(DialogInterface dialogInterface, int i) {
  180. r2.onCancel(dialogInterface);
  181. }
  182. });
  183. }
  184. AlertDialog create = view.create();
  185. create.setCanceledOnTouchOutside(false);
  186. create.setOnCancelListener(r2);
  187. create.setOnShowListener($$Lambda$ECAvailableCheckTask$gioJU6TFsLI9iDXVbpchuMiYbOo.INSTANCE);
  188. create.show();
  189. }
  190. }
  191. static /* synthetic */ void lambda$createECDialog$0(DialogInterface dialogInterface) {
  192. AlertDialog alertDialog = (AlertDialog) dialogInterface;
  193. alertDialog.getButton(-1).setAllCaps(false);
  194. alertDialog.getButton(-3).setAllCaps(false);
  195. }
  196. }