public static async Task <HttpResponseMessage> PushForUsersAsync([HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequestMessage req, TraceWriter log) { log.Info("C# HTTP trigger function processed a request."); var appCenterToken = GetEnvironmentVariable("AppCenterToken"); var ownerName = GetEnvironmentVariable("OwnerName"); if (!IsProperlyConfigured(appCenterToken, ownerName, log)) { return(req.CreateResponse(HttpStatusCode.ExpectationFailed, new { Error = "Server Fault.The Server is missing critical configuration settings." })); } try { string requestBody = await req.Content.ReadAsStringAsync(); if (string.IsNullOrWhiteSpace(requestBody)) { return(req.CreateResponse(HttpStatusCode.BadRequest, "The request has no content")); } var request = JsonConvert.DeserializeObject <UserNotificationRequest>(requestBody); var db = new AppCenterUserTrackingContext(); var registrations = db.UserRegistrations.Where(reg => request.Users.Contains(reg.UserId)); var targets = new Dictionary <string, NotificationTarget>(); foreach (var platform in registrations.Select(r => r.Platform).Distinct()) { var target = new NotificationTarget { Type = TargetType.Devices, Devices = registrations.Where(r => r.Platform == platform).Select(r => r.DeviceId) }; targets.Add(platform, target); } var notificationRequest = new NotificationRequest { Targets = targets, Content = request.Content }; var responses = await ProcessTargetsAsync(notificationRequest, ownerName, appCenterToken, log); return(GenerateResponse(req, responses)); } catch (Exception ex) { log.Error("Unexpected Error occurred", ex); return(req.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } }
public static void Run([ServiceBusTrigger("knownuser", AccessRights.Listen, Connection = "")] string myQueueItem, TraceWriter log) { log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); var user = JsonConvert.DeserializeObject <AppCenterPushRelay.Models.UserRegistration>(myQueueItem); var db = new AppCenterUserTrackingContext(); if (!db.UserRegistrations.Any(ur => ur.UserId == user.UserId && ur.DeviceId == user.DeviceId)) { db.UserRegistrations.Add(user); db.SaveChanges(); } }