public override WebResponse GetResponse() { WebResponse response = null; if (this.client == null || !this.client.IsConnected) { this.client = SshRequestCreator.GetOrCreateClient(this); } switch (this.Method) { case IOConnection.WrmDeleteFile: response = SshWebResponse.GetDeleteResponse(this.client, this.RequestUri.AbsolutePath); break; case IOConnection.WrmMoveFile: var moveTo = this.Headers[IOConnection.WrhMoveFileTo]; var authority = this.RequestUri.GetLeftPart(UriPartial.Authority); if (moveTo?.StartsWith(authority) == true) { response = SshWebResponse.GetMoveResponse(this.client, this.RequestUri.AbsolutePath.TrimStart('/'), moveTo.Substring(authority.Length).TrimStart('/')); } break; case null: response = SshWebResponse.GetDownloadResponse(this.client, this.RequestUri.AbsolutePath); break; } return(response ?? new SshWebResponse()); }
public override Stream GetRequestStream() { if (this.client == null || !this.client.IsConnected) { this.client = SshRequestCreator.GetOrCreateClient(this); } return(this.client.OpenWrite(this.RequestUri.AbsolutePath.TrimStart('/'))); }
private static void RegisterPlugin() { if (propertiesRegistered) { return; } propertiesRegistered = true; var creator = new SshRequestCreator(); foreach (var protocol in protocols) { System.Net.WebRequest.RegisterPrefix(protocol, creator); } IocPropertyInfoPool.Add(new IocPropertyInfo(PropertyKeys.PrivateKey, typeof(string), "SSH private key path", protocols)); IocPropertyInfoPool.Add(new IocPropertyInfo(PropertyKeys.HostKey, typeof(string), "Fingerprint of expected SSH host key", protocols)); }