コード例 #1
0
        public static async Task <List <Person> > MetadataVerification(MetadataVerification metadata)
        {
            using (var client = new HttpClient())
            {
                var service = $"{Settings.FunctionURL}/api/MetadataVerification/";

                byte[] time  = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
                byte[] key   = Guid.NewGuid().ToByteArray();
                var    token = Convert.ToBase64String(time.Concat(key).ToArray());
                token = SecurityHelper.Encrypt(token, Settings.Cryptography);

                MetadataVerificationRequest request = new MetadataVerificationRequest();
                request.Token    = token;
                request.Metadata = metadata;

                byte[] byteData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(request));
                using (var content = new ByteArrayContent(byteData))
                {
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    var httpResponse = await client.PostAsync(service, content);

                    if (httpResponse.StatusCode == HttpStatusCode.OK)
                    {
                        var str = await httpResponse.Content.ReadAsStringAsync();

                        List <Person> result = JsonConvert.DeserializeObject <List <Person> >(str);
                        return(result);
                    }
                }
            }
            return(null);
        }
コード例 #2
0
        private async Task LoadPersons()
        {
            if (!Plugin.Connectivity.CrossConnectivity.Current.IsConnected)
            {
                await Application.Current.MainPage.DisplayAlert(SearchPersonResult_ConnectivityHeader, SearchPersonResult_ConnectivityMessage, SearchPersonResult_ConnectivityAccept);

                await NavigationService.PopAsync();
            }
            IsBusy = true;
            var result = new List <Person>();

            if (!IsByPhoto)
            {
                MetadataVerification metadata = new MetadataVerification();
                metadata.Name     = Person.Name;
                metadata.Lastname = Person.Lastname;

                result = await RestHelper.MetadataVerification(metadata);
            }
            else
            {
                var stream = new System.IO.MemoryStream(Photo);

                var pid       = Guid.NewGuid().ToString();
                var extension = "jpg";

                if (await StorageHelper.UploadPhoto(pid, stream, true))
                {
                    result = await RestHelper.ImageVerification($"{pid}.{extension}");
                }
                else
                {
                    await Application.Current.MainPage.DisplayAlert(SearchPersonResult_VerificationErrorHeader, SearchPersonResult_VerificationErrorMessage, SearchPersonResult_VerificationErrorAccept);
                }
            }

            if (!(result is null))
            {
                Results = new ObservableCollection <Person>(result);
            }

            if (Results is null || !Results.Any())
            {
                await Application.Current.MainPage.DisplayAlert(SearchPersonResult_NoResultsHeader, SearchPersonResult_NoResultsMessage, SearchPersonResult_NoResultsAccept);

                await NavigationService.PopAsync();
            }

            IsBusy = false;
        }
コード例 #3
0
        public static async Task <string> SearchDocument(MetadataVerification metadata)
        {
            byte[] time  = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
            byte[] key   = Guid.NewGuid().ToByteArray();
            var    token = Convert.ToBase64String(time.Concat(key).ToArray());

            token = SecurityHelper.Encrypt(token, Settings.CryptographyKey);
            System.Console.WriteLine($"Token: {token}");

            MetadataVerificationRequest request = new MetadataVerificationRequest();

            request.Token    = token;
            request.Metadata = metadata;

            using (var client = new HttpClient())
            {
                var    service  = $"http://localhost:7071/api/MetadataVerification/";
                byte[] byteData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(request));
                using (var content = new ByteArrayContent(byteData))
                {
                    content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var httpResponse = client.PostAsync(service, content).Result;

                    if (httpResponse.StatusCode == HttpStatusCode.OK)
                    {
                        System.Console.WriteLine(httpResponse.StatusCode);
                        return(await httpResponse.Content.ReadAsStringAsync());
                    }
                    else
                    {
                        System.Console.WriteLine(httpResponse.StatusCode);
                    }
                }
            }
            return(null);
        }
コード例 #4
0
        private async Task AfterSearchAsync(IDialogContext context, IAwaitable <SearchQuery> result)
        {
            var state = await result;

            MetadataVerification metadata = new MetadataVerification();

            metadata.Name     = state.Name;
            metadata.Lastname = state.Lastname;
            metadata.Country  = state.Country.ToString();

            var list = new List <Person>();

            list = await RestHelper.MetadataVerification(metadata);

            if (!list.Any())
            {
                var noitems = await TranslatorHelper.TranslateSentenceAsync($"{Resources.Resource.Search_NoItems}", Settings.SpecificLanguage);

                await context.PostAsync(noitems);

                TraceManager.SendTrace(context, "SearchDialog", "End");
                context.Done("done");
            }
            else
            {
                var reply = context.MakeMessage();

                reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
                reply.Attachments      = GetCardsAttachments(list);

                await context.PostAsync(reply);

                TraceManager.SendTrace(context, "SearchDialog", "End");
                context.Done("done");
            }
        }
コード例 #5
0
        private static async void PrintMenu()
        {
            string option = string.Empty;

            do
            {
                option = string.Empty;
                System.Console.Clear();

                int r = 225;
                int g = 255;
                int b = 250;

                Colorful.Console.WriteAscii("COGNITIVE LOCATOR", Color.FromArgb(r, g, b));

                Colorful.Console.WriteLine("1.- Register person", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("2.- Verificate person", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("3.- Upload wrong person image", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("4.- Upload multiple face image", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("5.- Request new token to get mobile settings", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("6.- Request using an existing token to get mobile settings", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("7.- Search document by metadata attribute", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;
                Colorful.Console.WriteLine("8.- Exit", Color.FromArgb(r, g, b));
                r -= 18; b -= 9;

                Colorful.Console.Write("\nPick an option:", Color.FromArgb(r, g, b));
                option = System.Console.ReadLine();

                switch (option)
                {
                case "1":
                    await UploadImageAsync(0, false);

                    break;

                case "2":
                    await UploadImageAsync(0, true);

                    System.Console.ReadKey();
                    break;

                case "3":
                    await UploadImageAsync(1, false);

                    break;

                case "4":
                    await UploadImageAsync(2, false);

                    break;

                case "5":
                    string sresult = await RequestMobileSettings(string.Empty);

                    System.Console.WriteLine(sresult);
                    System.Console.ReadKey();
                    break;

                case "6":
                    System.Console.Write("\nCurrent token:");
                    string currentToken = System.Console.ReadLine();
                    string fresult      = await RequestMobileSettings(currentToken);

                    System.Console.WriteLine(fresult);
                    System.Console.ReadKey();
                    break;

                case "7":
                    MetadataVerification metadata = new MetadataVerification();
                    metadata.ReportedBy = "Roberto Cervantes";
                    metadata.Country    = "MX";
                    metadata.Name       = "Liam";
                    metadata.Lastname   = "Neeson";

                    string sdresult = await SearchDocument(metadata);

                    System.Console.WriteLine(sdresult);
                    System.Console.ReadKey();
                    break;
                }
            }while (option != "8");
        }