Skip to content

Commit f4c120e

Browse files
authored
Merge pull request #64 from mattboran/feature/swiftpm
Add Swift Package Manager support
2 parents c26024c + 0ea54c8 commit f4c120e

18 files changed

+226
-7
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,5 @@ DerivedData
3434

3535
Pods
3636
Carthage
37+
.build
38+
.swiftpm

Package.resolved

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
{
2+
"object": {
3+
"pins": [
4+
{
5+
"package": "CwlCatchException",
6+
"repositoryURL": "https://github.com/mattgallagher/CwlCatchException.git",
7+
"state": {
8+
"branch": null,
9+
"revision": "682841464136f8c66e04afe5dbd01ab51a3a56f2",
10+
"version": "2.1.0"
11+
}
12+
},
13+
{
14+
"package": "CwlPreconditionTesting",
15+
"repositoryURL": "https://github.com/mattgallagher/CwlPreconditionTesting.git",
16+
"state": {
17+
"branch": null,
18+
"revision": "02b7a39a99c4da27abe03cab2053a9034379639f",
19+
"version": "2.0.0"
20+
}
21+
},
22+
{
23+
"package": "Nimble",
24+
"repositoryURL": "https://github.com/Quick/Nimble.git",
25+
"state": {
26+
"branch": null,
27+
"revision": "e491a6731307bb23783bf664d003be9b2fa59ab5",
28+
"version": "9.0.0"
29+
}
30+
},
31+
{
32+
"package": "OHHTTPStubs",
33+
"repositoryURL": "https://github.com/AliSoftware/OHHTTPStubs.git",
34+
"state": {
35+
"branch": null,
36+
"revision": "12f19662426d0434d6c330c6974d53e2eb10ecd9",
37+
"version": "9.1.0"
38+
}
39+
},
40+
{
41+
"package": "Quick",
42+
"repositoryURL": "https://github.com/Quick/Quick.git",
43+
"state": {
44+
"branch": null,
45+
"revision": "0038bcbab4292f3b028632556507c124e5ba69f3",
46+
"version": "3.0.0"
47+
}
48+
}
49+
]
50+
},
51+
"version": 1
52+
}

Package.swift

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
// swift-tools-version:5.3
2+
import PackageDescription
3+
4+
let package = Package(
5+
name: "ResponseDetective",
6+
platforms: [
7+
.iOS(.v8),
8+
.macOS(.v10_10),
9+
.tvOS(.v9)
10+
],
11+
products: [
12+
.library(
13+
name: "ResponseDetective",
14+
targets: [
15+
"ResponseDetective",
16+
"ResponseDetectiveObjC"
17+
]
18+
)
19+
],
20+
dependencies: [
21+
.package(
22+
url: "https://github.com/Quick/Quick.git",
23+
.exact("3.0.0")
24+
),
25+
.package(
26+
url: "https://github.com/Quick/Nimble.git",
27+
.exact("9.0.0")
28+
),
29+
.package(
30+
url: "https://github.com/AliSoftware/OHHTTPStubs.git",
31+
.exact("9.1.0")
32+
)
33+
],
34+
targets: [
35+
.target(
36+
name: "ResponseDetective",
37+
dependencies: ["ResponseDetectiveObjC"],
38+
path: "ResponseDetective",
39+
exclude: [
40+
"Configuration",
41+
"Resources",
42+
"Tests",
43+
"include",
44+
"Sources/RDTHTMLBodyDeserializer.h",
45+
"Sources/RDTXMLBodyDeserializer.h",
46+
"Sources/ResponseDetective.h",
47+
"Sources/RDTHTMLBodyDeserializer.m",
48+
"Sources/RDTBodyDeserializer.h",
49+
"Sources/RDTXMLBodyDeserializer.m"
50+
],
51+
sources: [
52+
"Sources/ResponseRepresentation.swift",
53+
"Sources/ErrorRepresentation.swift",
54+
"Sources/ResponseDetective.swift",
55+
"Sources/BufferOutputFacility.swift",
56+
"Sources/ConsoleOutputFacility.swift",
57+
"Sources/URLEncodedBodyDeserializer.swift",
58+
"Sources/PlaintextBodyDeserializer.swift",
59+
"Sources/ImageBodyDeserializer.swift",
60+
"Sources/JSONBodyDeserializer.swift",
61+
"Sources/Dictionary.swift",
62+
"Sources/URLProtocol.swift",
63+
"Sources/OutputFacility.swift",
64+
"Sources/RequestRepresentation.swift"
65+
]
66+
),
67+
.target(
68+
name: "ResponseDetectiveObjC",
69+
dependencies: [],
70+
path: "ResponseDetective",
71+
exclude: [
72+
"Configuration",
73+
"Resources",
74+
"Tests",
75+
"Sources/ResponseRepresentation.swift",
76+
"Sources/ErrorRepresentation.swift",
77+
"Sources/ResponseDetective.swift",
78+
"Sources/BufferOutputFacility.swift",
79+
"Sources/ConsoleOutputFacility.swift",
80+
"Sources/URLEncodedBodyDeserializer.swift",
81+
"Sources/PlaintextBodyDeserializer.swift",
82+
"Sources/ImageBodyDeserializer.swift",
83+
"Sources/JSONBodyDeserializer.swift",
84+
"Sources/Dictionary.swift",
85+
"Sources/URLProtocol.swift",
86+
"Sources/OutputFacility.swift",
87+
"Sources/RequestRepresentation.swift"
88+
],
89+
sources: [
90+
"Sources/RDTHTMLBodyDeserializer.h",
91+
"Sources/RDTXMLBodyDeserializer.h",
92+
"Sources/ResponseDetective.h",
93+
"Sources/RDTHTMLBodyDeserializer.m",
94+
"Sources/RDTBodyDeserializer.h",
95+
"Sources/RDTXMLBodyDeserializer.m"
96+
],
97+
cSettings: [
98+
.headerSearchPath("ResponseDetective/Sources"),
99+
.headerSearchPath("ResponseDetective")
100+
]
101+
),
102+
.testTarget(
103+
name: "ResponseDetectiveTests",
104+
dependencies: [
105+
"ResponseDetective",
106+
"ResponseDetectiveObjC",
107+
"Quick",
108+
"Nimble",
109+
"OHHTTPStubs"
110+
],
111+
path: "ResponseDetective",
112+
exclude: [
113+
"Configuration",
114+
"Resources",
115+
"Sources",
116+
"include",
117+
],
118+
sources: ["Tests"]
119+
),
120+
]
121+
)

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
![](https://img.shields.io/github/release/netguru/ResponseDetective.svg)
55
![](https://img.shields.io/badge/carthage-compatible-green.svg)
66
![](https://img.shields.io/badge/cocoapods-compatible-green.svg)
7+
![](https://img.shields.io/badge/spm-compatible-green.svg)
78
![](https://img.shields.io/badge/license-MIT-blue.svg)
89

910
**ResponseDetective** is a non-intrusive framework for intercepting any outgoing requests and incoming responses between your app and your server for debugging purposes.
@@ -129,6 +130,10 @@ use_frameworks!
129130
pod 'ResponseDetective', '~> {version}'
130131
```
131132

133+
### Swift Package Manager
134+
135+
If you're using [Swift Package Manager](https://github.com/apple/swift-package-manager), add this repository to the Swift Packages in your project settings.
136+
132137
### Local
133138

134139
To install the test dependencies or to build ResponseDetective itself, do not run `carthage` directly. It can't handle the Apple Silicon architectures introduced in Xcode 12. Instead, run it through the `carthage.sh` script:
@@ -137,6 +142,12 @@ To install the test dependencies or to build ResponseDetective itself, do not ru
137142
$ ./carthage.sh bootstrap
138143
```
139144

145+
Alternatively, you can run the tests locally using Swift Package Manager with the following command:
146+
147+
```bash
148+
$ swift test
149+
```
150+
140151
## About
141152

142153
This project was made with ♡ by [Netguru](https://netguru.com).

ResponseDetective/Sources/ImageBodyDeserializer.swift

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
#elseif os(OSX)
1111
import AppKit
1212
#endif
13+
#if SWIFT_PACKAGE
14+
import ResponseDetectiveObjC
15+
#endif
1316

1417
/// Deserializes image bodies.
1518
@objc(RDTImageBodyDeserializer) public final class ImageBodyDeserializer: NSObject, BodyDeserializer {

ResponseDetective/Sources/JSONBodyDeserializer.swift

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
//
77

88
import Foundation
9+
#if SWIFT_PACKAGE
10+
import ResponseDetectiveObjC
11+
#endif
912

1013
/// Deserializes JSON bodies.
1114
@objc(RDTJSONBodyDeserializer) public final class JSONBodyDeserializer: NSObject, BodyDeserializer {

ResponseDetective/Sources/PlaintextBodyDeserializer.swift

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
//
77

88
import Foundation
9+
#if SWIFT_PACKAGE
10+
import ResponseDetectiveObjC
11+
#endif
912

1013
/// Deserializes plaintext bodies.
1114
@objc(RDTPlaintextBodyDeserializer) public final class PlaintextBodyDeserializer: NSObject, BodyDeserializer {

ResponseDetective/Sources/ResponseDetective.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ extern const unsigned char ResponseDetectiveVersionString[];
1313

1414
@import Foundation;
1515

16-
#import <ResponseDetective/RDTBodyDeserializer.h>
17-
#import <ResponseDetective/RDTXMLBodyDeserializer.h>
18-
#import <ResponseDetective/RDTHTMLBodyDeserializer.h>
16+
#import "RDTBodyDeserializer.h"
17+
#import "RDTXMLBodyDeserializer.h"
18+
#import "RDTHTMLBodyDeserializer.h"

ResponseDetective/Sources/ResponseDetective.swift

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
//
77

88
import Foundation
9+
#if SWIFT_PACKAGE
10+
import ResponseDetectiveObjC
11+
#endif
912

1013
/// ResponseDetective configuration cluster class that defines the behavior
1114
/// of request interception and logging.

ResponseDetective/Sources/URLEncodedBodyDeserializer.swift

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
//
77

88
import Foundation
9+
#if SWIFT_PACKAGE
10+
import ResponseDetectiveObjC
11+
#endif
912

1013
/// Deserializes URL-encoded bodies.
1114
@objc(RDTURLEncodedBodyDeserializer) public final class URLEncodedBodyDeserializer: NSObject, BodyDeserializer {

ResponseDetective/Tests/Additions/TestBodyDeserializer.swift

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
//
77

88
import ResponseDetective
9+
#if SWIFT_PACKAGE
10+
import ResponseDetectiveObjC
11+
#endif
912

1013
/// A test body deserializer.
1114
internal final class TestBodyDeserializer: NSObject, BodyDeserializer {

ResponseDetective/Tests/Specs/HTMLBodyDeserializerSpec.swift

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import Foundation
99
import Nimble
1010
import ResponseDetective
11+
#if SWIFT_PACKAGE
12+
import ResponseDetectiveObjC
13+
#endif
1114
import Quick
1215

1316
internal final class HTMLBodyDeserializerSpec: QuickSpec {

ResponseDetective/Tests/Specs/ResponseDetectiveSpec.swift

+9-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ internal final class ResponseDetectiveSpec: QuickSpec {
1818
describe("ResponseDetective") {
1919

2020
beforeSuite {
21-
stub(condition: isHost("httpbin.org")) { _ in
21+
HTTPStubs.stubRequests { request in
22+
return request.url?.host == "httpbin.org"
23+
} withStubResponse: { _ in
2224
return HTTPStubsResponse(data: Data(), statusCode: 200, headers: nil)
2325
}
2426
}
@@ -150,10 +152,11 @@ internal final class ResponseDetectiveSpec: QuickSpec {
150152

151153
describe("request interception") {
152154

153-
let buffer = BufferOutputFacility()
155+
var buffer: BufferOutputFacility!
154156
let configuration = URLSessionConfiguration.default
155157

156158
beforeEach {
159+
buffer = BufferOutputFacility()
157160
ResponseDetective.outputFacility = buffer
158161
ResponseDetective.registerBodyDeserializer(TestBodyDeserializer(), forContentType: "*/*")
159162
ResponseDetective.enable(inConfiguration: configuration)
@@ -192,10 +195,11 @@ internal final class ResponseDetectiveSpec: QuickSpec {
192195

193196
describe("response interception") {
194197

195-
let buffer = BufferOutputFacility()
198+
var buffer: BufferOutputFacility!
196199
let configuration = URLSessionConfiguration.default
197200

198201
beforeEach {
202+
buffer = BufferOutputFacility()
199203
ResponseDetective.outputFacility = buffer
200204
ResponseDetective.registerBodyDeserializer(TestBodyDeserializer(), forContentType: "*/*")
201205
ResponseDetective.enable(inConfiguration: configuration)
@@ -228,10 +232,11 @@ internal final class ResponseDetectiveSpec: QuickSpec {
228232

229233
describe("error interception") {
230234

231-
let buffer = BufferOutputFacility()
235+
var buffer: BufferOutputFacility!
232236
let configuration = URLSessionConfiguration.default
233237

234238
beforeEach {
239+
buffer = BufferOutputFacility()
235240
ResponseDetective.outputFacility = buffer
236241
ResponseDetective.registerBodyDeserializer(TestBodyDeserializer(), forContentType: "*/*")
237242
ResponseDetective.enable(inConfiguration: configuration)

ResponseDetective/Tests/Specs/XMLBodyDeserializerSpec.swift

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
import Foundation
99
import Nimble
1010
import ResponseDetective
11+
#if SWIFT_PACKAGE
12+
import ResponseDetectiveObjC
13+
#endif
1114
import Quick
1215

1316
internal final class XMLBodyDeserializerSpec: QuickSpec {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../Sources/RDTBodyDeserializer.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../Sources/RDTHTMLBodyDeserializer.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../Sources/RDTXMLBodyDeserializer.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../Sources/ResponseDetective.h

0 commit comments

Comments
 (0)