Ejemplo n.º 1
0
        public async static Task <GetTicketResponse> GetTicket(string TicketID)
        {
            string api = baseURI + "api/ticket/posGetTicket?ticketid=" + TicketID;

            try
            {
                using (var httpClient = new HttpClient())
                {
                    try
                    {
                        var httpResponse = await httpClient.GetAsync(api);

                        if (httpResponse.Content != null)
                        {
                            string responseContent = await httpResponse.Content.ReadAsStringAsync();

                            GetTicketResponse response = JsonConvert.DeserializeObject <GetTicketResponse>(responseContent);
                            return(response);
                        }
                        else
                        {
                            throw new Exception();
                        }
                    }
                    catch
                    {
                        throw;
                    }
                }
            }
            catch
            {
                throw;
            }
        }
Ejemplo n.º 2
0
        public async Task <GetTicketResponse> GetTicket(string accessToken)
        {
            string            url      = $"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={accessToken}&type=jsapi";
            GetTicketResponse response = await this._client.GetAsync <GetTicketResponse>(url, _logger);

            return(response);
        }
Ejemplo n.º 3
0
        private async Task <GetTicketResponse[]> get_tickets(Node[] triad, String[] ans, int nn, int sn, CloudCoin.Denomination denomination)
        {
            GetTicketResponse[] returnTicketsStatus = new GetTicketResponse[3];

            for (int i = 0; i < 3; i++)
            {
                int index = i;
                returnTicketsStatus[i] = await triad[index].getTicket(nn, sn, ans[index], denomination);
            }

            return(returnTicketsStatus);
        }//end get_tickets
        private static void GetTicket(GetTicketResponse result)
        {
            AuthenticationInformation authenticationInformation = (AuthenticationInformation)result.UserState;

            if (!string.IsNullOrEmpty(result.Ticket) && result.Status == GetTicketStatus.Successful)
            {
                authenticationInformation.Status = AuthenticationStatus.GetTicketFinishedSuccessfully;
                authenticationInformation.Ticket = result.Ticket;
            }
            else
            {
                authenticationInformation.Status = AuthenticationStatus.GetTicketFailed;
            }

            authenticationInformation.CurrentOperationCompleted(authenticationInformation);
        }
Ejemplo n.º 5
0
            internal async Task <GetTicketResponse> getTicket(int nn, int sn, String an, CloudCoin.Denomination d)
            {
                var client = new RestClient();

                client.BaseUrl = BaseUri;
                var request = new RestRequest("get_ticket");

                request.AddQueryParameter("nn", nn.ToString());
                request.AddQueryParameter("sn", sn.ToString());
                request.AddQueryParameter("an", an);
                request.AddQueryParameter("pan", an);
                request.AddQueryParameter("denomination", Utils.Denomination2Int(d).ToString());
                request.Timeout = 5000;

                GetTicketResponse getTicketResult = new GetTicketResponse();

                return(await Task.Run <GetTicketResponse>(() =>
                {
                    Stopwatch sw = new Stopwatch();
                    sw.Start();
                    try
                    {
                        var response = client.Execute(request);
                        getTicketResult = JsonConvert.DeserializeObject <GetTicketResponse>(response.Content);
                    }
                    catch (JsonException e)
                    {
                        getTicketResult = new GetTicketResponse(Name, sn, "error", "The server does not respond or returns invalid data", DateTime.Now.ToString());
                    }
                    getTicketResult = getTicketResult ?? new GetTicketResponse(Name, sn, "Network problem", "Node not found", DateTime.Now.ToString());
                    if (getTicketResult.ErrorException != null)
                    {
                        getTicketResult = new GetTicketResponse(Name, sn, "Network problem", "Problems with network connection", DateTime.Now.ToString());
                    }
                    sw.Stop();
                    getTicketResult.responseTime = sw.Elapsed;
                    Logger.Write("GetTicket request for coin: " + sn + " at node " + this.Number + ", timeout " + request.Timeout + " returned '" +
                                 getTicketResult.status + "' with message '" + getTicketResult.message + "' in " + sw.ElapsedMilliseconds + "ms.", Logger.Level.Normal);
                    return getTicketResult;
                }));
            }//end get ticket
Ejemplo n.º 6
0
        private void GetTicketCompletedEx(GetTicketResponse response)
        {
            if (response.Status == GetTicketStatus.Successful)
            {
                _ticket = response.Ticket;

                if (GetTicketSucceeded != null)
                {
                    GetTicketSucceeded(response.Ticket);
                }
            }
            else
            {
                if (GetTicketFailed != null)
                {
                    GetTicketFailed();
                }
            }
        }
Ejemplo n.º 7
0
        private void GetTicketCompleted(GetTicketResponse response)
        {
            if (response.Status == GetTicketStatus.Successful)
            {
                _ticket = response.Ticket;

                string url = string.Format("http://www.box.net/api/1.0/auth/{0}", response.Ticket);

                //BrowserLauncher.OpenUrl(url);
                ShowBrowserInDialog(url);
            }
        }
