Click here to Skip to main content
15,879,184 members
Articles / Mobile Apps

Yahoo! Managed

Rate me:
Please Sign up or sign in to vote.
4.87/5 (56 votes)
8 Jan 2015Apache12 min read 522.4K   25.4K   262  
Download financial data, managing online portfolio or using Search BOSS from Yahoo! with .NET
' ******************************************************************************
' ** 
' **  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 Finance.Support

    ''' <summary>
    ''' Stores information of an stock index. Implements IID. Serializable. 
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class YIndexID
        Inherits YID

        Friend mFinanceHelper As New FinanceHelper
        Private mDownloadComponents As Boolean = False
      
        ''' <summary>
        ''' The Yahoo index ID
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overrides ReadOnly Property ID() As String
            Get
                Return IIf(mDownloadComponents, "@", "").ToString & MyBase.ID
            End Get
        End Property
        Public Overrides Sub SetID(ByVal id As String)
            Dim startsWith As Boolean = id.StartsWith("@")
            If startsWith Then mDownloadComponents = True
            MyBase.SetID(id.Replace("@", ""))
        End Sub
        ''' <summary>
        ''' The overloaded type of the financial product 
        ''' </summary>
        ''' <value></value>
        ''' <returns>Returns only [Index]. The type of an stock index is of course always [Index].</returns>
        ''' <remarks></remarks>
        Public Overrides Property Type() As FinancialSecurityType
            Get
                Return MyBase.Type
            End Get
            Set(ByVal value As FinancialSecurityType)
                MyBase.Type = FinancialSecurityType.Index
            End Set
        End Property
        ''' <summary>
        ''' Indicates whether the downloader will query all stocks of an index or not
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property DownloadComponents() As Boolean
            Get
                Return mDownloadComponents
            End Get
            Set(ByVal value As Boolean)
                mDownloadComponents = value
            End Set
        End Property

        ''' <summary>
        ''' Default constructor
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
            MyBase.Type = FinancialSecurityType.Index
            mDownloadComponents = False
        End Sub
        ''' <summary>
        ''' Overloaded constructor
        ''' </summary>
        ''' <param name="id">The unmanaged ID</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal id As String)
            Me.New()
            Me.SetID(id)
        End Sub
        ''' <summary>
        ''' Overloaded constructor
        ''' </summary>
        ''' <param name="id">The unmanaged ID</param>
        ''' <param name="downloadComponents">True, if you want to download all components of the index</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal id As String, ByVal downloadComponents As Boolean)
            Me.New(id)
            mDownloadComponents = downloadComponents
        End Sub
        ''' <summary>
        ''' Overloaded constructor
        ''' </summary>
        ''' <param name="searchResult">The downloaded search result with the values</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal searchResult As IDSearchResult)
            MyBase.New(searchResult)
            If searchResult.Type = FinancialSecurityType.Index Then
                Me.SetID(searchResult.ID)
            Else
                Throw New ArgumentException("The passed result is not an index", "result")
            End If
        End Sub

        ''' <summary>
        ''' Returns the full ID of the stock index.
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overrides Function ToString() As String
            Return Me.ID
        End Function

        ''' <summary>
        ''' Proves if a search result represents an index
        ''' </summary>
        ''' <param name="result"></param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Shared Function IsValidSearchResult(ByVal result As IDSearchResult) As Boolean
            Return result.Type = FinancialSecurityType.Index
        End Function
    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.

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions