Skip to content

Instantly share code, notes, and snippets.

@Elfocrash
Last active September 8, 2018 09:18
public static ResourceResponse<T> ToResourceResponse<T>(this T resource, HttpStatusCode statusCode, IDictionary<string, string> responseHeaders = null) where T : Resource, new()
{
var resourceResponse = new ResourceResponse<T>(resource);
var documentServiceResponseType = Type.GetType("Microsoft.Azure.Documents.DocumentServiceResponse, Microsoft.Azure.DocumentDB.Core, Version=1.9.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
var flags = BindingFlags.NonPublic | BindingFlags.Instance;
var headers = new NameValueCollection { { "x-ms-request-charge", "0" } };
if (responseHeaders != null)
{
foreach (var responseHeader in responseHeaders)
{
headers[responseHeader.Key] = responseHeader.Value;
}
}
var arguments = new object[] { Stream.Null, headers, statusCode, null };
var documentServiceResponse = Activator.CreateInstance(documentServiceResponseType ?? throw new InvalidOperationException(), flags, null, arguments, null);
var responseField = typeof(ResourceResponse<T>).GetField("response", BindingFlags.NonPublic | BindingFlags.Instance);
if (responseField != null) responseField.SetValue(resourceResponse, documentServiceResponse);
return resourceResponse;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment