kopia lustrzana https://github.com/badgen/badgen.net
				
				
				
			
		
			
				
	
	
		
			39 wiersze
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			39 wiersze
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import got from '../libs/got'
 | |
| import { millify } from '../libs/utils'
 | |
| import { createBadgenHandler, PathArgs } from '../libs/create-badgen-handler'
 | |
| 
 | |
| const BRAND_COLOR = 'F99A66'
 | |
| const DEVRANT_API_URL = 'https://devrant.com/api'
 | |
| 
 | |
| const client = got.extend({ prefixUrl: DEVRANT_API_URL })
 | |
| 
 | |
| const upperCaseFirst = (input: string) => input.charAt(0).toUpperCase() + input.substr(1)
 | |
| 
 | |
| export default createBadgenHandler({
 | |
|   title: 'devRant',
 | |
|   examples: {
 | |
|     '/devrant/score/22941?icon=devrant': 'score',
 | |
|     '/devrant/score/Tooma95?icon=devrant': 'score'
 | |
|   },
 | |
|   handlers: {
 | |
|     '/devrant/:topic<score>/:user-id<\\d+>': userIdHandler,
 | |
|     '/devrant/:topic<score>/:username': usernameHandler,
 | |
|   }
 | |
| })
 | |
| 
 | |
| async function usernameHandler ({ username }: PathArgs) {
 | |
|   const searchParams = { username, app: 3 }
 | |
|   const { user_id } = await client.get('get-user-id', { searchParams }).json<any>()
 | |
|   return userIdHandler({ 'user-id': user_id })
 | |
| }
 | |
| 
 | |
| async function userIdHandler ({ 'user-id': userId }: PathArgs) {
 | |
|   const searchParams = { app: 3 }
 | |
|   const { profile } = await client.get(`users/${userId}`, { searchParams }).json<any>()
 | |
|   return {
 | |
|     subject: upperCaseFirst(profile.username),
 | |
|     status: millify(profile.score),
 | |
|     color: BRAND_COLOR
 | |
|   }
 | |
| }
 |