/// <summary> /// Validates an input object accessor request API model /// </summary> /// <param name="apiModel"></param> /// <returns></returns> public static IEnumerable <string> ValidateApiModel(this InputObjectAccessorRequestApiModel apiModel) { if (string.IsNullOrEmpty(apiModel.ObjectName)) { yield return("[objectName] is required."); } if (string.IsNullOrEmpty(apiModel.ObjectProviderName)) { yield return("[objectProviderName] is required."); } if (string.IsNullOrEmpty(apiModel.SignatureRsaKeyXml)) { yield return("[signatureRsaKeyXml] is required."); } if (apiModel.ObjectMetadata == null) { yield return("[objectMetadata] is required."); } if (apiModel.ExecutionMetadata == null) { yield return("[executionMetadata] is required."); } else { foreach (var emError in apiModel.ExecutionMetadata.ValidateApiModel()) { yield return($"[executionMetadata]: {emError}"); } } }
/// <summary> /// Converts an input object accessor request API model to a core model /// </summary> /// <param name="apiModel"></param> /// <param name="objectName"></param> /// <returns></returns> public static InputObjectAccessorRequest ToCoreModel(this InputObjectAccessorRequestApiModel apiModel, string objectName) => new InputObjectAccessorRequest { ExecutionMetadata = apiModel.ExecutionMetadata.ToCoreModel(), ExpirationPeriod = apiModel.ExpirationPeriod, ObjectMetadata = apiModel.ObjectMetadata.ToCoreModel(objectName), ObjectProviderName = apiModel.ObjectProviderName, SignatureRsaKeyXml = apiModel.SignatureRsaKeyXml };
public async Task <IActionResult> CalculateWriteableInputObjectAccessorAsync([FromBody] InputObjectAccessorRequestApiModel requestApiModel) { // Validate the input object request API model... var errors = requestApiModel.ValidateApiModel().ToList(); // If we encounter any validation errors, respond with [400 Bad Request] + detailed error description... if (errors.Any()) { return(BadRequest($"[{errors.Count}] error(s) occurred while attempting to process your request: {string.Join(' ', errors)}")); } // Convert the input object accessor request to its core model counterpart and attempt to obtain an object accessor... var ioAccessorRequest = requestApiModel.ToCoreModel(requestApiModel.ObjectName); var ioAccessor = await ioAccessorProvider.GetWritableAccessorAsync(ioAccessorRequest); // Respond with [200 OK] + the accessor... return(Ok(ioAccessor)); }