public static async void Run([QueueTrigger("delete-posts-from-track", Connection = "QUEUESTORAGE_CONNECTION")] CloudQueueMessage trackId, TraceWriter log) { List <string> listOfPostsToDelete = await PostRepository.GetPostIdsInTrack(trackId.AsString); foreach (var postId in listOfPostsToDelete) { TableStorageRepository.AddMessageToQueue("process-delete-post", $"{trackId.AsString}.{postId}"); } log.Info($"Added all posts in track to delete queue: {trackId.AsString}"); }
public static async Task <IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "track/{trackId}/post/{postId}")] HttpRequest req, string trackId, string postId, TraceWriter log) { try { KeySecret keySecret = AuthRepository.DecodeKeyAndSecret(req.Headers["X-Track-Key"]); // validate authKey if (!AuthRepository.ValidateSHA256(trackId + keySecret.Key, keySecret.Secret)) { return(new UnauthorizedResult()); } // get track TrackAuth track = await TrackRepository.GetTrack(trackId); if (track == null || track.track_key != keySecret.Key) { return(new UnauthorizedResult()); } // get post Post post = await PostRepository.GetPost(trackId, postId); if (post == null || track.RowKey != post.PartitionKey) { return(new UnauthorizedResult()); } // delete the post TableStorageRepository.AddMessageToQueue("process-delete-post", $"{trackId}.{postId}"); // return response return(new OkResult()); } catch (Exception e) { log.Info(e.Message); return(new UnauthorizedResult()); } }