Пример #1
0
        /// <summary>
        /// The main.
        /// </summary>
        /// <param name="args">
        /// The args.
        /// </param>
        private static void Main(string[] args)
        {
            // --------------------------------------------------------------------//
            // Don't change this from scimonshouse.net or you'll leak credentials! //
            // This is an internal-only development install
            // --------------------------------------------------------------------//
            string phabUrl = "https://phabricator.stwalkerster.co.uk/";

            phabUrl = "https://fab.scimonshouse.net/";

            string token = "api-pthzak4snefxww3rzllecspgilpj";


            token = "api-rul3ssevvzaedtdqxhdhg6sfzajv";

            var client = new ConduitClient(phabUrl, token);

            var maniphest = new Maniphest(client);

            var constraint = ManiphestSearchConstraintFactory.Statuses(new List <string> {
                "open"
            });
            var searchConstraints = new List <ApplicationEditorSearchConstraint> {
                constraint
            };
            IEnumerable <ManiphestTask> response = maniphest.Search(constraints: searchConstraints).ToList();
        }
Пример #2
0
        private List <BreadcrumbModel> GenerateBreadcrumbs(ConduitClient client, string slug)
        {
            dynamic page;
            var     breadcrumbs = new List <BreadcrumbModel>();
            var     slugBuilt   = "";
            var     parts       = slug.Split('/');

            for (int i = 0; i < parts.Length - 1; i++)
            {
                if (slugBuilt.Length > 0)
                {
                    slugBuilt += "/";
                }
                slugBuilt += parts[i];
                page       = this.m_Phabricator.GetWikiPage(client, slugBuilt);
                breadcrumbs.Add(new BreadcrumbModel
                {
                    Text = page.title,
                    Slug = this.RewriteSlug(page.slug)
                });
            }
            page = this.m_Phabricator.GetWikiPage(client, slug);
            breadcrumbs.Add(new BreadcrumbModel
            {
                Text = page.title,
                Slug = null
            });
            return(breadcrumbs);
        }
Пример #3
0
        public dynamic GetWikiHierarchy(ConduitClient client, string slug)
        {
            var hierarchy = this.WikiHierarchyCache.Get(slug);

            if (hierarchy == null)
            {
                try
                {
                    hierarchy = client.Do("phriction.hierarchy", new {
                        slug  = slug,
                        depth = 2
                    });
                }
                catch (ConduitException)
                {
                    // Ignore this error; Phabricator might not support
                    // the phriction.hierarchy method.
                    hierarchy = new List <object>();
                }
                if (hierarchy == null)
                {
                    throw new NotImplementedException(slug);
                }
                this.WikiHierarchyCache.Add(
                    new CacheItem(slug, hierarchy),
                    new CacheItemPolicy {
                    AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(15)
                }
                    );
            }
            return(hierarchy);
        }
Пример #4
0
        public ConduitClient GetConduitClient()
        {
            var client = new ConduitClient("http://code.redpointsoftware.com.au/api");

            client.Certificate = ConfigurationManager.AppSettings["ConduitCertificate"];
            client.User        = ConfigurationManager.AppSettings["ConduitUser"];
            return(client);
        }
Пример #5
0
        private void ConnectButton_Click(object sender, RoutedEventArgs e)
        {
            Console.WriteLine("Connecting to the TCP server.");

            if (!ConduitClient.Connect())
            {
                Console.WriteLine("Unable to connect to the TCP server.");
                return;
            }

            Console.WriteLine("Connected successfully.");

            ConduitClient.DataReceived += (o, ev) =>
            {
                switch (ev.Packet.PacketType)
                {
                case ConduitPacketType.Print:
                    Console.WriteLine(Encoding.Default.GetString(ev.Packet.Data));
                    break;

                case ConduitPacketType.ProcessSelect:
                    Console.WriteLine("Process selection received.");

                    Dispatcher.Invoke(() =>
                    {
                        var pid = Convert.ToInt32(Encoding.Default.GetString(ev.Packet.Data));

                        SelectedProcess.Process = Process.GetProcessById(pid);

                        var icon = ProcessUtility.GetProcessIcon(SelectedProcess.Process);

                        if (icon != null)
                        {
                            var source = Imaging.CreateBitmapSourceFromHIcon(icon.Handle, new Int32Rect(0, 0, icon.Width, icon.Height),
                                                                             BitmapSizeOptions.FromEmptyOptions());

                            SelectedProcess.Icon = source;
                        }
                        else
                        {
                            Console.WriteLine("Icon could not be resolved.");
                        }

                        SelectedProcessIcon.Source  = SelectedProcess.Icon;
                        SelectedProcessName.Content = SelectedProcess.Process.ProcessName;
                    });

                    break;
                }
            };

            ScriptListBox.IsEnabled   = true;
            ExecuteButton.IsEnabled   = true;
            TerminateButton.IsEnabled = false;
            ConnectButton.IsEnabled   = false;
        }
