Files
2023-03-03 11:18:55 +01:00

1968 lines
30 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title> HttpClient</title>
<script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script src="./build/entry.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link href="https://fonts.googleapis.com/css?family=Roboto:100,400,700|Inconsolata,700" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
<link type="text/css" rel="stylesheet" href="https://jmblog.github.io/color-themes-for-google-code-prettify/themes/tomorrow-night.min.css">
<link type="text/css" rel="stylesheet" href="styles/app.min.css">
<link type="text/css" rel="stylesheet" href="styles/iframe.css">
<link type="text/css" rel="stylesheet" href="">
<script async defer src="https://buttons.github.io/buttons.js"></script>
</head>
<body class="layout small-header">
<div id="stickyNavbarOverlay"></div>
<div class="top-nav">
<div class="inner">
<a id="hamburger" role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
<div class="logo">
</div>
<div class="menu">
<div class="navigation">
<a
href="index.html"
class="link"
>
Documentation
</a>
</div>
</div>
</div>
</div>
<div id="main">
<div
class="sidebar "
id="sidebarNav"
>
<nav>
<h2><a href="index.html">Documentation</a></h2><div class="category"><h3>Classes</h3><ul><li><a href="Hanko.html">Hanko</a></li></ul></div><div class="category"><h2>SDK</h2><h3>Classes / Internal</h3><ul><li><a href="Client.html">Client</a></li><li><a href="Headers.html">Headers</a></li><li><a href="HttpClient.html">HttpClient</a></li><li><a href="PasscodeState.html">PasscodeState</a></li><li><a href="PasswordState.html">PasswordState</a></li><li><a href="Response.html">Response</a></li><li><a href="State.html">State</a></li><li><a href="UserState.html">UserState</a></li><li><a href="WebauthnState.html">WebauthnState</a></li></ul><h3>Classes / Clients</h3><ul><li><a href="ConfigClient.html">ConfigClient</a></li><li><a href="EmailClient.html">EmailClient</a></li><li><a href="PasscodeClient.html">PasscodeClient</a></li><li><a href="PasswordClient.html">PasswordClient</a></li><li><a href="ThirdPartyClient.html">ThirdPartyClient</a></li><li><a href="UserClient.html">UserClient</a></li><li><a href="WebauthnClient.html">WebauthnClient</a></li></ul><h3>Classes / Errors</h3><ul><li><a href="ConflictError.html">ConflictError</a></li><li><a href="EmailAddressAlreadyExistsError.html">EmailAddressAlreadyExistsError</a></li><li><a href="HankoError.html">HankoError</a></li><li><a href="InvalidPasscodeError.html">InvalidPasscodeError</a></li><li><a href="InvalidPasswordError.html">InvalidPasswordError</a></li><li><a href="InvalidWebauthnCredentialError.html">InvalidWebauthnCredentialError</a></li><li><a href="MaxNumOfEmailAddressesReachedError.html">MaxNumOfEmailAddressesReachedError</a></li><li><a href="MaxNumOfPasscodeAttemptsReachedError.html">MaxNumOfPasscodeAttemptsReachedError</a></li><li><a href="NotFoundError.html">NotFoundError</a></li><li><a href="PasscodeExpiredError.html">PasscodeExpiredError</a></li><li><a href="RequestTimeoutError.html">RequestTimeoutError</a></li><li><a href="TechnicalError.html">TechnicalError</a></li><li><a href="ThirdPartyError.html">ThirdPartyError</a></li><li><a href="TooManyRequestsError.html">TooManyRequestsError</a></li><li><a href="UnauthorizedError.html">UnauthorizedError</a></li><li><a href="UserVerificationError.html">UserVerificationError</a></li><li><a href="WebauthnRequestCancelledError.html">WebauthnRequestCancelledError</a></li></ul><h3>Classes / Utilities</h3><ul><li><a href="WebauthnSupport.html">WebauthnSupport</a></li></ul><h3>Interfaces / DTO</h3><ul><li><a href="Config.html">Config</a></li><li><a href="Credential.html">Credential</a></li><li><a href="Email.html">Email</a></li><li><a href="EmailConfig.html">EmailConfig</a></li><li><a href="Emails.html">Emails</a></li><li><a href="Identity.html">Identity</a></li><li><a href="Passcode.html">Passcode</a></li><li><a href="PasswordConfig.html">PasswordConfig</a></li><li><a href="User.html">User</a></li><li><a href="UserInfo.html">UserInfo</a></li><li><a href="WebauthnCredential.html">WebauthnCredential</a></li><li><a href="WebauthnCredentials.html">WebauthnCredentials</a></li><li><a href="WebauthnFinalized.html">WebauthnFinalized</a></li><li><a href="WebauthnTransports.html">WebauthnTransports</a></li></ul><h3>Interfaces / Internal</h3><ul><li><a href="LocalStorage.html">LocalStorage</a></li><li><a href="LocalStoragePasscode.html">LocalStoragePasscode</a></li><li><a href="LocalStoragePassword.html">LocalStoragePassword</a></li><li><a href="LocalStorageUser.html">LocalStorageUser</a></li><li><a href="LocalStorageUsers.html">LocalStorageUsers</a></li><li><a href="LocalStorageWebauthn.html">LocalStorageWebauthn</a></li></ul></div>
</nav>
</div>
<div class="core" id="main-content-wrapper">
<div class="content">
<header class="page-title">
<p>Class</p>
<h1>HttpClient</h1>
</header>
<section>
<header>
<h2><span class="attribs"><span class="type-signature"></span></span>HttpClient<span class="signature">(api, timeout<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span></h2>
<div class="class-description">Internally used for communication with the Hanko API. It also handles authorization tokens to enable authorized
requests.
Currently, there is an issue with Safari and on iOS 15 devices where decoding a JSON response via the fetch API
breaks the user gesture and the user is not able to use the authenticator. Therefore, this class uses XMLHttpRequests
instead of the fetch API, but maintains compatibility by wrapping the XMLHttpRequests. So, if the issues are fixed,
we can easily return to the fetch API.</div>
</header>
<article>
<div class="container-overview">
<div class='vertical-section'>
<div class="members">
<div class="member">
<div class=name>
<span class="tag">Constructor</span>
</div>
<h4 class="name" id="HttpClient">
<a class="href-link" href="#HttpClient">#</a>
<span class="code-name">
new HttpClient<span class="signature">(api, timeout<span class="signature-attributes">opt</span>)</span><span class="type-signature"></span>
</span>
</h4>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>api</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="attributes">
</td>
<td class="description last">The URL of your Hanko API instance</td>
</tr>
<tr class="deep-level-0">
<td class="name"><code>timeout</code></td>
<td class="type">
<code class="param-type">number</code>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">The request timeout in milliseconds</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line112">line 112</a>
</span>
</p>
</dl>
</div>
</div>
</div>
</div>
<div class='vertical-section'>
<h1>Methods</h1>
<div class="members">
<div class="member">
<h4 class="name" id="_getAuthCookie">
<a class="href-link" href="#_getAuthCookie">#</a>
<span class="code-name">
_getAuthCookie<span class="signature">()</span><span class="type-signature"> &rarr; {string|string}</span>
</span>
</h4>
<div class="description">
Returns the authentication token that was stored in the cookie.
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line289">line 289</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">string</code>
</div>
</div>
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">string</code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="_setAuthCookie">
<a class="href-link" href="#_setAuthCookie">#</a>
<span class="code-name">
_setAuthCookie<span class="signature">(token)</span><span class="type-signature"></span>
</span>
</h4>
<div class="description">
Stores the authentication token to the cookie.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>token</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="description last">The authentication token to be stored.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line296">line 296</a>
</span>
</p>
</dl>
</div>
<div class="member">
<h4 class="name" id="delete">
<a class="href-link" href="#delete">#</a>
<span class="code-name">
delete<span class="signature">(path)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="Response.html">Response</a>>}</span>
</span>
</h4>
<div class="description">
Performs a DELETE request.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>path</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="description last">The path to the requested resource.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line356">line 356</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Throws:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="RequestTimeoutError.html">RequestTimeoutError</a></code>
</div>
</div>
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="TechnicalError.html">TechnicalError</a></code>
</div>
</div>
</div>
</div>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">Promise.&lt;<a href="Response.html">Response</a>></code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="get">
<a class="href-link" href="#get">#</a>
<span class="code-name">
get<span class="signature">(path)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="Response.html">Response</a>>}</span>
</span>
</h4>
<div class="description">
Performs a GET request.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>path</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="description last">The path to the requested resource.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line313">line 313</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Throws:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="RequestTimeoutError.html">RequestTimeoutError</a></code>
</div>
</div>
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="TechnicalError.html">TechnicalError</a></code>
</div>
</div>
</div>
</div>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">Promise.&lt;<a href="Response.html">Response</a>></code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="patch">
<a class="href-link" href="#patch">#</a>
<span class="code-name">
patch<span class="signature">(path, body<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="Response.html">Response</a>>}</span>
</span>
</h4>
<div class="description">
Performs a PATCH request.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>path</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="attributes">
</td>
<td class="description last">The path to the requested resource.</td>
</tr>
<tr class="deep-level-0">
<td class="name"><code>body</code></td>
<td class="type">
<code class="param-type">any</code>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">The request body.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line346">line 346</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Throws:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="RequestTimeoutError.html">RequestTimeoutError</a></code>
</div>
</div>
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="TechnicalError.html">TechnicalError</a></code>
</div>
</div>
</div>
</div>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">Promise.&lt;<a href="Response.html">Response</a>></code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="post">
<a class="href-link" href="#post">#</a>
<span class="code-name">
post<span class="signature">(path, body<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="Response.html">Response</a>>}</span>
</span>
</h4>
<div class="description">
Performs a POST request.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>path</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="attributes">
</td>
<td class="description last">The path to the requested resource.</td>
</tr>
<tr class="deep-level-0">
<td class="name"><code>body</code></td>
<td class="type">
<code class="param-type">any</code>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">The request body.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line324">line 324</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Throws:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="RequestTimeoutError.html">RequestTimeoutError</a></code>
</div>
</div>
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="TechnicalError.html">TechnicalError</a></code>
</div>
</div>
</div>
</div>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">Promise.&lt;<a href="Response.html">Response</a>></code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="put">
<a class="href-link" href="#put">#</a>
<span class="code-name">
put<span class="signature">(path, body<span class="signature-attributes">opt</span>)</span><span class="type-signature"> &rarr; {Promise.&lt;<a href="Response.html">Response</a>>}</span>
</span>
</h4>
<div class="description">
Performs a PUT request.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Attributes</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>path</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="attributes">
</td>
<td class="description last">The path to the requested resource.</td>
</tr>
<tr class="deep-level-0">
<td class="name"><code>body</code></td>
<td class="type">
<code class="param-type">any</code>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">The request body.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line335">line 335</a>
</span>
</p>
</dl>
<div class='columns method-parameter'>
<div class="column is-2"><label>Throws:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="RequestTimeoutError.html">RequestTimeoutError</a></code>
</div>
</div>
<div class="columns">
<div class='column is-12 has-text-left'>
<label>Type: </label>
<code class="param-type"><a href="TechnicalError.html">TechnicalError</a></code>
</div>
</div>
</div>
</div>
<div class='columns method-parameter'>
<div class="column is-2"><label>Returns:</label></div>
<div class="column is-10">
<div class="columns">
<div class='column is-5 has-text-left'>
<label>Type: </label>
<code class="param-type">Promise.&lt;<a href="Response.html">Response</a>></code>
</div>
</div>
</div>
</div>
</div>
<div class="member">
<h4 class="name" id="removeAuthCookie">
<a class="href-link" href="#removeAuthCookie">#</a>
<span class="code-name">
removeAuthCookie<span class="signature">(token)</span><span class="type-signature"></span>
</span>
</h4>
<div class="description">
Removes the cookie used for authentication.
</div>
<h5>Parameters:</h5>
<div class="table-container">
<table class="params table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr class="deep-level-0">
<td class="name"><code>token</code></td>
<td class="type">
<code class="param-type">string</code>
</td>
<td class="description last">The authorization token to be stored.</td>
</tr>
</tbody>
</table>
</div>
<dl class="details">
<p class="tag-source">
<a href="lib_client_HttpClient.ts.html" class="button">View Source</a>
<span>
<a href="lib_client_HttpClient.ts.html">lib/client/HttpClient.ts</a>, <a href="lib_client_HttpClient.ts.html#line303">line 303</a>
</span>
</p>
</dl>
</div>
</div>
</div>
</article>
</section>
</div>
<footer class="footer">
<div class="content has-text-centered">
<p>Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.11</a></p>
<p class="sidebar-created-by">
<a href="https://github.com/SoftwareBrothers/better-docs" target="_blank">BetterDocs theme</a> provided with <i class="fas fa-heart"></i> by
<a href="http://softwarebrothers.co" target="_blank">SoftwareBrothers - JavaScript Development Agency</a>
</p>
</div>
</footer>
</div>
<div id="side-nav" class="side-nav">
</div>
</div>
<script src="scripts/app.min.js"></script>
<script>PR.prettyPrint();</script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>