Skip to content

Commit e750531

Browse files
committed
Added support for the batch request.
1 parent 939b2c2 commit e750531

5 files changed

Lines changed: 292 additions & 14 deletions

File tree

IPAPI Tests/Fixtures/batch.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
[{
2+
"country": "United States",
3+
"countryCode": "US",
4+
"lat": 37.7898,
5+
"lon": -122.3942,
6+
"org": "Wikimedia Foundation",
7+
"query": "208.80.152.201"
8+
}, {
9+
"as": "AS43821 WIKIMEDIA-EU",
10+
"city": "Amsterdam",
11+
"country": "Holanda",
12+
"countryCode": "NL",
13+
"isp": "Wikimedia-eu",
14+
"lat": 52.3702,
15+
"lon": 4.89517,
16+
"org": "Wikimedia-eu",
17+
"query": "91.198.174.192",
18+
"region": "NH",
19+
"regionName": "Holanda Septentrional",
20+
"status": "success",
21+
"timezone": "Europe/Amsterdam",
22+
"zip": ""
23+
}]

IPAPI Tests/IPAPI_Tests.swift

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,55 @@ class IPAPI_Tests: XCTestCase
174174
}
175175
}
176176

177+
func testBatch()
178+
{
179+
self.stub(urlString: "/batch", jsonFileName: "batch")
180+
181+
var result: [Service.Result]?
182+
var error: Error?
183+
let responseArrived = self.expectation(description: "Response of async request has arrived")
184+
185+
Service.default.batch([Service.Request(query: "208.80.152.201",
186+
fields: [.countryName, .countryCode, .latitude, .longitude, .organization, .ip]),
187+
Service.Request(query: "91.198.174.192", language: "es")]) { r, e in
188+
result = r
189+
error = e
190+
responseArrived.fulfill()
191+
}
192+
193+
self.waitForExpectations(timeout: 15) { inError in
194+
XCTAssertNotNil(result, "Result should not be nil.")
195+
XCTAssertNil(error, "Error should be nil.")
196+
197+
XCTAssertTrue(result?.count == 2)
198+
199+
let firstResult = result?[0]
200+
let secondResult = result?[1]
201+
202+
XCTAssertEqual(firstResult?.countryName, "United States")
203+
XCTAssertEqual(firstResult?.countryCode, "US")
204+
XCTAssertEqual(firstResult?.latitude, 37.7898)
205+
XCTAssertEqual(firstResult?.longitude, -122.3942)
206+
XCTAssertEqual(firstResult?.organization, "Wikimedia Foundation")
207+
XCTAssertEqual(firstResult?.ip, "208.80.152.201")
208+
209+
XCTAssertEqual(secondResult?.as, "AS43821 WIKIMEDIA-EU")
210+
XCTAssertEqual(secondResult?.city, "Amsterdam")
211+
XCTAssertEqual(secondResult?.countryName, "Holanda")
212+
XCTAssertEqual(secondResult?.countryCode, "NL")
213+
XCTAssertEqual(secondResult?.isp, "Wikimedia-eu")
214+
XCTAssertEqual(secondResult?.latitude, 52.3702)
215+
XCTAssertEqual(secondResult?.longitude, 4.89517)
216+
XCTAssertEqual(secondResult?.organization, "Wikimedia-eu")
217+
XCTAssertEqual(secondResult?.ip, "91.198.174.192")
218+
XCTAssertEqual(secondResult?.regionCode, "NH")
219+
XCTAssertEqual(secondResult?.regionName, "Holanda Septentrional")
220+
XCTAssertEqual(secondResult?.status, .success)
221+
XCTAssertEqual(secondResult?.timezone, "Europe/Amsterdam")
222+
XCTAssertEqual(secondResult?.zipCode, "")
223+
}
224+
}
225+
177226
func testFailed()
178227
{
179228
self.stub(urlString: "/json/failed.lookup", jsonFileName: "failed")

IPAPI.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'IPAPI'
3-
s.version = '1.0.0'
3+
s.version = '1.1.0'
44
s.license = 'MIT'
55
s.summary = 'http://ip-api.com Geolocation API client written in Swift.'
66
s.homepage = 'https://github.com/arturgrigor/IPAPI'

IPAPI.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
357A43CF163492F2A5DCDDBA /* Pods_Tests_IPAPI_macOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FC83AA2DC3CFA0E06F18F88D /* Pods_Tests_IPAPI_macOS_Tests.framework */; };
1111
EE0E49FA36C3131A4F9A23D2 /* Pods_Tests_IPAPI_iOS_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D91682B83B8A954E00AE72A5 /* Pods_Tests_IPAPI_iOS_Tests.framework */; };
12+
FE38C1581E0DFA0700D2DF39 /* batch.json in Resources */ = {isa = PBXBuildFile; fileRef = FE38C1571E0DFA0700D2DF39 /* batch.json */; };
1213
FE576B271E0C99E5009D4C46 /* IPAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEE454011E0BE8DB00D8E707 /* IPAPI.framework */; };
1314
FE576B311E0C99FC009D4C46 /* IPAPI_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE576B2F1E0C99FC009D4C46 /* IPAPI_Tests.swift */; };
1415
FE576B341E0C9EE1009D4C46 /* XCTest+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE576B321E0C9EDF009D4C46 /* XCTest+Helpers.swift */; };
@@ -75,6 +76,7 @@
7576
E93E0E0D146D1485FFD54871 /* Pods-Tests-IPAPI iOS Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-IPAPI iOS Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-IPAPI iOS Tests/Pods-Tests-IPAPI iOS Tests.release.xcconfig"; sourceTree = "<group>"; };
7677
FA583E1735BAE3EC8AB8C476 /* Pods-Tests-IPAPI macOS Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests-IPAPI macOS Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests-IPAPI macOS Tests/Pods-Tests-IPAPI macOS Tests.debug.xcconfig"; sourceTree = "<group>"; };
7778
FC83AA2DC3CFA0E06F18F88D /* Pods_Tests_IPAPI_macOS_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Tests_IPAPI_macOS_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
79+
FE38C1571E0DFA0700D2DF39 /* batch.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = batch.json; sourceTree = "<group>"; };
7880
FE576B221E0C99E5009D4C46 /* IPAPI Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "IPAPI Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
7981
FE576B2E1E0C99FC009D4C46 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8082
FE576B2F1E0C99FC009D4C46 /* IPAPI_Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IPAPI_Tests.swift; sourceTree = "<group>"; };
@@ -194,6 +196,7 @@
194196
FE576B391E0CA863009D4C46 /* apple.json */,
195197
FE576B3B1E0CA926009D4C46 /* appleWithAllFields.json */,
196198
FE576B3D1E0CABBC009D4C46 /* appleWithAllFieldsInSpanish.json */,
199+
FE38C1571E0DFA0700D2DF39 /* batch.json */,
197200
FE576B361E0CA174009D4C46 /* currentIp.json */,
198201
FE576B3F1E0CAC4A009D4C46 /* failed.json */,
199202
);
@@ -514,6 +517,7 @@
514517
isa = PBXResourcesBuildPhase;
515518
buildActionMask = 2147483647;
516519
files = (
520+
FE38C1581E0DFA0700D2DF39 /* batch.json in Resources */,
517521
);
518522
runOnlyForDeploymentPostprocessing = 0;
519523
};

0 commit comments

Comments
 (0)