Merge pull request #3243 from jcanizales/make-headers-property-beta

Make headers a "real" @property
pull/3245/head
Michael Lumish 10 years ago
commit 5269ae4124
  1. 6
      src/objective-c/GRPCClient/GRPCCall.h
  2. 14
      src/objective-c/GRPCClient/GRPCCall.m
  3. 4
      src/objective-c/examples/RemoteTestClient/RemoteTest.podspec
  4. 1
      src/objective-c/examples/SwiftSample/Bridging-Header.h
  5. 1
      src/objective-c/examples/SwiftSample/Podfile
  6. 42
      src/objective-c/examples/SwiftSample/ViewController.swift

@ -169,10 +169,8 @@ extern id const kGRPCTrailersKey;
//
// After the call is started, trying to modify this property is an error.
//
// For convenience, the property is initialized to an empty NSMutableDictionary, and the setter
// accepts (and copies) both mutable and immutable dictionaries.
- (id<GRPCRequestHeaders>)requestHeaders; // nonatomic
- (void)setRequestHeaders:(NSDictionary *)requestHeaders; // nonatomic, copy
// The property is initialized to an empty NSMutableDictionary.
@property(atomic, readonly) id<GRPCRequestHeaders> requestHeaders;
// This dictionary is populated with the HTTP headers received from the server. This happens before
// any response message is received from the server. It has the same structure as the request

@ -130,20 +130,6 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
return self;
}
#pragma mark Metadata
- (id<GRPCRequestHeaders>)requestHeaders {
return _requestHeaders;
}
- (void)setRequestHeaders:(NSDictionary *)requestHeaders {
GRPCRequestHeaders *newHeaders = [[GRPCRequestHeaders alloc] initWithCall:self];
for (id key in requestHeaders) {
newHeaders[key] = requestHeaders[key];
}
_requestHeaders = newHeaders;
}
#pragma mark Finish
- (void)finishWithError:(NSError *)errorOrNil {

@ -15,14 +15,14 @@ Pod::Spec.new do |s|
ms.source_files = "*.pbobjc.{h,m}"
ms.header_mappings_dir = "."
ms.requires_arc = false
ms.dependency "Protobuf", "~> 3.0.0-alpha-3"
ms.dependency "Protobuf", "~> 3.0.0-alpha-4"
end
s.subspec "Services" do |ss|
ss.source_files = "*.pbrpc.{h,m}"
ss.header_mappings_dir = "."
ss.requires_arc = true
ss.dependency "gRPC", "~> 0.5"
ss.dependency "gRPC", "~> 0.7"
ss.dependency "#{s.name}/Messages"
end
end

@ -39,6 +39,7 @@
#import <RxLibrary/GRXWriter+Immediate.h>
#import <GRPCClient/GRPCCall.h>
#import <ProtoRPC/ProtoMethod.h>
#import <ProtoRPC/ProtoRPC.h>
#import <RemoteTest/Test.pbrpc.h>
#endif

@ -1,6 +1,7 @@
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'Protobuf', :path => "../../../../third_party/protobuf"
pod 'gRPC', :path => "../../../.."
pod 'RemoteTest', :path => "../RemoteTestClient"

@ -45,17 +45,37 @@ class ViewController: UIViewController {
request.fillUsername = true
request.fillOauthScope = true
// Example gRPC call using a generated proto client library:
let service = RMTTestService(host: RemoteHost)
service.unaryCallWithRequest(request) { (response: RMTSimpleResponse?, error: NSError?) in
service.unaryCallWithRequest(request) { response, error in
if let response = response {
NSLog("1. Finished successfully with response:\n\(response)")
} else {
NSLog("1. Finished with error: \(error!)")
}
}
// Same but manipulating headers:
var RPC : ProtoRPC! // Needed to convince Swift to capture by reference (__block)
RPC = service.RPCToUnaryCallWithRequest(request) { response, error in
if let response = response {
NSLog("Finished successfully with response:\n\(response)")
NSLog("2. Finished successfully with response:\n\(response)")
} else {
NSLog("Finished with error: \(error!)")
NSLog("2. Finished with error: \(error!)")
}
NSLog("2. Response headers: \(RPC.responseHeaders)")
NSLog("2. Response trailers: \(RPC.responseTrailers)")
}
RPC.requestHeaders["My-Header"] = "My value"
RPC.start()
// Same example call using the generic gRPC client library:
let method = ProtoMethod(package: "grpc.testing", service: "TestService", method: "UnaryCall")
@ -64,14 +84,16 @@ class ViewController: UIViewController {
let call = GRPCCall(host: RemoteHost, path: method.HTTPPath, requestsWriter: requestsWriter)
let responsesWriteable = GRXWriteable { (value: AnyObject?, error: NSError?) in
if let value = value as? NSData {
NSLog("Received response:\n\(RMTSimpleResponse(data: value, error: nil))")
call.requestHeaders["My-Header"] = "My value"
call.startWithWriteable(GRXWriteable { response, error in
if let response = response as? NSData {
NSLog("3. Received response:\n\(RMTSimpleResponse(data: response, error: nil))")
} else {
NSLog("Finished with error: \(error!)")
NSLog("3. Finished with error: \(error!)")
}
}
call.startWithWriteable(responsesWriteable)
NSLog("3. Response headers: \(call.responseHeaders)")
NSLog("3. Response trailers: \(call.responseTrailers)")
})
}
}

Loading…
Cancel
Save