├── .github
└── workflows
│ ├── swiftlint.yml
│ └── test.yml
├── .gitignore
├── Configs
├── SwiftPublicIP.plist
└── SwiftPublicIPTests.plist
├── LICENSE
├── Package.swift
├── README.md
├── Sources
├── PublicIPAPI.swift
├── PublicIPAPIURLs.swift
└── SwiftPublicIP.swift
├── SwiftPublicIP-CLI
└── main.swift
├── SwiftPublicIP.podspec
├── SwiftPublicIP.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── xcshareddata
│ └── xcschemes
│ ├── SwiftPublicIP-iOS.xcscheme
│ ├── SwiftPublicIP-macOS.xcscheme
│ ├── SwiftPublicIP-tvOS.xcscheme
│ └── SwiftPublicIP-watchOS.xcscheme
├── Tests
├── LinuxMain.swift
└── SwiftPublicIPTests
│ └── SwiftPublicIPTests.swift
└── renovate.json
/.github/workflows/swiftlint.yml:
--------------------------------------------------------------------------------
1 | name: SwiftLint
2 |
3 | on:
4 | pull_request:
5 | paths:
6 | - '.github/workflows/swiftlint.yml'
7 | - '.swiftlint.yml'
8 | - '**/*.swift'
9 |
10 | jobs:
11 | SwiftLint:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - uses: actions/checkout@v4
15 | - name: GitHub Action for SwiftLint
16 | uses: norio-nomura/action-swiftlint@3.2.1
17 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: Test
2 |
3 | on:
4 | push:
5 | branches: [ master ]
6 | pull_request:
7 | paths:
8 | - '.github/workflows/test.yml'
9 | - '**/*.swift'
10 | - 'Tests/**'
11 |
12 | jobs:
13 | test:
14 | container:
15 | image: swift
16 | runs-on: ubuntu-latest
17 | steps:
18 | - uses: actions/checkout@v4
19 | - name: Test with Code Coverage
20 | run: swift test --enable-code-coverage --filter '^((?!ipv6).)*$'
21 | - name: Report Codecov
22 | run: |
23 | llvm-cov report .build/debug/SwiftPublicIPPackageTests.xctest -instr-profile=.build/debug/codecov/default.profdata -use-color
24 | - name: Export Codecov
25 | run: |
26 | mkdir -p coverage
27 | llvm-cov export -format="lcov" .build/debug/SwiftPublicIPPackageTests.xctest -instr-profile .build/debug/codecov/default.profdata > ./coverage/lcov.info
28 | - name: Convert Absolute Path to Relative Path
29 | run: sed -i "s~${PWD}/~~g" ./coverage/lcov.info
30 | - uses: actions/upload-artifact@v3
31 | with:
32 | name: lcov.info
33 | path: ./coverage/lcov.info
34 | retention-days: 1
35 | codecov:
36 | needs: test
37 | runs-on: ubuntu-latest
38 | steps:
39 | - uses: actions/download-artifact@v3
40 | with:
41 | name: lcov.info
42 | path: ./coverage/
43 | - run: ls -R
44 | - uses: HackingGate/lcov-reporter-action@a1c0d02b814fedd5aff86d9e7eac73834eb6e091
45 | with:
46 | lcov-base: ./coverage/lcov-base.info
47 | lcov-file: ./coverage/lcov.info
48 | - run: cat ./coverage/body.html
49 | - uses: actions/github-script@v6
50 | with:
51 | script: |
52 | fs = require('fs');
53 | fs.readFile('./coverage/body.html', 'utf8', function (error,data) {
54 | if (error) {
55 | console.log(error)
56 | }
57 | if (context.eventName === "pull_request") {
58 | github.issues.createComment({
59 | issue_number: context.issue.number,
60 | owner: context.repo.owner,
61 | repo: context.repo.repo,
62 | body: data
63 | })
64 | } else if (context.eventName === "push") {
65 | github.repos.createCommitComment({
66 | commit_sha: context.sha,
67 | owner: context.repo.owner,
68 | repo: context.repo.repo,
69 | body: data
70 | })
71 | }
72 | });
73 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xccheckout
23 | *.xcscmblueprint
24 |
25 | ## Obj-C/Swift specific
26 | *.hmap
27 | *.ipa
28 | *.dSYM.zip
29 | *.dSYM
30 |
31 | ## Playgrounds
32 | timeline.xctimeline
33 | playground.xcworkspace
34 |
35 | # Swift Package Manager
36 | #
37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
38 | # Packages/
39 | # Package.pins
40 | # Package.resolved
41 | .build/
42 |
43 | # CocoaPods
44 | #
45 | # We recommend against adding the Pods directory to your .gitignore. However
46 | # you should judge for yourself, the pros and cons are mentioned at:
47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
48 | #
49 | # Pods/
50 |
51 | # Carthage
52 | #
53 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
54 | # Carthage/Checkouts
55 |
56 | Carthage/Build
57 |
58 | # fastlane
59 | #
60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
61 | # screenshots whenever they are needed.
62 | # For more information about the recommended setup visit:
63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
64 |
65 | fastlane/report.xml
66 | fastlane/Preview.html
67 | fastlane/screenshots/**/*.png
68 | fastlane/test_output
69 |
--------------------------------------------------------------------------------
/Configs/SwiftPublicIP.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(CURRENT_PROJECT_VERSION)
23 | NSHumanReadableCopyright
24 | Copyright © 2019 HackingGate. All rights reserved.
25 | NSPrincipalClass
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Configs/SwiftPublicIPTests.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 HackingGate
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.0
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "SwiftPublicIP",
7 | products: [
8 | .library(
9 | name: "SwiftPublicIP",
10 | targets: ["SwiftPublicIP"])
11 | ],
12 | targets: [
13 | .target(
14 | name: "SwiftPublicIP",
15 | dependencies: [],
16 | path: "Sources"),
17 | .testTarget(
18 | name: "SwiftPublicIPTests",
19 | dependencies: ["SwiftPublicIP"])
20 | ]
21 | )
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Swift-Public-IP
2 | [](https://github.com/HackingGate/Swift-Public-IP/actions/workflows/swiftlint.yml)
3 | [](https://github.com/HackingGate/Swift-Public-IP/actions/workflows/test.yml)
4 |
5 | Swift library for checking your public IP address
6 |
7 | Supports macOS, iOS, tvOS, watchOS and Linux.
8 |
9 | Uses [icanhazip](https://icanhazip.com), [ipv6test](https://v4v6.ipv6-test.com/api/myip.php), [seeip](https://ip.seeip.org), [whatismyipaddress](https://bot.whatismyipaddress.com), [ident](https://ident.me/) and etc.
10 |
11 | ## Usage
12 |
13 | ```swift
14 | import SwiftPublicIP
15 |
16 | SwiftPublicIP.getPublicIP(url: PublicIPAPIURLs.IPv4.icanhazip.rawValue) { (string, error) in
17 | if let error = error {
18 | print(error.localizedDescription)
19 | } else if let string = string {
20 | print(string) // Your IP address
21 | }
22 | }
23 | ```
24 |
25 | ## Implementation
26 |
27 | ### Carthage
28 |
29 | Add it in the Cartfile.
30 |
31 | ```
32 | github "HackingGate/Swift-Public-IP" "0.0.2"
33 | ```
34 |
35 | Run `carthage update`.
36 |
37 | Add the SwiftPublicIP framework as an embedded binary to your .xcodeproj file.
38 |
39 | ### CocoaPods
40 |
41 | Add it in the Podfile
42 |
43 | ```
44 | pod 'SwiftPublicIP', '~> 0.0.2'
45 | ```
46 |
47 | Run `pod install`.
48 |
49 | If you only want try this pod without import it. Run `pod try SwiftPublicIP`.
50 |
51 | ### Swift Package Manager (SPM)
52 |
53 | You need Package.swift file.
54 |
55 | ```swift
56 | // swift-tools-version:5.0
57 |
58 | import PackageDescription
59 |
60 | let package = Package(
61 | name: "YourAwesomeApp",
62 | dependencies: [
63 | .package(url: "https://github.com/HackingGate/Swift-Public-IP", from: "0.0.2"),
64 | ],
65 | targets: [
66 | .target(
67 | name: "YourAwesomeApp",
68 | dependencies: ["SwiftPublicIP"],
69 | path: "Sources")
70 | ]
71 | )
72 | ```
73 |
74 | ### Git Submodule or Manual
75 |
76 | Add as a git submodule.
77 |
78 | ```
79 | git submodule add https://github.com/HackingGate/Swift-Public-IP
80 | ```
81 |
82 | If you don't use git, just download it manually.
83 |
84 | Drag SwiftPublicIP.xcodeproj to your project.
85 |
86 | Add the SwiftPublicIP framework as an embedded binary to your .xcodeproj file.
87 |
88 | If you want to remove git submodule Swift-Public-IP.
89 |
90 | ```
91 | git submodule deinit Swift-Public-IP
92 | ```
93 |
94 | And don't forget remove reference from Xcode.
95 |
--------------------------------------------------------------------------------
/Sources/PublicIPAPI.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PublicIPAPI.swift
3 | // SwiftPublicIP
4 | //
5 | // Created by HackingGate on 2019/05/13.
6 | // Copyright © 2019 SwiftPublicIP. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | #if canImport(FoundationNetworking)
12 | import FoundationNetworking
13 | #endif
14 |
15 | typealias CompletionHandler = (String?, Error?) -> Void
16 |
17 | func getPublicIPAddress(requestURL: URL, completion: @escaping CompletionHandler) {
18 | URLSession.shared.dataTask(with: requestURL) { (data, _, error) in
19 | if let error = error {
20 | completion(nil, CustomError.error(error))
21 | return
22 | }
23 | guard let data = data else {
24 | completion(nil, CustomError.noData)
25 | return
26 | }
27 | guard let result = String(data: data, encoding: .utf8) else {
28 | completion(nil, CustomError.undecodeable)
29 | return
30 | }
31 | let ipAddress = String(result.filter { !" \n\t\r".contains($0) })
32 | completion(ipAddress, nil)
33 | }.resume()
34 | }
35 |
36 | enum CustomError: LocalizedError {
37 | case noData
38 | case error(Error)
39 | case undecodeable
40 |
41 | public var errorDescription: String? {
42 | switch self {
43 | case .noData:
44 | return "No data response."
45 | case .error(let err):
46 | return err.localizedDescription
47 | case .undecodeable:
48 | return "Data undecodeable."
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Sources/PublicIPAPIURLs.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PublicIPAPIURLs.swift
3 | // SwiftPublicIP
4 | //
5 | // Created by ERU on 2019/05/18.
6 | // Copyright © 2019 SwiftPublicIP. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | public enum PublicIPAPIURLs {
12 |
13 | public enum Hybrid: String, CaseIterable {
14 | case icanhazip = "https://icanhazip.com"
15 | case ipv6test = "https://v4v6.ipv6-test.com/api/myip.php"
16 | case seeip = "https://ip.seeip.org"
17 | case whatismyipaddress = "https://bot.whatismyipaddress.com"
18 | case ident = "https://ident.me/"
19 | }
20 |
21 | public enum IPv4: String, CaseIterable {
22 | case icanhazip = "https://ipv4.icanhazip.com"
23 | case ipv6test = "https://v4.ipv6-test.com/api/myip.php"
24 | case seeip = "https://ip4.seeip.org"
25 | case whatismyipaddress = "https://ipv4bot.whatismyipaddress.com"
26 | case ident = "https://v4.ident.me/"
27 |
28 | case ipify = "https://api.ipify.org"
29 |
30 | case amazonaws = "https://checkip.amazonaws.com"
31 | case ipecho = "https://ipecho.net/plain"
32 | }
33 |
34 | public enum IPv6: String, CaseIterable {
35 | case icanhazip = "https://ipv6.icanhazip.com"
36 | case ipv6test = "https://v6.ipv6-test.com/api/myip.php"
37 | case seeip = "https://ip6.seeip.org"
38 | case whatismyipaddress = "https://ipv6bot.whatismyipaddress.com"
39 | case ident = "https://v6.ident.me/"
40 |
41 | case ipify = "https://api6.ipify.org"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Sources/SwiftPublicIP.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftPublicIP.swift
3 | // SwiftPublicIP
4 | //
5 | // Created by HackingGate on 2019/05/13.
6 | // Copyright © 2019 SwiftPublicIP. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Get public IP address from specified API. Including icanhazip, ipv6-test...
12 | ///
13 | /// - parameter url: The API URL. Use `PublicIPAPIURLs` class. `IPv4` for IPv4 network only,
14 | /// `IPv6` for IPv6 network only, `Hybrid` for both IPv4 or IPv6 networks. You can use custom API URL but make sure
15 | /// it returns vilidate IP address.
16 | /// - parameter completion: The result. IP address in a String.
17 | ///
18 | public func getPublicIP(url: String, completion: @escaping (String?, Error?) -> Void) {
19 |
20 | guard let url: URL = URL(string: url) else {
21 | fatalError("URL is not validate")
22 | }
23 |
24 | getPublicIPAddress(requestURL: url) { (result, error) in
25 | completion(result, error)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/SwiftPublicIP-CLI/main.swift:
--------------------------------------------------------------------------------
1 | //
2 | // main.swift
3 | // SwiftPublicIP-CLI
4 | //
5 | // Created by ERU on 2019/05/13.
6 | // Copyright © 2019 SwiftPublicIP. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import SwiftPublicIP
11 |
12 | print("Hello, World!")
13 |
14 | var sema = DispatchSemaphore(value: 0)
15 | SwiftPublicIP.getPublicIP(url: PublicIPAPIURLs.IPv4.icanhazip.rawValue) { string, error in
16 | if let error = error {
17 | print(error.localizedDescription)
18 | } else if let string = string {
19 | print(string) // Your IP address
20 | }
21 | sema.signal()
22 | }
23 |
24 | sema.wait()
25 |
--------------------------------------------------------------------------------
/SwiftPublicIP.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = "SwiftPublicIP"
3 | s.version = "0.0.2"
4 | s.summary = "Swift library for checking your public IP address."
5 | s.description = <<-DESC
6 | Swift library for checking your public IP address.
7 | Supports macOS, iOS, tvOS, watchOS and Linux.
8 | DESC
9 | s.homepage = "https://github.com/HackingGate/Swift-Public-IP"
10 | s.license = { :type => "MIT", :file => "LICENSE" }
11 | s.author = { "HackingGate" => "i@hackinggate.com" }
12 | s.social_media_url = ""
13 | s.ios.deployment_target = "8.0"
14 | s.osx.deployment_target = "10.9"
15 | s.watchos.deployment_target = "2.0"
16 | s.tvos.deployment_target = "9.0"
17 | s.source = { :git => "https://github.com/HackingGate/Swift-Public-IP.git", :tag => s.version.to_s }
18 | s.source_files = "Sources/**/*"
19 | s.frameworks = "Foundation"
20 | s.swift_versions = "5.0"
21 | end
22 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 47;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 52D6D9871BEFF229002C0205 /* SwiftPublicIP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D97C1BEFF229002C0205 /* SwiftPublicIP.framework */; };
11 | 7601E5CF229035610030CAB5 /* SwiftPublicIP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6DA0F1BF000BD002C0205 /* SwiftPublicIP.framework */; };
12 | 760928F622899554004CAE43 /* PublicIPAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 760928F522899554004CAE43 /* PublicIPAPI.swift */; };
13 | 760928F722899554004CAE43 /* PublicIPAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 760928F522899554004CAE43 /* PublicIPAPI.swift */; };
14 | 760928F822899554004CAE43 /* PublicIPAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 760928F522899554004CAE43 /* PublicIPAPI.swift */; };
15 | 760928F922899554004CAE43 /* PublicIPAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 760928F522899554004CAE43 /* PublicIPAPI.swift */; };
16 | 7609290122899825004CAE43 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7609290022899825004CAE43 /* main.swift */; };
17 | 763B7F3F228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */; };
18 | 763B7F40228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */; };
19 | 763B7F42228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */; };
20 | 763B7F43228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */; };
21 | 763B7F44228FC9D00015E312 /* PublicIPAPIURLs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */; };
22 | 8933C7851EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */; };
23 | 8933C7861EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */; };
24 | 8933C7871EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */; };
25 | 8933C7881EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */; };
26 | 8933C78E1EB5B82C000D00A4 /* SwiftPublicIPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7891EB5B82A000D00A4 /* SwiftPublicIPTests.swift */; };
27 | 8933C78F1EB5B82C000D00A4 /* SwiftPublicIPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7891EB5B82A000D00A4 /* SwiftPublicIPTests.swift */; };
28 | 8933C7901EB5B82D000D00A4 /* SwiftPublicIPTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8933C7891EB5B82A000D00A4 /* SwiftPublicIPTests.swift */; };
29 | DD7502881C68FEDE006590AF /* SwiftPublicIP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6DA0F1BF000BD002C0205 /* SwiftPublicIP.framework */; };
30 | DD7502921C690C7A006590AF /* SwiftPublicIP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D9F01BEFFFBE002C0205 /* SwiftPublicIP.framework */; };
31 | /* End PBXBuildFile section */
32 |
33 | /* Begin PBXContainerItemProxy section */
34 | 52D6D9881BEFF229002C0205 /* PBXContainerItemProxy */ = {
35 | isa = PBXContainerItemProxy;
36 | containerPortal = 52D6D9731BEFF229002C0205 /* Project object */;
37 | proxyType = 1;
38 | remoteGlobalIDString = 52D6D97B1BEFF229002C0205;
39 | remoteInfo = SwiftPublicIP;
40 | };
41 | DD7502801C68FCFC006590AF /* PBXContainerItemProxy */ = {
42 | isa = PBXContainerItemProxy;
43 | containerPortal = 52D6D9731BEFF229002C0205 /* Project object */;
44 | proxyType = 1;
45 | remoteGlobalIDString = 52D6DA0E1BF000BD002C0205;
46 | remoteInfo = "SwiftPublicIP-macOS";
47 | };
48 | DD7502931C690C7A006590AF /* PBXContainerItemProxy */ = {
49 | isa = PBXContainerItemProxy;
50 | containerPortal = 52D6D9731BEFF229002C0205 /* Project object */;
51 | proxyType = 1;
52 | remoteGlobalIDString = 52D6D9EF1BEFFFBE002C0205;
53 | remoteInfo = "SwiftPublicIP-tvOS";
54 | };
55 | /* End PBXContainerItemProxy section */
56 |
57 | /* Begin PBXCopyFilesBuildPhase section */
58 | 760928FC22899824004CAE43 /* CopyFiles */ = {
59 | isa = PBXCopyFilesBuildPhase;
60 | buildActionMask = 2147483647;
61 | dstPath = /usr/share/man/man1/;
62 | dstSubfolderSpec = 0;
63 | files = (
64 | );
65 | runOnlyForDeploymentPostprocessing = 1;
66 | };
67 | /* End PBXCopyFilesBuildPhase section */
68 |
69 | /* Begin PBXFileReference section */
70 | 52D6D97C1BEFF229002C0205 /* SwiftPublicIP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftPublicIP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
71 | 52D6D9861BEFF229002C0205 /* SwiftPublicIP-iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftPublicIP-iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
72 | 52D6D9E21BEFFF6E002C0205 /* SwiftPublicIP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftPublicIP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
73 | 52D6D9F01BEFFFBE002C0205 /* SwiftPublicIP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftPublicIP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
74 | 52D6DA0F1BF000BD002C0205 /* SwiftPublicIP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftPublicIP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
75 | 760928F522899554004CAE43 /* PublicIPAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicIPAPI.swift; sourceTree = ""; };
76 | 760928FE22899824004CAE43 /* SwiftPublicIP-CLI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "SwiftPublicIP-CLI"; sourceTree = BUILT_PRODUCTS_DIR; };
77 | 7609290022899825004CAE43 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; };
78 | 760929052289B2F4004CAE43 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
79 | 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PublicIPAPIURLs.swift; sourceTree = ""; };
80 | 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftPublicIP.swift; sourceTree = ""; };
81 | 8933C7891EB5B82A000D00A4 /* SwiftPublicIPTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftPublicIPTests.swift; sourceTree = ""; };
82 | AD2FAA261CD0B6D800659CF4 /* SwiftPublicIP.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SwiftPublicIP.plist; sourceTree = ""; };
83 | AD2FAA281CD0B6E100659CF4 /* SwiftPublicIPTests.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SwiftPublicIPTests.plist; sourceTree = ""; };
84 | DD75027A1C68FCFC006590AF /* SwiftPublicIP-macOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftPublicIP-macOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
85 | DD75028D1C690C7A006590AF /* SwiftPublicIP-tvOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SwiftPublicIP-tvOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
86 | /* End PBXFileReference section */
87 |
88 | /* Begin PBXFrameworksBuildPhase section */
89 | 52D6D9781BEFF229002C0205 /* Frameworks */ = {
90 | isa = PBXFrameworksBuildPhase;
91 | buildActionMask = 2147483647;
92 | files = (
93 | );
94 | runOnlyForDeploymentPostprocessing = 0;
95 | };
96 | 52D6D9831BEFF229002C0205 /* Frameworks */ = {
97 | isa = PBXFrameworksBuildPhase;
98 | buildActionMask = 2147483647;
99 | files = (
100 | 52D6D9871BEFF229002C0205 /* SwiftPublicIP.framework in Frameworks */,
101 | );
102 | runOnlyForDeploymentPostprocessing = 0;
103 | };
104 | 52D6D9DE1BEFFF6E002C0205 /* Frameworks */ = {
105 | isa = PBXFrameworksBuildPhase;
106 | buildActionMask = 2147483647;
107 | files = (
108 | );
109 | runOnlyForDeploymentPostprocessing = 0;
110 | };
111 | 52D6D9EC1BEFFFBE002C0205 /* Frameworks */ = {
112 | isa = PBXFrameworksBuildPhase;
113 | buildActionMask = 2147483647;
114 | files = (
115 | );
116 | runOnlyForDeploymentPostprocessing = 0;
117 | };
118 | 52D6DA0B1BF000BD002C0205 /* Frameworks */ = {
119 | isa = PBXFrameworksBuildPhase;
120 | buildActionMask = 2147483647;
121 | files = (
122 | );
123 | runOnlyForDeploymentPostprocessing = 0;
124 | };
125 | 760928FB22899824004CAE43 /* Frameworks */ = {
126 | isa = PBXFrameworksBuildPhase;
127 | buildActionMask = 2147483647;
128 | files = (
129 | 7601E5CF229035610030CAB5 /* SwiftPublicIP.framework in Frameworks */,
130 | );
131 | runOnlyForDeploymentPostprocessing = 0;
132 | };
133 | DD7502771C68FCFC006590AF /* Frameworks */ = {
134 | isa = PBXFrameworksBuildPhase;
135 | buildActionMask = 2147483647;
136 | files = (
137 | DD7502881C68FEDE006590AF /* SwiftPublicIP.framework in Frameworks */,
138 | );
139 | runOnlyForDeploymentPostprocessing = 0;
140 | };
141 | DD75028A1C690C7A006590AF /* Frameworks */ = {
142 | isa = PBXFrameworksBuildPhase;
143 | buildActionMask = 2147483647;
144 | files = (
145 | DD7502921C690C7A006590AF /* SwiftPublicIP.framework in Frameworks */,
146 | );
147 | runOnlyForDeploymentPostprocessing = 0;
148 | };
149 | /* End PBXFrameworksBuildPhase section */
150 |
151 | /* Begin PBXGroup section */
152 | 52D6D9721BEFF229002C0205 = {
153 | isa = PBXGroup;
154 | children = (
155 | 760929052289B2F4004CAE43 /* README.md */,
156 | 8933C7811EB5B7E0000D00A4 /* Sources */,
157 | 8933C7831EB5B7EB000D00A4 /* Tests */,
158 | 52D6D99C1BEFF38C002C0205 /* Configs */,
159 | 760928FF22899825004CAE43 /* SwiftPublicIP-CLI */,
160 | 52D6D97D1BEFF229002C0205 /* Products */,
161 | 760334EC229034E10002465D /* Frameworks */,
162 | );
163 | sourceTree = "";
164 | };
165 | 52D6D97D1BEFF229002C0205 /* Products */ = {
166 | isa = PBXGroup;
167 | children = (
168 | 52D6D97C1BEFF229002C0205 /* SwiftPublicIP.framework */,
169 | 52D6D9861BEFF229002C0205 /* SwiftPublicIP-iOS Tests.xctest */,
170 | 52D6D9E21BEFFF6E002C0205 /* SwiftPublicIP.framework */,
171 | 52D6D9F01BEFFFBE002C0205 /* SwiftPublicIP.framework */,
172 | 52D6DA0F1BF000BD002C0205 /* SwiftPublicIP.framework */,
173 | DD75027A1C68FCFC006590AF /* SwiftPublicIP-macOS Tests.xctest */,
174 | DD75028D1C690C7A006590AF /* SwiftPublicIP-tvOS Tests.xctest */,
175 | 760928FE22899824004CAE43 /* SwiftPublicIP-CLI */,
176 | );
177 | name = Products;
178 | sourceTree = "";
179 | };
180 | 52D6D99C1BEFF38C002C0205 /* Configs */ = {
181 | isa = PBXGroup;
182 | children = (
183 | DD7502721C68FC1B006590AF /* Frameworks */,
184 | DD7502731C68FC20006590AF /* Tests */,
185 | );
186 | path = Configs;
187 | sourceTree = "";
188 | };
189 | 760334EC229034E10002465D /* Frameworks */ = {
190 | isa = PBXGroup;
191 | children = (
192 | );
193 | name = Frameworks;
194 | sourceTree = "";
195 | };
196 | 760928FF22899825004CAE43 /* SwiftPublicIP-CLI */ = {
197 | isa = PBXGroup;
198 | children = (
199 | 7609290022899825004CAE43 /* main.swift */,
200 | );
201 | path = "SwiftPublicIP-CLI";
202 | sourceTree = "";
203 | };
204 | 8933C7811EB5B7E0000D00A4 /* Sources */ = {
205 | isa = PBXGroup;
206 | children = (
207 | 8933C7841EB5B820000D00A4 /* SwiftPublicIP.swift */,
208 | 760928F522899554004CAE43 /* PublicIPAPI.swift */,
209 | 763B7F3E228FC6930015E312 /* PublicIPAPIURLs.swift */,
210 | );
211 | path = Sources;
212 | sourceTree = "";
213 | };
214 | 8933C7831EB5B7EB000D00A4 /* Tests */ = {
215 | isa = PBXGroup;
216 | children = (
217 | 8933C7891EB5B82A000D00A4 /* SwiftPublicIPTests.swift */,
218 | );
219 | name = Tests;
220 | path = Tests/SwiftPublicIPTests;
221 | sourceTree = "";
222 | };
223 | DD7502721C68FC1B006590AF /* Frameworks */ = {
224 | isa = PBXGroup;
225 | children = (
226 | AD2FAA261CD0B6D800659CF4 /* SwiftPublicIP.plist */,
227 | );
228 | name = Frameworks;
229 | sourceTree = "";
230 | };
231 | DD7502731C68FC20006590AF /* Tests */ = {
232 | isa = PBXGroup;
233 | children = (
234 | AD2FAA281CD0B6E100659CF4 /* SwiftPublicIPTests.plist */,
235 | );
236 | name = Tests;
237 | sourceTree = "";
238 | };
239 | /* End PBXGroup section */
240 |
241 | /* Begin PBXHeadersBuildPhase section */
242 | 52D6D9791BEFF229002C0205 /* Headers */ = {
243 | isa = PBXHeadersBuildPhase;
244 | buildActionMask = 2147483647;
245 | files = (
246 | );
247 | runOnlyForDeploymentPostprocessing = 0;
248 | };
249 | 52D6D9DF1BEFFF6E002C0205 /* Headers */ = {
250 | isa = PBXHeadersBuildPhase;
251 | buildActionMask = 2147483647;
252 | files = (
253 | );
254 | runOnlyForDeploymentPostprocessing = 0;
255 | };
256 | 52D6D9ED1BEFFFBE002C0205 /* Headers */ = {
257 | isa = PBXHeadersBuildPhase;
258 | buildActionMask = 2147483647;
259 | files = (
260 | );
261 | runOnlyForDeploymentPostprocessing = 0;
262 | };
263 | 52D6DA0C1BF000BD002C0205 /* Headers */ = {
264 | isa = PBXHeadersBuildPhase;
265 | buildActionMask = 2147483647;
266 | files = (
267 | );
268 | runOnlyForDeploymentPostprocessing = 0;
269 | };
270 | /* End PBXHeadersBuildPhase section */
271 |
272 | /* Begin PBXNativeTarget section */
273 | 52D6D97B1BEFF229002C0205 /* SwiftPublicIP-iOS */ = {
274 | isa = PBXNativeTarget;
275 | buildConfigurationList = 52D6D9901BEFF229002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-iOS" */;
276 | buildPhases = (
277 | 52D6D9771BEFF229002C0205 /* Sources */,
278 | 52D6D9781BEFF229002C0205 /* Frameworks */,
279 | 52D6D9791BEFF229002C0205 /* Headers */,
280 | 52D6D97A1BEFF229002C0205 /* Resources */,
281 | );
282 | buildRules = (
283 | );
284 | dependencies = (
285 | );
286 | name = "SwiftPublicIP-iOS";
287 | productName = SwiftPublicIP;
288 | productReference = 52D6D97C1BEFF229002C0205 /* SwiftPublicIP.framework */;
289 | productType = "com.apple.product-type.framework";
290 | };
291 | 52D6D9851BEFF229002C0205 /* SwiftPublicIP-iOS Tests */ = {
292 | isa = PBXNativeTarget;
293 | buildConfigurationList = 52D6D9931BEFF229002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-iOS Tests" */;
294 | buildPhases = (
295 | 52D6D9821BEFF229002C0205 /* Sources */,
296 | 52D6D9831BEFF229002C0205 /* Frameworks */,
297 | 52D6D9841BEFF229002C0205 /* Resources */,
298 | );
299 | buildRules = (
300 | );
301 | dependencies = (
302 | 52D6D9891BEFF229002C0205 /* PBXTargetDependency */,
303 | );
304 | name = "SwiftPublicIP-iOS Tests";
305 | productName = SwiftPublicIPTests;
306 | productReference = 52D6D9861BEFF229002C0205 /* SwiftPublicIP-iOS Tests.xctest */;
307 | productType = "com.apple.product-type.bundle.unit-test";
308 | };
309 | 52D6D9E11BEFFF6E002C0205 /* SwiftPublicIP-watchOS */ = {
310 | isa = PBXNativeTarget;
311 | buildConfigurationList = 52D6D9E71BEFFF6E002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-watchOS" */;
312 | buildPhases = (
313 | 52D6D9DD1BEFFF6E002C0205 /* Sources */,
314 | 52D6D9DE1BEFFF6E002C0205 /* Frameworks */,
315 | 52D6D9DF1BEFFF6E002C0205 /* Headers */,
316 | 52D6D9E01BEFFF6E002C0205 /* Resources */,
317 | );
318 | buildRules = (
319 | );
320 | dependencies = (
321 | );
322 | name = "SwiftPublicIP-watchOS";
323 | productName = "SwiftPublicIP-watchOS";
324 | productReference = 52D6D9E21BEFFF6E002C0205 /* SwiftPublicIP.framework */;
325 | productType = "com.apple.product-type.framework";
326 | };
327 | 52D6D9EF1BEFFFBE002C0205 /* SwiftPublicIP-tvOS */ = {
328 | isa = PBXNativeTarget;
329 | buildConfigurationList = 52D6DA011BEFFFBE002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-tvOS" */;
330 | buildPhases = (
331 | 52D6D9EB1BEFFFBE002C0205 /* Sources */,
332 | 52D6D9EC1BEFFFBE002C0205 /* Frameworks */,
333 | 52D6D9ED1BEFFFBE002C0205 /* Headers */,
334 | 52D6D9EE1BEFFFBE002C0205 /* Resources */,
335 | );
336 | buildRules = (
337 | );
338 | dependencies = (
339 | );
340 | name = "SwiftPublicIP-tvOS";
341 | productName = "SwiftPublicIP-tvOS";
342 | productReference = 52D6D9F01BEFFFBE002C0205 /* SwiftPublicIP.framework */;
343 | productType = "com.apple.product-type.framework";
344 | };
345 | 52D6DA0E1BF000BD002C0205 /* SwiftPublicIP-macOS */ = {
346 | isa = PBXNativeTarget;
347 | buildConfigurationList = 52D6DA201BF000BD002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-macOS" */;
348 | buildPhases = (
349 | 52D6DA0A1BF000BD002C0205 /* Sources */,
350 | 52D6DA0B1BF000BD002C0205 /* Frameworks */,
351 | 52D6DA0C1BF000BD002C0205 /* Headers */,
352 | 52D6DA0D1BF000BD002C0205 /* Resources */,
353 | );
354 | buildRules = (
355 | );
356 | dependencies = (
357 | );
358 | name = "SwiftPublicIP-macOS";
359 | productName = "SwiftPublicIP-macOS";
360 | productReference = 52D6DA0F1BF000BD002C0205 /* SwiftPublicIP.framework */;
361 | productType = "com.apple.product-type.framework";
362 | };
363 | 760928FD22899824004CAE43 /* SwiftPublicIP-CLI */ = {
364 | isa = PBXNativeTarget;
365 | buildConfigurationList = 7609290222899825004CAE43 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-CLI" */;
366 | buildPhases = (
367 | 760928FA22899824004CAE43 /* Sources */,
368 | 760928FB22899824004CAE43 /* Frameworks */,
369 | 760928FC22899824004CAE43 /* CopyFiles */,
370 | );
371 | buildRules = (
372 | );
373 | dependencies = (
374 | );
375 | name = "SwiftPublicIP-CLI";
376 | productName = "SwiftPublicIP-CLI";
377 | productReference = 760928FE22899824004CAE43 /* SwiftPublicIP-CLI */;
378 | productType = "com.apple.product-type.tool";
379 | };
380 | DD7502791C68FCFC006590AF /* SwiftPublicIP-macOS Tests */ = {
381 | isa = PBXNativeTarget;
382 | buildConfigurationList = DD7502821C68FCFC006590AF /* Build configuration list for PBXNativeTarget "SwiftPublicIP-macOS Tests" */;
383 | buildPhases = (
384 | DD7502761C68FCFC006590AF /* Sources */,
385 | DD7502771C68FCFC006590AF /* Frameworks */,
386 | DD7502781C68FCFC006590AF /* Resources */,
387 | );
388 | buildRules = (
389 | );
390 | dependencies = (
391 | DD7502811C68FCFC006590AF /* PBXTargetDependency */,
392 | );
393 | name = "SwiftPublicIP-macOS Tests";
394 | productName = "SwiftPublicIP-OS Tests";
395 | productReference = DD75027A1C68FCFC006590AF /* SwiftPublicIP-macOS Tests.xctest */;
396 | productType = "com.apple.product-type.bundle.unit-test";
397 | };
398 | DD75028C1C690C7A006590AF /* SwiftPublicIP-tvOS Tests */ = {
399 | isa = PBXNativeTarget;
400 | buildConfigurationList = DD7502951C690C7A006590AF /* Build configuration list for PBXNativeTarget "SwiftPublicIP-tvOS Tests" */;
401 | buildPhases = (
402 | DD7502891C690C7A006590AF /* Sources */,
403 | DD75028A1C690C7A006590AF /* Frameworks */,
404 | DD75028B1C690C7A006590AF /* Resources */,
405 | );
406 | buildRules = (
407 | );
408 | dependencies = (
409 | DD7502941C690C7A006590AF /* PBXTargetDependency */,
410 | );
411 | name = "SwiftPublicIP-tvOS Tests";
412 | productName = "SwiftPublicIP-tvOS Tests";
413 | productReference = DD75028D1C690C7A006590AF /* SwiftPublicIP-tvOS Tests.xctest */;
414 | productType = "com.apple.product-type.bundle.unit-test";
415 | };
416 | /* End PBXNativeTarget section */
417 |
418 | /* Begin PBXProject section */
419 | 52D6D9731BEFF229002C0205 /* Project object */ = {
420 | isa = PBXProject;
421 | attributes = {
422 | LastSwiftUpdateCheck = 1020;
423 | LastUpgradeCheck = 1020;
424 | ORGANIZATIONNAME = SwiftPublicIP;
425 | TargetAttributes = {
426 | 52D6D97B1BEFF229002C0205 = {
427 | CreatedOnToolsVersion = 7.1;
428 | LastSwiftMigration = 1020;
429 | };
430 | 52D6D9851BEFF229002C0205 = {
431 | CreatedOnToolsVersion = 7.1;
432 | LastSwiftMigration = 1020;
433 | };
434 | 52D6D9E11BEFFF6E002C0205 = {
435 | CreatedOnToolsVersion = 7.1;
436 | LastSwiftMigration = 1020;
437 | };
438 | 52D6D9EF1BEFFFBE002C0205 = {
439 | CreatedOnToolsVersion = 7.1;
440 | LastSwiftMigration = 1020;
441 | };
442 | 52D6DA0E1BF000BD002C0205 = {
443 | CreatedOnToolsVersion = 7.1;
444 | LastSwiftMigration = 1020;
445 | };
446 | 760928FD22899824004CAE43 = {
447 | CreatedOnToolsVersion = 10.2.1;
448 | ProvisioningStyle = Automatic;
449 | };
450 | DD7502791C68FCFC006590AF = {
451 | CreatedOnToolsVersion = 7.2.1;
452 | LastSwiftMigration = 1020;
453 | };
454 | DD75028C1C690C7A006590AF = {
455 | CreatedOnToolsVersion = 7.2.1;
456 | LastSwiftMigration = 1020;
457 | };
458 | };
459 | };
460 | buildConfigurationList = 52D6D9761BEFF229002C0205 /* Build configuration list for PBXProject "SwiftPublicIP" */;
461 | compatibilityVersion = "Xcode 6.3";
462 | developmentRegion = en;
463 | hasScannedForEncodings = 0;
464 | knownRegions = (
465 | en,
466 | Base,
467 | );
468 | mainGroup = 52D6D9721BEFF229002C0205;
469 | productRefGroup = 52D6D97D1BEFF229002C0205 /* Products */;
470 | projectDirPath = "";
471 | projectRoot = "";
472 | targets = (
473 | 52D6D97B1BEFF229002C0205 /* SwiftPublicIP-iOS */,
474 | 52D6DA0E1BF000BD002C0205 /* SwiftPublicIP-macOS */,
475 | 52D6D9E11BEFFF6E002C0205 /* SwiftPublicIP-watchOS */,
476 | 52D6D9EF1BEFFFBE002C0205 /* SwiftPublicIP-tvOS */,
477 | 52D6D9851BEFF229002C0205 /* SwiftPublicIP-iOS Tests */,
478 | DD7502791C68FCFC006590AF /* SwiftPublicIP-macOS Tests */,
479 | DD75028C1C690C7A006590AF /* SwiftPublicIP-tvOS Tests */,
480 | 760928FD22899824004CAE43 /* SwiftPublicIP-CLI */,
481 | );
482 | };
483 | /* End PBXProject section */
484 |
485 | /* Begin PBXResourcesBuildPhase section */
486 | 52D6D97A1BEFF229002C0205 /* Resources */ = {
487 | isa = PBXResourcesBuildPhase;
488 | buildActionMask = 2147483647;
489 | files = (
490 | );
491 | runOnlyForDeploymentPostprocessing = 0;
492 | };
493 | 52D6D9841BEFF229002C0205 /* Resources */ = {
494 | isa = PBXResourcesBuildPhase;
495 | buildActionMask = 2147483647;
496 | files = (
497 | );
498 | runOnlyForDeploymentPostprocessing = 0;
499 | };
500 | 52D6D9E01BEFFF6E002C0205 /* Resources */ = {
501 | isa = PBXResourcesBuildPhase;
502 | buildActionMask = 2147483647;
503 | files = (
504 | );
505 | runOnlyForDeploymentPostprocessing = 0;
506 | };
507 | 52D6D9EE1BEFFFBE002C0205 /* Resources */ = {
508 | isa = PBXResourcesBuildPhase;
509 | buildActionMask = 2147483647;
510 | files = (
511 | );
512 | runOnlyForDeploymentPostprocessing = 0;
513 | };
514 | 52D6DA0D1BF000BD002C0205 /* Resources */ = {
515 | isa = PBXResourcesBuildPhase;
516 | buildActionMask = 2147483647;
517 | files = (
518 | );
519 | runOnlyForDeploymentPostprocessing = 0;
520 | };
521 | DD7502781C68FCFC006590AF /* Resources */ = {
522 | isa = PBXResourcesBuildPhase;
523 | buildActionMask = 2147483647;
524 | files = (
525 | );
526 | runOnlyForDeploymentPostprocessing = 0;
527 | };
528 | DD75028B1C690C7A006590AF /* Resources */ = {
529 | isa = PBXResourcesBuildPhase;
530 | buildActionMask = 2147483647;
531 | files = (
532 | );
533 | runOnlyForDeploymentPostprocessing = 0;
534 | };
535 | /* End PBXResourcesBuildPhase section */
536 |
537 | /* Begin PBXSourcesBuildPhase section */
538 | 52D6D9771BEFF229002C0205 /* Sources */ = {
539 | isa = PBXSourcesBuildPhase;
540 | buildActionMask = 2147483647;
541 | files = (
542 | 760928F622899554004CAE43 /* PublicIPAPI.swift in Sources */,
543 | 763B7F3F228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */,
544 | 8933C7851EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */,
545 | );
546 | runOnlyForDeploymentPostprocessing = 0;
547 | };
548 | 52D6D9821BEFF229002C0205 /* Sources */ = {
549 | isa = PBXSourcesBuildPhase;
550 | buildActionMask = 2147483647;
551 | files = (
552 | 8933C7901EB5B82D000D00A4 /* SwiftPublicIPTests.swift in Sources */,
553 | );
554 | runOnlyForDeploymentPostprocessing = 0;
555 | };
556 | 52D6D9DD1BEFFF6E002C0205 /* Sources */ = {
557 | isa = PBXSourcesBuildPhase;
558 | buildActionMask = 2147483647;
559 | files = (
560 | 760928F822899554004CAE43 /* PublicIPAPI.swift in Sources */,
561 | 763B7F44228FC9D00015E312 /* PublicIPAPIURLs.swift in Sources */,
562 | 8933C7871EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */,
563 | );
564 | runOnlyForDeploymentPostprocessing = 0;
565 | };
566 | 52D6D9EB1BEFFFBE002C0205 /* Sources */ = {
567 | isa = PBXSourcesBuildPhase;
568 | buildActionMask = 2147483647;
569 | files = (
570 | 760928F922899554004CAE43 /* PublicIPAPI.swift in Sources */,
571 | 763B7F42228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */,
572 | 8933C7881EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */,
573 | );
574 | runOnlyForDeploymentPostprocessing = 0;
575 | };
576 | 52D6DA0A1BF000BD002C0205 /* Sources */ = {
577 | isa = PBXSourcesBuildPhase;
578 | buildActionMask = 2147483647;
579 | files = (
580 | 760928F722899554004CAE43 /* PublicIPAPI.swift in Sources */,
581 | 763B7F40228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */,
582 | 8933C7861EB5B820000D00A4 /* SwiftPublicIP.swift in Sources */,
583 | );
584 | runOnlyForDeploymentPostprocessing = 0;
585 | };
586 | 760928FA22899824004CAE43 /* Sources */ = {
587 | isa = PBXSourcesBuildPhase;
588 | buildActionMask = 2147483647;
589 | files = (
590 | 763B7F43228FC6930015E312 /* PublicIPAPIURLs.swift in Sources */,
591 | 7609290122899825004CAE43 /* main.swift in Sources */,
592 | );
593 | runOnlyForDeploymentPostprocessing = 0;
594 | };
595 | DD7502761C68FCFC006590AF /* Sources */ = {
596 | isa = PBXSourcesBuildPhase;
597 | buildActionMask = 2147483647;
598 | files = (
599 | 8933C78F1EB5B82C000D00A4 /* SwiftPublicIPTests.swift in Sources */,
600 | );
601 | runOnlyForDeploymentPostprocessing = 0;
602 | };
603 | DD7502891C690C7A006590AF /* Sources */ = {
604 | isa = PBXSourcesBuildPhase;
605 | buildActionMask = 2147483647;
606 | files = (
607 | 8933C78E1EB5B82C000D00A4 /* SwiftPublicIPTests.swift in Sources */,
608 | );
609 | runOnlyForDeploymentPostprocessing = 0;
610 | };
611 | /* End PBXSourcesBuildPhase section */
612 |
613 | /* Begin PBXTargetDependency section */
614 | 52D6D9891BEFF229002C0205 /* PBXTargetDependency */ = {
615 | isa = PBXTargetDependency;
616 | target = 52D6D97B1BEFF229002C0205 /* SwiftPublicIP-iOS */;
617 | targetProxy = 52D6D9881BEFF229002C0205 /* PBXContainerItemProxy */;
618 | };
619 | DD7502811C68FCFC006590AF /* PBXTargetDependency */ = {
620 | isa = PBXTargetDependency;
621 | target = 52D6DA0E1BF000BD002C0205 /* SwiftPublicIP-macOS */;
622 | targetProxy = DD7502801C68FCFC006590AF /* PBXContainerItemProxy */;
623 | };
624 | DD7502941C690C7A006590AF /* PBXTargetDependency */ = {
625 | isa = PBXTargetDependency;
626 | target = 52D6D9EF1BEFFFBE002C0205 /* SwiftPublicIP-tvOS */;
627 | targetProxy = DD7502931C690C7A006590AF /* PBXContainerItemProxy */;
628 | };
629 | /* End PBXTargetDependency section */
630 |
631 | /* Begin XCBuildConfiguration section */
632 | 52D6D98E1BEFF229002C0205 /* Debug */ = {
633 | isa = XCBuildConfiguration;
634 | buildSettings = {
635 | ALWAYS_SEARCH_USER_PATHS = NO;
636 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
637 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
638 | CLANG_CXX_LIBRARY = "libc++";
639 | CLANG_ENABLE_MODULES = YES;
640 | CLANG_ENABLE_OBJC_ARC = YES;
641 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
642 | CLANG_WARN_BOOL_CONVERSION = YES;
643 | CLANG_WARN_COMMA = YES;
644 | CLANG_WARN_CONSTANT_CONVERSION = YES;
645 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
646 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
647 | CLANG_WARN_EMPTY_BODY = YES;
648 | CLANG_WARN_ENUM_CONVERSION = YES;
649 | CLANG_WARN_INFINITE_RECURSION = YES;
650 | CLANG_WARN_INT_CONVERSION = YES;
651 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
652 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
653 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
654 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
655 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
656 | CLANG_WARN_STRICT_PROTOTYPES = YES;
657 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
658 | CLANG_WARN_UNREACHABLE_CODE = YES;
659 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
660 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
661 | COPY_PHASE_STRIP = NO;
662 | CURRENT_PROJECT_VERSION = 1;
663 | DEBUG_INFORMATION_FORMAT = dwarf;
664 | ENABLE_STRICT_OBJC_MSGSEND = YES;
665 | ENABLE_TESTABILITY = YES;
666 | GCC_C_LANGUAGE_STANDARD = gnu99;
667 | GCC_DYNAMIC_NO_PIC = NO;
668 | GCC_NO_COMMON_BLOCKS = YES;
669 | GCC_OPTIMIZATION_LEVEL = 0;
670 | GCC_PREPROCESSOR_DEFINITIONS = (
671 | "DEBUG=1",
672 | "$(inherited)",
673 | );
674 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
675 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
676 | GCC_WARN_UNDECLARED_SELECTOR = YES;
677 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
678 | GCC_WARN_UNUSED_FUNCTION = YES;
679 | GCC_WARN_UNUSED_VARIABLE = YES;
680 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
681 | MTL_ENABLE_DEBUG_INFO = YES;
682 | ONLY_ACTIVE_ARCH = YES;
683 | SDKROOT = iphoneos;
684 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
685 | SWIFT_VERSION = 5.0;
686 | TARGETED_DEVICE_FAMILY = "1,2";
687 | VERSIONING_SYSTEM = "apple-generic";
688 | VERSION_INFO_PREFIX = "";
689 | };
690 | name = Debug;
691 | };
692 | 52D6D98F1BEFF229002C0205 /* Release */ = {
693 | isa = XCBuildConfiguration;
694 | buildSettings = {
695 | ALWAYS_SEARCH_USER_PATHS = NO;
696 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
697 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
698 | CLANG_CXX_LIBRARY = "libc++";
699 | CLANG_ENABLE_MODULES = YES;
700 | CLANG_ENABLE_OBJC_ARC = YES;
701 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
702 | CLANG_WARN_BOOL_CONVERSION = YES;
703 | CLANG_WARN_COMMA = YES;
704 | CLANG_WARN_CONSTANT_CONVERSION = YES;
705 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
706 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
707 | CLANG_WARN_EMPTY_BODY = YES;
708 | CLANG_WARN_ENUM_CONVERSION = YES;
709 | CLANG_WARN_INFINITE_RECURSION = YES;
710 | CLANG_WARN_INT_CONVERSION = YES;
711 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
712 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
713 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
714 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
715 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
716 | CLANG_WARN_STRICT_PROTOTYPES = YES;
717 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
718 | CLANG_WARN_UNREACHABLE_CODE = YES;
719 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
720 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
721 | COPY_PHASE_STRIP = NO;
722 | CURRENT_PROJECT_VERSION = 1;
723 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
724 | ENABLE_NS_ASSERTIONS = NO;
725 | ENABLE_STRICT_OBJC_MSGSEND = YES;
726 | GCC_C_LANGUAGE_STANDARD = gnu99;
727 | GCC_NO_COMMON_BLOCKS = YES;
728 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
729 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
730 | GCC_WARN_UNDECLARED_SELECTOR = YES;
731 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
732 | GCC_WARN_UNUSED_FUNCTION = YES;
733 | GCC_WARN_UNUSED_VARIABLE = YES;
734 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
735 | MTL_ENABLE_DEBUG_INFO = NO;
736 | SDKROOT = iphoneos;
737 | SWIFT_VERSION = 5.0;
738 | TARGETED_DEVICE_FAMILY = "1,2";
739 | VALIDATE_PRODUCT = YES;
740 | VERSIONING_SYSTEM = "apple-generic";
741 | VERSION_INFO_PREFIX = "";
742 | };
743 | name = Release;
744 | };
745 | 52D6D9911BEFF229002C0205 /* Debug */ = {
746 | isa = XCBuildConfiguration;
747 | buildSettings = {
748 | APPLICATION_EXTENSION_API_ONLY = YES;
749 | CLANG_ENABLE_MODULES = YES;
750 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
751 | DEFINES_MODULE = YES;
752 | DYLIB_COMPATIBILITY_VERSION = 1;
753 | DYLIB_CURRENT_VERSION = 1;
754 | DYLIB_INSTALL_NAME_BASE = "@rpath";
755 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
756 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
757 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
758 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
759 | ONLY_ACTIVE_ARCH = NO;
760 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-iOS";
761 | PRODUCT_NAME = SwiftPublicIP;
762 | SKIP_INSTALL = YES;
763 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
764 | SWIFT_VERSION = 5.0;
765 | };
766 | name = Debug;
767 | };
768 | 52D6D9921BEFF229002C0205 /* Release */ = {
769 | isa = XCBuildConfiguration;
770 | buildSettings = {
771 | APPLICATION_EXTENSION_API_ONLY = YES;
772 | CLANG_ENABLE_MODULES = YES;
773 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
774 | DEFINES_MODULE = YES;
775 | DYLIB_COMPATIBILITY_VERSION = 1;
776 | DYLIB_CURRENT_VERSION = 1;
777 | DYLIB_INSTALL_NAME_BASE = "@rpath";
778 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
779 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
780 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
781 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
782 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-iOS";
783 | PRODUCT_NAME = SwiftPublicIP;
784 | SKIP_INSTALL = YES;
785 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
786 | SWIFT_VERSION = 5.0;
787 | };
788 | name = Release;
789 | };
790 | 52D6D9941BEFF229002C0205 /* Debug */ = {
791 | isa = XCBuildConfiguration;
792 | buildSettings = {
793 | CLANG_ENABLE_MODULES = YES;
794 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
795 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
796 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-iOS-Tests";
797 | PRODUCT_NAME = "$(TARGET_NAME)";
798 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
799 | SWIFT_VERSION = 5.0;
800 | };
801 | name = Debug;
802 | };
803 | 52D6D9951BEFF229002C0205 /* Release */ = {
804 | isa = XCBuildConfiguration;
805 | buildSettings = {
806 | CLANG_ENABLE_MODULES = YES;
807 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
808 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
809 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-iOS-Tests";
810 | PRODUCT_NAME = "$(TARGET_NAME)";
811 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
812 | SWIFT_VERSION = 5.0;
813 | };
814 | name = Release;
815 | };
816 | 52D6D9E81BEFFF6E002C0205 /* Debug */ = {
817 | isa = XCBuildConfiguration;
818 | buildSettings = {
819 | APPLICATION_EXTENSION_API_ONLY = YES;
820 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
821 | DEFINES_MODULE = YES;
822 | DYLIB_COMPATIBILITY_VERSION = 1;
823 | DYLIB_CURRENT_VERSION = 1;
824 | DYLIB_INSTALL_NAME_BASE = "@rpath";
825 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
826 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
827 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
828 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-watchOS";
829 | PRODUCT_NAME = SwiftPublicIP;
830 | SDKROOT = watchos;
831 | SKIP_INSTALL = YES;
832 | SWIFT_VERSION = 5.0;
833 | TARGETED_DEVICE_FAMILY = 4;
834 | WATCHOS_DEPLOYMENT_TARGET = 2.0;
835 | };
836 | name = Debug;
837 | };
838 | 52D6D9E91BEFFF6E002C0205 /* Release */ = {
839 | isa = XCBuildConfiguration;
840 | buildSettings = {
841 | APPLICATION_EXTENSION_API_ONLY = YES;
842 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
843 | DEFINES_MODULE = YES;
844 | DYLIB_COMPATIBILITY_VERSION = 1;
845 | DYLIB_CURRENT_VERSION = 1;
846 | DYLIB_INSTALL_NAME_BASE = "@rpath";
847 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
848 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
849 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
850 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-watchOS";
851 | PRODUCT_NAME = SwiftPublicIP;
852 | SDKROOT = watchos;
853 | SKIP_INSTALL = YES;
854 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
855 | SWIFT_VERSION = 5.0;
856 | TARGETED_DEVICE_FAMILY = 4;
857 | WATCHOS_DEPLOYMENT_TARGET = 2.0;
858 | };
859 | name = Release;
860 | };
861 | 52D6DA021BEFFFBE002C0205 /* Debug */ = {
862 | isa = XCBuildConfiguration;
863 | buildSettings = {
864 | APPLICATION_EXTENSION_API_ONLY = YES;
865 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
866 | DEFINES_MODULE = YES;
867 | DYLIB_COMPATIBILITY_VERSION = 1;
868 | DYLIB_CURRENT_VERSION = 1;
869 | DYLIB_INSTALL_NAME_BASE = "@rpath";
870 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
871 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
872 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
873 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-tvOS";
874 | PRODUCT_NAME = SwiftPublicIP;
875 | SDKROOT = appletvos;
876 | SKIP_INSTALL = YES;
877 | SWIFT_VERSION = 5.0;
878 | TARGETED_DEVICE_FAMILY = 3;
879 | TVOS_DEPLOYMENT_TARGET = 9.0;
880 | };
881 | name = Debug;
882 | };
883 | 52D6DA031BEFFFBE002C0205 /* Release */ = {
884 | isa = XCBuildConfiguration;
885 | buildSettings = {
886 | APPLICATION_EXTENSION_API_ONLY = YES;
887 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
888 | DEFINES_MODULE = YES;
889 | DYLIB_COMPATIBILITY_VERSION = 1;
890 | DYLIB_CURRENT_VERSION = 1;
891 | DYLIB_INSTALL_NAME_BASE = "@rpath";
892 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
893 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
894 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
895 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-tvOS";
896 | PRODUCT_NAME = SwiftPublicIP;
897 | SDKROOT = appletvos;
898 | SKIP_INSTALL = YES;
899 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
900 | SWIFT_VERSION = 5.0;
901 | TARGETED_DEVICE_FAMILY = 3;
902 | TVOS_DEPLOYMENT_TARGET = 9.0;
903 | };
904 | name = Release;
905 | };
906 | 52D6DA211BF000BD002C0205 /* Debug */ = {
907 | isa = XCBuildConfiguration;
908 | buildSettings = {
909 | APPLICATION_EXTENSION_API_ONLY = YES;
910 | CODE_SIGN_IDENTITY = "-";
911 | COMBINE_HIDPI_IMAGES = YES;
912 | DEFINES_MODULE = YES;
913 | DYLIB_COMPATIBILITY_VERSION = 1;
914 | DYLIB_CURRENT_VERSION = 1;
915 | DYLIB_INSTALL_NAME_BASE = "@rpath";
916 | FRAMEWORK_VERSION = A;
917 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
918 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
919 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
920 | MACOSX_DEPLOYMENT_TARGET = 10.10;
921 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-macOS";
922 | PRODUCT_NAME = SwiftPublicIP;
923 | SDKROOT = macosx;
924 | SKIP_INSTALL = YES;
925 | SWIFT_VERSION = 5.0;
926 | };
927 | name = Debug;
928 | };
929 | 52D6DA221BF000BD002C0205 /* Release */ = {
930 | isa = XCBuildConfiguration;
931 | buildSettings = {
932 | APPLICATION_EXTENSION_API_ONLY = YES;
933 | CODE_SIGN_IDENTITY = "-";
934 | COMBINE_HIDPI_IMAGES = YES;
935 | DEFINES_MODULE = YES;
936 | DYLIB_COMPATIBILITY_VERSION = 1;
937 | DYLIB_CURRENT_VERSION = 1;
938 | DYLIB_INSTALL_NAME_BASE = "@rpath";
939 | FRAMEWORK_VERSION = A;
940 | INFOPLIST_FILE = Configs/SwiftPublicIP.plist;
941 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
942 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
943 | MACOSX_DEPLOYMENT_TARGET = 10.10;
944 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-macOS";
945 | PRODUCT_NAME = SwiftPublicIP;
946 | SDKROOT = macosx;
947 | SKIP_INSTALL = YES;
948 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
949 | SWIFT_VERSION = 5.0;
950 | };
951 | name = Release;
952 | };
953 | 7609290322899825004CAE43 /* Debug */ = {
954 | isa = XCBuildConfiguration;
955 | buildSettings = {
956 | CLANG_ANALYZER_NONNULL = YES;
957 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
958 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
959 | CLANG_ENABLE_OBJC_WEAK = YES;
960 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
961 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
962 | CODE_SIGN_IDENTITY = "-";
963 | CODE_SIGN_STYLE = Automatic;
964 | GCC_C_LANGUAGE_STANDARD = gnu11;
965 | MACOSX_DEPLOYMENT_TARGET = 10.14;
966 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
967 | MTL_FAST_MATH = YES;
968 | PRODUCT_NAME = "$(TARGET_NAME)";
969 | SDKROOT = macosx;
970 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
971 | SWIFT_VERSION = 5.0;
972 | };
973 | name = Debug;
974 | };
975 | 7609290422899825004CAE43 /* Release */ = {
976 | isa = XCBuildConfiguration;
977 | buildSettings = {
978 | CLANG_ANALYZER_NONNULL = YES;
979 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
980 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
981 | CLANG_ENABLE_OBJC_WEAK = YES;
982 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
983 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
984 | CODE_SIGN_IDENTITY = "-";
985 | CODE_SIGN_STYLE = Automatic;
986 | GCC_C_LANGUAGE_STANDARD = gnu11;
987 | MACOSX_DEPLOYMENT_TARGET = 10.14;
988 | MTL_FAST_MATH = YES;
989 | PRODUCT_NAME = "$(TARGET_NAME)";
990 | SDKROOT = macosx;
991 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
992 | SWIFT_VERSION = 5.0;
993 | };
994 | name = Release;
995 | };
996 | DD7502831C68FCFC006590AF /* Debug */ = {
997 | isa = XCBuildConfiguration;
998 | buildSettings = {
999 | CODE_SIGN_IDENTITY = "-";
1000 | COMBINE_HIDPI_IMAGES = YES;
1001 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
1002 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
1003 | MACOSX_DEPLOYMENT_TARGET = 10.11;
1004 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-macOS-Tests";
1005 | PRODUCT_NAME = "$(TARGET_NAME)";
1006 | SDKROOT = macosx;
1007 | SWIFT_VERSION = 5.0;
1008 | };
1009 | name = Debug;
1010 | };
1011 | DD7502841C68FCFC006590AF /* Release */ = {
1012 | isa = XCBuildConfiguration;
1013 | buildSettings = {
1014 | CODE_SIGN_IDENTITY = "-";
1015 | COMBINE_HIDPI_IMAGES = YES;
1016 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
1017 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
1018 | MACOSX_DEPLOYMENT_TARGET = 10.11;
1019 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-macOS-Tests";
1020 | PRODUCT_NAME = "$(TARGET_NAME)";
1021 | SDKROOT = macosx;
1022 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
1023 | SWIFT_VERSION = 5.0;
1024 | };
1025 | name = Release;
1026 | };
1027 | DD7502961C690C7A006590AF /* Debug */ = {
1028 | isa = XCBuildConfiguration;
1029 | buildSettings = {
1030 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
1031 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1032 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-tvOS-Tests";
1033 | PRODUCT_NAME = "$(TARGET_NAME)";
1034 | SDKROOT = appletvos;
1035 | SWIFT_VERSION = 5.0;
1036 | TVOS_DEPLOYMENT_TARGET = 9.1;
1037 | };
1038 | name = Debug;
1039 | };
1040 | DD7502971C690C7A006590AF /* Release */ = {
1041 | isa = XCBuildConfiguration;
1042 | buildSettings = {
1043 | INFOPLIST_FILE = Configs/SwiftPublicIPTests.plist;
1044 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
1045 | PRODUCT_BUNDLE_IDENTIFIER = "com.SwiftPublicIP.SwiftPublicIP-tvOS-Tests";
1046 | PRODUCT_NAME = "$(TARGET_NAME)";
1047 | SDKROOT = appletvos;
1048 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
1049 | SWIFT_VERSION = 5.0;
1050 | TVOS_DEPLOYMENT_TARGET = 9.1;
1051 | };
1052 | name = Release;
1053 | };
1054 | /* End XCBuildConfiguration section */
1055 |
1056 | /* Begin XCConfigurationList section */
1057 | 52D6D9761BEFF229002C0205 /* Build configuration list for PBXProject "SwiftPublicIP" */ = {
1058 | isa = XCConfigurationList;
1059 | buildConfigurations = (
1060 | 52D6D98E1BEFF229002C0205 /* Debug */,
1061 | 52D6D98F1BEFF229002C0205 /* Release */,
1062 | );
1063 | defaultConfigurationIsVisible = 0;
1064 | defaultConfigurationName = Release;
1065 | };
1066 | 52D6D9901BEFF229002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-iOS" */ = {
1067 | isa = XCConfigurationList;
1068 | buildConfigurations = (
1069 | 52D6D9911BEFF229002C0205 /* Debug */,
1070 | 52D6D9921BEFF229002C0205 /* Release */,
1071 | );
1072 | defaultConfigurationIsVisible = 0;
1073 | defaultConfigurationName = Release;
1074 | };
1075 | 52D6D9931BEFF229002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-iOS Tests" */ = {
1076 | isa = XCConfigurationList;
1077 | buildConfigurations = (
1078 | 52D6D9941BEFF229002C0205 /* Debug */,
1079 | 52D6D9951BEFF229002C0205 /* Release */,
1080 | );
1081 | defaultConfigurationIsVisible = 0;
1082 | defaultConfigurationName = Release;
1083 | };
1084 | 52D6D9E71BEFFF6E002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-watchOS" */ = {
1085 | isa = XCConfigurationList;
1086 | buildConfigurations = (
1087 | 52D6D9E81BEFFF6E002C0205 /* Debug */,
1088 | 52D6D9E91BEFFF6E002C0205 /* Release */,
1089 | );
1090 | defaultConfigurationIsVisible = 0;
1091 | defaultConfigurationName = Release;
1092 | };
1093 | 52D6DA011BEFFFBE002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-tvOS" */ = {
1094 | isa = XCConfigurationList;
1095 | buildConfigurations = (
1096 | 52D6DA021BEFFFBE002C0205 /* Debug */,
1097 | 52D6DA031BEFFFBE002C0205 /* Release */,
1098 | );
1099 | defaultConfigurationIsVisible = 0;
1100 | defaultConfigurationName = Release;
1101 | };
1102 | 52D6DA201BF000BD002C0205 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-macOS" */ = {
1103 | isa = XCConfigurationList;
1104 | buildConfigurations = (
1105 | 52D6DA211BF000BD002C0205 /* Debug */,
1106 | 52D6DA221BF000BD002C0205 /* Release */,
1107 | );
1108 | defaultConfigurationIsVisible = 0;
1109 | defaultConfigurationName = Release;
1110 | };
1111 | 7609290222899825004CAE43 /* Build configuration list for PBXNativeTarget "SwiftPublicIP-CLI" */ = {
1112 | isa = XCConfigurationList;
1113 | buildConfigurations = (
1114 | 7609290322899825004CAE43 /* Debug */,
1115 | 7609290422899825004CAE43 /* Release */,
1116 | );
1117 | defaultConfigurationIsVisible = 0;
1118 | defaultConfigurationName = Release;
1119 | };
1120 | DD7502821C68FCFC006590AF /* Build configuration list for PBXNativeTarget "SwiftPublicIP-macOS Tests" */ = {
1121 | isa = XCConfigurationList;
1122 | buildConfigurations = (
1123 | DD7502831C68FCFC006590AF /* Debug */,
1124 | DD7502841C68FCFC006590AF /* Release */,
1125 | );
1126 | defaultConfigurationIsVisible = 0;
1127 | defaultConfigurationName = Release;
1128 | };
1129 | DD7502951C690C7A006590AF /* Build configuration list for PBXNativeTarget "SwiftPublicIP-tvOS Tests" */ = {
1130 | isa = XCConfigurationList;
1131 | buildConfigurations = (
1132 | DD7502961C690C7A006590AF /* Debug */,
1133 | DD7502971C690C7A006590AF /* Release */,
1134 | );
1135 | defaultConfigurationIsVisible = 0;
1136 | defaultConfigurationName = Release;
1137 | };
1138 | /* End XCConfigurationList section */
1139 | };
1140 | rootObject = 52D6D9731BEFF229002C0205 /* Project object */;
1141 | }
1142 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/xcshareddata/xcschemes/SwiftPublicIP-iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/xcshareddata/xcschemes/SwiftPublicIP-macOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/xcshareddata/xcschemes/SwiftPublicIP-tvOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
34 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
53 |
54 |
55 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
84 |
90 |
91 |
92 |
93 |
95 |
96 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/SwiftPublicIP.xcodeproj/xcshareddata/xcschemes/SwiftPublicIP-watchOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
35 |
36 |
46 |
47 |
53 |
54 |
55 |
56 |
57 |
58 |
64 |
65 |
71 |
72 |
73 |
74 |
76 |
77 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/Tests/LinuxMain.swift:
--------------------------------------------------------------------------------
1 | import XCTest
2 | @testable import SwiftPublicIPTests
3 |
4 | XCTMain([
5 | testCase(SwiftPublicIPTests.allTests)
6 | ])
7 |
--------------------------------------------------------------------------------
/Tests/SwiftPublicIPTests/SwiftPublicIPTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftPublicIPTests.swift
3 | // SwiftPublicIP
4 | //
5 | // Created by HackingGate on 2019/05/13.
6 | // Copyright © 2019 SwiftPublicIP. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import XCTest
11 | import SwiftPublicIP
12 |
13 | class SwiftPublicIPTests: XCTestCase {
14 | func testPublicIP(_ url: String, _ exp: XCTestExpectation) {
15 | SwiftPublicIP.getPublicIP(url: url) { (string, error) in
16 | if let error = error {
17 | XCTAssertNil(error, error.localizedDescription)
18 | } else if let string = string {
19 | XCTAssert(string.count > 0)
20 | print(string)
21 | }
22 | exp.fulfill()
23 | }
24 | }
25 |
26 | // MARK: Hybrid
27 |
28 | func test_hybrid_icanhazip() {
29 | let exp = expectation(description: "\(#function)\(#line)")
30 | testPublicIP(PublicIPAPIURLs.Hybrid.icanhazip.rawValue, exp)
31 | waitForExpectations(timeout: 40, handler: nil)
32 | }
33 |
34 | func test_hybrid_ipv6test() {
35 | let exp = expectation(description: "\(#function)\(#line)")
36 | testPublicIP(PublicIPAPIURLs.Hybrid.ipv6test.rawValue, exp)
37 | waitForExpectations(timeout: 40, handler: nil)
38 | }
39 |
40 | func test_hybrid_seeip() {
41 | let exp = expectation(description: "\(#function)\(#line)")
42 | testPublicIP(PublicIPAPIURLs.Hybrid.seeip.rawValue, exp)
43 | waitForExpectations(timeout: 40, handler: nil)
44 | }
45 |
46 | func test_hybrid_whatismyipaddress() {
47 | let exp = expectation(description: "\(#function)\(#line)")
48 | testPublicIP(PublicIPAPIURLs.Hybrid.whatismyipaddress.rawValue, exp)
49 | waitForExpectations(timeout: 40, handler: nil)
50 | }
51 |
52 | func test_hybrid_ident() {
53 | let exp = expectation(description: "\(#function)\(#line)")
54 | testPublicIP(PublicIPAPIURLs.Hybrid.ident.rawValue, exp)
55 | waitForExpectations(timeout: 40, handler: nil)
56 | }
57 |
58 | // MARK: IPv4
59 |
60 | func test_ipv4_icanhazip() {
61 | let exp = expectation(description: "\(#function)\(#line)")
62 | testPublicIP(PublicIPAPIURLs.IPv4.icanhazip.rawValue, exp)
63 | waitForExpectations(timeout: 40, handler: nil)
64 | }
65 |
66 | func test_ipv4_ipv6test() {
67 | let exp = expectation(description: "\(#function)\(#line)")
68 | testPublicIP(PublicIPAPIURLs.IPv4.ipv6test.rawValue, exp)
69 | waitForExpectations(timeout: 40, handler: nil)
70 | }
71 |
72 | func test_ipv4_seeip() {
73 | let exp = expectation(description: "\(#function)\(#line)")
74 | testPublicIP(PublicIPAPIURLs.IPv4.seeip.rawValue, exp)
75 | waitForExpectations(timeout: 40, handler: nil)
76 | }
77 |
78 | func test_ipv4_whatismyipaddress() {
79 | let exp = expectation(description: "\(#function)\(#line)")
80 | testPublicIP(PublicIPAPIURLs.IPv4.whatismyipaddress.rawValue, exp)
81 | waitForExpectations(timeout: 40, handler: nil)
82 | }
83 |
84 | func test_ipv4_ident() {
85 | let exp = expectation(description: "\(#function)\(#line)")
86 | testPublicIP(PublicIPAPIURLs.IPv4.ident.rawValue, exp)
87 | waitForExpectations(timeout: 40, handler: nil)
88 | }
89 |
90 | func test_ipv4_ipify() {
91 | let exp = expectation(description: "\(#function)\(#line)")
92 | testPublicIP(PublicIPAPIURLs.IPv4.ipify.rawValue, exp)
93 | waitForExpectations(timeout: 40, handler: nil)
94 | }
95 |
96 | func test_ipv4_amazonaws() {
97 | let exp = expectation(description: "\(#function)\(#line)")
98 | testPublicIP(PublicIPAPIURLs.IPv4.amazonaws.rawValue, exp)
99 | waitForExpectations(timeout: 40, handler: nil)
100 | }
101 |
102 | func test_ipv4_ipecho() {
103 | let exp = expectation(description: "\(#function)\(#line)")
104 | testPublicIP(PublicIPAPIURLs.IPv4.ipecho.rawValue, exp)
105 | waitForExpectations(timeout: 40, handler: nil)
106 | }
107 |
108 | // MARK: IPv6
109 |
110 | func test_ipv6_icanhazip() {
111 | let exp = expectation(description: "\(#function)\(#line)")
112 | testPublicIP(PublicIPAPIURLs.IPv6.icanhazip.rawValue, exp)
113 | waitForExpectations(timeout: 40, handler: nil)
114 | }
115 |
116 | func test_ipv6_ipv6test() {
117 | let exp = expectation(description: "\(#function)\(#line)")
118 | testPublicIP(PublicIPAPIURLs.IPv6.ipv6test.rawValue, exp)
119 | waitForExpectations(timeout: 40, handler: nil)
120 | }
121 |
122 | func test_ipv6_seeip() {
123 | let exp = expectation(description: "\(#function)\(#line)")
124 | testPublicIP(PublicIPAPIURLs.IPv6.seeip.rawValue, exp)
125 | waitForExpectations(timeout: 40, handler: nil)
126 | }
127 |
128 | func test_ipv6_whatismyipaddress() {
129 | let exp = expectation(description: "\(#function)\(#line)")
130 | testPublicIP(PublicIPAPIURLs.IPv6.whatismyipaddress.rawValue, exp)
131 | waitForExpectations(timeout: 40, handler: nil)
132 | }
133 |
134 | func test_ipv6_ident() {
135 | let exp = expectation(description: "\(#function)\(#line)")
136 | testPublicIP(PublicIPAPIURLs.IPv6.ident.rawValue, exp)
137 | waitForExpectations(timeout: 40, handler: nil)
138 | }
139 |
140 | func test_ipv6_ipify() {
141 | let exp = expectation(description: "\(#function)\(#line)")
142 | testPublicIP(PublicIPAPIURLs.IPv6.ipify.rawValue, exp)
143 | waitForExpectations(timeout: 40, handler: nil)
144 | }
145 |
146 | static var allTests = [
147 | // Hybrid
148 | ("test_hybrid_icanhazip", test_hybrid_icanhazip),
149 | ("test_hybrid_ipv6test", test_hybrid_ipv6test),
150 | ("test_hybrid_seeip", test_hybrid_seeip),
151 | ("test_hybrid_whatismyipaddress", test_hybrid_whatismyipaddress),
152 | ("test_hybrid_ident", test_hybrid_ident),
153 |
154 | // IPv4
155 | ("test_ipv4_icanhazip", test_ipv4_icanhazip),
156 | ("test_ipv4_ipv6test", test_ipv4_ipv6test),
157 | ("test_ipv4_seeip", test_ipv4_seeip),
158 | ("test_ipv4_whatismyipaddress", test_ipv4_whatismyipaddress),
159 | ("test_ipv4_ident", test_ipv4_ident),
160 |
161 | ("test_ipv4_ipify", test_ipv4_ipify),
162 |
163 | ("test_ipv4_amazonaws", test_ipv4_amazonaws),
164 | ("test_ipv4_ipecho", test_ipv4_ipecho),
165 |
166 | // IPv6
167 | ("test_ipv6_icanhazip", test_ipv6_icanhazip),
168 | ("test_ipv6_ipv6test", test_ipv6_ipv6test),
169 | ("test_ipv6_seeip", test_ipv6_seeip),
170 | ("test_ipv6_whatismyipaddress", test_ipv6_whatismyipaddress),
171 | ("test_ipv6_ident", test_ipv6_ident),
172 |
173 | ("test_ipv6_ipify", test_ipv6_ipify)
174 | ]
175 | }
176 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------