- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
REM Юникод UTF-8 с сигнатурой.
Option Compare Text
Imports System
Imports System.Web
Imports ClassLibraryAll
Namespace HandlerAll
REM Вэб-запрос курсов валют и на какую дату.
Public Class Course
Implements IHttpHandler
REM Переопределяем метод ProcessRequest.
Public Sub ProcessRequest(ByVal oContext As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
'#region var
Dim b As Boolean
Dim iLang As Integer
Dim tDate1 As Date
Dim tDate2 As Date
Dim dD1 As Double
Dim dD2 As Double
Dim dE1 As Double
Dim dE2 As Double
Dim sAnswer As String 'текст ответа
Dim sResponse As String 'текст респонса
Dim oWebClient As New System.Net.WebClient
Dim oRegExDate1 As New System.Text.RegularExpressions.Regex("target\=_blank\s*>с \d+\.\d+\.\d+\s*<\/A>\s*<\/td>\s*<td>")
Dim oRegExInDate1 As New System.Text.RegularExpressions.Regex("\d+\.\d+\.\d+")
Dim oRegExDate2 As New System.Text.RegularExpressions.Regex("target\=_blank\s*>с \d+\.\d+\.\d+\s*<\/A>\s*<\/td>\s*<\/tr>")
Dim oRegExInDate2 As New System.Text.RegularExpressions.Regex("\d+\.\d+\.\d+")
Dim oRegExD1 As New System.Text.RegularExpressions.Regex("США<\/td>\s*<td><\/td>\s*<td\sclass\=""digit""\salign\=""right"">\d+,\d+ <\/td>")
Dim oRegExInD1 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'Dim oRegExD2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <IMG\salt\='.+'\sborder\=0\sheight\=8\shspace\=2\ssrc\=\/images\/.+\.gif\swidth\=7><\/td>\s*<\/tr>\s*<tr>\s*<td>")
Dim oRegExD2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <img\salt\='.+'\sborder\=""0""\sheight\=""8""\shspace\=""2""\ssrc\=""\/images\/.+\.gif""\swidth\=""7""><\/td>\s*<\/tr>\s*<tr>\s*<td>")
Dim oRegExInD2 As New System.Text.RegularExpressions.Regex("\d+,\d+")
Dim oRegExE1 As New System.Text.RegularExpressions.Regex("Евро<\/td>\s*<td><\/td>\s*<td\sclass\=""digit""\salign\=""right"">\d+,\d+ <\/td>")
Dim oRegExInE1 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'Dim oRegExE2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <IMG\salt\='.+'\sborder\=0\sheight\=8\shspace\=2\ssrc\=\/images\/.+\.gif\swidth\=7><\/td>\s*<\/tr>\s*<tr>\s*<td\s")
Dim oRegExE2 As New System.Text.RegularExpressions.Regex(">\d+,\d+ <img\salt\='.+'\sborder\=""0""\sheight\=""8""\shspace\=""2""\ssrc\=""\/images\/.+\.gif""\swidth\=""7""><\/td>\s*<\/tr>\s*<tr>\s*<td\s")
Dim oRegExInE2 As New System.Text.RegularExpressions.Regex("\d+,\d+")
'#endregion var
'#region ini
iLang = iInteger(oContext.Request.QueryString("iLang"))
Try
sAnswer = System.Text.Encoding.UTF8.GetString(oWebClient.DownloadData("http://cbr.ru/"))
tDate1 = oRegExInDate1.Match(oRegExDate1.Match(sAnswer).Value).Value
tDate2 = oRegExInDate2.Match(oRegExDate2.Match(sAnswer).Value).Value
dD1 = oRegExInD1.Match(oRegExD1.Match(sAnswer).Value).Value
dD2 = oRegExInD2.Match(oRegExD2.Match(sAnswer).Value).Value
dE1 = oRegExInE1.Match(oRegExE1.Match(sAnswer).Value).Value
dE2 = oRegExInE2.Match(oRegExE2.Match(sAnswer).Value).Value
Catch ex As Exception
'sResponse = "/*" & ex.Message & "dD1=" & oRegExInD1.Match(oRegExD1.Match(sAnswer).Value).Value & "dD2=" & oRegExInD2.Match(oRegExD2.Match(sAnswer).Value).Value & "dE1=" & oRegExInE1.Match(oRegExE1.Match(sAnswer).Value).Value & "dE2=" & oRegExInE2.Match(oRegExE2.Match(sAnswer).Value).Value & "*/"
sResponse = "/*0*/"
b = True
End Try
'#endregion ini
If b = False Then
....
...
...
куча говна
...
...
oContext.Response.Write(sResponse)
End Sub
REM Переопределяем свойство IsReusable.
Public ReadOnly Property IsReusable() As Boolean Implements System.Web.IHttpHandler.IsReusable
Get
Return False 'запрещем кеширование этого обработчика в оперативной памяти вэб-сервера.
End Get
End Property
End Class
End Namespace
А так мы получаем курс валют с локализацией.
Рассчитывалось использовать на высоконагруженном портале. типо еллоупэйджеса.
Через хэндлер.
Максим Прохоров вас будет ещё долго радовать.
ursus 23.04.2010 10:09 # 0
Case 0
sResponse = "textCourseD.parentNode.title=""Температ ура в Москве (gismeteo.ru) и курс ЦБ (cbr.ru) c " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
Case 1
sResponse = "textCourseD.parentNode.title=""The temperature in Moscow (gismeteo.ru) and the rate of CB (cbr.ru) starting with " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
Case 2
sResponse = "textCourseD.parentNode.title=""在莫斯科的溫度( gismeteo.ru)和央行利率(cbr.ru)開始" & tDate2.ToString("d.M.yyyy") & "。""" & ";" & sEnter
Case Else
sResponse = "textCourseD.parentNode.title=""Температ ура в Москве (gismeteo.ru) и курс ЦБ (cbr.ru) c " & tDate2.ToString("d.M.yyyy") & ".""" & ";" & sEnter
End Select
sResponse &= "textCourseD.data=sU00A0+""" & dD2.ToString("#,##0.0000") & """;" & sEnter
sResponse &= "textCourseE.data=sU00A0+""" & dE2.ToString("#,##0.0000") & """;" & sEnter
If dD2 > dD1 Then
sResponse &= "textArrowD.data=""▲""+sU00A0;" & sEnter
sResponse &= "textArrowD.parentNode.style.color=""Gre en"";" & sEnter
ElseIf dD2 < dD1 Then
sResponse &= "textArrowD.data=""▼""+sU00A0;" & sEnter
sResponse &= "textArrowD.parentNode.style.color=""Red "";" & sEnter
Else
sResponse &= "textArrowD.data=""=""+sU00A0;" & sEnter
sResponse &= "textArrowD.parentNode.style.color=""Blu e"";" & sEnter
End If
If dE2 > dE1 Then
sResponse &= "textArrowE.data=""▲"";" & sEnter
sResponse &= "textArrowE.parentNode.style.color=""Gre en"";" & sEnter
ElseIf dE2 < dE1 Then
sResponse &= "textArrowE.data=""▼"";" & sEnter
sResponse &= "textArrowE.parentNode.style.color=""Red "";" & sEnter
Else
sResponse &= "textArrowE.data=""="";" & sEnter
sResponse &= "textArrowE.parentNode.style.color=""Blu e"";" & sEnter
End If
End If
ursus 23.04.2010 10:09 # −1
Говногость 23.04.2010 18:33 # +1
uncle Lem 25.04.2010 17:55 # +1
Звучит, как угроза.