initial commit

This commit is contained in:
cimenmus
2018-05-26 12:04:22 +03:00
parent 2f57316d7a
commit 24eef0ed59
132 changed files with 856 additions and 879 deletions

View File

@@ -0,0 +1,13 @@
package ch.pizzapp.android.api;
public class ApiConstants {
public static final int API_READ_TIMEOUT = 30;
public static final int API_CONNECT_TIMEOUT = 10;
public static final String API_PATH = "http://www.pizzalink.ch/";
public static final int CATEGORY_ID_WUNSCHPIZZA = 9999;
public static final int CATEGORY_ID_EKSTRA_KEBAP = 9998;
public static final int PRODUCT_ID_WUNSCHPIZZA = 56;
public static final int PRODUCT_ID_EKSTRA_KEBAP = 91;
public static final String APP_TYPE_ID_ANDROID = "2";
public static final int APP_ERROR_CODE_AUTHORIZATION = 1;
}

View File

@@ -0,0 +1,39 @@
package ch.pizzapp.android.api;
public class ApiEndPoints {
private static final String PREFIX = "pizza/index.php?route=mobile/service/";
private static final String SUFFIX = "&is_mobile=1";
public static final String API_GET_ALL_CATEGORIES = PREFIX + "getAllCategories" + SUFFIX;
public static final String API_GET_IGNORED_CATEGORY_IDS= PREFIX + "getIgnoredCategory" + SUFFIX;
public static final String API_GET_PIZZA_CATEGORY_IDS= PREFIX + "getPizzaCategories" + SUFFIX;
public static final String API_REGISTER = PREFIX + "signUp" + SUFFIX;
public static final String API_LOGIN = PREFIX + "login" + SUFFIX;
public static final String API_LOGOUT = PREFIX + "logout" + SUFFIX;
public static final String API_GET_ORDER_HISTORY = PREFIX + "getOrders" + SUFFIX;
public static final String API_GET_CART_PRODUCTS = PREFIX + "getBasketProducts" + SUFFIX + "&token=";
public static final String API_GET_CLEAR_CART = PREFIX + "clearBasket" + SUFFIX;
public static final String API_GET_PRODUCTS_BY_CATEGORY = PREFIX + "getProductsByCategory" + SUFFIX;
public static final String API_GET_PRODUCT = PREFIX + "getProduct" + SUFFIX;
public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasket" + SUFFIX + "&token=";
//public static final String API_ADD_PRODUCTS_TO_BASKET = PREFIX + "addProductsToBasketYeni" + SUFFIX + "&token=";
public static final String API_GET_SHIPPING_METHODS = PREFIX + "getShippingMethodsArray" + SUFFIX;
public static final String API_GET_CUSTOMER_ADDRESSES = PREFIX + "getAddresses" + SUFFIX;
public static final String API_ADD_NEW_ADDRESS = PREFIX + "addAddress" + SUFFIX + "&token=";
public static final String API_DELETE_ADDRESS = PREFIX + "deleteAddress" + SUFFIX + "&token=";
public static final String API_GET_PAYMENT_METHODS = PREFIX + "getPaymentMethodsArray" + SUFFIX;
public static final String API_CREATE_ORDER = PREFIX + "addOrder2" + SUFFIX + "&token=";
public static final String API_CHECK_UPDATE = PREFIX + "checkUpdate" + SUFFIX;
public static final String API_FORGOT_PASSWORD = PREFIX + "forgotPassword" + SUFFIX;
public static final String API_GET_CITY_LIST = PREFIX + "getCities" + SUFFIX;
public static final String API_GET_COUNTRY_LIST = PREFIX + "getCountries" + SUFFIX;
public static final String API_GET_ZONE_LIST = PREFIX + "getZones" + SUFFIX;
public static final String API_GET_CUSTOMER_PROFILE = PREFIX + "getCustomerInfo" + SUFFIX;
public static final String API_UPDATE_PASSWORD = PREFIX + "passwordUpdate" + SUFFIX + "&token=";
public static final String API_UPDATE_PROFILE = PREFIX + "updateCustomerInfo" + SUFFIX + "&token=";
public static final String API_REMOVE_RPODUCT_FORM_CART = PREFIX + "removeProductFromBasket" + SUFFIX + "&token=";
public static final String API_GET_STORE_INFO = PREFIX + "getStoreInfo" + SUFFIX;
public static final String API_GET_ORDER_PRODUCT_LIST = PREFIX + "getOrderProducts" + SUFFIX;
public static final String API_CHECK_COUPON = PREFIX + "checkCoupon" + SUFFIX + "&token=";
}

