public async Task <UIResponse> Submit(byte[] bytes) { if (IsBusy) { return(new UIResponse()); } IsBusy = true; ImageData = bytes; var location = Settings.CameraLocation; var result = new UIResponse(); AudienceResponse response = await AzureService.CaptureAudience(location, imageData); if (!response.HasError) { //Saves to the cache with a timespan for expiration var capture = new AudienceData() { ImageData = imageData, Location = location, Audience = response.Audience }; Barrel.Current.Add(StorageIds.CurrentCapture, capture, TimeSpan.FromMinutes(5)); result.Result = true; } else { result.Message = response.Message; } IsBusy = false; return(result); }
public static async Task <IActionResult> IdentifyAudience([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var data = JsonConvert.DeserializeObject <AudienceRequest>(requestBody); var response = new AudienceResponse(); try { // Decode data from Base64 byte[] imageBytes = Convert.FromBase64String(data.Image); // Process the image using (Stream stream = new MemoryStream(imageBytes)) { var members = await FaceService.DetectMembers(stream, DateTime.Now); if (members.Count > 0) { // Storage the results var token = new System.Threading.CancellationToken(); var location = !string.IsNullOrEmpty(data.Location) ? data.Location : DefaultLocationId; await storage.WriteAsync(location, members, token); response.Audience = MemberUtils.CreateAudience(members); response.StatusCode = (int)HttpStatusCode.OK; return(new OkObjectResult(response)); } } } catch (Exception ex) { response.Message = ex.Message; response.StatusCode = (int)HttpStatusCode.InternalServerError; return(new BadRequestObjectResult(response)); } response.Message = "Unable to detect faces."; response.StatusCode = (int)HttpStatusCode.BadRequest; return(new BadRequestObjectResult(response)); }
private AudienceResponse TokenMapper(User audience, Guid token, string message = "") { var webUrl = ConfigurationManager.AppSettings["WebUrl"] + "/"; var userCardDetail = _userRepository.GetUserCardDetailsByUserId(audience.Id); UserDetail userDetailReturn = new UserDetail(); userDetailReturn.UserId = audience.Id; userDetailReturn.Email = audience.Email; userDetailReturn.IsVerified = audience.IsVerified; userDetailReturn.AccessToken = token; userDetailReturn.Message = message; userDetailReturn.IsCardRegistered = userCardDetail != null ? true : false; userDetailReturn.UserCode = webUrl + "UserCodes/" + audience.UserCode + ".jpeg"; var validateResponse = new AudienceResponse { data = userDetailReturn, }; return(validateResponse); }
public static async Task <IActionResult> AudienceHistory([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log) { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var data = JsonConvert.DeserializeObject <AudienceHistoryRequest>(requestBody); var response = new AudienceResponse(); try { var endDate = (data.EndDate != default(DateTime)) ? data.EndDate : DateTime.Now; var startDate = (data.StartDate != default(DateTime)) ? data.StartDate : endDate.Subtract(TimeSpan.FromMinutes(data.Minutes)); var token = new System.Threading.CancellationToken(); var locations = data.Locations; List <Member> collection; if (data.UniqueMembersOnly) { collection = await storage.UniqueMembersTimeSpan(startDate, endDate, locations, token); } else { collection = await storage.QueryTimeSpan(startDate, endDate, locations, token); } response.Audience = MemberUtils.CreateAudience(collection); response.StatusCode = (int)HttpStatusCode.OK; return(new OkObjectResult(response)); } catch (Exception ex) { response.Message = ex.Message; response.StatusCode = (int)HttpStatusCode.InternalServerError; return(new BadRequestObjectResult(response)); } }