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(
|
||||
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"])
|
||||
]
|
||||
)
|
||||
|
||||
|
|
28
README.md
28
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
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -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 AsyncHTTPClient
|
||||
import NIO
|
||||
@testable import AWSSigner
|
||||
|
||||
|
|
Loading…
Reference in New Issue