// Path: comm/src/main/java/br/com/hole19/marvel/comm/util/RequestUtil.java
// public class RequestUtil {
// 
//     public String buildBasicUrl(Context context, String service, String query, int limit, int offset) {
//         Uri.Builder builder = new Uri.Builder();
//         String timestamp = this.getTimestamp();
//         builder.scheme("https")
//                 .authority(context.getString(R.string.MARVEL_API_BASE_URL))
//                 .appendPath(context.getString(R.string.MARVEL_API_VERSION))
//                 .appendPath(context.getString(R.string.MARVEL_API_VISIBILITY))
//                 .appendPath(service)
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_TIMESTAMP), timestamp)
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_API_KEY), context.getString(R.string.MARVEL_KEY_PUBLIC))
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_API_HASH), this.getHash(context, timestamp))
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_LIMIT_LABEL), new Integer(limit).toString())
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_OFFSET_LABEL), new Integer(offset).toString());
// 
//         if (!"".equals(query)) {
//             builder.appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_QUERY), query);
//         }
// 
//         return builder.build().toString();
//     }
// 
//     public String parseExistentRequest(String url, Context context) {
//         String timestamp = this.getTimestamp();
//         StringBuilder builder = new StringBuilder(url);
//         builder.append("?");
//         builder.append("ts=");
//         builder.append(timestamp);
//         builder.append("&");
//         builder.append("apikey=");
//         builder.append(context.getString(R.string.MARVEL_KEY_PUBLIC));
//         builder.append("&");
//         builder.append("hash=");
//         builder.append(this.getHash(context, timestamp));
//         return builder.toString();
//     }
// 
//     public String getHash(Context context, String timestamp) {
//         StringBuilder digest = new StringBuilder();
//         digest.append(timestamp);
//         digest.append(context.getString(R.string.MARVEL_KEY_PRIVATE));
//         digest.append(context.getString(R.string.MARVEL_KEY_PUBLIC));
//         return new String(Hex.encodeHex(DigestUtils.md5(digest.toString())));
//     }
// 
//     public String getTimestamp() {
//         Long timestamp = (System.currentTimeMillis() / 1000);
//         return timestamp.toString();
//     }
// 
// }
// 
// Path: comm/src/main/java/br/com/hole19/marvel/comm/util/RestTemplate.java
// public class RestTemplate {
// 
//     public static final String TAG = "RestTemplate";
// 
//     private String mUrl;
//     private JSONObject mPayload;
//     private JsonObjectRequest mRequest;
//     private RequestQueue mRequestQueue;
// 
//     public RestTemplate() {
//         this.mUrl = "";
//     }
// 
//     public void execute(Context context) {
//         if (mRequestQueue == null) {
//             mRequestQueue = Volley.newRequestQueue(context);
//         }
//         mRequestQueue.add(this.mRequest);
//     }
// 
// 
//     public void setBody(final EventCatalog event, int httpMethod) {
//         this.mRequest = new JsonObjectRequest(
//                 httpMethod,
//                 this.mUrl,
//                 this.mPayload,
//                 new Response.Listener<JSONObject>() {
//                     @Override
//                     public void onResponse(JSONObject response) {
//                         ResponseWrapper responseWrapper = new ResponseWrapper(response, ResponseType.SUCCESS);
//                         NotificationCenter.notify(event, responseWrapper);
//                     }
//                 },
//                 new Response.ErrorListener() {
//                     @Override
//                     public void onErrorResponse(VolleyError error) {
//                         ResponseWrapper response = new ResponseWrapper(error.getMessage(), ResponseType.ERROR);
//                         NotificationCenter.notify(event, response);
//                     }
//                 });
//     }
// 
//     public void setPayload(JSONObject mPayload) {
//         this.mPayload = mPayload;
//     }
// 
//     public void setUrl(String url) {
//         this.mUrl = url;
//     }
// 
//     public void cancelRequests () {
//         if (mRequestQueue != null) {
//             mRequestQueue.cancelAll(new RequestQueue.RequestFilter() {
//                 @Override
//                 public boolean apply(Request<?> request) {
//                     return true;
//                 }
//             });
//         }
//     }
// 
// }


import br.com.hole19.marvel.comm.util.RequestUtil;
import br.com.hole19.marvel.comm.util.RestTemplate;
import dagger.Module;
import dagger.Provides;
package br.com.hole19.marvel.comm.infrastructure;


/**
 * Created by edgar on 09-May-16.
 */
@Module
public class ModuleUtil {

