// Path: base/src/main/java/ru/bartwell/ultradebugger/base/model/HttpRequest.java
// public class HttpRequest {
//     private Map<String, List<String>> mParameters;
//     private Method mMethod;
//     private String mUri;
// 
//     public HttpRequest(String uri, Method method, Map<String, List<String>> parameters) {
//         mUri = uri;
//         mMethod = method;
//         mParameters = parameters;
//     }
// 
//     public Map<String, List<String>> getParameters() {
//         return mParameters;
//     }
// 
//     public Method getMethod() {
//         return mMethod;
//     }
// 
//     public String getUri() {
//         return mUri;
//     }
// 
//     public enum Method {
//         GET,
//         POST
//     }
// }
// 
// Path: base/src/main/java/ru/bartwell/ultradebugger/base/model/HttpResponse.java
// public class HttpResponse {
// 
//     private static final String CONTENT_TYPE_TEXT_HTML = "text/html";
// 
//     @NonNull
//     private Status mStatus;
//     @NonNull
//     private String mContentType;
//     @Nullable
//     private String mContent;
//     @Nullable
//     private InputStream mStream;
//     private long mContentLength;
//     @NonNull
//     Map<String, String> mHeaders = new HashMap<>();
// 
//     public HttpResponse(@NonNull String content) {
//         mStatus = Status.OK;
//         mContentType = CONTENT_TYPE_TEXT_HTML;
//         mContent = content;
//     }
// 
//     @SuppressWarnings("WeakerAccess")
//     public HttpResponse(@NonNull String contentType, @NonNull InputStream stream, long contentLength) {
//         mStatus = Status.OK;
//         mContentType = contentType;
//         mStream = stream;
//         mContentLength = contentLength;
//     }
// 
//     public HttpResponse(@NonNull String contentType, @NonNull InputStream stream) {
//         this(contentType, stream, -1);
//     }
// 
//     public HttpResponse(@NonNull Status status) {
//         mStatus = status;
//         mContentType = CONTENT_TYPE_TEXT_HTML;
//     }
// 
//     @Nullable
//     public String getContent() {
//         return mContent;
//     }
// 
//     @NonNull
//     public String getContentType() {
//         return mContentType;
//     }
// 
//     @NonNull
//     public Status getStatus() {
//         return mStatus;
//     }
// 
//     @Nullable
//     public InputStream getStream() {
//         return mStream;
//     }
// 
//     public long getContentLength() {
//         return mContentLength;
//     }
// 
//     public void addHeader(@NonNull String name, @NonNull String value) {
//         mHeaders.put(name, value);
//     }
// 
//     @NonNull
//     public Map<String, String> getHeaders() {
//         return mHeaders;
//     }
// 
//     public enum Status {
//         OK(200, "OK"),
//         BAD_REQUEST(400, "Bad request"),
//         NOT_FOUND(404, "Not found"),
//         INTERNAL_SERVER_ERROR(500, "Internal server error");
// 
//         private int mCode;
//         private String mDescription;
// 
//         Status(int code, String description) {
//             mCode = code;
//             mDescription = description;
//         }
// 
//         public int getCode() {
//             return mCode;
//         }
// 
//         public String getDescription() {
//             return mDescription;
//         }
//     }
// }


import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import ru.bartwell.ultradebugger.base.model.HttpRequest;
import ru.bartwell.ultradebugger.base.model.HttpResponse;
package ru.bartwell.ultradebugger.base;



/**
 * Created by BArtWell on 04.01.2017.
 */

public abstract class BaseModule {
    @NonNull
    private Context mContext;
    private String mModuleId;

    public BaseModule(@NonNull Context context, @NonNull String moduleId) {
        mContext = context;
        mModuleId = moduleId;
    }

    @NonNull
    public Context getContext() {
        return mContext;
    }

    @NonNull
    protected String getModuleId() {
        return mModuleId;
    }

    @NonNull
    protected String getString(@StringRes int stringResId) {
        return mContext.getString(stringResId);
    }

    @NonNull
    public abstract String getName();

    @NonNull
    public abstract String getDescription();

