Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F105092509
fromDataURI.js
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Mar 14, 17:05
Size
1 KB
Mime Type
text/x-java
Expires
Sun, Mar 16, 17:05 (2 d)
Engine
blob
Format
Raw Data
Handle
24917757
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
fromDataURI.js
View Options
'use strict'
;
import
AxiosError
from
'../core/AxiosError.js'
;
import
parseProtocol
from
'./parseProtocol.js'
;
import
platform
from
'../platform/index.js'
;
const
DATA_URL_PATTERN
=
/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/
;
/**
* Parse data uri to a Buffer or Blob
*
* @param {String} uri
* @param {?Boolean} asBlob
* @param {?Object} options
* @param {?Function} options.Blob
*
* @returns {Buffer|Blob}
*/
export
default
function
fromDataURI
(
uri
,
asBlob
,
options
)
{
const
_Blob
=
options
&&
options
.
Blob
||
platform
.
classes
.
Blob
;
const
protocol
=
parseProtocol
(
uri
);
if
(
asBlob
===
undefined
&&
_Blob
)
{
asBlob
=
true
;
}
if
(
protocol
===
'data'
)
{
uri
=
protocol
.
length
?
uri
.
slice
(
protocol
.
length
+
1
)
:
uri
;
const
match
=
DATA_URL_PATTERN
.
exec
(
uri
);
if
(
!
match
)
{
throw
new
AxiosError
(
'Invalid URL'
,
AxiosError
.
ERR_INVALID_URL
);
}
const
mime
=
match
[
1
];
const
isBase64
=
match
[
2
];
const
body
=
match
[
3
];
const
buffer
=
Buffer
.
from
(
decodeURIComponent
(
body
),
isBase64
?
'base64'
:
'utf8'
);
if
(
asBlob
)
{
if
(
!
_Blob
)
{
throw
new
AxiosError
(
'Blob is not supported'
,
AxiosError
.
ERR_NOT_SUPPORT
);
}
return
new
_Blob
([
buffer
],
{
type
:
mime
});
}
return
buffer
;
}
throw
new
AxiosError
(
'Unsupported protocol '
+
protocol
,
AxiosError
.
ERR_NOT_SUPPORT
);
}
Event Timeline
Log In to Comment