Skip to content
File

Blob: src/workerd/api/data-url.h

cpp40 lines
1#pragma once
2 
3#include <workerd/jsg/url.h>
4#include <workerd/util/mimetype.h>
5 
6#include <kj/array.h>
7 
8namespace workerd::api {
9 
10class DataUrl final {
11 public:
12 static kj::Maybe<DataUrl> tryParse(kj::StringPtr url);
13 static kj::Maybe<DataUrl> from(const jsg::Url& url);
14 
15 DataUrl(DataUrl&&) = default;
16 DataUrl& operator=(DataUrl&&) = default;
17 KJ_DISALLOW_COPY(DataUrl);
18 
19 const MimeType& getMimeType() const {
20 return mimeType;
21 }
22 kj::ArrayPtr<const kj::byte> getData() const {
23 return data.asPtr();
24 }
25 
26 kj::Array<kj::byte> releaseData() {
27 return data.releaseAsBytes();
28 }
29 
30 private:
31 DataUrl(MimeType mimeType, kj::Array<kj::byte> data)
32 : mimeType(kj::mv(mimeType)),
33 data(kj::mv(data)) {}
34 
35 MimeType mimeType;
36 kj::Array<kj::byte> data;
37};
38 
39} // namespace workerd::api