FreeMoney.BitcoinAddress.CountAddressesForAvatar C# (CSharp) Method

CountAddressesForAvatar() public method

public CountAddressesForAvatar ( string user_identifier, bool include_already_assigned ) : int
user_identifier string
include_already_assigned bool
return int
        public int CountAddressesForAvatar(string user_identifier, bool include_already_assigned)
        {
            string query = "";
            if (include_already_assigned) {
                query = "select count(*) as cnt from opensim_btc_addresses where user_identifier=?user_identifier";
            } else {
                query = "select count(*) as cnt from opensim_btc_addresses a left outer join opensim_btc_transactions t on a.btc_address=t.btc_address where a.user_identifier=?user_identifier AND t.confirmation_sent_ts > 0 OR t.id IS NULL;";
            }

            int num = 0;

            using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
            {

                dbcon.Open();

                MySqlCommand cmd = new MySqlCommand( query, dbcon);
                try
                {
                    using (cmd)
                    {
                        cmd.Parameters.AddWithValue("?user_identifier", user_identifier);

                        using (MySqlDataReader dbReader = cmd.ExecuteReader())
                        {
                            if (dbReader.Read())
                            {
                                num = dbReader.GetInt32(0);
                            }
                        }

                        cmd.Dispose();

                    }
                }
                catch (Exception e)
                {
                    //m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}")
                    m_log.Error("[FreeMoney] Error counting addresses for avatar: "+e.ToString());
                }

            }

            return num;
        }

Usage Example

Ejemplo n.º 1
0
        //public Hashtable HandleBitcoinRegistrationRequest(Dictionary<string, object> getvals, Dictionary<string,object> postvals)
        public Hashtable HandleBitcoinRegistrationRequest(Hashtable request_hash)
        {
            Dictionary<string, object> postvals = ServerUtils.ParseQueryString ((string)request_hash["body"]);

            //string base_url = "http://beech/TODO";

            string base_url = m_scenes[0].RegionInfo.ExternalHostName + ":" + m_scenes[0].RegionInfo.HttpPort;
            bool has_errors = false;

            string btc_session_id = "";
            if (postvals.ContainsKey("btc_session_id")) {
                btc_session_id = (string)postvals["btc_session_id"];
            } else if (request_hash.ContainsKey("btc_session_id")) {
                btc_session_id = (string)request_hash["btc_session_id"];
            }

            //Console.WriteLine("btc session id is "+btc_session_id);

            if (btc_session_id == "") {
                has_errors = true;
            }

            string user_identifier = "";
            UUID session_uuid = new UUID (btc_session_id);
            if (m_sessionkeyuser.ContainsKey(session_uuid)) {
                user_identifier = m_sessionkeyuser[session_uuid].ToString();
                if (user_identifier == "") {
                    has_errors = true;
                }
            } else {
                has_errors = true;
            }

            bool is_submit = false;

            List<string> addresses_created = new List<string>();
            List<string> addresses_failed = new List<string>();

            if (postvals.ContainsKey("addresses")) {

                is_submit = true;
                string address_text = (string)postvals["addresses"];

                string[] addresses = Regex.Split(address_text, "/\n/");

                for (int i=0; i<addresses.Length; i++) {
                    BitcoinAddress btc_addr = new BitcoinAddress(m_connectionString, m_btcconfig);
                    if (btc_addr.Create(user_identifier, addresses[i])) {
                        addresses_created.Add(addresses[i]);
                    } else {
                        addresses_failed.Add(addresses[i]);
                    }
                }

            }

            BitcoinAddress count_btc_addr = new BitcoinAddress(m_connectionString, m_btcconfig);
            int count_all_addresses = count_btc_addr.CountAddressesForAvatar(user_identifier, true);
            int count_usable_addresses = count_btc_addr.CountAddressesForAvatar(user_identifier, false);

            Dictionary<string, string> replacements = new Dictionary<string, string> ();
            //replacements.Add ("{BTC_SESSION_ID}",  HttpUtility.HtmlEncode(btc_session_id));
            //TODO put HttpUtility back
            replacements.Add ("{BTC_SESSION_ID}", btc_session_id);
            if (is_submit) {
                replacements.Add ("{BTC_DISABLE_COMPLETE_START}",  "<!--");
                replacements.Add ("{BTC_DISABLE_COMPLETE_END}",  "-->");
                replacements.Add ("{BTC_DISABLE_INCOMPLETE_START}",  "");
                replacements.Add ("{BTC_DISABLE_INCOMPLETE_END}",  "");
            } else {
                replacements.Add ("{BTC_DISABLE_INCOMPLETE_START}",  "<!--");
                replacements.Add ("{BTC_DISABLE_INCOMPLETE_END}",  "-->");
                replacements.Add ("{BTC_DISABLE_COMPLETE_START}",  "");
                replacements.Add ("{BTC_DISABLE_COMPLETE_END}",  "");
            }
            replacements.Add ("{BTC_COUNT_NEW_ADDRESSES}", addresses_created.Count.ToString());
            replacements.Add ("{BTC_COUNT_ALL_ADDRESSES}",  count_all_addresses.ToString());
            replacements.Add ("{BTC_COUNT_USABLE_ADDRESSES}", count_usable_addresses.ToString());

            string template;

            try {
                template = File.ReadAllText ("bitcoin-register-template.htm");
            } catch (IOException) {
                template = "Error: bitcoin-register-template.htm does not exist.";
                //m_log.Error ("[FreeMoney] Unable to load template file.");
                m_log.Error("Could not load template file bitcoin-register-template.htm");
                has_errors = true;
            }

            int response_code = has_errors ? 400 : 200;

            foreach (KeyValuePair<string, string> pair in replacements) {
                template = template.Replace (pair.Key, pair.Value);
            }

            Hashtable reply = new Hashtable ();

            reply["int_response_code"] = 200;
            // 200 OK
            reply["str_response_string"] = template;
            reply["content_type"] = "text/html";

            return reply;

            // TODO: Handle odd formats
            /*
            $giveawaystr = '"Label","Address"';
                if (preg_match('/'.preg_quote($giveawaystr).'/', $addresstext)) {
                    $format = 'csv';
                }

                $lines = explode("\n", $addresstext);
                $addresses = array();
                foreach($lines as $line) {
                    $line = trim($line);
                    if ($format == 'csv') {
                        if (preg_match('/^.*?,\"(.*?)\"$/', $line, $matches)) {
                            if ($matches[1] == 'Address') {
                                continue;
                            }
                            $addresses[] = $matches[1];
                        }
                    } else {
                        $addresses[] = $line;
                    }
                }
            */
        }
All Usage Examples Of FreeMoney.BitcoinAddress::CountAddressesForAvatar