Esempio n. 1
0
        // Send a list of items to purchase from the faction store
        public static bool PostBuyItems(Dictionary <string, PurchasedItem> sold, FactionValue owner, bool blackMarket)
        {
            try {
                if (sold == null || owner == null)
                {
                    PersistentMapClient.Logger.LogIfDebug("null owner or dictionary");
                    return(false);
                }
                if (sold.Count() > 0)
                {
                    WarService market = WarService.PostBuyItems;
                    if (blackMarket)
                    {
                        market = WarService.PostBuyBlackMarketItem;
                    }
                    string          testjson = JsonConvert.SerializeObject(sold.Values.ToList <PurchasedItem>());
                    HttpWebRequest  request  = new RequestBuilder(market).Faction(owner).PostData(testjson).Build();
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        StreamReader reader      = new StreamReader(responseStream);
                        string       pitemString = reader.ReadToEnd();
                        if (blackMarket)
                        {
                            PurchasedItem pItem;
                            pItem = JsonConvert.DeserializeObject <PurchasedItem>(pitemString);
                            PersistentMapClient.updateBMarketId(pItem.TransactionId);
                        }

                        return(true);
                    }
                }
                else
                {
                    PersistentMapClient.Logger.Log("No online items purchased, nothing to do");
                    return(true);
                }
            }
            catch (Exception e) {
                PersistentMapClient.Logger.LogError(e);
                return(false);
            }
        }
Esempio n. 2
0
            public HttpWebRequest Build()
            {
                switch (_service)
                {
                case WarService.PostBuyItems:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/purchasefromshop/{_faction}";
                    _requestMethod = "POST";
                    break;

                case WarService.PostMissionResult:
                    _requestUrl    = $"{Fields.settings.ServerURL}{Web.postUrl}";
                    _requestMethod = "POST";
                    break;

                case WarService.PostNonWarResult:
                    _requestUrl    = $"{Fields.settings.ServerURL}{Web.nonWarUrl}";
                    _requestMethod = "POST";
                    break;

                case WarService.PostSalvage:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/postsalvage/{_faction}";
                    _requestMethod = "POST";
                    break;

                case WarService.PostSoldItems:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/postsolditems/{_faction}";
                    _requestMethod = "POST";
                    break;

                case WarService.GetFactionShop:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/getshop/{_faction}";
                    _requestMethod = "GET";
                    break;

                case WarService.GetServerSettings:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/roguesettingservice/getsettings";
                    _requestMethod = "GET";
                    break;

                case WarService.GetBlackMarket:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/getblackmarketshop/{_faction}";
                    _requestMethod = "GET";
                    break;

                case WarService.PostBuyBlackMarketItem:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueshopservices/purchasefromblackmarketshop/{_faction}";
                    _requestMethod = "POST";
                    break;

                case WarService.GetHpgMail:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/rogueevents/hpgmessages";
                    _requestMethod = "GET";
                    break;

                case WarService.GetStarMap:
                default:
                    _requestUrl    = $"{Fields.settings.ServerURL}api/roguewarservices/getmap";
                    _requestMethod = "GET";
                    break;
                }

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_requestUrl);

                request.AutomaticDecompression = DecompressionMethods.GZip;
                if (Fields.settings.allowSelfSignedCert)
                {
                    request.ServerCertificateValidationCallback = (sender, certificate, chain, policyErrors) => { return(true); };
                }
                request.AllowAutoRedirect = true;
                request.Method            = _requestMethod;
                request.ContentType       = "application/json; charset=utf-8";
                request.Timeout           = 30000; // 30s connection timeout
                string clientId = PersistentMapClient.getClientPostId();

                request.Headers["X-RT-CLIENT"]         = clientId;
                request.Headers["X-RT-CLIENT-VERSION"] = PersistentMapClient.ClientVersion;
                request.Headers["X-RT-ISTATE"]         = iState.ToString();
                request.Headers["X-RT-VERSION"]        = RtCore.RTCore.Version;

                if (_postJSON != null)
                {
                    // TODO: Why are we ASCII encoding instead of UTF-8?
                    byte[] testarray = Encoding.UTF8.GetBytes(_postJSON);
                    request.ContentLength = testarray.Length;

                    Stream dataStream = request.GetRequestStream();
                    dataStream.Write(testarray, 0, testarray.Length);
                    dataStream.Close();
                }



                return(request);
            }