@@ -8,15 +8,15 @@ @implementation FPStaticServer
8
8
9
9
- (instancetype )init {
10
10
if ((self = [super init ])) {
11
-
11
+
12
12
[GCDWebServer self ];
13
13
_webServer = [[GCDWebServer alloc ] init ];
14
14
}
15
15
return self;
16
16
}
17
17
18
18
- (void )dealloc {
19
-
19
+
20
20
if (_webServer.isRunning == YES ) {
21
21
[_webServer stop ];
22
22
}
@@ -36,9 +36,9 @@ - (dispatch_queue_t)methodQueue
36
36
keepAlive:(BOOL *)keep_alive
37
37
resolver:(RCTPromiseResolveBlock)resolve
38
38
rejecter:(RCTPromiseRejectBlock)reject) {
39
-
39
+
40
40
NSString * root;
41
-
41
+
42
42
if ( [optroot isEqualToString: @" DocumentDir" ] ){
43
43
root = [NSString stringWithFormat: @" %@ " , [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES ) objectAtIndex: 0 ] ];
44
44
} else if ( [optroot isEqualToString: @" BundleDir" ] ){
@@ -48,8 +48,8 @@ - (dispatch_queue_t)methodQueue
48
48
} else {
49
49
root = [NSString stringWithFormat: @" %@ /%@ " , [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES ) objectAtIndex: 0 ], optroot ];
50
50
}
51
-
52
-
51
+
52
+
53
53
if (root && [root length ] > 0 ) {
54
54
self.www_root = root;
55
55
}
@@ -61,26 +61,26 @@ - (dispatch_queue_t)methodQueue
61
61
} else {
62
62
self.port = [NSNumber numberWithInt: -1 ];
63
63
}
64
-
65
-
64
+
65
+
66
66
self.keep_alive = keep_alive;
67
67
68
68
self.localhost_only = localhost_only;
69
-
69
+
70
70
if (_webServer.isRunning != NO ) {
71
71
NSLog (@" StaticServer already running at %@ " , self.url );
72
72
resolve (self.url );
73
73
return ;
74
74
}
75
-
75
+
76
76
[_webServer addGETHandlerForBasePath: @" /" directoryPath: self .www_root indexFilename: @" index.html" cacheAge: 3600 allowRangeRequests: YES ];
77
-
77
+
78
78
NSError *error;
79
79
NSMutableDictionary * options = [NSMutableDictionary dictionary ];
80
-
81
-
80
+
81
+
82
82
NSLog (@" Started StaticServer on port %@ " , self.port );
83
-
83
+
84
84
if (![self .port isEqualToNumber: [NSNumber numberWithInt: -1 ]]) {
85
85
[options setObject: self .port forKey: GCDWebServerOption_Port];
86
86
} else {
@@ -90,12 +90,12 @@ - (dispatch_queue_t)methodQueue
90
90
if (self.localhost_only == YES ) {
91
91
[options setObject: @(YES ) forKey: GCDWebServerOption_BindToLocalhost];
92
92
}
93
-
93
+
94
94
if (self.keep_alive == YES ) {
95
95
[options setObject: @(NO ) forKey: GCDWebServerOption_AutomaticallySuspendInBackground];
96
96
[options setObject: @2.0 forKey: GCDWebServerOption_ConnectedStateCoalescingInterval];
97
97
}
98
-
98
+
99
99
100
100
if ([_webServer startWithOptions: options error: &error]) {
101
101
NSNumber *listenPort = [NSNumber numberWithUnsignedInteger: _webServer.port];
@@ -110,16 +110,16 @@ - (dispatch_queue_t)methodQueue
110
110
}
111
111
} else {
112
112
NSLog (@" Error starting StaticServer: %@ " , error);
113
-
113
+
114
114
reject (@" server_error" , @" StaticServer could not start" , error);
115
-
115
+
116
116
}
117
-
117
+
118
118
}
119
119
120
120
RCT_EXPORT_METHOD (stop) {
121
121
if (_webServer.isRunning == YES ) {
122
-
122
+
123
123
[_webServer stop ];
124
124
125
125
NSLog (@" StaticServer stopped" );
@@ -135,10 +135,15 @@ - (dispatch_queue_t)methodQueue
135
135
}
136
136
}
137
137
138
+ RCT_EXPORT_METHOD (isRunning:(RCTPromiseResolveBlock)resolve
139
+ rejecter:(RCTPromiseRejectBlock)reject) {
140
+ bool isRunning = _webServer != nil &&_webServer.isRunning == YES ;
141
+ resolve (@(isRunning));
142
+ }
143
+
138
144
+ (BOOL )requiresMainQueueSetup
139
145
{
140
146
return YES ;
141
147
}
142
148
143
149
@end
144
-
0 commit comments