Elektronik Veri Dağıtım Sistemi (EVDS) üzerinden döviz kurlarını çekmek için öncelikle EVDS üzerinde bir hesap açıp API key edinmeniz gerekiyor. Türkiye Cumhuriyeti Merkez Bankası’nın günlük güncellediği döviz kuru bilgileri aynı zamanda geçmişe doğru da uzanıyor ve bu verilerle beraber istatistiksel hesaplamalar da yapılabiliyor.

EVDS Verileri

EVDS üzerinde hangi para birimlerinin sistemde kayıtlı olduğuna dair bir bilgi göremedim. Bu yüzden tüm döviz kurlarını tek tek elimle çıkarttım ve string olarak bir listeye ekledim.

List<String> series = [
  'USD',
  'EUR',
  'ATS',
  'AUD',
  'BEF',
  'BGN',
  'CAD',
  'CHF',
  'CNY',
  'DEM',
  'DKK',
  'ECU',
  'ESP',
  'FIM',
  'FRF',
  'GBP',
  'GRD',
  'IEP',
  'IRR',
  'ITL',
  'JPY',
  'KWD',
  'LUF',
  'NLG',
  'NOK',
  'PKR',
  'PTE',
  'QAR',
  'RON',
  'RUB',
  'SAR',
  'SEK',
];

Daha sonra bu döviz kurlarının isimleriyle beraber uygulama içerisinde daha hoş gözükmesi için bir Map oluşturdum. Böylelikle istenilen döviz kuruyla işlem yapılacağı zaman rahatlıkla uzun ismi getirilebilir.

Map<String, String> seriesNames = {
  'USD': 'ABD Doları',
  'EUR': 'Euro',
  'ATS': 'Avusturya Şilini',
  'AUD': 'Avusturalya Doları',
  'BEF': 'Belçika Frangı',
  'BGN': 'Bulgar Levası',
  'CAD': 'Kanada Doları',
  'CHF': 'İsviçre Frangı',
  'CNY': 'Çin Yuanı',
  'DEM': 'Alman Markı',
  'DKK': 'Danimarka Kronu',
  'ECU': 'Ecu',
  'ESP': 'İspanyol Pezetası',
  'FIM': 'Finlandiya Markkası',
  'FRF': 'Fransız Frangı',
  'GBP': 'İngiltere Sterlini',
  'GRD': 'Yunan Drahmisi',
  'IEP': 'İrlanda Lirası',
  'IRR': '100 İran Riyali',
  'ITL': 'İtalyan Lireti',
  'JPY': 'Japon Yeni',
  'KWD': 'Kuveyt Dinarı',
  'LUF': 'Lüksemburg Frangı',
  'NLG': 'Hollanda Florini',
  'NOK': 'Norveç Kronu',
  'PKR': 'Pakistan Rupisi',
  'PTE': 'Portekiz Esküdosu',
  'QAR': 'Katar Riyali',
  'RON': 'Rumeny Leyi',
  'RUB': 'Rus Rublesi',
  'SAR': 'S.Arabistan Riyali',
  'SEK': 'İsveç Kronu',
};

Daha sonrasında döviz kurlarının EVDS üzerinde API aracılığıyla geliştiricilere sağlanırken bazı parametrelere de ihtiyaç duyuyor. Örneğin AggregationType, Frequency, Formulas vb. Tüm değerlerin ve rakamların ne anlama geldiğini aşağıdaki kod parçasında bulabilirsiniz.

Map<String, String> aggregationTypes = {
  'Ortalama': 'avg',
  'En düşük': 'min',
  'En yüksek': 'max',
  'Başlangıç': 'first',
  'Bitiş': 'last',
  'Kümülatif': 'sum',
};

Map<String, String> formulas = {
  'Düzey': '0',
  'Yüzde değişim': '1',
  'Fark': '2',
  'Yıllık yüzde değişim': '3',
  'Yıllık fark': '4',
  'Bir önceki yılın sonuna göre yüzde değişim': '5',
  'Bir önceki yılın sonuna göre fark': '6',
  'Hareketli Ortalama': '7',
  'Hareketli Toplam': '8',
};

Map<String, String> frequency = {
  'Günlük': '1',
  'İş günü': '2',
  'Haftalık': '3',
  'Ayda 2 kez': '4',
  'Aylık': '5',
  '3 Aylık': '6',
  '6 Aylık': '7',
  'Yıllık': '8',
};

Query oluşturma

Dart dilinden ötürü müdür bilmiyorum fakat Query oluştururken zorlandım. Dönütlerde nokta(.) ile ayrılan textler, query gönderilirken alt tire(_) ile ayrılmalı. Bu yüzden veriler üzerinde string manipülasyon yapmanız gerekiyor.



Tüm string manipülasyonlarının nasıl yapıldığına dair bir yazı oluşturmak yerine yaptığım basit Flutter projesini Github üzerinden paylaşıyorum. Uygulamanın tam kapasite çalışması için EVDS API anahtarına ve Supabase.io hesabına ihtiyaç vardır.


Okuyucuya Not

Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.

Sağlıcakla kalın!

Tags: