Ara
Generic filters
Exact matches only
Filter by Custom Post Type
Ana Sayfa / ASP.NET / Asp.net ile wordpress kontrollerine api erişim

Asp.net ile wordpress kontrollerine api erişim

Asp.net ile wordpress kontrollerine api erişim WordPress’in yeni sürümleri yönetici kontrol paneline dahil olan oldukça kullanışlı bir widget’a sahiptir. Widget, kullanıcının çalıştırdığı tarayıcının sürümünü kullanıcı aracısı aracılığıyla denetler ve güvenebileceği bir sürüm değilse örneğin 6 versiyonu veya yükseltmesi varsa Firefox 3.x bunları uyarır.

Aşağıdaki kod, System.Web.Cache’in varlığına dayalı olarak System.Web.Cache veya bir in-memory sözlüğünde temelde bir sarıcı olan BiaCache adlı bir sınıf kullanır. Kullanımınıza bağlı olarak ufak bir değişiklik yapılması gerekecektir. Kullanıcı aracısına göre sonuçları bir hafta boyunca önbelleğe alıyorum.

WordPress hizmetinden gelen dizeyi serileştirmek için c# Serialization kitaplığını kullanmamız gerecektir.

Asp.net ile wordpress kontrollerine api erişim

var browserInfo = new HappyBrowsingHelper().GetBrowserInfo(Request.UserAgent);

Web hizmetinin sonuçları BrowserInfo adlı bir model nesnesinde saklanır:

public BrowserInfo GetBrowserInfo(string userAgent)
{
if (string.IsNullOrWhiteSpace(userAgent))
return new BrowserInfo();

var key = “__GetBrowserInfo_” + userAgent;
var item = BiaCache.Get(key);
if (item == null)
{
string serializedResponse = null;
try
{
var postData = “useragent=” + userAgent;

var request = WebRequest.Create(“http://api.wordpress.org/core/browse-happy/1.0/”);
request.Method = “POST”;
request.ContentType = “application/x-www-form-urlencoded”;
request.ContentLength = postData.Length;
using (var writeStream = request.GetRequestStream())
{
var encoding = new UTF8Encoding();
var bytes = encoding.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
}

using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
using (var reader = new StreamReader(responseStream, Encoding.UTF8))
{
serializedResponse = reader.ReadToEnd();
}
}
}

var serializer = new PhpSerializer();
var result = (Hashtable) serializer.Deserialize(serializedResponse);
item = new BrowserInfo
{
Name = ToStringOrNull(result[“name”]),
Version = ToStringOrNull(result[“version”]),
Url = ToStringOrNull(result[“update_url”]),
ImageUrl = ToStringOrNull(result[“img_src_ssl”]),
CurrentVersion = ToStringOrNull(result[“current_version”]),
HasUpgrade = (bool) result[“upgrade”],
IsInsecure = (bool) result[“insecure”] };

BiaCache.Add(key, item, (int) TimeSpan.FromDays(7).TotalMinutes, System.Web.Caching.CacheItemPriority.AboveNormal);
}
catch (Exception ex)
{
Log.Fatal(“Error getting browser info from wordpress 🙁 nUser agent: ” + userAgent + “nResult: ” + (serializedResponse ?? string.Empty) + “nn” + ex, ex);
item = new BrowserInfo();
}
}
return item;
}

private static string ToStringOrNull(object o)
{
return o == null ? null : o.ToString();
}


Ayrıca bknz.

NHibernate OrderBy Random QueryOver Desteği

NHibernate OrderBy Random QueryOver Desteği ve ayrıca nhibernate için FreeTextExpression makalemizi okuyunuz. NHibernate QueryOver Desteği Veritabanından rasgele …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir