public async Task<ActionResult> PushChannelAsync(string id)
{
var inbox = await this.GetInboxAsync(id);
if (this.Request.Form["channel_uri"] != null)
{
var channelUri = new Uri(this.Request.Form["channel_uri"], UriKind.Absolute);
var content = this.Request.Form["channel_content"];
Requires.Argument(content == null || content.Length <= 4096, "content", "Push content too large");
inbox.PushChannelUri = channelUri.AbsoluteUri;
inbox.PushChannelContent = content;
inbox.ClientPackageSecurityIdentifier = this.Request.Form["package_security_identifier"];
}
else if (this.Request.Form["wp8_channel_uri"] != null)
{
var channelUri = new Uri(this.Request.Form["wp8_channel_uri"], UriKind.Absolute);
var content = this.Request.Form["wp8_channel_content"];
Requires.Argument(content == null || content.Length <= 4096, "content", "Push content too large");
inbox.WinPhone8PushChannelUri = channelUri.AbsoluteUri;
inbox.WinPhone8PushChannelContent = content;
inbox.WinPhone8ToastText1 = this.Request.Form["wp8_channel_toast_text1"];
inbox.WinPhone8ToastText2 = this.Request.Form["wp8_channel_toast_text2"];
inbox.WinPhone8TileTemplate = this.Request.Form["wp8_channel_tile_template"];
}
else if (this.Request.Form["gcm_registration_id"] != null)
{
inbox.GoogleCloudMessagingRegistrationId = this.Request.Form["gcm_registration_id"];
}
else if (this.Request.Form["ios_device_token"] != null)
{
inbox.ApplePushNotificationGatewayDeviceToken = this.Request.Form["ios_device_token"];
}
else
{
// No data was posted. So skip updating the entity.
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
}
this.InboxTable.UpdateObject(inbox);
await this.InboxTable.SaveChangesWithMergeAsync(inbox);
return new HttpStatusCodeResult(HttpStatusCode.NoContent);
}