-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
81 lines (56 loc) · 2.18 KB
/
Copy pathProgram.cs
File metadata and controls
81 lines (56 loc) · 2.18 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
77
78
79
80
81
using System.Text.Json;
using DevFactsAgregatorIntegration.Models;
using DevFactsAgregatorIntegration.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHttpClient();
builder.Configuration.AddEnvironmentVariables();
builder.Services.AddCors();
builder.Services.AddSingleton<FactScrapper>();
var baseUrl = builder.Configuration["BaseUrl"];
var app = builder.Build();
app.UseCors((options) => options.AllowAnyHeader().AllowAnyOrigin().AllowAnyMethod());
app.MapGet("/", () => $"Hello World!,{baseUrl}");
app.MapPost("/webhook", async (HttpRequest request) =>
{
Console.WriteLine($"this enpoint was triggerd");
Console.WriteLine(await request.ReadFromJsonAsync<object>());
});
app.MapPost("/tick", async (HttpRequest request, IHttpClientFactory httpClient, FactScrapper factScrapper) =>
{
Console.WriteLine("Tick endpoint triggered - Starting background task...");
var payload = await request.ReadFromJsonAsync<TelexPayloadModel>();
if (payload == null)
return Results.BadRequest("Invalid JSON");
string channelId = payload.ChannelId;
string returnUrl = payload.ReturnUrl;
Console.WriteLine($"Tick Received: {channelId}, {returnUrl}");
_ = Task.Run(async () =>
{
try
{
var client = httpClient.CreateClient();
var fact = await factScrapper.ScrapRandomFact();
var message = $@"
Title: {fact.Tittle}
Summary: {fact.Content}
Source: {fact.Source}
";
var testing = new TelexWebhookModel()
{
Username = "Tech Fact Aggregator",
Status = "success",
Message = message,
EventName = "Random Tech Fact"
};
var response = await client.PostAsJsonAsync(returnUrl, testing);
Console.WriteLine($"Data posted to telex channel - Status: {response.StatusCode}");
}
catch (Exception e)
{
Console.WriteLine($"Error in background task: {e}");
}
});
return Results.Accepted("", new { Status = "processing" });
});
app.MapGet("/integration.json", () => { return Results.Ok(Integration.GetIntegrationSpecs(baseUrl)); });
app.Run();