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
This commit is contained in:
Adam Fowler 2020-08-03 11:53:00 +01:00 committed by GitHub
parent 15ac1d4a76
commit d5c1df536a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 3 additions and 76 deletions

View File

@ -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"])
]
)

View File

@ -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
}
}
}
```

View File

@ -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)
}
}

View File

@ -1,5 +1,4 @@
import XCTest
import AsyncHTTPClient
import NIO
@testable import AWSSigner