PageRenderTime 57ms CodeModel.GetById 33ms RepoModel.GetById 0ms app.codeStats 0ms

/WP7.1/Templates/VB/WPCloud.Mem/WindowsPhoneCloud.Web/Controllers/QueuesController.vb

#
Visual Basic | 112 lines | 78 code | 19 blank | 15 comment | 2 complexity | b02a53039cbcde21599f3adb75e022e1 MD5 | raw file
  1. ' ----------------------------------------------------------------------------------
  2. ' Microsoft Developer & Platform Evangelism
  3. '
  4. ' Copyright (c) Microsoft Corporation. All rights reserved.
  5. '
  6. ' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  7. ' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
  8. ' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  9. ' ----------------------------------------------------------------------------------
  10. ' The example companies, organizations, products, domain names,
  11. ' e-mail addresses, logos, people, places, and events depicted
  12. ' herein are fictitious. No association with any real company,
  13. ' organization, product, domain name, email address, logo, person,
  14. ' places, or events is intended or should be inferred.
  15. ' ----------------------------------------------------------------------------------
  16. Imports Microsoft.WindowsAzure.StorageClient
  17. Imports Microsoft.Samples.WindowsPhoneCloud.Web.UserAccountWrappers
  18. Imports Microsoft.Samples.WindowsPhoneCloud.Web.Models
  19. Imports Microsoft.Samples.WindowsPhoneCloud.Web.Infrastructure
  20. Imports System.Globalization
  21. Imports System.Collections.Generic
  22. Namespace Controllers
  23. Public Class QueuesController
  24. Inherits StorageItemController
  25. Private ReadOnly cloudQueueClient As CloudQueueClient
  26. #If ACS Then
  27. Private ReadOnly userRepository As IUserRepository
  28. Public Sub New()
  29. Me.New(Nothing, New UserTablesServiceContext(), New UserTablesServiceContext())
  30. End Sub
  31. <CLSCompliant(False)> _
  32. Public Sub New(ByVal cloudQueueClient As CloudQueueClient, ByVal userPrivilegesRepository As IUserPrivilegesRepository, ByVal userRepository As IUserRepository)
  33. MyBase.New(userPrivilegesRepository)
  34. If (GetStorageAccountFromConfigurationSetting() Is Nothing) AndAlso (cloudQueueClient Is Nothing) Then
  35. Throw New ArgumentNullException("cloudQueueClient", "Cloud Queue Client cannot be null if no configuration is loaded.")
  36. End If
  37. Me.cloudQueueClient = If(cloudQueueClient, GetStorageAccountFromConfigurationSetting().CreateCloudQueueClient())
  38. Me.userRepository = userRepository
  39. End Sub
  40. Public Function Index() As ActionResult
  41. Dim permissions = New List(Of StorageItemPermissionsModel)()
  42. Dim queues = Me.cloudQueueClient.ListQueues().Select(Function(q) q.Name)
  43. For Each queueName In queues
  44. Dim accessQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queueName, PrivilegeConstants.QueuePrivilegeSuffix)
  45. Dim publicQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queueName, PrivilegeConstants.PublicQueuePrivilegeSuffix)
  46. permissions.Add(New StorageItemPermissionsModel With {.StorageItemName = queueName, .IsPublic = Me.UserPrivilegesRepository.PublicPrivilegeExists(publicQueuePrivilege), .AllowedUserIds = Me.UserPrivilegesRepository.GetUsersWithPrivilege(accessQueuePrivilege).Select(Function(us) us.UserId)})
  47. Next queueName
  48. Me.ViewData("users") = Me.userRepository.GetAllUsers().Select(Function(user) New UserModel With {.UserName = user.Name, .UserId = user.UserId})
  49. Return Me.View(permissions)
  50. End Function
  51. #Else
  52. Private ReadOnly membershipService As IMembershipService
  53. Public Sub New()
  54. Me.New(Nothing, New UserTablesServiceContext(), New AccountMembershipService())
  55. End Sub
  56. <CLSCompliant(False)> _
  57. Public Sub New(ByVal cloudQueueClient As CloudQueueClient, ByVal userPrivilegesRepository As IUserPrivilegesRepository, ByVal membershipService As IMembershipService)
  58. MyBase.New(userPrivilegesRepository)
  59. If (GetStorageAccountFromConfigurationSetting() Is Nothing) AndAlso (cloudQueueClient Is Nothing) Then
  60. Throw New ArgumentNullException("cloudQueueClient", "Cloud Queue Client cannot be null if no configuration is loaded.")
  61. End If
  62. Me.cloudQueueClient = If(cloudQueueClient, GetStorageAccountFromConfigurationSetting().CreateCloudQueueClient())
  63. Me.membershipService = membershipService
  64. End Sub
  65. Public Function Index() As ActionResult
  66. Dim permissions = New List(Of StorageItemPermissionsModel)()
  67. Dim queues = Me.cloudQueueClient.ListQueues().Select(Function(q) q.Name)
  68. For Each queueName In queues
  69. Dim accessQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queueName, PrivilegeConstants.QueuePrivilegeSuffix)
  70. Dim publicQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queueName, PrivilegeConstants.PublicQueuePrivilegeSuffix)
  71. permissions.Add(New StorageItemPermissionsModel With {.StorageItemName = queueName, .IsPublic = Me.UserPrivilegesRepository.PublicPrivilegeExists(publicQueuePrivilege), .AllowedUserIds = Me.UserPrivilegesRepository.GetUsersWithPrivilege(accessQueuePrivilege).Select(Function(us) us.UserId)})
  72. Next queueName
  73. Me.ViewData("users") = Me.membershipService.GetAllUsers().Cast(Of MembershipUser)().Select(Function(user) New UserModel With {.UserName = user.UserName, .UserId = user.ProviderUserKey.ToString()})
  74. Return Me.View(permissions)
  75. End Function
  76. #End If
  77. <HttpPost()> _
  78. Public Sub AddQueuePermission(ByVal queue As String, ByVal userId As String)
  79. Dim accessQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queue, PrivilegeConstants.QueuePrivilegeSuffix)
  80. Me.AddPrivilegeToUser(userId, accessQueuePrivilege)
  81. End Sub
  82. <HttpPost()> _
  83. Public Sub RemoveQueuePermission(ByVal queue As String, ByVal userId As String)
  84. Dim accessQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queue, PrivilegeConstants.QueuePrivilegeSuffix)
  85. Me.RemovePrivilegeFromUser(userId, accessQueuePrivilege)
  86. End Sub
  87. <HttpPost()> _
  88. Public Sub SetQueuePublic(ByVal queue As String, ByVal isPublic As Boolean)
  89. Dim accessQueuePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", queue, PrivilegeConstants.PublicQueuePrivilegeSuffix)
  90. Me.SetPublicPrivilege(accessQueuePrivilege, isPublic)
  91. End Sub
  92. End Class
  93. End Namespace