View File

@@ -0,0 +1,43 @@
package ch.pizzapp.android.api;
public class ApiError {
private boolean success;
private int error_code;
private String message;
private int statusCode;
public ApiError() {}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatusCode() {
return statusCode;
}
public void setStatusCode(int statusCode) {
this.statusCode = statusCode;
}
}

View File

@@ -0,0 +1,72 @@
package ch.pizzapp.android.api;
import android.content.Intent;
import java.io.IOException;
import java.lang.annotation.Annotation;
import ch.pizzapp.android.R;
import ch.pizzapp.android.activity.BaseActivity;
import ch.pizzapp.android.activity.LoginActivity;
import ch.pizzapp.android.helper.DialogHelper;
import ch.pizzapp.android.helper.SharedPrefsHelper;
import okhttp3.ResponseBody;
import retrofit2.Converter;
import retrofit2.Response;
public class ApiErrorUtils {
public static void parseError(Response<?> response) {
Converter<ResponseBody, ApiError> converter = ApiService.retrofit.responseBodyConverter(ApiError.class, new Annotation[0]);
ApiError error = new ApiError();
error.setStatusCode(response.code());
BaseResponse baseResponse = (BaseResponse) response.body();
if(baseResponse != null){
if(baseResponse.getErrorCode() == ApiConstants.APP_ERROR_CODE_AUTHORIZATION){
SharedPrefsHelper.clearCustomerInfo();
SharedPrefsHelper.clearCustomerToken();
SharedPrefsHelper.setCustomerLoggedIn(false);
BaseActivity.currentActivity.startActivity(new Intent(BaseActivity.currentActivity, LoginActivity.class));
BaseActivity.currentActivity.finishAffinity();
return;
}
if(baseResponse.getMessage() != null && !baseResponse.getMessage().isEmpty()){
DialogHelper.showAlertDialog(BaseActivity.currentActivity, baseResponse.getMessage());
return;
}
}
try {
error = converter.convert(response.errorBody());
DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, error.getMessage());
} catch (Exception e) {
DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, BaseActivity.currentActivity.getString(R.string.something_went_wrong));
}
}
public static void parseErrorWithoutAuthorizationErrorControl(Response<?> response) {
Converter<ResponseBody, ApiError> converter = ApiService.retrofit.responseBodyConverter(ApiError.class, new Annotation[0]);
ApiError error = new ApiError();
error.setStatusCode(response.code());
BaseResponse baseResponse = (BaseResponse) response.body();
if (baseResponse != null && baseResponse.getMessage() != null && !baseResponse.getMessage().isEmpty()) {
DialogHelper.showAlertDialog(BaseActivity.currentActivity, baseResponse.getMessage());
return;
}
try {
error = converter.convert(response.errorBody());
DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, error.getMessage());
} catch (Exception e) {
DialogHelper.showDialogWithPositiveButton(BaseActivity.currentActivity, BaseActivity.currentActivity.getString(R.string.something_went_wrong));
}
}
}

View File

@@ -0,0 +1,153 @@
package ch.pizzapp.android.api;
import java.util.HashMap;
import ch.pizzapp.android.model.AddNewAddressResponseModel;
import ch.pizzapp.android.model.AddProductToBasketResponseModel;
import ch.pizzapp.android.model.AddressModel;
import ch.pizzapp.android.model.AppVersionModel;
import ch.pizzapp.android.model.CheckCouponModel;
import ch.pizzapp.android.model.CountryModel;
import ch.pizzapp.android.model.DeleteAddressResponseModel;
import ch.pizzapp.android.model.PaymentMethodsResponseModel;
import ch.pizzapp.android.model.RemoveProductFromCartResponseModel;
import ch.pizzapp.android.model.ShippingMethodModel;
import ch.pizzapp.android.model.StoreInfoModel;
import ch.pizzapp.android.model.CityModel;
import ch.pizzapp.android.model.ZoneModel;
import ch.pizzapp.android.model.cart.CartInfoModel;
import ch.pizzapp.android.model.CategoryModel;
import ch.pizzapp.android.model.history.OrderHistoryModel;
import ch.pizzapp.android.model.UserModel;
import ch.pizzapp.android.model.history.OrderHistoryProductModel;
import ch.pizzapp.android.model.menu.MenuProductModel;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.Url;
/**
* Created by cimenmus on 04/02/2017.
*/
public interface ApiInterface {
@GET(ApiEndPoints.API_GET_ALL_CATEGORIES)
Call<ResponseArray<CategoryModel>> getAllCategories();
@GET(ApiEndPoints.API_GET_IGNORED_CATEGORY_IDS)
Call<ResponseArray<Integer>> getIgnoredCategoryIds();
@GET(ApiEndPoints.API_GET_PIZZA_CATEGORY_IDS)
Call<ResponseArray<Integer>> getPizzaCategoryIds();
@FormUrlEncoded
@POST(ApiEndPoints.API_REGISTER)
Call<ResponseObject<UserModel>> register(@FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST(ApiEndPoints.API_LOGIN)
Call<ResponseObject<UserModel>> login(@Field("email") String email, @Field("password") String password);
@FormUrlEncoded
@POST(ApiEndPoints.API_LOGOUT)
Call<ResponseObject> logout(@Field("token") String customerToken);
@GET(ApiEndPoints.API_GET_ORDER_HISTORY)
Call<ResponseArray<OrderHistoryModel>> getOrderHistory(@Query("token") String token);
@POST
Call<ResponseObject<CartInfoModel>> getCartProducts(@Url String url);
@GET(ApiEndPoints.API_GET_CLEAR_CART)
Call<ResponseObject> clearCart(@Query("token") String token);
@GET(ApiEndPoints.API_GET_PRODUCTS_BY_CATEGORY)
Call<ResponseArray<MenuProductModel>> getProductsByCategory(@Query("category_id") String categoryId);
@FormUrlEncoded
@POST(ApiEndPoints.API_GET_PRODUCT)
Call<ResponseArray<MenuProductModel>> getProductById(@Field("product_id") int productId);
/*
* Bu projedeki post servisler bizden form-data bekliyor. Bu serviste @FormUrlEncoded yapınca ve
* body'i @FieldMap HashMap<String, Object> body olarak verince, body içindeki alanlar
* encode ediliyor, mesela body içindeki "[" karakteri "%5D" ye falan dönüşüyor, dolayısı ile servis bunları okuyamıyor.
* Bu sebeple body olarak RequestBody verdim ve servisi çağırırken bod içindeki alanları FormBody olarak ekledim.
*/
@POST
Call<ResponseObject<AddProductToBasketResponseModel>> addProductsToBasket(@Url String url,
@Body RequestBody body);
@GET(ApiEndPoints.API_GET_SHIPPING_METHODS)
Call<ResponseArray<ShippingMethodModel>> getShippingMethods(@Query("token") String token);
@GET(ApiEndPoints.API_GET_CUSTOMER_ADDRESSES)
Call<ResponseArray<AddressModel>> getCustomerAddresses(@Query("token") String token);
@FormUrlEncoded
@POST
Call<ResponseObject<AddNewAddressResponseModel>> addNewAddress(@Url String url,
@FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST
Call<ResponseObject<DeleteAddressResponseModel>> deleteAddress(@Url String url,
@Field("address_id") String addressId);
@GET(ApiEndPoints.API_GET_PAYMENT_METHODS)
Call<ResponseObject<PaymentMethodsResponseModel>> getPaymentMethods(@Query("token") String token);
@FormUrlEncoded
@POST
Call<ResponseObject<Integer>> createOrder(@Url String url, @FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST(ApiEndPoints.API_CHECK_UPDATE)
Call<ResponseObject<AppVersionModel>> checkUpdate(@FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST(ApiEndPoints.API_FORGOT_PASSWORD)
Call<ResponseObject> forgotPassword(@Field("email") String emailAddress);
@GET(ApiEndPoints.API_GET_CITY_LIST)
Call<ResponseArray<CityModel>> getCityList();
@GET(ApiEndPoints.API_GET_COUNTRY_LIST)
Call<ResponseArray<CountryModel>> getCountryList();
@FormUrlEncoded
@POST(ApiEndPoints.API_GET_ZONE_LIST)
Call<ResponseArray<ZoneModel>> getZoneList(@Field("country_id") String countryId);
@GET(ApiEndPoints.API_GET_CUSTOMER_PROFILE)
Call<ResponseObject<UserModel>> getCustomerProfile(@Query("token") String token);
@FormUrlEncoded
@POST
Call<ResponseObject> updatePassword(@Url String url, @FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST
Call<ResponseObject<UserModel>> updateProfile(@Url String url, @FieldMap HashMap<String, Object> body);
@FormUrlEncoded
@POST
Call<ResponseObject<RemoveProductFromCartResponseModel>> removeProductFromCart(@Url String url,
@FieldMap HashMap<String, Object> body);
@GET(ApiEndPoints.API_GET_STORE_INFO)
Call<ResponseObject<StoreInfoModel>> getStoreInfo();
@FormUrlEncoded
@POST
Call<ResponseArray<OrderHistoryProductModel>> getOrderProductList(@Url String url,
@Field("order_id") String orderId);
@FormUrlEncoded
@POST
Call<ResponseObject<CheckCouponModel>> checkCoupon(@Url String url, @Field("coupon") String couponCode);
}

View File

@@ -0,0 +1,66 @@
package ch.pizzapp.android.api;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class ApiService {
private static ApiService apiService = new ApiService();
public static ApiInterface apiInterface;
public static Retrofit retrofit;
private ApiService() { reset();}
public static ApiService getInstance() {
return apiService;
}
public void reset() {
Gson gson = new GsonBuilder()
.setLenient()
.create();
OkHttpClient.Builder builder = new OkHttpClient().newBuilder();
builder.readTimeout(ApiConstants.API_READ_TIMEOUT, TimeUnit.SECONDS);
builder.connectTimeout(ApiConstants.API_CONNECT_TIMEOUT, TimeUnit.SECONDS);
builder.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
builder.addHeader("Content-Type", "application/json");
Request request = builder.build();
return chain.proceed(request);
}
});
HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); // set your desired log level
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
//builder.addInterceptor(logging);
OkHttpClient client = builder.build();
retrofit = new Retrofit.Builder()
.baseUrl(ApiConstants.API_PATH)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build();
apiInterface = retrofit.create(ApiInterface.class);
}
}

View File

@@ -0,0 +1,28 @@
package ch.pizzapp.android.api;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
/**
* Created by cimenmus on 22.10.2017.
*/
public class BaseResponse implements Serializable {
@SerializedName("success") private boolean success;
@SerializedName("message") private String message;
@SerializedName("error_code") private int errorCode;
public boolean isSuccess() {
return success;
}
public String getMessage() {
return message;
}
public int getErrorCode() {
return errorCode;
}
}

View File

@@ -0,0 +1,20 @@
package ch.pizzapp.android.api;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Created by cimenmus on 05/10/2017.
*/
public class ResponseArray<T> extends BaseResponse implements Serializable {
@SerializedName("data") private ArrayList<T> data;
public ArrayList<T> getData() {
return data;
}
}

View File

@@ -0,0 +1,18 @@
package ch.pizzapp.android.api;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
/**
* Created by cimenmus on 05/10/2017.
*/
public class ResponseObject<T> extends BaseResponse implements Serializable {
@SerializedName("data") private T data;
public T getData() {
return data;
}
}