-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFunction.cs
More file actions
76 lines (57 loc) · 2.76 KB
/
Function.cs
File metadata and controls
76 lines (57 loc) · 2.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.IO;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
using LambdaSharp;
using Marvel.Api;
using Marvel.Api.Filters;
using My.TimeStone.GameLogic;
using Newtonsoft.Json;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace My.TimeStone.AvengersRecruitAndSubmit {
public class FunctionRequest : Types.Payload {
}
public class FunctionResponse : Types.Payload {
}
public class Function : ALambdaFunction<FunctionRequest, FunctionResponse> {
//--- Constants ---
const string PUBLICKEY = "ADD MARVEL PUBLIC KEY HERE";
const string PRIVATEKEY = "ADD MARVEL PRIVATE KEY HERE";
//--- Methods ---
public override async Task InitializeAsync(LambdaConfig config) { }
public override async Task<FunctionResponse> ProcessMessageAsync(FunctionRequest request) {
// Initialize the marvel api client
var client = new MarvelRestClient(PUBLICKEY, PRIVATEKEY);
// Initialize an avengers team
var team = new Types.AvengerTeam();
// Initialize character request filter
var characterRequestFilter = new CharacterRequestFilter();
// Query marvel api for desired avengers
// TODO: refine this logic to assemble stronger team
characterRequestFilter.OrderBy(OrderResult.NameAscending);
characterRequestFilter.Limit = 1;
var characterResponse = client.FindCharacters(characterRequestFilter);
foreach (var character in characterResponse.Data.Results)
{
// Initialize a comic listing filter to determine power for each avenger
var comicRequestFilter = new ComicRequestFilter();
comicRequestFilter.AddCharacter(character.Id);
// Form avenger object
var currentAvenger = new Types.Avenger();
currentAvenger.name = character.Name;
currentAvenger.id = character.Id;
currentAvenger.power = client.FindCharacterComics(character.Id.ToString(), comicRequestFilter).Data.Total;
// Add avenger to team
team.AddAvengerToTeam(currentAvenger);
}
var message = GameLogic.Methods.FormatBattlefieldId(request.RoundNumber, DateTime.UtcNow.ToString(), "AVENGERS", "DEFEND");
await Methods.PostBattlefield(new Types.Item
{
Id = message,
Value = JsonConvert.SerializeObject(team.avengerTeam)
});
return new FunctionResponse();
}
}
}