    @NonNull
// Path: base/src/main/java/ru/bartwell/ultradebugger/base/model/HttpRequest.java
// public class HttpRequest {
//     private Map<String, List<String>> mParameters;
//     private Method mMethod;
//     private String mUri;
// 
//     public HttpRequest(String uri, Method method, Map<String, List<String>> parameters) {
//         mUri = uri;
//         mMethod = method;
//         mParameters = parameters;
//     }
// 
//     public Map<String, List<String>> getParameters() {
//         return mParameters;
//     }
// 
//     public Method getMethod() {
//         return mMethod;
//     }
// 
//     public String getUri() {
//         return mUri;
//     }
// 
//     public enum Method {
//         GET,
//         POST
//     }
// }
// 
// Path: base/src/main/java/ru/bartwell/ultradebugger/base/model/HttpResponse.java
// public class HttpResponse {
// 
//     private static final String CONTENT_TYPE_TEXT_HTML = "text/html";
// 
//     @NonNull
//     private Status mStatus;
//     @NonNull
//     private String mContentType;
//     @Nullable
//     private String mContent;
//     @Nullable
//     private InputStream mStream;
//     private long mContentLength;
//     @NonNull
//     Map<String, String> mHeaders = new HashMap<>();
// 
//     public HttpResponse(@NonNull String content) {
//         mStatus = Status.OK;
//         mContentType = CONTENT_TYPE_TEXT_HTML;
//         mContent = content;
//     }
// 
//     @SuppressWarnings("WeakerAccess")
//     public HttpResponse(@NonNull String contentType, @NonNull InputStream stream, long contentLength) {
//         mStatus = Status.OK;
//         mContentType = contentType;
//         mStream = stream;
//         mContentLength = contentLength;
//     }
// 
//     public HttpResponse(@NonNull String contentType, @NonNull InputStream stream) {
//         this(contentType, stream, -1);
//     }
// 
//     public HttpResponse(@NonNull Status status) {
//         mStatus = status;
//         mContentType = CONTENT_TYPE_TEXT_HTML;
//     }
// 
//     @Nullable
//     public String getContent() {
//         return mContent;
//     }
// 
//     @NonNull
//     public String getContentType() {
//         return mContentType;
//     }
// 
//     @NonNull
//     public Status getStatus() {
//         return mStatus;
//     }
// 
//     @Nullable
//     public InputStream getStream() {
//         return mStream;
//     }
// 
//     public long getContentLength() {
//         return mContentLength;
//     }
// 
//     public void addHeader(@NonNull String name, @NonNull String value) {
//         mHeaders.put(name, value);
//     }
// 
//     @NonNull
//     public Map<String, String> getHeaders() {
//         return mHeaders;
//     }
// 
//     public enum Status {
//         OK(200, "OK"),
//         BAD_REQUEST(400, "Bad request"),
//         NOT_FOUND(404, "Not found"),
//         INTERNAL_SERVER_ERROR(500, "Internal server error");
// 
//         private int mCode;
//         private String mDescription;
// 
//         Status(int code, String description) {
//             mCode = code;
//             mDescription = description;
//         }
// 
//         public int getCode() {
//             return mCode;
//         }
// 
//         public String getDescription() {
//             return mDescription;
//         }
//     }
// }


// Path: base/src/main/java/ru/bartwell/ultradebugger/base/BaseModule.java
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import ru.bartwell.ultradebugger.base.model.HttpRequest;
import ru.bartwell.ultradebugger.base.model.HttpResponse;

package ru.bartwell.ultradebugger.base;



/**
 * Created by BArtWell on 04.01.2017.
 */

public abstract class BaseModule {
    @NonNull
    private Context mContext;
    private String mModuleId;

    public BaseModule(@NonNull Context context, @NonNull String moduleId) {
        mContext = context;
        mModuleId = moduleId;
    }

    @NonNull
    public Context getContext() {
        return mContext;
    }

    @NonNull
    protected String getModuleId() {
        return mModuleId;
    }

    @NonNull
    protected String getString(@StringRes int stringResId) {
        return mContext.getString(stringResId);
    }

    @NonNull
    public abstract String getName();

    @NonNull
    public abstract String getDescription();

    @NonNull
    public abstract HttpResponse handle(@NonNull HttpRequest request);