Beispiel #1
0
        public TrelloFileRepository(string key, string token, string list)
        {
            _key   = key;
            _token = token;
            _list  = list;

            RefreshCardArray();
            JObject obj = cardarray.Children <JObject>()
                          .FirstOrDefault(o => o["name"].ToString() == _rootname);

            /*
             * 用 _root card 的 description
             * 儲存 sync xml 資料
             */
            if (obj == null)
            {
                InitSyncSetting();  //無 _root 卡片
            }
            else
            {
                // _rootname 卡片的 desc 儲存 syncsetting
                JObject root = JObject.Parse(TrelloHelper.GetCard(_key, _token, obj["id"].Value <string>()));

                // 把 card 的 description 轉成 xml document
                _xdoc = XDocument.Parse(root["desc"].Value <string>());

                // 紀錄 root card id
                _rootcard = obj["id"].Value <string>();
            }
        }
Beispiel #2
0
        public List <SyncFileInfo> GetFiles(string folder)
        {
            List <SyncFileInfo> result = new List <SyncFileInfo>();

            JObject obj = cardarray.Children <JObject>()
                          .FirstOrDefault(o => o["name"].ToString() == folder);

            if (obj != null)
            {
                JArray list = JArray.Parse(
                    TrelloHelper.GetCardAttachmentList(_key, _token, obj["id"].Value <string>()));

                foreach (JObject o in list.Children <JObject>())
                {
                    result.Add(new SyncFileInfo()
                    {
                        Name       = o["name"].Value <string>(),
                        Path       = o["url"].Value <string>(),
                        CreateDate = TrelloHelper.IdToDatetime(o["id"].Value <string>()),
                        UpdateDate = TrelloHelper.IdToDatetime(o["id"].Value <string>()),
                        Size       = o["bytes"].Value <int>()
                    }
                               );
                }
            }

            return(result);
        }
Beispiel #3
0
        public void UpdateFile(string folder, string file, byte[] data)
        {
            JObject card = cardarray.Children <JObject>()
                           .FirstOrDefault(o => o["name"].ToString() == folder);

            if (card == null)
            {
                throw new Exception("資料夾不存在");
            }

            JArray list = JArray.Parse(
                TrelloHelper.GetCardAttachmentList(_key, _token, card["id"].Value <string>()));    // file list

            JObject attachment = list.Children <JObject>()
                                 .FirstOrDefault(o => o["name"].ToString() == file);

            // 已存在,刪除檔案
            if (attachment != null)
            {
                TrelloHelper.DeleteAttachment(_key, _token,
                                              card["id"].Value <string>(), attachment["id"].Value <string>());
            }

            TrelloHelper.CreateAttachment(_key, _token, card["id"].Value <string>(), file, data);
        }
Beispiel #4
0
        public void SaveSync()
        {
            // 刪除 root card
            if (!string.IsNullOrEmpty(_rootcard))
            {
                TrelloHelper.DeleteCard(_key, _token, _rootcard);
            }

            // 把sync xml record 寫到 root card 的 description
            TrelloHelper.CreateCard(_key, _token, _list, _rootname, _xdoc.ToString());
            RefreshCardArray(); // 重新取 card array
        }
        public string Get()
        {
            if (string.IsNullOrEmpty(TrelloHelper.GetWebHooks().Result))
            {
                TrelloHelper.SetupWebhookForList(nameof(ListChangeEndPoint));
            }

            if (!string.IsNullOrEmpty(responseData))
            {
                return(responseData);
            }
            return("lol, nope");
        }
Beispiel #6
0
        public void DeleteFolder(string folder)
        {
            JObject obj = cardarray.Children <JObject>()
                          .FirstOrDefault(o => o["name"].ToString() == folder);

            if (obj == null)
            {
                throw new Exception("資料夾不存在");
            }

            TrelloHelper.DeleteCard(_key, _token, obj["id"].Value <string>());
            RefreshCardArray(); // 重新取 card array
        }
Beispiel #7
0
        public List <SyncFolderInfo> GetFolders(bool withfile)
        {
            //cards in list
            List <SyncFolderInfo> folders = new List <SyncFolderInfo>();

            foreach (JObject o in cardarray.Children <JObject>())
            {
                // 排除 root card
                if (o["name"].Value <string>() == _rootname)
                {
                    continue;
                }

                folders.Add(new SyncFolderInfo()
                {
                    Name       = o["name"].Value <string>(),
                    Path       = o["url"].Value <string>(),
                    CreateDate = TrelloHelper.IdToDatetime(o["id"].Value <string>()),
                    UpdateDate = TrelloHelper.IdToDatetime(o["id"].Value <string>()),
                }
                            );
            }

            if (withfile)
            {
                foreach (var folder in folders)
                {
                    folder.Files = GetFiles(folder.Name);
                }
            }

            /*
             * 用 card 轉成 folder的資料
             * 處理成實際用的 folder
             */
            List <SyncFolderInfo> result = new List <SyncFolderInfo>();

            foreach (var f in folders)
            {
                // 先找出第一層,名字沒有 \ 的
                if (f.Name.Split('\\').Count() == 1)
                {
                    // card 名字放路徑
                    result.Add(GetFolder(f.Name, withfile, folders));
                }
            }

            return(result);
        }
Beispiel #8
0
        public bool CreateFolder(string folder)
        {
            JObject obj = cardarray.Children <JObject>()
                          .FirstOrDefault(o => o["name"].ToString() == folder);

            // 不存在才新增
            if (obj == null)
            {
                TrelloHelper.CreateCard(_key, _token, _list, folder);
                RefreshCardArray(); // 重新取 card array
                return(true);
            }

            return(false);
        }
Beispiel #9
0
        public void CreateFile(string folder, string name, byte[] file)
        {
            JObject obj = cardarray.Children <JObject>()
                          .FirstOrDefault(o => o["name"].ToString() == folder);

            if (obj == null)
            {
                throw new Exception("資料夾不存在");
            }

            JArray list = JArray.Parse(
                TrelloHelper.GetCardAttachmentList(_key, _token, obj["id"].Value <string>()));   // file list

            JObject attachment = list.Children <JObject>()
                                 .FirstOrDefault(o => o["name"].ToString() == name);

            if (attachment != null)
            {
                DeleteFile(folder, name);   //已存在,刪除檔案
            }
            TrelloHelper.CreateAttachment(_key, _token, obj["id"].Value <string>(), name, file);
        }
Beispiel #10
0
        public void DeleteFile(string folder, string file)
        {
            JObject card = cardarray.Children <JObject>()
                           .FirstOrDefault(o => o["name"].ToString() == folder);

            if (card == null)
            {
                throw new Exception("資料夾不存在");
            }

            // fetch file list
            JArray list = JArray.Parse(
                TrelloHelper.GetCardAttachmentList(_key, _token, card["id"].Value <string>()));

            JObject attachment = list.Children <JObject>()
                                 .FirstOrDefault(o => o["name"].ToString() == file);

            if (attachment == null)
            {
                throw new Exception("檔案不存在");
            }

            TrelloHelper.DeleteAttachment(_key, _token, card["id"].Value <string>(), attachment["id"].Value <string>());
        }
Beispiel #11
0
        public void IdToDatetimeTest()
        {
            DateTime dt = TrelloHelper.IdToDatetime("4d5ea62fd76aa1136000000c");

            Debug.WriteLine(dt.ToString());
        }
Beispiel #12
0
 /// <summary>
 /// 更新 trello card list
 /// </summary>
 void RefreshCardArray()
 {
     cardarray = JArray.Parse(TrelloHelper.GetCardList(_key, _token, _list));
 }
Beispiel #13
0
 /// <summary>
 /// 取得附件 byte[]
 /// </summary>
 /// <param name="path"></param>
 /// <returns></returns>
 public byte[] GetFile(string path)
 {
     return(TrelloHelper.GetAttachment(path));
 }