/// <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; } }
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(); }