public async Task <FindPersonResponse> FindPerson([FromBody] FindPersonRequest model) { var client = new KairosClient(); var clientResponse = await client.Recognise(new RecogniseRequestModel { Image = model.Image, GalleryName = "MyGallery" }); var subjectId = CheckCandidates(clientResponse); var matchedMember = Services.MemberService.GetMembersByPropertyValue("subjectId", subjectId).FirstOrDefault(); if (matchedMember == null) { return(new FindPersonResponse { IsSuccess = false }); } //var mark = ApplicationContext.Current.Services.MemberService.GetMembersByPropertyValue("subjectId", "Mark").FirstOrDefault(); //var someMedia = new UmbracoHelper(Umbraco.UmbracoContext).TypedMedia(mark.GetValue("initialImage")); var personResponse = new FindPersonResponse { ImageUrl = new UmbracoHelper(Umbraco.UmbracoContext).TypedMedia(matchedMember.GetValue("initialImage"))?.Url, GreetingText = matchedMember.GetValue <string>("greetingMessage"), IsSuccess = true }; return(personResponse); }
/// <summary> /// Remove subject from gallery /// </summary> /// <param name="kairosClient"></param> /// <param name="subjectId"></param> /// <param name="galleryId"></param> /// <returns></returns> public static GalleryRemoveResponse RemoveSubject(this KairosClient kairosClient, string subjectId, string galleryId) { var restClient = new RestClient("https://api.kairos.com"); var restRequest1 = new RestRequest(Method.POST) { Resource = "gallery/remove_subject", RequestFormat = DataFormat.Json }; restRequest1.AddHeader("app_id", kairosClient.ApplicationID); restRequest1.AddHeader("app_key", kairosClient.ApplicationKey); restRequest1.AddHeader("Content-Type", "application/json"); var jsonDeserializer = new JsonDeserializer(); restRequest1.AddBody(new { gallery_name = galleryId, subject_id = subjectId }); var restRequest2 = restRequest1; var restResponse = restClient.Execute <GalleryRemoveResponse>((IRestRequest)restRequest2); try { return(jsonDeserializer.Deserialize <GalleryRemoveResponse>((IRestResponse)restResponse)); } catch (SerializationException ex) { throw new SerializationException("Error serializing JSON string. JSON string: " + restResponse.Content); } }
private void MemberService_Saved(IMemberService sender, SaveEventArgs <IMember> e) { foreach (IMember member in e.SavedEntities) { var subjectId = member.GetValue <string>("subjectId"); if (subjectId == null) { return; } var kairosClient = new KairosClient(); if (!kairosClient.CheckPerson(subjectId)) { //todo: instead of using e.SavedEntities, use sender to get the member and then get its values instead! var initialMemberImage = new UmbracoHelper(UmbracoContext.Current).TypedMedia(member.GetValue("initialImage")); var imageUrl = initialMemberImage.Url; var enrollResult = System.Threading.Tasks.Task.Run(async() => await kairosClient.Enroll(new EnrollRequestModel { SubjectId = subjectId, GalleryName = "MyGallery", Image = $"{ConfigurationManager.AppSettings["PublicUrl"]}{imageUrl}" }) ).Result; } } }
public KairosService() { _kairosClient = new KairosClient { ApplicationID = Configurations.Config.ApplicationId, ApplicationKey = Configurations.Config.ApplicationKey }; }
/// <summary> /// Enroll advanced - accepts MultipleFaces /// </summary> /// <param name="kairosClient"></param> /// <param name="imageUrlOrBase64String"></param> /// <param name="subjectId"></param> /// <param name="galleryId"></param> /// <param name="selector"></param> /// <param name="multipleFaces"></param> /// <returns></returns> public static EnrollResponse Enroll( this KairosClient kairosClient, string imageUrlOrBase64String, string subjectId, string galleryId, string selector, bool multipleFaces) { var restClient = new RestClient("https://api.kairos.com"); var restRequest1 = new RestRequest(Method.POST) { Resource = "enroll", RequestFormat = DataFormat.Json }; restRequest1.AddHeader("app_id", kairosClient.ApplicationID); restRequest1.AddHeader("app_key", kairosClient.ApplicationKey); restRequest1.AddHeader("Content-Type", "application/json"); var jsonDeserializer = new JsonDeserializer(); restRequest1.AddBody(new { image = imageUrlOrBase64String, subject_id = subjectId, gallery_name = galleryId, multiple_faces = multipleFaces ? "true" : "false", selector = selector.ToUpper() }); var restRequest2 = restRequest1; var restResponse = restClient.Execute <EnrollResponse>(restRequest2); try { return(jsonDeserializer.Deserialize <EnrollResponse>(restResponse)); } catch (SerializationException ex) { throw new SerializationException("Error serializing JSON string. JSON string: " + restResponse.Content); } }