public HttpConnector(Intento _intento) { intento = _intento; if (intento.proxy?.ProxyUri != null && intento.proxy.ProxyEnabled) { var proxy = new WebProxy() { Address = intento.proxy.ProxyUri, UseDefaultCredentials = false }; if (!string.IsNullOrWhiteSpace(intento.proxy.ProxyUserName)) { proxy.Credentials = new NetworkCredential(userName: intento.proxy.ProxyUserName, password: intento.proxy.ProxyPassword); } var httpClientHandler = new HttpClientHandler() { Proxy = proxy, }; client = new HttpClient(httpClientHandler, false); } else { client = new HttpClient(); } client.DefaultRequestHeaders.Add("apikey", intento.apiKey); string userAgent = string.Format("Intento.CSharpSDK/{0} {1}", intento.version, intento.otherUserAgent); client.DefaultRequestHeaders.Add("User-Agent", userAgent); }
public HttpConnector(Intento _intento) { intento = _intento; client = new HttpClient(); client.DefaultRequestHeaders.Add("apikey", intento.apiKey); string userAgent = string.Format("Intento.CSharpSDK/{0} {1}", intento.version, intento.otherUserAgent); client.DefaultRequestHeaders.Add("User-Agent", userAgent); }
public static Intento Create( string intentoKey, Dictionary <string, object> auth = null, string path = "https://api.inten.to/", string userAgent = null, Action <string, string, Exception> loggingCallback = null) { Intento intento = new Intento(intentoKey, auth: auth, path: path, userAgent: userAgent, loggingCallback: loggingCallback); return(intento); }
public IntentoAiText(IntentoAi parent) { this.parent = parent; this.intento = parent.Intento; }
async public Task <dynamic> FulfillAsync(object text, string to, string from = null, string provider = null, bool async = false, bool wait_async = false, string format = null, object auth = null, string custom_model = null, string glossary = null, int[] intentoGlossary = null, object pre_processing = null, object post_processing = null, bool failover = false, object failover_list = null, string routing = null, bool trace = false, Dictionary <string, string> special_headers = null, bool useSyncwrapper = false) { dynamic preProcessingJson = GetJson(pre_processing, "pre_processing"); dynamic postProcessingJson = GetJson(post_processing, "post_processing"); dynamic json = new JObject(); // ------ context section dynamic context = new JObject(); int textLength = 0; // text if (text == null) { context.text = ""; } else if (text is IEnumerable <string> ) { context.text = GetJson(((IEnumerable <string>)text).Select(i => i == null ? "" : i), "text"); textLength = ((IEnumerable <string>)text).Where(x => x != null).Sum(i => i.Length); } else { context.text = GetJson(text.ToString(), "text") ?? ""; textLength = ((string)text).Length; } // determination of the possibility of using the syncwrapper // maximum 10k characters if (useSyncwrapper) { if (textLength < 10000) { async = !useSyncwrapper; } else { useSyncwrapper = false; } } // to context.to = to; // from if (!string.IsNullOrWhiteSpace(from)) { context.from = from; } // format if (!string.IsNullOrWhiteSpace(format)) { context.format = format; } // custom_model if (!string.IsNullOrWhiteSpace(custom_model)) { context.category = custom_model; } // glossary if (!string.IsNullOrWhiteSpace(glossary)) { context.glossary = glossary; } // intento glossary if (intentoGlossary != null && intentoGlossary.Length > 0) { dynamic intentoG = JArray.FromObject(intentoGlossary.Select(g => JObject.FromObject(new { id = g }))); context.glossary = intentoG; } json.context = context; // ----- service section dynamic service = new JObject(); // provider if (!string.IsNullOrWhiteSpace(provider)) { service.provider = provider; } // async parameter if (async) { service.async = true; } // auth parameter service.auth = GetJson(auth, "auth"); // routing if (!string.IsNullOrEmpty(routing)) { service.routing = routing; } // pre-post processing paramters if (preProcessingJson != null || postProcessingJson != null) { dynamic processing = new JObject(); if (preProcessingJson != null) { processing.pre = preProcessingJson; } if (postProcessingJson != null) { processing.post = postProcessingJson; } service.processing = processing; } // failover parameters if (failover) { service.failover = true; JArray failoverJson; if (failover_list != null) { if (failover_list is string) { failoverJson = JArray.Parse((string)failover_list); } else if (failover_list is JArray) { failoverJson = (JArray)failover_list; } else { throw new IntentoInvalidParameterException("failover_list", "need to json-list-string or Newtonsoft JArray"); } service.failover_list = failover_list; } } json.service = service; dynamic jsonResult; string url = "ai/text/translate"; if (trace) { url += "?trace=true"; } // Call to Intento API and get json result using (HttpConnector conn = new HttpConnector(Intento)) { jsonResult = await conn.PostAsync(url, json, useSyncwrapper : useSyncwrapper); } if (async && wait_async) { // async opertation (in terms of IntentoApi) and we need to wait result of it string id = jsonResult.id; // In case of Sandbox key and some errors in parameters request to IntentoAPI may return: // 1. id: async operation started // 2. result of translation: Sandcox key // 3. error: validation of arameters failed (like request to translate html with provider with no such capabilities) if (id == null) { // Not a (1) - return result immediately, nothing to wait return(jsonResult); } jsonResult = await Intento.WaitAsyncJobAsync(id); } if (useSyncwrapper) { JObject response = new JObject(); response["results"] = jsonResult.results; response["meta"] = jsonResult.meta; response["service"] = jsonResult.service; ((JObject)jsonResult)["response"] = new JArray() { response }; jsonResult.meta["providers"] = new JArray() { jsonResult.service.provider }; } return(jsonResult); }
public IntentoAiTextTranslate(IntentoAiText parent) { this.parent = parent; this.intento = parent.Intento; }
async public Task <dynamic> FulfillAsync(object text, string to, string from = null, string provider = null, bool async = false, bool wait_async = false, string format = null, object auth = null, string custom_model = null, string glossary = null, object pre_processing = null, object post_processing = null, bool failover = false, object failover_list = null, string routing = null, bool trace = false, bool deserialize_text = false) { dynamic preProcessingJson = GetJson(pre_processing, "pre_processing"); dynamic postProcessingJson = GetJson(post_processing, "post_processing"); dynamic json = new JObject(); // ------ context section dynamic context = new JObject(); // text if (text == null) { context.text = ""; } else if (text is IEnumerable <string> ) { context.text = GetJson(((IEnumerable <string>)text).Select(i => i == null ? "" : i), "text"); } else { context.text = GetJson(text.ToString(), "text") ?? ""; } // to context.to = to; // from if (!string.IsNullOrWhiteSpace(from)) { context.from = from; } // format if (!string.IsNullOrWhiteSpace(format)) { context.format = format; } // custom_model if (!string.IsNullOrWhiteSpace(custom_model)) { context.category = custom_model; } // glossary if (!string.IsNullOrWhiteSpace(glossary)) { context.glossary = glossary; } json.context = context; // ----- service section dynamic service = new JObject(); // provider if (!string.IsNullOrWhiteSpace(provider)) { service.provider = provider; } // async parameter if (async) { service.async = true; } // auth parameter service.auth = GetJson(auth, "auth"); // routing if (!string.IsNullOrEmpty(routing)) { service.routing = routing; } // pre-post processing paramters if (preProcessingJson != null || postProcessingJson != null) { dynamic processing = new JObject(); if (preProcessingJson != null) { processing.pre = preProcessingJson; } if (postProcessingJson != null) { processing.post = postProcessingJson; } service.processing = processing; } // failover parameters if (failover) { service.failover = true; JArray failoverJson; if (failover_list != null) { if (failover_list is string) { failoverJson = JArray.Parse((string)failover_list); } else if (failover_list is JArray) { failoverJson = (JArray)failover_list; } else { throw new IntentoInvalidParameterException("failover_list", "need to json-list-string or Newtonsoft JArray"); } service.failover_list = failover_list; } } json.service = service; // Call to Intento API and get json result HttpConnector conn = new HttpConnector(Intento); string url = "ai/text/translate"; if (trace) { url += "?trace=true"; } dynamic jsonResult = await conn.PostAsync(url, json); if (async && wait_async) { // async opertation (in terms of IntentoApi) and we need to wait result of it string id = jsonResult.id; // In case of Sandbox key and some errors in parameters request to IntentoAPI may return: // 1. id: async operation started // 2. result of translation: Sandcox key // 3. error: validation of arameters failed (like request to translate html with provider with no such capabilities) if (id == null) { // Not a (1) - return result immediately, nothing to wait return(jsonResult); } jsonResult = await Intento.WaitAsyncJobAsync(id); } return(jsonResult); }
public IntentoAi(Intento intento) { this.intento = intento; }