/// <summary> /// Object callback /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void YTplayer_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e) { // message is in xml format so we need to parse it XmlDocument document = new XmlDocument(); document.LoadXml(e.request); // get attributes to see which command flash is trying to call XmlAttributeCollection attributes = document.FirstChild.Attributes; String command = attributes.Item(0).InnerText; // get parameters XmlNodeList list = document.GetElementsByTagName("arguments"); List <string> listS = (from XmlNode l in list select l.InnerText).ToList(); // Interpret command switch (command) { case "onYouTubePlayerReady": YTready(listS[0]); break; case "YTStateChange": YTStateChange(listS[0]); break; case "YTError": YTStateError(listS[0]); break; case "document.location.href.toString": YTplayer.SetReturnValue("<string>http://www.youtube.com/watch?v=" + currentlyPlayingVideoId + "</string>"); break; default: Console.Write("YTplayer_FlashCall: (unknownCommand)\r\n"); break; } }
private string YTplayer_CallFlash(string ytFunction) { string flashXMLrequest = ""; string response = ""; string flashFunction = ""; List <string> flashFunctionArgs = new List <string>(); Regex func2xml = new Regex(@"([a-z][a-z0-9]*)(\(([^)]*)\))?", RegexOptions.Compiled | RegexOptions.IgnoreCase); Match fmatch = func2xml.Match(ytFunction); if (fmatch.Captures.Count != 1) { Console.Write("bad function request string"); return(""); } flashFunction = fmatch.Groups[1].Value.ToString(); flashXMLrequest = "<invoke name=\"" + flashFunction + "\" returntype=\"xml\">"; if (fmatch.Groups[3].Value.Length > 0) { flashFunctionArgs = parseDelimitedString(fmatch.Groups[3].Value); if (flashFunctionArgs.Count > 0) { flashXMLrequest += "<arguments><string>"; flashXMLrequest += string.Join("</string><string>", flashFunctionArgs); flashXMLrequest += "</string></arguments>"; } } flashXMLrequest += "</invoke>"; try { Console.Write("YTplayer_CallFlash: \"" + flashXMLrequest + "\"\r\n"); response = YTplayer.CallFunction(flashXMLrequest); Console.Write("YTplayer_CallFlash_response: \"" + response + "\"\r\n"); } catch { Console.Write("YTplayer_CallFlash: error \"" + flashXMLrequest + "\"\r\n"); } return(response); }