Click here to Skip to main content
15,878,945 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>
    ''' Implements IID. Serializable. Stores informations of a financial product.
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class YID
        Implements IID
        Implements SetableID
        Private mHelper As New MyHelper
        Private mID, mName, mIndustryName As String
        Private mStockExchange As New StockExchange
        Private mISIN As New ISIN
        Private mType As FinancialSecurityType

        ''' <summary>
        ''' The full ID with suffix 
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overridable ReadOnly Property ID() As String Implements IID.ID
            Get
                Return mID
            End Get
        End Property
        Public Overridable Sub SetID(ByVal id As String) Implements SetableID.SetID
            mID = id.ToUpper
            If mStockExchange IsNot Nothing Then
                mStockExchange.Suffix = Me.Suffix
            Else
                mStockExchange = WorldMarket.StockExchangeBySuffix(Me.Suffix)
            End If
        End Sub
        ''' <summary>
        ''' The base ID without suffix
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property BaseID() As String
            Get
                Dim index As Integer = mID.LastIndexOf("."c)
                If index = -1 Then : Return mID
                Else : Return mID.Substring(0, index)
                End If
            End Get
        End Property
        ''' <summary>
        ''' The suffix of the ID
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public ReadOnly Property Suffix() As String
            Get
                Dim index As Integer = mID.LastIndexOf("."c)
                If index = -1 Then : Return String.Empty
                Else : Return mID.Substring(index)
                End If
            End Get
        End Property
        ''' <summary>
        ''' The name of the security
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Name() As String
            Get
                Return mName
            End Get
            Set(ByVal value As String)
                mName = value
            End Set
        End Property
        ''' <summary>
        ''' The name of the industry
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property IndustryName() As String
            Get
                Return mIndustryName
            End Get
            Set(ByVal value As String)
                mIndustryName = value
            End Set
        End Property
        ''' <summary>
        ''' Informations about the stock exchange where the stock is traded
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks>Don't accept Null/Nothing.</remarks>
        Public Property StockExchange() As StockExchange
            Get
                Return mStockExchange
            End Get
            Set(ByVal value As StockExchange)
                mStockExchange = value
            End Set
        End Property
        ''' <summary>
        ''' The International Securities Identification Number
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property ISIN() As ISIN
            Get
                Return mISIN
            End Get
            Set(ByVal value As ISIN)
                mISIN = value
            End Set
        End Property
        ''' <summary>
        ''' The type of the security
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overridable Property Type() As FinancialSecurityType
            Get
                Return mType
            End Get
            Set(ByVal value As FinancialSecurityType)
                mType = value
            End Set
        End Property

        ''' <summary>
        ''' Default constructor
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub New()
            mID = String.Empty
            mName = String.Empty
            mIndustryName = String.Empty
            mType = FinancialSecurityType.All
        End Sub
        ''' <summary>
        ''' Creates a new instance by an ID
        ''' </summary>
        ''' <param name="id"></param>
        ''' <remarks></remarks>
        Public Sub New(ByVal id As String)
            Me.New()
            Me.SetID(id)
        End Sub
        ''' <summary>
        ''' Creates a new instance from an IDSearchResult
        ''' </summary>
        ''' <param name="searchResult"></param>
        ''' <remarks></remarks>
        Public Sub New(ByVal searchResult As IDSearchResult)
            Me.New()
            If searchResult IsNot Nothing Then
                Me.SetID(searchResult.ID)
                Me.Name = searchResult.Name
                Me.IndustryName = searchResult.IndustryName
                Me.ISIN.SetISIN(searchResult.ISIN)
                Me.Type = searchResult.Type
                If mStockExchange.ID = String.Empty And searchResult.Exchange <> String.Empty Then
                    Dim se As StockExchange = WorldMarket.StockExchangeByID(searchResult.Exchange)
                    If se Is Nothing Then se = WorldMarket.StockExchangeByName(searchResult.Exchange)
                    If se IsNot Nothing Then
                        mStockExchange.ID = se.ID
                    Else
                        mStockExchange.Name = searchResult.Exchange
                    End If
                End If
            Else
                Throw New ArgumentException("The passed result is null", "searchResult")
            End If
        End Sub

        ''' <summary>
        ''' Returns the URL of the Yahoo RSS news feed.
        ''' </summary>
        ''' <param name="server">The server of the feed. Decides language.</param>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Function RssNewsURL(Optional ByVal server As Server = Server.USA) As String
            Return "http://" & mHelper.ServerString(server) & "finance.yahoo.com/rss/headline?s=" & mHelper.CleanYqlParam(mID)
        End Function
        Public Function RssFinancialBlogsURL() As String
            Return "http://finance.yahoo.com/rss/SeekingAlpha?s=" & mHelper.CleanYqlParam(mID)
        End Function

        ''' <summary>
        ''' Returns the full ID of the stock.
        ''' </summary>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Overrides Function ToString() As String
            Return mID
        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