From 7d4bb47a53a21aace4732e467a4d99671b443da1 Mon Sep 17 00:00:00 2001 From: Alexander Popov Date: Sun, 6 Aug 2023 00:44:27 +0300 Subject: [PATCH] fixed cors --- app/assets/js/app.js | 15 +++++++++++---- package.json | 1 + server/shard.yml | 14 +++++--------- server/src/modules/rev2.cr | 12 +++++++++++- server/src/{api.cr => server.cr} | 1 + 5 files changed, 29 insertions(+), 14 deletions(-) rename server/src/{api.cr => server.cr} (86%) diff --git a/app/assets/js/app.js b/app/assets/js/app.js index 855731f..0bf395d 100644 --- a/app/assets/js/app.js +++ b/app/assets/js/app.js @@ -3,9 +3,10 @@ import { routes } from './routes.js'; let DEBUG = true; window.DEBUG = DEBUG; -let SERVER_URL; +let SERVER_HOST; if (DEBUG) SERVER_HOST = 'localhost'; else SERVER_HOST = 'a2s.su'; +window.SERVER_HOST = SERVER_HOST; /* main */ window.onload = function () { @@ -75,12 +76,18 @@ const location_handler = async () => { }; function get_from_api(callback, api_method = '', params = {}) { - respone = ''; - if (api_method == '') { console.log('wrong method'); } else { - fetch(`http://${SERVER_HOST}:3000/api/v1.0/${api_method}`) + let url = `http://${SERVER_HOST}:3000/api/v1.0/${api_method}`; + let opts = { + method: 'get', + headers: { + 'Content-Type': 'application/json', + }, + }; + + fetch(url, opts) .then((response) => { return response.json(); }) diff --git a/package.json b/package.json index 4bd3dad..b442481 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "description": "ololo", "scripts": { "serve": "npx parcel serve --dist-dir public app/index.html", + "serve-https": "npx parcel serve --https --dist-dir public app/index.html", "build": "npm run clean; npx parcel build --dist-dir public app/index.html --no-optimize; npm run git-hash", "prettier": "npx prettier --write .", "git-hash": "./update_commit.sh", diff --git a/server/shard.yml b/server/shard.yml index e105187..a710c64 100644 --- a/server/shard.yml +++ b/server/shard.yml @@ -1,15 +1,15 @@ -name: api_server +name: a2s_server version: 0.1.0 authors: - Alexander Popov -# description: | -# Short description of server +description: | + API server for a2s community targets: - api: - main: src/api.cr + a2s_server: + main: src/server.cr dependencies: kemal: @@ -17,8 +17,4 @@ dependencies: lexbor: github: kostya/lexbor -# development_dependencies: -# webmock: -# github: manastech/webmock.cr - license: WTFPL diff --git a/server/src/modules/rev2.cr b/server/src/modules/rev2.cr index 61b9469..1ffe7e5 100644 --- a/server/src/modules/rev2.cr +++ b/server/src/modules/rev2.cr @@ -9,6 +9,13 @@ require "lexbor" # ``` # ... # ``` +options "/api/v1.0/rev2_monsters" do |env| + # Allow `GET /api/v1.0/rev2_monsters`... + env.response.headers.add("Access-Control-Allow-Methods", "GET") + env.response.headers.add("Access-Control-Allow-Headers", "Content-type") + env.response.headers.add("Access-Control-Allow-Origin", "*") +end + get "/api/v1.0/rev2_monsters" do |env| url = "https://game.capcom.com/residentevil/en/onlineevent-4_1108.html" @@ -48,7 +55,10 @@ get "/api/v1.0/rev2_monsters" do |env| response = File.read("./cache/rev2/data.json") end - env.response.content_type = "application/json" + env.response.headers.add("Access-Control-Allow-Methods", "GET") + env.response.headers.add("Access-Control-Allow-Headers", "Content-type") env.response.headers.add("Access-Control-Allow-Origin", "*") + env.response.content_type = "application/json" + response end diff --git a/server/src/api.cr b/server/src/server.cr similarity index 86% rename from server/src/api.cr rename to server/src/server.cr index ba857b1..caaf107 100644 --- a/server/src/api.cr +++ b/server/src/server.cr @@ -8,4 +8,5 @@ get "/" do end Kemal.config.env = "development" +Kemal.config.port = 3000 Kemal.run