private void InitializeLeanKitMonitoring()
        {
            try
            {
                var host     = ConfigurationManager.AppSettings["LeanKit-AccountName"];
                var email    = ConfigurationManager.AppSettings["LeanKit-EmailAddress"];
                var password = ConfigurationManager.AppSettings["LeanKit-Password"];
                var boardIds = ConfigurationManager.AppSettings["LeanKit-BoardId"];

                var leanKitAuth = new LeanKitBasicAuth
                {
                    Hostname = host,
                    Username = email,
                    Password = password
                };

                var boardId = int.Parse(boardIds);

                _leanKitIntegration = new LeanKitIntegrationFactory().Create(boardId, leanKitAuth);
                _leanKitIntegration.BoardChanged += IntegrationOnBoardChanged;
                _leanKitIntegration.StartWatching();
            }
            catch (Exception ex)
            {
                ShowMessage("Error: " + ex.Message);
            }
        }
コード例 #2
0
        private ILeanKitApi Connect(Request request, bool saveLogin = false)
        {
            LeanKitClientFactory = new LeanKitClientFactory();
            var account = new LeanKitBasicAuth
            {
                Hostname            = request.Host,
                Username            = request.User,
                Password            = request.Password,
                UrlTemplateOverride = request.Host
            };

            if (saveLogin)
            {
                SaveLogin(account);
            }

            // expand host if necessary
            if (account.Hostname == "kanban-cibuild")
            {
                account.UrlTemplateOverride = "http://kanban-cibuild.localkanban.com/";
            }
            else if (!account.Hostname.StartsWith("http:") && !account.Hostname.StartsWith("https:"))
            {
                account.UrlTemplateOverride = "https://" + account.Hostname + ".leankit.com/";
            }
            else
            {
                account.UrlTemplateOverride = account.Hostname;
            }

            string.Format("Attempting connection to {0}", request).Debug();

            return(LeanKitClientFactory.Create(account));
        }
コード例 #3
0
        private void SaveLogin(LeanKitBasicAuth account)
        {
            "Saving LeanKit login information...".Debug();

            try
            {
                var dir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory;
                if (dir == null)
                {
                    throw new Exception("Could not access current directory.");
                }
                var curFolder    = dir.FullName;
                var storagefile  = Path.Combine(curFolder, "config-edit.json");
                var localStorage = new LocalStorage <Configuration>(storagefile);
                var config       = File.Exists(storagefile) ? localStorage.Load() : new Configuration();

                config.LeanKit = new ServerConfiguration
                {
                    Host     = account.Hostname,
                    User     = account.Username,
                    Password = account.Password
                };
                localStorage.Save(config);
            }
            catch (Exception ex)
            {
                string.Format("Error saving login creditials: {0}", ex.Message).Error(ex);
                throw;
            }
        }
コード例 #4
0
 public bool Initialize(string accountName, string emailAddress, string password)
 {
     try
     {
         var lkFactory = new LeanKitClientFactory();
         var lkAuth    = new LeanKitBasicAuth
         {
             Hostname = accountName,
             Username = emailAddress,
             Password = password
         };
         _api = lkFactory.Create(lkAuth);
         // Test authentication
         var boards = _api.GetBoards();
         if (boards == null)
         {
             return(false);
         }
         _cache.Set("boards", boards.ToArray(), DateTimeOffset.Now.AddMinutes(5));
         return(true);
     }
     catch (Exception)
     {
         _api = null;
         return(false);
     }
 }
コード例 #5
0
		public static LeanKitBasicAuth ToBasicAuth(this LeanKitAccountAuth accountAuth)
		{
			var auth = new LeanKitBasicAuth
			{
				Username = accountAuth.Username,
				Password = accountAuth.Password,
				Hostname = accountAuth.Hostname,
				UrlTemplateOverride = accountAuth.UrlTemplateOverride
			};
			return auth;
		}
コード例 #6
0
        public virtual ILeanKitApi CreateApi(string hostName, string userName, string password)
        {
            var factory       = new LeanKitClientFactory();
            var authorisation = new LeanKitBasicAuth
            {
                Hostname = hostName,
                Username = userName,
                Password = password
            };

            return(factory.Create(authorisation));
        }
