mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-27 15:59:29 +00:00
Work progress on signed in user requests
This commit is contained in:
parent
5584840145
commit
6089b20b9a
@ -37,7 +37,7 @@
|
|||||||
<ConfirmationsSetting value="0" id="Add" />
|
<ConfirmationsSetting value="0" id="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -10,6 +10,8 @@ import android.widget.ScrollView;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.data.Account;
|
||||||
|
import org.communiquons.android.comunic.client.data.Utilities;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
@ -97,7 +99,7 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
|
|
||||||
//Perform a request on the API to check user credentials and get login tokens
|
//Perform a request on the API to check user credentials and get login tokens
|
||||||
APIRequestParameters params = new APIRequestParameters("user/connectUSER");
|
APIRequestParameters params = new APIRequestParameters(this, "user/connectUSER");
|
||||||
params.addParameter("userMail", ""+login_mail.getText());
|
params.addParameter("userMail", ""+login_mail.getText());
|
||||||
params.addParameter("userPassword", ""+login_password.getText());
|
params.addParameter("userPassword", ""+login_password.getText());
|
||||||
|
|
||||||
|
@ -10,6 +10,10 @@ import android.view.MenuItem;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.api.APIRequestTask;
|
import org.communiquons.android.comunic.client.api.APIRequestTask;
|
||||||
|
import org.communiquons.android.comunic.client.data.Account;
|
||||||
|
import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
||||||
|
import org.communiquons.android.comunic.client.data.UsersInfo.GetUsersInfos;
|
||||||
|
import org.communiquons.android.comunic.client.data.UsersInfo.UserInfo;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,6 +40,21 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
//Initialize account object
|
//Initialize account object
|
||||||
account = new Account(this);
|
account = new Account(this);
|
||||||
|
|
||||||
|
//DEVELOPMENT : Try to get information about a user over the network
|
||||||
|
GetUsersInfos uInfos = new GetUsersInfos(this, null);
|
||||||
|
|
||||||
|
//Get infos... about me!
|
||||||
|
int uID = 1;
|
||||||
|
uInfos.get(uID, new GetUsersInfos.getUserInfosCallback() {
|
||||||
|
@Override
|
||||||
|
public void callback(UserInfo info) {
|
||||||
|
if(info == null)
|
||||||
|
Toast.makeText(MainActivity.this, "Failure !", Toast.LENGTH_SHORT).show();
|
||||||
|
else
|
||||||
|
Toast.makeText(MainActivity.this, "Success !", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package org.communiquons.android.comunic.client.api;
|
package org.communiquons.android.comunic.client.api;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.api.APIPostData;
|
import org.communiquons.android.comunic.client.api.APIPostData;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -13,6 +15,11 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class APIRequestParameters {
|
public class APIRequestParameters {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The context of the request
|
||||||
|
*/
|
||||||
|
private Context context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parameters of the request
|
* Parameters of the request
|
||||||
*/
|
*/
|
||||||
@ -26,13 +33,18 @@ public class APIRequestParameters {
|
|||||||
/**
|
/**
|
||||||
* The class constructor
|
* The class constructor
|
||||||
*
|
*
|
||||||
|
* @param context The context of the request
|
||||||
* @param uri The request URI on the server
|
* @param uri The request URI on the server
|
||||||
*/
|
*/
|
||||||
public APIRequestParameters(String uri){
|
public APIRequestParameters(Context context, String uri){
|
||||||
|
|
||||||
|
//Save the context
|
||||||
|
this.context = context;
|
||||||
|
|
||||||
//Save request URI
|
//Save request URI
|
||||||
request_uri = uri;
|
request_uri = uri;
|
||||||
|
|
||||||
//Intializate parametres array
|
//Intialize parameters array
|
||||||
parameters = new ArrayList<>();
|
parameters = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,4 +88,13 @@ public class APIRequestParameters {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the context of the request
|
||||||
|
*
|
||||||
|
* @return The context of the request
|
||||||
|
*/
|
||||||
|
public Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,10 @@ import android.content.Context;
|
|||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
import android.net.NetworkInfo;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.data.Account;
|
||||||
import org.communiquons.android.comunic.client.BuildConfig;
|
import org.communiquons.android.comunic.client.BuildConfig;
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.io.BufferedOutputStream;
|
import java.io.BufferedOutputStream;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
@ -18,6 +19,7 @@ import java.io.OutputStreamWriter;
|
|||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform an API request on the server
|
* Perform an API request on the server
|
||||||
@ -33,11 +35,11 @@ import java.net.URL;
|
|||||||
public abstract class APIRequestTask extends AsyncTask<APIRequestParameters, Void, APIResponse> {
|
public abstract class APIRequestTask extends AsyncTask<APIRequestParameters, Void, APIResponse> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Background task
|
* API request in a Background task
|
||||||
*
|
*
|
||||||
* Warning: This method support only one request per object
|
* Warning: This method support only one request per object
|
||||||
*
|
*
|
||||||
* @param params Parametres required to perform the API request
|
* @param params Parameters required to perform the API request
|
||||||
* @return JSONObject The result of the request
|
* @return JSONObject The result of the request
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@ -45,6 +47,7 @@ public abstract class APIRequestTask extends AsyncTask<APIRequestParameters, Voi
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
//Perform the API request
|
//Perform the API request
|
||||||
|
addLoginTokens(params[0]);
|
||||||
return downloadUrl(params[0]);
|
return downloadUrl(params[0]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -142,4 +145,28 @@ public abstract class APIRequestTask extends AsyncTask<APIRequestParameters, Voi
|
|||||||
|
|
||||||
return networkInfo != null && networkInfo.isConnected();
|
return networkInfo != null && networkInfo.isConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the login tokens to an API request object
|
||||||
|
*/
|
||||||
|
private void addLoginTokens(APIRequestParameters params){
|
||||||
|
|
||||||
|
//Create account object
|
||||||
|
Account account = new Account(params.getContext());
|
||||||
|
|
||||||
|
//Check if user is signed in or not
|
||||||
|
if(!account.signed_in())
|
||||||
|
return; //Do nothing
|
||||||
|
|
||||||
|
//Get login tokens
|
||||||
|
ArrayList<String> tokens = account.getLoginTokens();
|
||||||
|
|
||||||
|
if(tokens.size() < 2)
|
||||||
|
return; //Not enough tokens
|
||||||
|
|
||||||
|
//Add them to the request
|
||||||
|
params.addParameter("userToken1", tokens.get(0));
|
||||||
|
params.addParameter("userToken2", tokens.get(1));
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.communiquons.android.comunic.client;
|
package org.communiquons.android.comunic.client.data;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
@ -18,7 +18,7 @@ import java.util.Objects;
|
|||||||
* Created by pierre on 10/29/17.
|
* Created by pierre on 10/29/17.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Account {
|
public class Account {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities object
|
* Utilities object
|
||||||
@ -45,7 +45,7 @@ class Account {
|
|||||||
*
|
*
|
||||||
* @param context Context of the application
|
* @param context Context of the application
|
||||||
*/
|
*/
|
||||||
Account(Context context){
|
public Account(Context context){
|
||||||
mContext = context;
|
mContext = context;
|
||||||
utils = new Utilities(context);
|
utils = new Utilities(context);
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ class Account {
|
|||||||
*
|
*
|
||||||
* @return True if signed in
|
* @return True if signed in
|
||||||
*/
|
*/
|
||||||
boolean signed_in(){
|
public boolean signed_in(){
|
||||||
|
|
||||||
//Check if tokens are already loaded
|
//Check if tokens are already loaded
|
||||||
if(tokens.size() < 1){
|
if(tokens.size() < 1){
|
||||||
@ -73,7 +73,7 @@ class Account {
|
|||||||
* Sign out user
|
* Sign out user
|
||||||
* @return True in case of success / false else
|
* @return True in case of success / false else
|
||||||
*/
|
*/
|
||||||
boolean sign_out(){
|
public boolean sign_out(){
|
||||||
return remove_login_tokens();
|
return remove_login_tokens();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,13 +115,32 @@ class Account {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get and return login tokens
|
||||||
|
*
|
||||||
|
* @return The list of tokens / null if user isn't signed in
|
||||||
|
*/
|
||||||
|
public ArrayList<String> getLoginTokens(){
|
||||||
|
|
||||||
|
//Check if tokens are already loaded or not
|
||||||
|
if(tokens.size()< 1)
|
||||||
|
load_tokens();
|
||||||
|
|
||||||
|
//Check if there is still no tokens
|
||||||
|
if(tokens.size() < 1)
|
||||||
|
return null; //Nothing to be done
|
||||||
|
|
||||||
|
//Return tokens list
|
||||||
|
return tokens;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save new tokens in tokens file
|
* Save new tokens in tokens file
|
||||||
*
|
*
|
||||||
* @param toks The array containing the tokens
|
* @param toks The array containing the tokens
|
||||||
* @return False in case of failure
|
* @return False in case of failure
|
||||||
*/
|
*/
|
||||||
boolean save_new_tokens(ArrayList<String> toks){
|
public boolean save_new_tokens(ArrayList<String> toks){
|
||||||
|
|
||||||
//Create tokens array
|
//Create tokens array
|
||||||
JSONArray tokens = new JSONArray();
|
JSONArray tokens = new JSONArray();
|
@ -0,0 +1,86 @@
|
|||||||
|
package org.communiquons.android.comunic.client.data.UsersInfo;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.api.APIRequestParameters;
|
||||||
|
import org.communiquons.android.comunic.client.api.APIRequestTask;
|
||||||
|
import org.communiquons.android.comunic.client.api.APIResponse;
|
||||||
|
import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class handles informations requests about user informations
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
* Created by pierre on 11/5/17.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GetUsersInfos {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Database helper
|
||||||
|
*/
|
||||||
|
private DatabaseHelper dbHelper = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Operations context
|
||||||
|
*/
|
||||||
|
private Context context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Public constructor
|
||||||
|
*
|
||||||
|
* @param context The context of the application
|
||||||
|
* @param dbHelper Database helper object
|
||||||
|
*/
|
||||||
|
public GetUsersInfos(Context context, DatabaseHelper dbHelper){
|
||||||
|
|
||||||
|
//Save context
|
||||||
|
this.context = context;
|
||||||
|
|
||||||
|
//Save database helper object
|
||||||
|
this.dbHelper = dbHelper;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface must be implemented to perform an API request
|
||||||
|
*/
|
||||||
|
public interface getUserInfosCallback{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback function called when we got informations about user
|
||||||
|
*
|
||||||
|
* @param info Information about the user
|
||||||
|
*/
|
||||||
|
void callback(UserInfo info);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get and return the informations about a user
|
||||||
|
*
|
||||||
|
* @param id The ID of the user to get informations from
|
||||||
|
*/
|
||||||
|
public void get(int id, getUserInfosCallback callback){
|
||||||
|
|
||||||
|
//Perform a request on the API server
|
||||||
|
|
||||||
|
//Setup the request
|
||||||
|
APIRequestParameters requestParameters = new APIRequestParameters(context, "user/getInfos");
|
||||||
|
requestParameters.addParameter("userID", ""+id);
|
||||||
|
|
||||||
|
//Do it.
|
||||||
|
new APIRequestTask(){
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(APIResponse result) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}.execute(requestParameters);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -8,7 +8,7 @@ import org.communiquons.android.comunic.client.data.DatabaseContract.UsersInfoSc
|
|||||||
import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
import org.communiquons.android.comunic.client.data.DatabaseHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Users informations helpers
|
* Users information helpers
|
||||||
*
|
*
|
||||||
* Makes the interface between the UsersInfo object and the SQLite object
|
* Makes the interface between the UsersInfo object and the SQLite object
|
||||||
*
|
*
|
||||||
@ -152,16 +152,17 @@ public class UsersInfosDbHelper {
|
|||||||
c.moveToFirst();
|
c.moveToFirst();
|
||||||
|
|
||||||
//Extract the information and record them
|
//Extract the information and record them
|
||||||
result.setId(
|
result.setId(c.getInt(c.getColumnIndexOrThrow(
|
||||||
c.getInt(
|
UsersInfoSchema.COLUMN_NAME_USER_ID)));
|
||||||
c.getColumnIndexOrThrow(
|
|
||||||
UsersInfoSchema.COLUMN_NAME_USER_ID
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
result.setFirstName(c.getString(c.getColumnIndexOrThrow(
|
||||||
|
UsersInfoSchema.COLUMN_NAME_USER_FIRSTNAME)));
|
||||||
|
|
||||||
//TODO : finish extraction
|
result.setLastName(c.getString(c.getColumnIndexOrThrow(
|
||||||
|
UsersInfoSchema.COLUMN_NAME_USER_LASTNAME)));
|
||||||
|
|
||||||
|
result.setAccountImageURL(c.getString(c.getColumnIndexOrThrow(
|
||||||
|
UsersInfoSchema.COLUMN_NAME_USER_ACCOUNT_IMAGE)));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Close the cursor
|
//Close the cursor
|
||||||
@ -172,4 +173,28 @@ public class UsersInfosDbHelper {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a user from the database (if he is present)
|
||||||
|
*
|
||||||
|
* @param userID The ID of the user to delete
|
||||||
|
* @return False if nothing was deleted
|
||||||
|
*/
|
||||||
|
boolean delete(int userID){
|
||||||
|
|
||||||
|
//Get write access to the database
|
||||||
|
SQLiteDatabase db = dbHelper.getWritableDatabase();
|
||||||
|
|
||||||
|
//Prepare the request
|
||||||
|
String condition = UsersInfoSchema.COLUMN_NAME_USER_ID + " = ?";
|
||||||
|
String[] conditionArgs = {""+userID};
|
||||||
|
|
||||||
|
//Perform the request
|
||||||
|
int result = db.delete(UsersInfoSchema.TABLE_NAME, condition, conditionArgs);
|
||||||
|
|
||||||
|
//Close database
|
||||||
|
db.close();
|
||||||
|
|
||||||
|
return result > 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.communiquons.android.comunic.client;
|
package org.communiquons.android.comunic.client.data;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
@ -15,7 +15,7 @@ import java.io.FileOutputStream;
|
|||||||
* Created by pierre on 10/29/17.
|
* Created by pierre on 10/29/17.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Utilities {
|
public class Utilities {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application context
|
* Application context
|
||||||
@ -27,7 +27,7 @@ class Utilities {
|
|||||||
*
|
*
|
||||||
* @param context Context of the application
|
* @param context Context of the application
|
||||||
*/
|
*/
|
||||||
Utilities(Context context){
|
public Utilities(Context context){
|
||||||
mContext = context;
|
mContext = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ class Utilities {
|
|||||||
* @param mail The E-Mail address to check
|
* @param mail The E-Mail address to check
|
||||||
* @return True if the mail is valid / false else
|
* @return True if the mail is valid / false else
|
||||||
*/
|
*/
|
||||||
boolean isValidMail(CharSequence mail){
|
public boolean isValidMail(CharSequence mail){
|
||||||
return !TextUtils.isEmpty(mail) && Patterns.EMAIL_ADDRESS.matcher(mail).matches();
|
return !TextUtils.isEmpty(mail) && Patterns.EMAIL_ADDRESS.matcher(mail).matches();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user