Android Open Source - digital-ocean-swimmer S S H Key Service






From Project

Back to project page digital-ocean-swimmer.

License

The source code is released under:

MIT License

If you think the Android project digital-ocean-swimmer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.yassirh.digitalocean.service;
//  ww w  .j a va2 s . c  o  m
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;

import org.apache.http.Header;
import org.apache.http.entity.ByteArrayEntity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.app.NotificationCompat;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.yassirh.digitalocean.R;
import com.yassirh.digitalocean.data.DatabaseHelper;
import com.yassirh.digitalocean.data.SSHKeyDao;
import com.yassirh.digitalocean.model.Account;
import com.yassirh.digitalocean.model.SSHKey;
import com.yassirh.digitalocean.utils.ApiHelper;

public class SSHKeyService {

  private Context context;
  private boolean isRefreshing;
    
  public SSHKeyService(Context context) {
    this.context = context;
  }

  public void getAllSSHKeysFromAPI(final boolean showProgress){
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    isRefreshing = true;
    String url = String.format("%s/account/keys/", ApiHelper.API_URL);
    AsyncHttpClient client = new AsyncHttpClient();
    client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    client.get(url, new AsyncHttpResponseHandler() {
      NotificationManager notifyManager;
      NotificationCompat.Builder builder;
      
      @Override
      public void onStart() {
        if(showProgress){
          notifyManager =
                  (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
          builder = new NotificationCompat.Builder(context);
          builder.setContentTitle(context.getResources().getString(R.string.synchronising))
              .setContentText(context.getResources().getString(R.string.synchronising_keys))
              .setSmallIcon(R.drawable.ic_launcher);
          builder.setContentIntent(PendingIntent.getActivity(context, 0, new Intent(), PendingIntent.FLAG_UPDATE_CURRENT));
          notifyManager.notify(NotificationsIndexes.NOTIFICATION_GET_ALL_KEYS, builder.build());
        }
      }
      
      @Override
      public void onFinish() {
        isRefreshing = false;
        if(showProgress){
          notifyManager.cancel(NotificationsIndexes.NOTIFICATION_GET_ALL_KEYS);
        }
      }
      
      @Override
      public void onProgress(int bytesWritten, int totalSize) {
        if(showProgress){
          builder.setProgress(100, 100 * bytesWritten / totalSize, false);
          notifyManager.notify(NotificationsIndexes.NOTIFICATION_GET_ALL_KEYS, builder.build());
        }
      }
      
      @Override
      public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        if(statusCode == 401){
          ApiHelper.showAccessDenied();
        }
      }

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                try {
                    JSONObject jsonObject = new JSONObject(new String(responseBody));
                    List<SSHKey> sshKeys = new ArrayList<SSHKey>();
                    JSONArray sshKeysJSONArray = jsonObject.getJSONArray("ssh_keys");
                    for(int i = 0; i < sshKeysJSONArray.length(); i++){
                        JSONObject sshKeysJSONObject = sshKeysJSONArray.getJSONObject(i);
                        SSHKey sshKey = new SSHKey();
                        sshKey.setId(sshKeysJSONObject.getLong("id"));
                        sshKey.setName(sshKeysJSONObject.getString("name"));
                        sshKey.setFingerprint(sshKeysJSONObject.getString("fingerprint"));
                        sshKey.setPublicKey(sshKeysJSONObject.getString("public_key"));
                        sshKeys.add(sshKey);
                    }
                    SSHKeyService.this.deleteAll();
                    SSHKeyService.this.saveAll(sshKeys);
                    SSHKeyService.this.setRequiresRefresh(true);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }


    });
  }
  
  protected void saveAll(List<SSHKey> sshKeys) {
    SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
    for (SSHKey sshKey : sshKeys) {
      sshKeyDao.create(sshKey);
    }
  }
  
  public void deleteAll() {
    SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
    sshKeyDao.deleteAll();
  }
  
  public List<SSHKey> getAllSSHKeys(){
    SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
    return sshKeyDao.getAll(null);
  }

