Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 15 additions & 14 deletions ios/RCTHttpServer.m
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
#import "React/RCTLog.h"
#import "React/RCTEventDispatcher.h"

#import "WGCDWebServer.h"
#import "WGCDWebServerDataResponse.h"
#import "WGCDWebServerDataRequest.h"
#import "WGCDWebServerPrivate.h"
#import "GCDWebServer.h"
#import "GCDWebServerDataResponse.h"
#import "GCDWebServerDataRequest.h"
#import "GCDWebServerPrivate.h"
#include <stdlib.h>

@interface RCTHttpServer : NSObject <RCTBridgeModule> {
WGCDWebServer* _webServer;
GCDWebServer* _webServer;
NSMutableDictionary* _completionBlocks;
}
@end
Expand All @@ -24,22 +24,23 @@ @implementation RCTHttpServer
RCT_EXPORT_MODULE();


- (void)initResponseReceivedFor:(WGCDWebServer *)server forType:(NSString*)type {
- (void)initResponseReceivedFor:(GCDWebServer *)server forType:(NSString*)type {
[server addDefaultHandlerForMethod:type
requestClass:[WGCDWebServerDataRequest class]
asyncProcessBlock:^(WGCDWebServerRequest* request, WGCDWebServerCompletionBlock completionBlock) {
requestClass:[GCDWebServerDataRequest class]
asyncProcessBlock:^(GCDWebServerRequest* request, GCDWebServerCompletionBlock completionBlock) {

long long milliseconds = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);
int r = arc4random_uniform(1000000);
NSString *requestId = [NSString stringWithFormat:@"%lld:%d", milliseconds, r];

_completionBlocks = [[NSMutableDictionary alloc] init];
@synchronized (self) {
[_completionBlocks setObject:completionBlock forKey:requestId];
}

@try {
if ([WGCDWebServerTruncateHeaderValue(request.contentType) isEqualToString:@"application/json"]) {
WGCDWebServerDataRequest* dataRequest = (WGCDWebServerDataRequest*)request;
if ([GCDWebServerTruncateHeaderValue(request.contentType) isEqualToString:@"application/json"]) {
GCDWebServerDataRequest* dataRequest = (GCDWebServerDataRequest*)request;
[self.bridge.eventDispatcher sendAppEventWithName:@"httpServerResponseReceived"
body:@{@"requestId": requestId,
@"postData": dataRequest.jsonObject,
Expand All @@ -64,10 +65,10 @@ - (void)initResponseReceivedFor:(WGCDWebServer *)server forType:(NSString*)type
serviceName:(NSString *) serviceName)
{
RCTLogInfo(@"Running HTTP bridge server: %ld", port);
_requestResponses = [[NSMutableDictionary alloc] init];
NSMutableDictionary *_requestResponses = [[NSMutableDictionary alloc] init];

dispatch_sync(dispatch_get_main_queue(), ^{
_webServer = [[WGCDWebServer alloc] init];
_webServer = [[GCDWebServer alloc] init];

[self initResponseReceivedFor:_webServer forType:@"POST"];
[self initResponseReceivedFor:_webServer forType:@"PUT"];
Expand Down Expand Up @@ -95,10 +96,10 @@ - (void)initResponseReceivedFor:(WGCDWebServer *)server forType:(NSString*)type
body: (NSString *) body)
{
NSData* data = [body dataUsingEncoding:NSUTF8StringEncoding];
WGCDWebServerDataResponse* requestResponse = [[WGCDWebServerDataResponse alloc] initWithData:data contentType:type];
GCDWebServerDataResponse* requestResponse = [[GCDWebServerDataResponse alloc] initWithData:data contentType:type];
requestResponse.statusCode = code;

WGCDWebServerCompletionBlock completionBlock = nil;
GCDWebServerCompletionBlock completionBlock = nil;
@synchronized (self) {
completionBlock = [_completionBlocks objectForKey:requestId];
[_completionBlocks removeObjectForKey:requestId];
Expand Down
Loading