예제 #1
0
	    public void Init()
	    {
	        const string appName = "RemoteServiceTest";

	        var remote = new RemoteRepository
	        {
	            DiscoveryUri = new Uri("http://10.0.2.2:9000/"),
	            LocalCache = new SqliteObjectCache {ApplicationName = appName},
	            ClientId = Environment.GetEnvironmentVariable("SentinelClientId"),
	            UserAccount = new UserAccount
	            {
	                Username = Environment.GetEnvironmentVariable("SentinelUsername"),
	                Password = Environment.GetEnvironmentVariable("SentinelPassword"),
	            }
	        };

	        var local = new LocalRepository
	        {
	            ApplicationName = appName
	        };

	        Service = new StorageService
	        {
				LocalRepository = local,
	            RemoteRepository = remote
	        };

            Service.Delete<Company>().Wait();
            Service.Delete<Vat>().Wait();
        }
예제 #2
0
        IEnumerable<RemoteEndpointData> BuildEndpoints(RemoteRepository value)
        {
            if (value.FetchRepository != null)
                yield return BuildEndpointData(value.FetchRepository, "fetch");

            foreach (var ep in value.PublishRepositories)
                yield return BuildEndpointData(ep, "publish");
        }
예제 #3
0
	    public void DefaultRemoteServiceProperties()
	    {
	        var r = new RemoteRepository();
	        Assert.That(r.DiscoveryUri.ToString(), Is.EqualTo("http://10.0.2.2:9000/"));

	        var defaultUri = r.DiscoveryUri;
	        r.DiscoveryUri = new Uri("http://localhost:9000/");
	        r.RestoreDefaults();
	        Assert.That(r.DiscoveryUri.ToString(), Is.EqualTo(defaultUri));
	    }
예제 #4
0
 IEnumerable<ICommandOutput> AddRemote()
 {
     var repositories = ConfigurationManager.LoadRemoteRepositories();
     repositories[Name] = new RemoteRepository
     {
             Href = Href,
             Name = Name
     };
     ConfigurationManager.SaveRemoteRepositories(repositories);
     yield return new GenericMessage(string.Format("Remote repository '{0}' added.", Name));
 }
예제 #5
0
        public SiteConfiguration(IApplication application, ICredentialProvider credentialProvider)
        {
            ServiceUrl = application.ServiceUrl;
            SiteUrl = application.SiteUrl;
            Name = application.Name;

            // This is to work around a SignalR bug where the hub is still created
            // even if IDisconnect isn't implemented
            if (String.IsNullOrEmpty(ServiceUrl))
            {
                return;
            }

            SiteConfiguration config;
            if (_cache.TryGetValue(ServiceUrl, out config))
            {
                Repository = config.Repository;
                ProjectSystem = config.ProjectSystem;
                DevProjectSystem = config.DevProjectSystem;
                DeploymentManager = config.DeploymentManager;
                CommandExecutor = config.CommandExecutor;
                DevCommandExecutor = config.DevCommandExecutor;
            }
            else
            {
                var repository = new RemoteRepository(ServiceUrl + "scm");
                repository.Credentials = credentialProvider.GetCredentials();
                Repository = repository;

                var projectSystem = new RemoteProjectSystem(ServiceUrl + "live/files");
                projectSystem.Credentials = credentialProvider.GetCredentials();
                ProjectSystem = projectSystem;

                var devProjectSystem = new RemoteProjectSystem(ServiceUrl + "dev/files");
                devProjectSystem.Credentials = credentialProvider.GetCredentials();
                DevProjectSystem = devProjectSystem;

                SubscribeToEvents(credentialProvider);

                _cache[ServiceUrl] = this;
            }
        }
