#20 refactoring code to allow retry attempt
This commit is contained in:
parent
a2b6398268
commit
25472b208c
@ -561,80 +561,7 @@ namespace RMuseum.Services.Implementation
|
||||
(
|
||||
async token =>
|
||||
{
|
||||
using var client = new SftpClient
|
||||
(
|
||||
Configuration.GetSection("AudioSFPServer")["Host"],
|
||||
int.Parse(Configuration.GetSection("AudioSFPServer")["Port"]),
|
||||
Configuration.GetSection("AudioSFPServer")["Username"],
|
||||
Configuration.GetSection("AudioSFPServer")["Password"]
|
||||
);
|
||||
try
|
||||
{
|
||||
client.Connect();
|
||||
|
||||
using var x = File.OpenRead(narration.LocalXmlFilePath);
|
||||
client.UploadFile(x, $"{Configuration.GetSection("AudioSFPServer")["RootPath"]}{narration.RemoteXMLFilePath}", true);
|
||||
|
||||
using var s = File.OpenRead(narration.LocalMp3FilePath);
|
||||
client.UploadFile(s, $"{Configuration.GetSection("AudioSFPServer")["RootPath"]}{narration.RemoteMp3FilePath}", true);
|
||||
|
||||
string sql = $"INSERT INTO ganja_gaudio (audio_post_ID,audio_order,audio_xml,audio_ogg,audio_mp3,audio_title,audio_artist," +
|
||||
$"audio_artist_url,audio_src,audio_src_url, audio_guid, audio_fchecksum, audio_mp3bsize, audio_oggbsize, audio_date) VALUES " +
|
||||
$"({narration.GanjoorPostId},{narration.AudioOrder},'{narration.RemoteXMLFilePath}', '', '{narration.Mp3Url}', '{narration.AudioTitle}', '{narration.AudioArtist}', " +
|
||||
$"'{narration.AudioArtistUrl}', '{narration.AudioSrc}', '{narration.AudioSrcUrl}', '{narration.LegacyAudioGuid}', '{narration.Mp3FileCheckSum}', {narration.Mp3SizeInBytes}, 0, '{$"{narration.ReviewDate:0:u}".Replace("Z", "")}')";
|
||||
|
||||
using (MySqlConnection connection = new MySqlConnection
|
||||
(
|
||||
$"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8"
|
||||
))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
//We are using two database for different purposes on the remote
|
||||
using (MySqlConnection connection = new MySqlConnection
|
||||
(
|
||||
$"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["2ndUsername"]};pwd={Configuration.GetSection("AudioMySqlServer")["2ndPassword"]};database={Configuration.GetSection("AudioMySqlServer")["2ndDatabase"]};charset=utf8"
|
||||
))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(Configuration)) //this is long running job, so _context might be already been freed/collected by GC
|
||||
{
|
||||
narration.AudioSyncStatus = (int)AudioSyncStatus.SynchronizedOrRejected;
|
||||
context.AudioFiles.Update(narration);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
await _notificationService.PushNotification
|
||||
(
|
||||
narration.OwnerId,
|
||||
"انتشار خوانش ارسالی",
|
||||
$"خوانش ارسالی شما منتشر شد.{Environment.NewLine}" +
|
||||
$"میتوانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید."
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
//if an error occurs, narration.AudioSyncStatus is not updated and narration can be idetified later to do "retry" attempts
|
||||
await _notificationService.PushNotification
|
||||
(
|
||||
narration.OwnerId,
|
||||
"خطا در پردازش نهایی",
|
||||
$"{exp}{Environment.NewLine}" +
|
||||
$"میتوانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید."
|
||||
);
|
||||
}
|
||||
finally
|
||||
{
|
||||
client.Disconnect();
|
||||
}
|
||||
|
||||
await _PublishNarration(narration);
|
||||
});
|
||||
}
|
||||
|
||||
@ -649,6 +576,83 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
private async Task _PublishNarration(PoemNarration narration)
|
||||
{
|
||||
using var client = new SftpClient
|
||||
(
|
||||
Configuration.GetSection("AudioSFPServer")["Host"],
|
||||
int.Parse(Configuration.GetSection("AudioSFPServer")["Port"]),
|
||||
Configuration.GetSection("AudioSFPServer")["Username"],
|
||||
Configuration.GetSection("AudioSFPServer")["Password"]
|
||||
);
|
||||
try
|
||||
{
|
||||
client.Connect();
|
||||
|
||||
using var x = File.OpenRead(narration.LocalXmlFilePath);
|
||||
client.UploadFile(x, $"{Configuration.GetSection("AudioSFPServer")["RootPath"]}{narration.RemoteXMLFilePath}", true);
|
||||
|
||||
using var s = File.OpenRead(narration.LocalMp3FilePath);
|
||||
client.UploadFile(s, $"{Configuration.GetSection("AudioSFPServer")["RootPath"]}{narration.RemoteMp3FilePath}", true);
|
||||
|
||||
string sql = $"INSERT INTO ganja_gaudio (audio_post_ID,audio_order,audio_xml,audio_ogg,audio_mp3,audio_title,audio_artist," +
|
||||
$"audio_artist_url,audio_src,audio_src_url, audio_guid, audio_fchecksum, audio_mp3bsize, audio_oggbsize, audio_date) VALUES " +
|
||||
$"({narration.GanjoorPostId},{narration.AudioOrder},'{narration.RemoteXMLFilePath}', '', '{narration.Mp3Url}', '{narration.AudioTitle}', '{narration.AudioArtist}', " +
|
||||
$"'{narration.AudioArtistUrl}', '{narration.AudioSrc}', '{narration.AudioSrcUrl}', '{narration.LegacyAudioGuid}', '{narration.Mp3FileCheckSum}', {narration.Mp3SizeInBytes}, 0, '{$"{narration.ReviewDate:0:u}".Replace("Z", "")}')";
|
||||
|
||||
using (MySqlConnection connection = new MySqlConnection
|
||||
(
|
||||
$"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["Username"]};pwd={Configuration.GetSection("AudioMySqlServer")["Password"]};database={Configuration.GetSection("AudioMySqlServer")["Database"]};charset=utf8"
|
||||
))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
//We are using two database for different purposes on the remote
|
||||
using (MySqlConnection connection = new MySqlConnection
|
||||
(
|
||||
$"server={Configuration.GetSection("AudioMySqlServer")["Server"]};uid={Configuration.GetSection("AudioMySqlServer")["2ndUsername"]};pwd={Configuration.GetSection("AudioMySqlServer")["2ndPassword"]};database={Configuration.GetSection("AudioMySqlServer")["2ndDatabase"]};charset=utf8"
|
||||
))
|
||||
{
|
||||
await connection.OpenAsync();
|
||||
await connection.ExecuteAsync(sql);
|
||||
}
|
||||
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(Configuration)) //this is long running job, so _context might be already been freed/collected by GC
|
||||
{
|
||||
narration.AudioSyncStatus = (int)AudioSyncStatus.SynchronizedOrRejected;
|
||||
context.AudioFiles.Update(narration);
|
||||
await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
await _notificationService.PushNotification
|
||||
(
|
||||
narration.OwnerId,
|
||||
"انتشار خوانش ارسالی",
|
||||
$"خوانش ارسالی شما منتشر شد.{Environment.NewLine}" +
|
||||
$"میتوانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید."
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
//if an error occurs, narration.AudioSyncStatus is not updated and narration can be idetified later to do "retry" attempts
|
||||
await _notificationService.PushNotification
|
||||
(
|
||||
narration.OwnerId,
|
||||
"خطا در پردازش نهایی",
|
||||
$"{exp}{Environment.NewLine}" +
|
||||
$"میتوانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید."
|
||||
);
|
||||
}
|
||||
finally
|
||||
{
|
||||
client.Disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get Upload Session (including files)
|
||||
|
||||
@ -34,19 +34,19 @@
|
||||
"From": "test@gmail.com"
|
||||
},
|
||||
"AudioMySqlServer": {
|
||||
"Server": "185.8.175.123",
|
||||
"Username": "ganjoor_wuser",
|
||||
"Password": "6Uy^gjjUjj889nN",
|
||||
"Database": "ganjoor_adab",
|
||||
"2ndDatabase": "ganjoor_adab",
|
||||
"2ndUsername": "ganjoor_audio",
|
||||
"2ndPassword": "ytTA8mbFRo"
|
||||
"Server": "localhost",
|
||||
"Username": "adab",
|
||||
"Password": "",
|
||||
"Database": "adab",
|
||||
"2ndDatabase": "audio",
|
||||
"2ndUsername": "audio",
|
||||
"2ndPassword": ""
|
||||
},
|
||||
"AudioSFPServer": {
|
||||
"Host": "185.8.175.123",
|
||||
"Host": "localhost",
|
||||
"Port": "22",
|
||||
"Username": "ganjoor",
|
||||
"Password": "XTtCMM5L",
|
||||
"Username": "root",
|
||||
"Password": "",
|
||||
"RootPath": "/home"
|
||||
},
|
||||
"AudioUploadService": {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user