async Task ProcessWebApiRequest(HttpListenerContext context, WebApiMethod method) { context.Response.ContentType = "text/json"; context.Response.StatusCode = (int)HttpStatusCode.OK; HandlerTask handlerTask; switch (method) { case WebApiMethod.GetConfigForm: handlerTask = HandleConfigForm; break; case WebApiMethod.ConfigureIndexer: handlerTask = HandleConfigureIndexer; break; case WebApiMethod.GetIndexers: handlerTask = HandleGetIndexers; break; case WebApiMethod.TestIndexer: handlerTask = HandleTestIndexer; break; case WebApiMethod.DeleteIndexer: handlerTask = HandleDeleteIndexer; break; case WebApiMethod.GetSonarrConfig: handlerTask = HandleGetSonarrConfig; break; case WebApiMethod.ApplySonarrConfig: handlerTask = HandleApplySonarrConfig; break; case WebApiMethod.TestSonarr: handlerTask = HandleTestSonarr; break; default: handlerTask = HandleInvalidApiMethod; break; } JToken jsonReply = await handlerTask(context); await ReplyWithJson(context, jsonReply, method.ToString()); }
protected async Task <string> WebApi(WebApiMethod method, string servicePath, Object content = null) { HttpResponseMessage response = null; using (HttpClient client = new HttpClient()) { client.BaseAddress = new Uri(System.Configuration.ConfigurationManager.AppSettings["CoreURL"]); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("Authorization", BasicAuthString()); switch (method) { case WebApiMethod.Get: response = await client.GetAsync(servicePath).ConfigureAwait(false); break; case WebApiMethod.Post: response = await client.PostAsJsonAsync(servicePath, content).ConfigureAwait(false); break; case WebApiMethod.Put: response = await client.PutAsJsonAsync(servicePath, content).ConfigureAwait(false); break; case WebApiMethod.Delete: response = await client.DeleteAsync(servicePath).ConfigureAwait(false); break; } } if (response.StatusCode == System.Net.HttpStatusCode.OK || response.StatusCode == System.Net.HttpStatusCode.NoContent || response.StatusCode == System.Net.HttpStatusCode.Created) { return(response.Content.ReadAsStringAsync().Result); } else { throw new Exception("API call failed. " + response.StatusCode + " " + response.ReasonPhrase); } }
async Task ProcessWebApiRequest(HttpListenerContext context, WebApiMethod method) { context.Response.ContentType = "text/json"; context.Response.StatusCode = (int)HttpStatusCode.OK; HandlerTask handlerTask; switch (method) { case WebApiMethod.GetConfigForm: handlerTask = HandleConfigForm; break; case WebApiMethod.ConfigureIndexer: handlerTask = HandleConfigureIndexer; break; case WebApiMethod.GetIndexers: handlerTask = HandleGetIndexers; break; case WebApiMethod.TestIndexer: handlerTask = HandleTestIndexer; break; case WebApiMethod.DeleteIndexer: handlerTask = HandleDeleteIndexer; break; case WebApiMethod.GetSonarrConfig: handlerTask = HandleGetSonarrConfig; break; case WebApiMethod.ApplySonarrConfig: handlerTask = HandleApplySonarrConfig; break; case WebApiMethod.TestSonarr: handlerTask = HandleTestSonarr; break; case WebApiMethod.ApplyJackettConfig: handlerTask = HandleApplyJackettConfig; break; case WebApiMethod.GetJackettConfig: handlerTask = HandleJackettConfig; break; case WebApiMethod.JackettRestart: handlerTask = HandleJackettRestart; break; default: handlerTask = HandleInvalidApiMethod; break; } JToken jsonReply = await handlerTask(context); await ReplyWithJson(context, jsonReply, method.ToString()); }