@@ -424,6 +424,35 @@ namespace Logger {
424
424
}
425
425
}
426
426
427
+ namespace Env {
428
+ bool env_get (JSContext* cx, unsigned argc, Value* vp) {
429
+ CallArgs args = CallArgsFromVp (argc, vp);
430
+ if (!args.requireAtLeast (cx, " fastly.env.get" , 1 ))
431
+ return false ;
432
+
433
+ size_t var_name_len;
434
+ UniqueChars var_name_chars = encode (cx, args[0 ], &var_name_len);
435
+ if (!var_name_chars) {
436
+ return false ;
437
+ }
438
+ RootedString env_var (cx, JS_NewStringCopyZ (cx, getenv (var_name_chars.get ())));
439
+ if (!env_var) return false ;
440
+
441
+ args.rval ().setString (env_var);
442
+ return true ;
443
+ }
444
+
445
+ const JSFunctionSpec methods[] = {
446
+ JS_FN (" get" , env_get, 1 , 0 ),
447
+ JS_FS_END};
448
+
449
+ JSObject* create (JSContext* cx) {
450
+ RootedObject env (cx, JS_NewPlainObject (cx));
451
+ if (!env || !JS_DefineFunctions (cx, env, methods)) return nullptr ;
452
+ return env;
453
+ }
454
+ }
455
+
427
456
namespace URL {
428
457
bool is_instance (JS::Value);
429
458
JSObject* create (JSContext* cx, SpecString url_str, const JSUrl* base = nullptr );
@@ -436,6 +465,11 @@ namespace Fastly {
436
465
437
466
static bool debug_logging_enabled = false ;
438
467
468
+ static PersistentRooted<JSObject*> env;
469
+
470
+ static PersistentRooted<JSObject*> baseURL;
471
+ static PersistentRooted<JSString*> defaultBackend;
472
+
439
473
bool dump (JSContext* cx, unsigned argc, Value* vp) {
440
474
CallArgs args = CallArgsFromVp (argc, vp);
441
475
if (!args.requireAtLeast (cx, __func__, 1 ))
@@ -543,8 +577,11 @@ namespace Fastly {
543
577
JS_FS_END
544
578
};
545
579
546
- static PersistentRooted<JSObject*> baseURL;
547
- static PersistentRooted<JSString*> defaultBackend;
580
+ bool env_get (JSContext* cx, unsigned argc, Value* vp) {
581
+ CallArgs args = CallArgsFromVp (argc, vp);
582
+ args.rval ().setObject (*env);
583
+ return true ;
584
+ }
548
585
549
586
bool baseURL_get (JSContext* cx, unsigned argc, Value* vp) {
550
587
CallArgs args = CallArgsFromVp (argc, vp);
@@ -587,6 +624,7 @@ namespace Fastly {
587
624
}
588
625
589
626
const JSPropertySpec properties[] = {
627
+ JS_PSG (" env" , env_get, JSPROP_ENUMERATE),
590
628
JS_PSGS (" baseURL" , baseURL_get, baseURL_set, JSPROP_ENUMERATE),
591
629
JS_PSGS (" defaultBackend" , defaultBackend_get, defaultBackend_set, JSPROP_ENUMERATE),
592
630
JS_PS_END};
@@ -595,7 +633,10 @@ namespace Fastly {
595
633
RootedObject fastly (cx, JS_NewPlainObject (cx));
596
634
if (!fastly) return false ;
597
635
636
+ env.init (cx, Env::create (cx));
637
+ if (!env) return false ;
598
638
baseURL.init (cx);
639
+ defaultBackend.init (cx);
599
640
600
641
if (!JS_DefineProperty (cx, global, " fastly" , fastly, 0 )) return false ;
601
642
return JS_DefineFunctions (cx, fastly, methods) &&
@@ -3157,56 +3198,6 @@ namespace ClientInfo {
3157
3198
}
3158
3199
}
3159
3200
3160
- namespace ServiceInfo {
3161
- namespace Slots { enum {
3162
- Count
3163
- };};
3164
-
3165
- static constexpr char ENV_CACHE_GENERATION[] = " FASTLY_CACHE_GENERATION" ;
3166
- static constexpr char ENV_CUSTOMER_ID[] = " FASTLY_CUSTOMER_ID" ;
3167
- static constexpr char ENV_HOSTNAME[] = " FASTLY_HOSTNAME" ;
3168
- static constexpr char ENV_POP[] = " FASTLY_POP" ;
3169
- static constexpr char ENV_REGION[] = " FASTLY_REGION" ;
3170
- static constexpr char ENV_SERVICE_ID[] = " FASTLY_SERVICE_ID" ;
3171
- static constexpr char ENV_SERVICE_VERSION[] = " FASTLY_SERVICE_VERSION" ;
3172
- static constexpr char ENV_TRACE_ID[] = " FASTLY_TRACE_ID" ;
3173
-
3174
- const unsigned ctor_length = 0 ;
3175
-
3176
- bool check_receiver (JSContext* cx, HandleObject self, const char * method_name);
3177
-
3178
- template <const char * var_name>
3179
- bool env_var_get (JSContext* cx, unsigned argc, Value* vp) {
3180
- METHOD_HEADER (0 )
3181
-
3182
- RootedString env_var (cx, JS_NewStringCopyZ (cx, getenv (var_name)));
3183
- if (!env_var) return false ;
3184
-
3185
- args.rval ().setString (env_var);
3186
- return true ;
3187
- }
3188
-
3189
- const JSFunctionSpec methods[] = {
3190
- JS_FS_END};
3191
-
3192
- const JSPropertySpec properties[] = {
3193
- JS_PSG (" cacheGeneration" , env_var_get<ENV_CACHE_GENERATION>, 0 ),
3194
- JS_PSG (" customerId" , env_var_get<ENV_CUSTOMER_ID>, 0 ),
3195
- JS_PSG (" hostname" , env_var_get<ENV_HOSTNAME>, 0 ),
3196
- JS_PSG (" pop" , env_var_get<ENV_POP>, 0 ),
3197
- JS_PSG (" region" , env_var_get<ENV_REGION>, 0 ),
3198
- JS_PSG (" serviceId" , env_var_get<ENV_SERVICE_ID>, 0 ),
3199
- JS_PSG (" serviceVersion" , env_var_get<ENV_SERVICE_VERSION>, 0 ),
3200
- JS_PSG (" traceId" , env_var_get<ENV_TRACE_ID>, 0 ),
3201
- JS_PS_END};
3202
-
3203
- CLASS_BOILERPLATE_NO_CTOR (ServiceInfo)
3204
-
3205
- JSObject* create (JSContext* cx) {
3206
- return JS_NewObjectWithGivenProto (cx, &class_, proto_obj);
3207
- }
3208
- }
3209
-
3210
3201
3211
3202
namespace FetchEvent {
3212
3203
namespace Slots { enum {
@@ -3216,7 +3207,6 @@ namespace FetchEvent {
3216
3207
PendingPromiseCount,
3217
3208
DecPendingPromiseCountFunc,
3218
3209
ClientInfo,
3219
- ServiceInfo,
3220
3210
Count
3221
3211
};};
3222
3212
@@ -3272,22 +3262,6 @@ static PersistentRooted<JSObject*> INSTANCE;
3272
3262
return true ;
3273
3263
}
3274
3264
3275
- bool service_get (JSContext* cx, unsigned argc, Value* vp) {
3276
- METHOD_HEADER (0 )
3277
- RootedValue serviceInfo (cx, JS::GetReservedSlot (self, Slots::ServiceInfo));
3278
-
3279
- if (serviceInfo.isUndefined ()) {
3280
- RootedObject obj (cx, ServiceInfo::create (cx));
3281
- if (!obj)
3282
- return false ;
3283
- serviceInfo.setObject (*obj);
3284
- JS::SetReservedSlot (self, Slots::ServiceInfo, serviceInfo);
3285
- }
3286
-
3287
- args.rval ().set (serviceInfo);
3288
- return true ;
3289
- }
3290
-
3291
3265
static JSObject* prepare_downstream_request (JSContext* cx) {
3292
3266
return Request::create (cx, RequestHandle { INVALID_HANDLE },
3293
3267
BodyHandle { INVALID_HANDLE }, true );
@@ -3682,7 +3656,6 @@ static PersistentRooted<JSObject*> INSTANCE;
3682
3656
3683
3657
const JSPropertySpec properties[] = {
3684
3658
JS_PSG (" client" , client_get, 0 ),
3685
- JS_PSG (" service" , service_get, 0 ),
3686
3659
JS_PSG (" request" , request_get, 0 ),
3687
3660
JS_PS_END};
3688
3661
0 commit comments