You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using Common.Models.RequestResponse; using Common.Models.SendSMS; using Common.Utility; using log4net; using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Web;
namespace Business.BusinessLogic.SMSApiService { public class SMSService : ISMSService { private readonly ILog _log = LogManager.GetLogger(typeof(SMSService)); private readonly string _baseUrl; private readonly string _baseUrlStatus; private readonly string _userName; private readonly string _password; private readonly string _senderId; private readonly string _langType;
public SMSService() { _baseUrl = GetStatic.ReadWebConfig("onewaysmsURL", ""); _baseUrlStatus = GetStatic.ReadWebConfig("onewaysmsURLStatus", ""); _userName = GetStatic.ReadWebConfig("onewaysmsUserName", ""); _password = GetStatic.ReadWebConfig("onewaysmsPassword", ""); _senderId = GetStatic.ReadWebConfig("onewaysmsSenderId", ""); _langType = GetStatic.ReadWebConfig("onewaysmsLangType", ""); }
public TPResponse SMSApiMethod(SMSRequestModel model) { TPResponse _tPResponse = new TPResponse() { ResponseCode = "1" }; string _qs = ""; if (model.method.ToLower() == "send") { StringBuilder sb = new StringBuilder(); byte[] buf = new byte[1024]; string url = _baseUrl + "?username=" + _userName + "&password=" + _password + "&option=xml" + "&number=" + model.MobileNumber + "&message=" + HttpUtility.UrlEncode(model.SMSBody) + "&orig=" + HttpUtility.UrlEncode(_senderId); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream resStream = response.GetResponseStream(); string tempString = null; int count = 0; do { count = resStream.Read(buf, 0, buf.Length); if (count != 0) { tempString = Encoding.ASCII.GetString(buf, 0, count); sb.Append(tempString); } } while (count > 0);
var result = sb.ToString();
if (result.Contains("SUCCESS 722")) { _tPResponse.ResponseCode = "0"; _tPResponse.Msg = "SMS Sent Successfully!"; _tPResponse.Extra = result; } else { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "SMS Sent Failed!"; _tPResponse.Extra = result; }
return _tPResponse; } else if (model.method.ToLower() == "status") { _qs = "?mtid=" + model.MTID;
_tPResponse = CallTPApi(_qs, "get", model.method, _baseUrlStatus); }
return _tPResponse; }
public TPResponse CallTPApi(string _apiUrl, string _methodType, string _requestType, string _baseURLAPI) { _log.Debug("Calling API for " + _requestType + " with request:" + _apiUrl); TPResponse _tPResponse = new TPResponse() { ResponseCode = "1" }; using (HttpClient httpClient = new HttpClient()) { try { //var _response = "";
//HttpWebRequest _httpRequest = (HttpWebRequest)WebRequest.Create(_baseURLAPI + _apiUrl);
//_httpRequest.ContentType = "application/json";
//_httpRequest.Method = "GET";
//var _httpResponse = (HttpWebResponse)_httpRequest.GetResponse();
//using (var _streamReader = new StreamReader(_httpResponse.GetResponseStream()))
//{
// _response = _streamReader.ReadToEnd().ToString();
//}
//_log.Debug(_response);
//_tPResponse = ParseResponseMsg(_response, _requestType);
//return _tPResponse;
httpClient.BaseAddress = new Uri(_baseURLAPI); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-formurlencoded")); short timeOut = Convert.ToInt16(GetStatic.ReadWebConfig("transfast_apiTimeOutInSecond", "100")); httpClient.Timeout = new TimeSpan(0, 0, timeOut); HttpResponseMessage resp = new HttpResponseMessage();
if (_methodType.ToLower().Equals("get")) { _log.Debug("Initiating the call"); resp = httpClient.GetAsync(_apiUrl).Result; _log.Debug("Call finished"); }
string result = resp.Content.ReadAsStringAsync().Result; _log.Debug(resp);
if (resp.IsSuccessStatusCode) { _tPResponse = ParseResponseMsg(result, _requestType); return _tPResponse; } else { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "Error sending request!"; return _tPResponse; } } catch (HttpRequestException ex) { _tPResponse.ResponseCode = "999"; _tPResponse.Msg = ex.Message; _tPResponse.Data = ex.Data; } };
return _tPResponse; }
private TPResponse ParseResponseMsg(string result, string requestType) { TPResponse _tPResponse = new TPResponse() { ResponseCode = "1" }; long respCode = GetStatic.ParseLong(result); if (requestType.ToLower() == "send") { if (respCode > 0) { _tPResponse.ResponseCode = "0"; _tPResponse.Msg = "SMS Sent Successfully!"; _tPResponse.Extra = result; } else if (respCode == -100) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "API Password or Username invalid!"; _tPResponse.Extra = result; } else if (respCode == -200) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "Sendr id is invalid!"; _tPResponse.Extra = result; } else if (respCode == -300) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "Mobile number is invalid!"; _tPResponse.Extra = result; } else if (respCode == -400) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "Language type is invalid!"; _tPResponse.Extra = result; } } else if (requestType.ToLower() == "status") { if (respCode == 0) { _tPResponse.ResponseCode = "0"; _tPResponse.Msg = "Success receive on mobile handset!"; _tPResponse.Extra = result; } else if (respCode == 100) { _tPResponse.ResponseCode = "0"; _tPResponse.Msg = "Message delivered to Telco!"; _tPResponse.Extra = result; } else if (respCode == -100) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "mtid invalid/not found! Response Code: " + respCode.ToString(); _tPResponse.Extra = result; } else if (respCode == -200) { _tPResponse.ResponseCode = "1"; _tPResponse.Msg = "Message sending fail! Response Code: " + respCode.ToString(); _tPResponse.Extra = result; } }
return _tPResponse; } } }
|