Skip to content

Commit

Permalink
add 'server' as aliases for 'zone' parameter, add Zenless Zone Zero, …
Browse files Browse the repository at this point in the history
…update README

- plan to support POST request?
  • Loading branch information
ihsangan committed Aug 7, 2024
1 parent d6b8ce0 commit 992f16a
Show file tree
Hide file tree
Showing 5 changed files with 113 additions and 50 deletions.
36 changes: 21 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ API ini dibuat untuk mencari nickname in-game menggunakan ID player, data dari A
Awal bermula nya projek ini saat saya mengunjungi web phising yang menggunakan sistem validasi ID pada situsnya (ironis, padahal masih bayak web topup yang belum implementasi beginian), jadi kalo ID nya tidak valid maka data tidak bisa disubmit.

Karena dari Codashop request dan parsing data nya lebih ribet, maka dibuatlah API ini.

Lihat perubahan di [commits](https://github.com/ihsangan/valid/commits/main/).
## Self Deploy
Kamu bisa langsung fork aja repo ini, atau bisa tekan tombol dibawah ini (jangan lupa github secrets nya di seting)

[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/ihsangan/valid)
## Endpoint
```
https://api.isan.eu.org/nickname/
https://api.isan.eu.org/nickname
```
## Output
application/json; charset=utf-8 ([RFC4627](https://datatracker.ietf.org/doc/html/rfc4627))
Expand All @@ -28,63 +30,67 @@ interface Result {
# Daftar game
Berikut adalah daftar game yang didukung oleh API ini.
### Genshin Impact (America, Asia, Europe, SAR) [CENSORED]
GET `gi?id=PLAYER_ID`
GET `/gi?id=PLAYER_ID`

**Contoh:** [600000000](https://api.isan.eu.org/nickname/gi?id=600000000)
### Honkai Impact 3rd [CENSORED]
GET `hi?id=PLAYER_ID`
GET `/hi?id=PLAYER_ID`

**Contoh:** [10000001](https://api.isan.eu.org/nickname/hi?id=10000001)
### Honkai: Star Rail (America, Asia, Europe, SAR) [CENSORED]
GET `hsr?id=PLAYER_ID`
GET `/hsr?id=PLAYER_ID`

**Contoh:** [600000001](https://api.isan.eu.org/nickname/hsr?id=600000001)
### LifeAfter
GET `la?id=PLAYER_ID&zone=SERVER_NAME`
GET `/la?id=PLAYER_ID&zone=SERVER_NAME`

SERVER_NAME bersifat case-insensitive, untuk daftarnya ada [di sini](https://github.com/ihsangan/valid/blob/main/src/router/la.js).
SERVER_NAME bersifat case-insensitive, untuk daftarnya ada [di sini](https://github.com/ihsangan/valid/blob/main/src/router/la.ts).

**Contoh:** [?id=22512309&zone=milestone](https://api.isan.eu.org/nickname/la?id=22512309&zone=milestone)
### Point Blank
GET `pb?id=ZEPETTO_ID`
GET `/pb?id=ZEPETTO_ID`

**Contoh:** [wakwaw55](https://api.isan.eu.org/nickname/pb?id=wakwaw55)
### Punishing: Gray Raven (AP, EU, NA)
GET `pgr?id=ID&zone=SERVER_ID`
GET `/pgr?id=ID&zone=SERVER_ID`

Case-insensitive, keterangan untuk identifikasi server: AP(Asia-Pasifik), EU(Europe), NA(North America)

**Contoh:** [?id=16746755&zone=AP](https://api.isan.eu.org/nickname/pgr?id=16746755&zone=AP)
### Sausage Man
GET `sm?id=PLAYER_ID`
GET `/sm?id=PLAYER_ID`

**Contoh:** [5sn9jf](https://api.isan.eu.org/nickname/sm?id=5sn9jf)
### Super Sus
GET `sus?id=SPACE_ID`
GET `/sus?id=SPACE_ID`

**Contoh:** [15916600](https://api.isan.eu.org/nickname/sus?id=15916600)
### Valorant
GET `valo?id=URISafeRiotIdAndTag`
GET `/valo?id=URISafeRiotIdAndTag`

**Contoh region ID :** [yuyun%23123](https://api.isan.eu.org/nickname/valo?id=yuyun%23123)

**Contoh region non ID :** [Westbourne%23USA](https://api.isan.eu.org/nickname/valo?id=Westbourne%23USA)
### Zenless Zone Zero (America, Asia, Europe, SAR) [CENSORED]
GET `/zzz?id=PLAYER_ID`

**Contoh:** [1000000100](https://api.isan.eu.org/nickname/zzz?id=1000000100)
## ID-REG-ONLY
Dibawah ini adalah daftar game yang hanya bisa dipakai menggunakan ID yang terdaftar dari region Indonesia/SEA
### Arena of Valor
GET `aov?id=PLAYER_OR_OPEN_ID`
GET `/aov?id=PLAYER_OR_OPEN_ID`

**Contoh:** [124590895269021](https://api.isan.eu.org/nickname/aov?id=124590895269021)
### Call Of Duty
GET `cod?id=PLAYER_OR_OPEN_ID`
GET `/cod?id=PLAYER_OR_OPEN_ID`

**Contoh:** [243402956362890880](https://api.isan.eu.org/nickname/cod?id=243402956362890880)
### Free Fire
GET `ff?id=PLAYER_ID`
GET `/ff?id=PLAYER_ID`

**Contoh:** [225009777](https://api.isan.eu.org/nickname/ff?id=225009777)
### Mobile Legends: Bang Bang
GET `ml?id=PLAYER_ID&zone=ZONE_ID`
GET `/ml?id=PLAYER_ID&zone=ZONE_ID`

**Contoh:** [?id=1114917746&zone=13486](https://api.isan.eu.org/nickname/ml?id=1114917746&zone=13486)
## Parameter Opsional
Expand Down
11 changes: 6 additions & 5 deletions src/router/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
export { default as aov } from './aov';
export { default as cod } from './cod';
export { default as ff } from './ff';
export { default as ml } from './ml';
export { default as gi } from './gi';
export { default as hi } from './hi';
export { default as hsr } from './hsr';
export { default as la } from './la';
export { default as ml } from './ml';
export { default as pb } from './pb';
export { default as pgr } from './pgr';
export { default as sm } from './sm';
export { default as sus } from './sus';
export { default as aov } from './aov';
export { default as cod } from './cod';
export { default as valo } from './valo';
export { default as pgr } from './pgr';
export { default as la } from './la';
export { default as zzz } from './zzz';
24 changes: 12 additions & 12 deletions src/router/la.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ export default async function la(id: number, zone: string): Promise<Result> {
sn = 'Obelisk';
sv = 500005;
break;
case zoneLC.includes('newland'):
sn = 'NewLand';
sv = 500006;
break;
case zoneLC.includes('chaosoutpost'):
sn = 'ChaosOutpost';
sv = 500007;
Expand All @@ -33,6 +37,10 @@ export default async function la(id: number, zone: string): Promise<Result> {
sn = 'IronStride';
sv = 500008;
break;
case zoneLC.includes('crystalthornsea'):
sn = 'CrystalthornSea';
sv = 500009;
break;
case zoneLC.includes('fallforest'):
sn = 'FallForest';
sv = 510001;
Expand Down Expand Up @@ -61,6 +69,10 @@ export default async function la(id: number, zone: string): Promise<Result> {
sn = 'LevinCity';
sv = 520005;
break;
case zoneLC.includes('milestone'):
sn = 'MileStone';
sv = 520006;
break;
case zoneLC.includes('chaoscity'):
sn = 'ChaosCity';
sv = 520007;
Expand All @@ -73,18 +85,6 @@ export default async function la(id: number, zone: string): Promise<Result> {
sn = 'HopeWall';
sv = 520009;
break;
case zoneLC.includes('newland'):
sn = 'NewLand';
sv = 500006;
break;
case zoneLC.includes('crystalthornsea'):
sn = 'CrystalthornSea';
sv = 500009;
break;
case zoneLC.includes('milestone'):
sn = 'MileStone';
sv = 520006;
break;
case zoneLC.includes('labyrinthsea'):
sn = 'LabyrinthSea';
sv = 520010;
Expand Down
44 changes: 44 additions & 0 deletions src/router/zzz.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { endpoint, headers, Result } from '../utils';

export default async function zzz(id: number): Promise<Result> {
let sn = '';
let sv = '';
const idStr = id.toString().substring(0, 2);
switch (idStr) {
case '10':
sn = 'America';
sv = 'prod_gf_us';
break;
case '13':
sn = 'Asia';
sv = 'prod_gf_jp';
break;
case '15':
sn = 'Europe';
sv = 'prod_gf_eu';
break;
case '17':
sn = 'SAR (Taiwan, Hong Kong, Macao)';
sv = 'prod_gf_sg';
break;
default:
return {
success: false,
message: 'Bad request'
};
}
const body = `voucherPricePoint.id=946399&voucherPricePoint.price=16000&voucherPricePoint.variablePrice=0&user.userId=${id}&user.zoneId=${sv}&voucherTypeName=ZENLESS_ZONE_ZERO&shopLang=id_ID`;
const response = await fetch(endpoint, {
method: 'POST',
headers,
body
});
const data = await response.json();
return {
success: true,
game: 'Zenless Zone Zero',
id,
server: sn,
name: data.confirmationFields.username
};
}
48 changes: 30 additions & 18 deletions src/routing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,25 @@ export default async function callAPI(request: Request): Promise<Result> {
const path = url.pathname;
const params = url.searchParams;
const id = params.get('id');
const zone = params.get('zone');
const zone = params.get('zone') || params.get('server');
if (!id) {
return { success: false, message: 'Bad request' };
return {
success: false,
message: 'Bad request'
};
}
try {
let result: Result;
switch (true) {
case path.includes('/aov'):
result = await router.aov(Number(id));
break;
case path.includes('/cod'):
result = await router.cod(Number(id));
break;
case path.includes('/ff'):
result = await router.ff(Number(id));
break;
case path.includes('/ml'):
result = await router.ml(Number(id), Number(zone));
break;
case path.includes('/gi'):
result = await router.gi(Number(id));
break;
Expand All @@ -28,35 +34,41 @@ export default async function callAPI(request: Request): Promise<Result> {
case path.includes('/hsr'):
result = await router.hsr(Number(id));
break;
case path.includes('/la'):
result = await router.la(Number(id), zone);
break;
case path.includes('/ml'):
result = await router.ml(Number(id), Number(zone));
break;
case path.includes('/pb'):
result = await router.pb(id);
break;
case path.includes('/pgr'):
result = await router.pgr(Number(id), zone);
break;
case path.includes('/sm'):
result = await router.sm(id);
break;
case path.includes('/sus'):
result = await router.sus(Number(id));
break;
case path.includes('/aov'):
result = await router.aov(Number(id));
break;
case path.includes('/cod'):
result = await router.cod(Number(id));
break;
case path.includes('/valo'):
result = await router.valo(id);
break;
case path.includes('/pgr'):
result = await router.pgr(Number(id), zone);
break;
case path.includes('/la'):
result = await router.la(Number(id), zone);
case path.includes('/zzz'):
result = await router.zzz(Number(id));
break;
default:
result = { success: false, message: 'Bad request' };
result = {
success: false,
message: 'Bad request'
};
}
return result;
} catch (error) {
return { success: false, message: 'Not found' };
return {
success: false,
message: 'Not found'
};
}
}

0 comments on commit 992f16a

Please sign in to comment.