Skip to content

Commit

Permalink
Refactored code due to changes in our version of SwiftyJSON.
Browse files Browse the repository at this point in the history
  • Loading branch information
rolivieri committed Apr 7, 2016
1 parent f216b53 commit aad3170
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 34 deletions.
72 changes: 39 additions & 33 deletions Sources/CFEnvironment/AppEnv.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,41 +181,47 @@ public struct AppEnv {
return nil
}

for (key, substitution) in substitutions {
switch key {
case "user":
parsedURL.user = substitution.string
case "password":
parsedURL.password = substitution.string
case "port":
parsedURL.port = substitution.numberValue
case "host":
parsedURL.host = substitution.string
case "scheme":
parsedURL.scheme = substitution.string
case "query":
parsedURL.query = substitution.string
case "queryItems":
let queryItems = substitution.arrayValue
var urlQueryItems: [NSURLQueryItem] = []
for queryItem in queryItems {
if let name = queryItem["name"].string {
let urlQueryItem = NSURLQueryItem(name: name, value: queryItem["value"].string)
urlQueryItems.append(urlQueryItem)
}
}
if urlQueryItems.count > 0 {
parsedURL.queryItems = urlQueryItems
}
// These are being ignored
//case "fragment":
// parsedURL.fragment = substitution.string
//case "path":
// parsedURL.path = substitution.string
default:
print("The replacements '\(key)' value was ignored.")
// Set replacements in a predefined order
// Before, we were just iterating over the keys in the JSON object,
// but unfortunately the order of the keys returned were different on
// OS X and Linux, which resulted in different outcomes.
if let user = substitutions["user"].string {
parsedURL.user = user
}
if let password = substitutions["password"].string {
parsedURL.password = password
}
if let port = substitutions["port"].number {
parsedURL.port = port
}
if let host = substitutions["host"].string {
parsedURL.host = host
}
if let scheme = substitutions["scheme"].string {
parsedURL.scheme = scheme
}
if let query = substitutions["query"].string {
parsedURL.query = query
}
if let queryItems = substitutions["queryItems"].array {
var urlQueryItems: [NSURLQueryItem] = []
for queryItem in queryItems {
if let name = queryItem["name"].string {
let urlQueryItem = NSURLQueryItem(name: name, value: queryItem["value"].string)
urlQueryItems.append(urlQueryItem)
}
}
if urlQueryItems.count > 0 {
parsedURL.queryItems = urlQueryItems
}
}
// These are being ignored at the moment
// if let fragment = substitutions["fragment"].string {
// parsedURL.fragment = fragment
// }
// if let path = substitutions["path"].string {
// parsedURL.path = path
// }
return parsedURL.string
}

Expand Down
2 changes: 1 addition & 1 deletion Tests/CFEnvironment/MainTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ class MainTests : XCTestCase {

// Case #5
replacements = "{ \"user\": \"username01\", \"password\": \"passw0rd\", \"port\": 9080, \"host\": \"bluemix.ibm.com\", \"scheme\": \"https\", \"query\": \"name0=value0&name1=value1\", \"queryItems\": [ { \"name\": \"name2\", \"value\": \"value2\" }, { \"name\": \"name3\", \"value\": \"value3\" } ] }"
try verifyServiceURLWithOptions(name, replacements: replacements, expectedServiceURL: "https://username01:passw0rd@bluemix.ibm.com:9080?name0=value0&name1=value1")
try verifyServiceURLWithOptions(name, replacements: replacements, expectedServiceURL: "https://username01:passw0rd@bluemix.ibm.com:9080?name2=value2&name3=value3")
} catch let error as NSError {
print("Error domain: \(error.domain)")
print("Error code: \(error.code)")
Expand Down

0 comments on commit aad3170

Please sign in to comment.