|
| 1 | +using EB2B.SMS.Helper; |
| 2 | +using System; |
| 3 | +using System.Net; |
| 4 | +using System.Threading.Tasks; |
| 5 | + |
| 6 | +namespace EB2B.SMS.Providers |
| 7 | +{ |
| 8 | + public class NetGsmProvider : ISmsProvider |
| 9 | + { |
| 10 | + private string _username { get; set; } |
| 11 | + private string _password { get; set; } |
| 12 | + private string _title { get; set; } |
| 13 | + |
| 14 | + |
| 15 | + public NetGsmProvider(string username, string password,string title) |
| 16 | + { |
| 17 | + if (username == null) |
| 18 | + throw new ArgumentException("Username null error"); |
| 19 | + if (password == null) |
| 20 | + throw new ArgumentException("password null error"); |
| 21 | + if (title == null) |
| 22 | + throw new ArgumentException("title null error"); |
| 23 | + |
| 24 | + this._username = username; |
| 25 | + this._password = password; |
| 26 | + this._title = title; |
| 27 | + |
| 28 | + } |
| 29 | + |
| 30 | + |
| 31 | + public async Task SendAsync(string phonenumber, string messagecontent) |
| 32 | + { |
| 33 | + |
| 34 | + if (phonenumber.Length != 11) |
| 35 | + throw new ArgumentException("Telefon numarası uyumlu değil : " + phonenumber); |
| 36 | + |
| 37 | + string dt = ""; |
| 38 | + dt += "<?xml version='1.0' encoding='UTF-8'?>"; |
| 39 | + dt += "<mainbody>"; |
| 40 | + dt += "<header>"; |
| 41 | + dt += "<company dil='TR'>Netgsm</company>"; |
| 42 | + dt += $"<usercode>{_username}</usercode>"; |
| 43 | + dt += $"<password>{_password}</password>"; |
| 44 | + dt += "<type>1:n</type>"; |
| 45 | + dt += $"<msgheader>{_title}</msgheader>"; |
| 46 | + dt += "</header>"; |
| 47 | + dt += "<body>"; |
| 48 | + dt += "<msg>"; |
| 49 | + dt += $"<![CDATA[{messagecontent}]]>"; |
| 50 | + dt += "</msg>"; |
| 51 | + dt += $"<no>{phonenumber}</no>"; |
| 52 | + dt += "</body> "; |
| 53 | + dt += "</mainbody>"; |
| 54 | + |
| 55 | + |
| 56 | + string getData = await SmsHelper.Post("https://api.netgsm.com.tr/sms/send/xml", dt); |
| 57 | + if (getData == "-1") |
| 58 | + throw new ArgumentException("Servis Hatası"); |
| 59 | + |
| 60 | + string getCode = getData.Split(' ')[0].ToString(); |
| 61 | + |
| 62 | + |
| 63 | + if (getCode == "00" || getCode == "01" || getCode == "02") |
| 64 | + { |
| 65 | + string Id = getData.Split(' ')[1].ToString(); |
| 66 | + } |
| 67 | + else if (getCode == "20") |
| 68 | + throw new ArgumentException("Mesaj metninde ki problemden dolayı gönderilemediğini veya standart maksimum mesaj karakter sayısını geçti."); |
| 69 | + else if (getCode == "30") |
| 70 | + throw new ArgumentException("Geçersiz kullanıcı adı , şifre veya kullanıcınızın API erişim iznininiz bulunmamakta."); |
| 71 | + else if (getCode == "40") |
| 72 | + throw new ArgumentException("Mesaj başlığınızın (gönderici adınızın) sistemde tanımlı değil. "); |
| 73 | + else if (getCode == "70") |
| 74 | + throw new ArgumentException("Hatalı sorgulama. Gönderdiğiniz parametrelerden birisi hatalı veya zorunlu alanlardan birinin eksik. "); |
| 75 | + else |
| 76 | + throw new ArgumentException("Bilinmeyen bir hata oluştu"); |
| 77 | + |
| 78 | + |
| 79 | + } |
| 80 | + |
| 81 | + public async Task<double> GetCreditAsync() |
| 82 | + { |
| 83 | + string getData = new WebClient().DownloadString($"https://api.netgsm.com.tr/balance/list/get/?usercode={_username}&password={_password}"); |
| 84 | + |
| 85 | + if (getData.Split(' ')[0].ToString() == "00") |
| 86 | + return double.Parse(getData.Split(' ')[1].ToString().Replace(',', '.')); |
| 87 | + else return 0; |
| 88 | + |
| 89 | + } |
| 90 | + |
| 91 | + } |
| 92 | +} |
0 commit comments