Skip to content
Class that can be used as value object representing a DataUrl (rfc2397)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
DataUtils.Test
DataUtils
DataUtils.sln
README.md

README.md

DataUtils.DataUrl

Class that can be used as value object 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);
You can’t perform that action at this time.