コード例 #1
0
ファイル: CustomArtifact.cs プロジェクト: breyed/vsts-agent
        public async Task DownloadAsync(IExecutionContext executionContext, ArtifactDefinition artifactDefinition, string downloadFolderPath)
        {
            EnsureVersionBelongsToLinkedDefinition(artifactDefinition);

            var customArtifactDetails = artifactDefinition.Details as CustomArtifactDetails;

            if (customArtifactDetails != null)
            {
                IEnumerable <string> artifactDetails = new EndpointProxy().QueryEndpoint(
                    customArtifactDetails.Endpoint,
                    customArtifactDetails.ArtifactsUrl,
                    customArtifactDetails.ResultSelector,
                    customArtifactDetails.ResultTemplate,
                    customArtifactDetails.AuthorizationHeaders,
                    customArtifactDetails.ArtifactVariables);

                var artifactDownloadDetailList = new List <CustomArtifactDownloadDetails>();
                artifactDetails.ToList().ForEach(x => artifactDownloadDetailList.Add(JToken.Parse(x).ToObject <CustomArtifactDownloadDetails>()));
                if (artifactDownloadDetailList.Count <= 0)
                {
                    executionContext.Warning(StringUtil.Loc("NoArtifactsFound", artifactDefinition.Version));
                    return;
                }

                foreach (CustomArtifactDownloadDetails artifactDownloadDetails in artifactDownloadDetailList)
                {
                    await DownloadArtifact(executionContext, HostContext, downloadFolderPath, customArtifactDetails, artifactDownloadDetails);
                }
            }
        }
コード例 #2
0
ファイル: CustomArtifact.cs プロジェクト: breyed/vsts-agent
        private void EnsureVersionBelongsToLinkedDefinition(ArtifactDefinition artifactDefinition)
        {
            var customArtifactDetails = artifactDefinition.Details as CustomArtifactDetails;

            if (customArtifactDetails != null && !string.IsNullOrEmpty(customArtifactDetails.VersionsUrl))
            {
                // Query for all artifact versions for given artifact source id, these parameters are contained in customArtifactDetails.ArtifactVariables
                var versionBelongsToDefinition = false;
                IEnumerable <string> versions  = new EndpointProxy().QueryEndpoint(
                    customArtifactDetails.Endpoint,
                    customArtifactDetails.VersionsUrl,
                    customArtifactDetails.VersionsResultSelector,
                    customArtifactDetails.VersionsResultTemplate,
                    customArtifactDetails.AuthorizationHeaders,
                    customArtifactDetails.ArtifactVariables);

                foreach (var version in versions)
                {
                    var versionDetails = JToken.Parse(version).ToObject <CustomArtifactVersionDetails>();
                    if (versionDetails != null && versionDetails.Value.Equals(artifactDefinition.Version, StringComparison.OrdinalIgnoreCase))
                    {
                        versionBelongsToDefinition = true;
                        break;
                    }
                }

                if (!versionBelongsToDefinition)
                {
                    throw new ArtifactDownloadException(
                              StringUtil.Loc("RMArtifactVersionNotBelongToArtifactSource", artifactDefinition.Version, customArtifactDetails.ArtifactVariables["definition"]));
                }
            }
        }
コード例 #3
0
 public static async Task ConvertTimeouts(DocumentStore docStore)
 {
     foreach (var timeout in docStore.AllDocumentsStartingWith <TimeoutData>(Configuration.TimeoutDocumentsStartWith, 1024))
     {
         var proxy = EndpointProxy.GetProxy(timeout.OwningTimeoutManager);
         await proxy.TimeoutStorage.Add(timeout.ToCoreTimeoutData(), new ContextBag());
     }
 }
コード例 #4
0
 private static async Task ConvertSubscription(Subscription subscription)
 {
     Console.WriteLine($"Converting subscriptions for {subscription.MessageType.TypeName}");
     foreach (var client in subscription.Subscribers)
     {
         var newSubscriber = new Subscriber(client.TransportAddress, client.Endpoint);
         var proxy         = EndpointProxy.GetProxy(client.Endpoint);
         await proxy.SubscriptionStorage.Subscribe(newSubscriber, subscription.MessageType, new ContextBag());
     }
 }
コード例 #5
0
    public static EndpointProxy GetProxy(string endpointName)
    {
        EndpointProxy proxy = null;

        if (!proxyDict.TryGetValue(endpointName, out proxy))
        {
            proxy = new EndpointProxy(endpointName);
            proxyDict.Add(endpointName, proxy);
            proxy.Initialize();
        }
        return(proxy);
    }
