示例#1
0
        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.TraceInformation("MSGorilla.Spider entry point called");

            CloudQueue    _queue   = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.SearchEngineSpider);
            SearchManager _manager = new SearchManager();

            while (true)
            {
                try
                {
                    CloudQueueMessage message = null;
                    while ((message = _queue.GetMessage()) == null)
                    {
                        Thread.Sleep(10000);
                    }

                    _queue.UpdateMessage(message,
                                         TimeSpan.FromSeconds(60.0), // Make it visible immediately.
                                         MessageUpdateFields.Visibility);

                    Message msg = JsonConvert.DeserializeObject <Message>(message.AsString);
                    //string content = (string)mess.Content;
                    //Message tweet = JsonConvert.DeserializeObject<Message>(content);

                    _manager.SpideMessage(msg);
                    _queue.DeleteMessage(message);
                }
                catch (Exception e)
                {
                    Trace.TraceError("Exception in worker role", e.StackTrace);
                }
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            CloudQueue    _queue   = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.SearchEngineSpider);
            SearchManager _manager = new SearchManager();

            var result = _manager.SearchMessage("woss user1");

            while (true)
            {
                try
                {
                    CloudQueueMessage message = null;
                    while ((message = _queue.GetMessage()) == null)
                    {
                        Thread.Sleep(10000);
                    }

                    _queue.UpdateMessage(message,
                                         TimeSpan.FromSeconds(60.0), // Make it visible immediately.
                                         MessageUpdateFields.Visibility);

                    Message msg = JsonConvert.DeserializeObject <Message>(message.AsString);

                    _manager.SpideMessage(msg);
                    //_queue.DeleteMessage(message);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception in worker role", e.StackTrace);
                }
            }
        }
示例#3
0
        public void OnExecute(string path)
        {
            var config = ConductorConfiguration.Load(path);

            Console.WriteLine($"Deleting {config.ResourceGroupName}...");
            AzureFactory.GetAzure().ResourceGroups.DeleteByName(config.ResourceGroupName);
        }
示例#4
0
 public ReplyManager()
 {
     _reply             = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Reply);
     _replyNotification = AzureFactory.GetTable(AzureFactory.MSGorillaTable.ReplyNotification);
     _replyArchive      = AzureFactory.GetTable(AzureFactory.MSGorillaTable.ReplyArchive);
     _userline          = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Userline);
     _accManager        = new AccountManager();
     _notifManager      = new NotifManager();
     _richMsgManager    = new RichMsgManager();
 }
示例#5
0
        public async Task Provision(ProvisionRequest request)
        {
            await Task.Yield();

            var subscriptionId = request.SubscriptionId;
            var accountId = request.AccountId;
            var authToken = request.AuthorizationToken;

            bool failure = false;
            request.Course.State = CourseState.Provisioning;
            context.UpdateCourse(request.Course);

            try
            {
                Regex alphaNumericWithPeriod = new Regex(@"[^a-z0-9\.-]", RegexOptions.IgnoreCase);
                //var groupName = String.Join(".", request.Course.Name, student.LastName, student.FirstName, student.MicrosoftId.Split('@').First());
                var groupName = String.Join(".", request.Course.Name, request.Course.Id.ToString());
                groupName = alphaNumericWithPeriod.Replace(groupName, String.Empty);

                var factory = new AzureFactory(subscriptionId, accountId.ToString(), authToken);
                var group = factory.Create<CreateResourceGroupFactory>().CreateGroup(groupName);
                var plan = factory.Create<CreateWebHostingPlanFactory>().CreateWebPlan(group, "Student-Web-Site");
                factory.Create<AssignUserToRoleFactory>().CreateAndAssignRoleForGroup(group, request.PrincipalOwnerId, "WebSite Contributor");

                foreach (var student in context.GetStudentsInCourse(request.Course))
                {
                    var webFactory = factory.Create<CreateWebSiteFactory>();
                    var site = webFactory.CreateWebSite(plan, group);
                    var publishProfile = webFactory.GetPublishingProfile(site, group);
                    context.AddWebSite(request.Course, student, new Models.WebSite()
                    {
                        WebSiteUri = new Uri("http://" + site.Properties.HostNames.First()),
                        FtpUri = new Uri(publishProfile.PublishUrl),
                        FtpUsername = publishProfile.UserName,
                        FtpPassword = publishProfile.UserPassword
                    });
                }
            }
            catch
            {
                failure = true;
                request.Course.State = CourseState.Failed;
                throw;
            }
            finally
            {
                if (!failure)
                {
                    request.Course.State = CourseState.Complete;
                }

                context.UpdateCourse(request.Course);
            }

        }
示例#6
0
        public int GetUserPostMessageCountByDateUtc(string userid, DateTime date)
        {
            CloudTable userline = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Userline).AzureTable;

            string query = TableQuery.GenerateFilterCondition(
                "PartitionKey",
                QueryComparisons.Equal,
                string.Format("{0}_{1}", userid, Utils.ToAzureStorageDayBasedString(date)));

            TableQuery tableQuery = new TableQuery().Where(query);

            int count = userline.ExecuteQuery(tableQuery).Count();

            Logger.Debug(string.Format("{0} post {1} messages in {2:yyyy-MM-dd}", userid, count, date.ToUniversalTime().Date));
            return(count);
        }
