def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for entryXmlNode in doc.GetElementsByTagName("entry"): entry = Entry() for xmlNode in entryXmlNode.ChildNodes: if xmlNode.Name.Equals("title"): entry.Title = xmlNode.InnerText elif xmlNode.Name.Equals("issued"): entry.Created = DateTime.Parse( xmlNode.InnerText) elif xmlNode.Name.Equals("modified"): entry.Modified = DateTime.Parse( xmlNode.InnerText) elif xmlNode.Name.Equals("link"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("href"): entry.Resource = Uri(attribute.Value) elif xmlNode.Name.Equals("author"): for childXmlNode in xmlNode.ChildNodes: if childXmlNode.Name.Equals("name"): entry.Author = childXmlNode.InnerText entry.Image = Uri( "http://www.google.co.jp/options/icons/gmail.gif") entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onUpdate(): if NetworkInterface.GetIsNetworkAvailable(): try: response = None stream = None try: response = request.GetResponse() stream = response.GetResponseStream() doc = XmlDocument() doc.Load(stream) for entryXmlNode in doc.GetElementsByTagName("entry"): entry = Entry() for xmlNode in entryXmlNode.ChildNodes: if xmlNode.Name.Equals("title"): entry.Title = xmlNode.InnerText elif xmlNode.Name.Equals("issued"): entry.Created = DateTime.Parse(xmlNode.InnerText) elif xmlNode.Name.Equals("modified"): entry.Modified = DateTime.Parse(xmlNode.InnerText) elif xmlNode.Name.Equals("link"): for attribute in xmlNode.Attributes: if attribute.Name.Equals("href"): entry.Resource = Uri(attribute.Value) elif xmlNode.Name.Equals("author"): for childXmlNode in xmlNode.ChildNodes: if childXmlNode.Name.Equals("name"): entry.Author = childXmlNode.InnerText entry.Image = Uri("http://www.google.co.jp/options/icons/gmail.gif") entryList.Add(entry) finally: if stream is not None: stream.Close() if response is not None: response.Close() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onExecute(): if NetworkInterface.GetIsNetworkAvailable(): try: postResponse = None postResponseStream = None postStreamReader = None statusCode = None isPosted = False try: postRequestStream = None try: bytes = Encoding.ASCII.GetBytes(String.Empty) postRequestStream = postRequest.GetRequestStream() postRequestStream.Write(bytes, 0, bytes.Length) finally: if postRequestStream is not None: postRequestStream.Close() postResponse = postRequest.GetResponse() if postResponse.StatusCode == HttpStatusCode.OK: postResponseStream = postResponse.GetResponseStream() postStreamReader = StreamReader(postResponseStream) jsonDictionary = JsonDecoder.decode(postStreamReader.ReadToEnd()) if jsonDictionary is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(jsonDictionary) and jsonDictionary.ContainsKey("id"): isPosted = True statusCode = postResponse.StatusCode.ToString() finally: if postStreamReader is not None: postStreamReader.Close() if postResponseStream is not None: postResponseStream.Close() if postResponse is not None: postResponse.Close() if isPosted: updateResponse = None updateStream = None updateStreamReader = None try: updateResponse = updateRequest.GetResponse() updateStream = updateResponse.GetResponseStream() updateStreamReader = StreamReader(updateStream) jsonDictionary = JsonDecoder.decode(updateStreamReader.ReadToEnd()) if jsonDictionary is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(jsonDictionary) and jsonDictionary.ContainsKey("data") and jsonDictionary["data"] is not None and clr.GetClrType(Array).IsInstanceOfType(jsonDictionary["data"]): for obj in jsonDictionary["data"]: if obj is not None and clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj): entry = Entry() userId = None if obj.ContainsKey("id"): if obj["id"] is not None: array = obj["id"].Split('_') if array.Length == 2: entry.Resource = Uri(String.Format("http://www.facebook.com/{0}/posts/{1}", array[0], array[1])) if obj.ContainsKey("from"): if obj["from"] is not None: if clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj["from"]): entry.Author = obj["from"]["name"] if obj["from"].ContainsKey("id"): userId = obj["from"]["id"] if obj.ContainsKey("created_time"): if obj["created_time"] is not None: entry.Created = DateTime.Parse(obj["created_time"]) if obj.ContainsKey("updated_time"): if obj["updated_time"] is not None: entry.Modified = DateTime.Parse(obj["updated_time"]) if obj.ContainsKey("message"): if obj["message"] is not None: title = Regex.Replace(obj["message"], "[\r\n]", String.Empty, RegexOptions.CultureInvariant) if title.Length > 100: title = title.Remove(100, title.Length - 100) entry.Title = title if entry.Resource is not None and userId is not None: entry.Image = Uri(String.Format("https://graph.facebook.com/{0}/picture?access_token={1}", userId, urlEncode(accessToken))) entryList.Add(entry) finally: if updateStreamReader is not None: updateStreamReader.Close() if updateStream is not None: updateStream.Close() if updateResponse is not None: updateResponse.Close() return statusCode except WebException, e: return e.Response.StatusCode.ToString() except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace)
def onDispatch(task): global httpListener if task.Exception is None: httpListener.GetContextAsync().ContinueWith[List[Entry]](Func[Task[HttpListenerContext], List[Entry]](onDispatch), TaskContinuationOptions.LongRunning).ContinueWith(Action[Task[List[Entry]]](onCompleted), context) try: if task.Result.Request.HttpMethod.Equals(WebRequestMethods.Http.Post) and task.Result.Request.Url.AbsolutePath.Equals("/alert"): if task.Result.Request.ContentType.Equals("application/json"): stream = None streamReader = None try: stream = task.Result.Request.InputStream streamReader = StreamReader(stream) jsonArray = JsonDecoder.decode(streamReader.ReadToEnd()) if jsonArray is not None and clr.GetClrType(Array).IsInstanceOfType(jsonArray): entryList = List[Entry]() for obj in jsonArray: if clr.GetClrType(Dictionary[String, Object]).IsInstanceOfType(obj): entry = Entry() if obj.ContainsKey("resource") and clr.GetClrType(String).IsInstanceOfType(obj["resource"]): entry.Resource = Uri(obj["resource"]) if obj.ContainsKey("title") and clr.GetClrType(String).IsInstanceOfType(obj["title"]): entry.Title = obj["title"] if obj.ContainsKey("description") and clr.GetClrType(String).IsInstanceOfType(obj["description"]): entry.Description = obj["description"] if obj.ContainsKey("author") and clr.GetClrType(String).IsInstanceOfType(obj["author"]): entry.Author = obj["author"] if obj.ContainsKey("created") and clr.GetClrType(String).IsInstanceOfType(obj["created"]): entry.Created = DateTime.Parse(obj["created"]) if obj.ContainsKey("modified") and clr.GetClrType(String).IsInstanceOfType(obj["modified"]): entry.Modified = DateTime.Parse(obj["modified"]) if obj.ContainsKey("image") and clr.GetClrType(String).IsInstanceOfType(obj["image"]): entry.Image = Uri(obj["image"]) if obj.ContainsKey("tags") and clr.GetClrType(Array).IsInstanceOfType(obj["tags"]): for o in obj["tags"]: if clr.GetClrType(String).IsInstanceOfType(o): entry.Tags.Add(o) entryList.Add(entry) else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest) return None return entryList else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.BadRequest) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.UnsupportedMediaType) else: task.Result.Response.StatusCode = Convert.ToInt32(HttpStatusCode.Forbidden) except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) finally:
def onDispatch(task): global httpListener if task.Exception is None: httpListener.GetContextAsync().ContinueWith[List[Entry]]( Func[Task[HttpListenerContext], List[Entry]](onDispatch), TaskContinuationOptions.LongRunning).ContinueWith( Action[Task[List[Entry]]](onCompleted), context) try: if task.Result.Request.HttpMethod.Equals( WebRequestMethods.Http.Post ) and task.Result.Request.Url.AbsolutePath.Equals( "/alert"): if task.Result.Request.ContentType.Equals( "application/json"): stream = None streamReader = None try: stream = task.Result.Request.InputStream streamReader = StreamReader(stream) jsonArray = JsonDecoder.decode( streamReader.ReadToEnd()) if jsonArray is not None and clr.GetClrType( Array).IsInstanceOfType(jsonArray): entryList = List[Entry]() for obj in jsonArray: if clr.GetClrType(Dictionary[ String, Object]).IsInstanceOfType(obj): entry = Entry() if obj.ContainsKey( "resource" ) and clr.GetClrType( String).IsInstanceOfType( obj["resource"]): entry.Resource = Uri( obj["resource"]) if obj.ContainsKey( "title" ) and clr.GetClrType( String).IsInstanceOfType( obj["title"]): entry.Title = obj["title"] if obj.ContainsKey( "description" ) and clr.GetClrType( String).IsInstanceOfType( obj["description"]): entry.Description = obj[ "description"] if obj.ContainsKey( "author" ) and clr.GetClrType( String).IsInstanceOfType( obj["author"]): entry.Author = obj["author"] if obj.ContainsKey( "created" ) and clr.GetClrType( String).IsInstanceOfType( obj["created"]): entry.Created = DateTime.Parse( obj["created"]) if obj.ContainsKey( "modified" ) and clr.GetClrType( String).IsInstanceOfType( obj["modified"]): entry.Modified = DateTime.Parse( obj["modified"]) if obj.ContainsKey( "image" ) and clr.GetClrType( String).IsInstanceOfType( obj["image"]): entry.Image = Uri(obj["image"]) if obj.ContainsKey( "tags") and clr.GetClrType( Array ).IsInstanceOfType( obj["tags"]): for o in obj["tags"]: if clr.GetClrType( String ).IsInstanceOfType(o): entry.Tags.Add(o) entryList.Add(entry) else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.BadRequest) return None return entryList else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.BadRequest) finally: if streamReader is not None: streamReader.Close() if stream is not None: stream.Close() else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.UnsupportedMediaType) else: task.Result.Response.StatusCode = Convert.ToInt32( HttpStatusCode.Forbidden) except Exception, e: Trace.WriteLine(e.clsException.Message) Trace.WriteLine(e.clsException.StackTrace) finally: