LoginSignup
0

posted at

updated at

【v41】auカブコム証券のkabuステーションPUSH APIを受信してCSVファイルへ保存する(RESTサーバーへ送信)

はじめに

過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。

41番目の記事までは、ローカルディスクにチャートデータを追記していたが、それに加えて、50番目の記事で作成したRESTサーバーに送信して、別筐体にもチャートデータを保存する。

ベースとなるソース

v35.MainChartData_r3をベースに、v41.MainChartData_r13を作成する。

HTTP接続テストのため、kabusapisrvのtest.MainTestClientをベースに、v41.TestClientを作成する。

実装

JSONパーサーがjacksonからgsonに変わるため、jsonData()が以下のように修正する。

	private static String jsonData(ChartData cd) {
		Gson gson = new Gson();
		String json = gson.toJson(cd);
		return json;
	}

1行づつファイルに保存する際に、リストに追加して、最後にPOSTする。
pw.println()では例外を投げないので、ループの中で中断されることはない見込み。

				try (PrintWriter pw = FileUtil.writer(si.getFilePath(DB_FILENAME), FileUtil.UTF8, true)) {
					ChartData cd = new ChartData(si.getDirName());
					int writeCnt = 0;
					List<String> bufList = si.getAndClearChartData();
					for (String s : bufList) {
						String data = parseChartData(si, s);
						if (data != null) {
							pw.println(data);
							writeCnt++;
							cd.addRecord(data);
						}
					}
					if (writeCnt > 0) {
						String msg = String.format("code=%s, bufList.size=%d, writeCnt=%d", si.getDirName(), bufList.size(), writeCnt);
						StdoutLog.timethreadprintln(clazz, "writeChartData()", msg);
						System.out.flush();
						postChartData(cd);
					}
				} catch (IOException e) {

テスト

kabusapisrvを起動し、ポート8080で待機する。

MainChartData_r13を起動し、PUSH APIを受信した際に、ローカルの/tmp/chartに保存されると同時に、RESTサーバーの/tmp/server/chartに保存されることを確認する。

追記:ソースをarchiveブランチへ移動

最新版に移行し、もう使われることはないので、アーカイブする。

githubソース

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0