Example #1
0
        public async Task DeleteUpload(UploadLog uploadLog, string reason)
        {
            Log.Information($"Deleting UploadLog with ID '{uploadLog.Id}' (reply '{uploadLog.ReplyFullname}')");

            if (!uploadLog.UploadDeleted)
            {
                switch (uploadLog.UploadDestination.ToLower())
                {
                case "imgur":
                    uploadLog.UploadDeleted = await imgurClient.Delete(uploadLog.UploadDeleteKey);

                    break;

                case "gfycat":
                    uploadLog.UploadDeleted = await gfycatClient.Delete(uploadLog.UploadDeleteKey);

                    break;

                default:
                    throw new NotImplementedException($"Unimplemented delete from upload destination '{uploadLog.UploadDestination}'.");
                }
            }

            if (!uploadLog.ReplyDeleted)
            {
                await redditClient.DeletePost(uploadLog.ReplyFullname);

                uploadLog.ReplyDeleted = true;
            }

            if (uploadLog.DeleteDatetime == null)
            {
                uploadLog.DeleteDatetime = DateTime.UtcNow;
                uploadLog.DeleteReason   = reason;
            }

            databaseAccessor.UpdateUploadLog(uploadLog);

            Log.Information($"Deleted post '{uploadLog.ReplyFullname}'.");
        }