Skip to content

Commit

Permalink
Merge branch 'master' of github.com:basbeu/theSofties into f-iconsCat…
Browse files Browse the repository at this point in the history
…egory
  • Loading branch information
basbeu committed Nov 13, 2018
2 parents 7ff36ee + 72b9c31 commit 7861994
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 8 deletions.
52 changes: 52 additions & 0 deletions app/src/main/java/ch/epfl/sweng/favors/database/ApiKeys.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package ch.epfl.sweng.favors.database;

import android.util.Log;

import com.google.android.gms.tasks.Tasks;

import java.util.concurrent.ExecutionException;

import ch.epfl.sweng.favors.database.fields.DatabaseBooleanField;
import ch.epfl.sweng.favors.database.fields.DatabaseIntField;
import ch.epfl.sweng.favors.database.fields.DatabaseObjectField;
import ch.epfl.sweng.favors.database.fields.DatabaseStringField;

public class ApiKeys extends DatabaseEntity {
public enum StringFields implements DatabaseStringField {mailGun}

public enum IntegerFields implements DatabaseIntField {}

public enum ObjectFields implements DatabaseObjectField {}

public enum BooleanFields implements DatabaseBooleanField {}

private static String COLLECTION = "apiKeys";
private static String DOC_ID = "keys";
private static String TAG = "API_KEYS";

private static ApiKeys mInstance;

private ApiKeys() {
super(ApiKeys.StringFields.values(), ApiKeys.IntegerFields.values(), ApiKeys.BooleanFields.values(),
ApiKeys.ObjectFields.values(), COLLECTION, DOC_ID);
Log.d(TAG, "Creating new api key object");
if (mInstance != null) throw new UnsupportedOperationException("Instance already exists");
}

/**
* You need to call Database.getInstance.updateFromDb(apiKey) to be sure that the key is loaded
* @return An API key object
*/
public static synchronized ApiKeys getInstance() {
if (mInstance == null) {
mInstance = new ApiKeys();
}
return mInstance;
}


@Override
public DatabaseEntity copy() {
return this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
binding.favIntrestedButton.setOnClickListener((l)->{
Log.d("SENDTO", "Clicked");
EmailUtils.sendEmail(Authentication.getInstance().getEmail(), ownerEmail.get(),
"Someone is interested for : "+title.get(),
"Someone is interested in: "+title.get(),
"Hi ! I am interested to help you with your favor. Please answer directly to this email.",
getActivity(),
"We will inform the poster of the add that you are interested to help!",
Expand Down
19 changes: 15 additions & 4 deletions app/src/main/java/ch/epfl/sweng/favors/utils/email/EmailUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@

import android.content.Context;
import android.support.annotation.NonNull;
import android.util.Log;

import ch.epfl.sweng.favors.database.ApiKeys;
import ch.epfl.sweng.favors.database.Database;

/**
* Provides the utilities that allow for the sending of emails.
*/
public class EmailUtils {
private static String TAG = "EMAIL_UTILS";
/**
* Sends an email to `to` originating from `from`.
*
Expand All @@ -23,9 +28,15 @@ public class EmailUtils {
*/
public static void sendEmail(@NonNull String from, @NonNull String to, String subject, String message, @NonNull Context context, @NonNull String successMsg, @NonNull String failureMsg){

RetrofitDispatcher.getInstance()
.getApi()
.sendEmail(from, to, subject, message)
.enqueue(RetrofitDispatcher.getInstance().getCallback(context, successMsg, failureMsg));
//Ensure that API Keys are up to date before calling the API
ApiKeys key = ApiKeys.getInstance();
Database.getInstance().updateFromDb(key).addOnCompleteListener(t->{

RetrofitDispatcher.getInstance()
.getApi()
.sendEmail(from, to, subject, message)
.enqueue(RetrofitDispatcher.getInstance().getCallback(context, successMsg, failureMsg));
});

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@
import android.util.Base64;
import android.widget.Toast;

import com.google.android.gms.tasks.Tasks;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import ch.epfl.sweng.favors.database.ApiKeys;
import ch.epfl.sweng.favors.database.Database;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
Expand All @@ -22,21 +26,22 @@

import static java.net.HttpURLConnection.HTTP_OK;

class RetrofitClient extends RetrofitDispatcher{
class RetrofitClient extends RetrofitDispatcher{


private static final String BASE_URL = "https://api.mailgun.net/v3/favors.services/";
private static final String BASE_URL = "https://api.mailgun.net/v3/myfavors.xyz/";

private static final String API_USERNAME = "api";

private static final String API_PASSWORD = "";
private static final String API_PASSWORD = ApiKeys.getInstance().get(ApiKeys.StringFields.mailGun);

private static final String AUTH = "Basic " + Base64.encodeToString((API_USERNAME+":"+API_PASSWORD).getBytes(), Base64.NO_WRAP);

private static RetrofitClient mInstance;
private Retrofit retrofit;

private RetrofitClient() {

OkHttpClient okClient = new OkHttpClient.Builder()
.addInterceptor(
new Interceptor() {
Expand Down Expand Up @@ -74,6 +79,7 @@ public Retrofit getClient() {
}

public RetrofitApi getApi() {

return retrofit.create(RetrofitApi.class);
}

Expand Down

0 comments on commit 7861994

Please sign in to comment.