public ResourceScopeSelection(IResourceScope resourceScope, bool isAuthorized)
 {
     Name = resourceScope.Name;
     Resource = resourceScope.Resource;
     Image = resourceScope.Image;
     IsAuthorized = isAuthorized;
 }
Ejemplo n.º 2
0
 protected override void OnActivate()
 {
     Resources = GlobalResources.Subscope();
     OnActivate(Resources);
 }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 10
0
 public AppsPageViewModel(IResourceScope scope) : base(scope)
 {
 }
Ejemplo n.º 11
0
 protected PageViewModel(IResourceScope scope)
 {
     GlobalResources = scope;
 }
Ejemplo n.º 12
0
 protected virtual void OnDeactivate(bool close, IResourceScope resources)
 {
 }
Ejemplo n.º 13
0
 protected virtual void OnActivate(IResourceScope resources)
 {
 }
Ejemplo n.º 14
0
        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)));
        }
Ejemplo n.º 15
0
 public HomePageViewModel(IResourceScope scope) : base(scope)
 {
 }
Ejemplo n.º 16
0
 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)));
 }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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();
            }
        }
Ejemplo n.º 19
0
 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));
            }
        }
Ejemplo n.º 21
0
        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)));
 }
Ejemplo n.º 23
0
        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)));
        }
Ejemplo n.º 25
0
        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));
            }
        }
Ejemplo n.º 27
0
 private static IEnumerable <string> GetLanguageColumnHeaders([NotNull][ItemNotNull] this IEnumerable <CultureKey> languages, [CanBeNull] IResourceScope scope)
 {
     return(languages.SelectMany(lang => lang.GetLanguageColumnHeaders(scope)));
 }
Ejemplo n.º 28
0
        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);
            }
        }
Ejemplo n.º 29
0
        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;
                    }
                }
            }
        }