Skip to content

pc035860/hi-armory.tw

Repository files navigation

嗨... 英雄榜 hi-armory.tw

不一樣的英雄榜

初衷只是為了方便查詢神器特質等級,不想再大老遠跑到難用的 WoWProgress 去查。

準備工作

首先必須把 firebase-tools 裝好。

npm install -g firebase-tools

以及 Google Cloud SDK

初次使用可能會提示你下一些登入用的指令,照做就好囉!

Firebase

修改 app/config.js 的內容,換成你的設定。

apiKey 可以在 專案 console -> [設定] -> [一般] 裡面找到。

export const firebase = {
  apiKey: '{你的 API key}',
  authDomain: '{你的專案名稱}.firebaseapp.com',
  databaseURL: 'https://{你的專案名稱}.firebaseio.com'
};

Firebase Admin SDK

為了在 server 或是 本地 使用某些 admin 權限的操作,需要透過這個 SDK JSON 認證為服務帳戶。

產生方法是到 專案 console -> [設定] -> 服務帳戶,透過 產生新的私密金鑰 取得 JSON 檔案。

  • 目前 Cloud Functions 上操作 Firebase Storage 的部分需要透過此 SDK 認證才能操作,因此需要擺一個在 ./functions/firebase-adminsdk.json
  • 再來如果你有需要使用到 utils/createIndex.js,需要擺一個在專案目錄底下 ./firebase-adminsdk.json

Cloud Functions for Firebase

以下的 cloud functions 的環境設定必須完成才能運作

暫時保持使用一組 API

{
  "project": {
    "id": "{project id}",
    "bucket": "{bucket name}"
  },
  "resource": {
    "total": "10"
  },
  "blizzapi": {
    "id1": "{client id 1}",
    "secret1": "{client secret 1}"
  },
  "wclapi": {
  	"key": "{key}"
  }
}
設定名稱 敘述
project.id firebase project id
project.bucket firebase storage bucket name
resource.total 同時可以運行的 bnet api request 數量
blizzapi.id1 新版 develop.battle.net API client id
blizzapi.secret1 新版 develop.battle.net API client secret
wclapi.key Warcraft Logs API key
legionassult.base 軍團入侵時間的基底(此前某次的開始時間)
bfaassult.base 衝突戰時間的基底(此前某次的開始時間)

設定方法

firebase functions:config:set project.id="your project id"

battle.net API 申請請前往 https://dev.battle.net/。

WCL API 申請請前往 https://www.warcraftlogs.com/accounts/changeuser (需登入)。

設定相關文件可以看 Cloud Functions: Environment Configuration

Google Cloud Storage

因為 Firebase Storage 其實就是 Google Cloud Storage,所有一些 Firebase console 下沒有提供的操作,我們需要透過 gsutil 來進行。

設定 gs://hi-armory-tw 的 CORS

# 在專案根目錄下
gsutil cors set cors-json-file.json gs://hi-armory-tw

Install

在主目錄 跟 functions/ 目錄都需要做一次。

npm install

#

yarn install

Develop

# dev server
npm start

# 接著瀏覽 http://localhost:4444

Build & Deploy

# build
npm run dist

# deploy everything
firebase deploy

# deploy just functions
firebase deploy --only functions

# deploy just hosting
firebase deploy --only hosting

工具

createIndex.js

用目前現有 results 內的資料,重新建立一次 index

一般來說是在 resultsindex 沒有同步的時候使用。