crafatar/lib/views/index.html.ejs
2015-10-14 01:12:30 +02:00

384 lines
23 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<title>Crafatar</title>
<link rel="icon" sizes="16x16" type="image/png" href="/favicon.png">
<meta charset="utf-8">
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/stylesheets/style.css">
<meta name="description" content="Crafatar is a blazing fast Minecraft avatar API with support for avatars, skins, and even 3D renders!">
<meta name="keywords" content="minecraft, avatar, renders, skins, uuid, username">
<meta name="viewport" content="initial-scale=1,maximum-scale=1">
<meta property="og:title" content="Crafatar">
<meta property="og:type" content="website">
<meta property="og:url" content="<%= domain %>">
<meta property="og:image" content="<%= domain %>/logo.png">
<meta property="og:description" content="A blazing fast Minecraft avatar API with support for avatars, skins, and 3D renders.">
<meta name="twitter:card" content="summary">
<meta name="twitter:creator" content="@Crafatar">
</head>
<body><a href="https://github.com/crafatar/crafatar" target="_blank" class="forkme">Fork me on GitHub</a>
<a href="https://akliz.net/crafatar" target="_blank" title="Crafatar is sponsored by Akliz" class="sponsor">
<img src="/images/akliz.png" alt="Akliz"></a>
<div class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header"><a href="/" class="navbar-brand">Crafatar</a><a href="https://twitter.com/Crafatar" target="_blank" class="navbar-brand twitter">crafatar</a></div>
</div>
</div>
<div class="jumbotron">
<div class="container">
<h1>Crafatar</h1>
<p>A blazing fast API for Minecraft faces!</p>
<div class="avatar-wrapper">
<div title="jomo's avatar" class="avatar jomo"></div>
<div title="jake_0's avatar" class="avatar jake_0"></div>
<div title="sk89q's avatar" class="avatar sk89q"></div>
<div title="md_5's avatar" class="avatar md_5"></div>
<div title="notch's avatar" class="avatar notch"></div>
<div title="jeb's avatar" class="avatar jeb"></div>
<div title="dinnerbone's avatar" class="avatar dinnerbone flipped"></div>
<div title="ez' avatar" class="avatar ez"></div>
<div title="grumm's avatar" class="avatar grumm flipped"></div>
<div title="themogmimer's avatar" class="avatar themogmimer"></div>
<div title="searge's avatar" class="avatar searge"></div>
<div title="xlson's avatar" class="avatar xlson"></div>
<div title="krisjelbring's avatar" class="avatar krisjelbring"></div>
<div title="minecraftchick's avatar" class="avatar minecraftchick"></div>
<div title="kappe's avatar" class="avatar kappe"></div>
<div title="marc's avatar" class="avatar marc"></div>
<div title="mollstam's avatar" class="avatar mollstam"></div>
<div title="evilseph's avatar" class="avatar evilseph"></div>
<div title="thinkofdeath's avatar" class="avatar thinkofdeath"></div>
</div>
</div>
</div>
<div class="container">
<section id="documentation">
<h2>Documentation</h2>
<div class="row">
<section>
<a id="avatars" class="anchor"></a><a href="#avatars"><h3>Avatars</h3></a>Replace
<mark class="green"> userid</mark> with a Mojang <b>UUID</b> or <b>username</b> to get the related head. All images are PNGs.
<div class="code"><%= domain %>/avatars/
<mark class="green">userid</mark>
</div>
<section>
<a id="avatar-parameters" class="anchor"></a><a href="#avatar-parameters"><h4>Avatar Parameters</h4></a>
<table class="table table-striped">
<thead>
<tr>
<td>parameter</td>
<td>type</td>
<td>default</td>
<td>description</td>
</tr>
</thead>
<tbody>
<tr>
<td>size</td>
<td>integer</td>
<td><%= config.avatars.default_size %></td>
<td>The size of the image in pixels, <%= config.avatars.min_size %> - <%= config.avatars.max_size%>.</td>
</tr>
<tr>
<td>default</td>
<td>string</td>
<td>The standard value is calculated based on the UUID (even = MHF_Alex, odd = MHF_Steve).<br>
Usernames always default to MHF_Steve.</td>
<td>The image to be served when the userid has no skin.<br>
Valid options are any userid, including<a href="/avatars/0?default=MHF_Steve"> MHF_Steve</a> and<a href="/avatars/0?default=MHF_Alex"> MHF_Alex</a>, or a custom URL.</td>
</tr>
<tr>
<td>helm</td>
<td>null</td>
<td></td>
<td>Apply the "second" layer (hat) to the avatar.</td>
</tr>
</tbody>
</table>
</section>
<section>
<a id="avatar-examples" class="anchor"></a><a href="#avatar-examples"><h4>Avatar Examples</h4></a>
<div class="code">
<div id="avatar-example-1" class="example-wrapper">
<div class="example"><%= domain %>/avatars/jeb_</div>
<p class="preview">Jeb's avatar</p>
</div>
<div id="avatar-example-2" class="example-wrapper">
<div class="example"><%= domain %>/avatars/jeb_?helm</div>
<p class="preview">Jeb's avatar with helm</p>
</div>
<div id="avatar-example-3" class="example-wrapper">
<div class="example"><%= domain %>/avatars/jeb_?size=128</div>
<p class="preview">Jeb's avatar, 128 × 128</p>
</div>
<div id="avatar-example-4" class="example-wrapper">
<div class="example"><%= domain %>/avatars/853c80ef3c3749fdaa49938b674adae6</div>
<p class="preview">Jeb's avatar by UUID</p>
</div>
<div id="avatar-example-5" class="example-wrapper">
<div class="example"><%= domain %>/avatars/jeb_?default=MHF_Alex</div>
<p class="preview">Jeb's avatar, or fall back to MHF_Alex <i>(this example assumes jeb_ does not exist)</i></p>
</div>
<div id="avatar-example-6" class="example-wrapper">
<div class="example"><%= domain %>/avatars/jeb_?default=https%3A%2F%2Fi.imgur.com%2FocJVWAc.png</div>
<p class="preview">Jeb's avatar, or fall back to a custom image <i>(this example assumes jeb_ does not exist)</i></p>
</div>
<p class="preview-placeholder">Hover over the example URLs above for a preview!</p>
</div>
<div class="preview-background"></div>
</section>
</section>
<section>
<a id="renders" class="anchor"></a><a href="#renders"><h3>3D Renders</h3></a>
<p>Crafatar also provides support for 3D renders of Minecraft skins.<br>
Please note that <b>this feature is currently beta</b>!<br>
Replace
<mark class="green"> userid</mark> with a Mojang <b>UUID</b> or <b>username</b> to get a render of the skin. The <b>head</b> render type returns a render of the skin's head.<span class="code"><%= domain %>/renders/head/<mark class="green">userid</mark></span>The <b>body</b> render returns a render of the entire skin.<span class="code"><%= domain %>/renders/body/<mark class="green">userid</mark></span></p>
<section>
<a id="render-parameters" class="anchor"></a><a href="#render-parameters"><h4>Render Parameters</h4></a>
<table class="table table-striped">
<thead>
<tr>
<td>parameter</td>
<td>type</td>
<td>default</td>
<td>description</td>
</tr>
</thead>
<tbody>
<tr>
<td>scale</td>
<td>integer</td>
<td><%= config.renders.default_scale %>. The actual size differs between the type of render.</td>
<td>The scale factor of the image <%= config.renders.min_scale %> - <%= config.renders.max_scale %>.</td>
</tr>
<tr>
<td>helm</td>
<td>null</td>
<td></td>
<td>Apply the "second" layer (hat) to the avatar.</td>
</tr>
<tr>
<td>default</td>
<td>string</td>
<td>The standard value is calculated based on the UUID (even = MHF_Alex, odd = MHF_Steve).<br>
Usernames always default to MHF_Steve.</td>
<td>The image to be served when the userid has no skin.<br>
Valid options are any userid, including<a href="/renders/body/0?default=MHF_Steve"> MHF_Steve</a> and<a href="/renders/body/0?default=MHF_Alex"> MHF_Alex</a>, or a custom URL.</td>
</tr>
</tbody>
</table>
</section>
<section>
<a id="render-examples" class="anchor"></a><a href="#render-examples"><h4>Render Examples</h4></a>
<div class="code">
<div id="render-example-1" class="example-wrapper">
<div class="example"><%= domain %>/renders/body/jeb_?helm&amp;scale=4</div>
<p class="preview">Jeb's body, with helmet, scale 4</p>
</div>
<div id="render-example-2" class="example-wrapper">
<div class="example"><%= domain %>/renders/head/853c80ef3c3749fdaa49938b674adae6?scale=8</div>
<p class="preview">Jeb's head, by UUID, scale 8</p>
</div>
<p class="preview-placeholder">Hover over the example URLs above for a preview!</p>
</div>
<div class="preview-background"></div>
</section>
</section>
<section>
<a id="skins" class="anchor"></a><a href="#skins"><h3>Skins</h3></a>
<p>You can also get the full skin file of a player.<br>
Replace
<mark class="green"> userid</mark> with a Mojang <b>UUID</b> or <b>username</b> to get the related skin.<br>
The user's skin is returned, or the default image is served.<br>
You can use the default parameter here as well.<span class="code"><%= domain %>/skins/<mark class="green">userid</mark></span></p>
<section>
<a id="skin-parameters" class="anchor"></a><a href="#skin-parameters"><h4>Skin Parameters</h4></a>
<table class="table table-striped">
<thead>
<tr>
<td>parameter</td>
<td>type</td>
<td>default</td>
<td>description</td>
</tr>
</thead>
<tbody>
<tr>
<td>default</td>
<td>string</td>
<td>The standard value is calculated based on the UUID (even = MHF_Alex, odd = MHF_Steve).<br>
Usernames always default to MHF_Steve.</td>
<td>The image to be served when the userid has no skin.<br>
Valid options are any userid, including<a href="/skins/0?default=MHF_Steve"> MHF_Steve</a> and<a href="/skins/0?default=MHF_Alex"> MHF_Alex</a>, or a custom URL.</td>
</tr>
</tbody>
</table>
</section>
<section>
<a id="skin-examples" class="anchor"></a><a href="#skin-examples"><h4>Skin Examples</h4></a>
<div class="code">
<div id="skin-example-1" class="example-wrapper">
<div class="example"><%= domain %>/skins/jeb_</div>
<p class="preview">Jeb's skin</p>
</div>
<div id="skin-example-2" class="example-wrapper">
<div class="example"><%= domain %>/skins/jeb_?default=MHF_Alex</div>
<p class="preview">Jeb's skin, or fall back to MHF_Alex <i>(this example assumes jeb_ does not exist)</i></p>
</div>
<p class="preview-placeholder">Hover over the example URLs above for a preview!</p>
</div>
<div class="preview-background"></div>
</section>
</section>
<section>
<a id="capes" class="anchor"></a><a href="#capes"><h3>Capes</h3></a>
<p>A cape endpoint is also available to get the active cape of a user.<br>
Replace
<mark class="green"> userid</mark> with a Mojang <b>UUID</b> or <b>username</b> to get the related cape.<br>
The user's cape is returned, otherwise a 404 is returned.<br>
<div class="code"><%= domain %>/capes/
<mark class="green">userid</mark>
</div>
</p>
<section>
<a id="cape-examples" class="anchor"></a><a href="#cape-examples"><h4>Cape Examples</h4></a>
<div class="code">
<div id="cape-example-1" class="example-wrapper">
<div class="example"><%= domain %>/capes/Dinnerbone</div>
<p class="preview">Dinnerbone's Cape <i>Mojang capes are not transparent...</i></p>
</div>
<div id="cape-example-2" class="example-wrapper">
<div class="example"><%= domain %>/capes/md_5</div>
<p class="preview">md_5's Cape</p>
</div>
<p class="preview-placeholder">Hover over the example URLs above for a preview!</p>
</div>
<div class="preview-background"></div>
</section>
</section>
<section>
<a id="meta" class="anchor"></a><a href="#meta"><h2>Meta</h2></a>
<section>
<a id="meta-cors" class="anchor"></a><a href="#meta-cors"><h3>CORS</h3></a>
<p>Crafatar supports CORS so you can make AJAX request from within the browser!</p>
</section>
<section>
<a id="meta-http-headers" class="anchor"></a><a href="#meta-http-headers"><h3>HTTP Headers</h3></a>
<p>Responses come with these HTTP headers, useful for debugging.<br>
Please note that these headers are cached by CloudFlare <small>(CF-Cache-Status: HIT)</small>.</p>
<section>
<a id="meta-response-time" class="anchor"></a><a href="#meta-response-time"><h4>Response-Time</h4></a>
<p>The time, in milliseconds, it took Crafatar to process the request.</p>
</section>
<section>
<a id="meta-x-storage-type" class="anchor"></a><a href="#meta-x-storage-type"><h4>X-Storage-Type</h4></a>
<p>Details about how the requested image was stored on the server</p>
<ul>
<li><b>none</b>: No external requests. Cached: User has no skin.</li>
<li><b>cached</b>: No external requests. Skin cached and stored locally.</li>
<li><b>checked</b>: 1 external request. Skin cached, checked for updates, no skin downloaded.<br>
This happens either when the user removed their skin or when it didn't change.</li>
<li><b>downloaded</b>: 2 external requests. First request or skin changed, skin downloaded.</li>
<li><b>server error</b>: This can happen, for example, when Mojang's servers are down.<br>
If possible, a cached image is served instead.</li>
<li><b>user error</b>: You have done something wrong, such as requesting a malformed userid.<br>
Check the response body for details.</li>
</ul>
</section>
<section>
<a id="meta-x-request-id" class="anchor"></a><a href="#meta-x-request-id"><h4>X-Request-ID</h4></a>
<p>The internal ID assigned to this request.<br>
If you think something is wrong with your request, please <a href="#contact">contact us</a> and provide this ID.</p>
</section>
</section>
<section>
<a id="meta-about-usernames" class="anchor"></a><a href="#meta-about-usernames"><h3>About Usernames</h3></a>
<p>We strongly advise you to use UUIDs instead of usernames in production.<br>
Usernames are deprecated by Mojang and you should only use usernames for testing.<br>
You don't have to change anything when using UUIDs and someone changes their Username.<br>
Malformed usernames are rejected.</p>
</section>
<section>
<a id="meta-about-uuids" class="anchor"></a><a href="#meta-about-uuids"><h3>About UUIDs</h3></a>
<p>UUIDs may use the blank or dashed format.<br>
Malformed UUIDs are rejected.</p>
</section>
<section>
<a id="meta-about-caching" class="anchor"></a><a href="#meta-about-caching"><h3>About Caching</h3></a>
<p>Crafatar caches skins for <%= config.caching.local / 60 %> minutes before checking for skin changes.<br>
Images are cached in your browser for <%= config.caching.browser / 60 %> minutes until a new request to Crafatar is made.<br>
When you changed your skin you can try clearing your browser cache to see the change faster.</p>
</section>
</section>
<section>
<a id="contact" class="anchor"></a><a href="#contact"><h2>Contact</h2></a>
<ul>
<li>Follow us on twitter <a href="https://twitter.com/crafatar" target="_blank">@crafatar</a></li>
<li>Open an issue <a href="https://github.com/crafatar/crafatar/issues" target="_blank">on GitHub</a></li>
<li><a href="https://webchat.esper.net/?channels=crafatar" target="_blank">Join us</a> in #crafatar on irc.esper.net</li>
</ul>
</section>
</div>
</section>
<footer>
<hr>
<p class="pull-right">Copyright Crafatar <%= new Date().getFullYear() %></p>
</footer>
</div>
<img src="/avatars/020242a17b9441799eff511eea1221da?size=64" alt="preloaded image" class="preload">
<img src="/avatars/020242a17b9441799eff511eea1221da?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/069a79f444e94726a5befca90e38aaf5?size=64" alt="preloaded image" class="preload">
<img src="/avatars/0?default=MHF_Alex" alt="preloaded image" class="preload">
<img src="/avatars/0?default=https%3A%2F%2Fi.imgur.com%2FocJVWAc.png" alt="preloaded image" class="preload">
<img src="/avatars/0ea8eca3dbf647cc9d1ac64551ca975c?size=64" alt="preloaded image" class="preload">
<img src="/avatars/0ea8eca3dbf647cc9d1ac64551ca975c?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/1c1bd09a6a0f4928a7914102a35d2670?size=64" alt="preloaded image" class="preload">
<img src="/avatars/1c1bd09a6a0f4928a7914102a35d2670?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/2d5aa9cdaeb049189930461fc9b91cc5?size=64" alt="preloaded image" class="preload">
<img src="/avatars/2d5aa9cdaeb049189930461fc9b91cc5?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/4566e69fc90748ee8d71d7ba5aa00d20?size=64" alt="preloaded image" class="preload">
<img src="/avatars/4566e69fc90748ee8d71d7ba5aa00d20?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/61699b2ed3274a019f1e0ea8c3f06bc6?size=64" alt="preloaded image" class="preload">
<img src="/avatars/61699b2ed3274a019f1e0ea8c3f06bc6?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/696a82ce41f44b51aa31b8709b8686f0?size=64" alt="preloaded image" class="preload">
<img src="/avatars/696a82ce41f44b51aa31b8709b8686f0?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/7125ba8b1c864508b92bb5c042ccfe2b?size=64" alt="preloaded image" class="preload">
<img src="/avatars/7125ba8b1c864508b92bb5c042ccfe2b?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/7d043c7389524696bfba571c05b6aec0?size=64" alt="preloaded image" class="preload">
<img src="/avatars/7d043c7389524696bfba571c05b6aec0?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/853c80ef3c3749fdaa49938b674adae6" alt="preloaded image" class="preload">
<img src="/avatars/853c80ef3c3749fdaa49938b674adae6?size=64" alt="preloaded image" class="preload">
<img src="/avatars/853c80ef3c3749fdaa49938b674adae6?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/9769ecf6331448f3ace67ae06cec64a3?size=64" alt="preloaded image" class="preload">
<img src="/avatars/9769ecf6331448f3ace67ae06cec64a3?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/ae795aa86327408e92ab25c8a59f3ba1?size=64" alt="preloaded image" class="preload">
<img src="/avatars/ae795aa86327408e92ab25c8a59f3ba1?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/af74a02d19cb445bb07f6866a861f783?size=64" alt="preloaded image" class="preload">
<img src="/avatars/af74a02d19cb445bb07f6866a861f783?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/b05881186e75410db2db4d3066b223f7?size=64" alt="preloaded image" class="preload">
<img src="/avatars/b05881186e75410db2db4d3066b223f7?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/b9583ca43e64488a9c8c4ab27e482255?size=64" alt="preloaded image" class="preload">
<img src="/avatars/b9583ca43e64488a9c8c4ab27e482255?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/c9b54008fd8047428b238787b5f2401c?size=64" alt="preloaded image" class="preload">
<img src="/avatars/c9b54008fd8047428b238787b5f2401c?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/d8f9a4340f2d415f9acfcd70341c75ec?size=64" alt="preloaded image" class="preload">
<img src="/avatars/d8f9a4340f2d415f9acfcd70341c75ec?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/e6b5c088068044df9e1b9bf11792291b?size=64" alt="preloaded image" class="preload">
<img src="/avatars/e6b5c088068044df9e1b9bf11792291b?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/f8cdb6839e9043eea81939f85d9c5d69?size=64" alt="preloaded image" class="preload">
<img src="/avatars/f8cdb6839e9043eea81939f85d9c5d69?size=64&amp;helm" alt="preloaded image" class="preload">
<img src="/avatars/jeb_" alt="preloaded image" class="preload">
<img src="/avatars/jeb_?helm" alt="preloaded image" class="preload">
<img src="/avatars/jeb_?size=128" alt="preloaded image" class="preload">
<img src="/capes/Dinnerbone" alt="preloaded image" class="preload">
<img src="/capes/md_5" alt="preloaded image" class="preload">
<img src="/renders/body/jeb_?helm&amp;scale=4" alt="preloaded image" class="preload">
<img src="/renders/head/853c80ef3c3749fdaa49938b674adae6?scale=8" alt="preloaded image" class="preload">
<img src="/skins/0?default=MHF_Alex" alt="preloaded image" class="preload">
<img src="/skins/jeb_" alt="preloaded image" class="preload">
</body>
</html>