첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.01MB

▶ Checksum.cs

using Newtonsoft.Json;

namespace TestProject
{
    /// <summary>
    /// 체크썸
    /// </summary>
    public class Checksum
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region MD5 - MD5

        /// <summary>
        /// MD5
        /// </summary>
        [JsonProperty("md5")]
        public string MD5 { get; set; }

        #endregion
        #region SHA1 - SHA1

        /// <summary>
        /// SHA1
        /// </summary>
        [JsonProperty("sha1")]
        public string SHA1 { get; set; }

        #endregion
        #region SHA256 - SHA256

        /// <summary>
        /// SHA256
        /// </summary>
        [JsonProperty("sha256")]
        public string SHA256 { get; set; }

        #endregion
        #region SHA512 - SHA512

        /// <summary>
        /// SHA512
        /// </summary>
        [JsonProperty("sha512")]
        public string SHA512 { get; set; }

        #endregion
    }
}

 

728x90

 

▶ Item.cs

using Newtonsoft.Json;

namespace TestProject
{
    /// <summary>
    /// 항목
    /// </summary>
    public class Item
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region ID - ID

        /// <summary>
        /// ID
        /// </summary>
        [JsonProperty("id")]
        public string ID { get; set; }

        #endregion
        #region 저장소 - Repository

        /// <summary>
        /// 저장소
        /// </summary>
        [JsonProperty("repository")]
        public string Repository { get; set; }

        #endregion
        #region 경로 - Path

        /// <summary>
        /// 경로
        /// </summary>
        [JsonProperty("path")]
        public string Path { get; set; }

        #endregion
        #region 포맷 - Format

        /// <summary>
        /// 포맷
        /// </summary>
        [JsonProperty("format")]
        public string Format { get; set; }

        #endregion
        #region 다운로드 URL - DownloadURL

        /// <summary>
        /// 다운로드 URL
        /// </summary>
        [JsonProperty("downloadUrl")]
        public string DownloadURL { get; set; }

        #endregion
        #region 체크썸 - Checksum

        /// <summary>
        /// 체크썸
        /// </summary>
        [JsonProperty("checksum")]
        public Checksum Checksum { get; set; }

        #endregion
    }
}

 

300x250

 

▶ AssetData.cs

using System.Collections.Generic;

using Newtonsoft.Json;

namespace TestProject
{
    /// <summary>
    /// 자산 데이터
    /// </summary>
    public class AssetData
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 항목 리스트 - ItemList

        /// <summary>
        /// 항목 리스트
        /// </summary>
        [JsonProperty("items")]
        public IList<Item> ItemList { get; set; }

        #endregion
        #region 연속 토큰 - ContinuationToken

        /// <summary>
        /// 연속 토큰
        /// </summary>
        [JsonProperty("continuationToken")]
        public string ContinuationToken { get; set; }

        #endregion
    }
}

 

▶ NexusHelper.cs

using System.Collections.Generic;
using System.Net;

using Newtonsoft.Json;

namespace TestProject
{
    /// <summary>
    /// 넥서스 헬퍼
    /// </summary>
    public static class NexusHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Property
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 사용자 ID - UserID

        /// <summary>
        /// 사용자 ID
        /// </summary>
        public static string UserID { get; set; }

        #endregion
        #region 패스워드 - Password

        /// <summary>
        /// 패스워드
        /// </summary>
        public static string Password { get; set; }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 항목 리스트 구하기 - GetItemList(serverURL, repositoryName)

        /// <summary>
        /// 항목 리스트 구하기
        /// </summary>
        /// <param name="serverURL">서버 URL</param>
        /// <param name="repositoryName">저장소명</param>
        /// <returns>항목 리스트</returns>
        public static List<Item> GetItemList(string serverURL, string repositoryName)
        {
            using(WebClient client = new WebClient())
            {
                client.Credentials = new NetworkCredential(UserID, Password);

                List<Item> list = new List<Item>();

                string url = $"{serverURL}/service/rest/v1/assets?repository={repositoryName}";

                while(true)
                {
                    string json = client.DownloadString(url);

                    AssetData data = JsonConvert.DeserializeObject<AssetData>(json);

                    foreach(Item item in data.ItemList)
                    {
                        list.Add(item);
                    }

                    if(string.IsNullOrEmpty(data.ContinuationToken))
                    {
                        break;
                    }
                    else
                    {
                        url = $"{serverURL}/service/rest/v1/assets?repository={repositoryName}&continuationToken={data.ContinuationToken}";
                    }
                } 

                return list;
            }
        }

        #endregion
    }
}

 

▶ Program.cs

using System;
using System.Collections.Generic;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            NexusHelper.UserID   = "userID";
            NexusHelper.Password = "password";

            List<Item> itemList = NexusHelper.GetItemList("http://127.0.0.1", "arca-raw");

            foreach(Item item in itemList)
            {
                Console.WriteLine($"{item.ID} : {item.Path}");
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요