예제 #6
0
        public ActionResult <IEnumerable <RemoteRepository> > PostRemoteRepository(RemoteRepository remoteRepository)
        {
            //先取得資料庫內已有的倉儲資料
            IEnumerable <RemoteRepository> allRemoteRepositories   = GetAllRemoteRepository().Result.Value;
            RemoteRepositoryService        remoteRepositoryService = new RemoteRepositoryService();
            //檢查是否重複新增
            var exist = remoteRepositoryService.CheckRomoteRepository(remoteRepository.RemoteRepositoryUrl, allRemoteRepositories);

            if (exist)
            {
                string error = "此倉儲已經存在";
                return(StatusCode(StatusCodes.Status405MethodNotAllowed, error));
            }
            else
            {
                //在本地端clone專案
                GitCommandService gitCommandService = new GitCommandService();
                var cloneResult = gitCommandService.ExcuteCommand(new GitCommandInfo
                {
                    Command  = "clone",
                    GitUrl   = remoteRepository.RemoteRepositoryUrl,
                    FilePath = ProjectPath.Path
                });
                //在資料庫新增此倉儲資料
                if (cloneResult.IsSuccessful)
                {
                    remoteRepository.RemoteRepositoryId = Guid.NewGuid();
                    remoteRepository.ServerPath         = cloneResult.Result + "/" + remoteRepositoryService.GetFolderName(remoteRepository.RemoteRepositoryUrl);
                    remoteRepositoryRepository.Create(remoteRepository);
                    return(CreatedAtAction(nameof(GetAllRemoteRepository), remoteRepository));
                }
                else
                {
                    //當clone失敗
                    return(StatusCode(StatusCodes.Status405MethodNotAllowed, cloneResult.ErrorMessage));
                }
                //return CreatedAtAction(nameof(GetRemoteRepository), GetRemoteRepository().Result.Value);
            }
        }
        public void CanHandleDisabledHTTPS()
        {
            // Setup
            string server   = "server_test";
            string owner    = "owner_test";
            string repoName = "repo_name";
            var    authInfo = new AuthInfo()
            {
                Decoded = "authInfo"
            };

            // Act
            RemoteRepository repo = new RemoteRepository(server, owner, repoName, authInfo, true);

            // Setup
            Assert.AreEqual(server, repo.Server);
            Assert.AreEqual(owner, repo.Owner);
            Assert.AreEqual(repoName, repo.Name);
            Assert.AreEqual(authInfo, repo.Auth);
            Assert.AreEqual($"http://{server}/{owner}/{repoName}", repo.Url);
            Assert.AreEqual($"http://{authInfo.Decoded}@{server}/{owner}/{repoName}", repo.GitUrl);
        } /* End of Function - CanHandleDisabledHTTPS */
        public void DefaultsCorrectly()
        {
            // Setup
            string server   = "server_test";
            string owner    = "owner_test";
            string repoName = "repo_name";
            var    authInfo = new AuthInfo()
            {
                Decoded = "authInfo"
            };

            // Act
            RemoteRepository repo = new RemoteRepository(server, owner, repoName, authInfo, false);

            // Setup
            Assert.AreEqual(server, repo.Server);
            Assert.AreEqual(owner, repo.Owner);
            Assert.AreEqual(repoName, repo.Name);
            Assert.AreEqual(authInfo, repo.Auth);
            Assert.AreEqual($"https://{server}/{owner}/{repoName}", repo.Url);
            Assert.AreEqual($"https://{authInfo.Decoded}@{server}/{owner}/{repoName}", repo.GitUrl);
        } /* End of Function - DefaultsCorrectly */
예제 #9
0
        protected void given_remote_repository(string configName, int?priority = null, Action <InMemoryRepository> factory = null)
        {
            var repo = new InMemoryRepository(configName);

            if (factory != null)
            {
                factory(repo);
            }
            RemoteRepositories.Add(repo);
            ConfiguredRemotes[configName] = new RemoteRepository
            {
                Priority        = priority ?? ConfiguredRemotes.Count + 1,
                FetchRepository = new RemoteRepositoryEndpoint {
                    Token = repo.Token
                },
                PublishRepositories = { new RemoteRepositoryEndpoint {
                                            Token = repo.Token
                                        } },
                Name = configName
            };
            ServiceLocator.GetService <IConfigurationManager>().Save(ConfiguredRemotes);
        }
