昨天不論怎麼試bash或是powershell都沒有任何進展,可以說是Black Day,就是不順。不過後來就成功的利用了powershell就進行,先將解決問題的Code記錄下來。參考此篇討論,利用參數將重要的資訊傳入。
param (
[string]$apiKey = "",
[string]$orgId = "",
[string]$projectId = ""
)
$header = @{"Authorization" = "Bearer $apiKey"}
$url = "https://build-api.cloud.unity3d.com/api/v1/orgs/$orgId/projects/$projectId/buildtargets"
$sourceFilePath = "json.json"
$json = (Get-Content -Raw $sourceFilePath).psobject.baseobject | ConvertFrom-Json | ConvertTo-Json
$response =
Invoke-WebRequest `
-Headers $header `
-Method POST `
-Uri $url `
-ContentType "application/json" `
-Body $json
"$response"
其實昨天也和接近這個版本了,唯一的差別一直是在於二次Convert。出錯的版本一直都是Body的json格式是不被接受的,原先的想法在於已經是json格式的內容讀進來後只需要第一次的ConvertFrom-Json
但從這裡秀出內容的話,會是加了一堆eascape quote的json內容,而這樣的內容是不被允許的。大致上是這樣
{\"key\": \"value\"}
需要用第二個Convert,也就是ConvertTo-Json
才能再次的將內容轉成
{"key": "value"}
經過二次Convert後總算是成功了。初步試驗可以創建專案,但在設定Build target確碰到了有些寫好的資料確無法填進去的狀況。雖然可以再花時間找,但先暫時擱置一下,要去處理其它的問題。
好久沒有用Docker Compose了,今天的目標是寫出三個沒有做什麼事的server,並將它們由docker compose執行起來。為了要復習怎麼用docker compose,就在網路上找些教學
目前規劃三個server
match-game-front和match-director是按照之後的open match的概念所做的簡化版,而simulate-match則是利用一個簡單的server來模擬open match最核心的那幾個service。
其中,match-game-front是透過graphql和client(unity)進行連接,一但接到請求後,就利用grpc和simulate-match做溝通。simulate-match收到配對的要求後,就會直接透過grpc通知match-director。而match-director就會發出一個pubnub的訊息到指定的channel裡。
這個流程大致上是確立的,不過再實現上就碰到了golang不熟,寫起來異常地花時間。目前東拚西湊的,也只讓語法沒有錯誤的情況下達到看似好像是正確的。
這裡特地用了channel,雖然不清楚這樣用是否正確。在simulate-match裡一但接到了match-game-front透過grpc的訊息後,就傳訊息到channel裡,並在連接match-director的grpc func,利用goroutine加上channel。
go func() {
for {
select {
case x, ok := <-channel:
default:
}
}
}
沒有時間寫match-game-front,而另外二個server也還沒有時間去測。golang果然還要再花時間研究研究。