public ResourceScopeSelection(IResourceScope resourceScope, bool isAuthorized) { Name = resourceScope.Name; Resource = resourceScope.Resource; Image = resourceScope.Image; IsAuthorized = isAuthorized; }
protected override void OnActivate() { Resources = GlobalResources.Subscope(); OnActivate(Resources); }
public static void ExportExcelFile([NotNull] this ResourceManager resourceManager, [NotNull] string filePath, [CanBeNull] IResourceScope scope, ExcelExportMode exportMode) { Contract.Requires(resourceManager != null); Contract.Requires(filePath != null); using (var package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook)) { Contract.Assume(package != null); var workbookPart = package.AddWorkbookPart(); Contract.Assume(workbookPart != null); if (exportMode == ExcelExportMode.MultipleSheets) { ExportToMultipleSheets(resourceManager, workbookPart, scope); } else { ExportToSingleSheet(workbookPart, scope ?? new FullScope(resourceManager.ResourceEntities)); } } }
private static IEnumerable <string> GetLanguageDataColumns(this ResourceTableEntry entry, IEnumerable <CultureKey> languages, IResourceScope scope) { Contract.Requires(entry != null); Contract.Requires(languages != null); return(languages.SelectMany(l => entry.GetLanguageDataColumns(l, scope))); }
/// <summary> /// Gets the text tables data lines. /// </summary> /// <param name="entity">The entity.</param> /// <param name="languages">The resource languages.</param> /// <param name="scope">The scope.</param> /// <returns> /// The data lines. /// </returns> private static IEnumerable <IEnumerable <string> > GetDataRows(this ResourceEntity entity, IEnumerable <CultureKey> languages, IResourceScope scope) { Contract.Requires(entity != null); Contract.Requires(languages != null); Contract.Ensures(Contract.Result <IEnumerable <IEnumerable <string> > >() != null); var entries = (scope != null) ? scope.Entries.Where(entry => entry.Container == entity) : entity.Entries; return(entries.Select(entry => entry.GetDataRow(languages, scope))); }
/// <summary> /// Gets the text tables header line as an enumerable so we can use it with "Concat". /// </summary> /// <param name="languages">The languages.</param> /// <param name="scope">The scope.</param> /// <returns> /// The header line. /// </returns> private static IEnumerable <IEnumerable <string> > GetHeaderRows(this IEnumerable <CultureKey> languages, IResourceScope scope) { Contract.Requires(languages != null); var languageColumnHeaders = languages.GetLanguageColumnHeaders(scope); yield return(_fixedColumnHeaders.Concat(languageColumnHeaders)); }
protected override void OnDeactivate(bool close, IResourceScope resources) { Apps = null; }
private static IEnumerable <string> GetLanguageDataColumns([NotNull] this ResourceTableEntry entry, [NotNull][ItemNotNull] IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope) { return(languages.SelectMany(l => entry.GetLanguageDataColumns(l, scope))); }
public ExportParameters(string fileName, IResourceScope scope) { FileName = fileName; Scope = scope; }
public AppsPageViewModel(IResourceScope scope) : base(scope) { }
protected PageViewModel(IResourceScope scope) { GlobalResources = scope; }
protected virtual void OnDeactivate(bool close, IResourceScope resources) { }
protected virtual void OnActivate(IResourceScope resources) { }
private static IEnumerable <IEnumerable <string> > GetDataRows([NotNull] this ResourceEntity entity, [NotNull][ItemNotNull] IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope) { var entries = scope?.Entries.Where(entry => entry.Container == entity) ?? entity.Entries; return(entries.Select(entry => entry.GetDataRow(languages, scope))); }
public HomePageViewModel(IResourceScope scope) : base(scope) { }
private static IEnumerable <string> GetDataRow([NotNull] this ResourceTableEntry entry, [NotNull][ItemNotNull] IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope) { return(new[] { entry.Key }.Concat(entry.GetLanguageDataColumns(languages, scope))); }
protected override ObservableCollection <TagViewModel> Convert(IObservable <TagViewModel> values, object parameter, IResourceScope manager) { var coll = new ObservableCollection <TagViewModel>(); values.Subscribe(x => coll.Add(x)).ManageUsing(manager); return(coll); }
private static void ExportToMultipleSheets([NotNull] ResourceManager resourceManager, [NotNull] WorkbookPart workbookPart, [CanBeNull] IResourceScope scope) { var entitiesQuery = GetMultipleSheetEntities(resourceManager); if (scope != null) { var entitiesInScope = scope.Entries.Select(entry => entry.Container).Distinct().ToArray(); entitiesQuery = entitiesQuery.Where(entity => entitiesInScope.Contains(entity.ResourceEntity)); } var entities = entitiesQuery.ToArray(); workbookPart.Workbook = new Workbook().AppendItem(entities.Aggregate(new Sheets(), (seed, item) => seed.AppendItem(item.CreateSheet()))); var dataAppender = new DataAppender(_fixedColumnHeaders.Length); foreach (var item in entities) { workbookPart .AddNewPart <WorksheetPart>(item.Id) // ReSharper disable once AssignNullToNotNullAttribute .Worksheet = new Worksheet() .AppendItem(item.GetDataRows(scope).Aggregate(new SheetData(), dataAppender.AppendRow)) .Protect(); } }
public ExportParameters([CanBeNull] string fileName, [CanBeNull] IResourceScope scope) { FileName = fileName; Scope = scope; }
private static IEnumerable <string> GetLanguageDataColumns(this ResourceTableEntry entry, CultureKey language, IResourceScope scope) { Contract.Requires(entry != null); Contract.Requires(language != null); if ((scope == null) || scope.Comments.Contains(language)) { yield return(entry.Comments.GetValue(language)); } if ((scope == null) || scope.Languages.Contains(language)) { yield return(entry.Values.GetValue(language)); } }
public static void ExportExcelFile([NotNull] this ResourceManager resourceManager, [NotNull] string filePath, [CanBeNull] IResourceScope scope, ExcelExportMode exportMode) { if (exportMode == ExcelExportMode.Text) { ExportToText(filePath, scope ?? new FullScope(resourceManager.ResourceEntities)); return; } using (var package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook)) { var workbookPart = package.AddWorkbookPart(); GeneratedCode.GeneratedClass.AddStylesToWorkbookPart(workbookPart); if (exportMode == ExcelExportMode.MultipleSheets) { ExportToMultipleSheets(resourceManager, workbookPart, scope); } else { ExportToSingleSheet(workbookPart, scope ?? new FullScope(resourceManager.ResourceEntities)); } } }
private static IEnumerable <string> GetLanguageColumnHeaders(this IEnumerable <CultureKey> languages, IResourceScope scope) { Contract.Requires(languages != null); return(languages.SelectMany(lang => lang.GetLanguageColumnHeaders(scope))); }
private static IEnumerable <string> GetLanguageDataColumns([NotNull] this ResourceTableEntry entry, [NotNull] CultureKey language, [CanBeNull] IResourceScope scope) { if ((scope == null) || scope.Comments.Contains(language)) { yield return(entry.Comments.GetValue(language) ?? string.Empty); } if ((scope == null) || scope.Languages.Contains(language)) { yield return(entry.Values.GetValue(language) ?? string.Empty); } }
/// <summary> /// Gets one text tables line as an array of columns. /// </summary> /// <param name="entry">The entry for which to generate the line.</param> /// <param name="languages">The resource languages.</param> /// <param name="scope">The scope.</param> /// <returns> /// The columns of this line. /// </returns> private static IEnumerable <string> GetDataRow(this ResourceTableEntry entry, IEnumerable <CultureKey> languages, IResourceScope scope) { Contract.Requires(entry != null); Contract.Requires(languages != null); return((new[] { entry.Key }).Concat(entry.GetLanguageDataColumns(languages, scope))); }
private static IEnumerable <IEnumerable <string> > GetHeaderRows([NotNull][ItemNotNull] this IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope) { var languageColumnHeaders = languages.GetLanguageColumnHeaders(scope); yield return(_fixedColumnHeaders.Concat(languageColumnHeaders)); }
private static void ExportToMultipleSheets(ResourceManager resourceManager, WorkbookPart workbookPart, IResourceScope scope) { Contract.Requires(resourceManager != null); Contract.Requires(workbookPart != null); var entitiesQuery = GetMultipleSheetEntities(resourceManager); if (scope != null) { var entitiesInScope = scope.Entries.Select(entry => entry.Container).Distinct().ToArray(); entitiesQuery = entitiesQuery.Where(entity => entitiesInScope.Contains(entity.ResourceEntity)); } var entities = entitiesQuery.ToArray(); workbookPart.Workbook = new Workbook().AppendItem(entities.Aggregate(new Sheets(), (seed, item) => seed.AppendItem(item.CreateSheet()))); foreach (var item in entities) { Contract.Assume(item != null); var worksheetPart = workbookPart.AddNewPart <WorksheetPart>(item.Id); Contract.Assume(worksheetPart != null); worksheetPart.Worksheet = new Worksheet().AppendItem(item.GetDataRows(scope).Aggregate(new SheetData(), AppendRow)); } }
private static IEnumerable <string> GetLanguageColumnHeaders([NotNull][ItemNotNull] this IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope) { return(languages.SelectMany(lang => lang.GetLanguageColumnHeaders(scope))); }
private static IEnumerable <string> GetLanguageColumnHeaders([NotNull] this CultureKey language, [CanBeNull] IResourceScope scope) { Contract.Requires(language != null); var cultureKeyName = language.ToString(); if ((scope == null) || scope.Comments.Contains(language)) { yield return(CommentHeaderPrefix + cultureKeyName); } if ((scope == null) || scope.Languages.Contains(language)) { yield return(cultureKeyName); } }
public HtmlRenderer(Configurations configurations, IResourceScope resourceScope, ILog log, IWebBrowser webBrowser, IHttpContentTypeToResourceTypeDictionary httpContentTypeToResourceTypeDictionary) { _webBrowser = webBrowser; _webBrowser.BeforeRequest += EnsureInternal; _webBrowser.BeforeResponse += CaptureNetworkTraffic; _objectDisposed = false; _takeScreenshot = false; Task EnsureInternal(object _, SessionEventArgs networkTraffic) { return(Task.Factory.StartNew(() => { Interlocked.Increment(ref _activeHttpTrafficCount); try { networkTraffic.HttpClient.Request.RequestUri = resourceScope.Localize(networkTraffic.HttpClient.Request.RequestUri); networkTraffic.HttpClient.Request.Host = networkTraffic.HttpClient.Request.RequestUri.Host; } finally { Interlocked.Decrement(ref _activeHttpTrafficCount); } }, _networkTrafficCts.Token, TaskCreationOptions.None, PriorityTaskScheduler.Highest)); } Task CaptureNetworkTraffic(object _, SessionEventArgs networkTraffic) { var parentUri = _webBrowser.CurrentUri; var request = networkTraffic.HttpClient.Request; var response = networkTraffic.HttpClient.Response; var uriBeingRendered = _resourceBeingRendered.Uri; return(Task.Factory.StartNew(() => { Interlocked.Increment(ref _activeHttpTrafficCount); try { if (request.Method.ToUpperInvariant() != "GET") { return; } if (TryFollowRedirects()) { return; } if (ParentUriWasFound()) { UpdateStatusCodeIfNotMatch(); TakeScreenshotIfNecessary(); return; } if (_resourceBeingRendered.StatusCode.IsWithinBrokenRange()) { return; } OnResourceCaptured?.Invoke(new Resource { ParentUri = parentUri, OriginalUrl = request.Url, Uri = request.RequestUri, StatusCode = (StatusCode)response.StatusCode, Size = response.ContentLength, ResourceType = httpContentTypeToResourceTypeDictionary[response.ContentType] }); } finally { Interlocked.Decrement(ref _activeHttpTrafficCount); } }, _networkTrafficCts.Token, TaskCreationOptions.None, PriorityTaskScheduler.Highest)); bool TryFollowRedirects() { if (response.StatusCode < 300 || 400 <= response.StatusCode) { return(false); } if (!response.Headers.Headers.TryGetValue("Location", out var locationHeader)) { return(false); } if (!Uri.TryCreate(locationHeader.Value, UriKind.RelativeOrAbsolute, out var redirectUri)) { return(false); } uriBeingRendered = redirectUri.IsAbsoluteUri ? redirectUri : new Uri(_resourceBeingRendered.Uri, redirectUri); return(true); } bool ParentUriWasFound() { var capturedUri = request.RequestUri; var bothSchemesAreNotEqual = !capturedUri.Scheme.Equals(uriBeingRendered.Scheme); var strictTransportSecurity = uriBeingRendered.Scheme == "http" && capturedUri.Scheme == "https"; if (bothSchemesAreNotEqual && !strictTransportSecurity) { return(false); } var capturedUriWithoutScheme = capturedUri.Host + capturedUri.PathAndQuery + capturedUri.Fragment; var uriBeingRenderedWithoutScheme = uriBeingRendered.Host + uriBeingRendered.PathAndQuery + uriBeingRendered.Fragment; return(capturedUriWithoutScheme.Equals(uriBeingRenderedWithoutScheme)); } void UpdateStatusCodeIfNotMatch() { if (response.StatusCode == (int)_resourceBeingRendered.StatusCode) { return; } var newStatusCode = response.StatusCode; var oldStatusCode = (int)_resourceBeingRendered.StatusCode; log.Info($"StatusCode changed from [{oldStatusCode}] to [{newStatusCode}] at [{_resourceBeingRendered.Uri}]"); _resourceBeingRendered.StatusCode = (StatusCode)response.StatusCode; } void TakeScreenshotIfNecessary() { if (_resourceBeingRendered.StatusCode.IsWithinBrokenRange() && configurations.TakeScreenshotEvidence) { _takeScreenshot = true; } } } }