Esempio n. 1
0
        public void Start()
        {
            if (this.listener.IsListening)
                throw new ArgumentException("already listening");
            this.listener.Start();
            Log.Message($"Web server started at {url}");

            CancellationTokenSource source = new CancellationTokenSource();
            CancellationToken token = source.Token;

            TaskFactory taskFactory = new TaskFactory(token, TaskCreationOptions.LongRunning, TaskContinuationOptions.LongRunning, TaskScheduler.Default);
            this.listenerTask = taskFactory.StartNew(() => {
                while (!token.IsCancellationRequested) {
                    var context = this.listener.GetContextAsync();
                    var httpRequest = context.Result.Request;
                    var request = new WebHookRequest() {Request = HttpRequestParser.Extract(httpRequest)};
                    this.requests.Enqueue(request);
                    var response = context.Result.Response;
                    response.StatusCode = 200;

                    var message = System.Text.Encoding.UTF8.GetBytes("OK");
                    response.ContentLength64 = message.Length;
                    response.ContentType = "text";
                    var outputstream = response.OutputStream;
                    outputstream.Write(message, 0, message.Length);
                    outputstream.Close();
                }
            }, token);
        }
Esempio n. 2
0
        public void Start()
        {
            if (this.listener.IsListening)
            {
                throw new ArgumentException("already listening");
            }
            this.listener.Start();
            Log.Message($"Web server started at {url}");

            CancellationTokenSource source = new CancellationTokenSource();
            CancellationToken       token  = source.Token;

            TaskFactory taskFactory = new TaskFactory(token, TaskCreationOptions.LongRunning, TaskContinuationOptions.LongRunning, TaskScheduler.Default);

            this.listenerTask = taskFactory.StartNew(() => {
                while (!token.IsCancellationRequested)
                {
                    var context     = this.listener.GetContextAsync();
                    var httpRequest = context.Result.Request;
                    var request     = new WebHookRequest()
                    {
                        Request = HttpRequestParser.Extract(httpRequest)
                    };
                    this.requests.Enqueue(request);
                    var response        = context.Result.Response;
                    response.StatusCode = 200;

                    var message = System.Text.Encoding.UTF8.GetBytes("OK");
                    response.ContentLength64 = message.Length;
                    response.ContentType     = "text";
                    var outputstream         = response.OutputStream;
                    outputstream.Write(message, 0, message.Length);
                    outputstream.Close();
                }
            }, token);
        }
Esempio n. 3
0
 static void ProcessWebHook(GitLabWrapper gitLabWrapper, string serviceUser, WebHookRequest request, bool supportSendingMessages, string farmTaskName) {
     var hookType = ProjectHookClient.ParseHookType(request);
     if (hookType == null)
         return;
     Log.Message($"Web hook received.");
     Log.Message($"Web hook type: {hookType.HookType}.");
     var hook = ProjectHookClient.ParseHook(hookType);
     if (hook.HookType == ProjectHookType.push)
         ProcessPushHook((PushHookClient)hook);
     else if (hook.HookType == ProjectHookType.merge_request)
         ProcessMergeRequestHook(gitLabWrapper, serviceUser, (MergeRequestHookClient)hook, supportSendingMessages, farmTaskName);
     else if (hook.HookType == ProjectHookType.build)
         ProcessBuildHook(gitLabWrapper, serviceUser, (BuildHookClient)hook, supportSendingMessages, farmTaskName);
 }