Exemplo n.º 1
0
        private async Task UpdateRolesAsync(UpdateSeiyuuMessage updateSeiyuuMessage, ICollection <MalVoiceActingRoleUpdateData> parsedVoiceActingRoles)
        {
            var seiyuuExistingRoles = await _seiyuuRoleRepository.GetAllSeiyuuRolesAsync(updateSeiyuuMessage.Id, false);

            foreach (var parsedRole in parsedVoiceActingRoles)
            {
                if (!seiyuuExistingRoles.Any(role => role.Anime.MalId.Equals(parsedRole.AnimeMalId) && role.Character.MalId.Equals(parsedRole.CharacterMaId)))
                {
                    var animeInDatabase = await InsertAnimeAsync(parsedRole.AnimeMalId);

                    var characterInDatabase = await InsertCharacterAsync(parsedRole.CharacterMaId);

                    if (animeInDatabase != null && characterInDatabase != null)
                    {
                        await _animeRoleRepository.AddAsync(new AnimeRole
                        {
                            Id          = Guid.NewGuid(),
                            LanguageId  = LanguageId.Japanese,
                            RoleTypeId  = parsedRole.RoleType.Equals("Main") ? AnimeRoleTypeId.Main : AnimeRoleTypeId.Supporting,
                            AnimeId     = animeInDatabase.Id,
                            CharacterId = characterInDatabase.Id,
                            SeiyuuId    = updateSeiyuuMessage.Id
                        });
                    }
                }
            }
        }
        public async Task PublishSeiyuuUpdateAsync(UpdateSeiyuuMessage updateSeiyuuMessage, int delayInSeconds = 0)
        {
            var sendMessageRequest = new SendMessageRequest
            {
                MessageBody  = JsonSerializer.Serialize(updateSeiyuuMessage),
                QueueUrl     = _queueUrl,
                DelaySeconds = delayInSeconds
            };

            await _sqsService.SendMessageAsync(sendMessageRequest);
        }
Exemplo n.º 3
0
        private async Task InsertSeiyuuAsync(UpdateSeiyuuMessage updateSeiyuuMessage, MalSeiyuuUpdateData updateData)
        {
            var newSeiyuu = new Seiyuu
            {
                Id         = updateSeiyuuMessage.Id,
                MalId      = updateSeiyuuMessage.MalId,
                Name       = updateData.Name,
                About      = updateData.About,
                KanjiName  = updateData.JapaneseName,
                ImageUrl   = updateData.ImageUrl,
                Popularity = updateData.Popularity,
                Birthday   = updateData.Birthday,
            };

            Console.WriteLine($"Inserted seiyuu with malId {updateSeiyuuMessage.MalId} ({updateData.Name})");

            await _seiyuuRepository.AddAsync(newSeiyuu);
        }
Exemplo n.º 4
0
        public async Task InsertSingleSeiyuu(UpdateSeiyuuMessage updateSeiyuuMessage)
        {
            var seiyuuToUpdate = await _seiyuuRepository.GetAsync(updateSeiyuuMessage.MalId);

            if (seiyuuToUpdate != null)
            {
                return;
            }

            var updateData = await _malApiService.GetSeiyuuDataAsync(updateSeiyuuMessage.MalId);

            if (updateData == null || !JikanParserHelper.IsJapanese(updateData.JapaneseName) || !updateData.VoiceActingRoles.Any())
            {
                return;
            }

            await InsertSeiyuuAsync(updateSeiyuuMessage, updateData);

            await InsertRolesAsync(updateSeiyuuMessage, updateData.VoiceActingRoles);
        }
Exemplo n.º 5
0
        public async Task HandleAsync(UpdateSeiyuuMessage updateSeiyuuMessage)
        {
            var seiyuuToUpdate = await _seiyuuRepository.GetAsync(updateSeiyuuMessage.MalId);

            if (seiyuuToUpdate == null)
            {
                return;
            }

            var updateData = await _malApiService.GetSeiyuuDataAsync(updateSeiyuuMessage.MalId);

            if (updateData == null)
            {
                return;
            }

            UpdateCharacter(seiyuuToUpdate, updateData);
            await _seiyuuRepository.UpdateAsync(seiyuuToUpdate);

            await UpdateRolesAsync(updateSeiyuuMessage, updateData.VoiceActingRoles);
        }
Exemplo n.º 6
0
    public async Task RunAsync()
    {
        var lambda = new UpdateSeiyuuLambda();

        var message = new UpdateSeiyuuMessage
        {
            Id    = Guid.Parse("9738c977-6eab-447b-8f6a-3f0bc48b111e"),
            MalId = 212
        };

        var sqsMessage = new SQSEvent
        {
            Records = new List <SQSEvent.SQSMessage>
            {
                new SQSEvent.SQSMessage
                {
                    Body = JsonSerializer.Serialize(message)
                }
            }
        };

        await lambda.InvokeAsync(sqsMessage);
    }