public async Task <HttpStatusCode> PostDataAsync <T>(T data, string targetHost, string actorUrl, string inbox = null) { var usedInbox = $"/inbox"; if (!string.IsNullOrWhiteSpace(inbox)) { usedInbox = inbox; } var json = JsonConvert.SerializeObject(data); var date = DateTime.UtcNow.ToUniversalTime(); var httpDate = date.ToString("r"); var digest = _cryptoService.ComputeSha256Hash(json); var signature = _cryptoService.SignAndGetSignatureHeader(date, actorUrl, targetHost, digest, usedInbox); var client = _httpClientFactory.CreateClient(); var httpRequestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri($"https://{targetHost}{usedInbox}"), Headers = { { "Host", targetHost }, { "Date", httpDate }, { "Signature", signature }, { "Digest", $"SHA-256={digest}" } }, Content = new StringContent(json, Encoding.UTF8, "application/ld+json") }; var response = await client.SendAsync(httpRequestMessage); response.EnsureSuccessStatusCode(); return(response.StatusCode); }