Advertisement
Guest User

Untitled

a guest
Nov 19th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. class FTPImageUpload {
  2. private let ftpBaseUrl: String
  3. private let directoryPath: String
  4. private let username: String
  5. private let password: String
  6.  
  7. private func setFtpUserName(for ftpWriteStream: CFWriteStream, userName: String) {
  8. CFWriteStreamSetProperty(ftpWriteStream, CFStreamPropertyKey(rawValue: kCFStreamPropertyFTPUserName), userName as CFString)
  9. }
  10.  
  11. private func setFtpPassword(for ftpWriteStream: CFWriteStream, password: String) {
  12. CFWriteStreamSetProperty(ftpWriteStream, CFStreamPropertyKey(rawValue: kCFStreamPropertyFTPPassword), password as CFString)
  13. }
  14.  
  15. private func ftpWriteStream(forFileName fileName: String) -> CFWriteStream? {
  16. let fullyQualifiedPath = "ftp://\(ftpBaseUrl)/\(directoryPath)/\(fileName)" as CFString
  17. guard let ftpUrl = CFURLCreateWithString(kCFAllocatorDefault, fullyQualifiedPath, nil) else { return nil }
  18. let ftpStream = CFWriteStreamCreateWithFTPURL(kCFAllocatorDefault, ftpUrl)
  19. let ftpWriteStream = ftpStream.takeRetainedValue()
  20. setFtpUserName(for: ftpWriteStream, userName: ftpUserName)
  21. setFtpPassword(for: ftpWriteStream, password: ftpPassword)
  22. return ftpWriteStream
  23. }
  24.  
  25. init(baseUrl: String, userName: String, password: String, directoryPath: String) {
  26. self.ftpBaseUrl = baseUrl
  27. self.username = ftpUserName
  28. self.password = password
  29. self.directoryPath = directoryPath
  30. }
  31.  
  32.  
  33. func send(image: NSImage, with fileName: String) -> Bool {
  34.  
  35. guard let ftpWriteStream = ftpWriteStream(forFileName: fileName) else { return false }
  36.  
  37. if CFWriteStreamOpen(ftpWriteStream) == false {
  38. print("Could not open stream")
  39. return false
  40. }
  41.  
  42. let bufferSize = 1024 * 10
  43. let swpBufferSize = 24
  44. var buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: bufferSize)
  45. var swpBuffer = UnsafeMutablePointer<UInt8>.allocate(capacity: swpBufferSize)
  46. var bytesRemaining = swpBufferSize
  47.  
  48. buffer.advanced(by: <#T##Int#>)
  49. repeat {
  50. let bytesWritten = CFWriteStreamWrite(ftpWriteStream, buffer, bufferSize)
  51. if bytesWritten > 0 {
  52. let biggie = bytesWritten.littleEndian
  53. print("Big endian bytes written value: \(biggie)")
  54. bytesRemaining -= biggie
  55. }
  56. if bytesWritten < 0 {
  57. print("ERROR ERROR ERROR")
  58. break
  59. }
  60.  
  61. if bytesWritten == 0 {
  62. print("Completed!!")
  63. break
  64. }
  65.  
  66.  
  67. } while CFWriteStreamCanAcceptBytes(ftpWriteStream)
  68.  
  69. CFWriteStreamClose(ftpWriteStream)
  70. return true
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement