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}");
        }
Example #2
0
        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());
            }
        }