private decimal CalculateProgressiveTax(int income) { var tax = new Progressive(); tax.Calculate(income); return(tax.Result); }
/// <summary> /// Gets the hash code /// </summary> /// <returns>Hash code</returns> public override int GetHashCode() { unchecked // Overflow is fine, just wrap { int hashCode = 41; if (FileId != null) { hashCode = hashCode * 59 + FileId.GetHashCode(); } if (PageRange != null) { hashCode = hashCode * 59 + PageRange.GetHashCode(); } hashCode = hashCode * 59 + Quality.GetHashCode(); hashCode = hashCode * 59 + Progressive.GetHashCode(); hashCode = hashCode * 59 + Resolution.GetHashCode(); hashCode = hashCode * 59 + RenderFormFields.GetHashCode(); hashCode = hashCode * 59 + KeepRasterPDFResolution.GetHashCode(); return(hashCode); } }
/// <summary> /// Returns true if PdfSaveAsJPEGParameters instances are equal /// </summary> /// <param name="input">Instance of PdfSaveAsJPEGParameters to be compared</param> /// <returns>Boolean</returns> public bool Equals(PdfSaveAsJPEGParameters input) { if (input == null) { return(false); } return (( FileId == input.FileId || (FileId != null && FileId.Equals(input.FileId)) ) && ( PageRange == input.PageRange || (PageRange != null && PageRange.Equals(input.PageRange)) ) && ( Quality == input.Quality || Quality.Equals(input.Quality) ) && ( Progressive == input.Progressive || Progressive.Equals(input.Progressive) ) && ( Resolution == input.Resolution || Resolution.Equals(input.Resolution) ) && ( RenderFormFields == input.RenderFormFields || RenderFormFields.Equals(input.RenderFormFields) ) && ( KeepRasterPDFResolution == input.KeepRasterPDFResolution || KeepRasterPDFResolution.Equals(input.KeepRasterPDFResolution) )); }
public void Setup() { var progressive = new Progressive(); progressive.ProgressTax.Add(new ProgressTaxTable { Rate = 0.10, FromAmount = 0, ToAmount = "8350" }); progressive.ProgressTax.Add(new ProgressTaxTable { Rate = 0.20, FromAmount = 8351, ToAmount = "33950" }); iOptionsMock.SetupGet(a => a.Value).Returns(new TaxOptionSet() { FlatRate = new FlatRate { Percentage = 0.175 }, FlatValue = new FlatValue { FixedAmount = 10000, LowestBracket = new LowestBracket { Percentage = 0.05, Amount = 200000 } }, Progressive = progressive }); var taxCalculatorTypes = new List <TaxCalculatorTypeTable>(); taxCalculatorTypes.Add(new TaxCalculatorTypeTable { PostalCode = "7441", TaxCalculationType = "Progressive" }); taxCalculatorTypes.Add(new TaxCalculatorTypeTable { PostalCode = "A100", TaxCalculationType = "Flat Value" }); taxCalculatorTypes.Add(new TaxCalculatorTypeTable { PostalCode = "7000", TaxCalculationType = "Flat Rate" }); taxCalculationTypeOptionMock.SetupGet(a => a.Value).Returns(new TaxCalculationTypeOptionSet() { TaxCalculatorTypes = taxCalculatorTypes }); }
/// <summary> /// This utility method downloads the video as an byte array. /// </summary> /// <param name="configuration">The configuration.</param> /// <param name="videoQuality">The video quality.</param> /// <returns>Task<System.Byte[]>.</returns> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="VimeoDownloader.VimeoException"></exception> private static async Task <byte[]> DownloadByteArray(Configuration configuration, VideoQuality videoQuality) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } byte[] data; using (var client = new HttpClient()) { Progressive progressive = configuration.GetProgressive(videoQuality); if (progressive == null) { throw new VimeoException($"The requested video is not available in this quality {videoQuality}"); } data = await client.GetByteArrayAsync(progressive.Url); } return(await Task.FromResult <byte[]>(data)); }
public Task UpdateAsync(IYellowPages yellowPages, Dictionary<string, string> yellowPagesParameter, Progressive.Peercast4Net.Datas.UpdateParameter parameter, IProgress<string> progress) { return service.UpdateAsync(Peercast, externalYellowPagesList, yellowPages, yellowPagesParameter, parameter, progress) .ContinueWith(t => { if (t.IsFaulted) throw t.Exception; Channel = ChannelDxo.ToChannel(t.Result); ChannelStatusChanged(this, new ChannelStatusChangedEventArgs(Channel)); // プラグイン処理 plugins.OnUpdateAsync(t.Result); }); }
public void Interrupt(IYellowPages yellowPages, Progressive.PecaStarter5.Plugins.InterruptedParameter parameter) { timer.EndTimer(); plugins.OnInterruptedAsync(parameter); timer.BeginTimer(yellowPages, parameter.Id); }
public ProgressiveCalculator(IOptions <TaxOptionSet> options) { progressive = options.Value.Progressive; }
public static AkamaiFlowPlayerPluginClipDetails GetAkamaiProgressiveClipDetails_M3U8(int episodeId, int assetId, HttpRequestBase req, System.Security.Principal.IPrincipal thisUser, Progressive progressive, VideoQualityCdnReference? quality = null) { AkamaiFlowPlayerPluginClipDetails clipDetails = null; var offeringId = Helpers.GlobalConfig.offeringId; var videoUrl = string.Empty; var canPlay = false; var countryCode = Helpers.MyUtility.getCountry(req.GetUserHostAddressFromCloudflare()).getCode(); string uCountryCode = countryCode; var context = new IPTV2Entities(); var offering = context.Offerings.Find(offeringId); var episode = context.Episodes.Find(episodeId); var asset = context.Assets.Find(assetId); var cdnId = 2; // akamai's cdn id if (quality != null) cdnId = (int)quality; if ((episode != null) & (asset != null)) { clipDetails = new AkamaiFlowPlayerPluginClipDetails { EpisodeId = episodeId, AssetId = assetId, UserId = (thisUser.Identity.IsAuthenticated ? thisUser.Identity.Name : null) }; canPlay = clipDetails.IsFree = (episode.PreviewAssets.FirstOrDefault(a => a.AssetId == asset.AssetId) != null) | (episode.FreeAssets.FirstOrDefault(a => a.AssetId == asset.AssetId) != null); // check with anonymous default package var packageId = GlobalConfig.AnonymousDefaultPackageId; if (!canPlay) { canPlay = User.IsAssetEntitled(context, offeringId, packageId, episodeId, assetId, countryCode, RightsType.Online); } else { clipDetails.IsFree = true; } // check user's access rights if (!canPlay && thisUser.Identity.IsAuthenticated) { var user = context.Users.FirstOrDefault(u => u.UserId == new System.Guid(thisUser.Identity.Name)); if (user != null) { uCountryCode = user.CountryCode; // check access from default logged in user package packageId = Helpers.GlobalConfig.LoggedInDefaultPackageId; canPlay = User.IsAssetEntitled(context, offeringId, packageId, episodeId, assetId, countryCode, RightsType.Online); if (!canPlay) { // check if user has entitlements that can play the video //canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); if (GlobalConfig.IsTVERegionBlockingEnabled) { var userCountryCode = MyUtility.GetCountryCodeViaIp(); int GomsSubsidiaryId = 0; if (GlobalConfig.UseGomsSubsidiaryForTVECheck) GomsSubsidiaryId = ContextHelper.GetGomsSubsidiaryIdOfCountry(context, userCountryCode); else GomsSubsidiaryId = -1; //var GomsSubsidiaryId = ContextHelper.GetGomsSubsidiaryIdOfCountry(context, userCountryCode); var IncludePackageIds = MyUtility.StringToIntList(GlobalConfig.CanPlayIncludedPackageIds); var ExcludePackageIds = MyUtility.StringToIntList(GlobalConfig.CanPlayExcludedPackageIds); canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online, ExcludePackageIds, IncludePackageIds, userCountryCode, GomsSubsidiaryId); if (GlobalConfig.IsTVEIpCheckEnabled) { try { string ip = GlobalConfig.IpWhiteList; string[] IpAddresses = ip.Split(';'); //if (IpAddresses.Contains(req.GetUserHostAddressFromCloudflare())) canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); } catch (Exception e) { MyUtility.LogException(e, "AkamaiToken canPlay IP Whitelisting"); } } } else canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); } else { clipDetails.IsFree = true; } } } // get asset URL var assetCdn = asset.AssetCdns.FirstOrDefault(a => a.CdnId == cdnId); if (assetCdn != null) { var hlsPrefixPattern = GlobalConfig.hlsProgressivePrefixPattern; var hlsSuffixPattern = GlobalConfig.hlsProgressiveSuffixPattern; var zeriPrefixPattern = GlobalConfig.zeriProgressivePrefixPattern; var zeriSuffixPattern = GlobalConfig.zeriProgressiveSuffixPattern; var httpPrefixPatternMobile = GlobalConfig.httpProgressivePrefixPatternMobile; bool isIpad = IsIpad(req); bool isIos = IsIos(req); videoUrl = assetCdn.CdnReference.Replace(hlsPrefixPattern, String.Empty).Replace(hlsSuffixPattern, zeriSuffixPattern); var ProgressiveHDBitrate = GlobalConfig.PMDHDBitrate; var ProgressiveHighBitrate = GlobalConfig.PMDHighBitrate; var ProgressiveLowBitrate = GlobalConfig.PMDLowBitrate; try { var mp4capableObj = MyUtility.CheckIfMp4Compatible(req, episode.EpisodeId, "4.4"); if (mp4capableObj.UseMp4ForPlayback) { int platform = req.Browser.IsMobileDevice ? (int)Platform.Mobile : (int)Platform.Desktop; var bitrate = context.CountryBitrates.FirstOrDefault(c => String.Compare(uCountryCode, c.CountryCode, true) == 0 && c.Platform == platform); if (bitrate != null) { if (bitrate.ProgressiveHDBitrate != null) ProgressiveHDBitrate = String.Format("{0}", bitrate.ProgressiveHDBitrate); if (bitrate.ProgressiveHighBitrate != null) ProgressiveHighBitrate = String.Format("{0}", bitrate.ProgressiveHighBitrate); if (bitrate.ProgressiveLowBitrate != null) ProgressiveLowBitrate = String.Format("{0}", bitrate.ProgressiveLowBitrate); ; } } } catch (Exception) { } if (progressive == Progressive.High) { //videoUrl = videoUrl.Replace(",150000,300000,500000,800000,1000000,1300000,1500000,", GlobalConfig.PMDHighBitrate); // max 800Kbps //videoUrl = videoUrl.Replace(",300000,500000,800000,1000000,1300000,1500000,", GlobalConfig.PMDHighBitrate); // max 800Kbps if (episode.EpisodeId == GlobalConfig.JDCEpisodeId) videoUrl = ReplaceWithPMDBitRate(videoUrl, ProgressiveHDBitrate); else videoUrl = ReplaceWithPMDBitRate(videoUrl, ProgressiveHighBitrate); } else { //videoUrl = videoUrl.Replace(",150000,300000,500000,800000,1000000,1300000,1500000,", GlobalConfig.PMDLowBitrate); // max 500Kbps //videoUrl = videoUrl.Replace(",300000,500000,800000,1000000,1300000,1500000,", GlobalConfig.PMDLowBitrate); // max 500Kbps videoUrl = ReplaceWithPMDBitRate(videoUrl, ProgressiveLowBitrate); } string ipAddress = string.Empty; if (!req.IsLocal) ipAddress = req.GetUserHostAddressFromCloudflare(); int snippetStart = 0; int snippetEnd = 0; if (!canPlay) { if ((asset.SnippetStart != null) && (asset.SnippetEnd != null) && (asset.SnippetEnd > asset.SnippetStart)) { snippetStart = Convert.ToInt32(asset.SnippetStart.Value.TotalSeconds); snippetEnd = Convert.ToInt32(asset.SnippetEnd.Value.TotalSeconds); } else { snippetStart = 0; snippetEnd = GlobalConfig.snippetEnd; } clipDetails.PromptToSubscribe = true; } else { clipDetails.PromptToSubscribe = false; } clipDetails.SubClip = (snippetStart + snippetEnd > 0) ? new SubClip { Start = snippetStart, End = snippetEnd } : null; TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(GlobalConfig.AkamaiAddSeconds)); double unixTime = ts.TotalSeconds; var tokenConfig = new AkamaiTokenConfig(); tokenConfig.TokenAlgorithm = Algorithm.HMACSHA256; tokenConfig.StartTime = Convert.ToUInt32(unixTime); tokenConfig.Window = 300; tokenConfig.Key = Helpers.GlobalConfig.AkamaiTokenKey; tokenConfig.Acl = "/*"; tokenConfig.IP = ipAddress; tokenConfig.PreEscapeAcl = false; tokenConfig.IsUrl = false; tokenConfig.SessionID = string.Empty; tokenConfig.Payload = asset.AssetId.ToString() + ((clipDetails.SubClip == null) ? string.Empty : ":" + snippetStart.ToString() + ":" + snippetEnd.ToString()); tokenConfig.Salt = string.Empty; tokenConfig.FieldDelimiter = '~'; var token = AkamaiTokenGenerator.GenerateToken(tokenConfig); TimeSpan tsPMD = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)); if (!String.IsNullOrEmpty(videoUrl)) videoUrl = new AkamaiPMDTokenGenerator(videoUrl, (long)GlobalConfig.AkamaiPMDAddSeconds, GlobalConfig.PMDSalt, "", (long)ts.TotalSeconds, "").AuthUrl; //videoUrl += (videoUrl.IndexOf('?') > 0 ? "&" : "?") + "hdnea=" + token; if (isIos) //Apple devices if (clipDetails.SubClip != null) // isPreview videoUrl = String.Empty; if (!canPlay && (progressive == Progressive.High || progressive == Progressive.Low)) // If user is not entitled, and cannot play, remove PMDlink videoUrl = String.Empty; if (!String.IsNullOrEmpty(videoUrl)) { if (isIos) videoUrl = String.Format("{0}{1}", httpPrefixPatternMobile, videoUrl); else videoUrl = String.Format("{0}{1}", zeriPrefixPattern, videoUrl); } clipDetails.Url = videoUrl; } } return (clipDetails); }
public static AkamaiFlowPlayerPluginClipDetails GetAkamaiProgressiveViaAdaptiveClipDetails(int episodeId, int assetId, HttpRequestBase req, System.Security.Principal.IPrincipal thisUser, Progressive progressive, VideoQualityCdnReference? quality = null) { AkamaiFlowPlayerPluginClipDetails clipDetails = null; var offeringId = Helpers.GlobalConfig.offeringId; var videoUrl = string.Empty; var canPlay = false; var countryCode = Helpers.MyUtility.getCountry(req.GetUserHostAddressFromCloudflare()).getCode(); var context = new IPTV2Entities(); var offering = context.Offerings.Find(offeringId); var episode = context.Episodes.Find(episodeId); var asset = context.Assets.Find(assetId); var cdnId = 2; // akamai's cdn id if (quality != null) cdnId = (int)quality; if ((episode != null) & (asset != null)) { clipDetails = new AkamaiFlowPlayerPluginClipDetails { EpisodeId = episodeId, AssetId = assetId, UserId = (thisUser.Identity.IsAuthenticated ? thisUser.Identity.Name : null) }; canPlay = clipDetails.IsFree = (episode.PreviewAssets.FirstOrDefault(a => a.AssetId == asset.AssetId) != null) | (episode.FreeAssets.FirstOrDefault(a => a.AssetId == asset.AssetId) != null); // check with anonymous default package var packageId = GlobalConfig.AnonymousDefaultPackageId; if (!canPlay) { canPlay = User.IsAssetEntitled(context, offeringId, packageId, episodeId, assetId, countryCode, RightsType.Online); } else { clipDetails.IsFree = true; } // check user's access rights if (!canPlay && thisUser.Identity.IsAuthenticated) { var user = context.Users.FirstOrDefault(u => u.UserId == new System.Guid(thisUser.Identity.Name)); if (user != null) { // check access from default logged in user package packageId = Helpers.GlobalConfig.LoggedInDefaultPackageId; canPlay = User.IsAssetEntitled(context, offeringId, packageId, episodeId, assetId, countryCode, RightsType.Online); if (!canPlay) { // check if user has entitlements that can play the video //canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); if (GlobalConfig.IsTVERegionBlockingEnabled) { var userCountryCode = MyUtility.GetCountryCodeViaIp(); int GomsSubsidiaryId = 0; if (GlobalConfig.UseGomsSubsidiaryForTVECheck) GomsSubsidiaryId = ContextHelper.GetGomsSubsidiaryIdOfCountry(context, userCountryCode); else GomsSubsidiaryId = -1; //var GomsSubsidiaryId = ContextHelper.GetGomsSubsidiaryIdOfCountry(context, userCountryCode); var IncludePackageIds = MyUtility.StringToIntList(GlobalConfig.CanPlayIncludedPackageIds); var ExcludePackageIds = MyUtility.StringToIntList(GlobalConfig.CanPlayExcludedPackageIds); canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online, ExcludePackageIds, IncludePackageIds, userCountryCode, GomsSubsidiaryId); if (GlobalConfig.IsTVEIpCheckEnabled) { try { string ip = GlobalConfig.IpWhiteList; string[] IpAddresses = ip.Split(';'); if (IpAddresses.Contains(req.GetUserHostAddressFromCloudflare())) canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); } catch (Exception e) { MyUtility.LogException(e, "AkamaiToken canPlay IP Whitelisting"); } } } else canPlay = user.CanPlayVideo(offering, episode, asset, RightsType.Online); } else { clipDetails.IsFree = true; } } } // get asset URL var assetCdn = asset.AssetCdns.FirstOrDefault(a => a.CdnId == cdnId); if (assetCdn != null) { var hlsPrefixPattern = GlobalConfig.hlsPrefixPattern; var hlsSuffixPattern = GlobalConfig.hlsSuffixPattern; var zeriPrefixPattern = GlobalConfig.zeriPrefixPattern; var zeriSuffixPattern = GlobalConfig.zeriSuffixPattern; var httpPrefixPatternMobile = GlobalConfig.httpPrefixPatternMobile; bool isIpad = IsIpad(req); bool isIos = IsIos(req); if (isIos) { videoUrl = assetCdn.CdnReference.Replace(hlsPrefixPattern, httpPrefixPatternMobile); //string limitUrl = "b=-" + (isIpad ? "5000,1100" : "5000,700") + "-"; // iPad up to 1Mbps, iPhone/iPod up to 500Kbps //videoUrl = (videoUrl.EndsWith(".m3u8") ? "?" : "&") + limitUrl; if (isIpad) videoUrl = videoUrl.Replace(",1300000,1500000,", ","); // max 1Mbps else videoUrl = videoUrl.Replace(",800000,1000000,1300000,1500000,", ","); // max 500kbps } else { videoUrl = assetCdn.CdnReference.Replace(hlsPrefixPattern, zeriPrefixPattern).Replace(hlsSuffixPattern, zeriSuffixPattern); } //CHECK IF COUNTRY IS AU or NZ var ipCountryCode = MyUtility.GetCountryCodeViaIpAddressWithoutProxy(); if (String.Compare(ipCountryCode, "AU", true) == 0 || String.Compare(ipCountryCode, "NZ", true) == 0) videoUrl = videoUrl.Replace(",1300000,1500000,", ","); // max 1Mbps //END OF CHECK IF COUNTRY IS AU or NZ if (progressive == Progressive.High) { if (episode.EpisodeId == GlobalConfig.JDCEpisodeId) videoUrl = ReplaceWithPMDBitRate(videoUrl, String.Format(",{0},", GlobalConfig.PMDViaAdaptiveHDBitrate)); else videoUrl = ReplaceWithPMDBitRate(videoUrl, String.Format(",{0},", GlobalConfig.PMDViaAdaptiveHighBitrate)); } else { videoUrl = ReplaceWithPMDBitRate(videoUrl, String.Format(",{0},", GlobalConfig.PMDViaAdaptiveLowBitrate)); } // videoUrl = !isMobileUse ? assetCdn.CdnReference.Replace(hlsPrefixPattern, zeriPrefixPattern).Replace(hlsSuffixPattern, zeriSuffixPattern) : assetCdn.CdnReference.Replace(hlsPrefixPattern, httpPrefixPatternMobile); //videoUrl = assetCdn.CdnReference.Replace(hlsPrefixPattern, zeriPrefixPattern).Replace(hlsSuffixPattern, zeriSuffixPattern); string ipAddress = string.Empty; if (!req.IsLocal) ipAddress = req.GetUserHostAddressFromCloudflare(); int snippetStart = 0; int snippetEnd = 0; if (!canPlay) { if ((asset.SnippetStart != null) && (asset.SnippetEnd != null) && (asset.SnippetEnd > asset.SnippetStart)) { //DateTime baseTime = new DateTime(1900, 1, 1, 0, 0, 0); //DateTime startTime = new DateTime(1900, 1, 1, asset.SnippetStart.Value.Hours, asset.SnippetStart.Value.Minutes, asset.SnippetStart.Value.Seconds); //DateTime endTime = new DateTime(1900, 1, 1, asset.SnippetEnd.Value.Hours, asset.SnippetEnd.Value.Minutes, asset.SnippetEnd.Value.Seconds); //snippetStart = Convert.ToInt32(Microsoft.VisualBasic.DateAndTime.DateDiff(Microsoft.VisualBasic.DateInterval.Second, baseTime, startTime)); //snippetEnd = Convert.ToInt32(Microsoft.VisualBasic.DateAndTime.DateDiff(Microsoft.VisualBasic.DateInterval.Second, baseTime, endTime)); snippetStart = Convert.ToInt32(asset.SnippetStart.Value.TotalSeconds); snippetEnd = Convert.ToInt32(asset.SnippetEnd.Value.TotalSeconds); } else { snippetStart = 0; snippetEnd = GlobalConfig.snippetEnd; } clipDetails.PromptToSubscribe = true; // don't pass a URL if iOS, no preview yet // UNCOMMENT //if (isIos) // videoUrl = string.Empty; } else { clipDetails.PromptToSubscribe = false; } clipDetails.SubClip = (snippetStart + snippetEnd > 0) ? new SubClip { Start = snippetStart, End = snippetEnd } : null; TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(GlobalConfig.AkamaiAddSeconds)); double unixTime = ts.TotalSeconds; var tokenConfig = new AkamaiTokenConfig(); tokenConfig.TokenAlgorithm = Algorithm.HMACSHA256; tokenConfig.StartTime = Convert.ToUInt32(unixTime); tokenConfig.Window = 300; tokenConfig.Key = Helpers.GlobalConfig.AkamaiTokenKey; tokenConfig.Acl = "/*"; tokenConfig.IP = ipAddress; tokenConfig.PreEscapeAcl = false; tokenConfig.IsUrl = false; tokenConfig.SessionID = string.Empty; tokenConfig.Payload = asset.AssetId.ToString() + ((clipDetails.SubClip == null) ? string.Empty : ":" + snippetStart.ToString() + ":" + snippetEnd.ToString()); tokenConfig.Salt = string.Empty; tokenConfig.FieldDelimiter = '~'; var token = AkamaiTokenGenerator.GenerateToken(tokenConfig); if (!String.IsNullOrEmpty(videoUrl)) videoUrl += (videoUrl.IndexOf('?') > 0 ? "&" : "?") + "hdnea=" + token; if (isIos) //Apple devices if (clipDetails.SubClip != null) // isPreview videoUrl = String.Empty; clipDetails.Url = videoUrl; // clipDetails.PromptToSubscribe = (clipDetails != null); } } return (clipDetails); }