APIの主要インターフェース:https://api.hamcq.cn/v1/logbook?from=gridtracker、その中にはfromパラメータにはフィルタリング機能があり、以下のような値のみが有効です。gridtracker。
パラメータ (application/json):
{
"キー": "YOUR_API_KEY",
"ADIF": "ADIF_STRING",
"アプリケーション名": "YOUR_APPLICATION_NAME"
}
この中では、`key` が必須項目です。`key` のみを入力した場合、そのキーが有効かどうかをテストするだけであり、すべてのパラメータを正しく入力しないとログのアップロードはできません。
もしキーが有効であれば、バックエンドは「Pass」を返します。また、キーが正しければ、アップロードされたADIFファイルの形式に関わらず、「Pass」が返されます。ただし、ログには記録されません。別の状況では、理由を示すJSONが出力される場合があります(例:
// この場合、HTTPステータスコードは406です。
{"code":406, "status": false, "message": "無効"}
例:
// 詳細については、こちらを参照してください: https://github.com/SydneyOwl/cloudlog-helper
public class HamCQAPIExample
{
public static async Task<string> TestHamCQConnectionAsync(string apikey)
{
return await UploadQSOToHamCQAsync(apikey, null);
}
public static async Task<string> UploadQSOToHamCQAsync(string apikey, string? adif)
{
try
{
var reqJson = new JObject { { "key", apikey } };
if (adif is not null)
{
reqJson.Add("adif", adif);
reqJson.Add("app", DefaultConfigs.DefaultApplicationName);
}
var result = await DefaultConfigs.HamCQQsoUploadEndpoint
.AllowHttpStatus(406)
.WithHeader("User-Agent", DefaultConfigs.DefaultHTTPUserAgent)
.WithHeader("Content-Type", "application/json")
.WithTimeout(TimeSpan.FromSeconds(DefaultConfigs.DefaultRequestTimeout))
.PostStringAsync(reqJson.ToString());
var responseText = await result.GetStringAsync();
var code = result.StatusCode;
if (responseText == "Pass") return string.Empty;
var res = JsonConvert.DeserializeObject<JObject>(responseText);
if (res is null) return $"HamCQ エラー: 無効なAPIキー({TranslationHelper.GetString("invalidapikey")}({responseText}))";
return $"HamCQ エラー: 無効なAPIキー ({res["message"]})";
}
catch (Exception e)
{
return e.Message;
}
}
}