public async Task RegisterClient(FocusMetadata metadata, CancellationToken token = default) { try { var jsonData = JsonSerializer.Serialize(metadata, _serializerOptions);// metadata.Serialize(); var client = _httpClientFactory.CreateClient(); var httpContent = new StringContent(jsonData); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; //client.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8"); var response = await client.PostAsync(_focusUrl, httpContent, token); var content = await response.Content.ReadAsStringAsync(); if (content == "success") { _logger.LogInformation($"Api '{metadata.Path}' has been registered as {metadata.ServiceName}_{metadata.MethodName}."); } else { _logger.LogError($"Api '{metadata.Path}' registration failed. "); } } catch (Exception ex) { _logger.LogError(ex.StackTrace); } }
public async Task RegisterClient(ControllerActionDescriptor p, CancellationToken token = default) { var meta = new FocusMetadata { AppName = _options.AppName, ServiceName = p.ControllerName, MethodName = p.ActionName, Path = $"{_options.ContextPath}/{p.AttributeRouteInfo.Template}".Replace("//", "/"), PathDesc = p.MethodInfo.CustomAttributes.Single(o => o.AttributeType == typeof(FocusClientAttribute)) .ConstructorArguments[0].Value.ToString(), ParameterTypes = p.Parameters?.Select(o => o.ParameterType.FullName).Aggregate((x1, x2) => $"{x1},{x2}"), RpcExt = "", RpcType = "http" }; await RegisterClient(meta, token); }