Example #1
0
        public static void RefreshDefaultViews(RefreshDefaultViewsOperation refreshDefaultViewsOperation)
        {
            Type type = Assembly.GetExecutingAssembly().GetType(refreshDefaultViewsOperation.TypeNameToRefresh);

            DefaultViewSupport.RefreshDefaultViews(refreshDefaultViewsOperation.ViewLocation, type);
        }
        private void HandleOwnerGetRequest(IContainerOwner containerOwner, HttpContext context, string contentPath)
        {
            //CloudBlob blob = StorageSupport.GetOwnerBlobReference(containerOwner, contentPath);

            // Read blob content to response.
            context.Response.Clear();
            try
            {
                string contentType = StorageSupport.GetMimeType(Path.GetExtension(contentPath));
                context.Response.ContentType = contentType;
                string prefixStrippedContent = contentPath; //contentPath.Substring(AuthDeveloperPrefixLen + GuidIDLen + 1);
                string fileName = Path.Combine(DeveloperWebRootFolder, prefixStrippedContent);

                //blob.FetchAttributes();
                var matches = defaultViewRegex.Matches(contentPath);
                if (matches.Count > 0)
                {
                    var                match = matches[0];
                    string             informationObjectType = match.Groups["typename"].Value;
                    string             objectID   = match.Groups["id"].Value;
                    Type               objectType = typeof(IInformationObject).Assembly.GetType(informationObjectType);
                    MethodInfo         retrieveFromDefaultLocation = objectType.GetMethod("RetrieveFromDefaultLocation");
                    IInformationObject iObject      = (IInformationObject)retrieveFromDefaultLocation.Invoke(null, new object[] { objectID, containerOwner });
                    string             templateName = DefaultViewSupport.GetDefaultStaticTemplateName(iObject);
                    foreach (string groupTemplateDirectory in DefaultViewSupport.FixedGroupSiteLocations)
                    {
                        string filesystemDirectory = Path.Combine(DeveloperWebRootFolder, groupTemplateDirectory);
                        string templateFileName    = Path.Combine(filesystemDirectory, templateName);
                        string templateContent;
                        try
                        {
                            templateContent = GetTemplateContent(templateFileName);
                        }
                        catch
                        {
                            continue;
                        }
                        string blobDirectory = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(contentPath)),
                                                            groupTemplateDirectory);
                        string templateBlobPath = Path.Combine(blobDirectory, templateName).Replace("\\", "/");
                        var    templateBlob     = StorageSupport.UploadOwnerBlobText(containerOwner, templateBlobPath,
                                                                                     templateContent,
                                                                                     StorageSupport.
                                                                                     InformationType_WebTemplateValue);
                    }
                    var blob = DefaultViewSupport.CreateDefaultViewRelativeToRequester(contentPath, iObject, containerOwner);
                    blob.DownloadToStream(context.Response.OutputStream);
                }
                else
                {
                    string templateContent = GetTemplateContent(fileName);
                    if (templateContent != null)
                    {
                        string templateBlobPath = Path.Combine("template", contentPath).Replace("\\", "/");
                        var    templateBlob     = StorageSupport.UploadOwnerBlobText(containerOwner, templateBlobPath,
                                                                                     templateContent,
                                                                                     StorageSupport.
                                                                                     InformationType_WebTemplateValue);
                        var targetBlob = StorageSupport.GetOwnerBlobReference(containerOwner, contentPath);
                        RenderWebSupport.RenderTemplateWithContentToBlob(templateBlob, targetBlob);
                        targetBlob.DownloadToStream(context.Response.OutputStream);
                        //List<RenderWebSupport.ContentItem> contentRoots = new List<RenderWebSupport.ContentItem>();
                        //string rendered = RenderWebSupport.RenderTemplateWithContentRoots(fixedContent, contentRoots); //RenderWebSupport.Ren
                        //context.Response.Output.Write(rendered);
                    }
                    else
                    {
                        if (File.Exists(fileName))
                        {
                            var fileStream = File.OpenRead(fileName);
                            fileStream.CopyTo(context.Response.OutputStream);
                            fileStream.Close();
                        }
                        else
                        {
                            var targetBlob = StorageSupport.GetOwnerBlobReference(containerOwner, contentPath);
                            targetBlob.DownloadToStream(context.Response.OutputStream);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                context.Response.Write(ex.ToString());
            }
            context.Response.End();
        }