Načítání kurzů z České spořitelny přes web service

Před nějakým časem jsem zde zveřejnil kód pro načítání kurzů měn z různých bank. Krátce poté přestal fungovat modul pro načítání z ČS, protože banka změnila adresu, na níž se CSV data nacházejí (funkční adresu se mi dosud nepodařilo odhalit).

Na adrese http://www.csas.cz/csws/changerates/ChangeRates.jws nicméně funguje webová služba, která poskytuje tatáž data. Níže naleznete upravenou verzi třídy CsasExchangeRateSource:

using System;

using System.Collections.Generic;

using System.Text;

using System.Globalization;

 

namespace Altairis.Utils.MoneyExchange {

 

    public class CsasExchangeRateSource : IExchangeRateSource {

        public enum MoneyTypes { Devizy = 0, Valuty = 1 }

        public enum OfferTypes { Nakup = 0, Prodej = 1, Stred = 2 }

 

        private DateTime date;

        private ExchangeRateCollection exchangeRates;

        private MoneyTypes moneyType = MoneyTypes.Devizy;

        private OfferTypes offerType = OfferTypes.Stred;

 

        public OfferTypes OfferType {

            get { return offerType; }

            set { offerType = value; }

        }

 

        public MoneyTypes MoneyType {

            get { return moneyType; }

            set { moneyType = value; }

        }

 

        public void Load() {

            CsasExchange.ChangeRates ws = new CsasExchange.ChangeRates();

            CsasExchange.CHANGERATES cr = ws.getCurrent();

            UpdateRates(cr);

        }

 

        public void Load(DateTime date) {

            CsasExchange.ChangeRates ws = new CsasExchange.ChangeRates();

            CsasExchange.CHANGERATES cr = ws.getArchive(date, true);

            UpdateRates(cr);

        }

 

        private void UpdateRates(CsasExchange.CHANGERATES cr) {

            this.date = cr.DATE;

            this.exchangeRates = new ExchangeRateCollection();

 

            for (int i = 0; i < cr.RATES.Length; i++) {

                CsasExchange.CURRENCY c = cr.RATES[i];

                CsasExchange.Values rv;

 

                if (this.MoneyType == MoneyTypes.Valuty) {

                    rv = c.CASH;

                }

                else {

                    rv = c.CASHLESS;

                }

 

                ExchangeRate r = new ExchangeRate();

                r.Country = c.COUNTRY;

                r.Currency = c.NAME;

                r.Measure = c.QUANTITY;

                r.Code = c.SHORT_NAME;

                switch (this.OfferType) {

                    case OfferTypes.Nakup:

                        r.Rate = (decimal)rv.BUY;

                        break;

                    case OfferTypes.Prodej:

                        r.Rate = (decimal)rv.SEL;

                        break;

                    case OfferTypes.Stred:

                        r.Rate = (decimal)rv.MID;

                        break;

                    default:

                        break;

                }

                this.exchangeRates.Add(r);

            }

        }

 

        public DateTime Date {

            get { return this.date; }

        }

 

        public ExchangeRateCollection ExchangeRates {

            get { return this.exchangeRates; }

        }

 

        public string Name {

            get { return "Česká spořitelna"; }

        }

    }

 

}

Třída předpokládá, že do svého projektu přidáte web referenci na adresu http://www.csas.cz/csws/changerates/ChangeRates.jws?WSDL a pojmenujete ji CsasExchange.

  • Altairis
  • Nemesis
  • Microsoft MVP
  • IIS
  • ASP.NET