diff --git a/build.gradle b/build.gradle
index d959962..76c4732 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,5 +24,7 @@ android {
}
dependencies {
+ compile 'com.squareup.retrofit:retrofit:1.9.0'
+ compile 'com.google.code.gson:gson:2.3.1'
compile 'commons-io:commons-io:2.4'
}
diff --git a/lightningjavaclient.iml b/lightningjavaclient.iml
index cd68ae7..3e067d2 100644
--- a/lightningjavaclient.iml
+++ b/lightningjavaclient.iml
@@ -87,8 +87,10 @@
-
+
+
+
\ No newline at end of file
diff --git a/src/main/java/net/lightningsdk/LightningJavaClient/Lightning.java b/src/main/java/net/lightningsdk/LightningJavaClient/Lightning.java
index d687601..4109a16 100644
--- a/src/main/java/net/lightningsdk/LightningJavaClient/Lightning.java
+++ b/src/main/java/net/lightningsdk/LightningJavaClient/Lightning.java
@@ -3,17 +3,30 @@
import android.content.Context;
import android.content.SharedPreferences;
+import com.google.gson.Gson;
+
import org.apache.commons.io.IOUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import java.util.zip.GZIPInputStream;
+import retrofit.Callback;
+import retrofit.RequestInterceptor;
+import retrofit.RestAdapter;
+import retrofit.RetrofitError;
+import retrofit.client.Response;
+
/**
* !!
*
@@ -23,6 +36,10 @@ public class Lightning {
private static volatile Lightning instance;
+ /*private Lightning(){
+
+ };
+
public static Lightning getInstance() {
Lightning localInstance = instance;
if (localInstance == null) {
@@ -34,7 +51,7 @@ public static Lightning getInstance() {
}
}
return localInstance;
- }
+ }*/
public static final boolean DEBUG = false;
@@ -108,7 +125,7 @@ protected void handleJSONError(JSONObject response, OnQueryResultListener onQuer
* Convert a complex JSON object into a query string.
*/
public String JSONToQueryString(JSONObject parameters) {
- String res = null;
+ String res;
try {
StringBuilder sb = new StringBuilder();
SubJSONToQueryString(sb, "", parameters, true);
@@ -147,7 +164,7 @@ else if (value instanceof JSONArray) {
if(sb.length() > 0){
sb.append('&');
}
- sb.append(URLEncoder.encode(prefix, "UTF-8") + "=" + URLEncoder.encode(value.toString(), "UTF-8"));
+ sb.append(URLEncoder.encode(prefix, "UTF-8")).append("=").append(URLEncoder.encode(value.toString(), "UTF-8"));
}
} catch (Exception e) {
e.printStackTrace();
@@ -240,7 +257,7 @@ protected String getContentString(String method, String urlString, JSONObject pa
protected byte[] getContentBytes(String method, String urlString, JSONObject parameters, String requiredContentTypePrefix) {
HttpURLConnection connection = setupConnection(method, urlString, parameters);
- byte[] bytes = null;
+ byte[] bytes;
if (connection == null) {
return null;
}
@@ -372,4 +389,185 @@ public byte[] GETImage(String url, JSONObject parameters, OnQueryResultListener
public interface OnQueryResultListener{
void onError(final String title, final String message);
}
+
+ private LightningMethods mMethods;
+ private Lightning(String baseUrl){//Context context){
+ //mContext = context.getApplicationContext();
+ RestAdapter restAdapter = new RestAdapter.Builder()
+ .setEndpoint(baseUrl)//mContext.getString(R.string.base_url))
+ .setLogLevel(RestAdapter.LogLevel.BASIC)
+ .setRequestInterceptor(requestInterceptor)
+ .build();
+ mMethods = restAdapter.create(LightningMethods.class);
+ }
+
+ public static Lightning getInstance(String baseUrl) {
+ Lightning localInstance = instance;
+ if (localInstance == null) {
+ synchronized (Lightning.class) {
+ localInstance = instance;
+ if (localInstance == null) {
+ instance = localInstance = new Lightning(baseUrl);
+ }
+ }
+ }
+ return localInstance;
+ }
+
+ public static Lightning getInstance() {
+ return instance;
+ }
+
+ RequestInterceptor requestInterceptor = new RequestInterceptor() {
+ @Override
+ public void intercept(RequestFacade request) {
+ request.addHeader("Cookie", "session=" + sessionKey);
+ }
+ };
+
+ public LightningMethods getMethods() {
+ return mMethods;
+ }
+
+ public Builder prepareRequest(String apiMethod){
+ return new Builder()
+ .putPath(apiMethod);
+ }
+
+ public class Builder implements Serializable {
+ Map params;
+ String path;
+
+ public Builder() {
+ params = new HashMap<>();
+ }
+
+ public Builder putPath(String path){
+ this.path = path;
+ return this;
+ }
+
+ public Builder putParam(String paramName, String paramValue){
+ params.put(paramName, paramValue);
+ return this;
+ }
+ public Builder putParam(String paramName, int paramValue){
+ params.put(paramName, String.valueOf(paramValue));
+ return this;
+ }
+ public Builder putAll(Map params){
+ this.params.putAll(params);
+ return this;
+ }
+ public void getString(final LightningListener listener)
+ {
+ instance.getMethods().get(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ listener.loadComplete(StreamToString.getString(response));
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ listener.loadError(retrofitError.getMessage());
+ }
+ });
+ }
+
+ public void get(final LightningListener listener){
+ Type type = listener.getClass().getGenericInterfaces()[0];
+ final Class cls = (Class) ((ParameterizedType) type).getActualTypeArguments()[0];
+ instance.getMethods().get(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ Gson gson = new Gson();
+ String json = StreamToString.getString(response);
+ try {
+ Object t = gson.fromJson(json, cls);
+ listener.loadComplete((T) t);
+ } catch (final Exception ex) {
+ ex.printStackTrace();
+ listener.loadError(ex.getMessage());
+ }
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ listener.networkError(retrofitError.getMessage());
+ }
+ });
+ }
+
+ public void get(final JsonResult listener){
+ instance.getMethods().get(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ String json = StreamToString.getString(response);
+ listener.loadComplete(json);
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ listener.loadError(retrofitError.getMessage());
+ }
+ });
+ }
+
+ public void post(final JsonResult listener){
+ instance.getMethods().post(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ String json = StreamToString.getString(response);
+ listener.loadComplete(json);
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ listener.loadError(retrofitError.getMessage());
+ }
+ });
+ }
+
+ /*public void get(final ErrorListener errorListener){
+ getInstance().getMethods().get(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ errorListener.loadComplete();
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ errorListener.loadError(retrofitError.getMessage());
+ }
+ });
+ }
+
+ public void get(){
+ getInstance().getMethods().get(path, params, new Callback() {
+ @Override
+ public void success(Response response, Response response2) {
+ }
+
+ @Override
+ public void failure(RetrofitError retrofitError) {
+ }
+ });
+ }*/
+ }
+
+ public interface LightningListener extends Serializable{
+ void loadComplete(T t);
+ void loadError(String message);
+ void networkError(String message);
+ }
+
+ /*public interface ErrorListener{
+ void loadComplete();
+ void loadError(String message);
+ }*/
+
+ public interface JsonResult{
+ void loadComplete(String json);
+ void loadError(String message);
+ }
}
diff --git a/src/main/java/net/lightningsdk/LightningJavaClient/LightningMethods.java b/src/main/java/net/lightningsdk/LightningJavaClient/LightningMethods.java
new file mode 100644
index 0000000..b43237a
--- /dev/null
+++ b/src/main/java/net/lightningsdk/LightningJavaClient/LightningMethods.java
@@ -0,0 +1,85 @@
+package net.lightningsdk.LightningJavaClient;
+
+import java.util.Map;
+
+import retrofit.Callback;
+import retrofit.client.Response;
+import retrofit.http.FieldMap;
+import retrofit.http.FormUrlEncoded;
+import retrofit.http.GET;
+import retrofit.http.POST;
+import retrofit.http.Path;
+import retrofit.http.QueryMap;
+
+/**
+ * Created by Сергей on 28.08.2015.
+ */
+public interface LightningMethods {
+
+ @FormUrlEncoded
+ @POST("/{path}")
+ void post(@Path("path") String path, @FieldMap Map parameters, Callback callback);
+
+ @GET("/{path}")
+ void get(@Path("path") String path, @QueryMap Map parameters, Callback callback);
+
+ /* These are alternative implementation */
+ /*@GET("/mindpt/image")
+ void getImage(@QueryMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/image")
+ void getApiImage(@QueryMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/image")
+ void postApiImage(@FieldMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/slides")
+ void postApiSlides(@FieldMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/purchase/android")
+ void postPurchase(@FieldMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/permission")
+ void getPermissions(@QueryMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/coupon")
+ void postCoupon(@FieldMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/user")
+ void postUser(@FieldMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/tags")
+ void getTags(@QueryMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/report")
+ void postReport(@FieldMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/sessions")
+ void getSessionsList(@QueryMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/session")
+ void getSession(@QueryMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/session/image")
+ void getSessionImage(@QueryMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/api/mindpt/session")
+ void postSession(@FieldMap Map parameters, Callback callback);
+
+ @GET("/mindpt/customize")
+ void getCustomized(@QueryMap Map parameters, Callback callback);
+
+ @FormUrlEncoded
+ @POST("/mindpt/customize")
+ void postCustomized(@FieldMap Map parameters, Callback callback);
+
+ @GET("/api/mindpt/promo_products")
+ void getPromo(@QueryMap Map parameters, Callback callback);*/
+}
diff --git a/src/main/java/net/lightningsdk/LightningJavaClient/StreamToString.java b/src/main/java/net/lightningsdk/LightningJavaClient/StreamToString.java
new file mode 100644
index 0000000..0c406a4
--- /dev/null
+++ b/src/main/java/net/lightningsdk/LightningJavaClient/StreamToString.java
@@ -0,0 +1,36 @@
+package net.lightningsdk.LightningJavaClient;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import retrofit.client.Response;
+
+/**
+ * Created by Сергей on 28.08.2015.
+ */
+public class StreamToString {
+ public static String getString(Response response){
+ BufferedReader reader;
+ StringBuilder sb = new StringBuilder();
+ try {
+
+ reader = new BufferedReader(new InputStreamReader(response.getBody().in()));
+
+ String line;
+
+ try {
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+
+ return sb.toString();
+ }
+}
diff --git a/src/main/java/net/lightningsdk/LightningJavaClient/User.java b/src/main/java/net/lightningsdk/LightningJavaClient/User.java
index 69415fa..f7b9610 100644
--- a/src/main/java/net/lightningsdk/LightningJavaClient/User.java
+++ b/src/main/java/net/lightningsdk/LightningJavaClient/User.java
@@ -12,7 +12,7 @@
* @author Daniel Behrman macdabby@gmail.com, Sergey Mitrofanov goretz.m@gmail.com
*/
public class User {
- protected JSONObject data;
+ /*protected JSONObject data;
public User() {
this.load();
@@ -24,7 +24,7 @@ public User() {
* @param email
* @param password
* @return
- */
+ *
public static User logIn (String email, String password) {
User user = new User();
if (user.isLoggedIn()) {
@@ -43,7 +43,7 @@ public static User logIn (String email, String password) {
* @param email
* @param password
* @return
- */
+ *
protected Boolean _logIn (String email, String password) {
Boolean success = false;
try {
@@ -138,4 +138,4 @@ public void save() {
// [defaults setObject:self.data forKey:@"Lightning.User"];
// [defaults synchronize];
}
-}
+*/}
diff --git a/version.gradle b/version.gradle
deleted file mode 100644
index 539ae63..0000000
--- a/version.gradle
+++ /dev/null
@@ -1 +0,0 @@
-version='1.0.0'