/// <summary>
        /// Read a plate number from pictures.
        /// If fileName is valid then fileData if populated with images bytes (File.ReadAllBytes).
        /// If fileName is not valid then we use provided fileData and fileName is set to DateTime.Now.Ticks
        /// If fileName is not valid and fileData is not valid then we exit fuction and do nothing.
        /// </summary>
        /// <param name="postUrl">API Url.</param>
        /// <param name="fileName">File Path of image</param>
        /// <param name="fileData">File byte[] data of image</param>
        /// <param name="regions">Regions in CSV</param>
        /// <param name="token">Authentification Token.</param>
        /// <returns></returns>
        public static PlateReaderResult Read(string postUrl, string fileName, byte[] fileData, string regions, string token)
        {
            try
            {
                PlateReaderResult result           = null;
                string            formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
                string            contentType      = "multipart/form-data; boundary=" + formDataBoundary;

                if (!string.IsNullOrEmpty(fileName) && File.Exists(fileName))
                {
                    fileData = File.ReadAllBytes(fileName);
                }
                else
                {
                    fileName = DateTime.Now.Ticks.ToString();
                }

                if (fileData != null && fileData != null && fileData.Length > 0)
                {
                    byte[] formData = GetMultipartFormData(fileName, fileData, regions, formDataBoundary);

                    HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;

                    // Set up the request properties.
                    request.Method          = "POST";
                    request.ContentType     = contentType;
                    request.UserAgent       = ".NET Framework CSharp Client";
                    request.CookieContainer = new CookieContainer();
                    request.ContentLength   = formData.Length;
                    request.Headers.Add("Authorization", "Token " + token);

                    // Send the form data to the request.
                    using (Stream requestStream = request.GetRequestStream())
                    {
                        requestStream.Write(formData, 0, formData.Length);
                        requestStream.Close();
                    }

                    HttpWebResponse     response = (HttpWebResponse)request.GetResponse();
                    WebHeaderCollection header   = response.Headers;
                    var encoding = ASCIIEncoding.ASCII;
                    using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
                    {
                        string responseText = reader.ReadToEnd();
                        result = Utils.JsonSerializer <PlateReaderResult> .DeSerialize(responseText);
                    }
                }
                return(result);
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            try
            {
                Console.ForegroundColor = ConsoleColor.Green;
                List <string> filePaths = new List <string>();
                string        regions   = null;
                foreach (string arg in args)
                {
                    if (arg.Length > 3 || arg.StartsWith("/?"))
                    {
                        switch (arg.Substring(0, 2).ToUpper())
                        {
                        case "/F":
                            filePaths.Add(arg.Substring(3).Replace("\"", ""));
                            break;

                        case "/R":
                            regions = arg.Substring(3);
                            break;

                        case "/?":
                            Console.WriteLine("\t/F:<File Path>\t Set file path to upload.It can be set multiple time.");
                            Console.WriteLine("\t/R:<File Path>\t Set regions.");
                            Console.WriteLine("\t/?:<File Path>\t Help.");
                            Console.WriteLine("\tExamples\t /F:\"C:/Pictures/Car.jpg\"");
                            Console.WriteLine("\t        \t /F:\"C:/Pictures/Car1.jpg\" /F:\"C:/Pictures/Car2.jpg\"");
                            break;

                        default:
                            break;
                        }
                    }
                }
                if (filePaths.Count() == 0)
                {
                    Console.WriteLine("File path paramter cannot be empty.");
                    Console.WriteLine("Enter a key to exist");
                    Console.ReadKey();
                    return;
                }
                Console.WriteLine("Uploading Plate(s)...");
                Console.WriteLine("-------------------");
                string token   = "dc0ce67e9872e2051a4cca94724ea715462a35d9";
                string postUrl = "https://api.platerecognizer.com/v1/plate-reader/";

                foreach (var file in filePaths)
                {
                    try
                    {
                        PlateReaderResult plateReaderResult = PlateReader.Read(postUrl, file, null, token);
                        Console.WriteLine(string.Format("File [{0}] successfully uploaded.", file));
                        Console.WriteLine("-------------------");
                        Console.WriteLine(Utils.ObjectDumper.Dump(plateReaderResult));
                        Console.WriteLine("-------------------");
                    }
                    catch (Exception ex)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine(string.Format("Error occured when uploading [{0}].", file));
                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.StackTrace);
                        Console.ForegroundColor = ConsoleColor.Green;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                Console.ForegroundColor = ConsoleColor.Red;
            }

            Console.WriteLine("Enter a key to exist");
            Console.ResetColor();
            Console.ReadKey();
        }