Working task geting and stream download
This commit is contained in:
parent
dc150f1363
commit
54472c5f0a
3
.gitignore
vendored
3
.gitignore
vendored
@ -258,4 +258,5 @@ paket-files/
|
|||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
# Python Tools for Visual Studio (PTVS)
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
|
/TaskRunner/tmp
|
||||||
|
13
TaskRunner/DTOs/StreamDTO.cs
Normal file
13
TaskRunner/DTOs/StreamDTO.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace TaskRunner.DTOs
|
||||||
|
{
|
||||||
|
public class StreamDTO
|
||||||
|
{
|
||||||
|
public int StreamId { get; set; }
|
||||||
|
public string MimeType { get; set; }
|
||||||
|
public IList<IDictionary<string,string>> Uris { get; set; }
|
||||||
|
}
|
||||||
|
}
|
23
TaskRunner/DTOs/TaskDTO.cs
Normal file
23
TaskRunner/DTOs/TaskDTO.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace TaskRunner.DTOs
|
||||||
|
{
|
||||||
|
public enum TaskStatus
|
||||||
|
{
|
||||||
|
Created,
|
||||||
|
Starting,
|
||||||
|
Running,
|
||||||
|
Finished,
|
||||||
|
Error
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TaskDTO
|
||||||
|
{
|
||||||
|
public int TaskId { get; set; }
|
||||||
|
public TaskStatus TaskStatus { get; set; }
|
||||||
|
public int SourceStreamId { get; set; }
|
||||||
|
public int DestinationStreamId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -22,7 +22,7 @@ namespace TaskRunner
|
|||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
MainAsync(args).Wait();
|
MainAsync(args).Wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,12 +33,31 @@ namespace TaskRunner
|
|||||||
{
|
{
|
||||||
Console.WriteLine($"Waiting for tasks from server: {options.server}");
|
Console.WriteLine($"Waiting for tasks from server: {options.server}");
|
||||||
var server = new ServerApi(new Uri(options.server));
|
var server = new ServerApi(new Uri(options.server));
|
||||||
var task = await server.GetTask();
|
try
|
||||||
Console.WriteLine(task);
|
{
|
||||||
|
var task = await server.GetTask();
|
||||||
|
var src = await server.GetStream("asdf", task.SourceStreamId);
|
||||||
|
var dest = await server.GetStream("asdf", task.DestinationStreamId);
|
||||||
|
Console.WriteLine($"Got task {task.TaskId}");
|
||||||
|
Console.WriteLine($"Source: {src.MimeType}");
|
||||||
|
Console.WriteLine($"Dest: {dest.MimeType}");
|
||||||
|
|
||||||
|
foreach (var strUri in src.Uris)
|
||||||
|
{
|
||||||
|
var uri = new Uri(strUri["Uri"]);
|
||||||
|
var fs = new FileStorage(@"\Users\Arti.Zirk\Documents\files");
|
||||||
|
var path = await fs.DownloadFile(uri);
|
||||||
|
Console.WriteLine(path);
|
||||||
|
}
|
||||||
|
} catch (FailedToGetTaskException) {
|
||||||
|
Console.WriteLine("No tasks available");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var taskManager = new TaskManager();
|
var taskManager = new TaskManager();
|
||||||
await taskManager.RunFfmpeg();
|
await taskManager.RunFfmpeg();
|
||||||
} else {
|
} else {
|
||||||
Console.WriteLine(options.GetUsage());
|
//Console.WriteLine(options.GetUsage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
8
TaskRunner/Properties/launchSettings.json
Normal file
8
TaskRunner/Properties/launchSettings.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"TaskRunner": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"commandLineArgs": "--server http://10.42.0.1:8080/api/v1/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,10 +3,15 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using TaskRunner.DTOs;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace TaskRunner
|
namespace TaskRunner
|
||||||
{
|
{
|
||||||
|
public class TaskRunnerException:Exception { }
|
||||||
|
public class FailedToGetTaskException:TaskRunnerException { }
|
||||||
|
public class FailedToGetStreamException:TaskRunnerException { }
|
||||||
public class ServerApi
|
public class ServerApi
|
||||||
{
|
{
|
||||||
public Uri serverUri;
|
public Uri serverUri;
|
||||||
@ -18,10 +23,50 @@ namespace TaskRunner
|
|||||||
client.BaseAddress = serverUri;
|
client.BaseAddress = serverUri;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GetTask()
|
public async Task<TaskDTO> GetTask()
|
||||||
{
|
{
|
||||||
var resp = await client.GetStringAsync("get");
|
var resp = await client.GetAsync("/Task");
|
||||||
return resp;
|
if (!resp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new FailedToGetTaskException();
|
||||||
|
}
|
||||||
|
return JsonConvert.DeserializeObject<TaskDTO>(await resp.Content.ReadAsStringAsync());
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<StreamDTO> GetStream(string VideoUuid, int StreamId)
|
||||||
|
{
|
||||||
|
var resp = await client.GetAsync($"/Videos/{VideoUuid}/Streams/{StreamId}");
|
||||||
|
if (!resp.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new FailedToGetStreamException();
|
||||||
|
}
|
||||||
|
return JsonConvert.DeserializeObject<StreamDTO>(await resp.Content.ReadAsStringAsync());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileStorage
|
||||||
|
{
|
||||||
|
private string baseDir = Path.GetFullPath("files");
|
||||||
|
public FileStorage() { }
|
||||||
|
public FileStorage(string dir) {
|
||||||
|
baseDir = Path.GetFullPath(dir);
|
||||||
|
}
|
||||||
|
public async Task<string> DownloadFile(Uri uri)
|
||||||
|
{
|
||||||
|
var entity = await (new HttpClient()).GetAsync(uri);
|
||||||
|
if (!entity.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
throw new TaskRunnerException();
|
||||||
|
}
|
||||||
|
var fileName = uri.Segments.Last();
|
||||||
|
var fullPath = Path.Combine(baseDir, fileName);
|
||||||
|
Console.WriteLine(fileName);
|
||||||
|
Directory.CreateDirectory(baseDir);
|
||||||
|
//File.Create(fullPath);
|
||||||
|
using (var fos = File.OpenWrite(fullPath)) {
|
||||||
|
await entity.Content.CopyToAsync(fos);
|
||||||
|
}
|
||||||
|
return fullPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommandLineParser" Version="1.9.71" />
|
<PackageReference Include="CommandLineParser" Version="1.9.71" />
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
|
||||||
|
<PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user