Move docs into main branch.

This commit is contained in:
Buster "Silver Eagle" Neece 2017-09-29 21:08:51 -05:00
parent 79dce54ee0
commit 279c686cd2
38 changed files with 1611 additions and 0 deletions

1
docs/CNAME Normal file
View File

@ -0,0 +1 @@
azuracast.com

96
docs/api/index.html Normal file
View File

@ -0,0 +1,96 @@
<!-- HTML for static distribution bundle build -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700"
rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
<link rel="icon" type="image/png" sizes="192x192" href="../icons/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="../icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="../icons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="../icons/favicon-16x16.png">
<style>
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after {
box-sizing: inherit;
}
body {
margin: 0;
background: #fafafa;
}
</style>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
style="position:absolute;width:0;height:0">
<defs>
<symbol viewBox="0 0 20 20" id="unlocked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
</symbol>
<symbol viewBox="0 0 20 20" id="locked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
</symbol>
<symbol viewBox="0 0 20 20" id="close">
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
</symbol>
<symbol viewBox="0 0 20 20" id="large-arrow">
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
</symbol>
<symbol viewBox="0 0 20 20" id="large-arrow-down">
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
</symbol>
<symbol viewBox="0 0 24 24" id="jump-to">
<path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z"/>
</symbol>
<symbol viewBox="0 0 24 24" id="expand">
<path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>
</symbol>
</defs>
</svg>
<div id="swagger-ui"></div>
<script src="./swagger-ui-bundle.js"></script>
<script src="./swagger-ui-standalone-preset.js"></script>
<script>
window.onload = function () {
// Build a system
const ui = SwaggerUIBundle({
url: "https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/web/static/api/swagger.json",
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
window.ui = ui
}
</script>
</body>
</html>

View File

@ -0,0 +1,55 @@
<!doctype html>
<html lang="en-US">
<body onload="run()">
</body>
</html>
<script>
'use strict';
function run() {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
var isValid, qp, arr;
qp = (window.location.hash || location.search).substring(1);
arr = qp.split("&")
arr.forEach(function (v, i, _arr) {
_arr[i] = '"' + v.replace('=', '":"') + '"';
})
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value)
}
) : {}
isValid = qp.state === sentState
if (oauth2.auth.schema.get("flow") === "accessCode" && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "warning",
message: "Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"
});
}
if (qp.code) {
delete oauth2.state;
oauth2.auth.code = qp.code;
oauth2.callback({auth: oauth2.auth, redirectUrl: redirectUrl});
} else {
oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: "Authorization failed: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
docs/api/swagger-ui.css Normal file

File diff suppressed because one or more lines are too long

15
docs/api/swagger-ui.js Normal file

File diff suppressed because one or more lines are too long

584
docs/api/swagger.json Normal file
View File

@ -0,0 +1,584 @@
{
"swagger": "2.0",
"info": {
"title": "AzuraCast",
"description": "AzuraCast is a standalone, turnkey web radio management tool. Radio stations hosted by AzuraCast expose a public API for viewing now playing data, making requests and more.",
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"version": "0.6.0-2017.06"
},
"host": "",
"basePath": "/api",
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/status": {
"get": {
"tags": [
"Miscellaneous"
],
"description": "Returns an affirmative response if the API is active.",
"parameters": [],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Status"
}
}
}
}
},
"/time": {
"get": {
"tags": [
"Miscellaneous"
],
"description": "Returns the time (with formatting) in GMT and the user's local time zone, if logged in.",
"parameters": [],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Time"
}
}
}
}
},
"/station/{station_id}/listeners": {
"get": {
"tags": [
"Authenticated Endpoints"
],
"description": "Return detailed information about current listeners.",
"parameters": [
{
"$ref": "#/parameters/station_id_required"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Listener"
}
}
},
"404": {
"description": "Station not found"
},
"403": {
"description": "Access denied"
}
},
"security": [
{
"api_key": [
"view station reports"
]
}
]
}
},
"/nowplaying": {
"get": {
"tags": [
"Now Playing"
],
"description": "Returns a full summary of all stations' current state.",
"parameters": [],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/NowPlaying"
}
}
}
}
}
},
"/nowplaying/{station_id}": {
"get": {
"tags": [
"Now Playing"
],
"description": "Returns a full summary of the specified station's current state.",
"parameters": [
{
"$ref": "#/parameters/station_id_required"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/NowPlaying"
}
},
"404": {
"description": "Station not found"
}
}
}
},
"/station/{station_id}/requests": {
"get": {
"tags": [
"Station Details"
],
"description": "Return a list of requestable songs.",
"parameters": [
{
"$ref": "#/parameters/station_id_required"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/StationRequest"
}
}
},
"404": {
"description": "Station not found"
},
"403": {
"description": "Station does not support requests"
}
}
}
},
"/station/{station_id}/request/{request_id}": {
"post": {
"tags": [
"Station Details"
],
"description": "Submit a song request.",
"parameters": [
{
"$ref": "#/parameters/station_id_required"
},
{
"name": "request_id",
"in": "path",
"description": "The requestable song ID",
"required": true,
"type": "integer",
"format": "int64"
}
],
"responses": {
"200": {
"description": "Success"
},
"404": {
"description": "Station not found"
},
"403": {
"description": "Station does not support requests"
}
}
}
},
"/stations": {
"get": {
"tags": [
"Station Details"
],
"description": "Returns a list of stations.",
"parameters": [],
"responses": {
"200": {
"description": "Success",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Station"
}
}
}
}
}
},
"/station/{station_id}": {
"get": {
"tags": [
"Station Details"
],
"description": "Return information about a single station.",
"parameters": [
{
"$ref": "#/parameters/station_id_required"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Station"
}
},
"404": {
"description": "Station not found"
}
}
}
}
},
"definitions": {
"Listener": {
"properties": {
"ip": {
"description": "",
"type": "string",
"example": "127.0.0.1"
},
"user_agent": {
"description": "",
"type": "string",
"example": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"
},
"connected_on": {
"description": "",
"type": "integer",
"example": 1497660417
},
"connected_time": {
"description": "",
"type": "integer",
"example": 30
},
"location": {
"description": "",
"type": "array"
}
},
"type": "object"
},
"NowPlaying": {
"properties": {
"station": {
"description": "",
"$ref": "#/definitions/Station"
},
"current_song": {
"description": "",
"$ref": "#/definitions/SongHistory"
},
"listeners": {
"description": "",
"$ref": "#/definitions/NowPlayingListeners"
},
"song_history": {
"description": "",
"type": "array",
"items": {
"$ref": "#/definitions/SongHistory"
}
},
"cache": {
"description": "",
"type": "string",
"enum": [
"hit",
"database",
"miss"
]
}
},
"type": "object"
},
"NowPlayingListeners": {
"properties": {
"current": {
"description": "",
"type": "integer",
"example": "15"
},
"unique": {
"description": "",
"type": "integer",
"example": "15"
},
"total": {
"description": "",
"type": "integer",
"example": "20"
}
},
"type": "object"
},
"Song": {
"properties": {
"id": {
"description": "",
"type": "string",
"example": "9f33bbc912c19603e51be8e0987d076b"
},
"text": {
"description": "",
"type": "string",
"example": "Chet Porter - Aluko River"
},
"artist": {
"description": "",
"type": "string",
"example": "Chet Porter"
},
"title": {
"description": "",
"type": "string",
"example": "Aluko River"
}
},
"type": "object"
},
"SongHistory": {
"properties": {
"sh_id": {
"description": "",
"type": "integer"
},
"played_at": {
"description": "",
"type": "integer",
"example": 1497660417
},
"is_request": {
"description": "",
"type": "boolean"
},
"song": {
"description": "",
"$ref": "#/definitions/Song"
}
},
"type": "object"
},
"Station": {
"properties": {
"id": {
"description": "",
"type": "integer",
"example": 1
},
"name": {
"description": "",
"type": "string",
"example": "AzuraTest Radio"
},
"shortcode": {
"description": "",
"type": "string",
"example": "azuratest_radio"
},
"description": {
"description": "",
"type": "string",
"example": "An AzuraCast station!"
},
"frontend": {
"description": "",
"type": "string",
"example": "shoutcast2"
},
"backend": {
"description": "",
"type": "string",
"example": "liquidsoap"
},
"listen_url": {
"description": "",
"type": "string",
"example": "http://localhost:8000/radio.mp3"
},
"mounts": {
"description": "",
"type": "array",
"items": {
"$ref": "#/definitions/StationMount"
}
}
},
"type": "object"
},
"StationMount": {
"properties": {
"name": {
"description": "",
"type": "string"
},
"is_default": {
"description": "",
"type": "boolean"
},
"url": {
"description": "",
"type": "string"
},
"bitrate": {
"description": "",
"type": "integer"
},
"format": {
"description": "",
"type": "string"
}
},
"type": "object"
},
"StationRequest": {
"properties": {
"request_id": {
"description": "",
"type": "integer",
"example": 1
},
"request_url": {
"description": "",
"type": "integer",
"example": "/api/station/1/request/1"
},
"song": {
"description": "",
"$ref": "#/definitions/Song"
}
},
"type": "object"
},
"Status": {
"properties": {
"online": {
"description": "",
"type": "boolean",
"example": true
},
"timestamp": {
"description": "",
"type": "integer",
"example": 1497660417
}
},
"type": "object"
},
"Time": {
"properties": {
"timestamp": {
"description": "",
"type": "integer",
"example": 1497652397
},
"gmt_datetime": {
"description": "",
"type": "string",
"example": "2017-06-16 10:33:17"
},
"gmt_date": {
"description": "",
"type": "string",
"example": "June 16, 2017"
},
"gmt_time": {
"description": "",
"type": "string",
"example": "10:33pm"
},
"gmt_timezone": {
"description": "",
"type": "string",
"example": "GMT"
},
"gmt_timezone_abbr": {
"description": "",
"type": "string",
"example": "GMT"
},
"local_datetime": {
"description": "",
"type": "string",
"example": "2017-06-16 10:33:17"
},
"local_date": {
"description": "",
"type": "string",
"example": "June 16, 2017"
},
"local_time": {
"description": "",
"type": "string",
"example": "10:33pm"
},
"local_timezone": {
"description": "",
"type": "string",
"example": "UTC"
},
"local_timezone_abbr": {
"description": "",
"type": "string",
"example": "UTC"
}
},
"type": "object"
}
},
"parameters": {
"station_id_required": {
"name": "station_id",
"in": "path",
"description": "The station ID",
"required": true,
"type": "integer",
"format": "int64"
}
},
"responses": {
"todo": {
"description": "This API call has no documentated response (yet)"
}
},
"securityDefinitions": {
"api_key": {
"type": "apiKey",
"name": "X-API-Key",
"in": "header"
}
},
"tags": [
{
"name": "Now Playing",
"description": "Endpoints that provide full summaries of the current state of stations."
},
{
"name": "Station Details",
"description": "Specific information on individual stations"
},
{
"name": "Authenticated Endpoints",
"description": "API calls with more detailed information, requiring specific credentialed access."
}
],
"externalDocs": {
"description": "AzuraCast on GitHub",
"url": "https://github.com/AzuraCast/AzuraCast"
}
}

