Example usage for com.facebook.react.bridge ReadableMap getType

List of usage examples for com.facebook.react.bridge ReadableMap getType

Introduction

In this page you can find the example usage for com.facebook.react.bridge ReadableMap getType.

Prototype

@NonNull
    ReadableType getType(@NonNull String name);

Source Link

Usage

From source file:com.silklabs.react.blobs.WebSocketModule.java

License:Open Source License

@ReactMethod
public void connect(final String url, @Nullable final ReadableArray protocols,
        @Nullable final ReadableMap headers, final int id) {
    OkHttpClient client = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(10, TimeUnit.SECONDS).readTimeout(0, TimeUnit.MINUTES) // Disable timeouts for read
            .build();//from www .j a  v a  2s .c  o  m

    Request.Builder builder = new Request.Builder().tag(id).url(url);

    if (headers != null) {
        ReadableMapKeySetIterator iterator = headers.keySetIterator();

        if (!headers.hasKey("origin")) {
            builder.addHeader("origin", setDefaultOrigin(url));
        }

        while (iterator.hasNextKey()) {
            String key = iterator.nextKey();
            if (ReadableType.String.equals(headers.getType(key))) {
                builder.addHeader(key, headers.getString(key));
            } else {
                FLog.w(ReactConstants.TAG, "Ignoring: requested " + key + ", value not a string");
            }
        }
    } else {
        builder.addHeader("origin", setDefaultOrigin(url));
    }

    if (protocols != null && protocols.size() > 0) {
        StringBuilder protocolsValue = new StringBuilder("");
        for (int i = 0; i < protocols.size(); i++) {
            String v = protocols.getString(i).trim();
            if (!v.isEmpty() && !v.contains(",")) {
                protocolsValue.append(v);
                protocolsValue.append(",");
            }
        }
        if (protocolsValue.length() > 0) {
            protocolsValue.replace(protocolsValue.length() - 1, protocolsValue.length(), "");
            builder.addHeader("Sec-WebSocket-Protocol", protocolsValue.toString());
        }
    }

    WebSocketCall.create(client, builder.build()).enqueue(new WebSocketListener() {

        @Override
        public void onOpen(WebSocket webSocket, Response response) {
            mWebSocketConnections.put(id, webSocket);
            WritableMap params = Arguments.createMap();
            params.putInt("id", id);
            sendEvent("websocketOpen", params);
        }

        @Override
        public void onClose(int code, String reason) {
            WritableMap params = Arguments.createMap();
            params.putInt("id", id);
            params.putInt("code", code);
            params.putString("reason", reason);
            sendEvent("websocketClosed", params);
        }

        @Override
        public void onFailure(IOException e, Response response) {
            notifyWebSocketFailed(id, e.getMessage());
        }

        @Override
        public void onPong(Buffer buffer) {
        }

        @Override
        public void onMessage(ResponseBody response) throws IOException {
            WritableMap params = Arguments.createMap();
            params.putInt("id", id);

            if (mBlobsEnabled.containsKey(id) && mBlobsEnabled.get(id)
                    && response.contentType() == WebSocket.BINARY) {
                byte[] data;
                try {
                    data = response.source().readByteArray();
                } catch (IOException e) {
                    notifyWebSocketFailed(id, e.getMessage());
                    return;
                }
                WritableMap blob = Arguments.createMap();
                blob.putString("blobId", BlobModule.store(data));
                blob.putInt("offset", 0);
                blob.putInt("size", data.length);
                params.putMap("data", blob);
                params.putString("type", "blob");
            } else {
                String message;
                try {
                    if (response.contentType() == WebSocket.BINARY) {
                        message = Base64.encodeToString(response.source().readByteArray(), Base64.NO_WRAP);
                    } else {
                        message = response.source().readUtf8();
                    }
                } catch (IOException e) {
                    notifyWebSocketFailed(id, e.getMessage());
                    return;
                }
                params.putString("data", message);
                params.putString("type", response.contentType() == WebSocket.BINARY ? "binary" : "text");
            }

            try {
                response.source().close();
            } catch (IOException e) {
                FLog.e(ReactConstants.TAG, "Could not close BufferedSource for WebSocket id " + id, e);
            }

            sendEvent("websocketMessage", params);
        }
    });

    // Trigger shutdown of the dispatcher's executor so this process can exit cleanly
    client.dispatcher().executorService().shutdown();
}

