Skip to content

Instantly share code, notes, and snippets.

View nest-don's full-sized avatar

nesty nest-don

View GitHub Profile
public SearchController(
ILogger<SearchController> logger,
Runtime runtime
)
{
_logger = logger;
_runtime = runtime;
_cache = _runtime.QueueClient.CreateRPCEndpoint(
_runtime.GetNest("cache"));
class Cache
{
public static void Main()
{
Runtime runtime = new Runtime(
QueueMode.Server | QueueMode.Client);
QueryRepository repo = new QueryRepository(
QueryContextFactory.Create(runtime));
// GET api/search
[HttpGet("{text}")]
public IActionResult Get(string text)
{
try
{
_logger.LogInformation("Query for {0} arrived", text);
// Search the cache for query
public byte[] GetRequest(byte[] data)
{
SearchQuery query = _repo.GetQuery(Encoding.UTF8.GetString(data));
List<SearchResult> cachedResults = null;
if (query != null && (DateTime.Now - query.Created).TotalSeconds < TTL)
{
// If its a previous non-stale query then use the
// results stored in the cache
cachedResults = _repo.
public async Task<SearchResult> SearchAsync(SearchQuery query)
{
string baseUrl = "https://api.bitbucket.org/2.0/teams/%7B6f461d1e-a3dd-433b-a0e3-7a69daf6ea47%7D/search/code?search_query="+
HttpUtility.UrlEncode(query.Text);
SearchResult result = new SearchResult();
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("User-Agent", "nest-don");
[HttpGet("{text}")]
public IActionResult Get(string text)
{
try
{
// 1. Dispatch search jobs
Dictionary<string, string> queryServices = new Dictionary<string, string>();
foreach (string service in new List<string>() { "github", "bitbucket" })
private string QueryService(string text, string service)
{
Inkton.Nest.Model.Nest searchNest = _runtime.GetNest(service);
SearchQuery query = new SearchQuery();
query.Id = _runtime.ComponentId + "." + DateTime.Now.Ticks.ToString();
query.Service = service;
query.MaxResults = 100;
query.Text = text;
private List<SearchResult> CollectResults(Dictionary<string, string> queryServices)
{
List<SearchResult> results = new List<SearchResult>();
int pendingResultsCount = queryServices.Count;
DateTime start = DateTime.Now;
while (pendingResultsCount > 0 && (DateTime.Now - start).TotalSeconds < 10 )
{
var returnedSingle = _runtime.ReceiveSingle<SearchResult>();
static void Main(string[] args)
{
Runtime runtime = new Runtime(QueueMode.Server | QueueMode.Client);
ILoggerFactory loggerFactory = new LoggerFactory()
.AddDebug(LogLevel.Debug)
.AddNesterLog(LogLevel.Debug);
ILogger logger = loggerFactory.CreateLogger<Bitbucket>();
BitbucketRepository repo = new BitbucketRepository(runtime, logger);
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> SendMessage(MessageView msgView)
{
// Send a push notification to Slack
_runtime.Chirpy.Chirp("Message [{0}] received by {1}, dispatching to workers",
msgView.Edit.Text, _runtime.ComponentId);
if (ModelState.IsValid)
{