mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-02 09:46:28 +00:00
first end to end rpc call
This commit is contained in:
parent
476b3623bb
commit
131123ff9a
@ -41,14 +41,14 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
GCDWebServer* webServer = [[GCDWebServer alloc] init];
|
GCDWebServer* webServer = [[GCDWebServer alloc] init];
|
||||||
s_context = JSGlobalContextCreate(NULL);
|
s_context = JSGlobalContextCreate(NULL);
|
||||||
|
|
||||||
s_requests["create_realm"] = [=](NSDictionary *dict) {
|
s_requests["/create_realm"] = [=](NSDictionary *dict) {
|
||||||
RPCObjectID realmId = s_id_counter++;
|
RPCObjectID realmId = s_id_counter++;
|
||||||
JSValueRef value = [[JSValue valueWithObject:dict
|
JSValueRef value = [[JSValue valueWithObject:dict
|
||||||
inContext:[JSContext contextWithJSGlobalContextRef:s_context]] JSValueRef];
|
inContext:[JSContext contextWithJSGlobalContextRef:s_context]] JSValueRef];
|
||||||
s_objects[realmId] = RealmConstructor(s_context, NULL, 1, &value, NULL);
|
s_objects[realmId] = RealmConstructor(s_context, NULL, 1, &value, NULL);
|
||||||
return std::to_string(realmId);
|
return "{\"realmId\":" + std::to_string(realmId) + "}";
|
||||||
};
|
};
|
||||||
s_requests["create_object"] = [=](NSDictionary *dict) {
|
s_requests["/create_object"] = [=](NSDictionary *dict) {
|
||||||
RPCObjectID newOid = s_id_counter++;
|
RPCObjectID newOid = s_id_counter++;
|
||||||
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
||||||
JSValueRef value = [[JSValue valueWithObject:dict[@"value"]
|
JSValueRef value = [[JSValue valueWithObject:dict[@"value"]
|
||||||
@ -59,13 +59,13 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
s_objects[newOid] = (JSObjectRef)object;
|
s_objects[newOid] = (JSObjectRef)object;
|
||||||
return std::to_string(newOid);
|
return std::to_string(newOid);
|
||||||
};
|
};
|
||||||
s_requests["dispose_realm"] = [=](NSDictionary *dict) {
|
s_requests["/dispose_realm"] = [=](NSDictionary *dict) {
|
||||||
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
||||||
JSValueUnprotect(s_context, s_objects[realmId]);
|
JSValueUnprotect(s_context, s_objects[realmId]);
|
||||||
s_objects.erase(realmId);
|
s_objects.erase(realmId);
|
||||||
return "";
|
return "";
|
||||||
};
|
};
|
||||||
s_requests["get_property"] = [=](NSDictionary *dict) {
|
s_requests["/get_property"] = [=](NSDictionary *dict) {
|
||||||
JSStringRef propString = RJSStringForString([dict[@"name"] UTF8String]);
|
JSStringRef propString = RJSStringForString([dict[@"name"] UTF8String]);
|
||||||
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
||||||
JSValueRef propertyValue = ObjectGetProperty(s_context, s_objects[realmId], propString, NULL);
|
JSValueRef propertyValue = ObjectGetProperty(s_context, s_objects[realmId], propString, NULL);
|
||||||
@ -73,7 +73,7 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
|
|
||||||
return RJSValidatedStringForValue(s_context, propertyValue);
|
return RJSValidatedStringForValue(s_context, propertyValue);
|
||||||
};
|
};
|
||||||
s_requests["set_property"] = [=](NSDictionary *dict) {
|
s_requests["/set_property"] = [=](NSDictionary *dict) {
|
||||||
JSValueRef exception = NULL;
|
JSValueRef exception = NULL;
|
||||||
JSStringRef propString = RJSStringForString([dict[@"name"] UTF8String]);
|
JSStringRef propString = RJSStringForString([dict[@"name"] UTF8String]);
|
||||||
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
RPCObjectID realmId = [dict[@"realmId"] longValue];
|
||||||
@ -84,7 +84,7 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
|
|
||||||
return exception ? "exception" : "";
|
return exception ? "exception" : "";
|
||||||
};
|
};
|
||||||
s_requests["dispose_object"] = [=](NSDictionary *dict) {
|
s_requests["/dispose_object"] = [=](NSDictionary *dict) {
|
||||||
RPCObjectID oid = [dict[@"realmId"] longValue];
|
RPCObjectID oid = [dict[@"realmId"] longValue];
|
||||||
JSValueUnprotect(s_context, s_objects[oid]);
|
JSValueUnprotect(s_context, s_objects[oid]);
|
||||||
s_objects.erase(oid);
|
s_objects.erase(oid);
|
||||||
@ -96,8 +96,10 @@ static RPCObjectID s_id_counter = 0;
|
|||||||
requestClass:[GCDWebServerDataRequest class]
|
requestClass:[GCDWebServerDataRequest class]
|
||||||
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
|
processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
|
||||||
RPCRequest action = s_requests[request.path.UTF8String];
|
RPCRequest action = s_requests[request.path.UTF8String];
|
||||||
NSDictionary *json = [(GCDWebServerDataRequest *)request jsonObject];
|
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[(GCDWebServerDataRequest *)request data] options:0 error:nil];
|
||||||
return [GCDWebServerDataResponse responseWithHTML:@(action(json).c_str())];
|
GCDWebServerDataResponse *response = [GCDWebServerDataResponse responseWithHTML:@(action(json).c_str())];
|
||||||
|
[response setValue:@"http://localhost:8081" forAdditionalHeader:@"Access-Control-Allow-Origin"];
|
||||||
|
return response;
|
||||||
}];
|
}];
|
||||||
[webServer startWithPort:8082 bonjourName:nil];
|
[webServer startWithPort:8082 bonjourName:nil];
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
*/
|
*/
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var React = require('react-native');
|
|
||||||
var Realm = require('realm');
|
var Realm = require('realm');
|
||||||
|
var React = require('react-native');
|
||||||
|
|
||||||
var {
|
var {
|
||||||
AppRegistry,
|
AppRegistry,
|
||||||
|
@ -79,7 +79,7 @@ function convert(realmId, info) {
|
|||||||
|
|
||||||
function sendRequest(command, data) {
|
function sendRequest(command, data) {
|
||||||
let body = JSON.stringify(data);
|
let body = JSON.stringify(data);
|
||||||
let request = new XMLHttpRequest();
|
let request = new XMLHttpRequestOriginal();
|
||||||
let url = 'http://' + DEVICE_HOST + '/' + command;
|
let url = 'http://' + DEVICE_HOST + '/' + command;
|
||||||
|
|
||||||
request.open('POST', url, false);
|
request.open('POST', url, false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user