예제 #10
0
        RemoteRepositories LoadRemotes()
        {
            var remotes = _configurationManager.Load <RemoteRepositories>();

            if (ReferenceEquals(remotes, RemoteRepositories.Default))
            {
                var legacyRemotes = _configurationManager.Load <Configuration.Remotes.Legacy.RemoteRepositories>();
                if (legacyRemotes != null)
                {
                    remotes.Clear();
                    foreach (var legacy in legacyRemotes)
                    {
                        var repo = FromInput(legacy.Value.Href.ToString());
                        if (repo == null)
                        {
                            continue;
                        }
                        var newRemote = new RemoteRepository
                        {
                            Name            = legacy.Key,
                            Priority        = legacy.Value.Priority,
                            FetchRepository = new RemoteRepositoryEndpoint {
                                Token = repo.Token
                            }
                        };
                        if (repo.Feature <ISupportPublishing>() != null)
                        {
                            newRemote.PublishRepositories.Add(new RemoteRepositoryEndpoint {
                                Token = repo.Token
                            });
                        }
                        remotes.Add(newRemote);
                    }
                    _configurationManager.Save(remotes);
                }
            }
            return(remotes);
        }
예제 #11
0
        void Start()
        {
            var repository = new RemoteRepository <Identity>();

            //Proxy

            Proxy.Instance.SetTarget(repository)
            .SetMethod("Test")
            .SetArgs(new object[] {})
            .SetInvocationHandler(new LogInvocationHandler())
            .Invoke();

            //Loding
            repository.Get <Response <User> >("http://localhost/User/List",
                                              new Identity()
            {
                DeviceId = SystemInfo.deviceUniqueIdentifier, Token = TokenHelper.Create()
            },
                                              (response) =>
            {
                Debug.Log(response.Items[0].Address.Name);
                stop = true;
            });
        }
예제 #12
0
 public RemoteRepositoryMessage(ICommand sourceCommand, string name, RemoteRepository remoteRepository)
 {
     Name             = name;
     RemoteRepository = remoteRepository;
     Source           = sourceCommand;
 }
예제 #13
0
 public void ThrowsWhenConfigIsInvalid()
 {
     var remoteRepo = new RemoteRepository("server", "owner", "name", null);
     var localRepo  = new LocalRepository(remoteRepo, null);
 } /* End of Function - ThrowsWhenConfigIsInvalid */
예제 #14
0
        //实现写入缓存共有类
        public void setCache(string r)
        {
            var repository = new RemoteRepository <GetStruct>();

            var version = new DbRepository <TableVersions>();

            version.DataService("vesali.db");
            version.CreateTable();
            TableVersions tv = version.SelectOne <TableVersions>((tmpT) =>
            {
                if (tmpT.table_name == typeof(T).Name)
                {
                    return(true);
                }
                return(false);
            });
            var struct_version = "-1";

            if (tv != null)
            {
                struct_version = tv.version;
            }
            //var os = "ios";
            //if (PublicClass.platform == asset_platform.android)
            //{
            //    os = "android";
            //}
            //Debug.Log("===当前请求的地址是====" + r + "===当前泛型指定的实例为====" + typeof(T).Name + "  ====当前版本===" + struct_version);
            //vesal_log.vesal_write_log(SystemInfo.deviceUniqueIdentifier+"--------------------------------------------------------设备唯一号");
            //  Debug.Log(SystemInfo.deviceUniqueIdentifier+"--------------------------------------------------------设备唯一号");
            // Debug.Log("======== "+ (int)PublicClass.Quality);//, level = (int)PublicClass.Quality      ?Version=2&softVersion=2.3&os=android&level=1
            Debug.Log(r);
            repository.Get <Response <T> >(r, new GetStruct {
                Version = struct_version, device = SystemInfo.deviceUniqueIdentifier, os = Enum.GetName(typeof(asset_platform), PublicClass.platform), level = ((int)PublicClass.Quality).ToString(), softVersion = PublicClass.get_version()
            }, (response) =>
            {
                if (response.List != null && response.List.Count != 0)
                {
                    Debug.Log("============读取数据库缓存更新,从远程拉取数据,更新版本号=================== " + typeof(T).Name);
                    //如果有数据,更新数据和版本
                    if (tv == null)
                    {
                        version.Insert(new TableVersions {
                            table_name = typeof(T).Name, version = response.maxVersion
                        });
                    }
                    else
                    {
                        version.Update(new TableVersions {
                            table_name = typeof(T).Name, version = response.maxVersion
                        });
                    }
                    version.Close();
                    var db = new DbRepository <T>();
                    db.DataService("vesali.db");
                    db.DropTable();
                    db.CreateTable();
                    db.InsertAll(response.List);           //更新远程数据源
                    db.Close();
                }
                else
                {
                    Debug.Log("Struct List data is null " + struct_version + " " + response.maxVersion);
                    // Debug.Log("============读取数据库缓存=================== ");
                    //读取数据库缓存
                }
                PublicClass.data_list_count++;
            });
            //throw new NotImplementedException();
        }
