|
' ******************************************************************************
' **
' ** Yahoo Finance Managed
' ** Written by Marius Häusler 2010
' ** It would be pleasant, if you contact me when you are using this code.
' ** Contact: YahooFinanceManaged@gmail.com
' ** Project Home: http://code.google.com/p/yahoo-finance-managed/
' **
' ******************************************************************************
' **
' ** Copyright 2010 Marius Häusler
' **
' ** Licensed under the Apache License, Version 2.0 (the "License");
' ** you may not use this file except in compliance with the License.
' ** You may obtain a copy of the License at
' **
' ** http://www.apache.org/licenses/LICENSE-2.0
' **
' ** Unless required by applicable law or agreed to in writing, software
' ** distributed under the License is distributed on an "AS IS" BASIS,
' ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' ** See the License for the specific language governing permissions and
' ** limitations under the License.
' **
' ******************************************************************************
Namespace Base
''' <summary>
''' Interface for classes downloading strings of unspecified text encoding.
''' </summary>
''' <remarks></remarks>
Public Interface IStringDownload
''' <summary>
''' Gets or sets the text encoding that will be used for converting the download stream.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Property TextEncoding() As System.Text.Encoding
End Interface
''' <summary>
''' Provides internal methods for downloading String data. This class must be inherited.
''' </summary>
''' <remarks></remarks>
Public MustInherit Class StringDownload
Inherits Download
Implements IStringDownload
Protected Event AsyncStringDownloadCompleted(ByVal sender As Download, ByVal e As StringDownloadCompletedEventArgs)
Private mTextEncoding As System.Text.Encoding = System.Text.Encoding.UTF8
''' <summary>
''' The used encoding information for converting stream to String data.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Public Property TextEncoding() As System.Text.Encoding Implements IStringDownload.TextEncoding
Get
Return mTextEncoding
End Get
Set(ByVal value As System.Text.Encoding)
If value IsNot Nothing Then : mTextEncoding = value
Else : mTextEncoding = System.Text.Encoding.UTF8
End If
End Set
End Property
Protected Function DownloadString(ByVal url As String) As StringResponse
Return Me.ToResponse(MyBase.DownloadStream(url))
End Function
''' <summary>
''' Default constructor
''' </summary>
''' <remarks></remarks>
Public Sub New()
End Sub
Private Sub BaseAsyncDownload_Completed(ByVal sender As Download, ByVal e As StreamDownloadCompletedEventArgs) Handles MyBase.AsyncStreamDownloadCompleted
Dim args As New StringDownloadCompletedEventArgs(e.UserArgs, Me.ToResponse(e.Response))
RaiseEvent AsyncStringDownloadCompleted(Me, args)
End Sub
Private Function ToResponse(ByVal resp As StreamResponse) As StringResponse
Dim text As String = String.Empty
If resp.Connection.State = ConnectionState.Success Then
text = mHelper.StreamToString(resp.Result, Me.TextEncoding)
End If
mHelper.CloseStream(resp.Result)
Return New StringResponse(resp.Connection, text)
End Function
End Class
Public Class StringDownloadCompletedEventArgs
Inherits DownloadCompletedEventArgs
Public Overloads ReadOnly Property Response() As StringResponse
Get
Return DirectCast(MyBase.Response, StringResponse)
End Get
End Property
Public Sub New(ByVal userArgs As Object, ByVal response As StringResponse)
MyBase.New(userArgs, response)
End Sub
End Class
Public Class StringResponse
Inherits Response
Public Overloads ReadOnly Property Result() As String
Get
If MyBase.Result IsNot Nothing Then : Return MyBase.Result.ToString()
Else : Return String.Empty
End If
End Get
End Property
Public Sub New(ByVal info As ConnectionInfo, ByVal result As String)
MyBase.New(info, result)
End Sub
End Class
End Namespace
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.