/dotnet-DataUrl

Class that can be used as value object representing a DataUrl (rfc2397)

Primary LanguageC#

DataUtils.DataUrl

Library that can be used to construct value objects representing a DataUrl (rfc2397)

  • Parse DataUrl strings
  • Construct DataUrl objects from byte array or string
  • Cross platform, targets .NET Standard 2.0
  • Published as Nuget package

Reading data URL's from string

// From data url string
var dataUrl = new DataUrl("data:image/gif...."); 

// Get content as string
dataUrl.ReadAsString();

// Get content as string with different encoding
dataUrl.ReadAsString(Encoding.UTF7);

// Get content as base64 encoded string
dataUrl.ReadAsStringBase64Encoded();

// Get raw content as byte array
dataUrl.Content

// Get content type
dataUrl.ContentType;

// Get possibly attached parameters as IEnumerable<KeyValuePair<string, string>>
dataUrl.Parameters; 

The constructor will throw DataUrlParseException if it's not possible to construct a DataUrl instance from the given string. You can also use DataUrlParser.TryParse if you don't want to deal with exceptions.

if (DataUrlParser.TryParse(dataUrlString, out var parsedDataUrl)) {
    // We could parse a data url
}

Creating data URL's

// Create from string
var dataUrl = DataUrl.NewDataUrl(jsonString, "application/json");

// Create from image
var bytes = File.ReadAllBytes("C:\\somepath\\picture.png");
var dataUrl = DataUrl.NewDataUrl(bytes, "image/png");

// Create from already base64 encoded string
var dataUrl = DataUrl.NewFromBase64EncodedString(base64EncodedString, "image/png");

// Create a data URL with attached parameters
var parameters = new KeyValuePair<string, string> [] { 
    new KeyValuePair<string, string>("type", "token"), 
    new KeyValuePair<string, string>("authority", "https://...")
};
var dataUrl = DataUrl.NewDataUrl(
    jwtString, // Can also use a byte array
    "text/plain", 
    parameters
);

// When having another encoding other than default
DataUrl.NewDataUrl(myString, "text/plain", Encoding.UTF7);
DataUrl.NewDataUrl(myString, "text/plain", parameters, Encoding.UTF7);