コード例 #7
0
        public static LeanKitBasicAuth ToBasicAuth(this LeanKitAccountAuth accountAuth)
        {
            var auth = new LeanKitBasicAuth
            {
                Username            = accountAuth.Username,
                Password            = accountAuth.Password,
                Hostname            = accountAuth.Hostname,
                UrlTemplateOverride = accountAuth.UrlTemplateOverride
            };

            return(auth);
        }
コード例 #8
0
        //TODO: would be great if we could reload configuration for just a single board

        private void ConnectToLeanKit()
        {
            LeanKitAccount = new LeanKitBasicAuth()
            {
                Hostname            = Configuration.LeanKit.Url,
                UrlTemplateOverride = GetTemplateOverride(Configuration.LeanKit.Url),
                Username            = Configuration.LeanKit.User,
                Password            = Configuration.LeanKit.Password
            };

            try
            {
                Log.Debug("Connecting to LeanKit account [{0}] with account [{1}]", LeanKitAccount.Hostname, LeanKitAccount.Username);
                LeanKit = LeanKitClientFactory.Create(LeanKitAccount);
            }
            catch (Exception ex)
            {
                Log.Error("Failed to open LeanKit API: " + ex.Message);
            }
        }
コード例 #9
0
        public void RunQuery()
        {
            ValidateQuery();

            var leanKitAuth = new LeanKitBasicAuth
            {
                Hostname = _args.Host,
                Username = _args.User,
                Password = _args.Password
            };

            // For internal development testing
            if (_args.Host.Equals("kanban-cibuild", StringComparison.InvariantCultureIgnoreCase))
            {
                leanKitAuth.UrlTemplateOverride = "http://{0}.localkanban.com";
            }

            WriteInfo("Connecting to LeanKit account...");
            var api = new LeanKitClientFactory().Create(leanKitAuth);

            if (_args.Boards)
            {
                WriteInfo("Getting all boards...");
                var boards    = api.GetBoards();
                var boardList = boards.Select(Mapper.Map <BoardLiteView>);
                var output    = _args.Csv ? boardList.ToCsv() : _args.Json ? boardList.ToJson() : boardList.Dump();
                Console.WriteLine(output);
            }
            else if (_args.Board > 0)
            {
                WriteInfo(string.Format("Getting board [{0}]...", _args.Board));
                var board = api.GetBoard(_args.Board);
                if (_args.Lanes || _args.Lane > 0 || _args.Cards)
                {
                    // Get lanes
                    var boardLanes = new List <Lane>();
                    if (_args.Lane > 0)
                    {
                        WriteInfo(string.Format("Getting lane [{0}]...", _args.Lane));
                        boardLanes.AddRange(board.AllLanes().Where(lane => lane.Id == _args.Lane));
                    }
                    else
                    {
                        if (_args.IncludeBacklog)
                        {
                            boardLanes.AddRange(board.Backlog);
                        }
                        boardLanes.AddRange(board.Lanes);
                        if (_args.IncludeArchive)
                        {
                            boardLanes.AddRange(board.Archive);
                        }
                    }

                    if (_args.Cards)
                    {
                        WriteInfo("Getting cards...");
                        var cards = new List <MappedCardView>();
                        foreach (var lane in boardLanes)
                        {
                            cards.AddRange(lane.Cards.Select(Mapper.Map <MappedCardView>));
                        }
                        // Archived cards is a separate API call
                        if (_args.IncludeArchive)
                        {
                            var archivedCards = api.GetArchiveCards(_args.Board);
                            cards.AddRange(archivedCards.Select(Mapper.Map <MappedCardView>));
                        }
                        var output = _args.Csv ? cards.ToCsv() : _args.Json ? cards.ToJson() : cards.Dump();
                        Console.WriteLine(output);
                    }
                    else
                    {
                        var lanes  = boardLanes.Select(Mapper.Map <LaneView>);
                        var output = _args.Csv ? lanes.ToCsv() : _args.Json ? lanes.ToJson() : lanes.Dump();
                        Console.WriteLine(output);
                    }
                }
                else
                {
                    var boardView = Mapper.Map <BoardView>(board);
                    var output    = _args.Csv ? boardView.ToCsv() : _args.Json ? boardView.ToJson() : boardView.Dump();
                    Console.WriteLine(output);
                }
            }
        }