/// <summary> /// Get the number of seconds consumed for the given stream. /// </summary> /// <param name="stream_hash">The stream hash.</param> /// <returns>The number of seconds.</returns> public int getSeconds(string stream_hash) { if (!m_data.has("streams." + stream_hash)) { throw new InvalidDataException("No data available for stream " + stream_hash); } if (!m_data.has("streams." + stream_hash + ".seconds")) { throw new InvalidDataException("No seconds data available for stream " + stream_hash); } return(m_data.getIntVal("streams." + stream_hash + ".seconds")); }
public HistoricDataAvailabilitySource(JSONdn json) { m_status = json.getIntVal("status"); foreach (JToken version in json.getJVal("versions")) { m_versions.Add(Convert.ToInt32(version.ToString())); } foreach (string key in json.getKeys("augmentations")) { m_augmentations.Add(key, json.getIntVal("augmentations." + key)); } }
/// <summary> /// Get a list of Historics queries in your account. /// </summary> /// <param name="user">The user making the request.</param> /// <param name="page">The page number to get.</param> /// <param name="per_page">The number of items per page.</param> /// <returns>A list of Historic objects.</returns> public static HistoricList list(User user, int page = 1, int per_page = 20) { try { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("page", page.ToString()); parameters.Add("per_page", per_page.ToString()); JSONdn res = user.callApi("historics/get", parameters); if (!res.has("count")) { throw new ApiException("No count in the response"); } HistoricList retval = new HistoricList(res.getIntVal("count")); if (!res.has("data") && retval.TotalCount > 0) { throw new ApiException("No historics in the response"); } JToken[] children = res.getChildren("data"); for (int i = 0; i < children.Length; i++) { retval.Add(new Historic(user, new JSONdn(children[i]))); } return(retval); } catch (ApiException e) { if (e.Code == 400) { throw new InvalidDataException(e.Message); } throw new ApiException("Unexpected API response code: " + e.Code.ToString() + " " + e.Message); } }
/// <summary> /// Page through recent Push log entries. /// </summary> /// <param name="user">The user making the request.</param> /// <param name="page">Which page to fetch.</param> /// <param name="per_page">How many entries per page.</param> /// <param name="order_by">Which field to sort by.</param> /// <param name="order_dir">In asc[ending] or desc[ending] order.</param> /// <param name="id">Optional subscription ID.</param> /// <returns>A PushLog object.</returns> public static PushLog getLogs(User user, int page, int per_page, string order_by = ORDERBY_REQUEST_TIME, string order_dir = ORDERDIR_DESC, string id = "") { Dictionary <string, string> parameters = new Dictionary <string, string>(); if (page < 1) { throw new InvalidDataException("The specified page number is invalid"); } if (per_page < 1) { throw new InvalidDataException("The specified per_page value is invalid"); } if (order_by != ORDERBY_REQUEST_TIME) { throw new InvalidDataException("The specified order_by is not supported"); } if (order_dir != ORDERDIR_ASC && order_dir != ORDERDIR_DESC) { throw new InvalidDataException("The specified order_dir is not supported"); } if (id.Length > 0) { parameters.Add("id", id); } parameters.Add("page", page.ToString()); parameters.Add("per_page", per_page.ToString()); parameters.Add("order_by", order_by); parameters.Add("order_dir", order_dir); JSONdn res = user.callApi("push/log", parameters); if (!res.has("count")) { throw new ApiException("No count in the response"); } PushLog retval = new PushLog(res.getIntVal("count")); if (!res.has("log_entries") && retval.TotalCount > 0) { throw new ApiException("No log entries in the response"); } JToken[] children = res.getChildren("log_entries"); for (int i = 0; i < children.Length; i++) { retval.Add(new PushLogEntry(new JSONdn(children[i]))); } return(retval); }
/// <summary> /// Constructor. /// </summary> /// <param name="data">The JSON API response.</param> public Dpu(JSONdn data) { m_dpu = new Dictionary <string, DpuItem>(); foreach (string key in data.getKeys("detail")) { DpuItem item = new DpuItem(data.getIntVal("detail." + key + ".count"), data.getDoubleVal("detail." + key + ".dpu")); if (data.has("detail." + key + ".targets")) { JToken t = data.getJVal("detail." + key + ".targets"); foreach (string targetkey in data.getKeys("detail." + key + ".targets")) { JSONdn t2 = new JSONdn(t[targetkey]); item.addTarget(targetkey, new DpuItem(t2.getIntVal("count"), t2.getDoubleVal("dpu"))); } } m_dpu.Add(key, item); } m_total = data.getDoubleVal("dpu"); }
/// <summary> /// Constructor. /// </summary> /// <param name="data">The JSON API response.</param> public Dpu(JSONdn data) { m_dpu = new Dictionary<string, DpuItem>(); foreach (string key in data.getKeys("detail")) { DpuItem item = new DpuItem(data.getIntVal("detail." + key + ".count"), data.getDoubleVal("detail." + key + ".dpu")); if (data.has("detail." + key + ".targets")) { JToken t = data.getJVal("detail." + key + ".targets"); foreach (string targetkey in data.getKeys("detail." + key + ".targets")) { JSONdn t2 = new JSONdn(t[targetkey]); item.addTarget(targetkey, new DpuItem(t2.getIntVal("count"), t2.getDoubleVal("dpu"))); } } m_dpu.Add(key, item); } m_total = data.getDoubleVal("dpu"); }
/// <summary> /// Initialise this object from teh data in a JSON object. /// </summary> /// <param name="data">The JSON object.</param> public void init(JSONdn data) { if (!data.has("id")) { throw new ApiException("No playback ID in the response"); } if (m_playback_id.Length > 0 && m_playback_id.CompareTo(data.getStringVal("id")) != 0) { throw new ApiException("Incorrect playback ID in the response"); } m_playback_id = data.getStringVal("id"); if (!data.has("definition_id")) { throw new ApiException("No definition hash in the response"); } m_stream_hash = data.getStringVal("definition_id"); if (!data.has("name")) { throw new ApiException("No name in the response"); } m_name = data.getStringVal("name"); if (!data.has("start")) { throw new ApiException("No start timestamp in the response"); } m_start_date = data.getDateTimeFromLongVal("start"); if (!data.has("end")) { throw new ApiException("No end timestamp in the response"); } m_end_date = data.getDateTimeFromLongVal("end"); if (!data.has("created_at")) { throw new ApiException("No created at timestamp in the response"); } m_created_at = data.getDateTimeFromLongVal("created_at"); if (!data.has("status")) { throw new ApiException("No status in the response"); } m_status = data.getStringVal("status"); if (!data.has("progress")) { throw new ApiException("No progress in the response"); } m_progress = data.getIntVal("progress"); if (!data.has("sources")) { throw new ApiException("No sources in the response"); } m_sources.Clear(); foreach (JToken source in data.getJVal("sources")) { m_sources.Add(source.ToString()); } if (!data.has("sample")) { throw new ApiException("No sample in the response"); } m_sample = data.getDoubleVal("sample"); }
/// <summary> /// Get a page of Push subscriptions in the given user's account, /// where each page contains up to per_page items. Results will be /// ordered according to the supplied ordering parameters. /// </summary> /// <param name="user">The user object making the request.</param> /// <param name="page">The page number to get.</param> /// <param name="per_page">The number of items per page.</param> /// <param name="order_by">The field by which to order the results.</param> /// <param name="order_dir">Ascending or descending.</param> /// <param name="include_finished">True to include subscriptions against finished Historics queries.</param> /// <param name="hash_type">Optional hash type to look for (hash is also required)</param> /// <param name="hash">Optional hash to look for (hash_type is also required)</param> /// <returns>A PushSubscriptionList object.</returns> public static PushSubscriptionList list(User user, int page, int per_page, string order_by = ORDERBY_CREATED_AT, string order_dir = ORDERDIR_ASC, bool include_finished = false, string hash_type = "", string hash = "") { Dictionary <string, string> parameters = new Dictionary <string, string>(); if (hash_type.Length > 0) { if (hash_type != "hash" && hash_type != "playback_id") { throw new InvalidDataException("Hash type is invalid"); } if (hash.Length == 0) { throw new InvalidDataException("Hash type given but the hash is empty"); } parameters.Add(hash_type, hash); } if (page < 1) { throw new InvalidDataException("The specified page number is invalid"); } if (per_page < 1) { throw new InvalidDataException("The specified per_page value is invalid"); } if (order_by != ORDERBY_ID && order_by != ORDERBY_CREATED_AT) { throw new InvalidDataException("The specified order_by is not supported"); } if (order_dir != ORDERDIR_ASC && order_dir != ORDERDIR_DESC) { throw new InvalidDataException("The specified order_dir is not supported"); } parameters.Add("page", page.ToString()); parameters.Add("per_page", per_page.ToString()); parameters.Add("order_by", order_by); parameters.Add("order_dir", order_dir); if (include_finished) { parameters.Add("include_finished", "1"); } JSONdn res = user.callApi("push/get", parameters); if (!res.has("count")) { throw new ApiException("No count in the response"); } PushSubscriptionList retval = new PushSubscriptionList(res.getIntVal("count")); if (!res.has("subscriptions") && retval.TotalCount > 0) { throw new ApiException("No subscriptions in the response"); } JToken[] children = res.getChildren("subscriptions"); for (int i = 0; i < children.Length; i++) { retval.Add(new PushSubscription(user, new JSONdn(children[i]))); } return(retval); }