using System; using System.IO; using System.Web; using System.Xml; using System.Data; using System.Text; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; using System.Security.Authentication; using System.Collections.Generic; using System.Web.Services.Description; using System.ComponentModel; namespace OMS2 { /// <summary> /// A WebService implementing the Outlook 2007 Mobile Service interface. /// Allows you to send SMS messages from Outlook 2007! /// </summary> [WebService(Namespace = "http://schemas.microsoft.com/office/Outlook/2006/OMS")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class oms : WebService { /// <summary> /// Returns information about the service. The returned XML contains /// information about the service, if it supports SMS, MMS or both etc. /// See the ServiceInfo.xml for more information about the XML format. /// </summary> /// <returns></returns> [WebMethod] public string GetServiceInfo() { return ReadXml("serviceInfo.xml"); } /// <summary> /// Method authenticating a user and geting user information. /// Returns an XML string with some basic user information (phone number and e-mail). /// </summary> /// <param name="xmsUser">An XML string containing the user credentials.</param> /// <returns>An XML string with user information.</returns> [WebMethod] public string GetUserInfo(string xmsUser) { try { //XmlDocument xml = new XmlDocument(); //xml.LoadXml(xmsUser); //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable); //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS"); //string username = xml.SelectSingleNode("/o:xmsUser/o:userId", nmManager).InnerText; //string password = xml.SelectSingleNode("/o:xmsUser/o:password", nmManager).InnerText; //Ung1881Proxy proxy = new Ung1881Proxy(); //proxy.Login(username, password); return ReadXml("userInfo.xml"); } catch (Exception) { StringWriter stringWriter = new StringWriter(); XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter); xmlWriter.WriteStartElement("userInfo", "http://schemas.microsoft.com/office/Outlook/2006/OMS"); xmlWriter.WriteStartElement("error"); xmlWriter.WriteAttributeString("code", "invalidUser"); xmlWriter.WriteAttributeString("severity", "failure"); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); string error = stringWriter.GetStringBuilder().ToString(); xmlWriter.Close(); stringWriter.Dispose(); return error; } } /// <summary> /// Method sending an SMS/MMS message to one or more recepients. /// </summary> /// <param name="xmsData">An XML string with the list of recepients and the content of the message.</param> /// <returns>An XML string with a status message.</returns> [WebMethod] public string SendXms(string xmsData) { //XmlDocument xml = new XmlDocument(); //xml.LoadXml(xmsData); //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable); //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS"); //string username = xml.SelectSingleNode("/o:xmsData/o:user/o:userId", nmManager).InnerText; //string password = xml.SelectSingleNode("/o:xmsData/o:user/o:password", nmManager).InnerText; try { //List<string> recipients = new List<string>(); //List<string> messages = new List<string>(); //foreach (XmlNode node in xml.SelectNodes("//o:recipient", nmManager)) //{ // recipients.Add(node.InnerText); //} //foreach (XmlNode node in xml.SelectNodes("//o:content[@contentType='text/plain']", nmManager)) //{ // messages.Add(node.InnerText); //} //Ung1881Client client = new Ung1881Client(username, password); //foreach (string number in recipients) //{ // foreach (string message in messages) // { // client.SendMessage(number, message); // } //} return BuildError("ok", false); ; } catch (AuthenticationException) { return BuildError("invalidUser", true); } catch (Exception) { return BuildError("others", true); } } /// <summary> /// Simple helper method reading an file from disk and /// returning the content as a string. /// </summary> /// <param name="fileName">The relative path to the file you want to read.</param> /// <returns>The file content.</returns> private string ReadXml(string fileName) { StreamReader sr = new StreamReader(Server.MapPath(fileName), Encoding.Unicode); string xml = sr.ReadToEnd(); sr.Dispose(); return xml; } /// <summary> /// Simple helper method building the return XML for the SendXms method. /// </summary> /// <param name="errorCode">The error code.</param> /// <param name="failed">If this was a failure or not.</param> /// <returns>The XML fragment to return to the client.</returns> private string BuildError(string errorCode, bool failed) { StringWriter stringWriter = new StringWriter(); XmlTextWriter wr = new XmlTextWriter(stringWriter); wr.WriteStartDocument(); wr.WriteStartElement("xmsResponse", "http://schemas.microsoft.com/office/Outlook/2006/OMS"); wr.WriteStartElement("error"); wr.WriteAttributeString("code", errorCode); wr.WriteAttributeString("severity", failed ? "failure" : "neutral"); wr.WriteEndElement(); wr.WriteEndElement(); wr.WriteEndDocument(); wr.Close(); string returnValue = stringWriter.GetStringBuilder().ToString(); stringWriter.Dispose(); return returnValue; } } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)