public async Task <Invoice> GetInvoice(string invoiceId, GetInvoiceOptions options = GetInvoiceOptions.None) { var query = GetInvoiceQueryString(options); var uri = new Uri(_baseUri, $"{INVOICE_PATH}/{invoiceId}{query}"); var response = await _httpClient.GetAsync(uri); await ExpectResponseCode(response, HttpStatusCode.OK, HttpStatusCode.Forbidden); if (response.StatusCode == HttpStatusCode.Forbidden) { if ((options & GetInvoiceOptions.IncludeYanked) == 0) { throw new BindleYankedException(); } else { throw new BindleProtocolException($"Bindle server returned status code {response.StatusCode}: {await response.Content.ReadAsStringAsync()}", response); } } var content = await response.Content.ReadAsStringAsync(); var syntax = GetTomlSyntax(content); var tomlOptions = new TomlModelOptions() { ConvertPropertyName = name => TomlNamingHelper.PascalToCamelCase(name) }; return(syntax.ToModel <Invoice>(tomlOptions)); }
private static string GetInvoiceQueryString(GetInvoiceOptions options) { if ((options & GetInvoiceOptions.IncludeYanked) == GetInvoiceOptions.IncludeYanked) { return("?yanked=true"); } return(String.Empty); }