protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (ContentType.SelectedIndex < 0) { int selectedIndex = 0; // Load contentType from session if it exists if (Session["contentType:SelectedIndex"] != null) { selectedIndex = (Int32)Session["contentType:SelectedIndex"]; } ContentType.SelectedIndex = selectedIndex; } ContentType.Attributes.Add("onchange", "savePageUrl();"); loadData( Request.Url.ToString(), BVContentType.ctFromBVStateKeyword(ContentType.SelectedValue) ); } else { // Special handling for hashfragment since it doesn't call ContentType_Changed on page refresh if (pageUrl.Value.Contains("#!")) { loadData( pageUrl.Value, BVContentType.ctFromBVStateKeyword(ContentType.SelectedValue) ); } } // Save selected contentType to session Session["contentType:SelectedIndex"] = ContentType.SelectedIndex; }
private String getPath(BVContentType contentType, BVSubjectType subjectType, String pageNumber, String subjectId, BVContentSubType contentSubType) { StringBuilder path = new StringBuilder(); path.Append(getRootFolder()); path.Append(PATH_SEPARATOR); path.Append(contentType.uriValue()); path.Append(PATH_SEPARATOR); path.Append(subjectType.uriValue()); path.Append(PATH_SEPARATOR); path.Append(pageNumber); path.Append(PATH_SEPARATOR); if (contentSubType != null && !contentSubType.getContentKeyword().Equals(BVContentSubType.NONE)) { path.Append(contentSubType.getContentKeyword()); path.Append(PATH_SEPARATOR); } path.Append(subjectId); path.Append(HTML_EXT); return(path.ToString()); }
protected void ContentType_Changed(object sender, EventArgs e) { if (ContentType.SelectedIndex >= 0) { loadData( (pageUrl.Value.Length > 0)? pageUrl.Value : Request.Url.ToString(), BVContentType.ctFromBVStateKeyword(ContentType.SelectedValue) ); } }
// bvpage is present here to have back compatability support if some sites private Uri c2013Uri() { BVContentType contentType = null; BVSubjectType subjectType = null; String subjectId = null; NameValueCollection parameters = HttpUtility.ParseQueryString(_queryString, Encoding.UTF8); for (int i = 0; i < parameters.Count; i++) { if (parameters.Keys[i] != null && parameters.Keys[i].Equals(BV_PAGE)) { string[] tokens = parameters[parameters.Keys[i]].Split('/'); foreach (string token in tokens) { if (token.StartsWith("pg") && !IsValidPageNumber(bvParameters.PageNumber)) { bvParameters.PageNumber = getValue(token); } else if (token.StartsWith("ct")) { contentType = new BVContentType(BVContentType.ctFromKeyWord(getValue(token))); } else if (token.StartsWith("st")) { subjectType = new BVSubjectType(BVSubjectType.subjectType(getValue(token))); } else if (token.StartsWith("id")) { subjectId = getValue(token); } } } } contentType = (contentType == null) ? bvParameters.ContentType : contentType; subjectType = (subjectType == null) ? bvParameters.SubjectType : subjectType; subjectId = (String.IsNullOrEmpty(subjectId)) ? bvParameters.SubjectId : subjectId; if (!IsValidPageNumber(bvParameters.PageNumber)) { bvParameters.PageNumber = NUM_ONE_STR; } String path = getPath(contentType, subjectType, bvParameters.PageNumber, subjectId, bvParameters.ContentSubType); if (isContentFromFile()) { return(fileUri(path)); } return(httpUri(path)); }
private void loadData(String baseUrl) { loadData( baseUrl, BVContentType.ctFromBVStateKeyword(ContentType1.SelectedValue), 1, BVRRSummaryContainer1, BVRRContainer1, BVContent1 ); loadData( baseUrl, BVContentType.ctFromBVStateKeyword(ContentType2.SelectedValue), 2, BVRRSummaryContainer2, BVRRContainer2, BVContent2 ); }
private Uri bvstateUri(String queryString) { BVContentType contentType = null; BVSubjectType subjectType = null; String subjectId = null; String pageNumber = null; NameValueCollection parameters = HttpUtility.ParseQueryString( queryString, Encoding.UTF8 ); for (int i = 0; i < parameters.Count; i++) { if ( parameters.Keys[i] != null && parameters.Keys[i].Equals(BV_STATE) ) { string[] tokens = parameters[parameters.Keys[i]].Split(BVConstant.BVSTATE_TOKEN_SEPARATOR_CHAR); foreach (string token in tokens) { if (token.StartsWith("pg")) { pageNumber = extractValue(token); } else if (token.StartsWith("ct")) { String ctFromKeyword = BVContentType.ctFromBVStateKeyword( extractValue(token) ); // Ignore invalid contentTypes if (ctFromKeyword != null) { contentType = new BVContentType( ctFromKeyword ); } } else if (token.StartsWith("st")) { subjectType = new BVSubjectType( extractValue(token) ); } else if (token.StartsWith("id")) { subjectId = extractValue(token); } } } } if ( // Ignore bvstate if ContentType is Missing contentType == null || // Ignore bvstate if contentType doesn't match bvParameters contentType ( bvParameters.ContentType != null && // contentType is created only if we have a valid contentType !contentType.getContentType().Equals( bvParameters.ContentType.getContentType(), StringComparison.OrdinalIgnoreCase ) ) ) { // when no uri is returned, it falls back to legacy seo parameters return(null); } // Defaulting logic if no subjectType is provided if (subjectType == null) { if ( contentType.getContentType().Equals( BVContentType.SPOTLIGHTS, StringComparison.OrdinalIgnoreCase ) ) { subjectType = new BVSubjectType(BVSubjectType.CATEGORY); } else { subjectType = new BVSubjectType(BVSubjectType.PRODUCT); } } subjectId = (String.IsNullOrEmpty(subjectId)) ? bvParameters.SubjectId : subjectId; bvParameters.SubjectId = subjectId; if (!IsValidPageNumber(pageNumber)) { pageNumber = NUM_ONE_STR; } bvParameters.PageNumber = pageNumber; String path = getPath( contentType, subjectType, bvParameters.PageNumber, subjectId, bvParameters.ContentSubType ); if (isContentFromFile()) { return(fileUri(path)); } return(httpUri(path)); }
public String getSeoWithSdk(HttpRequest request) { BVConfiguration bvConfig = new BVSdkConfiguration(); bvConfig.addProperty(BVClientConfig.CLOUD_KEY, _seoKey); bvConfig.addProperty(BVClientConfig.BV_ROOT_FOLDER, _deploymentZoneId); if (_botDetection) { bvConfig.addProperty(BVClientConfig.BOT_DETECTION, "true"); } else { bvConfig.addProperty(BVClientConfig.BOT_DETECTION, "false"); } if (!string.IsNullOrEmpty(_botRegexString)) { bvConfig.addProperty(BVClientConfig.CRAWLER_AGENT_PATTERN, _botRegexString); } bvConfig.addProperty(BVClientConfig.EXECUTION_TIMEOUT, _timeoutMs.ToString()); if (_staging) { bvConfig.addProperty(BVClientConfig.STAGING, "true"); } else { bvConfig.addProperty(BVClientConfig.STAGING, "false"); } if (_includeDisplayIntegrationCode) { bvConfig.addProperty(BVClientConfig.INCLUDE_DISPLAY_INTEGRATION_CODE, "true"); } else { bvConfig.addProperty(BVClientConfig.INCLUDE_DISPLAY_INTEGRATION_CODE, "false"); } if (!string.IsNullOrEmpty(_internalFilePath)) { bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "true"); bvConfig.addProperty(BVClientConfig.LOCAL_SEO_FILE_ROOT, _internalFilePath); } else { bvConfig.addProperty(BVClientConfig.LOAD_SEO_FILES_LOCALLY, "false"); } String subjectID = _productId; if (string.IsNullOrEmpty(_pageUrl)) { _pageUrl = request.Url.ToString(); } if (String.IsNullOrEmpty(_userAgent)) { _userAgent = request.UserAgent; } BVContentType _contentType = new BVContentType(BVContentType.REVIEWS); if (!string.IsNullOrEmpty(_bvProduct)) { switch (_bvProduct) { case "reviews": _contentType = new BVContentType(BVContentType.REVIEWS); break; case "questions": _contentType = new BVContentType(BVContentType.QUESTIONS); break; case "stories": _contentType = new BVContentType(BVContentType.STORIES); break; } } BVSubjectType _subjectType = new BVSubjectType(BVSubjectType.PRODUCT); if (!string.IsNullOrEmpty(_productOrCategory)) { switch (_productOrCategory) { case "product": _subjectType = new BVSubjectType(BVSubjectType.PRODUCT); break; case "category": _subjectType = new BVSubjectType(BVSubjectType.CATEGORY); break; case "entry": _subjectType = new BVSubjectType(BVSubjectType.ENTRY); break; case "detail": _subjectType = new BVSubjectType(BVSubjectType.DETAIL); break; } } BVParameters bvParam = new BVParameters(); bvParam.UserAgent = _userAgent; bvParam.BaseURI = _pageUrl.Contains("?") ? _pageUrl.Substring(0, _pageUrl.IndexOf("?")) : _pageUrl; bvParam.PageURI = _pageUrl; bvParam.ContentType = _contentType; bvParam.SubjectType = _subjectType; bvParam.SubjectId = subjectID; BVUIContent bvOutput = new BVManagedUIContent(bvConfig); String outputContent = bvOutput.getContent(bvParam); return(outputContent); }