From fba4129ca969f17db85e664d0e5621cd8db7a654 Mon Sep 17 00:00:00 2001 From: kiritokatklian Date: Tue, 27 Apr 2021 23:24:35 +0200 Subject: [PATCH] [Update] Legal API - Added Terms of Use to the OpenAPI spec - Updated the method of fetching legal docs to match the web version --- app/Http/Controllers/MiscController.php | 21 ++++----- config/app.php | 2 +- public/openapi.json | 61 ++++++++++++++++++++----- 3 files changed, 59 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/MiscController.php b/app/Http/Controllers/MiscController.php index 34c4ae4a4..016fb379a 100644 --- a/app/Http/Controllers/MiscController.php +++ b/app/Http/Controllers/MiscController.php @@ -4,9 +4,9 @@ use App\Helpers\JSONResult; use Carbon\Carbon; +use File; use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Http\JsonResponse; -use Illuminate\Support\Facades\Storage; use Markdown; class MiscController extends Controller @@ -21,7 +21,7 @@ class MiscController extends Controller public function getPrivacyPolicy(): JsonResponse { // Get MarkDown content - $privacyPolicyMarkdown = $this->getContentOfFile('resources/static/privacy_policy.md'); + $privacyPolicyMarkdown = $this->getContentOfFile('privacy_policy.md'); // Prepare for converting Markdown to HTML $privacyPolicyText = Markdown::parse($privacyPolicyMarkdown); @@ -47,7 +47,7 @@ public function getPrivacyPolicy(): JsonResponse public function getTermsOfUse(): JsonResponse { // Get MarkDown content - $termsOfUseMarkdown = $this->getContentOfFile('resources/static/terms_of_use.md'); + $termsOfUseMarkdown = $this->getContentOfFile('terms_of_use.md'); // Prepare for converting Markdown to HTML $termsOfUseText = Markdown::parse($termsOfUseMarkdown); @@ -64,25 +64,22 @@ public function getTermsOfUse(): JsonResponse } /** - * Get the content of the given file. + * Get the content of a file with the given name. * - * @param string $filePath + * @param string $fileName * @return string * * @throws FileNotFoundException */ - protected function getContentOfFile(string $filePath): string + protected function getContentOfFile(string $fileName): string { - // Create the file if it does not exist yet - if (!Storage::exists($filePath)) { - Storage::put($filePath, 'Page is empty. Please inform an administrator.'); - } + $filePath = resource_path('docs/'. $fileName); // Get the last update date - $lastUpdateUnix = Carbon::createFromTimestamp(Storage::lastModified($filePath)); + $lastUpdateUnix = Carbon::createFromTimestamp(File::lastModified($filePath)); $lastUpdateStr = $lastUpdateUnix->format('F d, Y'); // Attach date and return file content - return str_replace('#UPDATE_DATE#', $lastUpdateStr, Storage::get($filePath)); + return str_replace('#UPDATE_DATE#', $lastUpdateStr, File::get($filePath)); } } diff --git a/config/app.php b/config/app.php index 48900e7a5..31139b708 100644 --- a/config/app.php +++ b/config/app.php @@ -38,7 +38,7 @@ | or any other location as required by the application or its packages. */ - 'version' => '1.2.0-alpha.27', + 'version' => '1.2.0-alpha.28', /* |-------------------------------------------------------------------------- diff --git a/public/openapi.json b/public/openapi.json index a82263e32..dc25b7160 100644 --- a/public/openapi.json +++ b/public/openapi.json @@ -1,16 +1,16 @@ { - "openapi": "3.0.0", + "openapi": "3.0.3", "info": { "description": "Integrate tracking shows with Kurozora content.\n *** \nThe Kurozora API is a web service that lets you access information about the media found in the Kurozora Catalog and the user's personal Kurozora Library. Here's what each one includes:\n- The Kurozora Catalog includes all resources available in Kurozora.\n- The user's Kurozora Library contains only those resources that the user added to their personal library. For example, it contains shows added to their tracking list, and favorites.\n\nUse this service to retrieve information about actors, characters, episodes, genres, shows, studios, threads, users, and the users' library.\nWith proper authorization from the user, you can also create or modify their library, apply ratings to shows, create or modify threads and vote on replies.", - "version": "1.0.8", + "version": "1.2.0", "title": "Kurozora API", - "termsOfService": "http://swagger.io/terms/", + "termsOfService": "https://swagger.io/terms/", "contact": { "email": "kurozoraapp@gmail.com" }, "license": { "name": "Apache 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + "url": "https://www.apache.org/licenses/LICENSE-2.0.html" } }, "servers": [ @@ -3376,8 +3376,8 @@ "legal" ], "operationId": "getPrivacyPolicy", - "summary": "Retrieve latest privacy policy.", - "description": "This endpoint will retrieve the latest privacy policy.", + "summary": "Retrieve latest Privacy Policy.", + "description": "This endpoint will retrieve the latest Privacy Policy.", "responses": { "200": { "$ref": "#/components/responses/GetPrivacyPolicySuccess" @@ -3388,6 +3388,24 @@ } } }, + "/legal/terms-of-use": { + "get": { + "tags": [ + "legal" + ], + "operationId": "getTermsOfUse", + "summary": "Retrieve latest Terms of Use.", + "description": "This endpoint will retrieve the latest Terms of Use.", + "responses": { + "200": { + "$ref": "#/components/responses/GetTermsOfUseSuccess" + }, + "400": { + "$ref": "#/components/responses/JSONError" + } + } + } + }, "/info": { "get": { "tags": [ @@ -5773,7 +5791,7 @@ "logoURL": "https://lorempixel.com/640/480/?85310", "about": "Eos repellat optio aut explicabo quod. Consequatur sit quasi aliquam sed modi aut. Perspiciatis et perferendis architecto voluptas eos quis iure. Corrupti ea reiciendis et quo sed itaque. Unde ipsa officia et veniam dicta ullam omnis modi. Consequuntur non possimus fugiat quaerat delectus ea. In voluptas dignissimos veniam reprehenderit a. Cum dolores aperiam et nihil. Veniam id rerum commodi quia assumenda at. Et velit iure eos aut. Et est praesentium id fugiat reprehenderit. Sunt dolorem aut ratione ipsam ipsum quo.", "founded": "1983-09-30", - "websiteURL": "http://rodriguez.com/eos-ut-earum-ut-eum-voluptas-iusto.html" + "websiteURL": "https://rodriguez.com/eos-ut-earum-ut-eum-voluptas-iusto.html" }, "relationships": { "shows": { @@ -6012,7 +6030,7 @@ "type": "themes", "attributes": { "name": "Watermelon", - "screenshot": "http://kurozora-web.test/storage/1/Screenshot.jpeg", + "screenshot": "https://kurozora.app/storage/1/Screenshot.jpeg", "downloadLink": "/api/v1/themes/1/download" } }, @@ -6021,7 +6039,7 @@ "type": "themes", "attributes": { "name": "Blueberry", - "screenshot": "http://kurozora-web.test/storage/2/Screenshot.jpeg", + "screenshot": "https://kurozora.app/storage/2/Screenshot.jpeg", "downloadLink": "/api/v1/themes/2/download" } } @@ -6045,8 +6063,8 @@ "href": "/api/v1/themes/1", "attributes": { "name": "Tatum Orn", - "screenshot": "http://kurozora-web.test/storage/1/Screenshot.jpeg", - "downloadLink": "http://kurozora-web.test/api/v1/themes/1/download" + "screenshot": "https://kurozora.app/storage/1/Screenshot.jpeg", + "downloadLink": "https://kurozora.app/api/v1/themes/1/download" } } ] @@ -6066,7 +6084,26 @@ "type": "legal", "href": "/api/v1/privacy-policy", "attributes": { - "text": "The privacy policy in HTML format." + "text": "The Privacy Policy in HTML format." + } + } + } + } + } + } + }, + "GetTermsOfUseSuccess": { + "description": "Successful GET Terms of Use JSON response", + "content": { + "application/json": { + "schema": { + "type": "object", + "example": { + "data": { + "type": "legal", + "href": "/api/v1/terms-of-use", + "attributes": { + "text": "The Terms of Use in HTML format." } } }