예제 #15
0
        private void CheckUpdate(bool showResult)
        {
            var assem     = Assembly.GetEntryAssembly();
            var assemName = assem.GetName();
            var ver       = assemName.Version;
            var platform  = "x86";

            if (Tools.Is64BitProcess)
            {
                platform = "x64";
            }
            Logger.Instance().Log("Yatse2", "Checking for updates. Current version : " + ver, true);
            _allowBeta = File.Exists(Helper.AppPath + "Yatse2.beta");

            var repo = new RemoteRepository();

            repo.SetDebug(_config.Debug);
            if (!repo.LoadRepository(Repository, platform, Helper.AppPath + "Updates"))
            {
                if (showResult)
                {
                    ShowOkDialog(GetLocalizedString(114));
                }
                return;
            }

            var result = repo.UpdateTranslations(Helper.LangPath);

            if (result)
            {
                if (showResult)
                {
                    ShowOkDialog(GetLocalizedString(115));
                }
                RefreshDictionaries();
            }
            var versions = repo.GetBuildList(_allowBeta);

            if (versions == null)
            {
                Logger.Instance().Log("Yatse2", "Build list empty !", true);
                if (showResult)
                {
                    ShowOkDialog(GetLocalizedString(114));
                }
            }
            else
            {
                if (versions.Version.Count < 1)
                {
                    Logger.Instance().Log("Yatse2", "Build list empty !", true);
                    if (showResult)
                    {
                        ShowOkDialog(GetLocalizedString(114));
                    }
                }
                else
                {
                    var lastBuild = versions.Version[versions.Version.Count - 1];

                    if (ver.Build >= lastBuild.Build)
                    {
                        Logger.Instance().Log("Yatse2", "Version is up2date!", true);
                        if (showResult)
                        {
                            ShowOkDialog(GetLocalizedString(113));
                        }
                    }
                    else
                    {
                        Logger.Instance().Log("Yatse2", "Update available : " + lastBuild.Build, true);
                        var res = ShowYesNoDialog(GetLocalizedString(109));
                        if (res)
                        {
                            Directory.CreateDirectory(Helper.AppPath + "Temp");
                            if (GetUpdater())
                            {
                                Process.Start(Helper.AppPath + @"Temp\Yatse2Setup.exe");
                                Close();
                            }
                            else
                            {
                                ShowOkDialog(GetLocalizedString(101));
                            }
                        }
                    }
                }
            }
            repo.CleanTemporary();
        }