Ejemplo n.º 8
0
        private async Task <ObservableStatus> ProcessFixingGUID(int guid_id, CloudCoin returnCoin, int coinindex)
        {
            fixer = new FixitHelper(guid_id, returnCoin.an);
            GetTicketResponse[] ticketStatus = new GetTicketResponse[3];
            ObservableStatus    result       = new ObservableStatus();

            int corner = 1;

            while (!fixer.finnished)
            {
                onCoinFixProcessing(new CoinFixProcessingEventArgs(coinindex, guid_id, corner));
                Logger.Write("Fixing coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ".", Logger.Level.Normal);
                string[] trustedServerAns = new string[]
                {
                    returnCoin.an[fixer.currentTriad[0].Number],
                    returnCoin.an[fixer.currentTriad[1].Number],
                    returnCoin.an[fixer.currentTriad[2].Number]
                };

                ticketStatus = await get_tickets(fixer.currentTriad, trustedServerAns, returnCoin.nn, returnCoin.sn, returnCoin.denomination);

                // See if there are errors in the tickets
                if (ticketStatus[0].status != "ticket" || ticketStatus[1].status != "ticket" || ticketStatus[2].status != "ticket")
                {// No tickets, go to next triad corner
                    Logger.Write("Fixing coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". There is no three tickets from triad", Logger.Level.Normal);
                    corner++;
                    fixer.setCornerToCheck(corner);
                }
                else
                {// Has three good tickets
                    Logger.Write("Fixing coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". We have three tickets. Going to fix.", Logger.Level.Normal);
                    var fff = await Instance.NodesArray[guid_id].fix(fixer.currentTriad, ticketStatus[0].message, ticketStatus[1].message,
                                                                     ticketStatus[2].message, returnCoin.pans[guid_id], returnCoin.sn);
                    if (fff.status == "success")  // the guid IS recovered!!!
                    {
                        Logger.Write("Coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". Fixed!.", Logger.Level.Normal);
                        returnCoin.detectStatus[guid_id] = result.Status = CloudCoin.raidaNodeResponse.pass;
                        onCoinFixFinished(new CoinFixFinishedEventArgs(coinindex, guid_id, result.Status));
                        returnCoin.an[guid_id] = returnCoin.pans[guid_id];
                        fixer.finnished        = true;
                        return(result);
                    }
                    else if (fff.status == "fail")
                    { // command failed,  need to try another corner
                        Logger.Write("Coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". Failed, trying another corner...", Logger.Level.Normal);
                        corner++;
                        fixer.setCornerToCheck(corner);
                        returnCoin.detectStatus[guid_id] = CloudCoin.raidaNodeResponse.fail;
                    }
                    else if (fff.status == "error")
                    {
                        Logger.Write("Coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". Error, trying another corner....", Logger.Level.Normal);
                        corner++;
                        fixer.setCornerToCheck(corner);
                        returnCoin.detectStatus[guid_id] = CloudCoin.raidaNodeResponse.error;
                    }
                    else
                    {
                        Logger.Write("Coin " + returnCoin.sn + ", node " + guid_id + ", corner " + corner + ". Error, trying another corner....", Logger.Level.Normal);
                        corner++;
                        fixer.setCornerToCheck(corner);
                        returnCoin.detectStatus[guid_id] = CloudCoin.raidaNodeResponse.error;
                    }
                    //end if else fix was successful
                } //end if else one of the tickts has an error.
            }     //end while fixer not finnihsed.
            // the guid cannot be recovered! all corners checked
            Logger.Write("Coin " + returnCoin.sn + ", node " + guid_id + " was not fixed!", Logger.Level.Normal);
            result.Status = returnCoin.detectStatus[guid_id];
            onCoinFixFinished(new CoinFixFinishedEventArgs(coinindex, guid_id, result.Status));
            return(result);
        }
Ejemplo n.º 9
0
        private void GetTicketCompleted(GetTicketResponse response)
        {
            if (response.Status == GetTicketStatus.Successful)
            {
                _ticket = response.Ticket;

                string url = "https://www.box.net/api/1.0/auth/"+ response.Ticket;

                BrowserLauncher.OpenUrl(url);
            }
            else
            {
                Exception error = response.Error ?? new ApplicationException(string.Format("Can't get an authorization ticket. Operation status is {0}", response.Status));
                throw error;
            }
        }
Ejemplo n.º 10
0
        private void GetTicketFinished(object sender, get_ticketCompletedEventArgs e)
        {
            object[] data = (object[]) e.UserState;
            OperationFinished<GetTicketResponse> getAuthenticationTicketCompleted = (OperationFinished<GetTicketResponse>)data[0];
            GetTicketResponse response;

            if (e.Error != null)
            {
                response = new GetTicketResponse
                           	{
                           		Status = GetTicketStatus.Failed,
                           		UserState = data[1],
                                Error = e.Error
                           	};
            }
            else
            {
                GetTicketStatus status = StatusMessageParser.ParseGetTicketStatus(e.Result);

                Exception error = status == GetTicketStatus.Unknown
                                  	?
                                  		new UnknownOperationStatusException(e.Result)
                                  	:
                                  		null;

                response = new GetTicketResponse
                           	{
                           		Status = status,
                           		Ticket = e.ticket,
                           		UserState = data[1],
                                Error = error
                           	};
            }

            getAuthenticationTicketCompleted(response);
        }