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.
221 lines
8.6 KiB
221 lines
8.6 KiB
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;
|
|
}
|
|
}
|
|
}
|