From a1bffa1cdbf2a86570bebd65d4a6cbead5f44799 Mon Sep 17 00:00:00 2001 From: Sirttas Date: Thu, 16 Nov 2023 11:26:17 +0100 Subject: [PATCH] fuzzwork --- nginx.conf.template | 10 ++++++++- package.json | 2 +- src/market/appraisal/appraisal.ts | 7 +++++- src/market/appraisal/evepraisal.ts | 16 ++++++++++--- src/market/appraisal/fuzzwork.ts | 36 ++++++++++++++++++++++++++++++ src/reprocess/ReprocessInput.vue | 2 +- src/service.ts | 11 +-------- vite.config.ts | 6 +++++ 8 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 src/market/appraisal/fuzzwork.ts diff --git a/nginx.conf.template b/nginx.conf.template index f408ce4..654b746 100644 --- a/nginx.conf.template +++ b/nginx.conf.template @@ -28,10 +28,18 @@ server { proxy_set_header X-Forwarded-Proto https; } location /evepraisal/ { - proxy_pass https://${EVEPRAISAL_URL}/; + proxy_pass https://${FUZZWORK_URL}/; proxy_http_version 1.1; rewrite /evepraisal/(.*) /$1 break; proxy_ssl_server_name on; + proxy_set_header Host "${FUZZWORK_URL}"; + proxy_set_header X-Forwarded-Proto https; + } + location /fuzzwork/ { + proxy_pass https://${EVEPRAISAL_URL}/; + proxy_http_version 1.1; + rewrite /fuzzwork/(.*) /$1 break; + proxy_ssl_server_name on; proxy_set_header Host "${EVEPRAISAL_URL}"; proxy_set_header X-Forwarded-Proto https; } diff --git a/package.json b/package.json index ea4cb67..24d9ab1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite --host", + "dev": "vite --host --debug", "build": "vue-tsc && vite build", "preview": "vite preview" }, diff --git a/src/market/appraisal/appraisal.ts b/src/market/appraisal/appraisal.ts index abf2c1b..1ecca32 100644 --- a/src/market/appraisal/appraisal.ts +++ b/src/market/appraisal/appraisal.ts @@ -3,6 +3,7 @@ import { ref } from 'vue'; import { MarketType } from "../type"; import { MarketTypePrice } from './MarketTypePrice'; import { getEvepraisalPrices } from './evepraisal'; +import { getfuzzworkPrices } from './fuzzwork'; type MarketTypePriceCache = { price: MarketTypePrice, @@ -10,11 +11,15 @@ type MarketTypePriceCache = { } const cacheDuration = 1000 * 60 * 5; // 5 minutes +const priceGetters = { + evepraisal: getEvepraisalPrices, + fuzzwork: getfuzzworkPrices +} export const useApraisalStore = defineStore('appraisal', () => { const cache = ref>({}); - const getPricesUncached = getEvepraisalPrices; + const getPricesUncached = priceGetters.fuzzwork; const getPrice = async (type: MarketType): Promise => (await getPrices([type]))[0]; const getPrices = async (types: MarketType[]): Promise => { diff --git a/src/market/appraisal/evepraisal.ts b/src/market/appraisal/evepraisal.ts index 56103af..807dc70 100644 --- a/src/market/appraisal/evepraisal.ts +++ b/src/market/appraisal/evepraisal.ts @@ -1,10 +1,20 @@ -import { evepraisalAxiosInstance } from '@/service'; +import { logResource } from '@/service'; +import axios from 'axios'; import { MarketType } from "../type"; -import { MarketTypePrice, PriceGetter } from './MarketTypePrice'; +import { PriceGetter } from './MarketTypePrice'; + +export const evepraisalAxiosInstance = axios.create({ + baseURL: '/evepraisal/', + headers: { + 'accept': 'application/json', + "Content-Type": "application/json" + }, +}) +logResource(evepraisalAxiosInstance) const batchSize = 100; -export const getEvepraisalPrices: PriceGetter = async (types: MarketType[]): Promise => { +export const getEvepraisalPrices: PriceGetter = async types => { const batches = []; for (let i = 0; i < types.length; i += batchSize) { diff --git a/src/market/appraisal/fuzzwork.ts b/src/market/appraisal/fuzzwork.ts new file mode 100644 index 0000000..02c400b --- /dev/null +++ b/src/market/appraisal/fuzzwork.ts @@ -0,0 +1,36 @@ +import { logResource } from '@/service'; +import axios from 'axios'; +import { MarketType } from "../type"; +import { PriceGetter } from './MarketTypePrice'; + +export const fuzzworkAxiosInstance = axios.create({ + baseURL: '/fuzzwork/', + headers: { + 'accept': 'application/json', + "Content-Type": "application/json" + }, +}) +logResource(fuzzworkAxiosInstance) + +const batchSize = 100; + +export const getfuzzworkPrices: PriceGetter = async types => { + const batches = []; + + for (let i = 0; i < types.length; i += batchSize) { + batches.push(fuzzworkAxiosInstance.post(`/aggregates/?station=60003760&types=${types.slice(i, i + batchSize).map(t => t.id).join(",")}`)); + } + return (await Promise.all(batches)) + .flatMap(b => Object.entries(b.data)) + .map(entry => { + const id = parseInt(entry[0]); + const prices = entry[1] as any; + + return { + type: types.find(t => t.id === id) as MarketType, + buy: parseFloat(prices.buy.max), + sell: parseFloat(prices.sell.min), + orderCount: parseInt(prices.buy.order_count) + parseInt(prices.sell.order_count) + } + }); +}; \ No newline at end of file diff --git a/src/reprocess/ReprocessInput.vue b/src/reprocess/ReprocessInput.vue index cb4e538..f3463c7 100644 --- a/src/reprocess/ReprocessInput.vue +++ b/src/reprocess/ReprocessInput.vue @@ -1,5 +1,5 @@