本文整理汇总了C#中Framework.ExecuteTask方法的典型用法代码示例。如果您正苦于以下问题:C# Framework.ExecuteTask方法的具体用法?C# Framework.ExecuteTask怎么用?C# Framework.ExecuteTask使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Framework
的用法示例。
在下文中一共展示了Framework.ExecuteTask方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ListsModule
public ListsModule(Framework framework, IDocumentStore documentStore, CreateListCommand createListCommand)
: base("/lists")
{
_createListCommand = createListCommand;
_documentStore = documentStore;
_framework = framework;
Put["/upload-list"] = api =>
{
var model = this.Bind<ServiceEndpoints.Lists.UploadContacts>();
var file = Request.Files.FirstOrDefault();
if (file == null)
throw new ArgumentNullException("no files was provided");
var path = Guid.NewGuid().ToString();
using (var diskFile = File.OpenWrite(path))
{
file.Value.CopyTo(diskFile);
}
var importContactsFromCsvTask = new ImportContactsFromCsvTask
{
File = path,
ListId = model.ListId
};
_framework.ExecuteTask(importContactsFromCsvTask);
return importContactsFromCsvTask.Id;
};
Get["/"] = api =>
{
using (var session = _documentStore.OpenSession())
{
return Response.AsJson(session.Query<ListDescriptor>().ToList());
}
};
Get["/stats"] = api =>
{
using (var session = _documentStore.OpenSession())
{
var lists = session.Query<ListDescriptor>().ToList();
var listStats = lists.Select(listDescriptor => new
{
TotalContacts = session.Query<Contact>().Count(x => x.MemberOf.Any(p => p == listDescriptor.Id)),
listDescriptor.Id,
listDescriptor.Name
}).ToList();
return Response.AsJson(listStats);
}
};
Post["/"] = api =>
{
var model = this.Bind<ServiceEndpoints.Lists.CreateList>();
_createListCommand.Name = model.Name;
var listId = _framework.ExecuteCommand(_createListCommand);
return Response.AsJson(new ApiStringResult { Result = listId });
};
}
示例2: CreativeModule
public CreativeModule(Framework framework, IDocumentStore documentStore, AddCreativeCommand addCreativeCommand, Logger logger)
: base("/creative")
{
Post["/send"] = call =>
{
var model = this.Bind<ServiceEndpoints.Creative.Send>();
framework.ExecuteTask(new CreateCreativeFragmentsTask
{
CreativeId = model.CreativeId,
});
return Response.AsText("OK");
};
Post["/save"] = call =>
{
var model = this.Bind<ServiceEndpoints.Creative.SaveCreative>();
addCreativeCommand.HtmlBody = model.HtmlBody;
addCreativeCommand.TextBody = model.TextBody;
addCreativeCommand.Lists = new List<string> { model.ListId };
addCreativeCommand.Subject = model.Subject;
addCreativeCommand.UnsubscribeTemplateId = model.UnsubscribeTemplateId;
addCreativeCommand.DealUrl = model.DealUrl;
addCreativeCommand.FromName = model.FromName;
addCreativeCommand.FromAddressDomainPrefix = model.FromAddressDomainPrefix;
var creativeId = addCreativeCommand.Execute();
return Response.AsJson(new ApiStringResult { Result = creativeId });
};
Get["/getall"] = call =>
{
using (var session = documentStore.OpenSession())
{
return Response.AsJson(session.Query<Creative>().Customize(x => x.WaitForNonStaleResults()).ToList());
}
};
Get["/fragments"] = call =>
{
var model = this.Bind<ServiceEndpoints.Creative.FetchFragment>();
using (var session = documentStore.OpenSession())
{
var creativeFragmentId = "";
session.Advanced.UseOptimisticConcurrency = true;
while (true)
{
try
{
var creativeFragment = session.Query<CreativeFragment>()
.Customize(x => x.WaitForNonStaleResults(TimeSpan.FromMinutes(5)))
.Where(x => x.Status == FragmentStatus.Pending)
.ToList()
.FirstOrDefault();
if (creativeFragment == null)
{
logger.Info("No fragments were found");
return null;
}
creativeFragmentId = creativeFragment.Id;
creativeFragment.Status = FragmentStatus.Sending;
creativeFragment.FetchedBy = model.DroneId;
creativeFragment.FetchedAt = DateTime.UtcNow;
session.Store(creativeFragment);
session.SaveChanges();
logger.Info("creative was found with id {0} it has {1} contacts inside", creativeFragment.Id, creativeFragment.Recipients.Count);
return Response.AsJson(creativeFragment);
}
catch (ConcurrencyException ex)
{
logger.ErrorException(string.Format("While fetching creative fragment: {0} we had a cuncurrency error", creativeFragmentId), ex);
}
}
}
};
Get["/clone"] = _ =>
{
var creativeId = (string)Request.Query["creativeId"];
var listId = (string)Request.Query["listId"];
using (var session = documentStore.OpenSession())
{
var creative = session.Load<Creative>(creativeId);
if (creative == null)
return "Error";
session.Advanced.Evict(creative);
creative.Id = null;
creative.Lists.Clear();
creative.Lists.Add(listId);
//.........这里部分代码省略.........