Skip to content

Instantly share code, notes, and snippets.

View darrelmiller's full-sized avatar

Darrel darrelmiller

View GitHub Profile
@darrelmiller
darrelmiller / gist:1986167
Created March 6, 2012 13:05
tekpub-login
GET /login
=>
200 OK
Content-Type: application/hal+json
{"_links": {
"self": { "href" : "/Login"},
"urn:tekpub:userhome" : { "href" : "/user/95/home"}
},
"Message" : "Welcome Joe"
@darrelmiller
darrelmiller / gist:1986172
Created March 6, 2012 13:06
Tekpub - user home
GET /user/95/home
=>
200 OK
Content-Type: application/hal+json
{ "_links": {
"self" : { "href" :"/user/95/home" },
"urn:tekpub:allproductions" : { "href" : "/user/95/allproductions", "title" : "All productions" },
"urn:tekpub:newepisodes" : { "href" : "/episodes/new", "title" : "New Episodes" },
"urn:tekpub:productionsbycategory" : { "href" : "/productions{?category}" }
"urn:tekpub:categories" : { "href" : "/categories" }
@darrelmiller
darrelmiller / gist:1986176
Created March 6, 2012 13:07
Tekpub - all productions
GET /user/95/allproductions
=>
200 OK
Content-Type: application/hal+json
{
"_links" : {
"self" : { "href" : "/user/95/allproductions" },
},
"name" : "Joe",
@darrelmiller
darrelmiller / gist:1986182
Created March 6, 2012 13:09
Tekpub - production
GET /production/22
=>
200 OK
Content-Type: application/hal+json
{
"_links" : {
"self" : { "href" : "/production/22" },
},
"title" : "Rails runs rings round ReST resource representations",
<apiResults>
<resource rel="self" href="/">
<link rel="urn:tekpub:login" href="/Login"/>
</resource>
<resource rel="self" href="/Login">
<Message>Welcome Joe</Message>
<link rel="urn:tekpub:userhome" href="/user/95/home"/>
</resource>
@darrelmiller
darrelmiller / gist:1989131
Created March 6, 2012 21:46
Conneg with quality
[TestMethod]
public void ConnegTest()
{
var selector = new FormatterSelector();
var response = new HttpResponseMessage();
response.RequestMessage = new HttpRequestMessage();
var headers = response.RequestMessage.Headers;
headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json",0.8));
public class PlainTextFormatter : MediaTypeFormatter
{
public PlainTextFormatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
}
protected override System.Threading.Tasks.Task<object> OnReadFromStreamAsync(Type type, System.IO.Stream stream, HttpContentHeaders contentHeaders, FormatterContext formatterContext)
{
return new Task<object>(() =>
@darrelmiller
darrelmiller / gist:2026145
Created March 13, 2012 02:04
ThroughputMessageHandler
public class ThroughputMessageHandler : DelegatingHandler
{
private readonly ILogger _logger;
private Timer _timer;
private int _count;
public ThroughputMessageHandler(ILogger logger)
{
_logger = logger;
_count = 0;
_timer = new Timer(new TimerCallback(timerCallback),null,1000,1000);
@darrelmiller
darrelmiller / gist:2354832
Created April 10, 2012 21:46
GET Customer Api
// CustomerController
public override Stream Get() {
var model = new CustomerModel(Container, _CustomerId);
var view = new CustomerDetailView(Container);
return view.Render(model);
@darrelmiller
darrelmiller / gist:2504054
Created April 26, 2012 23:17
SimpleFormatter<T>
public class SimpleFormatter<T> : MediaTypeFormatter
{
private readonly Action<T,Stream> _write;
private readonly Func<Stream,T> _read;
public SimpleFormatter(MediaTypeHeaderValue mediatype, Func<Stream,T> read, Action<T,Stream> write)
{
_write = write;
_read = read;
SupportedMediaTypes.Add(mediatype);