Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivy-js/hazelnut
Une API ExpressJS basique pour créer des clés utilisables pour l'achat de Licenses, ou encore des micro-transactions.
https://github.com/ivy-js/hazelnut
api express javascript js key keyauth
Last synced: about 2 months ago
JSON representation
Une API ExpressJS basique pour créer des clés utilisables pour l'achat de Licenses, ou encore des micro-transactions.
- Host: GitHub
- URL: https://github.com/ivy-js/hazelnut
- Owner: Ivy-js
- License: mit
- Created: 2024-11-09T21:35:20.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-09T21:45:09.000Z (about 2 months ago)
- Last Synced: 2024-11-09T22:27:38.246Z (about 2 months ago)
- Topics: api, express, javascript, js, key, keyauth
- Language: JavaScript
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Hazelnut API
Hazelnut API est une API simple pour générer et gérer des clés avec différents types de validité (daily, monthly, yearly, one-time, lifetime). Les clés sont stockées dans une base de données Quick.DB.
## Prérequis
- Node.js
- npm (ou yarn)## Installation
1. Clonez le dépôt :
```bash
git clone https://github.com/votre-utilisateur/hazelnut-api.git
cd hazelnut-api
```2. Installez les dépendances :
```bash
npm install
```## Utilisation
1. Démarrez le serveur :
```bash
node main.js
```2. Utilisez l'API pour créer et utiliser des clés.
## Endpoints
### Créer une clé
- **URL** : `/create-key`
- **Méthode** : `POST`
- **Corps de la requête** :
```json
{
"type": "lifetime", // ou 'daily', 'monthly', 'yearly', 'one-time'
"format": "KEY-XXXXXX" // votre format de clé personnalisé
}
```
- **Réponse** :
```json
{
"key": "KEY-422JKS",
"type": "lifetime",
"expiration": "9999-12-31T00:00:00.000Z"
}
```### Utiliser une clé
- **URL** : `/redeem-key`
- **Méthode** : `POST`
- **Corps de la requête** :
```json
{
"key": "KEY-422JKS"
}
```
- **Réponse** :
```json
{
"success": "Key redeemed successfully"
}
```## Exemple d'utilisation avec Axios
Voici un exemple de script utilisant Axios pour créer une clé :
```javascript
const axios = require('axios');const createKey = async () => {
try {
const response = await axios.post('http://localhost:1335/create-key', {
type: 'lifetime', // ou 'daily', 'monthly', 'yearly', 'one-time'
format: 'TEST-XXXXXX' // votre format de clé personnalisé
});
console.log('Key created:', response.data);
} catch (error) {
console.error('Error creating key:', error.response ? error.response.data : error.message);
}
};createKey();
```
Fonctionnement interneFonction pour générer une clé unique
```javascript
async function generateUniqueKey(format) {
let key;
let exists = true;
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';while (exists) {
key = format.replace(/X/g, () => characters.charAt(Math.floor(Math.random() * characters.length)));
exists = await db.has(key);
}return key;
}
```Fonction pour obtenir la date d'expiration en fonction du type de clé
```javascript
function getExpirationDate(type) {
const now = new Date();
switch (type) {
case 'daily':
return new Date(now.setDate(now.getDate() + 1));
case 'monthly':
return new Date(now.setMonth(now.getMonth() + 1));
case 'yearly':
return new Date(now.setFullYear(now.getFullYear() + 1));
case 'one-time':
return now;
case 'lifetime':
return new Date(9999, 11, 31);
default:
throw new Error("Invalid key type");
}
}
```# Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.