BIN
docs/assets/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 KiB

BIN
docs/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
docs/icons/apple-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
docs/icons/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

41
docs/icons/manifest.json Normal file
View File

@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

687
docs/index.html Normal file
View File

@ -0,0 +1,687 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>AzuraCast</title>
<link rel="apple-touch-icon" sizes="57x57" href="icons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="icons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="icons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="icons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="icons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="icons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="icons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="icons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="icons/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="icons/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="icons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="icons/favicon-16x16.png">
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" />
<meta name="description" content="A turnkey, self-hosted web radio management suite." />
<meta property="og:site_name" content="AzuraCast" />
<meta property="og:title" content="AzuraCast" />
<meta property="og:type" content="article" />
<meta property="og:description" content="A turnkey, self-hosted web radio management suite." />
<meta property="og:url" content="https://azuracast.com" />
<meta property="twitter:card" content="summary_large_image" />
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,300,300italic,700,700italic" rel="stylesheet"
type="text/css" />
<style>
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd,
q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul,
li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article,
aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output,
ruby, section, summary, time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
body {
-webkit-text-size-adjust: none
}
mark {
background-color: transparent;
color: inherit
}
input::-moz-focus-inner {
border: 0;
padding: 0
}
input[type="text"],
input[type="email"],
select,
textarea {
-moz-appearance: none;
-webkit-appearance: none;
-ms-appearance: none;
appearance: none
}
*,
*:before,
*:after {
box-sizing: border-box;
}
body {
min-width: 320px;
min-height: 100vh;
line-height: 1.0;
word-wrap: break-word;
overflow-x: hidden;
}
strong {
color: inherit;
font-weight: bolder;
}
em {
font-style: italic;
}
code {
font-family: "Lucida Console", "Courier New", monospace;
font-weight: normal;
text-indent: 0;
letter-spacing: 0;
font-size: 0.9em;
margin: 0 0.25em;
padding: 0.25em 0.5em;
background-color: rgba(144, 144, 144, 0.25);
border-radius: 0.25em;
}
mark {
background-color: rgba(144, 144, 144, 0.25);
}
a {
-moz-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
-webkit-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
-ms-transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
transition: color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease;
color: inherit;
text-decoration: underline;
}
s {
text-decoration: line-through;
}
body:before {
content: '';
display: block;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 0;
-moz-pointer-events: none;
-webkit-pointer-events: none;
-ms-pointer-events: none;
pointer-events: none;
-moz-transform: scale(1);
-webkit-transform: scale(1);
-ms-transform: scale(1);
transform: scale(1);
background-image: linear-gradient(to top, rgba(0, 0, 0, 0.431), rgba(0, 0, 0, 0.431)), url('assets/bg.png');
background-position: 0% 0%, center;
background-repeat: repeat, no-repeat;
background-size: auto, cover;
background-attachment: scroll;
background-color: #3D3D3D;
}
html {
font-size: 18pt;
}
#wrapper {
-webkit-overflow-scrolling: touch;
display: -moz-flex;
display: -webkit-flex;
display: -ms-flex;
display: flex;
-moz-flex-direction: column;
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-moz-align-items: center;
-webkit-align-items: center;
-ms-align-items: center;
align-items: center;
-moz-justify-content: center;
-webkit-justify-content: center;
-ms-justify-content: center;
justify-content: center;
min-height: 100vh;
position: relative;
z-index: 2;
overflow: hidden;
}
#main {
display: -moz-flex;
display: -webkit-flex;
display: -ms-flex;
display: flex;
position: relative;
max-width: 100%;
z-index: 1;
-moz-align-items: center;
-webkit-align-items: center;
-ms-align-items: center;
align-items: center;
-moz-justify-content: center;
-webkit-justify-content: center;
-ms-justify-content: center;
justify-content: center;
-moz-flex-grow: 0;
-webkit-flex-grow: 0;
-ms-flex-grow: 0;
flex-grow: 0;
-moz-flex-shrink: 0;
-webkit-flex-shrink: 0;
-ms-flex-shrink: 0;
flex-shrink: 0;
text-align: center;
-moz-transition: opacity 1.125s ease 0s, -moz-transform 1.125s ease 0s;
-webkit-transition: opacity 1.125s ease 0s, -webkit-transform 1.125s ease 0s;
-ms-transition: opacity 1.125s ease 0s, -ms-transform 1.125s ease 0s;
transition: opacity 1.125s ease 0s, transform 1.125s ease 0s;
}
#main>.inner {
position: relative;
z-index: 1;
border-radius: inherit;
padding: 1.25rem 1rem;
max-width: 100%;
width: 26rem;
}
#main>.inner>* {
margin-top: 0.625rem;
margin-bottom: 0.625rem;
-moz-transition: opacity 1s ease-in-out 0s;
-webkit-transition: opacity 1s ease-in-out 0s;
-ms-transition: opacity 1s ease-in-out 0s;
transition: opacity 1s ease-in-out 0s;
}
#main>.inner> :first-child {
margin-top: 0 !important;
}
#main>.inner> :last-child {
margin-bottom: 0 !important;
}
#main>.inner>.full {
margin-left: calc(-1rem);
width: calc(100% + 2rem + 0.4725px);
max-width: calc(100% + 2rem + 0.4725px);
}
#main>.inner>.full:first-child {
margin-top: -1.25rem !important;
border-top-left-radius: inherit;
border-top-right-radius: inherit;
}
#main>.inner>.full:last-child {
margin-bottom: -1.25rem !important;
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
}
#main>.inner>.full.screen {
width: 100vw;
max-width: 100vw;
position: relative;
border-radius: 0 !important;
left: 50%;
right: auto;
margin-left: -50vw;
}
#main>.inner> :nth-child(2) {
-moz-transition-delay: 0.125s;
-webkit-transition-delay: 0.125s;
-ms-transition-delay: 0.125s;
transition-delay: 0.125s;
}
#main>.inner> :nth-child(3) {
-moz-transition-delay: 0.25s;
-webkit-transition-delay: 0.25s;
-ms-transition-delay: 0.25s;
transition-delay: 0.25s;
}
#main>.inner> :nth-child(4) {
-moz-transition-delay: 0.375s;
-webkit-transition-delay: 0.375s;
-ms-transition-delay: 0.375s;
transition-delay: 0.375s;
}
#main>.inner> :nth-child(5) {
-moz-transition-delay: 0.5s;
-webkit-transition-delay: 0.5s;
-ms-transition-delay: 0.5s;
transition-delay: 0.5s;
}
#main>.inner> :nth-child(6) {
-moz-transition-delay: 0.625s;
-webkit-transition-delay: 0.625s;
-ms-transition-delay: 0.625s;
transition-delay: 0.625s;
}
.image {
position: relative;
overflow: hidden;
max-width: 100%;
display: block;
}
.image a,
.image span {
position: relative;
max-width: 100%;
display: inline-block;
vertical-align: top;
}
.image a img,
.image span img {
display: block;
}
.image img {
width: 100%;
max-width: 100%;
display: inline-block;
vertical-align: top;
}
.image.full img {
display: block;
}
.image.full:first-child img {
border-top-left-radius: inherit;
border-top-right-radius: inherit;
}
.image.full:last-child img {
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
}
.image.full a,
.image.full span {
display: block;
}
#image01 img {
width: 9rem;
}
h1 br+br,
h2 br+br,
h3 br+br,
p br+br {
display: block;
content: ' ';
margin-top: 0.825rem;
}
h1 .li,
h2 .li,
h3 .li,
p .li {
display: list-item;
padding-left: 0.5em;
margin: 0.75em 0 0 1em;
}
#title br+br {
margin-top: 0.9rem;
}
#title {
color: #FFFFFF;
letter-spacing: -0.15rem;
line-height: 1.5;
font-weight: 400;
}
#text01 {
font-size: 1.125em;
}
h1,
h2,
h3,
p {
color: rgba(255, 255, 255, 0.71);
font-family: 'Source Sans Pro';
letter-spacing: -0.025rem;
width: 100%;
font-size: 4.25em;
line-height: 1.375;
font-weight: 300;
}
hr {
width: 100%;
position: relative;
padding: 0;
border: 0;
height: 2.125rem;
line-height: 2.125rem;
}
hr:before {
content: '';
display: inline-block;
vertical-align: middle;
width: 100%;
background-color: rgba(255, 255, 255, 0.141);
height: 1px;
}
.icons {
cursor: default;
padding: 0;
letter-spacing: 0;
font-size: 1.5em;
width: calc(100% + 1.125rem);
margin-left: -0.5625rem;
}
.icons li {
display: inline-block;
vertical-align: middle;
margin: 0.5625rem;
}
.icons li a {
display: -moz-flex;
display: -webkit-flex;
display: -ms-flex;
display: flex;
-moz-align-items: center;
-webkit-align-items: center;
-ms-align-items: center;
align-items: center;
-moz-justify-content: center;
-webkit-justify-content: center;
-ms-justify-content: center;
justify-content: center;
border-radius: 100%;
width: 2em;
height: 2em;
}
.icons li a svg {
display: block;
-moz-transition: fill 0.25s ease;
-webkit-transition: fill 0.25s ease;
-ms-transition: fill 0.25s ease;
transition: fill 0.25s ease;
}
.icons li a .label {
display: none;
}
#icons01 li a svg {
width: 60%;
height: 60%;
}
#icons01 .n01 svg {
fill: rgba(255, 255, 255, 0.561);
}
#icons01 .n01 {
border: solid 1px rgba(255, 255, 255, 0.141);
}
#icons01 .n01:hover {
border-color: #FFFFFF;
}
#icons01 .n01:hover svg {
fill: #FFFFFF;
}
#icons01 .n02 svg {
fill: rgba(255, 255, 255, 0.561);
}
#icons01 .n02 {
border: solid 1px rgba(255, 255, 255, 0.141);
}
#icons01 .n02:hover {
border-color: #FFFFFF;
}
#icons01 .n02:hover svg {
fill: #FFFFFF;
}
@media (max-width: 1680px) {
html {
font-size: 13pt;
}
}
@media (max-width: 1280px) {
html {
font-size: 13pt;
}
}
@media (max-width: 980px) {
html {
font-size: 11pt;
}
}
@media (max-width: 736px) {
html {
font-size: 11pt;
}
#main {
text-align: center;
}
#main h1,
#main h2,
#main h3,
#main p {
text-align: inherit;
}
#main>.inner {
padding: 1.25rem 1rem;
}
#main>.inner>.full {
margin-left: calc(-1rem);
width: calc(100% + 2rem + 0.4725px);
max-width: calc(100% + 2rem + 0.4725px);
}
#main>.inner>.full:first-child {
margin-top: -1.25rem !important;
}
#main>.inner>.full:last-child {
margin-bottom: -1.25rem !important;
}
#main>.inner>.full.screen {
margin-left: -50vw;
}
#image01 img {
width: 9rem;
}
#title {
font-size: 3.5em;
}
#divider01 {
height: 2rem;
line-height: 2rem;
}
}
@media (max-width: 360px) {
#main>.inner {
padding: 0.9375rem 0.75rem;
}
#main>.inner>.full {
margin-left: calc(-0.75rem);
width: calc(100% + 1.5rem + 0.4725px);
max-width: calc(100% + 1.5rem + 0.4725px);
}
#main>.inner>.full:first-child {
margin-top: -0.9375rem !important;
}
#main>.inner>.full:last-child {
margin-bottom: -0.9375rem !important;
}
#main>.inner>.full.screen {
margin-left: -50vw;
}
#icons01 {
width: calc(100% + 0.84375rem);
margin-left: -0.421875rem;
}
#icons01 li {
margin: 0.421875rem;
}
}
</style>
<noscript>
<style>
body {
overflow: auto !important;
}
#main {
opacity: 1.0 !important;
-moz-transform: none !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
-moz-transition: none !important;
-webkit-transition: none !important;
-ms-transition: none !important;
transition: none !important;
-moz-filter: none !important;
-webkit-filter: none !important;
-ms-filter: none !important;
filter: none !important;
}
#main>.inner>* {
opacity: 1.0 !important;
-moz-transform: none !important;
-webkit-transform: none !important;
-ms-transform: none !important;
transform: none !important;
-moz-transition: none !important;
-webkit-transition: none !important;
-ms-transition: none !important;
transition: none !important;
-moz-filter: none !important;
-webkit-filter: none !important;
-ms-filter: none !important;
filter: none !important;
}
</style>
</noscript>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 40 40" display="none"
width="0" height="0">
<symbol id="icon-907" viewBox="0 0 40 40">
<path d="M36,20.3c0,3.5-1,6.6-3.1,9.4c-2,2.8-4.7,4.7-7.9,5.8c-0.4,0.1-0.6,0-0.8-0.1c-0.2-0.2-0.3-0.4-0.3-0.6v-4.4 c0-1.3-0.4-2.3-1.1-3c0.8-0.1,1.5-0.2,2.1-0.4c0.6-0.2,1.3-0.4,2-0.8c0.7-0.4,1.2-0.8,1.7-1.4c0.5-0.5,0.8-1.3,1.1-2.2 s0.4-2,0.4-3.1c0-1.7-0.5-3.1-1.6-4.3c0.5-1.3,0.5-2.7-0.2-4.2c-0.4-0.1-1,0-1.7,0.2c-0.7,0.3-1.4,0.6-1.9,0.9L24,12.5 c-1.3-0.4-2.6-0.5-4-0.5s-2.7,0.2-4,0.5c-0.2-0.2-0.5-0.3-0.9-0.6c-0.4-0.2-0.9-0.5-1.7-0.8c-0.8-0.3-1.4-0.4-1.8-0.3 c-0.6,1.6-0.7,3-0.1,4.2c-1.1,1.2-1.6,2.6-1.6,4.3c0,1.2,0.1,2.2,0.4,3.1s0.6,1.6,1.1,2.2s1,1,1.7,1.4c0.7,0.4,1.3,0.6,2,0.8 c0.6,0.2,1.3,0.3,2.1,0.4c-0.6,0.5-0.9,1.2-1,2.1c-0.3,0.1-0.6,0.2-0.9,0.3c-0.3,0.1-0.7,0.1-1.2,0.1c-0.5,0-0.9-0.1-1.4-0.4 c-0.5-0.3-0.8-0.7-1.2-1.3c-0.3-0.4-0.6-0.8-1-1.1c-0.4-0.3-0.8-0.4-1-0.5L9,26.5c-0.3,0-0.5,0-0.6,0.1c-0.1,0.1-0.1,0.1-0.1,0.2 c0,0.1,0.1,0.2,0.2,0.3c0.1,0.1,0.2,0.2,0.3,0.2l0.1,0.1c0.3,0.1,0.6,0.4,0.9,0.8s0.5,0.7,0.7,1.1l0.2,0.5c0.2,0.5,0.5,1,0.9,1.3 c0.4,0.3,0.9,0.5,1.4,0.6c0.5,0.1,1,0.1,1.4,0.1c0.5,0,0.9,0,1.2-0.1l0.5-0.1c0,0.5,0,1.1,0,1.9c0,0.7,0,1.1,0,1.1 c0,0.2-0.1,0.5-0.3,0.6c-0.2,0.2-0.5,0.2-0.8,0.1c-3.2-1.1-5.8-3-7.9-5.8S4,23.8,4,20.3c0-2.9,0.7-5.6,2.1-8S9.5,7.8,12,6.4 s5.1-2.1,8-2.1s5.6,0.7,8,2.1s4.4,3.4,5.8,5.8S36,17.4,36,20.3L36,20.3z"
/>
</symbol>
<symbol id="icon-905" viewBox="0 0 40 40">
<path d="M36.3,10.2c-1,1.3-2.1,2.5-3.4,3.5c0,0.2,0,0.4,0,1c0,1.7-0.2,3.6-0.9,5.3c-0.6,1.7-1.2,3.5-2.4,5.1 c-1.1,1.5-2.3,3.1-3.7,4.3c-1.4,1.2-3.3,2.3-5.3,3c-2.1,0.8-4.2,1.2-6.6,1.2c-3.6,0-7-1-10.2-3c0.4,0,1.1,0.1,1.5,0.1 c3.1,0,5.9-1,8.2-2.9c-1.4,0-2.7-0.4-3.8-1.3c-1.2-1-1.9-2-2.2-3.3c0.4,0.1,1,0.1,1.2,0.1c0.6,0,1.2-0.1,1.7-0.2 c-1.4-0.3-2.7-1.1-3.7-2.3s-1.4-2.6-1.4-4.2v-0.1c1,0.6,2,0.9,3,0.9c-1-0.6-1.5-1.3-2.2-2.4c-0.6-1-0.9-2.1-0.9-3.3s0.3-2.3,1-3.4 c1.5,2.1,3.6,3.6,6,4.9s4.9,2,7.6,2.1c-0.1-0.6-0.1-1.1-0.1-1.4c0-1.8,0.8-3.5,2-4.7c1.2-1.2,2.9-2,4.7-2c2,0,3.6,0.8,4.8,2.1 c1.4-0.3,2.9-0.9,4.2-1.5c-0.4,1.5-1.4,2.7-2.9,3.6C33.8,11.2,35.1,10.9,36.3,10.2L36.3,10.2z"
/>
</symbol>
</svg>
<div id="wrapper">
<div id="main">
<div class="inner">
<div class="image" id="image01"><img src="assets/logo.png" alt="" /></div>
<h1 id="title">azura<strong>cast</strong></h1>
<p id="text01"><span>a turnkey, self-hosted, <strong>free and open source</strong></span><br /> <span>web radio management suite</span></p>
<hr
id="divider01" />
<ul class="icons" id="icons01">
<li>
<a class="n01" href="https://github.com/AzuraCast/AzuraCast">
<svg>
<use xlink:href="#icon-907"></use>
</svg><span class="label">GitHub</span></a>
</li>
<li>
<a class="n02" href="http://twitter.com/AzuraCast">
<svg>
<use xlink:href="#icon-905"></use>
</svg><span class="label">Twitter</span></a>
</li>
</ul>
</div>
</div>
</div>
</body>
</html>