public async Task <IActionResult> GetAsync([FromRoute][BindRequired] string objectType) { var type = _typeResolver.FindFirstByName(objectType); // FIXME: allow pluralized type names if (type == null || !typeof(IObject).IsAssignableFrom(type)) { return(NotFound()); } if (!(HttpContext.Items[nameof(QueryContextProviderSelectorAttribute)] is IQueryContextProvider provider)) { return(await this.InternalServerErrorAsync(ErrorEvents.PlatformError, "Did not correctly resolve query context provider")); } var contexts = provider.Parse(type, User, Request.GetEncodedPathAndQuery()); var results = new List <object>(); foreach (var context in contexts) { results.Add(await context.GetAsync(_repository)); } throw new NotImplementedException(); //return provider.ToResult(results); }
private object CreateHandler(BackgroundTask task) { try { var handlerInfo = Serializer.Deserialize <HandlerInfo>(task.Handler); var typeName = $"{handlerInfo.Namespace}.{handlerInfo.Entrypoint}"; var type = _typeResolver.FindByFullName(typeName) ?? _typeResolver.FindFirstByName(typeName); return(type == null ? null : _backgroundServices.AutoResolve(type)); } catch (Exception e) { _logger.Error(() => "Error creating handler for task", e); throw; } }
public async Task <IActionResult> CreateBackgroundTask([FromBody] CreateBackgroundTaskModel model) { if (!this.TryValidateModelOrError(model, ErrorEvents.ValidationFailed, ErrorStrings.ValidationFailed, out var error)) { return(error); } if (!string.IsNullOrWhiteSpace(model.TaskType)) { var type = _typeResolver.FindByFullName(model.TaskType) ?? _typeResolver.FindFirstByName(model.TaskType); if (type == null) { return(this.BadRequestError(ErrorEvents.ResourceMissing, "No task type found with name {0}", model.TaskType)); } var(success, task) = await _host.TryScheduleTaskAsync(type, model.Data, t => { if (model.Tags?.Length > 0) { t.Tags.AddRange(model.Tags); } if (!string.IsNullOrWhiteSpace(model.Expression)) { t.Expression = model.Expression; } }); if (!success) { return(this.NotAcceptableError(ErrorEvents.CouldNotAcceptWork, "Task was not accepted by the server")); } return(Accepted(new Uri($"{Request.Path}/{task.Id}", UriKind.Relative))); } return(this.NotImplemented()); }