using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

 

using System.Web.Script.Serialization;  // needed for JSON serializers

using System.IO;                        // needed for Stream and Stream Reader

using System.Net;                       // needed for the Web Request

 

namespace WebAPIClient

{

    public partial class CalculatorAPIExample : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

 

        // Private helper method used to call the Web API and return the response

        private double ExecuteCallToWebAPI(string operation, double value1, double value2)

        {

            String url = "http://cis-iis2.temple.edu/users/pascucci/CIS3342/CoreWebAPI/api/Calculator/" + operation;

            url = url + "/" + value1 + "/" + value2;

           

            // Create an HTTP Web Request and get the HTTP Web Response from the server.

            WebRequest request = WebRequest.Create(url);

            WebResponse response = request.GetResponse();

 

            // Read the data from the Web Response, which requires working with streams.

            Stream theDataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(theDataStream);

            String data = reader.ReadToEnd();

            reader.Close();

            response.Close();

 

            // Deserialize a JSON string into a double.

            JavaScriptSerializer js = new JavaScriptSerializer();

            double result = js.Deserialize<double>(data);

 

            return result;

        }

 

        protected void btnAdd_Click(object sender, EventArgs e)

        {

            double value1, value2, result;

 

            if (double.TryParse(txtValue1.Text, out value1) &&

                double.TryParse(txtValue2.Text, out value2))

            {

                result = ExecuteCallToWebAPI("Add", value1, value2);

                lblDisplay.Text = "The result is " + result;

            }

            else

            {

                lblDisplay.Text = "You must enter numerical values for both X and Y!";

            }

 

        }

 

        protected void btnSubtract_Click(object sender, EventArgs e)

        {

            double value1, value2, result;

 

            if (double.TryParse(txtValue1.Text, out value1) &&

                double.TryParse(txtValue2.Text, out value2))

            {

                result = ExecuteCallToWebAPI("Subtract", value1, value2);

                lblDisplay.Text = "The result is " + result;

            }

            else

            {

                lblDisplay.Text = "You must enter numerical values for both X and Y!";

            }

        }

 

        protected void btnMultiply_Click(object sender, EventArgs e)

        {

            double value1, value2, result;

 

            if (double.TryParse(txtValue1.Text, out value1) &&

                double.TryParse(txtValue2.Text, out value2))

            {

                result = ExecuteCallToWebAPI("Multiply", value1, value2);

                lblDisplay.Text = "The result is " + result;

            }

            else

            {

                lblDisplay.Text = "You must enter numerical values for both X and Y!";

            }

        }

 

        protected void btnDivide_Click(object sender, EventArgs e)

        {

            double value1, value2, result;

 

            if (double.TryParse(txtValue1.Text, out value1) &&

                double.TryParse(txtValue2.Text, out value2))

            {

                result = ExecuteCallToWebAPI("Divide", value1, value2);

                lblDisplay.Text = "The result is " + result;

            }

            else

            {

                lblDisplay.Text = "You must enter numerical values for both X and Y!";

            }

        }

    }

}