public RpcOverHttpDaynamicProxy(RpcDynamicProxyFactory factory, Type interfaceType, string token) { this.token = token; this.factory = factory; this.version = typeof(RpcResponse).Assembly.GetName().Version; this.interfaceType = interfaceType; }
/// <summary> /// HTTP ONLY /// </summary> /// <param name="url"></param> public static RpcClient Initialize(Uri url, string cerFilePath = null, WebProxy proxy = null) { var iocContainer = new TinyIoC.TinyIoCContainer(); iocContainer.Register <IWsDataSerializer, ProtoBufRpcDataSerializer>(new ProtoBufRpcDataSerializer(), "default"); iocContainer.Register <IRpcDataSerializer, HttpMultipartSerializer>(new HttpMultipartSerializer(), "default"); iocContainer.Register <IRpcHeadSerializer, JsonRpcHeadSerializer>(new JsonRpcHeadSerializer(), "default"); var _proxyFactory = new RpcDynamicProxyFactory(url, proxy, iocContainer); var websocketServer = ""; var client = new RpcClient(_proxyFactory, proxy, iocContainer); if (!string.IsNullOrEmpty(cerFilePath)) { if (!System.IO.File.Exists(cerFilePath)) { throw new Exception("the cer file you provided is not exists. " + Path.GetFileName(cerFilePath)); } client.AddCertForHttps(cerFilePath); } if (url.Scheme == ("https")) { websocketServer = url.AbsoluteUri.Replace("https://", "wss://"); if (!Certs.Any()) { throw new Exception("you should provide a cert when using https."); } } else { websocketServer = url.AbsoluteUri.Replace("http://", "ws://"); } var cb = new RemoteCertificateValidationCallback(client.RemoteCertificateValidationCallback); _proxyFactory.ServerCertificateValidationCallback = cb; _proxyFactory.websocketServer = websocketServer; return(client); }
internal RpcClient(RpcDynamicProxyFactory _proxyFactory, WebProxy proxy, TinyIoC.TinyIoCContainer iocContainer) : base(iocContainer) { this._proxyFactory = _proxyFactory; this._webProxy = proxy; this.iocContainer = iocContainer; }