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:
parent
15ac1d4a76
commit
d5c1df536a
|
@ -6,19 +6,16 @@ import PackageDescription
|
||||||
let package = Package(
|
let package = Package(
|
||||||
name: "aws-signer-v4",
|
name: "aws-signer-v4",
|
||||||
products: [
|
products: [
|
||||||
.library(name: "AWSSigner", targets: ["AWSSigner"]),
|
.library(name: "AWSSigner", targets: ["AWSSigner"])
|
||||||
.library(name: "HTTPClientAWSSigner", targets: ["HTTPClientAWSSigner"]),
|
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
.package(url: "https://github.com/apple/swift-nio", .upToNextMajor(from: "2.0.0")),
|
.package(url: "https://github.com/apple/swift-nio", .upToNextMajor(from: "2.13.1"))
|
||||||
.package(url: "https://github.com/swift-server/async-http-client", .upToNextMajor(from: "1.0.0"))
|
|
||||||
],
|
],
|
||||||
targets: [
|
targets: [
|
||||||
.target(name: "AWSSigner", dependencies: ["AWSCrypto", "NIO", "NIOHTTP1"]),
|
.target(name: "AWSSigner", dependencies: ["AWSCrypto", "NIO", "NIOHTTP1"]),
|
||||||
.target(name: "AWSCrypto", dependencies: []),
|
.target(name: "AWSCrypto", dependencies: []),
|
||||||
.target(name: "HTTPClientAWSSigner", dependencies: ["AWSSigner", "AsyncHTTPClient"]),
|
|
||||||
|
|
||||||
.testTarget(name: "AWSSignerTests", dependencies: ["AWSSigner", "HTTPClientAWSSigner"])
|
.testTarget(name: "AWSSignerTests", dependencies: ["AWSSigner"])
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
28
README.md
28
README.md
|
@ -30,31 +30,3 @@ let signedHeaders = signer.signHeaders(
|
||||||
body: .string(body))
|
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import XCTest
|
import XCTest
|
||||||
import AsyncHTTPClient
|
|
||||||
import NIO
|
import NIO
|
||||||
@testable import AWSSigner
|
@testable import AWSSigner
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue