Beispiel #1
0
        string getApiEndPoint()
        {
            var requestEnvelop = new RequestEnvelop();

            requestEnvelop.Requests.Add(new Request()
            {
                Type = Method.GetPlayer
            });
            var responseEnvelop = apiRequest("https://pgorelease.nianticlabs.com/plfe/rpc", requestEnvelop);

            return(responseEnvelop.ApiUrl);
        }
Beispiel #2
0
        public ClientPlayerDetails getPlayerDetails()
        {
            var requestEnvelop = new RequestEnvelop();

            requestEnvelop.Requests.Add(new Request()
            {
                Type = Method.GetPlayer
            });

            var responseEnvelop = apiRequest(m_apiEndPoint, requestEnvelop);
            var messageParser   = new MessageParser <ClientPlayerDetails>(() => { return(new ClientPlayerDetails()); });

            return(messageParser.ParseFrom(responseEnvelop.Payload[0].Data.ToByteArray()));
        }
Beispiel #3
0
        public InventoryResponseProto getInventory()
        {
            var requestEnvelop = new RequestEnvelop();

            requestEnvelop.Requests.Add(new Request()
            {
                Type = Method.GetInventory
            });

            var responseEnvelop = apiRequest(m_apiEndPoint, requestEnvelop);
            var messageParser   = new MessageParser <InventoryResponseProto>(() => { return(new InventoryResponseProto()); });

            return(messageParser.ParseFrom(responseEnvelop.Payload[0].Data.ToByteArray()));
        }
Beispiel #4
0
        public FileStreamResult Index(string uid, string path)
        {
            LogRequest(HttpContext);

            var            req     = HttpContext.Request;
            Sync           sync    = new Sync(uid);
            RequestEnvelop request = new RequestEnvelop
            {
                Uid       = uid,
                RequestId = sync.RequestId,
                Request   = new FwdRequest
                {
                    RequestId   = sync.RequestId,
                    Path        = path,
                    Method      = req.Method,
                    ContentType = req.ContentType,
                    Body        = req.Body.AsString()
                }
            };

            foreach (var kvp in req.Cookies)
            {
                request.Request.Cookies[kvp.Key] = kvp.Value;
            }

            foreach (var kvp in req.Headers)
            {
                if (!request.Request.Headers.ContainsKey(kvp.Key))
                {
                    request.Request.Headers[kvp.Key] = new FwdRequest.HeaderValues();
                }

                foreach (string item in kvp.Value)
                {
                    request.Request.Headers[kvp.Key].Add(item);
                }
            }

            _messagingService.SendMessage(uid, request.Request);

            ResponseEnvelop  response = sync.GetResponse();
            FileStreamResult result   = new FileStreamResult(response.ResponseStream, response.ContentType);

            return(result);
        }
Beispiel #5
0
        ResponseEnvelop apiRequest(string apiEndPoint, RequestEnvelop requestEnvelop)
        {
            requestEnvelop.Direction = Direction.Request;
            requestEnvelop.RpcId     = 7309341774315520108;

            requestEnvelop.Latitude  = m_coordLatitude;
            requestEnvelop.Longitude = m_coordLongitude;
            requestEnvelop.Altitude  = m_coordAltitude;

            requestEnvelop.Unknown12 = 989;
            requestEnvelop.Auth      = new RequestEnvelop.Types.AuthInfo()
            {
                Provider = (m_authType == AuthenticationService.AuthenticationType.Google) ? "google" : "ptc",
                Token    = new RequestEnvelop.Types.AuthInfo.Types.JWT()
                {
                    Contents  = m_accessToken,
                    Unknown13 = 59
                }
            };

            var memoryStream = new System.IO.MemoryStream();
            var outStream    = new CodedOutputStream(memoryStream, false);

            requestEnvelop.WriteTo(outStream);
            outStream.Flush();
            memoryStream.Position = 0;

            var memoryReader = new System.IO.BinaryReader(memoryStream);

            byte[] data = memoryReader.ReadBytes((int)memoryStream.Length);


            data = HttpHelper.Post(apiEndPoint, data);

            var responseEnvelop = new ResponseEnvelop();

            var messageParser = new MessageParser <ResponseEnvelop>(() => { return(new ResponseEnvelop()); });

            responseEnvelop = messageParser.ParseFrom(data);

            return(responseEnvelop);
        }
 static ResponseEnvelop api_req(string api_endpoint, string access_token, RequestEnvelop.Types.Requests[] reqs)
 {
     try
     {
         var envelop = new RequestEnvelop
         {
             Unknown1 = 2,
             RpcId = 8145806132888207460,
             Latitude = COORDS_LATITUDE,
             Longitude = COORDS_LONGITUDE,
             Altitude = COORDS_ALTITUDE,
             Unknown12 = 989,
             Auth = new RequestEnvelop.Types.AuthInfo
             {
                 Provider = "ptc",
                 Token = new RequestEnvelop.Types.AuthInfo.Types.JWT { Contents = access_token, Unknown13 = 59 },
             }
         };
         foreach (var r in reqs)
             envelop.Requests.Add(r);
         using (var client = new HttpClient())
         {
             client.DefaultRequestHeaders.Add("User-Agent", "Niantic App");
             using (var ms = new MemoryStream())
             {
                 envelop.WriteTo(ms);
                 ms.Position = 0;
                 var result = client.PostAsync(api_endpoint, new ByteArrayContent(ms.ToArray())).Result;
                 var r = result.Content.ReadAsByteArrayAsync().Result;
                 var ret = ResponseEnvelop.Parser.ParseFrom(r);
                 return ret;
             }
         }
     }
     catch (Exception e)
     {
         if (_debug)
             Console.WriteLine(e);
         return null;
     }
 }
Beispiel #7
0
        public GetMapObjectsOutProto getMapObjects()
        {
            var requestMapObjects = new GetMapObjectsProto()
            {
                CellId      = ByteString.CopyFrom(S2Helper.GetNearbyCellIds(m_coordLongitude, m_coordLatitude)),
                SinceTimeMs = ByteString.CopyFromUtf8("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),
                PlayerLat   = m_coordLatitude,
                PlayerLng   = m_coordLongitude,
            };
            var requestEnvelop = new RequestEnvelop();

            requestEnvelop.Requests.Add(new Request()
            {
                Type = Method.GetMapObjects, Data = requestMapObjects.ToByteString()
            });


            var responseEnvelop = apiRequest(m_apiEndPoint, requestEnvelop);
            var messageParser   = new MessageParser <GetMapObjectsOutProto>(() => { return(new GetMapObjectsOutProto()); });

            return(messageParser.ParseFrom(responseEnvelop.Payload[0].Data.ToByteArray()));
        }