Temporary repo to track my changes on LTS functions app porting
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Net;
namespace CDP.CDPCore { /*public class SignalRFunctions { private readonly ILogger<SignalRFunctions> _logger;
private static readonly HttpClient HttpClient = new(); private static string Etag = string.Empty; private static int StarCount = 0;
public SignalRFunctions(ILogger<SignalRFunctions> log) { _logger = log; }
[Function("index")] public static HttpResponseData GetHomePage([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); response.WriteString(File.ReadAllText("content/index.html")); response.Headers.Add("Content-Type", "text/html"); return response; }
[Function("negotiate")] public static HttpResponseData Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequestData req, [SignalRConnectionInfoInput(HubName = "cdp")] string connectionInfo) { var response = req.CreateResponse(HttpStatusCode.OK); response.Headers.Add("Content-Type", "application/json"); response.WriteString(connectionInfo); return response; }
[Function(nameof(SendMessage))] [SignalROutput(HubName = "cdp")] public static async Task<SignalRMessageAction> SendMessage([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req) { string requestBody = new StreamReader(req.Body).ReadToEnd(); SendMessagePayload pl = JsonConvert.DeserializeObject<SendMessagePayload>(requestBody); if (pl == null) return null;
return await SendMessageInternal(pl);
}
public static async Task<SignalRMessageAction> SendMessageInternal(SendMessagePayload pl) { if (pl == null) return null;
if (string.IsNullOrEmpty(pl.ConnectionId) && string.IsNullOrEmpty(pl.UserId)) return null;
try { Console.WriteLine($"Sending message to {pl.ConnectionId}"); } catch (Exception ex) { Console.WriteLine(ex.Message); }
return new SignalRMessageAction(pl.Target) { Arguments = new[] { pl.Message }, ConnectionId = pl.ConnectionId.Trim() }; }
//[Function("broadcast")]
//[SignalROutput(HubName = "cdp")]
//public static async Task<SignalRMessageAction> Broadcast([TimerTrigger("5 * * * * *] TimerInfo timerInfo)
//{
// var request = new HttpRequestMessage(HttpMethod.Get, "https://api.github.com/repos/azure/azure-signalr");
// request.Headers.UserAgent.ParseAdd("Serverless");
// request.Headers.Add("If-None-Match", Etag);
// var response = await HttpClient.SendAsync(request);
// if (response.Headers.Contains("Etag"))
// {
// Etag = response.Headers.GetValues("Etag").First();
// }
// if (response.StatusCode == HttpStatusCode.OK)
// {
// var result = await response.Content.ReadFromJsonAsync<GitResult>();
// if (result != null)
// {
// StarCount = result.StarCount;
// }
// }
// return new SignalRMessageAction("newMessage", new object[] { $"Current star count of https://github.com/Azure/azure-signalr is: {StarCount}" });
//}
}*/
public class SendMessagePayload { public string ConnectionId { get; set; } public string UserId { get; set; } public string Message { get; set; } public string Target { get; set; } // this will default to 'newMessage'
} }
|