Sfoglia il codice sorgente

Cleanup of Datastore sample

Tim Burks 9 anni fa
parent
commit
a2d503cdb9

+ 7 - 2
Examples/Datastore/Datastore/DatastoreViewController.swift

@@ -40,7 +40,6 @@ class DatastoreViewController : NSViewController, NSTextFieldDelegate {
   @IBOutlet weak var messageField: NSTextField!
   @IBOutlet weak var outputField: NSTextField!
 
-
   private var fileDescriptorSet : FileDescriptorSet
   private var client: Client?
   private var call: Call?
@@ -96,7 +95,13 @@ class DatastoreViewController : NSViewController, NSTextFieldDelegate {
     if let requestMessage = self.fileDescriptorSet.createMessage("RunQueryRequest") {
       requestMessage.addField("project_id", value:"hello-86")
       let gqlQuery = self.fileDescriptorSet.createMessage("GqlQuery")
-      gqlQuery?.addField("query_string", value:"select * from Person")
+
+      var query = self.messageField.stringValue
+      if query == "" {
+        query = "select * from Person"
+      }
+
+      gqlQuery?.addField("query_string", value:query)
       requestMessage.addField("gql_query", value:gqlQuery)
       let requestMessageData = requestMessage.data()
 

+ 14 - 25
Examples/Datastore/Datastore/OAuthClient.swift

@@ -32,22 +32,24 @@
  */
 import Foundation
 
-
 func escape(_ string : String) -> String {
-
-  let dashes = CharacterSet(charactersIn: "-._")
-  let acceptable = dashes.union(.alphanumerics)
-  return string.addingPercentEncoding(withAllowedCharacters: acceptable)!
+  let dotsAndDashes = CharacterSet(charactersIn: "-._")
+  let allowedCharacters = dotsAndDashes.union(.alphanumerics)
+  if let escapedString = string.addingPercentEncoding(withAllowedCharacters: allowedCharacters) {
+    return escapedString
+  } else {
+    return string
+  }
 }
 
 class OAuthClient {
-  var clientID : String = ""
-  var clientSecret : String = ""
-  var redirectURIs : [String] = []
-  var authURI : String = ""
-  var tokenURI : String = ""
+  private var clientID : String = ""
+  private var clientSecret : String = ""
+  private var redirectURIs : [String] = []
+  private var authURI : String = ""
+  private var tokenURI : String = ""
 
-  var token : String? = nil
+  public var token : String? = nil
 
   init () {
     clientID = "885917370891-n3r74v6miibn2969estdofr68ggqa1sn.apps.googleusercontent.com"
@@ -60,38 +62,28 @@ class OAuthClient {
   let scope = "https://www.googleapis.com/auth/datastore"
 
   func authCodeURL(state : String) -> URL? {
-
     var path = authURI
     path = path + "?response_type=" + "code"
     path = path + "&client_id=" + clientID
     path = path + "&redirect_uri=" + escape(redirectURIs[0])
     path = path + "&scope=" + escape(scope)
     path = path + "&state=" + state
-
-    print("PATH " + path)
-
     return URL(string:path)
   }
 
   func exchangeCode(code: String) {
     let path = tokenURI
-    var body = ""
-    body = body + "client_id=" + clientID
+    var body = "client_id=" + clientID
     body = body + "&client_secret=" + clientSecret
     body = body + "&code=" + escape(code)
     body = body + "&grant_type=" + "authorization_code"
     body = body + "&redirect_uri=" + escape(redirectURIs[0])
 
-    print("path: \(path)")
-    print("body: \(body)")
-
     let url = URL(string:path)!
     var request = URLRequest(url:url)
     request.httpMethod = "POST"
     request.httpBody = body.data(using:.utf8)
-    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
 
-    print("headers: \(request.allHTTPHeaderFields)")
     let task = URLSession.shared.dataTask(with:request) { (data, response, error) in
       var json: [String:Any]!
       do {
@@ -99,10 +91,7 @@ class OAuthClient {
       } catch {
         print(error)
       }
-      print(json)
       self.token = json["access_token"] as! String?
-      print(self.token)
-
     }
     task.resume()
   }

+ 10 - 20
Examples/Datastore/Datastore/WebViewWindowController.swift

@@ -36,7 +36,6 @@ import WebKit
 class WebViewWindowController : NSWindowController {
   @IBOutlet var webView : WebView!
   var url : URL?
-
   var completion: ((String) -> Void)?
 
   override func awakeFromNib() {
@@ -46,40 +45,31 @@ class WebViewWindowController : NSWindowController {
       self.webView.mainFrame.load(URLRequest(url:url))
     }
   }
-
 }
 
 extension WebViewWindowController : WebResourceLoadDelegate {
-
   func webView(_ sender: WebView!,
                resource identifier: Any!,
                willSend request: URLRequest!,
                redirectResponse: URLResponse!,
                from dataSource: WebDataSource!) -> URLRequest! {
-
-    print(request)
-
-    if (request.url!.absoluteString.hasPrefix("http://localhost")) {
-
-      print("incoming \(request.url!.absoluteString)")
-      let keyVals = request.url!.getKeyVals()!
-      let code = keyVals["code"]!
-
-      print("Got it! \(code)")
-
-      if let completion = completion {
-        completion(code)
+    if let url = request.url {
+      if (url.absoluteString.hasPrefix("http://localhost")) {
+        if let parameters = url.getKeyValues(),
+          let code = parameters["code"],
+          let completion = completion {
+          completion(code)
+        }
+        window!.close()
+        return nil
       }
-      window!.close()
-      return nil
     }
-
     return request
   }
 }
 
 extension URL {
-  func getKeyVals() -> Dictionary<String, String>? {
+  func getKeyValues() -> Dictionary<String, String>? {
     var results = [String:String]()
     let keyValues = self.query?.components(separatedBy: "&")
     if keyValues!.count > 0 {