SolvedByAiApi
unknown
csharp
3 years ago
6.3 kB
4
Indexable
using System; using System.Collections.Generic; using System.Net; using System.Text; using Newtonsoft.Json; namespace ConsoleApp4 { public class SolvedByAiApi { string url_service; string api_key; public class SolvedResponseRaw { public Result result { get; set; } public List<string> notifications { get; set; } public class Result { public Clockwise clockwise { get; set; } public CounterClockwise counter_clockwise { get; set; } } public class Clockwise { public int angle { get; set; } public int steps { get; set; } } public class CounterClockwise { public int angle { get; set; } public int steps { get; set; } } } public SolvedByAiApi(string url_service, string api_key) { this.url_service = url_service; this.api_key = api_key; } /* Esempi di risposta POSITIVA response_code = 200 steps, direction NEGATIVE CONTROLLI LATO CLIENT response_code = 900 response_message = Descrizione Errore CONTROLLI LATO SERVICE ( SOLVED BY AI ) response_code >= 400 <= 500 response_message = DESCRIZIONE ERRORE ( NON AUTORIZZATO, CREDITO FINITO, ERRORI NELLA RICHIESTA) */ public CaptchaResolutorResponse SolveCaptcha(byte[] img_input) { CaptchaResolutorResponse res = new CaptchaResolutorResponse(); if (img_input != null) { string base64_img = Convert.ToBase64String(img_input); if(base64_img!=null && base64_img.Length > 0) { string json = null; using (var client = new WebClient()) { json = encode_params(this.api_key, 9, base64_img); client.Headers.Add("content-type", "application/json"); try { string response = Encoding.ASCII.GetString(client.UploadData(this.url_service, "POST", Encoding.UTF8.GetBytes(json))); if (response != null) response = response.Replace("counter-clockwise", "counter_clockwise"); SolvedResponseRaw raw = JsonConvert.DeserializeObject<SolvedResponseRaw>(response); if (raw != null && raw.result != null) { res.Response_code = 200; if (raw.result.clockwise != null && raw.result.clockwise.steps != null) { res.Steps = raw.result.clockwise.steps; res.Direction = "RIGHT"; } if (raw.result.counter_clockwise != null && raw.result.counter_clockwise.steps != null) { if (res.Steps == null || raw.result.counter_clockwise.steps < res.Steps) { res.Steps = raw.result.counter_clockwise.steps; res.Direction = "LEFT"; } } if (raw.notifications != null && raw.notifications.Count > 0) { foreach (string n in raw.notifications) { res.Message += n + "\n"; } } } else { res.Response_code = 900; res.Message = "NO RESULTS"; } }catch(Exception ex) { Console.WriteLine("{0} Exception caught.", ex); if (ex.GetType().Name == "WebException") { WebException we = (WebException)ex; HttpWebResponse response = (System.Net.HttpWebResponse)we.Response; res.Response_code = (int)response.StatusCode; res.Message = response.StatusDescription; } else { res.Response_code = 402; res.Message = "BAD RESPONSE"; } } } } else { res.Response_code = 900; res.Message = "BASE 64 IMAGE CORRUPTED"; } } else { res.Response_code = 900; res.Message = "NO IMAGE"; } return res; } private string encode_params(string api_key, int steps, string base64_image) { string json = null; if (api_key != null && steps != null && base64_image != null) { Dictionary<string, string> valuePairs = new Dictionary<string, string> { { "apiKey", api_key }, { "steps", steps+"" }, { "image", base64_image } }; json = JsonConvert.SerializeObject(valuePairs, Formatting.Indented); } return json; } } }
Editor is loading...