Пример #6
0
        public static void ExecuteScript(Script script)
        {
            Console.WriteLine($"Compiling: {script.Info.Name}.");

            script.Compile();

            Console.WriteLine($"Sending execution packet.");

            ConduitClient.Send(new ConduitPacket(ConduitPacketType.Execute, Encoding.Default.GetBytes(script.OutputPath)));
        }
Пример #7
0
        private WikiPageModel GetContentFor(ConduitClient client, string slug)
        {
            var page      = this.m_Phabricator.GetWikiPage(client, slug);
            var remarkup  = this.m_Phabricator.ProcessRemarkup(client, page.content);
            var hierarchy = this.m_Phabricator.GetWikiHierarchy(client, slug);

            return(new WikiPageModel
            {
                Title = page.title,
                Slug = page.slug,
                Content = new MvcHtmlString(remarkup),
                Children = this.ConvertHierarchyResultToList(hierarchy)
            });
        }
Пример #8
0
        public TychaiaTuesdayIssueModel GetTychaiaTuesdayIssue(ConduitClient client, int issue)
        {
            // Doesn't use ConduitClient yet, waiting on feedback to see whether there's a way
            // to get a specific issue out of Phame.  My concern is that the feed only returns the
            // last 10 or so items, so if someone tries to visit an ID more than 10 posts ago, we
            // won't be able to display it :/
            var feed  = this.GetFeed("2");
            var entry = feed.Entries.FirstOrDefault(
                x => x.Id.Uri == new Uri("http://code.redpointsoftware.com.au/phame/post/view/" + issue + "/"));

            return(new TychaiaTuesdayIssueModel
            {
                Title = entry.Title.Content,
                Content = entry.Content.Content
            });
        }
Пример #9
0
        public PhabricatorExternalProvider(IAppConfiguration appConfig, ILogger logger)
        {
            this.logger = logger;
            var url = appConfig.PhabUrl;
            var key = appConfig.PhabToken;

            if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(key))
            {
                this.active = false;
                return;
            }

            this.active = true;

            var conduitClient = new ConduitClient(url, key);

            this.paste = new Paste(conduitClient);
        }
Пример #10
0
        public dynamic GetWikiPage(ConduitClient client, string slug)
        {
            var page = this.WikiPageCache.Get(slug);

            if (page == null)
            {
                page = client.Do("phriction.info", new {
                    slug = slug
                });
                this.WikiPageCache.Add(
                    new CacheItem(slug, page),
                    new CacheItemPolicy {
                    AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(15)
                }
                    );
            }
            return(page);
        }
Пример #11
0
        public string ProcessRemarkup(ConduitClient client, string remarkup)
        {
            var sha1 = SHA1(remarkup);
            var html = RemarkupCache.Get(sha1) as string;

            if (html == null)
            {
                html = client.Do("remarkup.process", new {
                    context = "phriction",
                    content = remarkup
                }).content;
                this.RemarkupCache.Add(
                    new CacheItem(sha1, html),
                    new CacheItemPolicy {
                    SlidingExpiration = new TimeSpan(1, 0, 0)
                }
                    );
            }
            return(html);
        }
Пример #12
0
        public BugReporter(IAppConfiguration appConfig, ILogger logger)
        {
            this.logger = logger;
            var url = appConfig.PhabUrl;
            var key = appConfig.PhabToken;

            if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(key))
            {
                this.active = false;
                return;
            }

            this.active = true;

            var conduitClient = new ConduitClient(url, key);

            this.maniphest = new Maniphest(conduitClient);

            var phidLookup = new PHIDLookup(conduitClient);

            this.projectPhid = phidLookup.GetPHIDForObject("#eits")["#eits"];
        }
Пример #13
0
 public Maniphest(ConduitClient client)
     : base(client)
 {
 }
Пример #14
0
 public PHIDLookup(ConduitClient client)
 {
     this.client = client;
 }
Пример #15
0
 public Phrequent(ConduitClient client) : base(client)
 {
 }
Пример #16
0
 public ProjectWorkboardColumns(ConduitClient client)
     : base(client)
 {
 }
Пример #17
0
 public Projects(ConduitClient client)
     : base(client)
 {
     this.Columns = new ProjectWorkboardColumns(client);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConduitApplicationBase"/> class.
 /// </summary>
 /// <param name="client">
 /// The client.
 /// </param>
 protected ConduitApplicationBase(ConduitClient client)
 {
     this.client = client;
 }
Пример #19
0
 public Diffusion(ConduitClient client)
 {
     this.Repositories = new DiffusionRepository(client);
 }
Пример #20
0
        public static void TerminateScript()
        {
            Console.WriteLine("Sending termination packet.");

            ConduitClient.Send(new ConduitPacket(ConduitPacketType.Terminate));
        }
Пример #21
0
 internal DiffusionRepository(ConduitClient client) : base(client)
 {
 }
Пример #22
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConduitApplicationBase"/> class.
 /// </summary>
 /// <param name="client">
 /// The client.
 /// </param>
 public Files(ConduitClient client)
     : base(client)
 {
 }
Пример #23
0
 public Paste(ConduitClient client)
     : base(client)
 {
 }