From source file:com.transistorsoft.rnbackgroundgeolocation.RNBackgroundGeolocationModule.java

private static JSONObject mapToJson(ReadableMap map) {
    ReadableMapKeySetIterator iterator = map.keySetIterator();
    JSONObject json = new JSONObject();

    try {/*from w  ww  .j a va 2s .com*/
        while (iterator.hasNextKey()) {
            String key = iterator.nextKey();
            switch (map.getType(key)) {
            case String:
                json.put(key, map.getString(key));
                break;
            case Boolean:
                json.put(key, map.getBoolean(key));
                break;
            case Number:
                json.put(key, map.getDouble(key));
                break;
            case Map:
                json.put(key, mapToJson(map.getMap(key)));
                break;
            case Array:
                json.put(key, arrayToJson(map.getArray(key)));
                break;

            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return json;
}

From source file:it.near.sdk.reactnative.rnnearitsdk.RNNearItUtils.java

License:Mozilla Public License

public static JSONObject toJSONObject(ReadableMap readableMap) throws JSONException {
    JSONObject jsonObject = new JSONObject();

    ReadableMapKeySetIterator iterator = readableMap.keySetIterator();

    while (iterator.hasNextKey()) {
        String key = iterator.nextKey();
        ReadableType type = readableMap.getType(key);

        switch (type) {
        case Null:
            jsonObject.put(key, null);// ww  w .  jav  a  2s.com
            break;
        case Boolean:
            jsonObject.put(key, readableMap.getBoolean(key));
            break;
        case Number:
            jsonObject.put(key, readableMap.getDouble(key));
            break;
        case String:
            jsonObject.put(key, readableMap.getString(key));
            break;
        case Map:
            jsonObject.put(key, toJSONObject(readableMap.getMap(key)));
            break;
        case Array:
            jsonObject.put(key, toJSONArray(readableMap.getArray(key)));
            break;
        }
    }

    return jsonObject;
}

From source file:it.near.sdk.reactnative.rnnearitsdk.RNNearItUtils.java

License:Mozilla Public License

public static Map<String, Object> toMap(ReadableMap readableMap) {
    Map<String, Object> map = new HashMap<>();
    ReadableMapKeySetIterator iterator = readableMap.keySetIterator();

    while (iterator.hasNextKey()) {
        String key = iterator.nextKey();
        ReadableType type = readableMap.getType(key);

        switch (type) {
        case Null:
            map.put(key, null);//  ww w .  ja  v a 2  s . c  o  m
            break;
        case Boolean:
            map.put(key, readableMap.getBoolean(key));
            break;
        case Number:
            map.put(key, readableMap.getDouble(key));
            break;
        case String:
            map.put(key, readableMap.getString(key));
            break;
        case Map:
            map.put(key, toMap(readableMap.getMap(key)));
            break;
        case Array:
            map.put(key, toArray(readableMap.getArray(key)));
            break;
        }
    }

    return map;
}

From source file:rn.crashlytics.answers.AnswersModule.java

License:Open Source License

private static void addCustomAttribute(AnswersEvent event, ReadableMap attrMap, String attrKey) {
    ReadableType type = attrMap.getType(attrKey);
    switch (type) {
    case Number:
        event.putCustomAttribute(attrKey, attrMap.getDouble(attrKey));
        break;// www . j a v  a 2  s. c o  m
    case String:
        event.putCustomAttribute(attrKey, attrMap.getString(attrKey));
        break;
    case Boolean:
        event.putCustomAttribute(attrKey, String.valueOf(attrMap.getBoolean(attrKey)));
        break;
    case Null:
        break; // skip
    default:
        throw new IllegalArgumentException("Can't handle Objects or Arrays");
    }
}