UNPKG

torapi

Version:

Unofficial API (backend) for RuTracker, Kinozal, RuTor and NoNameClub for receiving torrent files and detailed information about distribution by movie title, TV series or id, and also provides RSS news feed for all providers.

1,574 lines 180 kB
{ "info": { "_postman_id": "23547b25-084c-4b30-bc78-9e72372dc9b8", "name": "TorAPI", "description": "Unofficial API (backend) for RuTracker, Kinozal, RuTor and NoNameClub\n\nContact Support: \nName: © Lifailon (Alex Kup)", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "37302476" }, "item": [ { "name": "api", "item": [ { "name": "Provider", "item": [ { "name": "Provider > List", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 3 seconds\", function () {\r", " if (pm.response.responseTime > 3000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(3000, \"Response time is less than 3 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Checking CORS Headers is present: Access-Control-Allow-Origin\", function () {\r", " pm.response.to.have.header(\"Access-Control-Allow-Origin\")\r", "})\r", "\r", "pm.test(\"Checking CORS Headers is present: Access-Control-Allow-Methods\", function () {\r", " pm.response.to.have.header(\"Access-Control-Allow-Methods\")\r", "})\r", "\r", "pm.test(\"Checking CORS Headers is present: Access-Control-Allow-Headers\", function () {\r", " pm.response.to.have.header(\"Access-Control-Allow-Headers\")\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/provider/list", "host": [ "{{baseUrl}}" ], "path": [ "api", "provider", "list" ] }, "description": "Get a list of providers" }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "https://torapi.vercel.app/api/provider/list", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "provider", "list" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"Provider\": \"<string>\",\n \"Urls\": [\n \"<string>\",\n \"<string>\"\n ]\n }\n]" } ] }, { "name": "Provider > Check", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 5 seconds\", function () {\r", " if (pm.response.responseTime > 5000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(5000, \"Response time is less than 5 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Validating all properties are true\", function () {\r", " const responseData = pm.response.json()[0]\r", " pm.expect(responseData).to.be.an('object')\r", " Object.values(responseData).forEach(value => {\r", " pm.expect(value).to.be.true\r", " })\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/provider/check", "host": [ "{{baseUrl}}" ], "path": [ "api", "provider", "check" ] }, "description": "Quickly check availability for all providers by searching by name" }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "https://torapi.vercel.app/api/provider/check", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "provider", "check" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"RuTracker\": \"<boolean>\",\n \"Kinozal\": \"<boolean>\",\n \"RuTor\": \"<boolean>\",\n \"NoNameClub\": \"<boolean>\"\n }\n]" } ] }, { "name": "Provider > Test", "event": [ { "listen": "prerequest", "script": { "exec": [ "" ], "type": "text/javascript", "packages": {} } }, { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 10 seconds\", function () {\r", " if (pm.response.responseTime > 10000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(10000, \"Response time is less than 10 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Validating all properties. RSS are true\", function () {\r", " const responseJSON = pm.response.json()\r", " pm.expect(responseJSON[0].RSS.RuTracker).to.eql(true)\r", " pm.expect(responseJSON[0].RSS.Kinozal).to.eql(true)\r", " pm.expect(responseJSON[0].RSS.RuTor).to.eql(true)\r", " pm.expect(responseJSON[0].RSS.NoNameClub).to.eql(true)\r", "})\r", "\r", "pm.test(\"Validating all properties. Search Title are true\", function () {\r", " const responseJSON = pm.response.json()\r", " pm.expect(responseJSON[0].Title.Status.RuTracker).to.eql(true)\r", " pm.expect(responseJSON[0].Title.Status.Kinozal).to.eql(true)\r", " pm.expect(responseJSON[0].Title.Status.RuTor).to.eql(true)\r", " pm.expect(responseJSON[0].Title.Status.NoNameClub).to.eql(true)\r", "})\r", "\r", "pm.test(\"Validating all properties. Search ID are true\", function () {\r", " const responseJSON = pm.response.json()\r", " pm.expect(responseJSON[0].Id.Status.RuTracker).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Status.Kinozal).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Status.RuTor).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Status.NoNameClub).to.eql(true)\r", "})\r", "\r", "pm.test(\"Validating all properties. Files for Search ID are true\", function () {\r", " const responseJSON = pm.response.json()\r", " pm.expect(responseJSON[0].Id.Files.RuTracker).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Files.Kinozal).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Files.RuTor).to.eql(true)\r", " pm.expect(responseJSON[0].Id.Files.NoNameClub).to.eql(true)\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "{{baseUrl}}/api/provider/test?query={{query}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "provider", "test" ], "query": [ { "key": "query", "value": "{{query}}", "description": "(Required) Query parameter" } ] }, "description": "Testing all endpoints" }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" } ], "url": { "raw": "https://torapi.vercel.app/api/provider/test?query=<string>", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "provider", "test" ], "query": [ { "key": "query", "value": "<string>", "description": "(Required) Query parameter" } ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"RSS\": {\n \"RuTracker\": \"<boolean>\",\n \"Kinozal\": \"<boolean>\",\n \"RuTor\": \"<boolean>\",\n \"NoNameClub\": \"<boolean>\"\n },\n \"Title\": {\n \"Status\": {\n \"RuTracker\": \"<boolean>\",\n \"Kinozal\": \"<boolean>\",\n \"RuTor\": \"<boolean>\",\n \"NoNameClub\": \"<boolean>\"\n },\n \"Id\": {\n \"RuTracker\": \"<integer>\",\n \"Kinozal\": \"<integer>\",\n \"RuTor\": \"<integer>\",\n \"NoNameClub\": \"<integer>\"\n },\n \"RunTime\": {\n \"RuTracker\": \"<number>\",\n \"Kinozal\": \"<number>\",\n \"RuTor\": \"<number>\",\n \"NoNameClub\": \"<number>\"\n }\n },\n \"Id\": {\n \"Status\": {\n \"RuTracker\": \"<boolean>\",\n \"Kinozal\": \"<boolean>\",\n \"RuTor\": \"<boolean>\",\n \"NoNameClub\": \"<boolean>\"\n },\n \"Files\": {\n \"RuTracker\": \"<boolean>\",\n \"Kinozal\": \"<boolean>\",\n \"RuTor\": \"<boolean>\",\n \"NoNameClub\": \"<boolean>\"\n },\n \"RunTime\": {\n \"RuTracker\": \"<number>\",\n \"Kinozal\": \"<number>\",\n \"RuTor\": \"<number>\",\n \"NoNameClub\": \"<number>\"\n }\n }\n }\n]" } ] } ], "auth": { "type": "noauth" }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } } ] }, { "name": "Get", "item": [ { "name": "Category List", "item": [ { "name": "Get > Category > RuTracker", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 1 seconds\", function () {\r", " if (pm.response.responseTime > 1000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(1000, \"Response time is less than 1 seconds\")\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/get/category/rutracker", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "category", "rutracker" ] } }, "response": [ { "name": "Get a list of categories for content filtering through the RuTracker provider", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{localUrl}}/api/category/rutracker", "host": [ "{{localUrl}}" ], "path": [ "api", "category", "rutracker" ] } }, "_postman_previewlanguage": null, "header": null, "cookie": [], "body": "[\r\n {\r\n \"num\": \"string\"\r\n }\r\n]" } ] }, { "name": "Get > Category > Kinozal", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 1 seconds\", function () {\r", " if (pm.response.responseTime > 1000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(1000, \"Response time is less than 1 seconds\")\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/get/category/kinozal", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "category", "kinozal" ] } }, "response": [ { "name": "Get a list of categories for content filtering through the RuTracker provider", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{localUrl}}/api/category/rutracker", "host": [ "{{localUrl}}" ], "path": [ "api", "category", "rutracker" ] } }, "_postman_previewlanguage": null, "header": null, "cookie": [], "body": "[\r\n {\r\n \"num\": \"string\"\r\n }\r\n]" } ] }, { "name": "Get > Category > RuTor", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 1 seconds\", function () {\r", " if (pm.response.responseTime > 1000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(1000, \"Response time is less than 1 seconds\")\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/get/category/rutor", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "category", "rutor" ] } }, "response": [ { "name": "Get a list of categories for content filtering through the RuTracker provider", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{localUrl}}/api/category/rutracker", "host": [ "{{localUrl}}" ], "path": [ "api", "category", "rutracker" ] } }, "_postman_previewlanguage": null, "header": null, "cookie": [], "body": "[\r\n {\r\n \"num\": \"string\"\r\n }\r\n]" } ] }, { "name": "Get > Category > NoNameClub", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 1 seconds\", function () {\r", " if (pm.response.responseTime > 1000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(1000, \"Response time is less than 1 seconds\")\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/get/category/nonameclub", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "category", "nonameclub" ] } }, "response": [ { "name": "Get a list of categories for content filtering through the RuTracker provider", "originalRequest": { "method": "GET", "header": [], "url": { "raw": "{{localUrl}}/api/category/rutracker", "host": [ "{{localUrl}}" ], "path": [ "api", "category", "rutracker" ] } }, "_postman_previewlanguage": null, "header": null, "cookie": [], "body": "[\r\n {\r\n \"num\": \"string\"\r\n }\r\n]" } ] } ], "auth": { "type": "noauth" }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } } ] }, { "name": "RSS (XML)", "item": [ { "name": "Get > RSS > RuTracker > XML", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Body matches string\", function () {\r", " pm.expect(pm.response.text()).to.include(\"viewtopic.php\")\r", "})" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/rutracker", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "rutracker" ] }, "description": "Get native RSS news feed from RuTracker provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/rutracker", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "rutracker" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"id\": \"<string>\",\n \"link\": \"<string>\",\n \"updated\": \"<string>\",\n \"title\": \"<string>\",\n \"author\": \"<string>\",\n \"category\": \"<string>\",\n \"categoryLable\": \"<string>\"\n }\n]" } ] }, { "name": "Get > RSS > Kinozal > XML", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Body matches string\", function () {\r", " pm.expect(pm.response.text()).to.include(\"details.php\")\r", "})" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/kinozal", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "kinozal" ] }, "description": "Get native RSS news feed from Kinozal provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/kinozal", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "kinozal" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"title\": \"<string>\",\n \"link\": \"<string>\",\n \"category\": \"<string>\",\n \"guid\": \"<string>\",\n \"pubDate\": \"<string>\"\n }\n]" } ] }, { "name": "Get > RSS > RuTor > XML", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Body matches string\", function () {\r", " pm.expect(pm.response.text()).to.include(\"d.rutor.info/download\")\r", "})" ], "type": "text/javascript", "packages": {} } }, { "listen": "prerequest", "script": { "exec": [ "" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/rutor", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "rutor" ] }, "description": "Get custom RSS news feed from RuTor provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/rutor", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "rutor" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"date\": \"<string>\",\n \"title\": \"<string>\",\n \"link\": \"<string>\",\n \"downloadLink\": \"<string>\",\n \"magnet\": \"<string>\",\n \"size\": \"<string>\",\n \"comments\": \"<integer>\",\n \"seeds\": \"<integer>\",\n \"peers\": \"<integer>\"\n }\n]" } ] }, { "name": "Get > RSS > NoNameClub > XML", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "pm.test(\"Body matches string\", function () {\r", " pm.expect(pm.response.text()).to.include(\"viewtopic.php\")\r", "})" ], "type": "text/javascript", "packages": {} } }, { "listen": "prerequest", "script": { "exec": [ "" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/nonameclub", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "nonameclub" ] }, "description": "Get native RSS news feed from NoNameClub provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/nonameclub", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "nonameclub" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"turbo\": \"<string>\",\n \"title\": \"<string>\",\n \"link\": \"<string>\",\n \"pubDate\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": \"<string>\",\n \"creator\": \"<string>\",\n \"commentRss\": \"<string>\",\n \"comments\": \"<string>\"\n }\n]" } ] } ], "auth": { "type": "noauth" }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "packages": {}, "exec": [ "" ] } } ] }, { "name": "RSS (JSON) and Filter by Category", "item": [ { "name": "Get > RSS > RuTracker > JSON + Category", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "const categoryRuTracker = pm.collectionVariables.get(\"categoryRuTracker\")\r", "\r", "pm.test(`Category include ${categoryRuTracker}`, function () {\r", " const responseData = pm.response.json()\r", " responseData.forEach(item => {\r", " pm.expect(item.category).to.include(categoryRuTracker)\r", " })\r", "})\r", "\r", "const categoryNameRuTracker = pm.collectionVariables.get(\"categoryNameRuTracker\")\r", "console.log(`Category Name: ${categoryNameRuTracker}`)\r", "\r", "pm.test(`Category Lable = ${categoryNameRuTracker}`, function () {\r", " const responseData = pm.response.json()\r", " responseData.forEach(item => {\r", " pm.expect(item.categoryLable).to.eq(categoryNameRuTracker)\r", " })\r", "})" ], "type": "text/javascript", "packages": {} } }, { "listen": "prerequest", "script": { "exec": [ "const baseUrl = pm.variables.get(\"baseUrl\")\r", "const categoryRuTracker = pm.variables.get(\"categoryRuTracker\")\r", "\r", "pm.sendRequest({\r", " url: `${baseUrl}/api/get/category/rutracker`,\r", " method: \"GET\"\r", "}, function (err, response) {\r", " if (err) {\r", " console.error(err)\r", " return\r", " }\r", " const categoryNameRuTracker = response.json()[0][categoryRuTracker]\r", " if (categoryNameRuTracker) {\r", " pm.collectionVariables.set('categoryNameRuTracker', categoryNameRuTracker)\r", " } else {\r", " console.log('Key not found')\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json", "type": "text" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/rutracker?category={{categoryRuTracker}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "rutracker" ], "query": [ { "key": "category", "value": "{{categoryRuTracker}}" } ] }, "description": "Get native RSS news feed from RuTracker provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/rutracker", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "rutracker" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"id\": \"<string>\",\n \"link\": \"<string>\",\n \"updated\": \"<string>\",\n \"title\": \"<string>\",\n \"author\": \"<string>\",\n \"category\": \"<string>\",\n \"categoryLable\": \"<string>\"\n }\n]" } ] }, { "name": "Get > RSS > Kinozal > JSON + Category + Filters", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "const categoryNameKinozal = pm.collectionVariables.get(\"categoryNameKinozal\")\r", "console.log(`Category Name: ${categoryNameKinozal}`)\r", "\r", "pm.test(`Category Lable = ${categoryNameKinozal}`, function () {\r", " const responseData = pm.response.json()\r", " responseData.forEach(item => {\r", " pm.expect(item.category).to.eq(categoryNameKinozal)\r", " })\r", "})\r", "\r", "pm.test(`Check format FullHD (1080)`, function () {\r", " const responseData = pm.response.json()\r", " pm.expect(responseData[0].title).to.include('1080')\r", "})\r", "\r", "pm.test(`Check year 2024`, function () {\r", " const responseData = pm.response.json()\r", " pm.expect(responseData[0].title).to.include('2024')\r", "})" ], "type": "text/javascript", "packages": {} } }, { "listen": "prerequest", "script": { "exec": [ "const baseUrl = pm.variables.get(\"baseUrl\")\r", "const categoryKinozal = pm.variables.get(\"categoryKinozal\")\r", "\r", "pm.sendRequest({\r", " url: `${baseUrl}/api/get/category/kinozal`,\r", " method: \"GET\"\r", "}, function (err, response) {\r", " if (err) {\r", " console.error(err)\r", " return\r", " }\r", " const categoryNameKinozal = response.json()[0][categoryKinozal]\r", " if (categoryNameKinozal) {\r", " pm.collectionVariables.set('categoryNameKinozal', categoryNameKinozal)\r", " } else {\r", " console.log('Key not found')\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json", "type": "text" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/kinozal?category={{categoryKinozal}}&year=2024&format=1080", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "kinozal" ], "query": [ { "key": "category", "value": "{{categoryKinozal}}" }, { "key": "year", "value": "2024" }, { "key": "format", "value": "1080" } ] }, "description": "Get native RSS news feed from RuTracker provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/rutracker", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "rutracker" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"id\": \"<string>\",\n \"link\": \"<string>\",\n \"updated\": \"<string>\",\n \"title\": \"<string>\",\n \"author\": \"<string>\",\n \"category\": \"<string>\",\n \"categoryLable\": \"<string>\"\n }\n]" } ] }, { "name": "Get > RSS > RuTor > JSON + Category", "event": [ { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 200\", function () {\r", " pm.response.to.have.status(200)\r", "})\r", "\r", "pm.test(\"Response time is less than 2 seconds\", function () {\r", " if (pm.response.responseTime > 2000) {\r", " pm.test.skip(\"Response time test skipped due to long response time\")\r", " } else {\r", " pm.expect(pm.response.responseTime).to.be.below(2000, \"Response time is less than 2 seconds\")\r", " }\r", "})\r", "\r", "const categoryRuTor = pm.collectionVariables.get(\"categoryRuTor\")\r", "\r", "pm.test(`Category include ${categoryRuTor}`, function () {\r", " const responseData = pm.response.json()\r", " responseData.forEach(item => {\r", " pm.expect(item.category).to.include(categoryRuTor)\r", " })\r", "})\r", "\r", "const categoryNameRuTor = pm.collectionVariables.get(\"categoryNameRuTor\")\r", "console.log(`Category Name: ${categoryNameRuTor}`)\r", "\r", "pm.test(`Category Lable = ${categoryNameRuTor}`, function () {\r", " const responseData = pm.response.json()\r", " responseData.forEach(item => {\r", " pm.expect(item.categoryLable).to.eq(categoryNameRuTor)\r", " })\r", "})" ], "type": "text/javascript", "packages": {} } }, { "listen": "prerequest", "script": { "exec": [ "const baseUrl = pm.variables.get(\"baseUrl\")\r", "const categoryRuTor = pm.variables.get(\"categoryRuTor\")\r", "\r", "pm.sendRequest({\r", " url: `${baseUrl}/api/get/category/rutracker`,\r", " method: \"GET\"\r", "}, function (err, response) {\r", " if (err) {\r", " console.error(err)\r", " return\r", " }\r", " const categoryNameRuTor = response.json()[0][categoryRuTor]\r", " if (categoryNameRuTor) {\r", " pm.collectionVariables.set('categoryNameRuTor', categoryNameRuTor)\r", " } else {\r", " console.log('Key not found')\r", " }\r", "})" ], "type": "text/javascript", "packages": {} } } ], "protocolProfileBehavior": { "disabledSystemHeaders": { "accept": true } }, "request": { "auth": { "type": "noauth" }, "method": "GET", "header": [ { "key": "Accept", "value": "application/json", "type": "text" } ], "url": { "raw": "{{baseUrl}}/api/get/rss/rutracker?category={{categoryRuTor}}", "host": [ "{{baseUrl}}" ], "path": [ "api", "get", "rss", "rutracker" ], "query": [ { "key": "category", "value": "{{categoryRuTor}}" } ] }, "description": "Get native RSS news feed from RuTracker provider in XML or JSON format. To get the answer in the required format, use the parameter in the answer block." }, "response": [ { "name": "Successful response", "originalRequest": { "method": "GET", "header": [ { "key": "Accept", "value": "application/xml" } ], "url": { "raw": "https://torapi.vercel.app/api/get/rss/rutracker", "protocol": "https", "host": [ "torapi", "vercel", "app" ], "path": [ "api", "get", "rss", "rutracker" ] } }, "status": "OK", "code": 200, "_postman_previewlanguage": "json", "header": [ { "key": "Content-Type", "value": "application/json" } ], "cookie": [], "body": "[\n {\n \"id\": \"<string>\",\n \"link\": \"<string>\",\n \"updated\": \"<string>\",\n \