2 Mayıs 2018 Çarşamba

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();



Asp.net ile wordpress kontrollerine api erişim

Hiç yorum yok:

Yorum Gönder