﻿// *** HTTP GET / JSON Service Calling Proxy Class
function serviceProxy(serviceUrl) {
    var _I = this;
    this.serviceUrl = serviceUrl;
    
    this.invoke = function(callback, error, bare) {
        // *** Convert input data into JSON - REQUIRES Json2.js
        var url = _I.serviceUrl;

        $.ajax({
            url: url,
            data: "",
            type: "GET",
            processData: false,
            contentType: "application/json",
            timeout: 10000,
            dataType: "json",
            success:
                    function(res) {
                        if (!callback) {
                            return;
                        }
                        var result = res;

                        // *** Bare message IS result
                        if (bare) {
                            callback(result); return;
                        }

                        // *** Wrapped message contains top level object node
                        // *** strip it off
                        for (var property in result) {
                            callback(result[property]);
                            break;
                        }
                    },
            error: function(xhr) {
                if (!error) return;
                if (xhr.responseText) {
                    //var err = JSON2.parse(xhr.responseText);
                    var err = xhr.responseText;
                    if (err)
                        error(err);
                    else
                        error({ Message: "Unknown server error." })
                }
                return;
            }
        });
    }
}