// 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); } }
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); }