Skip to content

Commit

Permalink
feat: support access token-protected in /v2/translate
Browse files Browse the repository at this point in the history
  • Loading branch information
missuo committed Apr 16, 2024
1 parent 15cca97 commit e15e63b
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 6 deletions.
20 changes: 17 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* @Author: Vincent Young
* @Date: 2022-10-18 07:32:29
* @LastEditors: Vincent Young
* @LastEditTime: 2023-11-28 00:24:20
* @LastEditTime: 2024-04-16 14:52:46
* @FilePath: /DeepLX/README.md
* @Telegram: https://t.me/missuo
*
Expand Down Expand Up @@ -69,9 +69,23 @@
- `-port` or `-p` : Listening port. Default is `1188`.
- `-token` : Access token. If you have set it up, each request needs to include `Authorization` in the **Headers** or `token` parameter in the **URL Params**.
- `-authkey` : DeepL Official `AuthKey`. If you have set it up, after the 429 response, the official AuthKey will be used for the request. If multiple authKeys are used simultaneously, they need to be separated by commas.
- `/v2/translate` : This endpoint is fully compatible with the DeepL official API. When using this endpoint, please strictly adhere to the request styles outlined in the official DeepL documentation. Note that in this endpoint, please use `DeepL-Auth-Key $token` in the `Authorization`, which is actually the Access Token, not the official `Auth Key` of DeepL.

#### Requesting a token-protected **DeepLX API** instance using the `curl`
```bash
# Example of requesting a token-protected /v2/translate endpoint
curl -X POST 'http://127.0.0.1:1188/v2/translate' \
--header 'Authorization: DeepL-Auth-Key [yourAccessToken]' \
--header 'Content-Type: application/json' \
--data '{
"text": [
"Hello, world!"
],
"target_lang": "DE"
}'
```

#### Requesting a token-protected **DeepLX API** instance using the `curl`
```bash
curl -X POST http://localhost:1188/translate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_access_token" \
Expand All @@ -82,7 +96,7 @@ curl -X POST http://localhost:1188/translate \
}'
```
or
```
```bash
curl -X POST http://localhost:1188/translate?token=your_access_token \
-H "Content-Type: application/json" \
-d '{
Expand Down
22 changes: 19 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/*
* @Author: Vincent Yang
* @Date: 2023-07-01 21:45:34
* @LastEditors: Vincent Yang
* @LastEditTime: 2024-04-13 18:50:25
* @LastEditors: Vincent Young
* @LastEditTime: 2024-04-16 14:47:43
* @FilePath: /DeepLX/main.go
* @Telegram: https://t.me/missuo
* @GitHub: https://github.com/missuo
Expand Down Expand Up @@ -343,7 +343,22 @@ func authMiddleware(cfg *Config) gin.HandlerFunc {
if cfg.Token != "" {
providedTokenInQuery := c.Query("token")
providedTokenInHeader := c.GetHeader("Authorization")
if providedTokenInHeader != "Bearer "+cfg.Token && providedTokenInQuery != cfg.Token {

// Compatability with the Bearer token format
if providedTokenInHeader != "" {
parts := strings.Split(providedTokenInHeader, " ")
if len(parts) == 2 {
if parts[0] == "Bearer" || parts[0] == "DeepL-Auth-Key" {
providedTokenInHeader = parts[1]
} else {
providedTokenInHeader = ""
}
} else {
providedTokenInHeader = ""
}
}

if providedTokenInHeader != cfg.Token && providedTokenInQuery != cfg.Token {
c.JSON(http.StatusUnauthorized, gin.H{
"code": http.StatusUnauthorized,
"message": "Invalid access token",
Expand All @@ -352,6 +367,7 @@ func authMiddleware(cfg *Config) gin.HandlerFunc {
return
}
}

c.Next()
}
}
Expand Down

0 comments on commit e15e63b

Please sign in to comment.