Example #1
0
    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));
    }
Example #2
0
 private static string GetInvoiceQueryString(GetInvoiceOptions options)
 {
     if ((options & GetInvoiceOptions.IncludeYanked) == GetInvoiceOptions.IncludeYanked)
     {
         return("?yanked=true");
     }
     return(String.Empty);
 }