%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/lib/xsp/test/1.1/webservice/ |
| Current File : //proc/self/root/data/old/usr/lib/xsp/test/1.1/webservice/ConverterService.asmx |
<%@ WebService Language="c#" Codebehind="ConverterService.asmx.cs" Class="WebServiceTests.ConverterService" %>
using System;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WebServiceTests
{
public class UserInfo : SoapHeader
{
public int userId;
}
public class CurrencyInfo
{
public CurrencyInfo ()
{
}
public CurrencyInfo (string name, double rate)
{
Name = name;
Rate = rate;
}
public string Name;
public double Rate;
}
[Dump]
[Encrypt]
[WebServiceAttribute (Description="Web service that can make currency conversions")]
public class ConverterService : System.Web.Services.WebService
{
static int userCount = 0;
static Hashtable conversionTable;
public UserInfo userInfo;
static ConverterService ()
{
conversionTable = new Hashtable ();
InternalSetCurrencyRate ("USD", 1);
InternalSetCurrencyRate ("EUR", 0.883884 );
InternalSetCurrencyRate ("GBP", 0.611817 );
InternalSetCurrencyRate ("JPY", 118.271 );
InternalSetCurrencyRate ("CAD", 1.36338 );
InternalSetCurrencyRate ("AUD", 1.51485 );
InternalSetCurrencyRate ("CHF", 1.36915 );
InternalSetCurrencyRate ("RUR", 30.4300 );
InternalSetCurrencyRate ("CNY", 8.27740 );
InternalSetCurrencyRate ("ZAR", 7.62645 );
InternalSetCurrencyRate ("MXN", 10.5025 );
}
[WebMethod (Description="Registers the user into the system")]
[SoapHeaderAttribute ("userInfo", Direction = SoapHeaderDirection.Out)]
[TraceExtension]
public void Login (string a)
{
userInfo = new UserInfo ();
userInfo.userId = ++userCount;
}
[WebMethod (Description="Converts an amount from one currency to another currency")]
[SoapHeaderAttribute ("userInfo")]
[TraceExtension]
public double Convert (string sourceCurrency, string targetCurrency, double value)
{
CheckUser ();
double usd = (1 / GetCurrencyRate (sourceCurrency)) * value;
return usd * GetCurrencyRate (targetCurrency);
}
[WebMethod (Description="Returns a list of currency rates")]
[SoapHeaderAttribute ("userInfo")]
[TraceExtension]
public CurrencyInfo[] GetCurrencyInfo ()
{
CheckUser ();
lock (conversionTable)
{
CurrencyInfo[] info = new CurrencyInfo[conversionTable.Count];
int n = 0;
foreach (CurrencyInfo cinfo in conversionTable.Values)
info [n++] = cinfo;
return info;
}
}
[WebMethod (Description="Sets the rate of a currency")]
[SoapHeaderAttribute ("userInfo")]
[TraceExtension]
public void SetCurrencyRate (string currency, double rate)
{
CheckUser ();
InternalSetCurrencyRate (currency, rate);
}
static void InternalSetCurrencyRate (string currency, double rate)
{
lock (conversionTable)
{
conversionTable [currency] = new CurrencyInfo (currency, rate);
}
}
[WebMethod (Description="Returns the rate of a currency")]
[SoapHeaderAttribute ("userInfo")]
[TraceExtension]
public double GetCurrencyRate (string cname)
{
CheckUser ();
lock (conversionTable)
{
if (!conversionTable.ContainsKey (cname))
throw new SoapException ("Unknown currency '" + cname + "'", SoapException.ServerFaultCode);
return ((CurrencyInfo) conversionTable [cname]).Rate;
}
}
void CheckUser ()
{
if (userInfo == null)
throw new SoapException ("User not logged", SoapException.ServerFaultCode);
}
}
}