Some or any of you might have used OOyala tool for you projects as its one of the best video management tools i have ever seen.
Some days back i have given a task to get ooyala integrated to our project and i decided to do it via their API but all the samples given on site are eighter in PHP or in Ruby but i want things to be done in c# so by following their documentation i have finally got the response from ooyala site.
Here i am showing you two functions and two properties.
1. _params: i have used sorted dictionary because ooyala demands that all parameters should be in acceding order.
2. Query type: specify which API should be called.
3. send_request(): It does the required encoding of parameters by using the secret and partner code and generated the URL by which XML response can be fetched.
4. getXMLResponse(): Get all XML from URL.
#region Properties private string PARTNET_CODE = "PARTNET_CODE"; private string PARTNET_SECRET = "PARTNET_SECRET"; private string _queryType = string.Empty; public string QueryType { get { return _queryType; } set { _queryType = value; } } private SortedDictionary<string, string> _params; public SortedDictionary<string, string> Params { get { return _params; } set { _params = value; } } #endregion #region Public function public string getXMLResponse() { string sUrl = send_request(); StringBuilder oBuilder = new StringBuilder(); StringWriter oStringWriter = new StringWriter(oBuilder); XmlTextReader oXmlReader = new XmlTextReader(sUrl); XmlTextWriter oXmlWriter = new XmlTextWriter(oStringWriter); while (oXmlReader.Read()) { oXmlWriter.WriteNode(oXmlReader, true); } oXmlReader.Close(); oXmlWriter.Close(); return oBuilder.ToString(); } /// <summary> /// Returns the URL for request parameters /// </summary> private string send_request() { string url = "http://api.ooyala.com/partner/" + QueryType + "?pcode=" + PARTNET_CODE; foreach (KeyValuePair<string, string> pair in _params) { PARTNET_SECRET += pair.Key + "=" + pair.Value; url += "&" + HttpUtility.UrlEncodeUnicode(pair.Key) + "=" + HttpUtility.UrlEncodeUnicode(pair.Value); } SHA256Managed sh = new SHA256Managed(); byte[] request = System.Text.Encoding.ASCII.GetBytes(PARTNET_SECRET); sh.Initialize(); byte[] b4bbuff = sh.ComputeHash(request, 0, request.Length); string hashString = System.Text.Encoding.ASCII.GetString(b4bbuff); string encryptedRequest = HttpUtility.UrlEncode((Convert.ToBase64String(b4bbuff)).Substring(0, 43)); url += "&signature=" + encryptedRequest; return url; } #endregion
Once you get the XMl response do what ever you want, Deserilise it and use it in c# code or parse it with jQuery choice is yours.
Hope it helps.
Happy coding.
Regards,
U
14 comments:
hi:
Thanks for posting your code. I'm getting an "invalid signature" error. Where you able to generate a valid signature using your code as posted. Thanks again!!!
Thanks Bclee, if you need any other help let me know.
HI I ma getting the same error "Invalid Signature"
Hi Anil,
Have you tired the exact code with your partner code ?
yes,I am using the right Partner & Secret code.Because I have copied it directly from Ooyala Account.
Is this issue may be with expires duration?
Can u share the prams list that you are passing to this class ?
http://www.ooyala.com/partner/labels?pcode=&expires=&signature=
I am passing pcode and expires
If I take expires=1314370579 signature is conatant in each request
and if I take it dynamic signature keep on changing.
In both case(static or dynamic expires values)it is not working
Please use this function for time stamp creation
private DateTime UnixEpoch = new DateTime(1970, 1, 1);
public int GetUnixTimestamp(DateTime dt)
{
TimeSpan span = dt - UnixEpoch;
return (int)span.TotalSeconds;
}
Thanks
Issue resolved I was not passing mode parameter
Thanks for the code but I am getting "The remote server returned an error: (400) Bad Request." error
I have provided pcode, expires, embedcode and signature in the URL.I am not getting why i am getting this error.
Please share the sample code where you are creating signature.
string url = "http://api.ooyala.com/partner/" + "query" + "?pcode=" + pcode + "&expires=" + GetUnixTimestamp().ToString();
PARTNER_SECRET = "embedCode=" + psecret;
SHA256Managed sh = new SHA256Managed();
byte[] request = System.Text.Encoding.ASCII.GetBytes(PARTNER_SECRET);
sh.Initialize();
byte[] b4bbuff = sh.ComputeHash(request, 0, request.Length);
string hashString = System.Text.Encoding.ASCII.GetString(b4bbuff);
string encryptedRequest = HttpUtility.UrlEncode((Convert.ToBase64String(b4bbuff)).Substring(0, 43));
url += "&" + HttpUtility.UrlEncodeUnicode("embedCode") + "=" + HttpUtility.UrlEncodeUnicode(psecret)
+ "&signature=" + encryptedRequest;
Post a Comment