diff --git a/New_APIs/Twitch API/Readme.md b/New_APIs/Twitch API/Readme.md new file mode 100644 index 0000000..6baa960 --- /dev/null +++ b/New_APIs/Twitch API/Readme.md @@ -0,0 +1,16 @@ +# Twitch API App + +This is a simple web application that displays live streams from Twitch using the Twitch API. + +## Setup + +1. Clone the repository. +2. Navigate to the project directory. +3. Install the dependencies: + + ```bash + npm install + + +## Contributor +### Revanth \ No newline at end of file diff --git a/New_APIs/Twitch API/index.html b/New_APIs/Twitch API/index.html new file mode 100644 index 0000000..52c27eb --- /dev/null +++ b/New_APIs/Twitch API/index.html @@ -0,0 +1,31 @@ + + + + + + + Twitch API Viewer + + +

Twitch API Viewer

+
+

Stream List

+
+

Deploy

+ + + +

Scale

+ + + + +

Logs

+ + + +
+ + + + diff --git a/New_APIs/Twitch API/index.js b/New_APIs/Twitch API/index.js new file mode 100644 index 0000000..039e425 --- /dev/null +++ b/New_APIs/Twitch API/index.js @@ -0,0 +1,63 @@ +document.addEventListener('DOMContentLoaded', function () { + fetchTwitchStreams(); + + document.getElementById('deployButton').addEventListener('click', async () => { + const appName = document.getElementById('deployAppName').value; + const sourceUrl = document.getElementById('deploySourceUrl').value; + const response = await fetch('/deploy', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ app_name: appName, source_url: sourceUrl }) + }); + const result = await response.json(); + console.log(result); + }); + + document.getElementById('scaleButton').addEventListener('click', async () => { + const appName = document.getElementById('scaleAppName').value; + const dynoType = document.getElementById('scaleDynoType').value; + const quantity = document.getElementById('scaleQuantity').value; + const response = await fetch('/scale', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ app_name: appName, dyno_type: dynoType, quantity: parseInt(quantity) }) + }); + const result = await response.json(); + console.log(result); + }); + + document.getElementById('logsButton').addEventListener('click', async () => { + const appName = document.getElementById('logsAppName').value; + const response = await fetch(`/logs?app_name=${appName}`); + const result = await response.json(); + const results = document.getElementById('results'); + results.innerHTML = JSON.stringify(result, null, 2); + }); +}); + +async function fetchTitchStreams() { + const clientId = 'YOUR_TWITCH_CLIENT_ID'; + const endpoint = 'https://api.twitch.tv/helix/streams'; + + fetch(endpoint, { + headers: { + 'Client-ID': clientId, + 'Authorization': 'Bearer YOUR_TWITCH_ACCESS_TOKEN' + } + }) + .then(response => response.json()) + .then(data => { + const streamList = document.getElementById('streamList'); + data.data.forEach(stream => { + const streamElement = document.createElement('div'); + streamElement.className = 'stream'; + streamElement.innerHTML = ` +

${stream.user_name}

+

${stream.title}

+ ${stream.user_name} + `; + streamList.appendChild(streamElement); + }); + }) + .catch(error => console.error('Error fetching streams:', error)); +} diff --git a/New_APIs/Twitch API/manifest.json b/New_APIs/Twitch API/manifest.json new file mode 100644 index 0000000..edb0790 --- /dev/null +++ b/New_APIs/Twitch API/manifest.json @@ -0,0 +1,16 @@ +{ + "name": "Twitch API App", + "short_name": "TwitchApp", + "start_url": ".", + "display": "standalone", + "background_color": "#000000", + "theme_color": "#000000", + "description": "An app to display Twitch streams.", + "icons": [ + { + "src": "icon.png", + "sizes": "192x192", + "type": "image/png" + } + ] +} diff --git a/New_APIs/Twitch API/package.json b/New_APIs/Twitch API/package.json new file mode 100644 index 0000000..68c639c --- /dev/null +++ b/New_APIs/Twitch API/package.json @@ -0,0 +1,14 @@ +{ + "name": "twitch-api-app", + "version": "1.0.0", + "description": "An app to display Twitch streams.", + "main": "index.js", + "scripts": { + "start": "http-server ." + }, + "dependencies": { + "http-server": "^0.12.3" + }, + "author": "Your Name", + "license": "MIT" +} diff --git a/New_APIs/Twitch API/style.css b/New_APIs/Twitch API/style.css new file mode 100644 index 0000000..defad34 --- /dev/null +++ b/New_APIs/Twitch API/style.css @@ -0,0 +1,68 @@ +body { + font-family: Arial, sans-serif; + background: linear-gradient(135deg, #89fffd, #ef32d9); + color: #fff; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + margin: 0; +} + +.container { + text-align: center; + padding: 20px; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; +} + +h1 { + font-size: 2.5em; + margin-bottom: 20px; +} + +#app { + margin-bottom: 20px; +} + +.deployment { + text-align: left; +} + +.deployment h2 { + margin-top: 20px; + font-size: 1.5em; +} + +.deployment p { + margin: 5px 0; +} + +.deployment button { + background: #ef32d9; + border: none; + padding: 10px; + color: #fff; + cursor: pointer; + border-radius: 5px; +} + +.deployment button:hover { + background: #a726c1; +} + +.deployment input[type="number"] { + width: 50px; + padding: 5px; + border-radius: 5px; + border: none; +} + +#streamList .stream { + margin-bottom: 15px; +} + +#streamList img { + max-width: 100%; + border-radius: 10px; +}