diff --git a/PokemonGo/RocketAPI/ClassDiagram1.cd b/PokemonGo/RocketAPI/ClassDiagram1.cd
new file mode 100644
index 0000000..65df112
--- /dev/null
+++ b/PokemonGo/RocketAPI/ClassDiagram1.cd
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ClassDiagram MajorVersion="1" MinorVersion="1">
+ <Class Name="AllEnum.AllEnumReflection">
+ <Position X="0.5" Y="0.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Class>
+ <Enum Name="AllEnum.RpcDirection" Collapsed="true">
+ <Position X="4" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAAAAAABA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.TeamColor" Collapsed="true">
+ <Position X="5.75" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAAAAAAAgAAAAAAAAAAAAAAIAAAAAAAACAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.RequestMethod" Collapsed="true">
+ <Position X="2.25" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>IIEIDEUIQAgqBDwIoCGGoIJApQyEDCBAk2AQBAaCIhA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonMove" Collapsed="true">
+ <Position X="5.75" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>///2a2taND3nEkI0wUfJo5wDB/SAnlktDmPQTadRedI=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemId" Collapsed="true">
+ <Position X="4" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AABEMCCAIiAAAAABAAAgAADmAEQQIQAAEAAAECRAEhA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.InventoryUpgradeType" Collapsed="true">
+ <Position X="7.5" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAEIAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.EggIncubatorType" Collapsed="true">
+ <Position X="7.5" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAIAAAAAAAAAAAAAACAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonFamilyId" Collapsed="true">
+ <Position X="2.25" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>4ABEQHEDC1gQ1AB4LFTSAUAAUAAwQwoVEAowJDJkQCg=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.MapObjectsStatus" Collapsed="true">
+ <Position X="7.5" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAgAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortType" Collapsed="true">
+ <Position X="4" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonId" Collapsed="true">
+ <Position X="4" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>BhccSFupyuqvFunnYpjg+yh/jNHQBhy0N3uocpNlETg=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortSponsor" Collapsed="true">
+ <Position X="2.25" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAAACAAAAAAAACAAAAAACAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.FortRenderingType" Collapsed="true">
+ <Position X="0.5" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemType" Collapsed="true">
+ <Position X="5.75" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAIARAAACAABAAQCSAAAAAAAAAAAAAAAkEAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemCategory" Collapsed="true">
+ <Position X="0.5" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAACAAAAAQAAACAABAAAASAAQAAAAAAAAAAAAkEACAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ItemEffect" Collapsed="true">
+ <Position X="2.25" Y="3.5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAABAAAAAAgACQAAAAwAAAAIAACAAAAIAUEQIA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.ActivityType">
+ <Position X="0.5" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>ABBAAAEAAICBBBAAAAAAYQQAACAMgASAAIAAAAABQAo=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.BadgeType" Collapsed="true">
+ <Position X="2.25" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAYAAAAAgBgiEAAYDUIAAEAICAAsEABAUAUkgAAAeAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.HoloIapItemCategory" Collapsed="true">
+ <Position X="5.75" Y="2.75" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AEAAAAAAAAAAgAAAAAAAAAEAAAAAACAAAAAAAAAAQAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.CameraInterpolation" Collapsed="true">
+ <Position X="4" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>IEAAAAAAAAAAIAAAAACAAAAAAAAABAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.CameraTarget" Collapsed="true">
+ <Position X="5.75" Y="2" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>gAAAAABIAAAAAAAAhAICAAAABAAAAACIAAAGAAAAFAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonType" Collapsed="true">
+ <Position X="0.5" Y="5" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAIAAAAAAAACAAAIBUAAAAAACAAsAABAEAAEAAEAcAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonMovementType" Collapsed="true">
+ <Position X="7.5" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>ABAAAIAgAAAAAAAAAAAAAAAAAAAAECgAAAAAQAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Enum Name="AllEnum.PokemonClass" Collapsed="true">
+ <Position X="0.5" Y="4.25" Width="1.5" />
+ <TypeIdentifier>
+ <HashCode>AAAAAAAAAAAAAAAAAAAAAAAAgAIIAAAAAAAAAAAAAAA=</HashCode>
+ <FileName>GeneratedCode\AllEnum.cs</FileName>
+ </TypeIdentifier>
+ </Enum>
+ <Font Name="Segoe UI" Size="9" />
+</ClassDiagram>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Client.cs b/PokemonGo/RocketAPI/Client.cs
index 8e6948e..4ecf43c 100644
--- a/PokemonGo/RocketAPI/Client.cs
+++ b/PokemonGo/RocketAPI/Client.cs
@@ -95,7 +95,7 @@ namespace PokemonGo.RocketAPI
var deviceCode = await GoogleLogin.GetDeviceCode();
tokenResponse = await GoogleLogin.GetAccessToken(deviceCode);
_accessToken = tokenResponse.id_token;
- Console.WriteLine($"Put RefreshToken in settings for direct login: {tokenResponse.refresh_token}");
+ ColoredConsoleWrite(ConsoleColor.White, $"Put RefreshToken in settings for direct login: {tokenResponse.refresh_token}");
_settings.GoogleRefreshToken = tokenResponse.refresh_token;
AccessToken = tokenResponse.refresh_token;
}
diff --git a/PokemonGo/RocketAPI/Login/GoogleLogin.cs b/PokemonGo/RocketAPI/Login/GoogleLogin.cs
index e5eb5fb..4bfeefc 100644
--- a/PokemonGo/RocketAPI/Login/GoogleLogin.cs
+++ b/PokemonGo/RocketAPI/Login/GoogleLogin.cs
@@ -1,126 +1,119 @@
-#region
-
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
+#region
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
using PokemonGo.RocketAPI.Helpers;
using System.ComponentModel;
using System.Data;
using System.Drawing;
-using System.Globalization;
-using System.IO;
using System.Linq;
-using System.Net;
-using System.Reflection;
using System.Text;
-using System.Text.RegularExpressions;
-using System.Windows.Forms;
-using System.Xml;
-using AllEnum;
-using PokemonGo.RocketAPI.Enums;
-using PokemonGo.RocketAPI.Exceptions;
-using PokemonGo.RocketAPI.Extensions;
-using PokemonGo.RocketAPI.GeneratedCode;
-
-#endregion
-
-namespace PokemonGo.RocketAPI.Login
-{
- internal static class GoogleLogin
- {
- private const string OauthTokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
- private const string OauthEndpoint = "https://accounts.google.com/o/oauth2/device/code";
- private const string ClientId = "848232511240-73ri3t7plvk96pj4f85uj8otdat2alem.apps.googleusercontent.com";
- private const string ClientSecret = "NCjF1TLi2CcY6t5mt0ZveuL7";
-
- static void LogText(string text)
- {
- string textToAppend = "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\r\n";
- File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + @"\Logs.txt", "[" + DateTime.Now.ToString("HH:mm:ss tt") + "] " + text + "\n");
- }
-
- internal static async Task<TokenResponseModel> GetAccessToken(DeviceCodeModel deviceCodeResponse)
- {
- Console.WriteLine("Please visit " + deviceCodeResponse.verification_url + " and enter " +
- deviceCodeResponse.user_code);
- LogText("Please visit " + deviceCodeResponse.verification_url + " and enter " +
- deviceCodeResponse.user_code);
-
- //Poll until user submitted code..
- TokenResponseModel tokenResponse;
- do
- {
- await Task.Delay(2000);
- tokenResponse = await PollSubmittedToken(deviceCodeResponse.device_code);
- } while (tokenResponse.access_token == null || tokenResponse.refresh_token == null);
- Console.WriteLine("Logged in Google Account..");
- return tokenResponse;
- }
-
- public static async Task<TokenResponseModel> GetAccessToken(string refreshToken)
- {
- return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("client_secret", ClientSecret),
- new KeyValuePair<string, string>("refresh_token", refreshToken),
- new KeyValuePair<string, string>("grant_type", "refresh_token"),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
- }
-
- /*public static async Task<TokenResponseModel> GetAccessToken(DeviceCodeModel deviceCode)
- {
- TokenResponseModel tokenResponse;
- do
- {
- await Task.Delay(2000);
- tokenResponse = await PollSubmittedToken(deviceCode.device_code);
- } while (tokenResponse.access_token == null || tokenResponse.refresh_token == null);
-
- return tokenResponse;
- }*/
-
- public static async Task<DeviceCodeModel> GetDeviceCode()
- {
- var deviceCode = await HttpClientHelper.PostFormEncodedAsync<DeviceCodeModel>(OauthEndpoint,
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
- return deviceCode;
- }
-
- private static async Task<TokenResponseModel> PollSubmittedToken(string deviceCode)
- {
- return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
- new KeyValuePair<string, string>("client_id", ClientId),
- new KeyValuePair<string, string>("client_secret", ClientSecret),
- new KeyValuePair<string, string>("code", deviceCode),
- new KeyValuePair<string, string>("grant_type", "http://oauth.net/grant_type/device/1.0"),
- new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
- }
-
-
- internal class ErrorResponseModel
- {
- public string error { get; set; }
- public string error_description { get; set; }
- }
-
- internal class TokenResponseModel
- {
- public string access_token { get; set; }
- public string token_type { get; set; }
- public int expires_in { get; set; }
- public string refresh_token { get; set; }
- public string id_token { get; set; }
- }
-
-
- public class DeviceCodeModel
- {
- public string verification_url { get; set; }
- public int expires_in { get; set; }
- public int interval { get; set; }
- public string device_code { get; set; }
- public string user_code { get; set; }
- }
- }
-}
+using PokemonGo.RocketAPI.Enums;
+
+#endregion
+
+namespace PokemonGo.RocketAPI.Login
+{
+ public static class GoogleLogin
+ {
+ private const string OauthTokenEndpoint = "https://www.googleapis.com/oauth2/v4/token";
+ private const string OauthEndpoint = "https://accounts.google.com/o/oauth2/device/code";
+ private const string ClientId = "848232511240-73ri3t7plvk96pj4f85uj8otdat2alem.apps.googleusercontent.com";
+ private const string ClientSecret = "NCjF1TLi2CcY6t5mt0ZveuL7";
+
+ /// <summary>
+ /// Gets the access token from Google
+ /// </summary>
+ /// <param name="deviceCode"></param>
+ /// <returns>tokenResponse</returns>
+ public static async Task<TokenResponseModel> GetAccessToken(DeviceCodeModel deviceCode)
+ {
+ //Poll until user submitted code..
+ TokenResponseModel tokenResponse;
+ do
+ {
+ await Task.Delay(2000);
+ tokenResponse = await PollSubmittedToken(deviceCode.device_code);
+ } while (tokenResponse.access_token == null || tokenResponse.refresh_token == null);
+
+ return tokenResponse;
+ }
+
+ public static async Task<TokenResponseModel> GetAccessToken(string refreshToken)
+ {
+ return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
+ new KeyValuePair<string, string>("access_type", "offline"),
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("client_secret", ClientSecret),
+ new KeyValuePair<string, string>("refresh_token", refreshToken),
+ new KeyValuePair<string, string>("grant_type", "refresh_token"),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+ }
+
+ public static async Task<DeviceCodeModel> GetDeviceCode()
+ {
+ var deviceCode = await HttpClientHelper.PostFormEncodedAsync<DeviceCodeModel>(OauthEndpoint,
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+
+ try
+ {
+ //ColoredConsoleWrite("Google Device Code copied to clipboard");
+ System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
+ Thread.Sleep(2000);
+ Process.Start(@"http://www.google.com/device");
+ var thread = new Thread(() => Clipboard.SetText(deviceCode.user_code)); //Copy device code
+ thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
+ thread.Start();
+ thread.Join();
+ }
+ catch (Exception)
+ {
+ //System.Console.WriteLine("Couldnt copy to clipboard, do it manually");
+ //System.Console.WriteLine($"Goto: http://www.google.com/device & enter {deviceCode.user_code}");
+ }
+
+ return deviceCode;
+ }
+
+ private static async Task<TokenResponseModel> PollSubmittedToken(string deviceCode)
+ {
+ return await HttpClientHelper.PostFormEncodedAsync<TokenResponseModel>(OauthTokenEndpoint,
+ new KeyValuePair<string, string>("client_id", ClientId),
+ new KeyValuePair<string, string>("client_secret", ClientSecret),
+ new KeyValuePair<string, string>("code", deviceCode),
+ new KeyValuePair<string, string>("grant_type", "http://oauth.net/grant_type/device/1.0"),
+ new KeyValuePair<string, string>("scope", "openid email https://www.googleapis.com/auth/userinfo.email"));
+ }
+
+
+ internal class ErrorResponseModel
+ {
+ public string error { get; set; }
+ public string error_description { get; set; }
+ }
+
+ public class TokenResponseModel
+ {
+ public string access_token { get; set; }
+ public string token_type { get; set; }
+ public int expires_in { get; set; }
+ public string refresh_token { get; set; }
+ public string id_token { get; set; }
+ }
+
+
+ public class DeviceCodeModel
+ {
+ public string verification_url { get; set; }
+ public int expires_in { get; set; }
+ public int interval { get; set; }
+ public string device_code { get; set; }
+ public string user_code { get; set; }
+ }
+ }
+}
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
index 282b67f..6b2baca 100644
--- a/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
+++ b/PokemonGo/RocketAPI/PokemonGo.RocketAPI.csproj
@@ -1,112 +1,113 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>PokemonGo.RocketAPI</RootNamespace>
- <AssemblyName>Pokemon Go Rocket API</AssemblyName>
- <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <ItemGroup>
- <Reference Include="C5, Version=2.2.5073.27396, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
- <HintPath>..\..\packages\C5.2.2.5073.27396\lib\portable-net40+sl50+wp80+win\C5.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\..\packages\S2Geometry.1.0.1\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System" />
- <Reference Include="System.Configuration" />
- <Reference Include="System.Core" />
- <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
- <HintPath>..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System.VarintBitConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <HintPath>..\..\packages\VarintBitConverter.1.0.0.0\lib\Net40\System.VarintBitConverter.dll</HintPath>
- <Private>True</Private>
- </Reference>
- <Reference Include="System.Web" />
- <Reference Include="System.Windows.Forms" />
- <Reference Include="System.Xml.Linq" />
- <Reference Include="System.Data.DataSetExtensions" />
- <Reference Include="Microsoft.CSharp" />
- <Reference Include="System.Data" />
- <Reference Include="System.Net.Http" />
- <Reference Include="System.Xml" />
- </ItemGroup>
- <ItemGroup>
- <Compile Include="Enums\AuthType.cs" />
- <Compile Include="Enums\MiscEnums.cs" />
- <Compile Include="Enums\RequestType.cs" />
- <Compile Include="Exceptions\PtcOfflineException.cs" />
- <Compile Include="Extensions\DateTimeExtensions.cs" />
- <Compile Include="GeneratedCode\AllEnum.cs" />
- <Compile Include="GeneratedCode\Payloads.cs" />
- <Compile Include="GeneratedCode\Request.cs" />
- <Compile Include="GeneratedCode\Response.cs" />
- <Compile Include="Helpers\HttpClientHelper.cs" />
- <Compile Include="Helpers\JsonHelper.cs" />
- <Compile Include="Helpers\ProtoHelper.cs" />
- <Compile Include="Helpers\RetryHandler.cs" />
- <Compile Include="Helpers\S2Helper.cs" />
- <Compile Include="Helpers\Utils.cs" />
- <Compile Include="ISettings.cs" />
- <Compile Include="Login\GoogleLogin.cs" />
- <Compile Include="Login\PtcLogin.cs" />
- <None Include="app.config" />
- <Compile Include="Client.cs" />
- <Compile Include="Extensions\HttpClientExtensions.cs" />
- <Compile Include="Helpers\RandomHelper.cs" />
- <Compile Include="Helpers\RequestBuilder.cs" />
- <Compile Include="Resources.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- </ItemGroup>
- <ItemGroup>
- <None Include="packages.config" />
- <None Include="Proto\AllEnum.proto" />
- <None Include="Proto\Payloads.proto" />
- <None Include="Proto\Response.proto" />
- <None Include="Proto\Request.proto" />
- </ItemGroup>
- <ItemGroup />
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{05D2DA44-1B8E-4CF7-94ED-4D52451CD095}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>PokemonGo.RocketAPI</RootNamespace>
+ <AssemblyName>Pokemon Go Rocket API</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="C5, Version=2.2.5073.27396, Culture=neutral, PublicKeyToken=282361b99ded7e8e, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\C5.2.2.5073.27396\lib\portable-net40+sl50+wp80+win\C5.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Google.Protobuf.3.0.0-beta3\lib\dotnet\Google.Protobuf.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="S2Geometry, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\S2Geometry.1.0.1\lib\portable-net45+wp8+win8\S2Geometry.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.VarintBitConverter, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
+ <HintPath>..\..\packages\VarintBitConverter.1.0.0.0\lib\Net40\System.VarintBitConverter.dll</HintPath>
+ <Private>True</Private>
+ </Reference>
+ <Reference Include="System.Web" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Enums\AuthType.cs" />
+ <Compile Include="Enums\MiscEnums.cs" />
+ <Compile Include="Enums\RequestType.cs" />
+ <Compile Include="Exceptions\PtcOfflineException.cs" />
+ <Compile Include="Extensions\DateTimeExtensions.cs" />
+ <Compile Include="GeneratedCode\AllEnum.cs" />
+ <Compile Include="GeneratedCode\Payloads.cs" />
+ <Compile Include="GeneratedCode\Request.cs" />
+ <Compile Include="GeneratedCode\Response.cs" />
+ <Compile Include="Helpers\HttpClientHelper.cs" />
+ <Compile Include="Helpers\JsonHelper.cs" />
+ <Compile Include="Helpers\ProtoHelper.cs" />
+ <Compile Include="Helpers\RetryHandler.cs" />
+ <Compile Include="Helpers\S2Helper.cs" />
+ <Compile Include="Helpers\Utils.cs" />
+ <Compile Include="ISettings.cs" />
+ <Compile Include="Login\GoogleLogin.cs" />
+ <Compile Include="Login\PtcLogin.cs" />
+ <None Include="app.config" />
+ <Compile Include="Client.cs" />
+ <Compile Include="Extensions\HttpClientExtensions.cs" />
+ <Compile Include="Helpers\RandomHelper.cs" />
+ <Compile Include="Helpers\RequestBuilder.cs" />
+ <Compile Include="Resources.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="ClassDiagram1.cd" />
+ <None Include="packages.config" />
+ <None Include="Proto\AllEnum.proto" />
+ <None Include="Proto\Payloads.proto" />
+ <None Include="Proto\Response.proto" />
+ <None Include="Proto\Request.proto" />
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
- -->
+ -->
</Project>
\ No newline at end of file
diff --git a/PokemonGo/RocketAPI/Window/MainForm.cs b/PokemonGo/RocketAPI/Window/MainForm.cs
index 29efa02..edf6970 100644
--- a/PokemonGo/RocketAPI/Window/MainForm.cs
+++ b/PokemonGo/RocketAPI/Window/MainForm.cs
@@ -169,10 +169,15 @@ namespace PokemonGo.RocketAPI.Window
{
switch (ClientSettings.AuthType)
{
- case AuthType.Ptc:
+ case AuthType.Ptc:
+ ColoredConsoleWrite(Color.Green, "Attempting to log into Pokemon Trainers Club..");
await client.DoPtcLogin(ClientSettings.PtcUsername, ClientSettings.PtcPassword);
break;
- case AuthType.Google:
+ case AuthType.Google:
+ ColoredConsoleWrite(Color.Green, "Attempting to log into Google..");
+ if (ClientSettings.GoogleRefreshToken == "")
+ ColoredConsoleWrite(Color.Green, "Now opening www.Google.com/device and copying the 8 digit code to your clipboard");
+
await client.DoGoogleLogin();
break;
}
@@ -482,7 +487,8 @@ namespace PokemonGo.RocketAPI.Window
string pokemonName;
if (ClientSettings.Language == "german")
{
- ColoredConsoleWrite(Color.DarkCyan, "german");
+ // Dont really need to print this do we? youll know if its German or not
+ //ColoredConsoleWrite(Color.DarkCyan, "german");
string name_english = Convert.ToString(pokemon.PokemonId);
var request = (HttpWebRequest)WebRequest.Create("http://boosting-service.de/pokemon/index.php?pokeName=" + name_english);
var response = (HttpWebResponse)request.GetResponse();
diff --git a/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs b/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
index f6e8701..61fab42 100644
--- a/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
+++ b/PokemonGo/RocketAPI/Window/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.1.0.0")]
-[assembly: AssemblyFileVersion("1.1.0.0")]
+[assembly: AssemblyVersion("1.2.0.0")]
+[assembly: AssemblyFileVersion("1.2.0.0")]
diff --git a/PokemonGo/RocketAPI/Window/Settings.cs b/PokemonGo/RocketAPI/Window/Settings.cs
index 5279e36..12a8091 100644
--- a/PokemonGo/RocketAPI/Window/Settings.cs
+++ b/PokemonGo/RocketAPI/Window/Settings.cs
@@ -90,7 +90,8 @@ namespace PokemonGo.RocketAPI.Window
new KeyValuePair<ItemId, int>(ItemId.ItemRevive, 20),
new KeyValuePair<ItemId, int>(ItemId.ItemPotion, 0),
new KeyValuePair<ItemId, int>(ItemId.ItemSuperPotion, 0),
- new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, 50)
+ new KeyValuePair<ItemId, int>(ItemId.ItemHyperPotion, 50),
+ new KeyValuePair<ItemId, int>(ItemId.ItemMaxPotion, 100)
};
public int RecycleItemsInterval => GetSetting() != string.Empty ? Convert.ToInt16(GetSetting()) : 60;
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs b/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
index d753e53..a852b78 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.Designer.cs
@@ -27,255 +27,256 @@
/// </summary>
private void InitializeComponent()
{
- this.authTypeLabel = new System.Windows.Forms.Label();
- this.authTypeCb = new System.Windows.Forms.ComboBox();
- this.ptcUserLabel = new System.Windows.Forms.Label();
- this.ptcPasswordLabel = new System.Windows.Forms.Label();
- this.latLabel = new System.Windows.Forms.Label();
- this.longiLabel = new System.Windows.Forms.Label();
- this.label1 = new System.Windows.Forms.Label();
- this.label2 = new System.Windows.Forms.Label();
- this.label3 = new System.Windows.Forms.Label();
- this.label4 = new System.Windows.Forms.Label();
- this.label5 = new System.Windows.Forms.Label();
- this.ptcUserText = new System.Windows.Forms.TextBox();
- this.ptcPassText = new System.Windows.Forms.TextBox();
- this.latitudeText = new System.Windows.Forms.TextBox();
- this.longitudeText = new System.Windows.Forms.TextBox();
- this.razzmodeCb = new System.Windows.Forms.ComboBox();
- this.razzSettingText = new System.Windows.Forms.TextBox();
- this.transferTypeCb = new System.Windows.Forms.ComboBox();
- this.transferCpThresText = new System.Windows.Forms.TextBox();
- this.evolveAllChk = new System.Windows.Forms.CheckBox();
- this.saveBtn = new System.Windows.Forms.Button();
- this.SuspendLayout();
- //
- // authTypeLabel
- //
- this.authTypeLabel.AutoSize = true;
- this.authTypeLabel.Location = new System.Drawing.Point(12, 13);
- this.authTypeLabel.Name = "authTypeLabel";
- this.authTypeLabel.Size = new System.Drawing.Size(59, 13);
- this.authTypeLabel.TabIndex = 0;
- this.authTypeLabel.Text = "Auth Type:";
- //
- // authTypeCb
- //
- this.authTypeCb.FormattingEnabled = true;
- this.authTypeCb.Items.AddRange(new object[] {
- "Ptc",
- "Google"});
- this.authTypeCb.Location = new System.Drawing.Point(113, 10);
- this.authTypeCb.Name = "authTypeCb";
- this.authTypeCb.Size = new System.Drawing.Size(75, 21);
- this.authTypeCb.TabIndex = 1;
- //
- // ptcUserLabel
- //
- this.ptcUserLabel.AutoSize = true;
- this.ptcUserLabel.Location = new System.Drawing.Point(12, 42);
- this.ptcUserLabel.Name = "ptcUserLabel";
- this.ptcUserLabel.Size = new System.Drawing.Size(77, 13);
- this.ptcUserLabel.TabIndex = 2;
- this.ptcUserLabel.Text = "Ptc Username:";
- //
- // ptcPasswordLabel
- //
- this.ptcPasswordLabel.AutoSize = true;
- this.ptcPasswordLabel.Location = new System.Drawing.Point(12, 68);
- this.ptcPasswordLabel.Name = "ptcPasswordLabel";
- this.ptcPasswordLabel.Size = new System.Drawing.Size(75, 13);
- this.ptcPasswordLabel.TabIndex = 3;
- this.ptcPasswordLabel.Text = "Ptc Password:";
- //
- // latLabel
- //
- this.latLabel.AutoSize = true;
- this.latLabel.Location = new System.Drawing.Point(12, 94);
- this.latLabel.Name = "latLabel";
- this.latLabel.Size = new System.Drawing.Size(48, 13);
- this.latLabel.TabIndex = 4;
- this.latLabel.Text = "Latitude:";
- //
- // longiLabel
- //
- this.longiLabel.AutoSize = true;
- this.longiLabel.Location = new System.Drawing.Point(12, 120);
- this.longiLabel.Name = "longiLabel";
- this.longiLabel.Size = new System.Drawing.Size(57, 13);
- this.longiLabel.TabIndex = 5;
- this.longiLabel.Text = "Longitude:";
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(12, 146);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(86, 13);
- this.label1.TabIndex = 6;
- this.label1.Text = "Razzberry mode:";
- //
- // label2
- //
- this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(12, 199);
- this.label2.Name = "label2";
- this.label2.Size = new System.Drawing.Size(76, 13);
- this.label2.TabIndex = 7;
- this.label2.Text = "Transfer Type:";
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(12, 256);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(103, 13);
- this.label3.TabIndex = 8;
- this.label3.Text = "Evolve all pokemon:";
- //
- // label4
- //
- this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(12, 227);
- this.label4.Name = "label4";
- this.label4.Size = new System.Drawing.Size(98, 13);
- this.label4.TabIndex = 9;
- this.label4.Text = "Trsfr CP Threshold:";
- //
- // label5
- //
- this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(12, 173);
- this.label5.Name = "label5";
- this.label5.Size = new System.Drawing.Size(93, 13);
- this.label5.TabIndex = 10;
- this.label5.Text = "Razzberry Setting:";
- //
- // ptcUserText
- //
- this.ptcUserText.Location = new System.Drawing.Point(113, 39);
- this.ptcUserText.Name = "ptcUserText";
- this.ptcUserText.Size = new System.Drawing.Size(100, 20);
- this.ptcUserText.TabIndex = 11;
- //
- // ptcPassText
- //
- this.ptcPassText.Location = new System.Drawing.Point(113, 65);
- this.ptcPassText.Name = "ptcPassText";
- this.ptcPassText.Size = new System.Drawing.Size(100, 20);
- this.ptcPassText.TabIndex = 12;
- //
- // latitudeText
- //
- this.latitudeText.Location = new System.Drawing.Point(113, 91);
- this.latitudeText.Name = "latitudeText";
- this.latitudeText.Size = new System.Drawing.Size(100, 20);
- this.latitudeText.TabIndex = 13;
- //
- // longitudeText
- //
- this.longitudeText.Location = new System.Drawing.Point(113, 117);
- this.longitudeText.Name = "longitudeText";
- this.longitudeText.Size = new System.Drawing.Size(100, 20);
- this.longitudeText.TabIndex = 14;
- //
- // razzmodeCb
- //
- this.razzmodeCb.FormattingEnabled = true;
- this.razzmodeCb.Items.AddRange(new object[] {
- "probability",
- "cp"});
- this.razzmodeCb.Location = new System.Drawing.Point(113, 143);
- this.razzmodeCb.Name = "razzmodeCb";
- this.razzmodeCb.Size = new System.Drawing.Size(100, 21);
- this.razzmodeCb.TabIndex = 15;
- //
- // razzSettingText
- //
- this.razzSettingText.Location = new System.Drawing.Point(113, 170);
- this.razzSettingText.Name = "razzSettingText";
- this.razzSettingText.Size = new System.Drawing.Size(37, 20);
- this.razzSettingText.TabIndex = 16;
- //
- // transferTypeCb
- //
- this.transferTypeCb.FormattingEnabled = true;
- this.transferTypeCb.Items.AddRange(new object[] {
- "none",
- "cp",
- "leaveStrongest",
- "duplicate",
- "all"});
- this.transferTypeCb.Location = new System.Drawing.Point(113, 196);
- this.transferTypeCb.Name = "transferTypeCb";
- this.transferTypeCb.Size = new System.Drawing.Size(100, 21);
- this.transferTypeCb.TabIndex = 17;
- //
- // transferCpThresText
- //
- this.transferCpThresText.Location = new System.Drawing.Point(113, 224);
- this.transferCpThresText.Name = "transferCpThresText";
- this.transferCpThresText.Size = new System.Drawing.Size(100, 20);
- this.transferCpThresText.TabIndex = 18;
- //
- // evolveAllChk
- //
- this.evolveAllChk.AutoSize = true;
- this.evolveAllChk.Location = new System.Drawing.Point(113, 256);
- this.evolveAllChk.Name = "evolveAllChk";
- this.evolveAllChk.Size = new System.Drawing.Size(15, 14);
- this.evolveAllChk.TabIndex = 19;
- this.evolveAllChk.UseVisualStyleBackColor = true;
- //
- // saveBtn
- //
- this.saveBtn.Location = new System.Drawing.Point(75, 276);
- this.saveBtn.Name = "saveBtn";
- this.saveBtn.Size = new System.Drawing.Size(75, 23);
- this.saveBtn.TabIndex = 20;
- this.saveBtn.Text = "Save";
- this.saveBtn.UseVisualStyleBackColor = true;
- this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
- //
- // SettingsForm
- //
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(233, 310);
- this.Controls.Add(this.saveBtn);
- this.Controls.Add(this.evolveAllChk);
- this.Controls.Add(this.transferCpThresText);
- this.Controls.Add(this.transferTypeCb);
- this.Controls.Add(this.razzSettingText);
- this.Controls.Add(this.razzmodeCb);
- this.Controls.Add(this.longitudeText);
- this.Controls.Add(this.latitudeText);
- this.Controls.Add(this.ptcPassText);
- this.Controls.Add(this.ptcUserText);
- this.Controls.Add(this.label5);
- this.Controls.Add(this.label4);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.label2);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.longiLabel);
- this.Controls.Add(this.latLabel);
- this.Controls.Add(this.ptcPasswordLabel);
- this.Controls.Add(this.ptcUserLabel);
- this.Controls.Add(this.authTypeCb);
- this.Controls.Add(this.authTypeLabel);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
- this.MaximizeBox = false;
- this.MinimizeBox = false;
- this.Name = "SettingsForm";
- this.Padding = new System.Windows.Forms.Padding(9);
- this.ShowIcon = false;
- this.ShowInTaskbar = false;
- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
- this.Text = "Settings";
- this.Load += new System.EventHandler(this.SettingsForm_Load);
- this.ResumeLayout(false);
- this.PerformLayout();
-
+ this.authTypeLabel = new System.Windows.Forms.Label();
+ this.authTypeCb = new System.Windows.Forms.ComboBox();
+ this.ptcUserLabel = new System.Windows.Forms.Label();
+ this.ptcPasswordLabel = new System.Windows.Forms.Label();
+ this.latLabel = new System.Windows.Forms.Label();
+ this.longiLabel = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.ptcUserText = new System.Windows.Forms.TextBox();
+ this.ptcPassText = new System.Windows.Forms.TextBox();
+ this.latitudeText = new System.Windows.Forms.TextBox();
+ this.longitudeText = new System.Windows.Forms.TextBox();
+ this.razzmodeCb = new System.Windows.Forms.ComboBox();
+ this.razzSettingText = new System.Windows.Forms.TextBox();
+ this.transferTypeCb = new System.Windows.Forms.ComboBox();
+ this.transferCpThresText = new System.Windows.Forms.TextBox();
+ this.evolveAllChk = new System.Windows.Forms.CheckBox();
+ this.saveBtn = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // authTypeLabel
+ //
+ this.authTypeLabel.AutoSize = true;
+ this.authTypeLabel.Location = new System.Drawing.Point(12, 13);
+ this.authTypeLabel.Name = "authTypeLabel";
+ this.authTypeLabel.Size = new System.Drawing.Size(59, 13);
+ this.authTypeLabel.TabIndex = 0;
+ this.authTypeLabel.Text = "Auth Type:";
+ //
+ // authTypeCb
+ //
+ this.authTypeCb.FormattingEnabled = true;
+ this.authTypeCb.Items.AddRange(new object[] {
+ "Ptc",
+ "Google"});
+ this.authTypeCb.Location = new System.Drawing.Point(113, 10);
+ this.authTypeCb.Name = "authTypeCb";
+ this.authTypeCb.Size = new System.Drawing.Size(75, 21);
+ this.authTypeCb.TabIndex = 1;
+ this.authTypeCb.SelectedIndexChanged += new System.EventHandler(this.authTypeCb_SelectedIndexChanged);
+ //
+ // ptcUserLabel
+ //
+ this.ptcUserLabel.AutoSize = true;
+ this.ptcUserLabel.Location = new System.Drawing.Point(12, 42);
+ this.ptcUserLabel.Name = "ptcUserLabel";
+ this.ptcUserLabel.Size = new System.Drawing.Size(77, 13);
+ this.ptcUserLabel.TabIndex = 2;
+ this.ptcUserLabel.Text = "Ptc Username:";
+ //
+ // ptcPasswordLabel
+ //
+ this.ptcPasswordLabel.AutoSize = true;
+ this.ptcPasswordLabel.Location = new System.Drawing.Point(12, 68);
+ this.ptcPasswordLabel.Name = "ptcPasswordLabel";
+ this.ptcPasswordLabel.Size = new System.Drawing.Size(75, 13);
+ this.ptcPasswordLabel.TabIndex = 3;
+ this.ptcPasswordLabel.Text = "Ptc Password:";
+ //
+ // latLabel
+ //
+ this.latLabel.AutoSize = true;
+ this.latLabel.Location = new System.Drawing.Point(12, 94);
+ this.latLabel.Name = "latLabel";
+ this.latLabel.Size = new System.Drawing.Size(48, 13);
+ this.latLabel.TabIndex = 4;
+ this.latLabel.Text = "Latitude:";
+ //
+ // longiLabel
+ //
+ this.longiLabel.AutoSize = true;
+ this.longiLabel.Location = new System.Drawing.Point(12, 120);
+ this.longiLabel.Name = "longiLabel";
+ this.longiLabel.Size = new System.Drawing.Size(57, 13);
+ this.longiLabel.TabIndex = 5;
+ this.longiLabel.Text = "Longitude:";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 146);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(86, 13);
+ this.label1.TabIndex = 6;
+ this.label1.Text = "Razzberry mode:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 199);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(76, 13);
+ this.label2.TabIndex = 7;
+ this.label2.Text = "Transfer Type:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(12, 256);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(103, 13);
+ this.label3.TabIndex = 8;
+ this.label3.Text = "Evolve all pokemon:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(12, 227);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(98, 13);
+ this.label4.TabIndex = 9;
+ this.label4.Text = "Trsfr CP Threshold:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(12, 173);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(93, 13);
+ this.label5.TabIndex = 10;
+ this.label5.Text = "Razzberry Setting:";
+ //
+ // ptcUserText
+ //
+ this.ptcUserText.Location = new System.Drawing.Point(113, 39);
+ this.ptcUserText.Name = "ptcUserText";
+ this.ptcUserText.Size = new System.Drawing.Size(100, 20);
+ this.ptcUserText.TabIndex = 11;
+ //
+ // ptcPassText
+ //
+ this.ptcPassText.Location = new System.Drawing.Point(113, 65);
+ this.ptcPassText.Name = "ptcPassText";
+ this.ptcPassText.Size = new System.Drawing.Size(100, 20);
+ this.ptcPassText.TabIndex = 12;
+ //
+ // latitudeText
+ //
+ this.latitudeText.Location = new System.Drawing.Point(113, 91);
+ this.latitudeText.Name = "latitudeText";
+ this.latitudeText.Size = new System.Drawing.Size(100, 20);
+ this.latitudeText.TabIndex = 13;
+ //
+ // longitudeText
+ //
+ this.longitudeText.Location = new System.Drawing.Point(113, 117);
+ this.longitudeText.Name = "longitudeText";
+ this.longitudeText.Size = new System.Drawing.Size(100, 20);
+ this.longitudeText.TabIndex = 14;
+ //
+ // razzmodeCb
+ //
+ this.razzmodeCb.FormattingEnabled = true;
+ this.razzmodeCb.Items.AddRange(new object[] {
+ "probability",
+ "cp"});
+ this.razzmodeCb.Location = new System.Drawing.Point(113, 143);
+ this.razzmodeCb.Name = "razzmodeCb";
+ this.razzmodeCb.Size = new System.Drawing.Size(100, 21);
+ this.razzmodeCb.TabIndex = 15;
+ //
+ // razzSettingText
+ //
+ this.razzSettingText.Location = new System.Drawing.Point(113, 170);
+ this.razzSettingText.Name = "razzSettingText";
+ this.razzSettingText.Size = new System.Drawing.Size(37, 20);
+ this.razzSettingText.TabIndex = 16;
+ //
+ // transferTypeCb
+ //
+ this.transferTypeCb.FormattingEnabled = true;
+ this.transferTypeCb.Items.AddRange(new object[] {
+ "none",
+ "cp",
+ "leaveStrongest",
+ "duplicate",
+ "all"});
+ this.transferTypeCb.Location = new System.Drawing.Point(113, 196);
+ this.transferTypeCb.Name = "transferTypeCb";
+ this.transferTypeCb.Size = new System.Drawing.Size(100, 21);
+ this.transferTypeCb.TabIndex = 17;
+ //
+ // transferCpThresText
+ //
+ this.transferCpThresText.Location = new System.Drawing.Point(113, 224);
+ this.transferCpThresText.Name = "transferCpThresText";
+ this.transferCpThresText.Size = new System.Drawing.Size(100, 20);
+ this.transferCpThresText.TabIndex = 18;
+ //
+ // evolveAllChk
+ //
+ this.evolveAllChk.AutoSize = true;
+ this.evolveAllChk.Location = new System.Drawing.Point(113, 256);
+ this.evolveAllChk.Name = "evolveAllChk";
+ this.evolveAllChk.Size = new System.Drawing.Size(15, 14);
+ this.evolveAllChk.TabIndex = 19;
+ this.evolveAllChk.UseVisualStyleBackColor = true;
+ //
+ // saveBtn
+ //
+ this.saveBtn.Location = new System.Drawing.Point(75, 276);
+ this.saveBtn.Name = "saveBtn";
+ this.saveBtn.Size = new System.Drawing.Size(75, 23);
+ this.saveBtn.TabIndex = 20;
+ this.saveBtn.Text = "Save";
+ this.saveBtn.UseVisualStyleBackColor = true;
+ this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click);
+ //
+ // SettingsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(233, 310);
+ this.Controls.Add(this.saveBtn);
+ this.Controls.Add(this.evolveAllChk);
+ this.Controls.Add(this.transferCpThresText);
+ this.Controls.Add(this.transferTypeCb);
+ this.Controls.Add(this.razzSettingText);
+ this.Controls.Add(this.razzmodeCb);
+ this.Controls.Add(this.longitudeText);
+ this.Controls.Add(this.latitudeText);
+ this.Controls.Add(this.ptcPassText);
+ this.Controls.Add(this.ptcUserText);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.longiLabel);
+ this.Controls.Add(this.latLabel);
+ this.Controls.Add(this.ptcPasswordLabel);
+ this.Controls.Add(this.ptcUserLabel);
+ this.Controls.Add(this.authTypeCb);
+ this.Controls.Add(this.authTypeLabel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "SettingsForm";
+ this.Padding = new System.Windows.Forms.Padding(9);
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Settings";
+ this.Load += new System.EventHandler(this.SettingsForm_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
}
#endregion
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.cs b/PokemonGo/RocketAPI/Window/SettingsForm.cs
index b75867c..25dd127 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.cs
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.cs
@@ -44,6 +44,25 @@ namespace PokemonGo.RocketAPI.Window
Settings.Instance.SetSetting(evolveAllChk.Checked ? "true" : "false", "EvolveAllGivenPokemons");
Settings.Instance.Reload();
Close();
- }
+ }
+
+ private void authTypeCb_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (authTypeCb.Text == "Google")
+ {
+ ptcUserText.Visible = false;
+ ptcPassText.Visible = false;
+ ptcUserLabel.Visible = false;
+ ptcPasswordLabel.Visible = false;
+ }
+ else
+ {
+ ptcUserText.Visible = true;
+ ptcPassText.Visible = true;
+ ptcUserLabel.Visible = true;
+ ptcPasswordLabel.Visible = true;
+
+ }
+ }
}
}
diff --git a/PokemonGo/RocketAPI/Window/SettingsForm.resx b/PokemonGo/RocketAPI/Window/SettingsForm.resx
index 1af7de1..29dcb1b 100644
--- a/PokemonGo/RocketAPI/Window/SettingsForm.resx
+++ b/PokemonGo/RocketAPI/Window/SettingsForm.resx
@@ -1,120 +1,120 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
- <!--
- Microsoft ResX Schema
-
- Version 2.0
-
- The primary goals of this format is to allow a simple XML format
- that is mostly human readable. The generation and parsing of the
- various data types are done through the TypeConverter classes
- associated with the data types.
-
- Example:
-
- ... ado.net/XML headers & schema ...
- <resheader name="resmimetype">text/microsoft-resx</resheader>
- <resheader name="version">2.0</resheader>
- <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
- <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
- <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
- <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
- <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
- <value>[base64 mime encoded serialized .NET Framework object]</value>
- </data>
- <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
- <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
- <comment>This is a comment</comment>
- </data>
-
- There are any number of "resheader" rows that contain simple
- name/value pairs.
-
- Each data row contains a name, and value. The row also contains a
- type or mimetype. Type corresponds to a .NET class that support
- text/value conversion through the TypeConverter architecture.
- Classes that don't support this are serialized and stored with the
- mimetype set.
-
- The mimetype is used for serialized objects, and tells the
- ResXResourceReader how to depersist the object. This is currently not
- extensible. For a given mimetype the value must be set accordingly:
-
- Note - application/x-microsoft.net.object.binary.base64 is the format
- that the ResXResourceWriter will generate, however the reader can
- read any of the formats listed below.
-
- mimetype: application/x-microsoft.net.object.binary.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.soap.base64
- value : The object must be serialized with
- : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
- : and then encoded with base64 encoding.
-
- mimetype: application/x-microsoft.net.object.bytearray.base64
- value : The object must be serialized into a byte array
- : using a System.ComponentModel.TypeConverter
- : and then encoded with base64 encoding.
- -->
- <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
- <xsd:element name="root" msdata:IsDataSet="true">
- <xsd:complexType>
- <xsd:choice maxOccurs="unbounded">
- <xsd:element name="metadata">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" use="required" type="xsd:string" />
- <xsd:attribute name="type" type="xsd:string" />
- <xsd:attribute name="mimetype" type="xsd:string" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:attribute name="alias" type="xsd:string" />
- <xsd:attribute name="name" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="data">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
- <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
- <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
- <xsd:attribute ref="xml:space" />
- </xsd:complexType>
- </xsd:element>
- <xsd:element name="resheader">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
- </xsd:schema>
- <resheader name="resmimetype">
- <value>text/microsoft-resx</value>
- </resheader>
- <resheader name="version">
- <value>2.0</value>
- </resheader>
- <resheader name="reader">
- <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
- <resheader name="writer">
- <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
- </resheader>
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
</root>
\ No newline at end of file
You may download the files in Public Git.