1 /* 2 * 3 * Copyright 2015 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 import UIKit 20 21 import RemoteTest 22 23 class ViewController: UIViewController { 24 viewDidLoadnull25 override func viewDidLoad() { 26 super.viewDidLoad() 27 28 let RemoteHost = "grpc-test.sandbox.googleapis.com" 29 30 let request = RMTSimpleRequest() 31 request.responseSize = 10 32 request.fillUsername = true 33 request.fillOauthScope = true 34 35 36 // Example gRPC call using a generated proto client library: 37 38 let service = RMTTestService(host: RemoteHost) 39 service.unaryCall(with: request) { response, error in 40 if let response = response { 41 NSLog("1. Finished successfully with response:\n\(response)") 42 } else { 43 NSLog("1. Finished with error: \(error!)") 44 } 45 } 46 47 48 // Same but manipulating headers: 49 50 var RPC : GRPCProtoCall! // Needed to convince Swift to capture by reference (__block) 51 RPC = service.rpcToUnaryCall(with: request) { response, error in 52 if let response = response { 53 NSLog("2. Finished successfully with response:\n\(response)") 54 } else { 55 NSLog("2. Finished with error: \(error!)") 56 } 57 NSLog("2. Response headers: \(RPC.responseHeaders)") 58 NSLog("2. Response trailers: \(RPC.responseTrailers)") 59 } 60 61 // TODO(jcanizales): Revert to using subscript syntax once XCode 8 is released. 62 RPC.requestHeaders["My-Header"] = "My value" 63 64 RPC.start() 65 66 67 // Same example call using the generic gRPC client library: 68 69 let method = GRPCProtoMethod(package: "grpc.testing", service: "TestService", method: "UnaryCall")! 70 71 let requestsWriter = GRXWriter(value: request.data()) 72 73 let call = GRPCCall(host: RemoteHost, path: method.httpPath, requestsWriter: requestsWriter)! 74 75 call.requestHeaders["My-Header"] = "My value" 76 77 call.start(with: GRXWriteable { response, error in 78 if let response = response as? Data { 79 NSLog("3. Received response:\n\(try! RMTSimpleResponse(data: response))") 80 } else { 81 NSLog("3. Finished with error: \(error!)") 82 } 83 NSLog("3. Response headers: \(call.responseHeaders)") 84 NSLog("3. Response trailers: \(call.responseTrailers)") 85 }) 86 } 87 } 88