mirror of
https://github.com/HeyPuter/puter.git
synced 2026-09-22 13:15:49 +00:00
fix coercion service not selecting correct conversion path (#2660)
This commit is contained in:
@@ -66,11 +66,13 @@ class CoercionService extends BaseService {
|
||||
coerce: async typed_value => {
|
||||
console.debug('coercion is running!');
|
||||
|
||||
const response = await secureAxiosRequest(CoercionService.MODULES.axios,
|
||||
typed_value.value,
|
||||
{
|
||||
responseType: 'stream',
|
||||
});
|
||||
const response = await secureAxiosRequest(
|
||||
CoercionService.MODULES.axios,
|
||||
typed_value.value,
|
||||
{
|
||||
responseType: 'stream',
|
||||
},
|
||||
);
|
||||
|
||||
return new TypedValue({
|
||||
$: 'stream',
|
||||
@@ -89,11 +91,13 @@ class CoercionService extends BaseService {
|
||||
content_type: 'video',
|
||||
},
|
||||
coerce: async typed_value => {
|
||||
const response = await secureAxiosRequest(CoercionService.MODULES.axios,
|
||||
typed_value.value,
|
||||
{
|
||||
responseType: 'stream',
|
||||
});
|
||||
const response = await secureAxiosRequest(
|
||||
CoercionService.MODULES.axios,
|
||||
typed_value.value,
|
||||
{
|
||||
responseType: 'stream',
|
||||
},
|
||||
);
|
||||
|
||||
return new TypedValue({
|
||||
$: 'stream',
|
||||
@@ -172,7 +176,7 @@ class CoercionService extends BaseService {
|
||||
return coerced;
|
||||
}
|
||||
|
||||
return typed_value;
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -182,11 +182,15 @@ class DriverService extends BaseService {
|
||||
col_types.set(k, types[k]);
|
||||
}
|
||||
}
|
||||
await services.emit('driver.register.interfaces',
|
||||
{ col_interfaces });
|
||||
await services.emit(
|
||||
'driver.register.interfaces',
|
||||
{ col_interfaces },
|
||||
);
|
||||
|
||||
await services.emit('driver.register.drivers',
|
||||
{ col_drivers });
|
||||
await services.emit(
|
||||
'driver.register.drivers',
|
||||
{ col_drivers },
|
||||
);
|
||||
}
|
||||
|
||||
// This is a bit meta: we register the "driver" driver interface.
|
||||
@@ -421,8 +425,10 @@ class DriverService extends BaseService {
|
||||
}
|
||||
|
||||
const svc_permission = this.services.get('permission');
|
||||
const reading = await svc_permission.scan(actor,
|
||||
PermissionUtil.join('service', service_name, 'ii', iface));
|
||||
const reading = await svc_permission.scan(
|
||||
actor,
|
||||
PermissionUtil.join('service', service_name, 'ii', iface),
|
||||
);
|
||||
const options = PermissionUtil.reading_to_options(reading);
|
||||
if ( options.length <= 0 ) {
|
||||
throw APIError.create('forbidden');
|
||||
@@ -480,9 +486,11 @@ class DriverService extends BaseService {
|
||||
const svc_rateLimit = this.services.get('rate-limit');
|
||||
|
||||
await svc_su.sudo(policy_holder, async () => {
|
||||
await svc_rateLimit.check_and_increment(`V1:${service_name}:${iface}:${method}`,
|
||||
effective_policy['rate-limit'].max,
|
||||
effective_policy['rate-limit'].period);
|
||||
await svc_rateLimit.check_and_increment(
|
||||
`V1:${service_name}:${iface}:${method}`,
|
||||
effective_policy['rate-limit'].max,
|
||||
effective_policy['rate-limit'].period,
|
||||
);
|
||||
});
|
||||
return args;
|
||||
},
|
||||
@@ -519,7 +527,10 @@ class DriverService extends BaseService {
|
||||
: method_spec.result.type
|
||||
;
|
||||
const svc_coercion = this.services.get('coercion');
|
||||
result = await svc_coercion.coerce(desired_type, result);
|
||||
const coerced = await svc_coercion.coerce(desired_type, result);
|
||||
if ( coerced ) {
|
||||
result = coerced;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user