Пример #1
0
        public string Normalize(string responseData)
        {
            var error     = JsonError.FromJson(responseData);
            var data      = JsonResponse.FromJson(responseData);
            var finalList = new List <List <Dictionary <string, string> > >();

            if (data != null && data.Items != null)
            {
                foreach (Item item in data.Items)
                {
                    List <Dictionary <string, string> > resultArray = IterateThroughRows(item);
                    finalList.Add(resultArray);
                }

                return(JsonConvert.SerializeObject(finalList.SelectMany(x => x), Formatting.Indented, new JsonConverter[] { new StringEnumConverter() }));
            }
            else if (data != null && data.Items == null)
            {
                return(JsonConvert.SerializeObject(data, Formatting.Indented, new JsonConverter[] { new StringEnumConverter() }));
            }
            else
            {
                return(JsonConvert.SerializeObject(error, Formatting.Indented, new JsonConverter[] { new StringEnumConverter() }));
            }
        }
Пример #2
0
        public static bool DidSessionExpire(UnityWebRequest request)
        {
            if (request.result != UnityWebRequest.Result.Success)
            {
                return(false);
            }

            JsonResponse response = JsonResponse.FromJson(request.downloadHandler.text);

            return(response.code == -3);
        }
Пример #3
0
        /// <summary>
        /// Creates an error string based on a web request. If there are no errors, returns null.
        /// </summary>
        /// <param name="request">The request to get errors from.</param>
        public static string GetErrorString(UnityWebRequest request)
        {
            if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.DataProcessingError)
            {
                return("There was a communication error: " + request.error);
            }
            else if (request.result == UnityWebRequest.Result.ProtocolError)
            {
                return("There was an HTTP error: " + request.error);
            }
            else
            {
                try
                {
                    JsonResponse response = JsonResponse.FromJson(request.downloadHandler.text);

                    switch (response.code)
                    {
                    case 0:         return("There was an unknown error: " + request.downloadHandler.text);

                    case -1:        return("There was an internal server error: " + response.message);

                    case -2:        return("Bad data was sent to server: " + response.message);

                    case -3:        return("Session has expired: " + response.message);
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                    return("There was an unknown error: " + request.downloadHandler.text);
                }
            }

            return(null);
        }
Пример #4
0
        public static async Task <string> MakeRequest(Stream stream, SKCanvas canvas)
        {
            HttpResponseMessage response;
            string responseText;

            byte[] byteData;

            using (HttpClient client = new HttpClient())
            {
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    stream.CopyTo(memoryStream);
                    byteData = memoryStream.ToArray();
                }

                using (ByteArrayContent content = new ByteArrayContent(byteData))
                {
                    // Request headers
                    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", (string)Application.Current.Resources["BingImageSearchKey"]);
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                    response = await client.PostAsync(uri, content);

                    responseText = await response.Content.ReadAsStringAsync();

                    var jsonResponse = JsonResponse.FromJson(responseText);

                    StringBuilder sb   = new StringBuilder();
                    SKRect        area = new SKRect();
                    StringBuilder allTranslatedText = new StringBuilder();

                    SKPaint textBrush = new SKPaint
                    {
                        TextSize    = Globals.TextFontSize,
                        IsAntialias = true,
                        Color       = Globals.TextColor,
                        Style       = SKPaintStyle.StrokeAndFill,
                    };
                    textBrush.Typeface = SKFontManager.Default.MatchCharacter('अ');  //Somehow this is not working with Google results
                    if (null == textBrush.Typeface)
                    {
                        SKTypeface.FromFamilyName("Arial");
                    }

                    SKPaint drawBrush = new SKPaint
                    {
                        IsAntialias = true,
                        Color       = SKColors.DarkGray,
                        Style       = SKPaintStyle.Stroke,
                        StrokeWidth = 5
                    };

                    if (Globals.DoFillBox)
                    {
                        drawBrush.Style = SKPaintStyle.StrokeAndFill;
                    }
                    else
                    {
                        drawBrush.Style = SKPaintStyle.Stroke;
                    }

                    foreach (Region region in jsonResponse.Regions)
                    {
                        string[] box = region.BoundingBox.Split(',');
                        area = SKRect.Create(float.Parse(box[0]), float.Parse(box[1]), float.Parse(box[2]), float.Parse(box[3]));

                        canvas.DrawRect(float.Parse(box[0]), float.Parse(box[1]), float.Parse(box[2]), float.Parse(box[3]), drawBrush);

                        //TODO: revisit and fix this. Orientation is not working
                        switch (jsonResponse.Orientation.ToLower())
                        {
                        case "down":
                            canvas.RotateDegrees(180 + (float)jsonResponse.TextAngle);
                            break;

                        case "left":
                            canvas.RotateDegrees(90 + (float)jsonResponse.TextAngle);
                            break;

                        case "right":
                            canvas.RotateDegrees(-90 + (float)jsonResponse.TextAngle);
                            break;

                        case "up":
                            canvas.RotateDegrees((float)jsonResponse.TextAngle);
                            break;

                        default:
                            break;
                        }

                        foreach (OCRResponse.Line line in region.Lines)
                        {
                            foreach (Word word in line.Words)
                            {
                                sb.Append(word.Text); sb.Append(" ");
                            }
                            sb.AppendLine(); sb.Append(" ");
                        }
                        sb.AppendLine();
                        string translatedText = await Translator.Translate(sb.ToString(), Globals.UseGoogleTranslation);

                        TextDrawing.DrawText(canvas, translatedText, area, textBrush);
                        sb.Clear();
                        allTranslatedText.Append(translatedText);
                    }



                    return(allTranslatedText.ToString());
                }
            }
        }