using LinkDotNet.MessageHandling.Contracts;\r
+using NativeOctopusClient.Model;\r
using Newtonsoft.Json.Linq;\r
using NLog;\r
using RestSharp;\r
\r
namespace NativeOctopusClient {\r
\r
- public class Rundown {\r
- public string ID { get; set; }\r
- public string Name { get; set; }\r
- public DateTime Start { get; set; }\r
- public string FormattedStart { get; set; }\r
- public int? StoryPosition { get; set; }\r
- public override String ToString() {\r
- string displayName = Name?.ToString() ?? NativeOctopusAPI.UNNAMED;\r
- return "0".Equals(ID) ? displayName : String.Format($"{FormattedStart} {displayName} ");\r
- }\r
- }\r
-\r
- public class Story {\r
- public string ID { get; set; }\r
- public string ParentStoryID { get; set; }\r
- public string Name { get; set; }\r
- public string Script { get; set; }\r
- public string ScriptContent { get; set; }\r
- public string Format { get; set; }\r
- public int? Position { get; set; }\r
- public MosObject[] MosObjects { get; set; }\r
- public StoryFolder[] StoryFolders { get; set; }\r
- public Rundown[] Rundowns { get; set; }\r
-\r
- public override String ToString() {\r
- string displayName = Name?.ToString() ?? NativeOctopusAPI.UNNAMED;\r
- return "0".Equals(ID) ? displayName : String.Format($"{ID} {displayName} ");\r
- }\r
- }\r
-\r
- public class MosObject {\r
- public string MosID { get; set; }\r
- public string ObjID { get; set; }\r
- public string ObjectType { get; set; }\r
- public string ID { get; set; }\r
- public string GlobalID { get; set; }\r
- }\r
-\r
- public class StoryFolder {\r
- public string ID { get; set; }\r
- public string Name { get; set; }\r
- public int? StoryPosition { get; set; }\r
- public override String ToString() {\r
- string displayName = Name?.ToString() ?? NativeOctopusAPI.UNNAMED;\r
- return "0".Equals(ID) ? displayName : String.Format($"{ID} {displayName} ");\r
- }\r
- }\r
-\r
public class NativeOctopusAPI {\r
private static Logger logger = LogManager.GetCurrentClassLogger();\r
public const string UNNAMED = "<üres>";\r
private string user;\r
private string pwd;\r
private IMessageBus messageBus;\r
+ private IEnumerable<Rundown> rundowns;\r
\r
public NativeOctopusAPI(string address, string user, string pwd, int timeout, IMessageBus messageBus) {\r
this.user = user;\r
this.messageBus = messageBus;\r
}\r
\r
- public IEnumerable<Rundown> GetRundowns(DateTime scheduledDate) {\r
- IEnumerable<Rundown> result = null;\r
+ public List<Rundown> GetRundowns(DateTime scheduledDate) {\r
+ List<Rundown> result = null;\r
try {\r
- var request = new RestRequest("rundowns/{scheduledDate}", Method.GET);\r
- var dt = scheduledDate.ToString("s", CultureInfo.CurrentCulture);\r
- request.AddParameter("scheduledDate", dt, ParameterType.UrlSegment);\r
+ var request = new RestRequest("Rundown", Method.GET);\r
+ request.AddParameter("fields", "id,name,scheduledStart", ParameterType.QueryString);\r
+ request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+ request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
var response = client.Execute<JsonArray>(request);\r
if (!CheckResponse(response))\r
return null;\r
- JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => ToRundown(d));\r
+ var resultList = JExtensions.ParseArray(JExtensions.ParseObject(response.Content), "result");\r
+ if (resultList == null)\r
+ return null;\r
+ rundowns = resultList.Children().Select(d => Rundown.Create(d)).ToList();\r
+ DateTime end = scheduledDate + new TimeSpan(1, 0, 0, 0);\r
+ result = rundowns.Where(r => r.Start >= scheduledDate && r.Start < end).OrderBy(r => r.Start).ToList();\r
}\r
catch (Exception e) {\r
OnError(e);\r
return result;\r
}\r
\r
- public IEnumerable<Rundown> GetRundownsByParentStoryID(String id) {\r
- IEnumerable<Rundown> result = null;\r
+ public List<Story> GetRundownStories(string id) {\r
+ List<Story> result = null;\r
try {\r
- var request = new RestRequest("rundownsByParentStoryID/{id}", Method.GET);\r
+ var request = new RestRequest("Rundown/{id}", Method.GET);\r
request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+ request.AddParameter("fields", "slugs,Slug.story,Slug.position,Story.id,Story.name,Story.format,Story.mosObjects,Story.customColumns,CustomColumn.label,CustomColumn.value", ParameterType.QueryString);\r
+ request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+ request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
var response = client.Execute<JsonArray>(request);\r
if (!CheckResponse(response))\r
return null;\r
- JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => ToRundown(d));\r
+ var resultObject = JExtensions.ParseObject(JExtensions.ParseObject(response.Content), "result");\r
+ var resultList = JExtensions.ParseArray(resultObject, "slugs");\r
+ if (resultList == null)\r
+ return null;\r
+\r
+ resultList.Children().ToList().ForEach(d => {\r
+ Story s = Story.Create(d);\r
+ if (s != null) {\r
+ if (result == null)\r
+ result = new List<Story>();\r
+ result.Add(s);\r
+ }\r
+ });\r
+ if (result != null)\r
+ result = result.OrderBy(s=>s.Position).ToList();\r
+ } catch (Exception e) {\r
+ OnError(e);\r
}\r
- catch (Exception e) {\r
+ return result;\r
+ }\r
+\r
+ public List<StoryFolder> getStoryFolders() {\r
+ List<StoryFolder> result = null;\r
+ try {\r
+ var request = new RestRequest("StoryFolder", Method.GET);\r
+ request.AddParameter("fields", "id,name", ParameterType.QueryString);\r
+ request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+ request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
+ var response = client.Execute<JsonArray>(request);\r
+ if (!CheckResponse(response))\r
+ return null;\r
+ var resultList = JExtensions.ParseArray(JExtensions.ParseObject(response.Content), "result");\r
+ if (resultList == null)\r
+ return null;\r
+ result = resultList.ToList().Select(sf => StoryFolder.Create(sf)).OrderBy(sf => sf.Name).ToList();\r
+ } catch (Exception e) {\r
OnError(e);\r
}\r
return result;\r
}\r
\r
- public IEnumerable<Rundown> GetRundownsByPlaceHolderId(string id) {\r
+ public List<Story> GetStoryFolderStories(string id) {\r
+ List<Story> result = null;\r
+ try {\r
+ var request = new RestRequest("storyFolderStories/{id}", Method.GET);\r
+ request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+ var response = client.Execute<JsonArray>(request);\r
+ if (!CheckResponse(response))\r
+ return null;\r
+ JArray resultObject = JArray.Parse(response.Content);\r
+ result = resultObject.Children().Select(d => {\r
+ Story r = ToStoryFolderStory(d, id);\r
+ //logger.Debug($"{r}");\r
+ return r;\r
+ }).OrderBy(r => {\r
+ return r.ID;\r
+ }).ToList();\r
+ } catch (Exception e) {\r
+ OnError(e);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ public IEnumerable<Rundown> GetRundownsByParentStoryID(String id) {\r
IEnumerable<Rundown> result = null;\r
try {\r
- var request = new RestRequest("rundownsByPlaceHolderID/{id}", Method.GET);\r
+ var request = new RestRequest("rundownsByParentStoryID/{id}", Method.GET);\r
request.AddParameter(ID, id, ParameterType.UrlSegment);\r
var response = client.Execute<JsonArray>(request);\r
if (!CheckResponse(response))\r
return null;\r
JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => ToRundown(d));\r
+ //result = resultObject.Children().Select(d => ToRundown(d));\r
}\r
catch (Exception e) {\r
OnError(e);\r
return result;\r
}\r
\r
- public IEnumerable<Story> GetRundownStories(string id) {\r
- IEnumerable<Story> result = null;\r
+ public IEnumerable<Rundown> GetRundownsByPlaceHolderId(string id) {\r
+ IEnumerable<Rundown> result = null;\r
try {\r
- var request = new RestRequest("rundownStories/{id}", Method.GET);\r
+ var request = new RestRequest("rundownsByPlaceHolderID/{id}", Method.GET);\r
request.AddParameter(ID, id, ParameterType.UrlSegment);\r
var response = client.Execute<JsonArray>(request);\r
if (!CheckResponse(response))\r
return null;\r
JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => {\r
- Story r = ToRundownStory(d, id);\r
- //logger.Debug($"{r}");\r
- return r;\r
- }).OrderBy(r => {\r
- return r.ID;\r
- });\r
+ //result = resultObject.Children().Select(d => ToRundown(d));\r
}\r
catch (Exception e) {\r
OnError(e);\r
return null;\r
JArray resultObject = JArray.Parse(response.Content);\r
result = resultObject.Children().Select(d => {\r
- Story r = ToStory(d);\r
+ Story r = Story.Create(d);\r
//logger.Debug($"{r}");\r
return r;\r
});\r
return null;\r
JArray resultObject = JArray.Parse(response.Content);\r
result = resultObject.Children().Select(d => {\r
- Story r = ToStory(d);\r
+ Story r = Story.Create(d);\r
//logger.Debug($"{r}");\r
return r;\r
}).OrderBy(r => {\r
return result;\r
}\r
\r
- public IEnumerable<StoryFolder> getStoryFolders() {\r
- IEnumerable<StoryFolder> result = null;\r
- try {\r
- var request = new RestRequest("storyFolders", Method.GET);\r
- var response = client.Execute<JsonArray>(request);\r
- if (!CheckResponse(response))\r
- return null;\r
- JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => {\r
- StoryFolder r = ToStoryFolder(d);\r
- //logger.Debug($"{r}");\r
- return r;\r
- });\r
- }\r
- catch (Exception e) {\r
- OnError(e);\r
- }\r
- return result;\r
- }\r
-\r
public IEnumerable<StoryFolder> GetStoryFoldersByPlaceHolderID(string id) {\r
IEnumerable<StoryFolder> result = null;\r
try {\r
return null;\r
JArray resultObject = JArray.Parse(response.Content);\r
result = resultObject.Children().Select(d => {\r
- StoryFolder r = ToStoryFolder(d);\r
+ StoryFolder r = StoryFolder.Create(d);\r
//logger.Debug($"{r}");\r
return r;\r
});\r
return result;\r
}\r
\r
- public IEnumerable<Story> GetStoryFolderStories(string id) {\r
- IEnumerable<Story> result = null;\r
- try {\r
- var request = new RestRequest("storyFolderStories/{id}", Method.GET);\r
- request.AddParameter(ID, id, ParameterType.UrlSegment);\r
- var response = client.Execute<JsonArray>(request);\r
- if (!CheckResponse(response))\r
- return null;\r
- JArray resultObject = JArray.Parse(response.Content);\r
- result = resultObject.Children().Select(d => {\r
- Story r = ToStoryFolderStory(d, id);\r
- //logger.Debug($"{r}");\r
- return r;\r
- }).OrderBy(r => {\r
- return r.ID;\r
- });\r
- }\r
- catch (Exception e) {\r
- OnError(e);\r
- }\r
- return result;\r
- }\r
-\r
private bool CheckResponse(IRestResponse<JsonArray> response) {\r
if (String.IsNullOrEmpty(response.Content))\r
return false;\r
messageBus.Send(new NativeOctopusAPIMessage("Sikertelen OCTOPUS lekérdezés. Rendszerüzenet: " + e.Message));\r
}\r
\r
- private static IEnumerable<MosObject> GetMosObjectsFromStory(JToken d) {\r
- return d["mosObjects"]?.Select(t => ToMosObject(t));\r
- }\r
\r
- private static IEnumerable<StoryFolder> GetPartialStoryFolderFromStory(JToken d) {\r
+ private IEnumerable<StoryFolder> GetPartialStoryFolderFromStory(JToken d) {\r
return d["story_folder"]?.Select(t => ToPartialStoryFolder(t));\r
}\r
\r
- private static IEnumerable<Rundown> GetPartialRundownFromStory(JToken d) {\r
+ private IEnumerable<Rundown> GetPartialRundownFromStory(JToken d) {\r
return d["rundown"]?.Select(t => ToPartialRundown(t));\r
}\r
\r
- private static IEnumerable<StoryFolder> GetStoryFolderFromStory(JToken d) {\r
- return d["story_folder"]?.Select(t => ToStoryFolder(t));\r
- }\r
-\r
- private static IEnumerable<Rundown> GetRundownFromStory(JToken d) {\r
- return d["rundown"]?.Select(t => ToRundown(t));\r
+ private IEnumerable<StoryFolder> GetStoryFolderFromStory(JToken d) {\r
+ return d["story_folder"]?.Select(t => StoryFolder.Create(t));\r
}\r
\r
- private static StoryFolder ToStoryFolder(JToken d) {\r
- return new StoryFolder() {\r
- ID = d.Value<string>(ID),\r
- Name = d.Value<string>("name")\r
- };\r
+ private IEnumerable<Rundown> GetRundownFromStory(JToken d) {\r
+ return d["rundown"]?.Select(t => Rundown.Create(t));\r
}\r
\r
- private static StoryFolder ToPartialStoryFolder(JToken d) {\r
+ private StoryFolder ToPartialStoryFolder(JToken d) {\r
return new StoryFolder() {\r
ID = d.Value<string>(ID),\r
StoryPosition = d.Value<int>("position")\r
};\r
}\r
\r
- private static Rundown ToPartialRundown(JToken d) {\r
+ private Rundown ToPartialRundown(JToken d) {\r
return new Rundown() {\r
ID = d.Value<string>(ID),\r
StoryPosition = d.Value<int>("position")\r
};\r
}\r
\r
- private static Story ToRundownStory(JToken d, string id) {\r
- Story result = ToPartialStory(d);\r
+ private Story ToRundownStory(JToken d, string id) {\r
+ Story result = Story.Create(d);\r
result.Position = result.Rundowns.Where(r => id.Equals(r.ID)).FirstOrDefault()?.StoryPosition;\r
return result;\r
}\r
\r
- private static Story ToStoryFolderStory(JToken d, string id) {\r
- Story result = ToPartialStory(d);\r
+ private Story ToStoryFolderStory(JToken d, string id) {\r
+ Story result = Story.Create(d);\r
result.Position = result.StoryFolders.Where(r => id.Equals(r.ID)).FirstOrDefault()?.StoryPosition;\r
return result;\r
}\r
\r
- private static Story ToPartialStory(JToken d) {\r
- Story result = new Story {\r
- ID = d[ID]?.ToString(),\r
- ParentStoryID = d["parentStoryId"]?.ToString(),\r
- Name = d["name"]?.ToString() ?? UNNAMED,\r
- Format = d["format"]?.ToString(),\r
- Script = d["script"]?.ToString(),\r
- ScriptContent = d["script_content"]?.ToString(),\r
- MosObjects = GetMosObjectsFromStory(d)?.ToArray(),\r
- StoryFolders = GetPartialStoryFolderFromStory(d)?.ToArray(),\r
- Rundowns = GetPartialRundownFromStory(d)?.ToArray()\r
- };\r
+ //private Story ToStory(JToken d) {\r
+ // Story result = new Story {\r
+ // ID = d[ID]?.ToString(),\r
+ // ParentStoryID = d["parentStoryId"]?.ToString(),\r
+ // Name = d["name"]?.ToString() ?? UNNAMED,\r
+ // Format = d["format"]?.ToString(),\r
+ // Script = d["script"]?.ToString(),\r
+ // ScriptContent = d["script_content"]?.ToString(),\r
+ // MosObjects = GetMosObjectsFromStory(d)?.ToArray(),\r
+ // StoryFolders = GetStoryFolderFromStory(d)?.ToArray(),\r
+ // Rundowns = GetRundownFromStory(d)?.ToArray()\r
+ // };\r
+ // return result;\r
+ //}\r
\r
- return result;\r
+\r
+\r
+ }\r
+\r
+ public static class JExtensions {\r
+ public static JObject ParseObject(String data) {\r
+ return data == null ? null : JObject.Parse(data);\r
}\r
\r
- private static Story ToStory(JToken d) {\r
- Story result = new Story {\r
- ID = d[ID]?.ToString(),\r
- ParentStoryID = d["parentStoryId"]?.ToString(),\r
- Name = d["name"]?.ToString() ?? UNNAMED,\r
- Format = d["format"]?.ToString(),\r
- Script = d["script"]?.ToString(),\r
- ScriptContent = d["script_content"]?.ToString(),\r
- MosObjects = GetMosObjectsFromStory(d)?.ToArray(),\r
- StoryFolders = GetStoryFolderFromStory(d)?.ToArray(),\r
- Rundowns = GetRundownFromStory(d)?.ToArray()\r
- };\r
- return result;\r
+ public static JObject ParseObject(JToken d, String name) {\r
+ string sData = d[name]?.ToString();\r
+ return ParseObject(sData);\r
}\r
\r
- private static Rundown ToRundown(JToken d) {\r
- Rundown result = new Rundown {\r
- ID = d[ID].ToString(),\r
- Name = d["name"]?.ToString() ?? UNNAMED,\r
- Start = DateTime.Parse(d["scheduledStart"]?.ToString()),\r
- };\r
- if (result.Start == null)\r
- result.FormattedStart = "?";\r
- else\r
- result.FormattedStart = result.Start.ToString("HH:mm:ss", new CultureInfo("hu-HU"));\r
- return result;\r
+ public static JArray ParseArray(String data) {\r
+ return data == null ? null : JArray.Parse(data);\r
}\r
\r
- private static MosObject ToMosObject(JToken d) {\r
- return new MosObject() {\r
- GlobalID = d.Value<string>("globalId"),\r
- ID = d.Value<string>(ID),\r
- MosID = d.Value<string>("mosId"),\r
- ObjectType = d.Value<string>("objectType"),\r
- ObjID = d.Value<string>("objId")\r
- };\r
+ public static JArray ParseArray(JToken d, String name) {\r
+ string sData = d[name]?.ToString();\r
+ return ParseArray(sData);\r
}\r
}\r
}\r