예제 #16
0
	    public async Task LoginAndLogout()
	    {
			var username = Environment.GetEnvironmentVariable("SentinelUsername");
			var password = Environment.GetEnvironmentVariable("SentinelPassword");

	        var remote = Service.RemoteRepository;

	        Assert.That(
				await remote.Login(new UserAccount() { Username = "******", Password = "******" }, false), 
				Is.False);
	        Assert.That(remote.UserAccount.Username, Is.EqualTo(username));
	        Assert.That(remote.UserAccount.Password, Is.EqualTo(password));

	        remote.UserAccount.Username = "******";
	        remote.UserAccount.Password = "******";
	        Assert.That(await remote.Login(false), Is.False);
	        Assert.That(await remote.Login(true), Is.False);

	        var challenge = new RemoteRepository() {LocalCache = Service.RemoteRepository.LocalCache};
	        Assert.That(challenge.UserAccount.LoggedIn, Is.False);
	        Assert.That(challenge.UserAccount.Username, Is.Null);

            remote.UserAccount.Username = null;
	        Assert.That(async() => await remote.Login(false),
	            Throws.TypeOf<ArgumentNullException>());

	        remote.UserAccount.Username = username;
            remote.UserAccount.Password = null;
	        Assert.That(async() => await remote.Login(false),
	            Throws.TypeOf<ArgumentNullException>());

	        remote.UserAccount.Username = username;
	        remote.UserAccount.Password = password;
	        remote.UserAccount.ActiveCompany = new Company() {Name = "c1"};

	        Assert.That(await remote.Login(false), Is.True);

	        challenge = new RemoteRepository() {LocalCache = Service.RemoteRepository.LocalCache};
	        Assert.That(challenge.UserAccount.LoggedIn, Is.False);
	        Assert.That(challenge.UserAccount.Username, Is.Null);

	        Assert.That(await remote.Login(true), Is.True);
			
	        challenge = new RemoteRepository() {LocalCache = Service.RemoteRepository.LocalCache};
	        Assert.That(challenge.UserAccount.Username, Is.EqualTo(username));
	        Assert.That(challenge.UserAccount.Password, Is.EqualTo(password));
	        Assert.That(challenge.UserAccount.LoggedIn, Is.True);
	        Assert.That(challenge.UserAccount.ActiveCompany, Is.Not.Null);
	        Assert.That(challenge.UserAccount.ActiveCompany.Name, Is.EqualTo("c1"));

	        await remote.Logout();
	        Assert.That(remote.UserAccount.Username, Is.Null);
	        Assert.That(remote.UserAccount.Password, Is.Null);
	        Assert.That(remote.UserAccount.ActiveCompany, Is.Null);
	        Assert.That(remote.UserAccount.LoggedIn, Is.False);

	        challenge = new RemoteRepository() {LocalCache = Service.RemoteRepository.LocalCache};
	        Assert.That(challenge.UserAccount.Username, Is.Null);
	        Assert.That(challenge.UserAccount.Password, Is.Null);
	        Assert.That(challenge.UserAccount.ActiveCompany, Is.Null);
	        Assert.That(challenge.UserAccount.LoggedIn, Is.False);
	    }
예제 #17
0
 static IPackageRepository InjectConfigName(RemoteRepository config, IPackageRepository endpoint)
 {
     return(new NameTaggedRepository(endpoint, name =>
                                     config.Name.EqualsNoCase(name) ? name : string.Format("{0} - {1}", config.Name, name)));
 }
예제 #18
0
 public MainWindow()
 {
     InitializeComponent();
     remoteRepository    = new RemoteRepository(this);
     listBox.ItemsSource = remoteRepository.books;
 }
예제 #19
0
 public RemoteRepositoryMessage(ICommand sourceCommand, string name, RemoteRepository remoteRepository)
 {
     Name = name;
     RemoteRepository = remoteRepository;
     Source = sourceCommand;
 }
예제 #20
0
 public void ThrowsForInvalidName()
 {
     var auth = new RemoteRepository("", "", null, new AuthInfo());
 } /* End of Function - ThrowsForInvalidName */
예제 #21
0
 public void ThrowsForInvalidServer()
 {
     var auth = new RemoteRepository(null, "", "", new AuthInfo());
 } /* End of Function - ThrowsForInvalidServer */
예제 #22
0
 /// <summary>
 /// Fetches the total number of items available.
 /// </summary>
 /// <returns></returns>
 public int FetchCount()
 {
     return(RemoteRepository.CreateQuery <Developer>(new DemoChannelProvider())
            .Count());
 }
예제 #23
0
 public void LoadAll()
 {
     RemoteRepository
     .CreateQuery <User>(new TestChannelProvider())
     .ToList();
 }