示例#7
0
        public StatisticsManager()
        {
            _homeline         = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Homeline);
            _userline         = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Userline);
            _eventline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.EventLine);
            _publicSquareLine = AzureFactory.GetTable(AzureFactory.MSGorillaTable.PublicSquareLine);
            _topicline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.TopicLine);
            _ownerline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.OwnerLine);
            _atline           = AzureFactory.GetTable(Azure.AzureFactory.MSGorillaTable.AtLine);
            _reply            = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Reply);

            _accManager     = new AccountManager();
            _attManager     = new AttachmentManager();
            _schemaManager  = new SchemaManager();
            _notifManager   = new NotifManager();
            _topicManager   = new TopicManager();
            _richMsgManager = new RichMsgManager();
        }
示例#8
0
        public override void Run()
        {
            Trace.TraceInformation("MSGorilla.MailDispatcher entry point called");

            _mailboxCache   = new MemoryCache("mailbox");
            _mailStoreCache = new MemoryCache("mailstore");
            _groupID2Name   = new Dictionary <string, string>();
            _topicManager   = new TopicManager();
            _groupManager   = new GroupManager();
            _accountManager = new AccountManager();
            _richMsgManager = new RichMsgManager();

            CloudQueue _queue = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.MailMessage);;

            while (true)
            {
                try
                {
                    CloudQueueMessage message = _queue.GetMessage();
                    while (message == null)
                    {
                        Thread.Sleep(1000);
                        message = _queue.GetMessage();
                    }
                    _queue.UpdateMessage(message,
                                         TimeSpan.FromSeconds(60.0 * 1), // Make it in five minutes
                                         MessageUpdateFields.Visibility);

                    Message msg = JsonConvert.DeserializeObject <Message>(message.AsString);

                    DispatchMail(msg);

                    _queue.DeleteMessage(message);
                }
                catch (Exception e)
                {
                    Trace.TraceError("Exception in worker role", e.StackTrace);
                }
            }
        }
示例#9
0
        public int GetTotalRobotMessageCountByDateUtc(DateTime date)
        {
            int           count   = 0;
            List <string> robitID = GetCurrentRobotID();

            CloudTable userline = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Userline).AzureTable;

            foreach (string userid in robitID)
            {
                try
                {
                    count += GetUserPostMessageCountByDateUtc(userid, date);
                }
                catch (Exception e)
                {
                    Logger.Error(e.ToString());
                }
            }

            Logger.Info(string.Format("Robots posted {0} messages totally in {1:yyyy-MM-dd}", count, date.ToUniversalTime()));
            return(count);
        }
示例#10
0
        public MessageManager()
        {
            _homeline         = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Homeline);
            _userline         = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Userline);
            _eventline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.EventLine);
            _publicSquareLine = AzureFactory.GetTable(AzureFactory.MSGorillaTable.PublicSquareLine);
            _topicline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.TopicLine);
            _ownerline        = AzureFactory.GetTable(AzureFactory.MSGorillaTable.OwnerLine);
            _atline           = AzureFactory.GetTable(Azure.AzureFactory.MSGorillaTable.AtLine);
            _reply            = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Reply);

            _queue            = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.Dispatcher);
            _spiderqueue      = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.SearchEngineSpider);
            _mailMessageQueue = AzureFactory.GetQueue(AzureFactory.MSGorillaQueue.MailMessage);

            _accManager     = new AccountManager();
            _attManager     = new AttachmentManager();
            _schemaManager  = new SchemaManager();
            _notifManager   = new NotifManager();
            _topicManager   = new TopicManager();
            _richMsgManager = new RichMsgManager();
            _groupManager   = new GroupManager();
        }
示例#11
0
        public AttachmentManager()
        {
            _attachment    = AzureFactory.GetTable(AzureFactory.MSGorillaTable.Attachment);
            _blobcontainer = AzureFactory.GetBlobContainer(AzureFactory.MSGorillaBlobContainer.Attachment);

            BlobContainerPermissions blobPermissions = new BlobContainerPermissions();

            blobPermissions.SharedAccessPolicies.Add(_policyName, new SharedAccessBlobPolicy()
            {
                // To ensure SAS is valid immediately, don’t set start time.
                // This way, you can avoid failures caused by small clock differences.
                SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
                Permissions            = SharedAccessBlobPermissions.Read
            });

            // The public access setting explicitly specifies that
            // the container is private, so that it can't be accessed anonymously.
            blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;

            // Set the permission policy on the container.
            _blobcontainer.SetPermissions(blobPermissions);

            // Get the shared access signature to share with users.
        }
示例#12
0
 public MetricManager()
 {
     _metricData = AzureFactory.GetTable(AzureFactory.MSGorillaTable.MetricDataSet);
 }
示例#13
0
 public CounterManager()
 {
     _counterSet    = AzureFactory.GetTable(AzureFactory.MSGorillaTable.CounterSet);
     _counterRecord = AzureFactory.GetTable(AzureFactory.MSGorillaTable.CounterRecord);
 }
示例#14
0
 public SearchManager()
 {
     _wordsIndexTable    = AzureFactory.GetTable(AzureFactory.MSGorillaTable.WordsIndex);
     _searchResultsTable = AzureFactory.GetTable(AzureFactory.MSGorillaTable.SearchResults);
     _searchHistoryTable = AzureFactory.GetTable(AzureFactory.MSGorillaTable.SearchHistory);
 }
示例#15
0
 public RichMsgManager()
 {
     _richMsg = AzureFactory.GetTable(AzureFactory.MSGorillaTable.RichMessage);
 }