private void StorageTest() { try { _outputMessage.Append("Testing Storage Account "); var acct = WutStorage.GetStorageAccount(); _outputMessage.AppendFormat("\"{0}\"", acct.Credentials.AccountName).AppendLine(); var blobClient = acct.CreateCloudBlobClient(); var qClient = WutQueue.GetQueueClient(); var q = WutQueue.GetQueue(qClient, Settings.AuditQueueName); var props = WutStorage.GetCurrentProperties(blobClient); _outputMessage.AppendFormat(" Current Queue Count: {0}", q.ApproximateMessageCount).AppendLine(); _outputMessage.AppendFormat("<blockquote>{0}</blockquote>", WutStorage.GetFormattedServiceProperties(props)).AppendLine(); } catch (Exception ex) { _bOk = false; AppendError(" Azure Storage: unknown error - ", _outputMessage, ex); } _outputMessage.AppendLine(""); }
//public CopyUtilController(WutCache cache, WutNuContext models) //{ //} private CloudBlobContainer GetContainer() { //I don't like this but I couldn't assign in ctor because the filter is authenticating me var sContainer = User.Identity.GetClaim(CustomClaimTypes.ObjectIdentifier); return(WutStorage.GetContainer(sContainer)); }
/// <summary> /// Processes the request. /// </summary> /// <param name="context">The context.</param> public void ProcessRequest(HttpContext context) { string contentType; string name = context.Request.Url.AbsolutePath.Replace("/reportengine/", ""); Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(Settings.StorageConnectionString); byte[] data; if (!Settings.LocalReports) { //BlobBusinessLayer blobBusinessLayer = new BlobBusinessLayer(new HttpContextWrapper(context)); var container = WutStorage.GetContainer("reports"); var blobFile = WutStorage.GetBlob(container, name); data = new byte[blobFile.Properties.Length]; contentType = blobFile.Properties.ContentType; blobFile.DownloadToByteArray(data, 0); } else { var filepath = context.Server.MapPath("/reportslocal/") + name; var file = File.Open(filepath, FileMode.Open); data = new byte[file.Length]; file.Read(data, 0, (int)file.Length); contentType = (Path.GetExtension(filepath) == ".cshtml") ? "text/html" : "application/octet-stream"; } context.Response.ContentType = contentType; context.Response.BinaryWrite(data); context.Response.Flush(); }
/// <summary> /// When overridden in a derived class, returns a read-only stream to the virtual resource. /// </summary> /// <returns>A read-only stream to the virtual file.</returns> public override Stream Open() { byte[] data; var fileName = VirtualPathUtility.GetFileName(_path); try { var context = HttpContext.Current; if (!Settings.LocalReports) { var container = WutStorage.GetContainer("reports"); var blobFile = (CloudBlockBlob)WutStorage.GetBlob(container, fileName); blobFile.FetchAttributes(); data = new byte[blobFile.Properties.Length]; blobFile.DownloadToByteArray(data, 0); } else { var filepath = context.Server.MapPath("/reportslocal/") + fileName; using (var file = File.Open(filepath, FileMode.Open)) { data = new byte[file.Length]; file.Read(data, 0, (int)file.Length); file.Close(); } } return(new MemoryStream(data)); } catch (Exception ex) { var msg = String.Format("Error retrieving {0} from {1}", fileName, ((!Settings.LocalReports) ? "blob" : "local storage")); throw new Exception(msg, ex); } }
private WutLinkPoco GenToken(WutLinkPoco res) { var containerName = GetContainerFromUri(res.RealUrl); var container = WutStorage.GetContainer(containerName); res.RealUrl = WutStorage.GetBlobReadTokenUri(container, System.IO.Path.GetFileName(res.RealUrl)); return(res); }
public HttpResponseMessage DeleteBlob(string path) { var deleted = WutStorage.DeleteBlob(GetContainer(), path); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, GetList()); response.Headers.Add("FileDeleted", deleted.ToString()); return(response); }
public HttpResponseMessage GetDownloadToken(string path) { var uri = WutStorage.GetBlobReadTokenUri(GetContainer(), path); //creating implicit response object to force returning a plain string var res = new HttpResponseMessage(HttpStatusCode.OK); res.Content = new StringContent(uri, System.Text.Encoding.UTF8, "text/plain"); return(res); }
//public string GetUploadSAS(FilePoco poco) public HttpResponseMessage GetUploadSAS(string bloburi, string _method, string qqtimestamp) { var container = WutStorage.GetContainer(containerName); var uri = WutStorage.GetBlobWriteTokenUri(container, bloburi); //creating implicit response object to force returning a plain string var res = new HttpResponseMessage(HttpStatusCode.OK); res.Content = new StringContent(uri, System.Text.Encoding.UTF8, "text/plain"); return(res); }
public HttpResponseMessage DeleteBlob(FilePoco file) { var container = WutStorage.GetContainer(containerName); var filePart = file.bloburi.Split(new string[] { containerName }, StringSplitOptions.None); if (filePart.Length != 2) { throw new Exception("File not found or access denied."); } var deleted = WutStorage.DeleteBlob(container, HttpUtility.UrlDecode(filePart[1])); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, WutStorage.GetBlobs(container)); response.Headers.Add("FileDeleted", deleted.ToString()); return(response); }
public static void InitBlobReports() { if (!Settings.LocalReports) { //running in Azure, confirm blob reports have been //initialized var container = WutStorage.GetContainer("reports"); if (container.ListBlobs().Count() > 0) { return; } //file wasn't there, need to copy them all up var filepath = Settings.AppRootPath + "/reportslocal/"; var files = Directory.EnumerateFiles(filepath); foreach (var file in files) { WutStorage.AddBlob(container, file); } } }
public IEnumerable <IListBlobItem> GetFiles() { var container = WutStorage.GetContainer(containerName); return(WutStorage.GetBlobs(container)); }
protected void Application_Start() { try { SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin")); //Registration ControllerBuilder.Current.DefaultNamespaces.Add("Wutnu.Controllers"); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AntiForgeryConfig.UniqueClaimTypeIdentifier = CustomClaimTypes.ObjectIdentifier; Cache.RedisConnectionString = ConfigurationManager.AppSettings["RedisConnection"]; Cache.RedisUrlDBNum = Convert.ToInt32(ConfigurationManager.AppSettings["RedisUrlDBNum"]); Cache.RedisUserDBNum = Convert.ToInt32(ConfigurationManager.AppSettings["RedisUserDBNum"]); //IoC var builder = new ContainerBuilder(); builder.Register(c => new WutNuContext()) .AsSelf() .InstancePerRequest(); builder.Register(c => new WutCache(c.Resolve <WutNuContext>())) .AsSelf() .InstancePerRequest(); builder.RegisterControllers(typeof(MvcApplication).Assembly); builder.RegisterApiControllers(typeof(MvcApplication).Assembly); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container); //Settings Settings.Setup(ConfigurationManager.AppSettings); var domainName = ConfigurationManager.AppSettings["ida:RedirectUri"] + "/"; Startup.RedirectUri = domainName; WutStorage.ALLOWED_CORS_ORIGINS = new List <string> { ConfigurationManager.AppSettings["ida:RedirectUri"] }; var ConfigStorageCors = Convert.ToBoolean(ConfigurationManager.AppSettings["ConfigStorageCors"]); bool forceConfig = true; if (ConfigStorageCors) { WutStorage.ConfigureCors(forceConfig); } Utils.ApplicationName = "Wut?"; AADGraph.GraphToken = ConfigurationManager.AppSettings["B2BGraphKey"]; AADGraph.ClientId = ConfigurationManager.AppSettings["ida:ClientIdB2B"]; AADGraph.TenantName = ConfigurationManager.AppSettings["ida:TenantB2B"]; AADGraph.LoadGroups(); //BlobCopy zip init BlobCopyZip.InitZip(Settings.AppRootPath); //Ensure cloud reports have initialized in blob storage ReportManager.InitBlobReports(); //VPP System.Web.Hosting.HostingEnvironment.RegisterVirtualPathProvider(new WutVirtualPathProvider()); } catch (Exception ex) { Logging.WriteToAppLog("Error during application startup", System.Diagnostics.EventLogEntryType.Error, ex); } }
public IEnumerable <IListBlobItem> GetList() { return(WutStorage.GetBlobs(GetContainer())); }