Advertisement
Guest User

Untitled

a guest
Sep 14th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.01 KB | None | 0 0
  1. package viktoriia.vihriian.todolist;
  2.  
  3. import android.os.Bundle;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7.  
  8. import com.simplexsolutionsinc.Utils.Log;
  9. import com.sx_network.FailureRequestResult;
  10. import com.sx_network.SXAccountsManager;
  11. import com.sx_network.SuccessRequestResult;
  12.  
  13. import org.json.JSONObject;
  14.  
  15. import java.io.DataInputStream;
  16. import java.io.DataOutputStream;
  17. import java.io.IOException;
  18. import java.io.InputStream;
  19. import java.io.OutputStream;
  20. import java.nio.ByteBuffer;
  21. import java.nio.ByteOrder;
  22. import java.security.cert.CertificateException;
  23. import java.security.cert.X509Certificate;
  24.  
  25. import javax.net.ssl.SSLContext;
  26. import javax.net.ssl.SSLSocket;
  27. import javax.net.ssl.TrustManager;
  28. import javax.net.ssl.X509TrustManager;
  29.  
  30. import viktoriia.vihriian.todolist.tools.proto.Message;
  31. import viktoriia.vihriian.todolist.tools.proto.MessageCommon;
  32. import viktoriia.vihriian.todolist.tools.proto.MessageTypeOuterClass;
  33. import viktoriia.vihriian.todolist.tools.proto.MessageWorkgroup;
  34.  
  35. public class MainActivity extends AppCompatActivity {
  36.     public final String LOG = getClass().getName();
  37.  
  38.     @Override
  39.     protected void onCreate(Bundle savedInstanceState) {
  40.         super.onCreate(savedInstanceState);
  41.         setContentView(R.layout.activity_main);
  42.  
  43.         new Thread(new Runnable() {
  44.             @Override
  45.             public void run() {
  46. //                        registerUser("vihriian_viktoriia@gmail.com", "kelguguza112");
  47.                 authorizeUser("to_improvis@mail.ru", "kelguguza112");
  48.             }
  49.         }).start();
  50.     }
  51.  
  52.     private void authorizeUser(String login, String password) {
  53.         SXAccountsManager account = SXAccountsManager.getInstance();
  54.         account.init(getApplication());
  55.  
  56.         account.authorizeUser(login, password, new SuccessRequestResult() {
  57.                     @Override
  58.                     public void onSuccess(JSONObject response, String login, String password) {
  59.                         final String session = response.optString("session");
  60.  
  61.                         new Thread(new Runnable() {
  62.                             @Override
  63.                             public void run() {
  64.                                 communicateWithServer(session);
  65.                             }
  66.                         }).start();
  67.  
  68.                         Log.d(LOG, "Authorization was successful!\n" + session);
  69.                     }
  70.                 },
  71.                 new FailureRequestResult() {
  72.                     @Override
  73.                     public void onFailure(JSONObject response, String login, String password) {
  74.                         Log.d(LOG, "Authorization failed!\n" + response.toString());
  75.                     }
  76.                 });
  77.  
  78.     }
  79.  
  80.     private void registerUser(String login, String password) {
  81.         SXAccountsManager account = SXAccountsManager.getInstance();
  82.         account.init(getApplication());
  83.         account.registerUser(login, password, new SuccessRequestResult() {
  84.                     @Override
  85.                     public void onSuccess(JSONObject response, String login, String password) {
  86.                         Log.d(LOG, "Registration was successful!\n" + response.toString());
  87.                     }
  88.                 },
  89.                 new FailureRequestResult() {
  90.                     @Override
  91.                     public void onFailure(JSONObject response, String login, String password) {
  92.                         Log.d(LOG, "Registration failed!\n" + response.toString());
  93.                     }
  94.                 });
  95.     }
  96.  
  97.     private void communicateWithServer(String session) {
  98.  
  99.         TrustManager trustManager = new DefaultTrustManager();
  100.         SSLContext sslContext = null;
  101.         SSLSocket sslSocket = null;
  102.  
  103.         try {
  104.             sslContext = SSLContext.getInstance("TLS");
  105.             sslContext.init(null, new TrustManager[]{ trustManager }, null);
  106.             sslSocket = (SSLSocket) sslContext.getSocketFactory()
  107.                     .createSocket("rpc.v1.keepsolid.com", 443);
  108.  
  109.             Log.d(LOG, "Before handshake " + sslSocket.toString());
  110.             sslSocket.startHandshake();
  111.             Log.d(LOG, "After handshake " + sslSocket.toString());
  112.  
  113.             DataOutputStream dataOutputStream = new DataOutputStream(sslSocket.getOutputStream());
  114.             DataInputStream dataInputStream = new DataInputStream(sslSocket.getInputStream());
  115.  
  116. //            send request
  117.             MessageWorkgroup.WorkGroupsListRequest.Builder workGroupsListRequest =
  118.                     MessageWorkgroup.WorkGroupsListRequest.newBuilder()
  119.                             .setFilter(MessageCommon.Filter.ALL_ENTRIES)
  120.                             .setSessionId(session);
  121.  
  122.             Message.Request request = Message.Request.newBuilder()
  123.                     .setMessageType(MessageTypeOuterClass.MessageType.RPC_WORKGROUPS_LIST)
  124.                     .setServiceType(1)
  125.                     .setIsDebug(true)
  126.                     .setWorkgroupsList(workGroupsListRequest)
  127.                     .build();
  128.  
  129.             byte[] message = request.toByteArray();
  130.             long sequenceNumber = 0;
  131.  
  132.             ByteBuffer bb = ByteBuffer.allocate(Long.SIZE / 8);
  133.             bb.order(ByteOrder.LITTLE_ENDIAN);
  134.  
  135.             dataOutputStream.writeLong(sequenceNumber);
  136.  
  137.             bb.putLong(message.length);
  138.             dataOutputStream.write(bb.array());
  139.             dataOutputStream.write(message);
  140.             dataOutputStream.flush();
  141.  
  142. //            get response
  143.             sequenceNumber = dataInputStream.readLong();
  144.             Log.d(LOG, "Sequence number: " + sequenceNumber);
  145.  
  146.             byte[] readBuffer = new byte[4];
  147.             dataInputStream.read(readBuffer);
  148.  
  149.             int size = (readBuffer[0] & 0xFF) | (readBuffer[1] & 0xFF) << 8 | (readBuffer[2] &
  150.                     0xFF) << 16 | (readBuffer[3] & 0xFF) << 24;
  151.  
  152.             dataInputStream.readInt();
  153.  
  154.             byte[] bufferProto = new byte[size];
  155.             dataInputStream.read(bufferProto);
  156.             Message.Response response = Message.Response.newBuilder()
  157.                     .mergeFrom(bufferProto)
  158.                     .build();
  159.  
  160. //            Log.d(LOG, "Response: \n" + response);
  161.             for (MessageCommon.WorkGroupInfo info : response.getWorkgroupsList()
  162.                     .getWorkgroupInfoListList()) {
  163.                 Log.d(LOG, "\n" + info);
  164.             }
  165.             dataOutputStream.close();
  166.             dataInputStream.close();
  167.             sslSocket.close();
  168.         } catch (Exception e) {
  169.             e.printStackTrace();
  170.         }
  171.     }
  172.  
  173.     private static class DefaultTrustManager implements X509TrustManager {
  174.  
  175.         @Override
  176.         public void checkClientTrusted(X509Certificate[] chain, String authType)
  177.                 throws CertificateException {
  178.         }
  179.  
  180.         @Override
  181.         public void checkServerTrusted(X509Certificate[] chain, String authType)
  182.                 throws CertificateException {
  183.         }
  184.  
  185.         @Override
  186.         public X509Certificate[] getAcceptedIssuers() {
  187.             return null;
  188.         }
  189.     }
  190.  
  191.     //Little Endian order
  192.     public void writeInt(OutputStream os, int i) throws IOException {
  193.         ByteBuffer bytes = ByteBuffer.allocate(4).putInt(i);
  194.         bytes.order(ByteOrder.LITTLE_ENDIAN);
  195.         os.write(bytes.array());
  196.     }
  197.  
  198.     public static byte[] readPart(InputStream in, long offset, int length) throws Exception {
  199.         byte[] data = new byte[length];
  200.         in.skip(offset);
  201.         in.read(data, 0, data.length);
  202.  
  203.         return data;
  204.     }
  205.  
  206.  
  207.     @Override
  208.     public boolean onCreateOptionsMenu(Menu menu) {
  209.         getMenuInflater().inflate(R.menu.menu_main, menu);
  210.  
  211.         return true;
  212.     }
  213.  
  214.     @Override
  215.     public boolean onOptionsItemSelected(MenuItem item) {
  216.         int id = item.getItemId();
  217.  
  218.         if (id == R.id.action_settings) {
  219.             return true;
  220.         }
  221.  
  222.         return super.onOptionsItemSelected(item);
  223.     }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement