Skip to content
Snippets Groups Projects
ConnectionOptionsBuilder.cs 2.64 KiB
Newer Older
namespace SDK
Michal Ondrejička's avatar
Michal Ondrejička committed
{
    public interface IOptionsBuilder
    {
        ConnectionOptions Build();
    }

    public class ConnectionOptionsBuilder : IOptionsBuilder
    {
        private string url;
        private string token;
        private string client;
        private string clientGuid;
        private string branchGuid;
        private int timeout;
        private string apiKey;
        private string mainApiKey;
Michal Ondrejička's avatar
Michal Ondrejička committed
        private string version;
        private string login;
        private string password;


        public ConnectionOptionsBuilder Url(string url)
        {
            this.url = url;
            return this;
        }

        public ConnectionOptionsBuilder Token(string token)
        {
            this.token = token;
            return this;
        }

        public ConnectionOptionsBuilder Client(string client)
        {
            this.client = client;
            return this;
        }

        public ConnectionOptionsBuilder ClientGuid(string clientGuid)
        {
            this.clientGuid = clientGuid;
            return this;
        }

        public ConnectionOptionsBuilder BranchGuid(string branchGuid)
        {
            this.branchGuid = branchGuid;
            return this;
        }

        public ConnectionOptionsBuilder Timeout(int timeout)
        {
            this.timeout = timeout;
            return this;
        }

        public ConnectionOptionsBuilder ApiKey(string apiKey)
        {
            this.apiKey = apiKey;
            return this;
        }
        public ConnectionOptionsBuilder MainApiKey(string mainApiKey)
        {
            this.mainApiKey = mainApiKey;
            return this;
        }
Michal Ondrejička's avatar
Michal Ondrejička committed

        public ConnectionOptionsBuilder Version(string version)
        {
            this.version = version;
            return this;
        }

        public ConnectionOptionsBuilder Login(string login)
        {
            this.login = login;
            return this;
        }

        public ConnectionOptionsBuilder Password(string password)
        {
            this.password = password;
            return this;
        }

        public ConnectionOptions Build()
        {
            return new ConnectionOptions
            {
                Url = this.url,
                Token = this.token,
                ClientGuid = this.clientGuid,
                Client = this.client,
                BranchGuid = this.branchGuid,
                Timeout = this.timeout,
                ApiKey = this.apiKey,
                MainApiKey = this.mainApiKey,
Michal Ondrejička's avatar
Michal Ondrejička committed
                Version = this.version,
                Login = this.login,
                Password = this.password
            };
        }
    }
}