If String.IsNullOrEmpty(jr) Then Exit Sub
Dim objJsonSerializer = New Runtime.Serialization.Json.DataContractJsonSerializer _
(GetType(MyJSON.PostData))
Dim r2 = New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jr))
Dim nw = CType(objJsonSerializer.ReadObject(r2), MyJSON.PostData)
If IsNothing(nw.post) Then
RaiseEvent ErrorEvent("Обкʼєкт запису = Nothing. Текст від серверу: " & jr & " ID запису: " & IDЗапису)
Exit Sub
End If
Dim IDПридатнийДляФайловоїСистеми$ = String.Empty
IDПридатнийДляФайловоїСистеми = _
System.Text.RegularExpressions.Regex.Replace(nw.post.id, "[\\/:\*\?""<>\|\x00-\x1F]", "")
Select Case UCase(IDПридатнийДляФайловоїСистеми)
Case "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"
IDПридатнийДляФайловоїСистеми = String.Empty
End Select
Dim назваФайлуАбоПапкиДляЗбереження$ = String.Empty
Dim часСтворенняДляНазвиФайлуДляЗбереження As Date
If DateTime.TryParse(nw.post.created, часСтворенняДляНазвиФайлуДляЗбереження) Then
назваФайлуАбоПапкиДляЗбереження = часСтворенняДляНазвиФайлуДляЗбереження.ToShortDateString.Replace(":", ".").Replace("/", ".").Replace("\", ".").Replace("|", ".") & _
" " & часСтворенняДляНазвиФайлуДляЗбереження.ToLongTimeString.Replace(":", ".").Replace("/", ".").Replace("\", ".").Replace("|", ".")
End If
If IDПридатнийДляФайловоїСистеми <> String.Empty Then
назваФайлуАбоПапкиДляЗбереження &= " " & IDПридатнийДляФайловоїСистеми
End If
If назваФайлуАбоПапкиДляЗбереження = String.Empty Then
назваФайлуАбоПапкиДляЗбереження = Date.Now.ToString.Replace(":", ".").Replace("/", ".").Replace("\", ".").Replace("|", ".")
End If
If nw.post.private Then
назваФайлуАбоПапкиДляЗбереження &= " private"
End If
Dim коментаріЗгрупованіПоto_comment_id = _
New Dictionary(Of UInteger, List(Of UInteger))
For i = 0 To nw.comments.Count - 1
If nw.comments(i).to_comment_id.HasValue Then
If коментаріЗгрупованіПоto_comment_id.ContainsKey _
(nw.comments(i).to_comment_id.Value) Then
коментаріЗгрупованіПоto_comment_id.Item(nw.comments(i).to_comment_id.Value).Add(nw.comments(i).id)
Else
коментаріЗгрупованіПоto_comment_id.Add(nw.comments(i).to_comment_id.Value, New List(Of UInteger))
коментаріЗгрупованіПоto_comment_id.Item(nw.comments(i).to_comment_id.Value).Add(nw.comments(i).id)
End If
End If
Next
Dim деревоКоментарів$ = String.Empty
Dim visited As List(Of UInteger) = New List(Of UInteger)
For i = 0 To nw.comments.Count - 1
If nw.comments(i).to_comment_id.HasValue = False Then
деревоКоментарів &= "<LI><SPAN class=comment-text>" & ЗамінитиЗарезервованіВHTMLСимволи(nw.comments(i).text) & "</SPAN></LI>" & vbCrLf & _
РозмітитиДаніПроКоментар(ОтриматиКоментарПоID(nw.comments(i).id, nw.comments))
End If
Dim IDКоментаря As UInteger = nw.comments(i).id
If visited.Contains(IDКоментаря) Then Continue For
Dim vi As New List(Of Dictionary(Of UInteger, UInteger))
Dim ul = String.Empty
Dim iv = 0UI
Dim index = iv
Dim localvisited = visited
l1:
If коментаріЗгрупованіПоto_comment_id.ContainsKey(IDКоментаря) Then
If iv > коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Count - 1 Then
iv = 0
End If
For index = iv To коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Count - 1
If коментаріЗгрупованіПоto_comment_id.ContainsKey(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index)) Then
деревоКоментарів &= vbCrLf & "<UL><LI><SPAN class=comment-text>" & ЗамінитиЗарезервованіВHTMLСимволи(ОтриматиКоментарПоID(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index), nw.comments).text) & "</SPAN>" & _
РозмітитиДаніПроКоментар(ОтриматиКоментарПоID(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index), nw.comments)) & "</LI>"
If visited.Contains(IDКоментаря) = False Then
visited.Add(IDКоментаря)
End If
If коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Count - 1 > index Then
Dim індексНаступногоКоментаря As UInteger
If index + 1 > коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Count - 1 Then
індексНаступногоКоментаря = index
Else
індексНаступногоКоментаря = index + 1
End If
Dim tmpd = New Dictionary(Of UInteger, UInteger)
tmpd.Add(IDКоментаря, індексНаступногоКоментаря)
vi.Add(tmpd)
Else
ul &= "</UL>" & vbCrLf
End If
IDКоментаря = коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index)
GoTo l1
ElseIf ОтриматиКоментарПоID(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index), nw.comments).to_comment_id.HasValue Then
деревоКоментарів &= "<UL><LI><SPAN class=comment-text>" & ЗамінитиЗарезервованіВHTMLСимволи(ОтриматиКоментарПоID(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index), nw.comments).text) & "</SPAN>" & _
РозмітитиДаніПроКоментар(ОтриматиКоментарПоID(коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Item(index), nw.comments)) & "</LI></UL>" & vbCrLf
If visited.Contains(IDКоментаря) = False Then
visited.Add(IDКоментаря)
End If
If index <> коментаріЗгрупованіПоto_comment_id.Item(IDКоментаря).Count - 1 Then
iv = index + 1
GoTo l1
End If
деревоКоментарів &= ul
ul = String.Empty
End If
Next
End If
If vi.Count > 0 Then
IDКоментаря = vi.Last.Last.Key
iv = vi.Last.Last.Value
vi.Remove(vi.Last)
ul &= "</UL>" & vbCrLf
GoTo l1
End If
Next
If деревоКоментарів <> String.Empty Then
деревоКоментарів = "<FIELDSET><LEGEND>Коментарі</LEGEND><UL>" & vbCrLf & деревоКоментарів & vbCrLf & "</UL></FIELDSET>"
End If