From 3d77cb94f7d59ce6a5344cefb1040537a9d8dee7 Mon Sep 17 00:00:00 2001 From: brewdente <brewdente@gmail.com> Date: Wed, 6 May 2015 22:09:03 -0400 Subject: [PATCH] CodeMaid cleanup --- source/ChromeDevTools/ChromeProcess.cs | 15 ++-- source/ChromeDevTools/ChromeProcessFactory.cs | 9 +- source/ChromeDevTools/ChromeSession.cs | 10 +-- source/ChromeDevTools/ChromeSessionFactory.cs | 10 +-- source/ChromeDevTools/Command.cs | 19 ++-- source/ChromeDevTools/CommandAttribute.cs | 6 +- source/ChromeDevTools/CommandFactory.cs | 9 +- source/ChromeDevTools/CommandResponse.cs | 11 +-- .../CommandResponseAttribute.cs | 6 +- .../ChromeDevTools/CommandResponseFactory.cs | 15 ++-- source/ChromeDevTools/ErrorResponse.cs | 10 +-- source/ChromeDevTools/Event.cs | 13 +-- source/ChromeDevTools/EventAttribute.cs | 6 +- source/ChromeDevTools/EventFactory.cs | 10 +-- source/ChromeDevTools/EventHandler.cs | 10 +-- .../Extensions/JTokenExtensions.cs | 10 +-- .../Extensions/ObjectExtensions.cs | 9 +- source/ChromeDevTools/IChromeProcess.cs | 5 +- .../ChromeDevTools/IChromeProcessFactory.cs | 10 +-- source/ChromeDevTools/IChromeSession.cs | 8 +- .../ChromeDevTools/IChromeSessionFactory.cs | 10 +-- source/ChromeDevTools/ICommandFactory.cs | 10 +-- .../ChromeDevTools/ICommandResponseFactory.cs | 10 +-- source/ChromeDevTools/IEventFactory.cs | 10 +-- source/ChromeDevTools/IMethodNameAttribute.cs | 10 +-- source/ChromeDevTools/IMethodTypeMap.cs | 6 +- source/ChromeDevTools/MethodTypeMap.cs | 11 ++- source/ProtocolGenerator/Program.cs | 89 +++++++++---------- source/Sample/Program.cs | 21 ++--- 29 files changed, 124 insertions(+), 254 deletions(-) diff --git a/source/ChromeDevTools/ChromeProcess.cs b/source/ChromeDevTools/ChromeProcess.cs index 508d13d..21dfbd1 100644 --- a/source/ChromeDevTools/ChromeProcess.cs +++ b/source/ChromeDevTools/ChromeProcess.cs @@ -4,9 +4,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Linq; using System.Net; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -15,9 +13,10 @@ namespace MasterDevs.ChromeDevTools public class ChromeProcess : IChromeProcess { public DirectoryInfo UserDirectory { get; set; } + public Process Process { get; set; } + public string RemoteDebuggingUri { get; set; } - public void Dispose() { @@ -40,14 +39,14 @@ namespace MasterDevs.ChromeDevTools var uriBuilder = new UriBuilder(RemoteDebuggingUri); uriBuilder.Path = "/json"; var remoteSessions = await webClient.DownloadStringTaskAsync(uriBuilder.Uri); - using(var stringReader = new StringReader(remoteSessions)) - using(var jsonReader = new JsonTextReader(stringReader)) + using (var stringReader = new StringReader(remoteSessions)) + using (var jsonReader = new JsonTextReader(stringReader)) { var sessionsObject = JToken.ReadFrom(jsonReader) as JArray; - foreach(var sessionObject in sessionsObject) + foreach (var sessionObject in sessionsObject) { var sessionUrl = sessionObject["webSocketDebuggerUrl"].GetSafeString(); - if(!String.IsNullOrEmpty(sessionUrl)) + if (!String.IsNullOrEmpty(sessionUrl)) { remoteSessionUrls.Add(sessionUrl); } @@ -56,4 +55,4 @@ namespace MasterDevs.ChromeDevTools return remoteSessionUrls.ToArray(); } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/ChromeProcessFactory.cs b/source/ChromeDevTools/ChromeProcessFactory.cs index 01ee183..ba30cdc 100644 --- a/source/ChromeDevTools/ChromeProcessFactory.cs +++ b/source/ChromeDevTools/ChromeProcessFactory.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; +using System.Diagnostics; using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -27,4 +22,4 @@ namespace MasterDevs.ChromeDevTools }; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/ChromeSession.cs b/source/ChromeDevTools/ChromeSession.cs index 9a949bb..d6c2901 100644 --- a/source/ChromeDevTools/ChromeSession.cs +++ b/source/ChromeDevTools/ChromeSession.cs @@ -43,11 +43,11 @@ namespace MasterDevs.ChromeDevTools private void EnsureInit() { - if(null == _webSocket) + if (null == _webSocket) { - lock(_Lock) + lock (_Lock) { - if(null == _webSocket) + if (null == _webSocket) { Init().Wait(); } @@ -73,7 +73,6 @@ namespace MasterDevs.ChromeDevTools }); } - public Task<ICommandResponse> SendAsync<T>() { var command = _commandFactory.Create<T>(); @@ -157,7 +156,7 @@ namespace MasterDevs.ChromeDevTools _requestWaitHandles.AddOrUpdate(command.Id, requestResetEvent, (id, r) => requestResetEvent); return Task.Run(() => { - EnsureInit(); + EnsureInit(); _webSocket.Send(requestString); requestResetEvent.WaitOne(); ICommandResponse response = null; @@ -166,6 +165,7 @@ namespace MasterDevs.ChromeDevTools return response; }); } + private bool TryGetCommandResponse(byte[] data, out ICommandResponse response) { response = _responseFactory.Create(data); diff --git a/source/ChromeDevTools/ChromeSessionFactory.cs b/source/ChromeDevTools/ChromeSessionFactory.cs index eb035f2..343409e 100644 --- a/source/ChromeDevTools/ChromeSessionFactory.cs +++ b/source/ChromeDevTools/ChromeSessionFactory.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public class ChromeSessionFactory : IChromeSessionFactory { @@ -20,4 +14,4 @@ namespace MasterDevs.ChromeDevTools return session; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/Command.cs b/source/ChromeDevTools/Command.cs index ebae526..5a82f5b 100644 --- a/source/ChromeDevTools/Command.cs +++ b/source/ChromeDevTools/Command.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface ICommand { @@ -12,6 +6,7 @@ namespace MasterDevs.ChromeDevTools string Method { get; } } + public class Command : ICommand { public long Id @@ -29,10 +24,10 @@ namespace MasterDevs.ChromeDevTools public class Command<T> : Command { - public T Params - { - get; - set; + public T Params + { + get; + set; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/CommandAttribute.cs b/source/ChromeDevTools/CommandAttribute.cs index 71e4c69..9e53178 100644 --- a/source/ChromeDevTools/CommandAttribute.cs +++ b/source/ChromeDevTools/CommandAttribute.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -16,4 +12,4 @@ namespace MasterDevs.ChromeDevTools public string MethodName { get; private set; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/CommandFactory.cs b/source/ChromeDevTools/CommandFactory.cs index 0de72d1..7811105 100644 --- a/source/ChromeDevTools/CommandFactory.cs +++ b/source/ChromeDevTools/CommandFactory.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Collections.Concurrent; using System.Threading; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -45,4 +40,4 @@ namespace MasterDevs.ChromeDevTools return result; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/CommandResponse.cs b/source/ChromeDevTools/CommandResponse.cs index 91a8b66..57a42de 100644 --- a/source/ChromeDevTools/CommandResponse.cs +++ b/source/ChromeDevTools/CommandResponse.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface ICommandResponse { @@ -12,6 +6,7 @@ namespace MasterDevs.ChromeDevTools string Method { get; } } + public class CommandResponse : ICommandResponse { public long Id @@ -35,4 +30,4 @@ namespace MasterDevs.ChromeDevTools private set; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/CommandResponseAttribute.cs b/source/ChromeDevTools/CommandResponseAttribute.cs index f4dfafe..bf0ce94 100644 --- a/source/ChromeDevTools/CommandResponseAttribute.cs +++ b/source/ChromeDevTools/CommandResponseAttribute.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -16,4 +12,4 @@ namespace MasterDevs.ChromeDevTools public string MethodName { get; private set; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/CommandResponseFactory.cs b/source/ChromeDevTools/CommandResponseFactory.cs index 3e4ee87..562daca 100644 --- a/source/ChromeDevTools/CommandResponseFactory.cs +++ b/source/ChromeDevTools/CommandResponseFactory.cs @@ -1,10 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Linq; +using System; namespace MasterDevs.ChromeDevTools { @@ -32,12 +27,12 @@ namespace MasterDevs.ChromeDevTools return jObject.ToObject<ErrorResponse>(); } var methodString = GetMethod(jObject); - if(null == methodString) + if (null == methodString) { return null; } var typeInferredFromMethod = _methodTypeMap.GetCommandResponse(methodString); - if(null == typeInferredFromMethod) + if (null == typeInferredFromMethod) { return null; } @@ -62,4 +57,4 @@ namespace MasterDevs.ChromeDevTools return methodString; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/ErrorResponse.cs b/source/ChromeDevTools/ErrorResponse.cs index 96e9911..8f4aaaf 100644 --- a/source/ChromeDevTools/ErrorResponse.cs +++ b/source/ChromeDevTools/ErrorResponse.cs @@ -1,21 +1,21 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { public interface IErrorResponse { Error Error { get; } + long Id { get; } } + public class Error { public int Code { get; set; } + public string Message { get; set; } } + public class ErrorResponse : IErrorResponse, ICommandResponse { public Error Error @@ -35,4 +35,4 @@ namespace MasterDevs.ChromeDevTools get { throw new NotSupportedException(); } } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/Event.cs b/source/ChromeDevTools/Event.cs index d1cd132..5e3c8aa 100644 --- a/source/ChromeDevTools/Event.cs +++ b/source/ChromeDevTools/Event.cs @@ -1,22 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface IEvent { string Method { get; set; } } + public class Event : IEvent { public string Method { get; set; } } + public class Event<T> : Event { public T Params { get; set; } } - -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/EventAttribute.cs b/source/ChromeDevTools/EventAttribute.cs index 60f35e7..2d8e5e0 100644 --- a/source/ChromeDevTools/EventAttribute.cs +++ b/source/ChromeDevTools/EventAttribute.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -16,4 +12,4 @@ namespace MasterDevs.ChromeDevTools public string MethodName { get; private set; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/EventFactory.cs b/source/ChromeDevTools/EventFactory.cs index c474338..4fd49bf 100644 --- a/source/ChromeDevTools/EventFactory.cs +++ b/source/ChromeDevTools/EventFactory.cs @@ -1,9 +1,5 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Linq; +using System; namespace MasterDevs.ChromeDevTools { @@ -40,4 +36,4 @@ namespace MasterDevs.ChromeDevTools return result as IEvent; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/EventHandler.cs b/source/ChromeDevTools/EventHandler.cs index 5cb000b..f4f65d8 100644 --- a/source/ChromeDevTools/EventHandler.cs +++ b/source/ChromeDevTools/EventHandler.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public delegate void EventHandler(object sender, IEvent response); -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/Extensions/JTokenExtensions.cs b/source/ChromeDevTools/Extensions/JTokenExtensions.cs index 41e2d37..7b57703 100644 --- a/source/ChromeDevTools/Extensions/JTokenExtensions.cs +++ b/source/ChromeDevTools/Extensions/JTokenExtensions.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Newtonsoft.Json.Linq +namespace Newtonsoft.Json.Linq { public static class JTokenExtensions { @@ -14,4 +8,4 @@ namespace Newtonsoft.Json.Linq return jtoken.ToString(); } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/Extensions/ObjectExtensions.cs b/source/ChromeDevTools/Extensions/ObjectExtensions.cs index 74cba8a..a3ce9b9 100644 --- a/source/ChromeDevTools/Extensions/ObjectExtensions.cs +++ b/source/ChromeDevTools/Extensions/ObjectExtensions.cs @@ -1,8 +1,5 @@ using System; -using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -26,9 +23,9 @@ namespace MasterDevs.ChromeDevTools var commandResponseAttribute = type.GetCustomAttributes(typeof(CommandResponseAttribute), true) .FirstOrDefault() as CommandResponseAttribute; if (null != commandResponseAttribute) return commandResponseAttribute.MethodName; - + // maybe it's generic parameter has a method - if(type.IsGenericType) + if (type.IsGenericType) { return type.GenericTypeArguments .FirstOrDefault() @@ -38,4 +35,4 @@ namespace MasterDevs.ChromeDevTools throw new Exception("Could not determine the method type for " + type); } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IChromeProcess.cs b/source/ChromeDevTools/IChromeProcess.cs index d89e9ab..a6ee6e5 100644 --- a/source/ChromeDevTools/IChromeProcess.cs +++ b/source/ChromeDevTools/IChromeProcess.cs @@ -1,9 +1,6 @@ using System; -using System.Collections.Generic; using System.Diagnostics; using System.IO; -using System.Linq; -using System.Text; using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools @@ -18,4 +15,4 @@ namespace MasterDevs.ChromeDevTools string RemoteDebuggingUri { get; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IChromeProcessFactory.cs b/source/ChromeDevTools/IChromeProcessFactory.cs index 8012c8a..ddf5795 100644 --- a/source/ChromeDevTools/IChromeProcessFactory.cs +++ b/source/ChromeDevTools/IChromeProcessFactory.cs @@ -1,13 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface IChromeProcessFactory { IChromeProcess Create(int port); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IChromeSession.cs b/source/ChromeDevTools/IChromeSession.cs index 487ecc4..dd7f989 100644 --- a/source/ChromeDevTools/IChromeSession.cs +++ b/source/ChromeDevTools/IChromeSession.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -14,4 +10,4 @@ namespace MasterDevs.ChromeDevTools void Subscribe<T>(EventHandler handler); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IChromeSessionFactory.cs b/source/ChromeDevTools/IChromeSessionFactory.cs index 9489ba6..286019d 100644 --- a/source/ChromeDevTools/IChromeSessionFactory.cs +++ b/source/ChromeDevTools/IChromeSessionFactory.cs @@ -1,13 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface IChromeSessionFactory { IChromeSession Create(string endpointUrl); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/ICommandFactory.cs b/source/ChromeDevTools/ICommandFactory.cs index 2bc4b7d..afc94d0 100644 --- a/source/ChromeDevTools/ICommandFactory.cs +++ b/source/ChromeDevTools/ICommandFactory.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface ICommandFactory { @@ -14,4 +8,4 @@ namespace MasterDevs.ChromeDevTools Command<T> Create<T>(T parameter); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/ICommandResponseFactory.cs b/source/ChromeDevTools/ICommandResponseFactory.cs index 34795c1..3956cf7 100644 --- a/source/ChromeDevTools/ICommandResponseFactory.cs +++ b/source/ChromeDevTools/ICommandResponseFactory.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface ICommandResponseFactory { @@ -12,4 +6,4 @@ namespace MasterDevs.ChromeDevTools ICommandResponse Create(string responseText); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IEventFactory.cs b/source/ChromeDevTools/IEventFactory.cs index c2da19e..be1c5ab 100644 --- a/source/ChromeDevTools/IEventFactory.cs +++ b/source/ChromeDevTools/IEventFactory.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface IEventFactory { @@ -12,4 +6,4 @@ namespace MasterDevs.ChromeDevTools IEvent Create(string responseText); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IMethodNameAttribute.cs b/source/ChromeDevTools/IMethodNameAttribute.cs index e42d733..d8aabc3 100644 --- a/source/ChromeDevTools/IMethodNameAttribute.cs +++ b/source/ChromeDevTools/IMethodNameAttribute.cs @@ -1,13 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MasterDevs.ChromeDevTools +namespace MasterDevs.ChromeDevTools { public interface IMethodNameAttribute { string MethodName { get; } } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/IMethodTypeMap.cs b/source/ChromeDevTools/IMethodTypeMap.cs index f0f0967..57aa289 100644 --- a/source/ChromeDevTools/IMethodTypeMap.cs +++ b/source/ChromeDevTools/IMethodTypeMap.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -14,4 +10,4 @@ namespace MasterDevs.ChromeDevTools Type GetEvent(string method); } -} +} \ No newline at end of file diff --git a/source/ChromeDevTools/MethodTypeMap.cs b/source/ChromeDevTools/MethodTypeMap.cs index ef256d8..3f96d98 100644 --- a/source/ChromeDevTools/MethodTypeMap.cs +++ b/source/ChromeDevTools/MethodTypeMap.cs @@ -2,8 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools { @@ -17,14 +15,15 @@ namespace MasterDevs.ChromeDevTools { LoadMethodTypeMap(); } + private void LoadMethodTypeMap() { var assembly = Assembly.GetExecutingAssembly(); var assemblyTypes = assembly.GetTypes(); - foreach(var type in assemblyTypes) + foreach (var type in assemblyTypes) { - if(!type.IsClass) continue; - if(type.Name.EndsWith("CommandResponse")) + if (!type.IsClass) continue; + if (type.Name.EndsWith("CommandResponse")) { var methodName = GetMethodName<CommandResponseAttribute>(type); if (null == methodName) continue; @@ -76,4 +75,4 @@ namespace MasterDevs.ChromeDevTools return type; } } -} +} \ No newline at end of file diff --git a/source/ProtocolGenerator/Program.cs b/source/ProtocolGenerator/Program.cs index f7a9316..194d205 100644 --- a/source/ProtocolGenerator/Program.cs +++ b/source/ProtocolGenerator/Program.cs @@ -5,37 +5,35 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; -using System.Threading.Tasks; namespace MasterDevs.ChromeDevTools.ProtocolGenerator { - class Program + internal class Program { - const string CommandAttribute = "Command"; - const string CommandResponseAttribute = "CommandResponse"; - const string EventAttribute = "Event"; - const string ProtocolNameClass = "ProtocolName"; - const string RootNamespace = "MasterDevs.ChromeDevTools.Protocol"; - const string CommandSubclass = "Command"; - const string CommandResponseSubclass = CommandSubclass + "Response"; - const string EventSubclass = "Event"; - private static Dictionary<string, Dictionary<string, string>> _DomainPropertyTypes = new Dictionary<string,Dictionary<string,string>>(); + private const string CommandAttribute = "Command"; + private const string CommandResponseAttribute = "CommandResponse"; + private const string EventAttribute = "Event"; + private const string ProtocolNameClass = "ProtocolName"; + private const string RootNamespace = "MasterDevs.ChromeDevTools.Protocol"; + private const string CommandSubclass = "Command"; + private const string CommandResponseSubclass = CommandSubclass + "Response"; + private const string EventSubclass = "Event"; + private static Dictionary<string, Dictionary<string, string>> _DomainPropertyTypes = new Dictionary<string, Dictionary<string, string>>(); private static Dictionary<string, List<string>> _DomainCommands = new Dictionary<string, List<string>>(); private static Dictionary<string, List<string>> _DomainEvents = new Dictionary<string, List<string>>(); private static Dictionary<string, string> _SimpleTypes = new Dictionary<string, string>(); - - static void Main(string[] args) + private static void Main(string[] args) { var filePath = "protocol.json"; JObject protocolObject = null; - using(var fileStream = File.OpenText(filePath)) - using(var reader = new JsonTextReader(fileStream)) + using (var fileStream = File.OpenText(filePath)) + using (var reader = new JsonTextReader(fileStream)) { protocolObject = (JObject)JToken.ReadFrom(reader); } var outputFolder = "OutputProtocol"; - if(Directory.Exists(outputFolder)) + if (Directory.Exists(outputFolder)) { Directory.Delete(outputFolder, true); } @@ -50,7 +48,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator { AddPropertyTypes(domain["domain"].ToString(), domain["types"] as JArray); } - foreach(var domain in domains) + foreach (var domain in domains) { var domainName = domain["domain"].ToString(); var types = domain["types"] as JArray; @@ -71,8 +69,8 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator { var propertyType = type["type"].ToString(); var typeName = GetString(type["id"]); - if (null != type["enum"] - || null != type["properties"] + if (null != type["enum"] + || null != type["properties"] || "object" == propertyType) { propertyType = domain + "." + typeName; @@ -107,7 +105,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator private static void WriteProtocolClasses(DirectoryInfo directory, string domainName, JArray types, JArray commands, JArray events) { var domainDirectoryInfo = CreateDomainFolder(directory, domainName); - foreach(var type in types ?? new JArray()) + foreach (var type in types ?? new JArray()) { WriteType(domainDirectoryInfo, type as JObject); } @@ -120,7 +118,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator WriteEvent(domainDirectoryInfo, evnt as JObject); } } - + private static void WriteMethodConstants(DirectoryInfo domainDirectoryInfo) { var sb = new StringBuilder(); @@ -135,24 +133,24 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator sb.AppendLine("\t{"); var domains = _DomainCommands.Keys.Union(_DomainEvents.Keys).Distinct(); - foreach(var domain in domains) + foreach (var domain in domains) { sb.AppendFormat("\t\tpublic static class {0}", domain); sb.AppendLine(); sb.AppendLine("\t\t{"); List<string> commands; - if(_DomainCommands.TryGetValue(domain, out commands)) + if (_DomainCommands.TryGetValue(domain, out commands)) { - foreach(var commandName in commands) + foreach (var commandName in commands) { sb.AppendFormat("\t\t\tpublic const string {0} = \"{1}.{2}\";", ToCamelCase(commandName), domain, commandName); sb.AppendLine(); } } List<string> events; - if(_DomainEvents.TryGetValue(domain, out events)) + if (_DomainEvents.TryGetValue(domain, out events)) { - foreach(var eventName in events) + foreach (var eventName in events) { sb.AppendFormat("\t\t\tpublic const string {0} = \"{1}.{2}\";", ToCamelCase(eventName), domain, eventName); sb.AppendLine(); @@ -162,7 +160,6 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator sb.AppendLine(); } - sb.AppendLine("\t}"); sb.AppendLine("}"); WriteToFile(domainDirectoryInfo, ProtocolNameClass, sb.ToString()); @@ -238,8 +235,8 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator sb.AppendFormat("namespace {0}.{1}", RootNamespace, domainDirectoryInfo.Name); sb.AppendLine(); sb.AppendLine("{"); - if(!String.IsNullOrEmpty(description)) - { + if (!String.IsNullOrEmpty(description)) + { sb.AppendLine("\t/// <summary>"); sb.AppendFormat("\t/// {0}", description); sb.AppendLine(); @@ -338,49 +335,49 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator { var propertyName = GeneratePropertyName(property["name"].ToString()); string propertyType = GetString(property["type"]); - if(null != property["$ref"]) + if (null != property["$ref"]) { propertyType = GeneratePropertyTypeFromReference(domain, property["$ref"].ToString()); } - else if("array" == propertyType) + else if ("array" == propertyType) { var arrayDescription = property["items"] as JObject; - if(null != arrayDescription["$ref"]) + if (null != arrayDescription["$ref"]) { propertyType = GeneratePropertyTypeFromReference(domain, arrayDescription["$ref"].ToString()) + "[]"; - } + } else { var arrayType = GetString(arrayDescription["type"]); - if("object" == arrayType) + if ("object" == arrayType) { var internalClassName = ToCamelCase(propertyName) + "Array"; propertyType = internalClassName + "[]"; sb.AppendFormat("\t\tpublic class {0}", internalClassName); sb.AppendLine(); sb.AppendLine("\t\t{"); - foreach(var internalProperty in arrayDescription["properties"] as JArray ?? new JArray()) + foreach (var internalProperty in arrayDescription["properties"] as JArray ?? new JArray()) { WriteProperty(sb, domain, internalClassName, internalProperty as JObject); } sb.AppendLine("\t\t}"); sb.AppendLine(); - } - else + } + else { propertyType = GeneratePropertyType(GetString(arrayDescription["type"])) + "[]"; } } - } + } else { propertyType = GeneratePropertyType(propertyType.ToString()); - } + } sb.AppendLine("\t\t/// <summary>"); sb.AppendFormat("\t\t/// Gets or sets {0}", property["description"] ?? propertyName); sb.AppendLine(); sb.AppendLine("\t\t/// </summary>"); - if(className == propertyName) + if (className == propertyName) { sb.AppendFormat("\t\t[JsonProperty(\"{0}\")]", property["name"]); sb.AppendLine(); @@ -398,10 +395,10 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator { Dictionary<string, string> domainDictionary; string inDomainType; - if(_DomainPropertyTypes.TryGetValue(domain, out domainDictionary) + if (_DomainPropertyTypes.TryGetValue(domain, out domainDictionary) && domainDictionary.TryGetValue(propertyPaths[0], out inDomainType)) { - if(inDomainType.StartsWith(domain + ".")) + if (inDomainType.StartsWith(domain + ".")) { return inDomainType.Substring(inDomainType.IndexOf('.') + 1); } @@ -419,7 +416,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator private static string GeneratePropertyType(string propertyType) { - switch(propertyType) + switch (propertyType) { case "number": return "double"; case "integer": return "long"; @@ -455,7 +452,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator sb.AppendFormat("\tpublic enum {0}", enumName); sb.AppendLine(); sb.AppendLine("\t{"); - foreach(var enumValueName in type["enum"] as JArray ?? new JArray()) + foreach (var enumValueName in type["enum"] as JArray ?? new JArray()) { sb.AppendFormat("\t\t\t{0},", ToCamelCase(enumValueName.ToString().Replace("-", "_"))); sb.AppendLine(); @@ -474,7 +471,7 @@ namespace MasterDevs.ChromeDevTools.ProtocolGenerator private static DirectoryInfo CreateDomainFolder(DirectoryInfo parentDirectory, string domainName) { - return parentDirectory.CreateSubdirectory(domainName); + return parentDirectory.CreateSubdirectory(domainName); } } -} +} \ No newline at end of file diff --git a/source/Sample/Program.cs b/source/Sample/Program.cs index 9e4b2c3..c8fefbe 100644 --- a/source/Sample/Program.cs +++ b/source/Sample/Program.cs @@ -1,21 +1,12 @@ -using MasterDevs.ChromeDevTools; +using MasterDevs.ChromeDevTools.Protocol.Page; using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using MasterDevs.ChromeDevTools.Protocol; -using WebSocket4Net; -using MasterDevs.ChromeDevTools.Protocol.Page; namespace MasterDevs.ChromeDevTools.Sample { - class Program + internal class Program { - static void Main(string[] args) + private static void Main(string[] args) { // STEP 1 - Run Chrome var chromeProcessFactory = new ChromeProcessFactory(); @@ -27,7 +18,7 @@ namespace MasterDevs.ChromeDevTools.Sample var chromeSession = chromeSessionFactory.Create(endpointUrl); // STEP 3 - Send a command - // + // // Here we are sending a command to tell chrome to navigate to // the specified URL var navigateResponse = chromeSession.SendAsync(new NavigateCommand @@ -56,8 +47,6 @@ namespace MasterDevs.ChromeDevTools.Sample Console.ReadLine(); } - } - } -} +} \ No newline at end of file -- GitLab