rats-search/docs/API.md
2023-06-08 03:05:04 +03:00

126 lines
4.7 KiB
Markdown

# Basic description
Rats Search server using WebSockets for internal communication. It require two way communication and using socket.io internally. As alternative added REST API implementation, but because of one-way limitation, it require periodic check of backward messages with **/api/queue** . You free to choise one of the ways for communication and implementation of your own client.
## WebSockets communication (1-way)
## REST API communication (2-way)
### Installation
At first you need to prepare server non-interface version
```bash
git clone --recurse-submodules https://github.com/DEgITx/rats-search.git
npm install --force
npm run buildweb
npm run server
```
### Configuration
You need to enable REST API configuration (disabled by default):
edit **rats.json** (change only restApi value):
```json
{
"restApi": true
}
```
set restApi to true, save
### API usage
#### Search of torrents
endpoint (GET REQUEST):
```
https://localhost:8095/api/searchTorrent?text=DEgITx&navigation={}
```
example of request:
```json
{
"text": "Search Name of the torrent",
"navigation": {
"index": 0,
"limit": 10,
"orderBy": "order_field",
"orderDesc": "DESC",
"safeSearch": false
}
}
```
| Field | Type | Optional | Default Value | Description |
| ----- | ---- | -------- | ------------- | ----------- |
| text | string | ❎ | | torrent search name |
| navigation | object (Navigation) | ✅ | | object with navigation params |
|       index | int | ✅ | 0 | stating of torrent index of navigation |
|       limit | int | ✅ | 10 | max number of results on page |
|       orderBy | text | ✅ | | field which is using for order results |
|       orderDesc | enum [**DESC, ASC**] | ✅ | ASC | sort direction of the field |
|       safeSearch | bool | ✅ | true | disable/enable safe search for torrents |
|       type | string | ✅ | | type of content for search |
|       size | object (Interval) | ✅ | | size of torrent |
|            min | uint64 | ✅ | | minumum size of the torrent |
|            max | uint64 | ✅ | | maximum size of the torrent |
|       files | object (Interval) | ✅ | | files on the torrent |
|            min | int | ✅ | | minumum size of the torrent |
|            max | int | ✅ | | maximum size of the torrent |
### Reading queue
As said before after each request and periodicly you need to read queue for additional messages.
endpoint (GET REQUEST):
```
https://localhost:8095/api/queue
```
after executing of search **/api/searchTorrent** request **additional result of search will be in queue**!
### Search of the torrent by files
endpoint (GET REQUEST):
```
https://localhost:8095/api/searchFiles?text=TorrentWithFileName&navigation={}
```
| Field | Type | Optional | Default Value | Description |
| ----- | ---- | -------- | ------------- | ----------- |
| text | string | ❎ | | torrent search name |
| navigation | object (Navigation) | ✅ | | object with navigation params |
|       index | int | ✅ | 0 | stating of torrent index of navigation |
|       limit | int | ✅ | 10 | max number of results on page |
|       orderBy | text | ✅ | | field which is using for order results |
|       orderDesc | enum [**DESC, ASC**] | ✅ | ASC | sort direction of the field |
|       safeSearch | bool | ✅ | true | disable/enable safe search for torrents |
### Recheck trackers info for the torrent
endpoint (GET REQUEST):
```
https://localhost:8095/api/checkTrackers?hash=29ebe63feb8be91b6dcff02bacc562d9a99ea864
```
| Field | Type | Optional | Default Value | Description |
| ----- | ---- | -------- | ------------- | ----------- |
| hash | string | ❎ | | torrent hash to refresh token |
### Top torrents
endpoint (GET REQUEST):
```
https://localhost:8095/api/topTorrents?type=video&navigation={"time":"week"}
```
| Field | Type | Optional | Default Value | Description |
| ----- | ---- | -------- | ------------- | ----------- |
| type | string | ❎ | | type of category for top of the torrents |
| navigation | object (Navigation) | ✅ | | object with navigation params (check /api/searchTorrent for mo details) |
|       time | enum [hours, week, month] | ✅ | | time for the top