    @Provides
    public RestTemplate provideRestTemplate() {
// Path: comm/src/main/java/br/com/hole19/marvel/comm/util/RequestUtil.java
// public class RequestUtil {
// 
//     public String buildBasicUrl(Context context, String service, String query, int limit, int offset) {
//         Uri.Builder builder = new Uri.Builder();
//         String timestamp = this.getTimestamp();
//         builder.scheme("https")
//                 .authority(context.getString(R.string.MARVEL_API_BASE_URL))
//                 .appendPath(context.getString(R.string.MARVEL_API_VERSION))
//                 .appendPath(context.getString(R.string.MARVEL_API_VISIBILITY))
//                 .appendPath(service)
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_TIMESTAMP), timestamp)
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_API_KEY), context.getString(R.string.MARVEL_KEY_PUBLIC))
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_API_HASH), this.getHash(context, timestamp))
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_LIMIT_LABEL), new Integer(limit).toString())
//                 .appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_OFFSET_LABEL), new Integer(offset).toString());
// 
//         if (!"".equals(query)) {
//             builder.appendQueryParameter(context.getString(R.string.MARVEL_API_PARAM_QUERY), query);
//         }
// 
//         return builder.build().toString();
//     }
// 
//     public String parseExistentRequest(String url, Context context) {
//         String timestamp = this.getTimestamp();
//         StringBuilder builder = new StringBuilder(url);
//         builder.append("?");
//         builder.append("ts=");
//         builder.append(timestamp);
//         builder.append("&");
//         builder.append("apikey=");
//         builder.append(context.getString(R.string.MARVEL_KEY_PUBLIC));
//         builder.append("&");
//         builder.append("hash=");
//         builder.append(this.getHash(context, timestamp));
//         return builder.toString();
//     }
// 
//     public String getHash(Context context, String timestamp) {
//         StringBuilder digest = new StringBuilder();
//         digest.append(timestamp);
//         digest.append(context.getString(R.string.MARVEL_KEY_PRIVATE));
//         digest.append(context.getString(R.string.MARVEL_KEY_PUBLIC));
//         return new String(Hex.encodeHex(DigestUtils.md5(digest.toString())));
//     }
// 
//     public String getTimestamp() {
//         Long timestamp = (System.currentTimeMillis() / 1000);
//         return timestamp.toString();
//     }
// 
// }
// 
// Path: comm/src/main/java/br/com/hole19/marvel/comm/util/RestTemplate.java
// public class RestTemplate {
// 
//     public static final String TAG = "RestTemplate";
// 
//     private String mUrl;
//     private JSONObject mPayload;
//     private JsonObjectRequest mRequest;
//     private RequestQueue mRequestQueue;
// 
//     public RestTemplate() {
//         this.mUrl = "";
//     }
// 
//     public void execute(Context context) {
//         if (mRequestQueue == null) {
//             mRequestQueue = Volley.newRequestQueue(context);
//         }
//         mRequestQueue.add(this.mRequest);
//     }
// 
// 
//     public void setBody(final EventCatalog event, int httpMethod) {
//         this.mRequest = new JsonObjectRequest(
//                 httpMethod,
//                 this.mUrl,
//                 this.mPayload,
//                 new Response.Listener<JSONObject>() {
//                     @Override
//                     public void onResponse(JSONObject response) {
//                         ResponseWrapper responseWrapper = new ResponseWrapper(response, ResponseType.SUCCESS);
//                         NotificationCenter.notify(event, responseWrapper);
//                     }
//                 },
//                 new Response.ErrorListener() {
//                     @Override
//                     public void onErrorResponse(VolleyError error) {
//                         ResponseWrapper response = new ResponseWrapper(error.getMessage(), ResponseType.ERROR);
//                         NotificationCenter.notify(event, response);
//                     }
//                 });
//     }
// 
//     public void setPayload(JSONObject mPayload) {
//         this.mPayload = mPayload;
//     }
// 
//     public void setUrl(String url) {
//         this.mUrl = url;
//     }
// 
//     public void cancelRequests () {
//         if (mRequestQueue != null) {
//             mRequestQueue.cancelAll(new RequestQueue.RequestFilter() {
//                 @Override
//                 public boolean apply(Request<?> request) {
//                     return true;
//                 }
//             });
//         }
//     }
// 
// }


// Path: comm/src/main/java/br/com/hole19/marvel/comm/infrastructure/ModuleUtil.java
import br.com.hole19.marvel.comm.util.RequestUtil;
import br.com.hole19.marvel.comm.util.RestTemplate;
import dagger.Module;
import dagger.Provides;

package br.com.hole19.marvel.comm.infrastructure;


/**
 * Created by edgar on 09-May-16.
 */
@Module
public class ModuleUtil {

    @Provides
    public RestTemplate provideRestTemplate() {
        return new RestTemplate();