Imports System.Xml
Partial Class FeedMap
Inherits System.Web.UI.Page
Dim place As String = ""
Dim lat As Double = 0
Dim lon As Double = 0
Dim count As Integer = 50
Dim rssUrl As String = ""
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
place = Request.QueryString("place")
Catch ex As Exception
End Try
Try
lat = Double.Parse(Request.QueryString("lat"))
Catch ex As Exception
End Try
Try
lon = Double.Parse(Request.QueryString("lon"))
Catch ex As Exception
End Try
Try
count = Double.Parse(Request.QueryString("count"))
Catch ex As Exception
End Try
Try
rssUrl = Request.QueryString("url")
If rssUrl <> "" Then
Dim inputURL As String = "http://www.feedmap.net/blogmap/services/rest.ashx?method=blogmap.getblogmap&feed=" & rssUrl
Dim xRead As New XmlTextReader(inputURL)
xRead.ReadStartElement()
Do While xRead.Read = True
If xRead.IsStartElement = True Then
If xRead.Name = "latitude" Then
lat = Double.Parse(xRead.ReadString)
End If
If xRead.Name = "longitude" Then
lon = Double.Parse(xRead.ReadString)
End If
End If
Loop
xRead = Nothing
End If
Catch ex As Exception
End Try
BuildRSS()
End Sub
Private Sub BuildRSS()
My.Response.Clear()
My.Response.ContentType = "text/xml"
My.Response.ContentEncoding = System.Text.Encoding.UTF8
Dim stream As New System.IO.MemoryStream
Dim XMLwrite As New XmlTextWriter(stream, System.Text.Encoding.UTF8)
XMLwrite.WriteStartDocument()
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteStartElement("rss")
XMLwrite.WriteAttributeString("version", "2.0")
XMLwrite.WriteAttributeString("xmlns:georss", "http://www.georss.org/georss")
XMLwrite.WriteAttributeString("xmlns:gml", "http://www.opengis.net/gml")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteStartElement("channel")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("generator", "TimHibbard.com")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("title", "FeedMap RSS Feed")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("link", "http://feedmap.net")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("description", "GeoRSS tagged FeedMap")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("language", "en-us")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("managingEditor", "thibbard@engraph.com (Tim Hibbard)")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("webMaster", "thibbard@engraph.com (Tim Hibbard)")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("copyright", "Tim Hibbard 2006")
XMLwrite.WriteWhitespace(Environment.NewLine)
Dim url As String = "http://feedmap.net/blogmap/services/rest.ashx?method=blogmap.search"
If place <> "" Then
url += "&place=" & place
End If
If lat <> 0 Then
url += "&lat=" & lat.ToString
End If
If lon <> 0 Then
url += "&lon=" & lon.ToString
End If
url += "&count=" & count.ToString
Dim xRead As New XmlTextReader(url)
xRead.ReadStartElement()
Do While xRead.Read = True
If xRead.IsStartElement = True Then
If xRead.Name = "blog" Then
Dim name As String = xRead.GetAttribute("name")
Dim blogUrl As String = xRead.GetAttribute("url")
Dim rssUrl As String = xRead.GetAttribute("xmlurl")
Dim feedLat As Double = 0
Dim feedLon As Double = 0
Dim city As String = ""
Dim state As String = ""
XMLwrite.WriteStartElement("item")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("title", name)
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("link", blogUrl)
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("pubDate", BuildPubDate(Now))
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("guid", blogUrl)
XMLwrite.WriteWhitespace(Environment.NewLine)
xRead.ReadToFollowing("latitude")
feedLat = xRead.ReadString
xRead.ReadToFollowing("longitude")
feedLon = xRead.ReadString
xRead.ReadToFollowing("city")
city = xRead.ReadString
xRead.ReadToFollowing("div")
state = xRead.ReadString
Dim desc As String = "" & name & "'s blog (RSS) in " & city & ", " & state & " "
XMLwrite.WriteElementString("description", desc)
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("author", "thibbard@engraph.com (Tim Hibbard)")
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteElementString("georss:point", feedLat & " " & feedLon)
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteEndElement()
XMLwrite.WriteWhitespace(Environment.NewLine)
End If
End If
Loop
xRead.Close()
xRead = Nothing
XMLwrite.WriteEndElement()
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteEndElement()
XMLwrite.WriteWhitespace(Environment.NewLine)
XMLwrite.WriteEndDocument()
XMLwrite.Flush()
Dim reader As IO.StreamReader
stream.Position = 0
reader = New IO.StreamReader(stream)
Dim bytes() As Byte = System.Text.Encoding.UTF8.GetBytes(reader.ReadToEnd())
My.Response.BinaryWrite(bytes)
My.Response.End()
End Sub
Private Function BuildPubDate(ByVal d As Date) As String
Try
Dim RV As String
Dim day As String = d.Day.ToString
If day.Length = 1 Then day = "0" & day
Dim month As String = d.Month.ToString
Select Case month
Case "1"
month = "January"
Case "2"
month = "February"
Case "3"
month = "March"
Case "4"
month = "April"
Case "5"
month = "May"
Case "6"
month = "June"
Case "7"
month = "July"
Case "8"
month = "August"
Case "9"
month = "September"
Case "10"
month = "October"
Case "11"
month = "November"
Case "12"
month = "December"
End Select
Dim Mtime As String = ""
Dim mDate As Date = d.ToUniversalTime
If mDate.Hour.ToString.Length = 1 Then
Mtime = "0" & mDate.Hour.ToString
Else
Mtime = mDate.Hour.ToString
End If
Mtime += ":"
If mDate.Minute.ToString.Length = 1 Then
Mtime += "0" & mDate.Minute.ToString
Else
Mtime += mDate.Minute.ToString
End If
Mtime += ":"
If mDate.Second.ToString.Length = 1 Then
Mtime += "0" & mDate.Second.ToString
Else
Mtime += mDate.Second.ToString
End If
RV = d.DayOfWeek.ToString.Substring(0, 3)
RV += ", " & day & " " & month.Substring(0, 3)
RV += " " & d.Year.ToString & " " & Mtime & " GMT"
Return RV
Catch ex As Exception
Return ""
End Try
End Function
End Class
|