Commit 8da030db authored by Sajal Narang's avatar Sajal Narang

Add sample Retrofit code for login

parent ce530c97
......@@ -3,6 +3,7 @@
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/IITB-App.iml" filepath="$PROJECT_DIR$/IITB-App.iml" />
<module fileurl="file://$PROJECT_DIR$/IITBApp.iml" filepath="$PROJECT_DIR$/IITBApp.iml" />
<module fileurl="file://D:\IITB-App\IITBApp.iml" filepath="D:\IITB-App\IITBApp.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
</modules>
......
......@@ -26,6 +26,8 @@ ext {
playServicesVersion = '11.0.2'
butterKnifeVersion = '8.6.0'
appAuthVersion = '0.2.0'
retrofitVersion = '2.1.0'
okhttpVersion = '3.4.1'
}
dependencies {
......@@ -41,4 +43,8 @@ dependencies {
compile "com.android.support:support-v4:${supportLibVersion}"
compile "com.jakewharton:butterknife:${butterKnifeVersion}"
annotationProcessor "com.jakewharton:butterknife-compiler:${butterKnifeVersion}"
compile "com.squareup.retrofit2:retrofit:${retrofitVersion}"
compile "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
compile "com.squareup.okhttp3:okhttp:${okhttpVersion}"
compile "com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
}
......@@ -15,12 +15,23 @@ import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.google.gson.annotations.SerializedName;
import net.openid.appauth.AuthorizationException;
import net.openid.appauth.AuthorizationRequest;
import net.openid.appauth.AuthorizationResponse;
import net.openid.appauth.AuthorizationService;
import net.openid.appauth.AuthorizationServiceConfiguration;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
public class LoginActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity";
private final String clientId = "pFcDDWtUUfzlAX2ibriV25lm1J2m92O5ynfT4SYk";
......@@ -110,6 +121,8 @@ public class LoginActivity extends AppCompatActivity {
Toast.makeText(this,
"AuthCode: " + response.authorizationCode, Toast.LENGTH_SHORT)
.show();
login(response.authorizationCode, "xyz");
} else {
Log.i(TAG, "Authorization failed: " + error.getMessage());
Toast.makeText(this,
......@@ -154,6 +167,23 @@ public class LoginActivity extends AppCompatActivity {
}
}
private void login(String authorizationCode, String gcmId) {
LoginRequest loginRequest = new LoginRequest(authorizationCode, gcmId);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.login(loginRequest).enqueue(new Callback<LoginResponse>() {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
if (response.isSuccessful()) {
//Go to MainActivity
}
//Server error
}
@Override
public void onFailure(Call<LoginResponse> call, Throwable t) {
//Network Error
}
});
}
}
package in.ac.iitb.gymkhana.iitbapp;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
......@@ -18,20 +12,18 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import in.ac.iitb.gymkhana.iitbapp.fragments.AboutFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.CMSFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.CalendarFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.ContactsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.FeedFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.GCRankingsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.MapFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.MessMenuFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.MyEventsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.PTCellFragment;
import in.ac.iitb.gymkhana.iitbapp.fragments.TimetableFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.AboutFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.CMSFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.CalendarFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.ContactsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.FeedFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.GCRankingsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.MapFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.MyEventsFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment;
import in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment;
public class MainActivity extends AppCompatActivity
......
package in.ac.iitb.gymkhana.iitbapp.api;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface RetrofitInterface {
@POST("/login/")
Call<LoginResponse> login(@Body LoginRequest loginRequest);
}
package in.ac.iitb.gymkhana.iitbapp.api;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class ServiceGenerator {
//TODO: Change BASE_URL once the server is hosted
private static final String BASE_URL = "http://127.0.0.1";
private static OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
private static Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create());
private static Retrofit retrofit;
public static <S> S createService(Class<S> serviceClass) {
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
retrofit = retrofitBuilder.client(clientBuilder.addInterceptor(httpLoggingInterceptor).build()).build();
return retrofit.create(serviceClass);
}
}
package in.ac.iitb.gymkhana.iitbapp.api.model;
import com.google.gson.annotations.SerializedName;
public class LoginRequest {
@SerializedName("AUTHORIZATION_CODE")
private String authCode;
@SerializedName("reg_id")
private String regId;
public LoginRequest(String authCode, String regId) {
this.authCode = authCode;
this.regId = regId;
}
public String getAuthCode() {
return authCode;
}
public void setAuthCode(String authCode) {
this.authCode = authCode;
}
public String getRegId() {
return regId;
}
public void setRegId(String regId) {
this.regId = regId;
}
}
package in.ac.iitb.gymkhana.iitbapp.api.model;
public class LoginResponse {
private String result;
private String message;
public LoginResponse(String result, String message) {
this.result = result;
this.message = message;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.PopupMenu;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
......@@ -27,19 +17,12 @@ import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import org.w3c.dom.Text;
import java.sql.Time;
import java.util.Calendar;
import butterknife.BindView;
import butterknife.ButterKnife;
import in.ac.iitb.gymkhana.iitbapp.R;
import static android.app.Activity.RESULT_OK;
import static android.content.ContentValues.TAG;
import static android.view.View.VISIBLE;
public class AddEventFragment extends Fragment {
@BindView(R.id.button_createEvent)
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.Manifest;
import android.content.pm.PackageManager;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
package in.ac.iitb.gymkhana.iitbapp.fragments;
package in.ac.iitb.gymkhana.iitbapp.fragment;
import android.os.Bundle;
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.AboutFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.AboutFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.AddEventFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.AddEventFragment">
<RelativeLayout
android:layout_width="match_parent"
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.CMSFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.CMSFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.ContactsFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.ContactsFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.FeedFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.FeedFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.GCRankingsFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.GCRankingsFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.MapFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.MapFragment">
<fragment
android:id="@+id/viewMap"
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.MessMenuFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.MessMenuFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.MyEventsFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.MyEventsFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.PTCellFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.PTCellFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -2,7 +2,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="in.ac.iitb.gymkhana.iitbapp.fragments.TimetableFragment">
tools:context="in.ac.iitb.gymkhana.iitbapp.fragment.TimetableFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
......
......@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha4'
classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
......
#Fri Jun 30 22:37:20 IST 2017
#Mon Jul 03 20:03:13 IST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-rc-1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-milestone-1-all.zip
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment