Esempio n. 1
0
        Response createResponse(JsonObject rawResponse, RandomOrgDataType dataType)
        {
            // check for errors
            var error = JsonHelper.GetJsonObject(rawResponse, "error");

            if (error != null)
            {
                advisoryDelay = 0;
                if (ThrowProtocolErrors)
                {
                    throw new ProtocolViolationException(
                              String.Format(ProtocolException, error ["code"], error ["message"]));
                }
                else
                {
                    return(new Response((int)error ["code"], error ["message"] as string));
                }
            }

            var result = new Response(rawResponse, dataType);

            advisoryDelay = result.AdvisoryDelay * TimeSpan.TicksPerMillisecond;

            return(result);
        }
Esempio n. 2
0
        internal Response(JsonObject jObject, RandomOrgDataType dataType)
        {
            this.Id = (int)jObject ["id"];

            var error = JsonHelper.GetJsonObject(jObject, "error");

            if (error != null)
            {
                this.errorCode    = (int)error ["code"];
                this.errorMessage = error ["message"] as string;
                this.DataType     = RandomOrgDataType.Error;
                return;
            }

            this.DataType = dataType;

            jObject = jObject ["result"] as JsonObject;
            if (jObject == null)
            {
                this.DataType = RandomOrgDataType.Error;
                return;
            }
            this.BitsLeft     = (int)jObject ["bitsLeft"];
            this.RequestsLeft = (int)jObject ["requestsLeft"];

            if (dataType == RandomOrgDataType.Usage)
            {
                this.rpcObject = jObject;
                return;
            }

            this.AdvisoryDelay = (int)jObject ["advisoryDelay"];
            this.BitsUsed      = (int)jObject ["bitsUsed"];
            if (this.IsSigned)
            {
                this.signature = (string)jObject ["signature"];
            }

            jObject = jObject ["random"] as JsonObject;
            if (jObject == null)
            {
                this.DataType = RandomOrgDataType.Error;
                return;
            }
            CompletionTime = DateTime.Parse(jObject ["completionTime"] as string);
            this.rpcObject = jObject;
        }
Esempio n. 3
0
        internal Response(JsonObject jObject, RandomOrgDataType dataType)
        {
            this.Id = (int)jObject["id"];

            this.DataType = dataType;

            jObject = jObject["result"] as JsonObject;
            if (jObject == null)
            {
                this.DataType = RandomOrgDataType.Error;
                return;
            }
            this.BitsLeft     = (int)jObject["bitsLeft"];
            this.RequestsLeft = (int)jObject["requestsLeft"];
            this.data.Result  = jObject;

            if (dataType == RandomOrgDataType.Usage)
            {
                this.data.Usage = new Usage(jObject);
                return;
            }

            this.AdvisoryDelay = (int)jObject["advisoryDelay"];
            this.BitsUsed      = (int)jObject["bitsUsed"];

            jObject = jObject["random"] as JsonObject;
            if (jObject == null)
            {
                this.DataType = RandomOrgDataType.Error;
                return;
            }
            CompletionTime = DateTime.Parse(jObject["completionTime"] as string);

            switch (dataType)
            {
            case RandomOrgDataType.Integer:
            case RandomOrgDataType.SignedInteger:
                this.data.Integers = extractData <int>(jObject);
                break;

            case RandomOrgDataType.String:
            case RandomOrgDataType.SignedString:
            case RandomOrgDataType.Blob:
            case RandomOrgDataType.SignedBlob:
                this.data.Strings = extractData <string>(jObject);
                break;

            case RandomOrgDataType.Decimal:
            case RandomOrgDataType.SignedDecimal:
            case RandomOrgDataType.Gaussian:
            case RandomOrgDataType.SignedGaussian:
                this.data.Doubles = extractData <double>(jObject);
                break;

            case RandomOrgDataType.UUID:
            case RandomOrgDataType.SignedUUID:
                string[] rawUUIDs = extractData <string>(jObject);
                Guid[]   uuids    = new Guid[rawUUIDs.Length];
                for (int i = 0; i < uuids.Length; i++)
                {
                    uuids[i] = new Guid(rawUUIDs[i]);
                }
                this.data.UUIDs = uuids;
                break;

            default:
                break;
            }
        }
        Response createResponse(JsonObject rawResponse, RandomOrgDataType dataType)
        {
            // check for errors
            var error = JsonHelper.GetJsonObject(rawResponse, "error");
            if(error != null) {
                advisoryDelay = 0;
                if(ThrowProtocolErrors)
                    throw new ProtocolViolationException(String.Format(ProtocolException, error["code"], error["message"]));
                else
                    return new Response((int)error["code"], error["message"] as string);
            }

            var result = new Response(rawResponse, dataType);
            advisoryDelay = result.AdvisoryDelay * TimeSpan.TicksPerMillisecond;

            return result;
        }