From d5c1df536a2b326fb2bc57adfbd2cbb2d528e0ef Mon Sep 17 00:00:00 2001 From: Adam Fowler Date: Mon, 3 Aug 2020 11:53:00 +0100 Subject: [PATCH] Remove HTTPClientAWSSigner target (#4) * Remove HTTPClientAWSSigner target Was such a small bit of code but brought in two packages that may be unnecessary for many people --- Package.swift | 9 ++--- README.md | 28 ---------------- Sources/HTTPClientAWSSigner/request.swift | 41 ----------------------- Tests/AWSSignerTests/AWSSignerTests.swift | 1 - 4 files changed, 3 insertions(+), 76 deletions(-) delete mode 100644 Sources/HTTPClientAWSSigner/request.swift diff --git a/Package.swift b/Package.swift index 143197a..0930aa9 100644 --- a/Package.swift +++ b/Package.swift @@ -6,19 +6,16 @@ import PackageDescription let package = Package( name: "aws-signer-v4", products: [ - .library(name: "AWSSigner", targets: ["AWSSigner"]), - .library(name: "HTTPClientAWSSigner", targets: ["HTTPClientAWSSigner"]), + .library(name: "AWSSigner", targets: ["AWSSigner"]) ], dependencies: [ - .package(url: "https://github.com/apple/swift-nio", .upToNextMajor(from: "2.0.0")), - .package(url: "https://github.com/swift-server/async-http-client", .upToNextMajor(from: "1.0.0")) + .package(url: "https://github.com/apple/swift-nio", .upToNextMajor(from: "2.13.1")) ], targets: [ .target(name: "AWSSigner", dependencies: ["AWSCrypto", "NIO", "NIOHTTP1"]), .target(name: "AWSCrypto", dependencies: []), - .target(name: "HTTPClientAWSSigner", dependencies: ["AWSSigner", "AsyncHTTPClient"]), - .testTarget(name: "AWSSignerTests", dependencies: ["AWSSigner", "HTTPClientAWSSigner"]) + .testTarget(name: "AWSSignerTests", dependencies: ["AWSSigner"]) ] ) diff --git a/README.md b/README.md index 0379594..f1b285a 100644 --- a/README.md +++ b/README.md @@ -30,31 +30,3 @@ let signedHeaders = signer.signHeaders( body: .string(body)) ``` -## AsyncHTTPClient -The library includes extensions to the HTTPClient of [AsyncHttpClient](https://github.com/swift-server/async-http-client) from the [Swift Server Working Group](https://swift.org/server/). - -Both `HTTPClient.awsURLSignedRequest()` and `HTTPClient.awsHeaderSignedRequest()` will create a signed Request that can be sent to AWS via the HTTPClient from AsyncHttpClient. The following creates a signed S3 Request to upload a file to an S3 bucket and processes it. -``` -let credentials = StaticCredential(accessKeyId: "MYACCESSKEY", secretAccessKey: "MYSECRETACCESSKEY") -let signer = AWSSigner(credentials: credentials, name: "s3", region: "us-east-1") -let body = "FileContents" -let request = try HTTPClient.awsURLSignedRequest( - url: URL(string:"mybucket.s3.us-east-1.amazonaws.com/mynewfile")!, - method: .PUT, - body: .string(body), - signer: signer) -let client = HTTPClient(eventLoopGroupProvider: .createNew) -client.execute(request: request).whenComplete { result in - switch result { - case .failure(let error): - // process error - break - case .success(let response): - if response.status == .ok { - // handle response - } else { - // handle remote error - } - } -} -``` diff --git a/Sources/HTTPClientAWSSigner/request.swift b/Sources/HTTPClientAWSSigner/request.swift deleted file mode 100644 index 3ed173a..0000000 --- a/Sources/HTTPClientAWSSigner/request.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// request.swift -// AWSSigner -// -// Created by Adam Fowler on 2019/08/30. -// - -import AsyncHTTPClient -import AWSSigner -import Foundation -import NIO -import NIOHTTP1 - -public extension AWSSigner.BodyData { - /// Convert to HTTPClient Body struct - var body : HTTPClient.Body { - switch self { - case .string(let string): - return .string(string) - case .data(let data): - return .data(data) - case .byteBuffer(let byteBuffer): - return .byteBuffer(byteBuffer) - } - } -} - -public extension HTTPClient { - /// return signed HTTPClient request with signature in the headers - static func awsHeaderSignedRequest(url: URL, method: HTTPMethod = .GET, headers: HTTPHeaders = HTTPHeaders(), body: AWSSigner.BodyData? = nil, date: Date = Date(), signer: AWSSigner) throws -> HTTPClient.Request { - let signedHeaders = signer.signHeaders(url: url, method: method, headers: headers, body: body, date: date) - return try HTTPClient.Request(url: url, method: method, headers: signedHeaders, body: body?.body) - } - - /// return signed HTTPClient request with signature in the URL - static func awsURLSignedRequest(url: URL, method: HTTPMethod = .GET, body: AWSSigner.BodyData? = nil, date: Date = Date(), expires: Int = 86400, signer: AWSSigner) throws -> HTTPClient.Request { - let signedURL = signer.signURL(url: url, method: method, body: body, date: date, expires: expires) - return try HTTPClient.Request(url: signedURL, method: method, body: body?.body) - } -} - diff --git a/Tests/AWSSignerTests/AWSSignerTests.swift b/Tests/AWSSignerTests/AWSSignerTests.swift index 745dc0d..0c8a93b 100644 --- a/Tests/AWSSignerTests/AWSSignerTests.swift +++ b/Tests/AWSSignerTests/AWSSignerTests.swift @@ -1,5 +1,4 @@ import XCTest -import AsyncHTTPClient import NIO @testable import AWSSigner