Skip to content

Commit

Permalink
Minor fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
therealsujitk committed Dec 9, 2023
1 parent 8ba5d69 commit def26b1
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 84 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

![Vercel](http://therealsujitk-vercel-badge.vercel.app/?app=therealsujitk-vercel-badge) ![License](https://img.shields.io/badge/license-MIT-blue)

Include a [Vercel](http://vercel.com) deployment badge in your `README.md` file. Visit the [home page](http://therealsujitk-vercel-badge.vercel.app) to generate a badge for your Vercel project.
Include a [Vercel](http://vercel.com) deployment badge in your project's `README.md` file. Visit the [home page](http://therealsujitk-vercel-badge.vercel.app) to generate a badge for your Vercel project.

## Usage

Expand Down Expand Up @@ -33,7 +33,7 @@ To combine paramaters, use **`&`**. Example:
![Vercel](http://therealsujitk-vercel-badge.vercel.app/?app=therealsujitk-vercel-badge&style=for-the-badge&logo=none)

```
http://therealsujitk-vercel-badge.vercel.app/?app=therealsujitk-vercel-badge&style=for-the-badge&logo=false
http://therealsujitk-vercel-badge.vercel.app/?app=therealsujitk-vercel-badge&style=for-the-badge&logo=none
```

### Links
Expand Down
142 changes: 72 additions & 70 deletions app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,86 +8,88 @@ const app = express();
const cache = new NodeCache();

interface Badge {
key: string,
value: string,
color: string,
style: string,
logo: string,
key: string,
value: string,
color: string,
style: string,
logo: string,
}

async function createBadge(badge: Badge) {
badge.value = badge.value.replace(/-/g, '--');
const url = new URL(`http://img.shields.io/badge/${badge.key}-${badge.value}-${badge.color}?style=${badge.style}&logo=${badge.logo}`);

if (cache.has(url.toString())) {
return cache.get(url.toString());
}

const response = (await got(url)).body;
cache.set(url.toString(), response);
return response;
badge.value = badge.value.replace(/-/g, '--').replace(/_/g, '__');
const url = new URL(`http://img.shields.io/badge/${badge.key}-${badge.value}-${badge.color}?style=${badge.style}&logo=${badge.logo}`);

if (cache.has(url.toString())) {
return cache.get(url.toString());
}

app.use(express.static(__dirname + '/frontend/build', {index: false}));
const response = (await got(url)).body;
cache.set(url.toString(), response);
return response;
}

app.use(express.static(__dirname + '/frontend/build', {
index: false
}));
app.get('/*', (req, res) => {

if (!("app" in req.query)) {
return res.status(200).sendFile(__dirname + '/frontend/build/index.html');
}
if (!("app" in req.query)) {
return res.status(200).sendFile(__dirname + '/frontend/build/index.html');
}

const appName = req.query.app;
const root = req.query.root ?? '';
const style = req.query.style ?? 'flat';
const badgeName = req.query.name ?? 'vercel'
const logo = req.query.logo ?? 'vercel';
const appName = req.query.app;
const root = req.query.root ?? '';
const style = req.query.style ?? 'flat';
const badgeName = req.query.name ?? 'vercel'
const logo = req.query.logo ?? 'vercel';

const url = appName + '.vercel.app/' + root;
const handleRequest = async (statusCode: number = 404) => {
const badge: Badge = {
key: (badgeName as string).replace(/-/g, '--').replace(/_/g, '__'),
value: 'deployed',
color: 'brightgreen',
style: style as string,
logo: logo as string,
};

if (statusCode <= 599 && statusCode >= 500) {
// 500 - 599 -> Server Errors
badge.value = 'failed';
badge.color = 'red';
} else if (statusCode <= 499 && statusCode >= 400) {
// 400 - 499 -> Client Errors
badge.value = 'not-found';
badge.color = 'lightgrey';
} else if (statusCode <= 399 && statusCode >= 300) {
// 300 - 399 -> Redirects
}

// 200 - 299 -> Successful Responses
// 100 - 199 -> Informational Responses

res.setHeader('Content-type', 'image/svg+xml');
res.status(200).send(await createBadge(badge));
}
const url = appName + '.vercel.app/' + root;
const handleRequest = async (statusCode: number = 404) => {
const badge: Badge = {
key: (badgeName as string).replace(/-/g, '--').replace(/_/g, '__'),
value: 'deployed',
color: 'brightgreen',
style: style as string,
logo: logo as string,
};

try {
https.get("https://" + url, async (response) => {
var statusCode = response.statusCode;
await handleRequest(statusCode);
}).on('error', () => {
// This could mean the HTTPS site is not available so we check for HTTP
http.get("http://" + url, async (response) => {
var statusCode = response.statusCode;
await handleRequest(statusCode);
}).on('error', () => {
// Invalid Application Name
handleRequest(404);
});
});
} catch {
// An error was encountered for some unknown reason
res.status(500).send('Internal Server Error. Please open an issue at <a href="https://github.com/therealsujitk/vercel-badge/issues">vercel-badge/issues</a>.');
if (statusCode <= 599 && statusCode >= 500) {
// 500 - 599 -> Server Errors
badge.value = 'failed';
badge.color = 'red';
} else if (statusCode <= 499 && statusCode >= 400) {
// 400 - 499 -> Client Errors
badge.value = 'not-found';
badge.color = 'lightgrey';
} else if (statusCode <= 399 && statusCode >= 300) {
// 300 - 399 -> Redirects
}

// 200 - 299 -> Successful Responses
// 100 - 199 -> Informational Responses

res.setHeader('Content-type', 'image/svg+xml');
res.status(200).send(await createBadge(badge));
}

try {
https.get("https://" + url, async (response) => {
var statusCode = response.statusCode;
await handleRequest(statusCode);
}).on('error', () => {
// This could mean the HTTPS site is not available so we check for HTTP
http.get("http://" + url, async (response) => {
var statusCode = response.statusCode;
await handleRequest(statusCode);
}).on('error', () => {
// Invalid Application Name
handleRequest(404);
});
});
} catch {
// An error was encountered for some unknown reason
res.status(500).send('Internal Server Error. Please open an issue at <a href="https://github.com/therealsujitk/vercel-badge/issues">vercel-badge/issues</a>.');
}
});

export default app;
export default app;
2 changes: 1 addition & 1 deletion bin/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ const port = process.env.PORT || 3000;
/*
Starting the listener
*/
httpServer.listen(port, () => {
httpServer.listen(port, () => {
console.log('listening on *:' + port);
});
2 changes: 1 addition & 1 deletion frontend/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Include a Vercel deployment badge in your README.md file. Use this site to generate your deployment badge."
content="Include a Vercel deployment badge in your project's README.md file. Use this site to generate your deployment badge."
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
Expand Down
20 changes: 10 additions & 10 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ function App() {
`<img src="${badgeUrl}" alt="Vercel Deploy"></img>`,
];

const footerLinks: {[x: string]: string} = {
'GitHub': 'https://github.com/therealsujitk/vercel-badge',
'About Me': 'https://therealsuji.tk',
'Donate': 'https://therealsuji.tk/donate',
};

return (
<CssVarsProvider defaultMode="dark">
<CssBaseline />
Expand Down Expand Up @@ -62,22 +68,16 @@ function App() {
<span style={{alignSelf: 'center'}}>Badge Preview</span><img src={outputs[0]} alt="Badge Preview" style={{alignSelf: 'center'}} />
</div>
</Card>
{outputs.map(o => <Input variant="outlined" sx={{mt: 1.5, p: 2}} value={o} readOnly endDecorator={<Button sx={{mr: 0.5}} onClick={() => navigator.clipboard.writeText(o)}>Copy</Button>} />)}
{outputs.map((o, i) => <Input key={i} variant="outlined" sx={{mt: 1.5, p: 2}} value={o} readOnly endDecorator={<Button sx={{mr: 0.5}} onClick={() => navigator.clipboard.writeText(o)}>Copy</Button>} />)}
</section>

<Divider sx={{mt: 1.5, mb: 1.5}} orientation="horizontal" />

<footer>
<ul style={{display: 'flex', gap: '15px', justifyContent: 'center'}}>
<li>
<a href="https://github.com/therealsujitk/vercel-badge"><Typography level="body-xs">GitHub</Typography></a>
</li>
<li>
<a href="https://therealsuji.tk"><Typography level="body-xs">About Me</Typography></a>
</li>
<li>
<a href="https://therealsuji.tk/donate"><Typography level="body-xs">Donate</Typography></a>
</li>
{Object.keys(footerLinks).map((key, i) => (<li key={i}>
<a href={footerLinks[key]}><Typography level="body-xs">{key}</Typography></a>
</li>))}
</ul>
</footer>
</div>
Expand Down

0 comments on commit def26b1

Please sign in to comment.