Skip to content

Commit a523d6e

Browse files
committed
ななろだ対応
1 parent 412f925 commit a523d6e

File tree

10 files changed

+605
-49
lines changed

10 files changed

+605
-49
lines changed

GhostDist/Forms/MainForm.cs

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Drawing;
44
using System.IO;
55
using System.Linq;
6+
using System.Text;
67
using System.Windows.Forms;
78
using GhostDist.Models;
89
using GhostDist.Services;
@@ -223,13 +224,116 @@ private bool ExecuteNarUpload(ProjectSettings project, FtpConfiguration ftpConfi
223224
{
224225
logForm?.AddLog($"=== {project.Name} (NAR作成+アップロード) ===");
225226

227+
// アップロード先による分岐
228+
if (ftpConfig.UploadDestinationType == UploadType.NarNaLoader)
229+
{
230+
return ExecuteNarNaLoaderUpload(project, ftpConfig, logForm);
231+
}
232+
else
233+
{
234+
return ExecuteFtpNarUpload(project, ftpConfig, logForm);
235+
}
236+
}
237+
238+
/// <summary>
239+
/// NAR作成 + FTPアップロード (既存処理)
240+
/// </summary>
241+
private bool ExecuteFtpNarUpload(ProjectSettings project, FtpConfiguration ftpConfig, LogForm logForm)
242+
{
226243
var service = new NetworkUpdateService();
227244
service.LogMessage += (s, msg) => logForm?.AddLog(msg);
228245
service.ProgressChanged += (s, e) => logForm?.SetProgress(e.BytesProcessed, e.TotalBytes);
229246

230247
return service.ExecuteNarUpload(project, ftpConfig);
231248
}
232249

250+
/// <summary>
251+
/// NAR作成 + ななろだアップロード (新規処理)
252+
/// </summary>
253+
private bool ExecuteNarNaLoaderUpload(ProjectSettings project, FtpConfiguration ftpConfig, LogForm logForm)
254+
{
255+
logForm?.AddLog($"=== ななろだアップロード処理開始 ===");
256+
257+
// NAR作成
258+
var narService = new NarCreationService();
259+
narService.LogMessage += (s, msg) => logForm?.AddLog(msg);
260+
261+
string narPath;
262+
try
263+
{
264+
narPath = narService.CreateNar(project);
265+
}
266+
catch (Exception ex)
267+
{
268+
logForm?.AddLog($"NAR作成に失敗しました: {ex.Message}");
269+
return false;
270+
}
271+
272+
// ななろだアップロード
273+
using (var uploadService = new NarNaLoaderUploadService())
274+
{
275+
uploadService.LogMessage += (s, msg) => logForm?.AddLog(msg);
276+
uploadService.ProgressChanged += (s, e) => logForm?.SetProgress(e.BytesProcessed, e.TotalBytes);
277+
278+
// 非同期処理を同期的に実行
279+
var uploadTask = uploadService.UploadNarAsync(
280+
narPath,
281+
project.NarNaLoaderGhostId,
282+
ftpConfig.NarNaLoaderUploadUrl,
283+
ftpConfig.UserId,
284+
ftpConfig.Password
285+
);
286+
287+
// UIフリーズ防止のためDoEventsを呼びながら待機
288+
while (!uploadTask.IsCompleted)
289+
{
290+
Application.DoEvents();
291+
System.Threading.Thread.Sleep(100);
292+
}
293+
294+
var result = uploadTask.Result;
295+
296+
// ファイルサイズ取得
297+
var fileInfo = new FileInfo(narPath);
298+
var arcSize = fileInfo.Length;
299+
300+
// NARファイル削除
301+
try
302+
{
303+
File.Delete(narPath);
304+
}
305+
catch
306+
{
307+
// 削除失敗は無視
308+
}
309+
310+
// HTML書き換え (FTPアップロードと同様の処理)
311+
if (result.Success && !string.IsNullOrEmpty(project.HtmlFile) && File.Exists(project.HtmlFile))
312+
{
313+
try
314+
{
315+
var htmlContent = File.ReadAllText(project.HtmlFile, Encoding.GetEncoding("Shift_JIS"));
316+
317+
// 変数置換
318+
htmlContent = htmlContent.Replace("%uploaddate", DateTime.Now.ToString("yyyy/MM/dd"));
319+
htmlContent = htmlContent.Replace("%uploadtime", DateTime.Now.ToString("HH:mm:ss"));
320+
htmlContent = htmlContent.Replace("%uploadsize", (arcSize / 1024) + " KB");
321+
322+
// 上書き保存 (ローカル)
323+
File.WriteAllText(project.HtmlFile, htmlContent, Encoding.GetEncoding("Shift_JIS"));
324+
logForm?.AddLog($"HTMLファイルを更新しました: {Path.GetFileName(project.HtmlFile)}");
325+
}
326+
catch (Exception ex)
327+
{
328+
logForm?.AddLog($"HTMLファイルの更新に失敗しました: {ex.Message}");
329+
}
330+
}
331+
332+
logForm?.AddLog("ななろだアップロード処理が完了しました。");
333+
return result.Success;
334+
}
335+
}
336+
233337
private bool ExecuteNarCreate(ProjectSettings project, LogForm logForm)
234338
{
235339
logForm?.AddLog($"=== {project.Name} (NAR作成) ===");

0 commit comments

Comments
 (0)