burakoner / BtcTurk.Net

Open source .Net API wrapper for the BtcTurk web API and websockets API
MIT License
24 stars 9 forks source link

BaseAddress Çalışmıyor! #8

Closed emin-karadag closed 4 years ago

emin-karadag commented 4 years ago

Merhaba, Aşağıdaki kodu çalıştırdığımda bakiye bilgisini başarıyla alabiliyorum.

var apiClient = new BtcTurkClient();
apiClient.SetApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
var btc11 = apiClient.GetBalances();

Ancak aşağıdaki 2 kod bloğunu çalıştırdığımda ise "Server Error" hatası geriye dönüyor. Yukarıdaki koddan farklı olarak BaseAddress giriyorum.

var apiClient = new BtcTurkClient(new BtcTurkClientOptions { BaseAddress= "https://api-dev.btcturk.com/" });
apiClient.SetApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
var btc11 = apiClient.GetBalances();
var apiClient = new BtcTurkClient(new BtcTurkClientOptions { BaseAddress= "https://api.btcturk.com" });
apiClient.SetApiCredentials("XXXXXXXX-API-KEY-XXXXXXXX", "XXXXXXXX-API-SECRET-XXXXXXXX");
var btc11 = apiClient.GetBalances();

BtcTürk Test için BaseAdress girdim çalışmadı. İlginç olan şu ki: Test değil de normal BtcTürk BaseAddress girdim o da çalışmadı. Fakat Options hiç girmesek o zaman çalışıyor.

Ancak BtcTürk Test üzerinde işlemler yapabilmem için BaseAdress değerini ayarlamam gerekiyor. Yardımcı olursanız sevinirim.

burakoner commented 4 years ago

API Secret içerisinde normalde - (Tire) bulunamaz. Sanıyorum HMAC şifrelemenin gereklerinden birisi. Ben kodlarda örnek olsun diye koymuştum. Eğer authendication'a ihtiyacın yoksa o satırı sil, ihtiyaç duyuyorsan kendi API anahtarın ile dene. Hala sorun olursa lütfen kodun ve aldığın hatanın tamamını iletirsen yardımcı olmaya çalışırım.

emin-karadag commented 4 years ago

Yukarıda ilk paylaştığım örnek kodlardaki "XXXXXXXX-API-KEY-XXXXXXXX" ve "XXXXXXXX-API-SECRET-XXXXXXXX" yerine elbetteki BtcTürk'ten alığım gerçek apiKey ve secretKey girmek suretiyle deneme yapmıştım.

Dediğim gibi BaseAddress girmezsem sorun yok düzgün çalışıyor. Fakat gerek BtcTürk Pro için gerek BtcTürk Test hesabı için BaseAddress girdiğimde "Server Error" hatası alıyorum.

apiClient.GetBalances() metodunu çağırdığımda geriye dönen WebCallResult sonucundaki Error alanı aynen şu şekilde:

Error:{
    Code: 3,
    Data: null,
    Message: Server error: 
}

Bu hatayı sadece BaseAdress değerini kendim atadığımda alıyorum.

BaseAdress değerleri: BtcTürk Pro için -> [(https://api.btcturk.com)] BtcTürk Test için -> [(https://api-dev.btcturk.com)] şeklinde ayarlıyorum.

Her iki senaryoda da BtcTürk Pro ve BtcTürk Test platformlarında aldığım publicKey ve privateKey ile denyorum.

burakoner commented 4 years ago

Bu durumda sorun kullandığın adresteki API yapısının ya da verinin farklı olmasından kaynaklanabilir. Sunucu bu hatayı gönderiyor

emin-karadag commented 4 years ago

EnPoint yani BaseAddress girmediğim zaman düzgün çalışıyor. Ama siz de BaseAdress girmeden bağlantı yapamıyor olmanız lazım. Düzgün çalıştığına göre sizin BaseAdress olarak girdiğiniz ile benim girdiğim aynı değil ya da BaseAdress set edildiğinde bir karışıklık oluyor.

BaseAdress olarak ben şunu giriyorum: https://api.btcturk.com Siz tam olarak ne girdiğinizi hatırlıyor musunuz acaba?

burakoner commented 4 years ago

https://github.com/burakoner/BtcTurk.Net/blob/5d3c2ee474bec5f454d3451df6e18dc5171f2238/BtcTurk.Net/BtcTurkClientOptions.cs bu dosyada mevcut. https://api.btcturk.com/api

emin-karadag commented 4 years ago

Tamam şimdi ayan beyan belli oldu sorun :)

Benim girdiğim BaseAdress -> https://api-dev.btcturk.com/ Olması gereken BaseAdress -> https://api-dev.btcturk.com/api

Sonuna api yazmamışım :)

Bir öneri olarak söylüyorum: Bu 2 adresi bir Enum olarak kütüphaneye ekleyebilirseniz ileride kimse böyle ufak hataya düşmez benim gibi. Direk Enum'dan ya da static bir değişkenden alır set eder.

Ama şu anda sorunum çözüldü.

İlginiz için gerçekten çok teşekkür ederim :)

burakoner commented 4 years ago

Bu repositoy nin amacı dev ortamı için kütüphane sağlamak değil. BtcTurk'ün yazılımı bulgaristanda da kullanılıyor diye biliyorum. Yani bir paket program. Bu nedenle enum tanımlamak bana doğru gelmiyor. Sorununun çözüldüğüne sevindim.