示例#1
0
        /// <summary>
        /// Uploads CAN object to CAN server.
        /// </summary>
        /// <param name="ObjectData">CAN object to upload.</param>
        /// <returns>Structure describing whether the function succeeded and response provided by CAN server.</returns>
        public async Task <CanUploadResult> CanUploadObject(byte[] ObjectData)
        {
            log.Trace("(ObjectData.Length:{0})", ObjectData.Length);

            CanApiResult apiResult = await SendRequest("add", new NameValueCollection(), "file", "object", ObjectData);

            CanUploadResult res = CanUploadResult.FromApiResult(apiResult);

            if (res.Success)
            {
                log.Trace("(-):*.Success={0},*.Hash='{1}'", res.Success, res.Hash.ToBase58());
            }
            else
            {
                log.Trace("(-):*.Success={0},*.Message='{1}'", res.Success, res.Message);
            }
            return(res);
        }
示例#2
0
        /// <summary>
        /// Creates a new object based on a result from CAN API including validation checks.
        /// </summary>
        /// <param name="ApiResult">CAN API result object to copy values from.</param>
        /// <returns>Structure describing result of CAN upload operation.</returns>
        public static CanUploadResult FromApiResult(CanApiResult ApiResult)
        {
            log.Trace("()");

            CanUploadResult res = new CanUploadResult(ApiResult);

            if (res.Success)
            {
                bool error = false;
                try
                {
                    CanUploadObjectResponse response = JsonConvert.DeserializeObject <CanUploadObjectResponse>(res.DataStr);
                    if (!string.IsNullOrEmpty(response.Hash))
                    {
                        res.Hash = Base58Encoding.Encoder.DecodeRaw(response.Hash);
                        if (res.Hash == null)
                        {
                            log.Error("Unable to decode hash '{0}'.", response.Hash);
                            error = true;
                        }
                    }
                    else
                    {
                        log.Error("Empty hash in CAN response.");
                        error = true;
                    }
                }
                catch (Exception e)
                {
                    log.Error("Exception occurred: {0}", e.ToString());
                    error = true;
                }

                if (error)
                {
                    res.Success    = false;
                    res.Message    = "Invalid CAN response.";
                    res.IsCanError = false;
                }
            }

            log.Trace("(-)");
            return(res);
        }