ASTE.Modules.APIDiscovery.Helpers.RestHelper.Config C# (CSharp) Метод

Config() публичный Метод

public Config ( string url, string version ) : Task
url string
version string
Результат Task
        public async Task<ASTE.Resources.Models.ConfigModel> Config(string url, string version)
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(url + "/");
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                // New code:
                HttpResponseMessage response = await client.GetAsync(version + "/config");
                if (response.IsSuccessStatusCode)
                {
                    var json = await response.Content.ReadAsAsync<object>();
                    var json_data = json.ToString();
                    var configmodel = JsonConvert.DeserializeObject<Resources.Models.ConfigModel>(json_data);
                    return configmodel;
                }
                else
                {
                    throw new HttpResponseException(response);
                }
            }
        }

Usage Example

Пример #1
0
        public async Task<ActionResult> Add(string url, string version)
        {
            var ctx = new APIDiscoveryContext();
            if (ModelState.IsValid)
            {
                RestHelper helper = new RestHelper();
                try
                {
                    var status = await helper.Ping(url, version);
                    if (status != null && status.status.ToLower() == Constants.ASTE_PINGSTATUS_SUCCESS)
                    {
                        try
                        {
                            var config = await helper.Config(url, version);
                            if (config != null)
                            {
                                if (config.type.ToLower() == Constants.ASTE_MODULETYPE_PROCESS)
                                {
                                    Module new_module = new Module();
                                    new_module.name = config.name;
                                    new_module.created = DateTime.Now;
                                    new_module.guid = config.guid;
                                    new_module.description = config.description;
                                    new_module.author = config.author;
                                    new_module.authorContact = config.authorContact;
                                    new_module.isProcess = true;
                                    new_module.methods = new List<ModuleMethod>();
                                    new_module.my_dependencies = new List<ModuleDependency>();
                                    new_module.api_url = url;
                                    new_module.version = version;
                                    if (config.methods != null)
                                    {
                                        foreach (var m in config.methods)
                                        {
                                            new_module.methods.Add(new ModuleMethod()
                                            {
                                                created = new DateTime(),
                                                name = m.method,
                                                methodInfo = m.@params
                                            });
                                        }
                                    }
                                    var dependency_not_found = false;
                                    foreach (var d in config.dependencies)
                                    {
                                        var db_module = ctx.modules.Where(x => x.guid == d).FirstOrDefault();
                                        if (db_module == null)
                                        {
                                            ModelState.AddModelError("Config", "Process dependency {0} was not found, could not install API to discovery");
                                            dependency_not_found = true;
                                            break;
                                        }
                                        else
                                        {
                                            new_module.my_dependencies.Add(new ModuleDependency()
                                            {
                                                created = DateTime.Now,
                                                dependency_id = db_module.id,
                                                name = db_module.name

                                            });
                                        }
                                    }
                                    if (!dependency_not_found)
                                    {
                                        ctx.modules.Add(new_module);
                                        ctx.SaveChanges();
                                    }
                                }
                                else
                                {
                                    ModelState.AddModelError("Config", "Contacted api is a module, not a process");
                                    return View("New", new Models.newModelOrProcess() { url = url, version = version });
                                }

                            }
                            else
                            {
                                ModelState.AddModelError("Config", "config did not return any data");
                                return View("New", new Models.newModelOrProcess() { url = url, version = version });
                            }
                        }
                        catch (Exception ex)
                        {
                            ModelState.AddModelError("Config", "Url of the API could not be resolved, or the service is not listening - config method");
                            return View("New", new Models.newModelOrProcess() { url = url, version = version });
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Ping", status.message);
                        return View("New", new Models.newModelOrProcess() { url = url, version = version });
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("Ping", "Url of the API could not be resolved, or the service is not listening - ping method");
                    return View("New", new Models.newModelOrProcess() { url = url, version = version });
                }

                return RedirectToAction("Index", "Process");
            }

            return View("New", new Models.newModelOrProcess() { url = url, version = version });
        }