SftpResponseFactory.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Text;
  3. using Renci.SshNet.Sftp.Responses;
  4. using System.Globalization;
  5. namespace Renci.SshNet.Sftp
  6. {
  7. internal sealed class SftpResponseFactory : ISftpResponseFactory
  8. {
  9. public SftpMessage Create(uint protocolVersion, byte messageType, Encoding encoding)
  10. {
  11. var sftpMessageType = (SftpMessageTypes) messageType;
  12. SftpMessage message;
  13. switch (sftpMessageType)
  14. {
  15. case SftpMessageTypes.Version:
  16. message = new SftpVersionResponse();
  17. break;
  18. case SftpMessageTypes.Status:
  19. message = new SftpStatusResponse(protocolVersion);
  20. break;
  21. case SftpMessageTypes.Data:
  22. message = new SftpDataResponse(protocolVersion);
  23. break;
  24. case SftpMessageTypes.Handle:
  25. message = new SftpHandleResponse(protocolVersion);
  26. break;
  27. case SftpMessageTypes.Name:
  28. message = new SftpNameResponse(protocolVersion, encoding);
  29. break;
  30. case SftpMessageTypes.Attrs:
  31. message = new SftpAttrsResponse(protocolVersion);
  32. break;
  33. case SftpMessageTypes.ExtendedReply:
  34. message = new SftpExtendedReplyResponse(protocolVersion);
  35. break;
  36. default:
  37. throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, "Message type '{0}' is not supported.", sftpMessageType));
  38. }
  39. return message;
  40. }
  41. }
  42. }