Skip to content

Commit

Permalink
Removing support to create GraphQLFile from InputStream.
Browse files Browse the repository at this point in the history
  • Loading branch information
josueruiz7 committed Mar 17, 2020
1 parent 9b8ff7f commit 129562b
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 43 deletions.
55 changes: 13 additions & 42 deletions Sources/Apollo/GraphQLFile.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public struct GraphQLFile {
public let fieldName: String
public let originalName: String
public let mimeType: String
public let inputStream: InputStream
public let data: Data
public let contentLength: UInt64

/// A convenience constant for declaring your mimetype is octet-stream.
Expand All @@ -22,11 +22,11 @@ public struct GraphQLFile {
originalName: String,
mimeType: String = GraphQLFile.octetStreamMimeType,
data: Data) {
self.init(fieldName: fieldName,
originalName: originalName,
mimeType: mimeType,
inputStream: InputStream(data: data),
contentLength: UInt64(data.count))
self.fieldName = fieldName
self.originalName = originalName
self.mimeType = mimeType
self.data = data
self.contentLength = UInt64(data.count)
}

/// Failable convenience initializer for files in the filesystem
Expand All @@ -41,48 +41,19 @@ public struct GraphQLFile {
originalName: String,
mimeType: String = GraphQLFile.octetStreamMimeType,
fileURL: URL) {
guard let inputStream = InputStream(url: fileURL) else {
return nil
}

guard let contentLength = GraphQLFile.getFileSize(fileURL: fileURL) else {
return nil
guard let fileData = try? Data(contentsOf: fileURL) else {
return nil
}

self.init(fieldName: fieldName,
originalName: originalName,
mimeType: mimeType,
inputStream: inputStream,
contentLength: contentLength)
data: fileData)
}

/// Designated Initializer
/// Retrieves the InputStream
///
/// - Parameters:
/// - fieldName: The name of the field this file is being sent for
/// - originalName: The original name of the file
/// - mimeType: The mime type of the file to send to the server. Defaults to `GraphQLFile.octetStreamMimeType`.
/// - inputStream: An input stream to use to acccess data
/// - contentLength: The length of the data being sent
public init(fieldName: String,
originalName: String,
mimeType: String = GraphQLFile.octetStreamMimeType,
inputStream: InputStream,
contentLength: UInt64) {
self.fieldName = fieldName
self.originalName = originalName
self.mimeType = mimeType

self.inputStream = inputStream
self.contentLength = contentLength
}

private static func getFileSize(fileURL: URL) -> UInt64? {
guard let fileSizeAttribute = try? FileManager.default.attributesOfItem(atPath: fileURL.path)[.size],
let fileSize = fileSizeAttribute as? NSNumber else {
return nil
}

return fileSize.uint64Value
public func generateInputStream() -> InputStream {
return InputStream(data: data)
}
}
2 changes: 1 addition & 1 deletion Sources/Apollo/RequestCreator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ extension RequestCreator {
formData.appendPart(data: mapData, name: "map")

for (index, file) in files.enumerated() {
formData.appendPart(inputStream: file.inputStream,
formData.appendPart(inputStream: file.generateInputStream(),
contentLength: file.contentLength,
name: "\(index)",
contentType: file.mimeType,
Expand Down

0 comments on commit 129562b

Please sign in to comment.