コード例 #6
0
        static async Task RunAsync()
        {
            CheckConfiguration();

            var docStore = Configuration.ConfigureRavenDb();

            docStore.Initialize();

            //await SubscriptionConverter.ConvertSubscriptions(docStore);
            //await TimeoutConverter.ConvertTimeouts(docStore);
            await SagaConverter.ConvertSagas(docStore);

            await EndpointProxy.StopAll();
        }
コード例 #7
0
        private void doConnect(string uri)
        {
            var headers  = new Dictionary <string, string>();
            var headers2 = new Dictionary <string, object>();

            headers.Add(APP_KEY, this._id.AppKey);
            headers2.Add(APP_KEY, headers[APP_KEY]);
            headers.Add(GROUP_NAME, this._id.GroupName);
            headers2.Add(GROUP_NAME, headers[GROUP_NAME]);
            headers.Add(TIMESTAMP, DateTime.Now.Ticks.ToString());
            headers2.Add(TIMESTAMP, headers[TIMESTAMP]);
            headers2.Add(SIGN, TopUtils.SignTopRequest(headers, this._appSecret, true));
            this._serverProxy = this._endpoint.GetEndpoint(new TmcServerIdentity(), uri, headers2);
            this._uri         = uri;
            this.Log.InfoFormat("connected to tmc server: {0}", uri);
        }
コード例 #8
0
        private void doConnect(string uri)
        {
            var signHeader = new Dictionary <string, string>();
            var connHeader = new Dictionary <string, object>();

            signHeader.Add(APP_KEY, this._id.AppKey);
            connHeader.Add(APP_KEY, signHeader[APP_KEY]);
            signHeader.Add(GROUP_NAME, this._id.GroupName);
            connHeader.Add(GROUP_NAME, signHeader[GROUP_NAME]);
            signHeader.Add(TIMESTAMP, DateTime.Now.Ticks.ToString());
            connHeader.Add(TIMESTAMP, signHeader[TIMESTAMP]);
            connHeader.Add(SIGN, JdUtils.SignJdRequest(signHeader, this._appSecret, true));
            //extra fields
            connHeader.Add(SDK, DefaultJdClient.SDK_VERSION);
            this._serverProxy = this._endpoint.GetEndpoint(new TmcServerIdentity(), uri, connHeader);
            this._uri         = uri;
            this.Log.InfoFormat("connected to tmc server: {0}", uri);
        }
コード例 #9
0
ファイル: TmcClient.cs プロジェクト: xiaopohou/Magicodes.Sms
        private void doConnect(string uri)
        {
            var signHeader = new Dictionary <string, string>();
            var connHeader = new Dictionary <string, object>();

            signHeader.Add(Constants.APP_KEY, this._id.AppKey);
            connHeader.Add(Constants.APP_KEY, signHeader[Constants.APP_KEY]);

            signHeader.Add(GROUP_NAME, this._id.GroupName);
            connHeader.Add(GROUP_NAME, signHeader[GROUP_NAME]);

            signHeader.Add(Constants.TIMESTAMP, DateTime.Now.Ticks.ToString());
            connHeader.Add(Constants.TIMESTAMP, signHeader[Constants.TIMESTAMP]);

            connHeader.Add(Constants.SIGN, TopUtils.SignTopRequest(signHeader, this._appSecret, Constants.SIGN_METHOD_MD5));
            //extra fields
            connHeader.Add(SDK, Constants.SDK_VERSION);
            connHeader.Add(INTRANET_IP, TopUtils.GetIntranetIp());
            this._serverProxy = this._endpoint.GetEndpoint(new TmcServerIdentity(), uri, connHeader);
            this._uri         = uri;
            this.Log.Info("connected to tmc server: {0}", uri);
        }
コード例 #10
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);//.AddViewOptions(options =>
            //options.HtmlHelperOptions.ClientValidationEnabled = false);

            var gitToken = Configuration.GetValue <string>("GITHUB_API_TOKEN");

            // TODO: read from config

            // DI for components
            var netflixCachedApis = new HashSet <string> {
                "", "orgs/netflix", "orgs/netflix/members", "orgs/netflix/repos"
            };
            var gitApiViewManager    = new GitApiViewManager("Netflix");
            var endpointCacheManager = new EndpointCacheManager(netflixCachedApis, gitApiViewManager);
            var gitRequestHandler    = new GitRequestHandler(gitToken);
            var endpointProxy        = new EndpointProxy(gitRequestHandler, endpointCacheManager, TimeSpan.FromMinutes(15), TimeSpan.FromMinutes(1));

            services.AddScoped(typeof(IEndpointCacheManager), serviceProvider => endpointCacheManager);
            services.AddScoped(typeof(IRequestHandler), serviceProvider => gitRequestHandler);
            services.AddScoped(typeof(IEndpointProxy), serviceProvider => endpointProxy);
            services.AddScoped(typeof(IApiViewManager), serviceProvider => gitApiViewManager);
        }