  public void setRequiresRefresh(Boolean requireRefresh){
    SharedPreferences settings = context.getSharedPreferences("prefrences", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("key_require_refresh", requireRefresh);
    editor.commit();
  }
  public Boolean requiresRefresh(){
    SharedPreferences settings = context.getSharedPreferences("prefrences", 0);
    return settings.getBoolean("key_require_refresh", true);
  }
  
  public SSHKey findById(long id) {
    SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
    return sshKeyDao.findById(id);
  }

  public void delete(final long id) {
    Account currentAccount = ApiHelper.getCurrentAccount(context);
    if(currentAccount == null){
      return;
    }
    String url = String.format(Locale.US, "%s/account/keys/%d", ApiHelper.API_URL, id);
    AsyncHttpClient client = new AsyncHttpClient();
        client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
    client.delete(url, new AsyncHttpResponseHandler() {

            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {

            }

            @Override
      public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        if(statusCode == 401){
          ApiHelper.showAccessDenied();
        }
      }
        
        @Override
        public void onFinish() {
          SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
          sshKeyDao.delete(id);
          SSHKeyService.this.setRequiresRefresh(true);
        }
    });
  }

    public void create(SSHKey sshKey) {
        Account currentAccount = ApiHelper.getCurrentAccount(context);
        if(currentAccount == null){
            return;
        }
        String url = String.format("%s/account/keys", ApiHelper.API_URL);
        HashMap<String,Object> options = new HashMap<String, Object>();
        options.put("name", sshKey.getName());
        options.put("public_key", sshKey.getPublicKey());
        JSONObject jsonObject = new JSONObject(options);
        AsyncHttpClient client = new AsyncHttpClient();
        client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
        try {
            ByteArrayEntity entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
            client.post(context, url, entity, "application/json", new AsyncHttpResponseHandler() {

                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                    if (statusCode == 401) {
                        ApiHelper.showAccessDenied();
                    }
                }

                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    try {
                        JSONObject jsonObject = new JSONObject(new String(responseBody));
                        JSONObject sshKeysJSONObject = jsonObject.getJSONObject("ssh_key");
                        SSHKey sshKey = new SSHKey();
                        sshKey.setId(sshKeysJSONObject.getLong("id"));
                        sshKey.setName(sshKeysJSONObject.getString("name"));
                        sshKey.setFingerprint(sshKeysJSONObject.getString("fingerprint"));
                        sshKey.setPublicKey(sshKeysJSONObject.getString("public_key"));
                        SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
                        sshKeyDao.create(sshKey);
                        SSHKeyService.this.setRequiresRefresh(true);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

            });
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

    public void update(SSHKey sshKey) {
        Account currentAccount = ApiHelper.getCurrentAccount(context);
        if(currentAccount == null){
            return;
        }
        String url = String.format(Locale.US, "%s/account/keys/%d", ApiHelper.API_URL, sshKey.getId());
        HashMap<String,Object> options = new HashMap<String, Object>();
        options.put("name", sshKey.getName());
        JSONObject jsonObject = new JSONObject(options);
        AsyncHttpClient client = new AsyncHttpClient();
        client.addHeader("Authorization", String.format("Bearer %s", currentAccount.getToken()));
        try {
            ByteArrayEntity entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
            client.put(context, url, entity, "application/json", new AsyncHttpResponseHandler() {

                @Override
                public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                    if (statusCode == 401) {
                        ApiHelper.showAccessDenied();
                    }
                }

                @Override
                public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                    try {
                        JSONObject jsonObject = new JSONObject(new String(responseBody));
                        JSONObject sshKeysJSONObject = jsonObject.getJSONObject("ssh_key");
                        SSHKey sshKey = new SSHKey();
                        sshKey.setId(sshKeysJSONObject.getLong("id"));
                        sshKey.setName(sshKeysJSONObject.getString("name"));
                        sshKey.setFingerprint(sshKeysJSONObject.getString("fingerprint"));
                        sshKey.setPublicKey(sshKeysJSONObject.getString("public_key"));
                        SSHKeyDao sshKeyDao = new SSHKeyDao(DatabaseHelper.getInstance(context));
                        sshKeyDao.delete(sshKey.getId());
                        sshKeyDao.create(sshKey);
                        SSHKeyService.this.setRequiresRefresh(true);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

            });
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

  public boolean isRefreshing() {
    return isRefreshing;
  }
}




Java Source Code List

android.support.v4.preference.PreferenceFragment.java
android.support.v4.preference.PreferenceManagerCompat.java
com.yassirh.digitalocean.data.AccountDao.java
com.yassirh.digitalocean.data.AccountTable.java
com.yassirh.digitalocean.data.DatabaseHelper.java
com.yassirh.digitalocean.data.DomainDao.java
com.yassirh.digitalocean.data.DomainTable.java
com.yassirh.digitalocean.data.DropletDao.java
com.yassirh.digitalocean.data.DropletTable.java
com.yassirh.digitalocean.data.ImageDao.java
com.yassirh.digitalocean.data.ImageTable.java
com.yassirh.digitalocean.data.NetworkDao.java
com.yassirh.digitalocean.data.NetworkTable.java
com.yassirh.digitalocean.data.RecordDao.java
com.yassirh.digitalocean.data.RecordTable.java
com.yassirh.digitalocean.data.RegionDao.java
com.yassirh.digitalocean.data.RegionTable.java
com.yassirh.digitalocean.data.SSHKeyDao.java
com.yassirh.digitalocean.data.SSHKeyTable.java
com.yassirh.digitalocean.data.SizeDao.java
com.yassirh.digitalocean.data.SizeTable.java
com.yassirh.digitalocean.data.SqlDao.java
com.yassirh.digitalocean.data.TableHelper.java
com.yassirh.digitalocean.model.Account.java
com.yassirh.digitalocean.model.Action.java
com.yassirh.digitalocean.model.Domain.java
com.yassirh.digitalocean.model.Droplet.java
com.yassirh.digitalocean.model.Image.java
com.yassirh.digitalocean.model.Network.java
com.yassirh.digitalocean.model.Record.java
com.yassirh.digitalocean.model.Region.java
com.yassirh.digitalocean.model.SSHKey.java
com.yassirh.digitalocean.model.Size.java
com.yassirh.digitalocean.service.AccountService.java
com.yassirh.digitalocean.service.ActionService.java
com.yassirh.digitalocean.service.DomainService.java
com.yassirh.digitalocean.service.DropletService.java
com.yassirh.digitalocean.service.ImageService.java
com.yassirh.digitalocean.service.NotificationsIndexes.java
com.yassirh.digitalocean.service.RecordService.java
com.yassirh.digitalocean.service.RegionService.java
com.yassirh.digitalocean.service.SSHKeyService.java
com.yassirh.digitalocean.service.SizeService.java
com.yassirh.digitalocean.ui.AccountAdapter.java
com.yassirh.digitalocean.ui.AddAccountActivity.java
com.yassirh.digitalocean.ui.DomainAdapter.java
com.yassirh.digitalocean.ui.DomainDetailsDialogFragment.java
com.yassirh.digitalocean.ui.DomainsFragment.java
com.yassirh.digitalocean.ui.DrawerPositions.java
com.yassirh.digitalocean.ui.DropletAdapter.java
com.yassirh.digitalocean.ui.DropletDetailsDialogFragment.java
com.yassirh.digitalocean.ui.DropletResizeDialogFragment.java
com.yassirh.digitalocean.ui.DropletsFragment.java
com.yassirh.digitalocean.ui.ImageAdapter.java
com.yassirh.digitalocean.ui.ImagesFragment.java
com.yassirh.digitalocean.ui.MainActivity.java
com.yassirh.digitalocean.ui.NavigationDrawerAdapter.java
com.yassirh.digitalocean.ui.NewDropletActivity.java
com.yassirh.digitalocean.ui.PrefsFragment.java
com.yassirh.digitalocean.ui.RecordAdapter.java
com.yassirh.digitalocean.ui.RecordCreateDialogFragment.java
com.yassirh.digitalocean.ui.RecordTypeAdapter.java
com.yassirh.digitalocean.ui.RegionAdapter.java
com.yassirh.digitalocean.ui.RegionsFragment.java
com.yassirh.digitalocean.ui.SSHKeyAdapter.java
com.yassirh.digitalocean.ui.SSHKeyCreateDialogFragment.java
com.yassirh.digitalocean.ui.SSHKeyFragment.java
com.yassirh.digitalocean.ui.SettingsActivity.java
com.yassirh.digitalocean.ui.SizeAdapter.java
com.yassirh.digitalocean.ui.SizesFragment.java
com.yassirh.digitalocean.ui.SwitchAccountDialogFragment.java
com.yassirh.digitalocean.ui.Updatable.java
com.yassirh.digitalocean.ui.widget.MultiSelectSpinner.java
com.yassirh.digitalocean.utils.ApiHelper.java
com.yassirh.digitalocean.utils.AppRater.java
com.yassirh.digitalocean.utils.MyApplication.java
com.yassirh.digitalocean.utils.MyBroadcastReceiver.java
com.yassirh.digitalocean.utils.PreferencesHelper.java