1 // Copyright 2020 Google LLC 2 // 3 // Redistribution and use in source and binary forms, with or without 4 // modification, are permitted provided that the following conditions are 5 // met: 6 // 7 // * Redistributions of source code must retain the above copyright 8 // notice, this list of conditions and the following disclaimer. 9 // * Redistributions in binary form must reproduce the above 10 // copyright notice, this list of conditions and the following disclaimer 11 // in the documentation and/or other materials provided with the 12 // distribution. 13 // * Neither the name of Google LLC nor the names of its 14 // contributors may be used to endorse or promote products derived from 15 // this software without specific prior written permission. 16 // 17 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 29 #import <Foundation/Foundation.h> 30 31 NS_ASSUME_NONNULL_BEGIN 32 33 /** 34 Represents a response from a sym-upload-v2 server to a createUploadURLOnServer 35 call. 36 */ 37 @interface UploadURLResponse : NSObject { 38 @protected 39 NSString* uploadURL_; 40 NSString* uploadKey_; 41 } 42 43 - (id)initWithUploadURL:(NSString*)uploadURL withUploadKey:(NSString*)uploadKey; 44 45 - (NSString*)uploadURL; 46 - (NSString*)uploadKey; 47 @end 48 49 /** 50 Possible return statuses from a sym-upload-v2 server to a 51 completeUploadOnServer call. 52 */ 53 typedef NS_ENUM(NSInteger, CompleteUploadResult) { 54 CompleteUploadResultOk, 55 CompleteUploadResultDuplicateData, 56 CompleteUploadResultError 57 }; 58 59 /** 60 Possible return statuses from a sym-upload-v2 server to a 61 checkSymbolStatusOnServer call. 62 */ 63 typedef NS_ENUM(NSInteger, SymbolStatus) { 64 SymbolStatusFound, 65 SymbolStatusMissing, 66 SymbolStatusUnknown 67 }; 68 69 /** 70 Interface to help a client interact with a sym-upload-v2 server, over HTTP. 71 For details of the API and protocol, see :/docs/sym_upload_v2_protocol.md. 72 */ 73 @interface SymbolCollectorClient : NSObject 74 ; 75 76 /** 77 Calls the /v1/symbols/{debug_file}/{debug_id}:checkStatus API on the server. 78 */ 79 + (SymbolStatus)checkSymbolStatusOnServer:(NSString*)APIURL 80 withAPIKey:(NSString*)APIKey 81 withDebugFile:(NSString*)debugFile 82 withDebugID:(NSString*)debugID; 83 84 /** 85 Calls the /v1/uploads:create API on the server. 86 */ 87 + (UploadURLResponse*)createUploadURLOnServer:(NSString*)APIURL 88 withAPIKey:(NSString*)APIKey; 89 90 /** 91 Calls the /v1/uploads/{key}:complete API on the server. 92 */ 93 + (CompleteUploadResult)completeUploadOnServer:(NSString*)APIURL 94 withAPIKey:(NSString*)APIKey 95 withUploadKey:(NSString*)uploadKey 96 withDebugFile:(NSString*)debugFile 97 withDebugID:(NSString*)debugID 98 withType:(NSString*)type 99 withProductName:(NSString*)productName; 100 101 @end 102 103 NS_ASSUME_NONNULL_END 104