Пример #1
0
        private async Task AddUrlAsync(string file, PageDefinition page, string canonicalUrl, DateTime?lastMod, PageDefinition.SiteMapPriorityEnum siteMapPriority, PageDefinition.ChangeFrequencyEnum changeFrequency)
        {
            if (!PagesFound.Contains(page.PageGuid)) // keep track of pages so we don't add it as a designed page in case it was dynamic
            {
                PagesFound.Add(page.PageGuid);
            }
            canonicalUrl = Manager.CurrentSite.MakeUrl(canonicalUrl, PagePageSecurity: page.PageSecurity);
            if (!ValidForSiteMap(page))
            {
                return;
            }
            string cf         = GetChangeFrequencyText(changeFrequency);
            float  prio       = GetPriority(siteMapPriority);
            var    w3clastMod = lastMod != null?string.Format("    <lastmod>{0}</lastmod>\r\n", XmlConvert.ToString((DateTime)lastMod, XmlDateTimeSerializationMode.Utc)) : "";

#if MVC6
            canonicalUrl = WebUtility.HtmlEncode(canonicalUrl);
#else
            canonicalUrl = AntiXssEncoder.XmlEncode(canonicalUrl);
#endif
            await FileSystem.FileSystemProvider.AppendAllTextAsync(file, string.Format(
                                                                       "  <url>\r\n" +
                                                                       "    <loc>{0}</loc>\r\n" +
                                                                       "{1}" +
                                                                       "    <changefreq>{2}</changefreq>\r\n" +
                                                                       "    <priority>{3}</priority>\r\n" +
                                                                       "  </url>\r\n", canonicalUrl, w3clastMod, cf, prio)
                                                                   );
        }
Пример #2
0
        private async Task AddUrlAsync(string file, PageDefinition page, BlogEntry blogEntry, string canonicalUrl, DateTime?lastMod)
        {
            if (!blogEntry.Published)
            {
                return;
            }
            if (blogEntry.DatePublished < DateTime.UtcNow.AddDays(-3))
            {
                return; // too old
            }
            canonicalUrl = Manager.CurrentSite.MakeUrl(canonicalUrl, PagePageSecurity: page.PageSecurity);
            if (!ValidForNewsSiteMap(page))
            {
                return;
            }
            foreach (LanguageData lang in MultiString.Languages)
            {
                string blogTitle, kwds, publishDate, blogCategory, langId;
                publishDate = XmlConvert.ToString(blogEntry.DatePublished, XmlDateTimeSerializationMode.Utc);
#if MVC6
                canonicalUrl = WebUtility.HtmlEncode(canonicalUrl);
                blogTitle    = WebUtility.HtmlEncode(blogEntry.Title[lang.Id]);
                kwds         = WebUtility.HtmlEncode(blogEntry.Keywords[lang.Id]);
                blogCategory = WebUtility.HtmlEncode((await blogEntry.GetCategoryAsync())[lang.Id]);
                langId       = WebUtility.HtmlEncode(lang.Id);
#else
                canonicalUrl = AntiXssEncoder.XmlEncode(canonicalUrl);
                blogTitle    = AntiXssEncoder.XmlEncode(blogEntry.Title[lang.Id]);
                kwds         = AntiXssEncoder.XmlEncode(blogEntry.Keywords[lang.Id]);
                blogCategory = AntiXssEncoder.XmlEncode((await blogEntry.GetCategoryAsync())[lang.Id]);
                langId       = AntiXssEncoder.XmlEncode(lang.Id);
#endif
                await FileSystem.FileSystemProvider.AppendAllTextAsync(file, string.Format(
                                                                           "  <url>\r\n" +
                                                                           "    <loc>{0}</loc>\r\n" +
                                                                           "    <news:news>\r\n" +
                                                                           "      <news:publication>\r\n" +
                                                                           "        <news:name>{1}</news:name>\r\n" +
                                                                           "        <news:language>{2}</news:language>\r\n" +
                                                                           "      </news:publication>\r\n" +
                                                                           "      <news:genres>Blog</news:genres>\r\n" +
                                                                           "      <news:publication_date>{3}</news:publication_date>\r\n" +
                                                                           "      <news:title>{4}</news:title>\r\n" +
                                                                           "      <news:keywords>{5}</news:keywords>\r\n" +
                                                                           "    </news:news>\r\n" +
                                                                           "  </url>\r\n", canonicalUrl, blogCategory, langId, publishDate, blogTitle, kwds
                                                                           ));
            }
        }
Пример #3
0
        public async Task <List <string> > TranslateAsync(string from, string to, List <string> strings)
        {
            if (strings.Count == 0)
            {
                return(new List <string>());
            }

            if (_token == null)
            {
                MSAuthentication auth = new MSAuthentication(_clientId);
                _token = await auth.GetAccessTokenAsync();
            }

            string      headerValue = "Bearer " + _token;
            string      uri         = "http://api.microsofttranslator.com/v2/Http.svc/TranslateArray";
            HtmlBuilder hb          = new HtmlBuilder();

            hb.Append("<TranslateArrayRequest>" +
                      "<AppId />" +
                      "<From>{0}</From>" +
                      "<Options>" +
                      "<Category xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                      "<ContentType xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\">text/plain</ContentType>" +
                      "<ReservedFlags xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                      "<State xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                      "<Uri xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                      "<User xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                      "</Options>" +
                      "<Texts>", from);
            foreach (string s in strings)
            {
                string encoded;
#if MVC6
                encoded = System.Net.WebUtility.HtmlEncode(s);
#else
                encoded = AntiXssEncoder.XmlEncode(s);
#endif
                hb.Append("<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">{0}</string>", encoded);
            }
            hb.Append("</Texts>" +
                      "<To>{0}</To>" +
                      "</TranslateArrayRequest>", to);

            // create the request
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Headers.Add("Authorization", headerValue);
            request.ContentType = "text/xml";
            request.Method      = "POST";

            using (System.IO.Stream stream = await request.GetRequestStreamAsync()) {
                byte[] arrBytes = System.Text.Encoding.UTF8.GetBytes(hb.ToString());
                await stream.WriteAsync(arrBytes, 0, arrBytes.Length);
            }

            // Get the response
            List <string> newStrings = new List <string>();
            WebResponse   response   = null;

            using (response = await request.GetResponseAsync()) {
                using (Stream stream = response.GetResponseStream()) {
                    using (StreamReader rdr = new StreamReader(stream, System.Text.Encoding.UTF8)) {
                        string strResponse = await rdr.ReadToEndAsync();

                        XDocument  doc = XDocument.Parse(strResponse);
                        XNamespace ns  = "http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2";
                        foreach (XElement xe in doc.Descendants(ns + "TranslateArrayResponse"))
                        {
                            foreach (var node in xe.Elements(ns + "TranslatedText"))
                            {
                                newStrings.Add(node.Value);
                            }
                        }
                    }
                }
            }
            return(newStrings);
        }
Пример #4
0
        protected void btn_xml_Click(object sender, EventArgs e)
        {
            String s = this.txt_1.Text;

            this.txt_2.Text = AntiXssEncoder.XmlEncode(s);
        }
Пример #5
0
        private void InitializeParameters(out string fetchXml, out QueryByAttribute query)
        {
            // merge the select parameters
            IOrderedDictionary parameters = QueryParameters.GetValues(_context, _owner);

            fetchXml = GetNonNullOrEmpty(
                parameters[_fetchXmlParameterName] as string,
                _owner.FetchXml);

            if (!string.IsNullOrEmpty(fetchXml))
            {
                IOrderedDictionary selectParameters = SelectParameters.GetValues(_context, _owner);

                // apply select parameters replacement to the FetchXml
                foreach (DictionaryEntry entry in selectParameters)
                {
                    if (entry.Key != null)
                    {
                        string key = entry.Key.ToString().Trim();

                        if (!key.StartsWith("@"))
                        {
                            key = "@" + key;
                        }

                        string value = "{0}".FormatWith(entry.Value);

                        if (Owner.EncodeParametersEnabled)
                        {
                            value = AntiXssEncoder.XmlEncode(value);
                        }

                        fetchXml = Regex.Replace(fetchXml, key, value, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
                    }
                }
            }

            // process the QueryByAttribute
            query = null;

            if (_owner.QueryByAttribute != null && !string.IsNullOrEmpty(_owner.QueryByAttribute.EntityName))
            {
                IOrderedDictionary selectParameters = SelectParameters.GetValues(_context, _owner);

                query            = new QueryByAttribute();
                query.EntityName = LookupParameter(selectParameters, _owner.QueryByAttribute.EntityName);
                query.Attributes.AddRange(CopyParameters(selectParameters, _owner.QueryByAttribute.Attributes));
                query.Values.AddRange(CopyParameters(selectParameters, _owner.QueryByAttribute.Values));

                if (_owner.QueryByAttribute.ColumnSet != null && _owner.QueryByAttribute.ColumnSet.Count > 0)
                {
                    // specify individual columns to load
                    query.ColumnSet = new ColumnSet(CopyParameters(selectParameters, _owner.QueryByAttribute.ColumnSet));
                }
                else
                {
                    // default to all columns
                    query.ColumnSet = new ColumnSet(true);
                }

                if (_owner.QueryByAttribute.Orders != null && _owner.QueryByAttribute.Orders.Count > 0)
                {
                    for (int i = 0; i < _owner.QueryByAttribute.Orders.Count; ++i)
                    {
                        OrderExpression order = new OrderExpression();
                        order.AttributeName = LookupParameter(selectParameters, _owner.QueryByAttribute.Orders[i].Value);

                        string orderText = LookupParameter(selectParameters, _owner.QueryByAttribute.Orders[i].Text);

                        if (orderText.StartsWith("desc", StringComparison.InvariantCultureIgnoreCase))
                        {
                            order.OrderType = OrderType.Descending;
                        }

                        query.Orders.Add(order);
                    }
                }

                // merge the select parameters
                string entityName = parameters[_entityNameParameterName] as string;

                if (!string.IsNullOrEmpty(entityName))
                {
                    query.EntityName = entityName;
                }

                // comma delimited
                string attributes = parameters[_attributesParameterName] as string;

                if (!string.IsNullOrEmpty(attributes))
                {
                    query.Attributes.Clear();
                    query.Attributes.AddRange(attributes.Split(','));
                }

                // comma delimited
                string values = parameters[_valuesParameterName] as string;

                if (!string.IsNullOrEmpty(values))
                {
                    query.Values.Clear();
                    query.Values.AddRange(values.Split(','));
                }

                // comma delimited
                string columnSet = parameters[_columnSetParameterName] as string;

                if (!string.IsNullOrEmpty(columnSet))
                {
                    if (string.Compare(columnSet, _allColumnsParameterValue, StringComparison.InvariantCultureIgnoreCase) == 0)
                    {
                        query.ColumnSet = new ColumnSet(true);
                    }
                    else
                    {
                        string[] parts = columnSet.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

                        if (parts.Length > 0)
                        {
                            for (int i = 0; i < parts.Length; i++)
                            {
                                parts[i] = parts[i].Trim();
                            }

                            query.ColumnSet.AddColumns(parts);
                        }
                        else
                        {
                            query.ColumnSet = new ColumnSet(true);
                        }
                    }
                }

                // comma delimited
                string orders = parameters[_ordersParameterName] as string;

                if (!string.IsNullOrEmpty(orders))
                {
                    QueryByAttribute queryByAttribute = query;
                    AppendSortExpressionToQuery(orders, order => queryByAttribute.Orders.Add(order));
                    query = queryByAttribute;
                }

                // all remaining parameters are treated as key/value pairs
                Dictionary <string, object> extendedParameters = new Dictionary <string, object>();

                if (query.Attributes != null)
                {
                    for (int i = 0; i < query.Attributes.Count; ++i)
                    {
                        extendedParameters[query.Attributes[i]] = query.Values[i];
                    }
                }

                bool changed = false;

                foreach (string key in parameters.Keys)
                {
                    // ignore special parameters
                    if (!Array.Exists(_keywords, delegate(string value) { return(string.Compare(value, key, StringComparison.InvariantCultureIgnoreCase) == 0); }))
                    {
                        extendedParameters[key] = parameters[key];
                        changed = true;
                    }
                }

                if (changed)
                {
                    query.Attributes.Clear();
                    query.Values.Clear();

                    int i = 0;
                    foreach (KeyValuePair <string, object> extendedParameter in extendedParameters)
                    {
                        query.Attributes[i] = extendedParameter.Key;
                        query.Values[i]     = extendedParameter.Value;
                        ++i;
                    }
                }
            }
        }