by.iba.gomel.avkhonia.MFReactNativeBind.WLResourceRequestRN.java Source code

Java tutorial

Introduction

Here is the source code for by.iba.gomel.avkhonia.MFReactNativeBind.WLResourceRequestRN.java

Source

/**
 *     Copyright 2016 IBM Corp.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

package by.iba.gomel.avkhonia.MFReactNativeBind;

import android.util.Log;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.uimanager.IllegalViewOperationException;
import com.worklight.wlclient.api.WLFailResponse;
import com.worklight.wlclient.api.WLResourceRequest;
import com.worklight.wlclient.api.WLResponse;
import com.worklight.wlclient.api.WLResponseListener;
import com.worklight.wlclient.api.WLClient;

import java.net.URI;
import java.util.HashMap;
import java.util.Map;

import org.json.JSONObject;

public class WLResourceRequestRN extends ReactContextBaseJavaModule {
    public static final int DEFAULT_TIMEOUT = 60000;

    public WLResourceRequestRN(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "WLResourceRequestRN";
    }

    @Override
    public Map<String, Object> getConstants() {
        final Map<String, Object> constants = new HashMap<>();
        constants.put("GET", WLResourceRequest.GET);
        constants.put("POST", WLResourceRequest.POST);
        constants.put("PUT", WLResourceRequest.PUT);
        return constants;
    }

    @ReactMethod
    public void requestWithURL(String url, String method, final Callback errorCallback,
            final Callback successCallback) {
        try {
            WLResourceRequest request = new WLResourceRequest(URI.create(url), method, DEFAULT_TIMEOUT);
            request.send(new WLResponseListener() {
                public void onSuccess(WLResponse response) {
                    successCallback.invoke(response.getResponseText());
                    Log.d("Success", response.getResponseText());
                }

                public void onFailure(WLFailResponse response) {
                    errorCallback.invoke(response.getErrorMsg() + " - " + response.getErrorStatusCode());
                    Log.d("Failure", response.getErrorMsg());
                }
            });
        } catch (IllegalViewOperationException e) {
            errorCallback.invoke(e.getMessage());
        }
    }

    @ReactMethod
    public void asyncRequestWithURL(String url, String method, final Promise promise) {
        try {
            Log.d("IBATimesheet", "REQUEST TO MFP - " + url);
            WLResourceRequest request = new WLResourceRequest(URI.create(url), method, DEFAULT_TIMEOUT);
            request.send(new WLResponseListener() {
                public void onSuccess(WLResponse response) {
                    try {
                        promise.resolve(response.getResponseText());
                        Log.d("Success", response.getResponseText());
                    } catch (Exception e) {
                        Log.d("IBATimesheet", "ERROR PROMISE RESOLVE: " + e);
                    }
                }

                public void onFailure(WLFailResponse response) {
                    promise.reject(response.getErrorStatusCode(),
                            response.getErrorMsg() + " - " + response.getErrorStatusCode());
                    Log.d("Failure", response.getErrorMsg());
                }
            });
        } catch (IllegalViewOperationException e) {
            promise.reject("failure", e.getMessage(), e);
        }
    }

    @ReactMethod
    public void asyncRequestWithURLBody(String url, String method, String params, final Promise promise) {
        try {
            Log.d("IBATimesheet", "REQUEST TO MFP - " + url);
            String logbody = params;
            while (logbody.length() > 400) {
                Log.d("IBATimesheet", "REQUEST BODY - " + logbody.substring(0, 400));
                logbody = logbody.substring(400);
            }
            Log.d("IBATimesheet", "REQUEST BODY - " + logbody);
            WLResourceRequest request = new WLResourceRequest(URI.create(url), method, DEFAULT_TIMEOUT);
            request.send(new JSONObject(params), new WLResponseListener() {
                public void onSuccess(WLResponse response) {
                    promise.resolve(response.getResponseText());
                    Log.d("Success", response.getResponseText());
                }

                public void onFailure(WLFailResponse response) {
                    promise.reject(response.getErrorStatusCode(),
                            response.getErrorMsg() + " - " + response.getErrorStatusCode());
                    Log.d("Failure", response.getErrorMsg());
                }
            });
        } catch (Exception e) {
            promise.reject("failure", e.getMessage(), e);
        }
    }
}