├── .gitignore ├── README.md ├── androidmarket.py ├── examples.py ├── market.proto └── market_proto.py /.gitignore: -------------------------------------------------------------------------------- 1 | # ignore precompiled python files 2 | *.pyc 3 | 4 | # ignore swap files and leftover changes 5 | *.swp 6 | *.swo 7 | *.~ 8 | 9 | # these files are downloaded by examples.py 10 | screenshot.png 11 | icon.png 12 | 13 | # dunno what this is 14 | examples.private.py 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python Android Market Library 2 | 3 | This is a Python port of the [Android Market API Java Project](http://code.google.com/p/android-market-api/) 4 | 5 | 6 | ## Requirements 7 | * [Python 2.5+](http://www.python.org) 8 | * [Protocol Buffers](http://code.google.com/p/protobuf/) 9 | 10 | ## Usage 11 | 12 | Begin by starting a new session and entering your google credentials. 13 | 14 | session = MarketSession() 15 | session.login("user@gmail.com", "password") 16 | 17 | Search for "bankdroid" on the market and print the first result 18 | 19 | results = session.searchApp("bankdroid") 20 | app = results[0] 21 | pprint(app) 22 | 23 | which prints: 24 | 25 | {'apptype': 1L, 26 | 'creator': u'Nullbyte', 27 | 'creatorid': u'Nullbyte', 28 | 'id': u'-4924482311466714951', 29 | 'packagename': u'com.liato.bankdroid', 30 | 'rating': u'4.526643598615917', 31 | 'ratingscount': 1445L, 32 | 'title': u'Bankdroid', 33 | 'version': u'1.6.3', 34 | 'versioncode': 102L, 35 | 'extendedinfo': {'category': u'Finance', 36 | 'contactemail': u'android@nullbyte.eu', 37 | 'contactwebsite': u'http://github.com/liato/android-bankdroid', 38 | 'downloadscount': 0L, 39 | 'downloadscounttext': u'10,000-50,000', 40 | 'installsize': 1323486L, 41 | 'packagename': u'com.liato.bankdroid', 42 | 'screenshotscount': 2L 43 | ... 44 | } 45 | 46 | Print the last two comments for the app 47 | 48 | results = session.getComments(app["id"]) 49 | pprint(results[:2]) 50 | 51 | and you get: 52 | 53 | [{'authorid': u'02028671193556683049', 54 | 'authorname': u'Vincent', 55 | 'creationtime': 1299254796868L, 56 | 'rating': 5L, 57 | 'text': u'Changed my (everyday) life!'}, 58 | {'authorid': u'15970848302407799024', 59 | 'authorname': u'primetomas', 60 | 'creationtime': 1299101108485L, 61 | 'rating': 5L, 62 | 'text': u'This is awesome. Keep up the good work!'}] 63 | 64 | Download and save the first screenshot to disk: 65 | 66 | data = session.getImage(app["id"]) 67 | f = open("screenshot.png", "wb") 68 | f.write(data) 69 | f.close() 70 | 71 | Download and save the app icon to disk: 72 | 73 | data = session.getImage(app["id"], imagetype=market_proto.GetImageRequest.ICON) 74 | f = open("icon.png", "wb") 75 | f.write(data) 76 | f.close() 77 | 78 | Get all the categories and subcategories: 79 | 80 | results = session.getCategories() 81 | pprint(results) 82 | 83 | Prints: 84 | 85 | [{'apptype': 1L, 86 | 'subcategories': [{'apptype': 1L, 87 | 'subtitle': u'Pandora Radio, Google Maps, Gmail', 88 | 'title': u'All applications'}, 89 | {'apptype': 1L, 90 | 'categoryid': u'BOOKS_AND_REFERENCE', 91 | 'subtitle': u'Google Sky Map, Dictionary.com, Bible', 92 | 'title': u'Books & Reference'}, 93 | ...], 94 | 'title': u'APPLICATION'}, 95 | ... 96 | ] 97 | 98 | 99 | Check out [examples.py](blob/master/examples.py) for working examples. 100 | 101 | ## License 102 | 103 | MIT -------------------------------------------------------------------------------- /androidmarket.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import gzip 3 | import pprint 4 | import StringIO 5 | import urllib 6 | import urllib2 7 | 8 | from google.protobuf import descriptor 9 | from google.protobuf.internal.containers import RepeatedCompositeFieldContainer 10 | 11 | import market_proto 12 | 13 | class LoginError(Exception): 14 | def __init__(self, value): 15 | self.value = value 16 | def __str__(self): 17 | return repr(self.value) 18 | 19 | class RequestError(Exception): 20 | def __init__(self, value): 21 | self.value = value 22 | def __str__(self): 23 | return repr(self.value) 24 | 25 | class MarketSession(object): 26 | SERVICE = "android"; 27 | URL_LOGIN = "https://www.google.com/accounts/ClientLogin" 28 | ACCOUNT_TYPE_GOOGLE = "GOOGLE" 29 | ACCOUNT_TYPE_HOSTED = "HOSTED" 30 | ACCOUNT_TYPE_HOSTED_OR_GOOGLE = "HOSTED_OR_GOOGLE" 31 | PROTOCOL_VERSION = 2 32 | authSubToken = None 33 | context = None 34 | 35 | def __init__(self): 36 | self.context = market_proto.RequestContext() 37 | self.context.isSecure = 0 38 | self.context.version = 1002012 39 | self.context.androidId = "0123456789123456" # change me :( 40 | self.context.userLanguage = "en" 41 | self.context.userCountry = "US" 42 | self.context.deviceAndSdkVersion = "crespo:10" 43 | self.setOperatorTMobile() 44 | 45 | def _toDict(self, protoObj): 46 | iterable = False 47 | if isinstance(protoObj, RepeatedCompositeFieldContainer): 48 | iterable = True 49 | else: 50 | protoObj = [protoObj] 51 | retlist = [] 52 | for po in protoObj: 53 | msg = dict() 54 | for fielddesc, value in po.ListFields(): 55 | #print value, type(value), getattr(value, '__iter__', False) 56 | if fielddesc.type == descriptor.FieldDescriptor.TYPE_GROUP or isinstance(value, RepeatedCompositeFieldContainer): 57 | msg[fielddesc.name.lower()] = self._toDict(value) 58 | else: 59 | msg[fielddesc.name.lower()] = value 60 | retlist.append(msg) 61 | if not iterable: 62 | if len(retlist) > 0: 63 | return retlist[0] 64 | else: 65 | return None 66 | return retlist 67 | 68 | def setOperatorSimple(self, alpha, numeric): 69 | self.setOperator(alpha, alpha, numeric, numeric); 70 | 71 | def setOperatorTMobile(self): 72 | self.setOperatorSimple("T-Mobile", "310260") 73 | 74 | def setOperatorSFR(self): 75 | self.setOperatorSimple("F SFR", "20810") 76 | 77 | def setOperatorO2(self): 78 | self.setOperatorSimple("o2 - de", "26207") 79 | 80 | def setOperatorSimyo(self): 81 | self.setOperator("E-Plus", "simyo", "26203", "26203") 82 | 83 | def setOperatorSunrise(self): 84 | self.setOperatorSimple("sunrise", "22802") 85 | 86 | def setOperator(self, alpha, simAlpha, numeric, simNumeric): 87 | self.context.operatorAlpha = alpha 88 | self.context.simOperatorAlpha = simAlpha 89 | self.context.operatorNumeric = numeric 90 | self.context.simOperatorNumeric = simNumeric 91 | 92 | def setAuthSubToken(self, authSubToken): 93 | self.context.authSubToken = authSubToken 94 | self.authSubToken = authSubToken 95 | 96 | def login(self, email, password, accountType = ACCOUNT_TYPE_HOSTED_OR_GOOGLE): 97 | params = {"Email": email, "Passwd": password, "service": self.SERVICE, 98 | "accountType": accountType} 99 | try: 100 | data = urllib2.urlopen(self.URL_LOGIN, urllib.urlencode(params)).read() 101 | data = data.split() 102 | params = {} 103 | for d in data: 104 | k, v = d.split("=") 105 | params[k.strip().lower()] = v.strip() 106 | if "auth" in params: 107 | self.setAuthSubToken(params["auth"]) 108 | else: 109 | raise LoginError("Auth token not found.") 110 | except urllib2.HTTPError, e: 111 | if e.code == 403: 112 | data = e.fp.read().split() 113 | params = {} 114 | for d in data: 115 | k, v = d.split("=", 1) 116 | params[k.strip().lower()] = v.strip() 117 | if "error" in params: 118 | raise LoginError(params["error"]) 119 | else: 120 | raise LoginError("Login failed.") 121 | else: 122 | raise e 123 | 124 | def execute(self, request): 125 | request.context.CopyFrom(self.context) 126 | try: 127 | headers = {"Cookie": "ANDROID="+self.authSubToken, 128 | "User-Agent": "Android-Market/2 (sapphire PLAT-RC33); gzip", 129 | "Content-Type": "application/x-www-form-urlencoded", 130 | "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7"} 131 | data = request.SerializeToString() 132 | data = "version=%d&request=%s" % (self.PROTOCOL_VERSION, base64.urlsafe_b64encode(data)) 133 | 134 | if self.context.isSecure == 1 or self.context.isSecure == True: 135 | http = "https://" 136 | else: 137 | http = "http://" 138 | 139 | request = urllib2.Request(http + "android.clients.google.com/market/api/ApiRequest", 140 | data, headers) 141 | data = urllib2.urlopen(request).read() 142 | data = StringIO.StringIO(data) 143 | gzipper = gzip.GzipFile(fileobj=data) 144 | data = gzipper.read() 145 | response = market_proto.Response() 146 | response.ParseFromString(data) 147 | return response 148 | except Exception, e: 149 | raise RequestError(e) 150 | 151 | def searchApp(self, query, startIndex = 0, entriesCount = 10, extendedInfo = True): 152 | appsreq = market_proto.AppsRequest() 153 | appsreq.query = query 154 | appsreq.startIndex = startIndex 155 | appsreq.entriesCount = entriesCount 156 | appsreq.withExtendedInfo = extendedInfo 157 | request = market_proto.Request() 158 | request.requestgroup.add(appsRequest = appsreq) 159 | response = self.execute(request) 160 | retlist = [] 161 | for rg in response.responsegroup: 162 | if rg.HasField("appsResponse"): 163 | for app in rg.appsResponse.app: 164 | retlist.append(self._toDict(app)) 165 | return retlist 166 | 167 | def getComments(self, appid, startIndex = 0, entriesCount = 10): 168 | req = market_proto.CommentsRequest() 169 | req.appId = appid 170 | req.startIndex = startIndex 171 | req.entriesCount = entriesCount 172 | request = market_proto.Request() 173 | request.requestgroup.add(commentsRequest = req) 174 | response = self.execute(request) 175 | retlist = [] 176 | for rg in response.responsegroup: 177 | if rg.HasField("commentsResponse"): 178 | for comment in rg.commentsResponse.comments: 179 | retlist.append(self._toDict(comment)) 180 | return retlist 181 | 182 | def getImage(self, appid, imageid = "0", imagetype = market_proto.GetImageRequest.SCREENSHOT): 183 | req = market_proto.GetImageRequest() 184 | req.appId = appid 185 | req.imageId = imageid 186 | req.imageUsage = imagetype 187 | request = market_proto.Request() 188 | request.requestgroup.add(imageRequest = req) 189 | response = self.execute(request) 190 | for rg in response.responsegroup: 191 | if rg.HasField("imageResponse"): 192 | return rg.imageResponse.imageData 193 | 194 | def getCategories(self): 195 | req = market_proto.CategoriesRequest() 196 | request = market_proto.Request() 197 | request.requestgroup.add(categoriesRequest = req) 198 | response = self.execute(request) 199 | retlist = [] 200 | for rg in response.responsegroup: 201 | if rg.HasField("categoriesResponse"): 202 | for cat in rg.categoriesResponse.categories: 203 | retlist.append(self._toDict(cat)) 204 | return retlist 205 | 206 | def getSubCategories(self, apptype): 207 | req = market_proto.SubCategoriesRequest() 208 | req.appType = apptype 209 | request = market_proto.Request() 210 | request.requestgroup.add(subCategoriesRequest = req) 211 | response = self.execute(request) 212 | retlist = [] 213 | for rg in response.responsegroup: 214 | if rg.HasField("subCategoriesResponse"): 215 | for cat in rg.subCategoriesResponse.category: 216 | retlist.append(self._toDict(cat)) 217 | return retlist 218 | 219 | if __name__ == "__main__": 220 | print "No command line interface available, yet." 221 | -------------------------------------------------------------------------------- /examples.py: -------------------------------------------------------------------------------- 1 | from pprint import pprint 2 | 3 | import market_proto 4 | from androidmarket import MarketSession 5 | 6 | if __name__ == "__main__": 7 | # Start a new session and login 8 | session = MarketSession() 9 | session.login("user@gmail.com", "password") 10 | 11 | # Search for "bankdroid" on the market and print the first result 12 | results = session.searchApp("bankdroid") 13 | if len(results) == 0: 14 | print "No results found" 15 | exit() 16 | 17 | app = results[0] 18 | pprint(app) 19 | 20 | # Print the last two comments for the app 21 | results = session.getComments(app["id"]) 22 | pprint(results[:2]) 23 | 24 | # Download and save the first screenshot 25 | data = session.getImage(app["id"]) 26 | f = open("screenshot.png", "wb") 27 | f.write(data) 28 | f.close() 29 | 30 | # Download and save the app icon 31 | data = session.getImage(app["id"], imagetype=market_proto.GetImageRequest.ICON) 32 | f = open("icon.png", "wb") 33 | f.write(data) 34 | f.close() 35 | 36 | # Get all the categories and subcategories 37 | results = session.getCategories() 38 | pprint(results) 39 | -------------------------------------------------------------------------------- /market.proto: -------------------------------------------------------------------------------- 1 | option java_package = "com.gc.android.market.api.model"; 2 | 3 | enum AppType { 4 | NONE = 0; 5 | APPLICATION = 1; 6 | RINGTONE = 2; 7 | WALLPAPER = 3; 8 | GAME = 4; 9 | } 10 | 11 | message AppsRequest { 12 | optional AppType appType = 1; 13 | optional string query = 2; 14 | optional string categoryId = 3; 15 | optional string appId = 4; 16 | optional bool withExtendedInfo = 6; 17 | 18 | enum OrderType { 19 | NONE = 0; 20 | POPULAR = 1; 21 | NEWEST = 2; 22 | FEATURED = 3; 23 | } 24 | 25 | enum ViewType { 26 | ALL = 0; 27 | FREE = 1; 28 | PAID = 2; 29 | } 30 | 31 | optional OrderType orderType = 7 [default = NONE]; 32 | optional uint64 startIndex = 8; 33 | optional int32 entriesCount = 9; 34 | optional ViewType viewType = 10 [default = ALL]; 35 | } 36 | 37 | 38 | message AppsResponse { 39 | repeated App app = 1; 40 | optional int32 entriesCount = 2; 41 | } 42 | 43 | message Category { 44 | optional int32 appType = 2; 45 | optional string title = 4; 46 | optional string categoryId = 3; 47 | optional string subtitle = 5; 48 | repeated Category subCategories = 8; 49 | } 50 | 51 | message CommentsRequest { 52 | optional string appId = 1; 53 | optional int32 startIndex = 2; 54 | optional int32 entriesCount = 3; 55 | } 56 | 57 | message CommentsResponse { 58 | repeated Comment comments = 1; 59 | optional int32 entriesCount = 2; 60 | } 61 | 62 | message App { 63 | optional string id = 1; 64 | optional string title = 2; 65 | 66 | optional AppType appType = 3 [default = NONE]; 67 | 68 | optional string creator = 4; 69 | optional string version = 5; 70 | optional string price = 6; 71 | optional string rating = 7; 72 | optional int32 ratingsCount = 8; 73 | 74 | optional group ExtendedInfo = 12 { 75 | optional string description = 13; 76 | optional int32 downloadsCount = 14; 77 | repeated string permissionId = 15; 78 | optional int32 installSize = 16; 79 | optional string packageName = 17; 80 | optional string category = 18; 81 | optional string contactEmail = 20; 82 | optional string downloadsCountText = 23; 83 | optional string contactPhone = 26; 84 | optional string contactWebsite = 27; 85 | 86 | // V2 87 | optional int32 screenshotsCount = 30; 88 | optional string promoText = 31; 89 | 90 | // V3 91 | optional string recentChanges = 38; 92 | optional string promotionalVideo = 43; 93 | } 94 | 95 | optional string creatorId = 22; 96 | optional string packageName = 24; 97 | optional int32 versionCode = 25; 98 | //V2 99 | optional string priceCurrency = 32; 100 | optional int32 priceMicros = 33; 101 | } 102 | 103 | message Comment { 104 | optional string text = 1; 105 | optional int32 rating = 2; 106 | optional string authorName = 3; 107 | optional uint64 creationTime = 4; 108 | optional string authorId = 5; 109 | } 110 | 111 | message CategoriesRequest { 112 | } 113 | 114 | message CategoriesResponse { 115 | repeated Category categories = 1; 116 | } 117 | 118 | message SubCategoriesRequest { 119 | optional AppType appType = 1; 120 | } 121 | 122 | message SubCategoriesResponse { 123 | repeated Category category = 1; 124 | optional string subCategoryDisplay = 2; 125 | optional int32 subCategoryId = 3; 126 | } 127 | 128 | // operator : http://www.2030.tk/wiki/Android_market_switch 129 | // operatorNumeric : see http://en.wikipedia.org/wiki/Mobile_Network_Code 130 | message RequestContext { 131 | required string authSubToken = 1; // authsub token for service 'android' 132 | required bool isSecure = 2; // is this a secure request or not 133 | required int32 version = 3; // always 1002 134 | required string androidId = 4; // android id converted to hexadecimal 135 | optional string deviceAndSdkVersion = 5; // ro.product.device ':' ro.build.version.sdk 136 | optional string userLanguage = 6; // ro.product.locale.language 137 | optional string userCountry = 7; // ro.product.locale.region 138 | optional string operatorAlpha = 8; // gsm.operator.alpha 139 | optional string simOperatorAlpha = 9; // gsm.sim.operator.alpha 140 | optional string operatorNumeric = 10; // gsm.operator.numeric 141 | optional string simOperatorNumeric = 11; // sim.gsm.operator.numeric 142 | } 143 | 144 | message GetImageRequest { 145 | optional string appId = 1; 146 | enum AppImageUsage { 147 | ICON = 0; 148 | SCREENSHOT = 1; 149 | SCREENSHOT_THUMBNAIL = 2; 150 | PROMO_BADGE = 3; 151 | BILING_ICON = 4; 152 | } 153 | optional AppImageUsage imageUsage = 3; 154 | optional string imageId = 4; // 0 or 1 155 | } 156 | 157 | message GetAssetRequest { 158 | required string assetId = 1; 159 | optional string directDownloadKey = 2; 160 | } 161 | 162 | message GetImageResponse { 163 | optional bytes imageData = 1; 164 | } 165 | 166 | message GetAssetResponse { 167 | repeated group InstallAsset = 1 { 168 | optional string assetId = 2; 169 | optional string assetName = 3; 170 | optional string assetType = 4; 171 | optional string assetPackage = 5; 172 | optional string blobUrl = 6; 173 | optional string assetSignature = 7; 174 | optional uint64 assetSize = 8; 175 | optional uint64 refundTimeout = 9; 176 | optional bool forwardLocked = 10; 177 | optional bool secured = 11; 178 | optional int32 versionCode = 12; 179 | optional string downloadAuthCookieName = 13; 180 | optional string downloadAuthCookieValue = 14; 181 | } 182 | } 183 | 184 | message Request { 185 | optional RequestContext context = 1; 186 | repeated group RequestGroup = 2 { 187 | optional AppsRequest appsRequest = 4; 188 | optional CommentsRequest commentsRequest = 5; 189 | optional GetAssetRequest getAssetRequest = 10; 190 | optional GetImageRequest imageRequest = 11; 191 | optional SubCategoriesRequest subCategoriesRequest = 14; 192 | optional CategoriesRequest categoriesRequest = 21; 193 | } 194 | } 195 | 196 | message ResponseContext { 197 | enum ResultType { 198 | OK = 0; 199 | BAD_REQUEST = 1; 200 | INTERNAL_SERVICE_ERROR = 2; 201 | NOT_MODIFIED = 3; 202 | USER_INPUT_ERROR = 4; 203 | } 204 | optional ResultType result = 1; 205 | optional int32 maxAge = 2; 206 | optional string etag = 3; 207 | optional int32 serverVersion = 4; 208 | } 209 | 210 | message Response { 211 | repeated group ResponseGroup = 1 { 212 | optional ResponseContext context = 2; 213 | optional AppsResponse appsResponse = 3; 214 | optional CommentsResponse commentsResponse = 4; 215 | optional GetAssetResponse getAssetResponse = 9; 216 | optional GetImageResponse imageResponse = 10; 217 | optional CategoriesResponse categoriesResponse = 20; 218 | optional SubCategoriesResponse subCategoriesResponse = 13; 219 | } 220 | } -------------------------------------------------------------------------------- /market_proto.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | 3 | from google.protobuf import descriptor 4 | from google.protobuf import message 5 | from google.protobuf import reflection 6 | from google.protobuf import descriptor_pb2 7 | # @@protoc_insertion_point(imports) 8 | 9 | DESCRIPTOR = descriptor.FileDescriptor( 10 | name='market.proto', 11 | package='', 12 | serialized_pb='\n\x0cmarket.proto\"\xe4\x02\n\x0b\x41ppsRequest\x12\x19\n\x07\x61ppType\x18\x01 \x01(\x0e\x32\x08.AppType\x12\r\n\x05query\x18\x02 \x01(\t\x12\x12\n\ncategoryId\x18\x03 \x01(\t\x12\r\n\x05\x61ppId\x18\x04 \x01(\t\x12\x18\n\x10withExtendedInfo\x18\x06 \x01(\x08\x12/\n\torderType\x18\x07 \x01(\x0e\x32\x16.AppsRequest.OrderType:\x04NONE\x12\x12\n\nstartIndex\x18\x08 \x01(\x04\x12\x14\n\x0c\x65ntriesCount\x18\t \x01(\x05\x12,\n\x08viewType\x18\n \x01(\x0e\x32\x15.AppsRequest.ViewType:\x03\x41LL\"<\n\tOrderType\x12\x08\n\x04NONE\x10\x00\x12\x0b\n\x07POPULAR\x10\x01\x12\n\n\x06NEWEST\x10\x02\x12\x0c\n\x08\x46\x45\x41TURED\x10\x03\"\'\n\x08ViewType\x12\x07\n\x03\x41LL\x10\x00\x12\x08\n\x04\x46REE\x10\x01\x12\x08\n\x04PAID\x10\x02\"7\n\x0c\x41ppsResponse\x12\x11\n\x03\x61pp\x18\x01 \x03(\x0b\x32\x04.App\x12\x14\n\x0c\x65ntriesCount\x18\x02 \x01(\x05\"r\n\x08\x43\x61tegory\x12\x0f\n\x07\x61ppType\x18\x02 \x01(\x05\x12\r\n\x05title\x18\x04 \x01(\t\x12\x12\n\ncategoryId\x18\x03 \x01(\t\x12\x10\n\x08subtitle\x18\x05 \x01(\t\x12 \n\rsubCategories\x18\x08 \x03(\x0b\x32\t.Category\"J\n\x0f\x43ommentsRequest\x12\r\n\x05\x61ppId\x18\x01 \x01(\t\x12\x12\n\nstartIndex\x18\x02 \x01(\x05\x12\x14\n\x0c\x65ntriesCount\x18\x03 \x01(\x05\"D\n\x10\x43ommentsResponse\x12\x1a\n\x08\x63omments\x18\x01 \x03(\x0b\x32\x08.Comment\x12\x14\n\x0c\x65ntriesCount\x18\x02 \x01(\x05\"\xf8\x04\n\x03\x41pp\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05title\x18\x02 \x01(\t\x12\x1f\n\x07\x61ppType\x18\x03 \x01(\x0e\x32\x08.AppType:\x04NONE\x12\x0f\n\x07\x63reator\x18\x04 \x01(\t\x12\x0f\n\x07version\x18\x05 \x01(\t\x12\r\n\x05price\x18\x06 \x01(\t\x12\x0e\n\x06rating\x18\x07 \x01(\t\x12\x14\n\x0cratingsCount\x18\x08 \x01(\x05\x12\'\n\x0c\x65xtendedinfo\x18\x0c \x01(\n2\x11.App.ExtendedInfo\x12\x11\n\tcreatorId\x18\x16 \x01(\t\x12\x13\n\x0bpackageName\x18\x18 \x01(\t\x12\x13\n\x0bversionCode\x18\x19 \x01(\x05\x12\x15\n\rpriceCurrency\x18 \x01(\t\x12\x13\n\x0bpriceMicros\x18! \x01(\x05\x1a\xcb\x02\n\x0c\x45xtendedInfo\x12\x13\n\x0b\x64\x65scription\x18\r \x01(\t\x12\x16\n\x0e\x64ownloadsCount\x18\x0e \x01(\x05\x12\x14\n\x0cpermissionId\x18\x0f \x03(\t\x12\x13\n\x0binstallSize\x18\x10 \x01(\x05\x12\x13\n\x0bpackageName\x18\x11 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x12 \x01(\t\x12\x14\n\x0c\x63ontactEmail\x18\x14 \x01(\t\x12\x1a\n\x12\x64ownloadsCountText\x18\x17 \x01(\t\x12\x14\n\x0c\x63ontactPhone\x18\x1a \x01(\t\x12\x16\n\x0e\x63ontactWebsite\x18\x1b \x01(\t\x12\x18\n\x10screenshotsCount\x18\x1e \x01(\x05\x12\x11\n\tpromoText\x18\x1f \x01(\t\x12\x15\n\rrecentChanges\x18& \x01(\t\x12\x18\n\x10promotionalVideo\x18+ \x01(\t\"c\n\x07\x43omment\x12\x0c\n\x04text\x18\x01 \x01(\t\x12\x0e\n\x06rating\x18\x02 \x01(\x05\x12\x12\n\nauthorName\x18\x03 \x01(\t\x12\x14\n\x0c\x63reationTime\x18\x04 \x01(\x04\x12\x10\n\x08\x61uthorId\x18\x05 \x01(\t\"\x13\n\x11\x43\x61tegoriesRequest\"3\n\x12\x43\x61tegoriesResponse\x12\x1d\n\ncategories\x18\x01 \x03(\x0b\x32\t.Category\"1\n\x14SubCategoriesRequest\x12\x19\n\x07\x61ppType\x18\x01 \x01(\x0e\x32\x08.AppType\"g\n\x15SubCategoriesResponse\x12\x1b\n\x08\x63\x61tegory\x18\x01 \x03(\x0b\x32\t.Category\x12\x1a\n\x12subCategoryDisplay\x18\x02 \x01(\t\x12\x15\n\rsubCategoryId\x18\x03 \x01(\x05\"\x8a\x02\n\x0eRequestContext\x12\x14\n\x0c\x61uthSubToken\x18\x01 \x02(\t\x12\x10\n\x08isSecure\x18\x02 \x02(\x08\x12\x0f\n\x07version\x18\x03 \x02(\x05\x12\x11\n\tandroidId\x18\x04 \x02(\t\x12\x1b\n\x13\x64\x65viceAndSdkVersion\x18\x05 \x01(\t\x12\x14\n\x0cuserLanguage\x18\x06 \x01(\t\x12\x13\n\x0buserCountry\x18\x07 \x01(\t\x12\x15\n\roperatorAlpha\x18\x08 \x01(\t\x12\x18\n\x10simOperatorAlpha\x18\t \x01(\t\x12\x17\n\x0foperatorNumeric\x18\n \x01(\t\x12\x1a\n\x12simOperatorNumeric\x18\x0b \x01(\t\"\xcc\x01\n\x0fGetImageRequest\x12\r\n\x05\x61ppId\x18\x01 \x01(\t\x12\x32\n\nimageUsage\x18\x03 \x01(\x0e\x32\x1e.GetImageRequest.AppImageUsage\x12\x0f\n\x07imageId\x18\x04 \x01(\t\"e\n\rAppImageUsage\x12\x08\n\x04ICON\x10\x00\x12\x0e\n\nSCREENSHOT\x10\x01\x12\x18\n\x14SCREENSHOT_THUMBNAIL\x10\x02\x12\x0f\n\x0bPROMO_BADGE\x10\x03\x12\x0f\n\x0b\x42ILING_ICON\x10\x04\"=\n\x0fGetAssetRequest\x12\x0f\n\x07\x61ssetId\x18\x01 \x02(\t\x12\x19\n\x11\x64irectDownloadKey\x18\x02 \x01(\t\"%\n\x10GetImageResponse\x12\x11\n\timageData\x18\x01 \x01(\x0c\"\xf7\x02\n\x10GetAssetResponse\x12\x34\n\x0cinstallasset\x18\x01 \x03(\n2\x1e.GetAssetResponse.InstallAsset\x1a\xac\x02\n\x0cInstallAsset\x12\x0f\n\x07\x61ssetId\x18\x02 \x01(\t\x12\x11\n\tassetName\x18\x03 \x01(\t\x12\x11\n\tassetType\x18\x04 \x01(\t\x12\x14\n\x0c\x61ssetPackage\x18\x05 \x01(\t\x12\x0f\n\x07\x62lobUrl\x18\x06 \x01(\t\x12\x16\n\x0e\x61ssetSignature\x18\x07 \x01(\t\x12\x11\n\tassetSize\x18\x08 \x01(\x04\x12\x15\n\rrefundTimeout\x18\t \x01(\x04\x12\x15\n\rforwardLocked\x18\n \x01(\x08\x12\x0f\n\x07secured\x18\x0b \x01(\x08\x12\x13\n\x0bversionCode\x18\x0c \x01(\x05\x12\x1e\n\x16\x64ownloadAuthCookieName\x18\r \x01(\t\x12\x1f\n\x17\x64ownloadAuthCookieValue\x18\x0e \x01(\t\"\xee\x02\n\x07Request\x12 \n\x07\x63ontext\x18\x01 \x01(\x0b\x32\x0f.RequestContext\x12+\n\x0crequestgroup\x18\x02 \x03(\n2\x15.Request.RequestGroup\x1a\x93\x02\n\x0cRequestGroup\x12!\n\x0b\x61ppsRequest\x18\x04 \x01(\x0b\x32\x0c.AppsRequest\x12)\n\x0f\x63ommentsRequest\x18\x05 \x01(\x0b\x32\x10.CommentsRequest\x12)\n\x0fgetAssetRequest\x18\n \x01(\x0b\x32\x10.GetAssetRequest\x12&\n\x0cimageRequest\x18\x0b \x01(\x0b\x32\x10.GetImageRequest\x12\x33\n\x14subCategoriesRequest\x18\x0e \x01(\x0b\x32\x15.SubCategoriesRequest\x12-\n\x11\x63\x61tegoriesRequest\x18\x15 \x01(\x0b\x32\x12.CategoriesRequest\"\xde\x01\n\x0fResponseContext\x12+\n\x06result\x18\x01 \x01(\x0e\x32\x1b.ResponseContext.ResultType\x12\x0e\n\x06maxAge\x18\x02 \x01(\x05\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t\x12\x15\n\rserverVersion\x18\x04 \x01(\x05\"i\n\nResultType\x12\x06\n\x02OK\x10\x00\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x01\x12\x1a\n\x16INTERNAL_SERVICE_ERROR\x10\x02\x12\x10\n\x0cNOT_MODIFIED\x10\x03\x12\x14\n\x10USER_INPUT_ERROR\x10\x04\"\x80\x03\n\x08Response\x12.\n\rresponsegroup\x18\x01 \x03(\n2\x17.Response.ResponseGroup\x1a\xc3\x02\n\rResponseGroup\x12!\n\x07\x63ontext\x18\x02 \x01(\x0b\x32\x10.ResponseContext\x12#\n\x0c\x61ppsResponse\x18\x03 \x01(\x0b\x32\r.AppsResponse\x12+\n\x10\x63ommentsResponse\x18\x04 \x01(\x0b\x32\x11.CommentsResponse\x12+\n\x10getAssetResponse\x18\t \x01(\x0b\x32\x11.GetAssetResponse\x12(\n\rimageResponse\x18\n \x01(\x0b\x32\x11.GetImageResponse\x12/\n\x12\x63\x61tegoriesResponse\x18\x14 \x01(\x0b\x32\x13.CategoriesResponse\x12\x35\n\x15subCategoriesResponse\x18\r \x01(\x0b\x32\x16.SubCategoriesResponse*K\n\x07\x41ppType\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0b\x41PPLICATION\x10\x01\x12\x0c\n\x08RINGTONE\x10\x02\x12\r\n\tWALLPAPER\x10\x03\x12\x08\n\x04GAME\x10\x04\x42!\n\x1f\x63om.gc.android.market.api.model') 13 | 14 | _APPTYPE = descriptor.EnumDescriptor( 15 | name='AppType', 16 | full_name='AppType', 17 | filename=None, 18 | file=DESCRIPTOR, 19 | values=[ 20 | descriptor.EnumValueDescriptor( 21 | name='NONE', index=0, number=0, 22 | options=None, 23 | type=None), 24 | descriptor.EnumValueDescriptor( 25 | name='APPLICATION', index=1, number=1, 26 | options=None, 27 | type=None), 28 | descriptor.EnumValueDescriptor( 29 | name='RINGTONE', index=2, number=2, 30 | options=None, 31 | type=None), 32 | descriptor.EnumValueDescriptor( 33 | name='WALLPAPER', index=3, number=3, 34 | options=None, 35 | type=None), 36 | descriptor.EnumValueDescriptor( 37 | name='GAME', index=4, number=4, 38 | options=None, 39 | type=None), 40 | ], 41 | containing_type=None, 42 | options=None, 43 | serialized_start=3597, 44 | serialized_end=3672, 45 | ) 46 | 47 | 48 | NONE = 0 49 | APPLICATION = 1 50 | RINGTONE = 2 51 | WALLPAPER = 3 52 | GAME = 4 53 | 54 | _APPSREQUEST_ORDERTYPE = descriptor.EnumDescriptor( 55 | name='OrderType', 56 | full_name='AppsRequest.OrderType', 57 | filename=None, 58 | file=DESCRIPTOR, 59 | values=[ 60 | descriptor.EnumValueDescriptor( 61 | name='NONE', index=0, number=0, 62 | options=None, 63 | type=None), 64 | descriptor.EnumValueDescriptor( 65 | name='POPULAR', index=1, number=1, 66 | options=None, 67 | type=None), 68 | descriptor.EnumValueDescriptor( 69 | name='NEWEST', index=2, number=2, 70 | options=None, 71 | type=None), 72 | descriptor.EnumValueDescriptor( 73 | name='FEATURED', index=3, number=3, 74 | options=None, 75 | type=None), 76 | ], 77 | containing_type=None, 78 | options=None, 79 | serialized_start=272, 80 | serialized_end=332, 81 | ) 82 | 83 | _APPSREQUEST_VIEWTYPE = descriptor.EnumDescriptor( 84 | name='ViewType', 85 | full_name='AppsRequest.ViewType', 86 | filename=None, 87 | file=DESCRIPTOR, 88 | values=[ 89 | descriptor.EnumValueDescriptor( 90 | name='ALL', index=0, number=0, 91 | options=None, 92 | type=None), 93 | descriptor.EnumValueDescriptor( 94 | name='FREE', index=1, number=1, 95 | options=None, 96 | type=None), 97 | descriptor.EnumValueDescriptor( 98 | name='PAID', index=2, number=2, 99 | options=None, 100 | type=None), 101 | ], 102 | containing_type=None, 103 | options=None, 104 | serialized_start=334, 105 | serialized_end=373, 106 | ) 107 | 108 | _GETIMAGEREQUEST_APPIMAGEUSAGE = descriptor.EnumDescriptor( 109 | name='AppImageUsage', 110 | full_name='GetImageRequest.AppImageUsage', 111 | filename=None, 112 | file=DESCRIPTOR, 113 | values=[ 114 | descriptor.EnumValueDescriptor( 115 | name='ICON', index=0, number=0, 116 | options=None, 117 | type=None), 118 | descriptor.EnumValueDescriptor( 119 | name='SCREENSHOT', index=1, number=1, 120 | options=None, 121 | type=None), 122 | descriptor.EnumValueDescriptor( 123 | name='SCREENSHOT_THUMBNAIL', index=2, number=2, 124 | options=None, 125 | type=None), 126 | descriptor.EnumValueDescriptor( 127 | name='PROMO_BADGE', index=3, number=3, 128 | options=None, 129 | type=None), 130 | descriptor.EnumValueDescriptor( 131 | name='BILING_ICON', index=4, number=4, 132 | options=None, 133 | type=None), 134 | ], 135 | containing_type=None, 136 | options=None, 137 | serialized_start=2033, 138 | serialized_end=2134, 139 | ) 140 | 141 | _RESPONSECONTEXT_RESULTTYPE = descriptor.EnumDescriptor( 142 | name='ResultType', 143 | full_name='ResponseContext.ResultType', 144 | filename=None, 145 | file=DESCRIPTOR, 146 | values=[ 147 | descriptor.EnumValueDescriptor( 148 | name='OK', index=0, number=0, 149 | options=None, 150 | type=None), 151 | descriptor.EnumValueDescriptor( 152 | name='BAD_REQUEST', index=1, number=1, 153 | options=None, 154 | type=None), 155 | descriptor.EnumValueDescriptor( 156 | name='INTERNAL_SERVICE_ERROR', index=2, number=2, 157 | options=None, 158 | type=None), 159 | descriptor.EnumValueDescriptor( 160 | name='NOT_MODIFIED', index=3, number=3, 161 | options=None, 162 | type=None), 163 | descriptor.EnumValueDescriptor( 164 | name='USER_INPUT_ERROR', index=4, number=4, 165 | options=None, 166 | type=None), 167 | ], 168 | containing_type=None, 169 | options=None, 170 | serialized_start=3103, 171 | serialized_end=3208, 172 | ) 173 | 174 | _APPSREQUEST = descriptor.Descriptor( 175 | name='AppsRequest', 176 | full_name='AppsRequest', 177 | filename=None, 178 | file=DESCRIPTOR, 179 | containing_type=None, 180 | fields=[ 181 | descriptor.FieldDescriptor( 182 | name='appType', full_name='AppsRequest.appType', index=0, 183 | number=1, type=14, cpp_type=8, label=1, 184 | has_default_value=False, default_value=0, 185 | message_type=None, enum_type=None, containing_type=None, 186 | is_extension=False, extension_scope=None, 187 | options=None), 188 | descriptor.FieldDescriptor( 189 | name='query', full_name='AppsRequest.query', index=1, 190 | number=2, type=9, cpp_type=9, label=1, 191 | has_default_value=False, default_value=unicode("", "utf-8"), 192 | message_type=None, enum_type=None, containing_type=None, 193 | is_extension=False, extension_scope=None, 194 | options=None), 195 | descriptor.FieldDescriptor( 196 | name='categoryId', full_name='AppsRequest.categoryId', index=2, 197 | number=3, type=9, cpp_type=9, label=1, 198 | has_default_value=False, default_value=unicode("", "utf-8"), 199 | message_type=None, enum_type=None, containing_type=None, 200 | is_extension=False, extension_scope=None, 201 | options=None), 202 | descriptor.FieldDescriptor( 203 | name='appId', full_name='AppsRequest.appId', index=3, 204 | number=4, type=9, cpp_type=9, label=1, 205 | has_default_value=False, default_value=unicode("", "utf-8"), 206 | message_type=None, enum_type=None, containing_type=None, 207 | is_extension=False, extension_scope=None, 208 | options=None), 209 | descriptor.FieldDescriptor( 210 | name='withExtendedInfo', full_name='AppsRequest.withExtendedInfo', index=4, 211 | number=6, type=8, cpp_type=7, label=1, 212 | has_default_value=False, default_value=False, 213 | message_type=None, enum_type=None, containing_type=None, 214 | is_extension=False, extension_scope=None, 215 | options=None), 216 | descriptor.FieldDescriptor( 217 | name='orderType', full_name='AppsRequest.orderType', index=5, 218 | number=7, type=14, cpp_type=8, label=1, 219 | has_default_value=True, default_value=0, 220 | message_type=None, enum_type=None, containing_type=None, 221 | is_extension=False, extension_scope=None, 222 | options=None), 223 | descriptor.FieldDescriptor( 224 | name='startIndex', full_name='AppsRequest.startIndex', index=6, 225 | number=8, type=4, cpp_type=4, label=1, 226 | has_default_value=False, default_value=0, 227 | message_type=None, enum_type=None, containing_type=None, 228 | is_extension=False, extension_scope=None, 229 | options=None), 230 | descriptor.FieldDescriptor( 231 | name='entriesCount', full_name='AppsRequest.entriesCount', index=7, 232 | number=9, type=5, cpp_type=1, label=1, 233 | has_default_value=False, default_value=0, 234 | message_type=None, enum_type=None, containing_type=None, 235 | is_extension=False, extension_scope=None, 236 | options=None), 237 | descriptor.FieldDescriptor( 238 | name='viewType', full_name='AppsRequest.viewType', index=8, 239 | number=10, type=14, cpp_type=8, label=1, 240 | has_default_value=True, default_value=0, 241 | message_type=None, enum_type=None, containing_type=None, 242 | is_extension=False, extension_scope=None, 243 | options=None), 244 | ], 245 | extensions=[ 246 | ], 247 | nested_types=[], 248 | enum_types=[ 249 | _APPSREQUEST_ORDERTYPE, 250 | _APPSREQUEST_VIEWTYPE, 251 | ], 252 | options=None, 253 | is_extendable=False, 254 | extension_ranges=[], 255 | serialized_start=17, 256 | serialized_end=373, 257 | ) 258 | 259 | _APPSRESPONSE = descriptor.Descriptor( 260 | name='AppsResponse', 261 | full_name='AppsResponse', 262 | filename=None, 263 | file=DESCRIPTOR, 264 | containing_type=None, 265 | fields=[ 266 | descriptor.FieldDescriptor( 267 | name='app', full_name='AppsResponse.app', index=0, 268 | number=1, type=11, cpp_type=10, label=3, 269 | has_default_value=False, default_value=[], 270 | message_type=None, enum_type=None, containing_type=None, 271 | is_extension=False, extension_scope=None, 272 | options=None), 273 | descriptor.FieldDescriptor( 274 | name='entriesCount', full_name='AppsResponse.entriesCount', index=1, 275 | number=2, type=5, cpp_type=1, label=1, 276 | has_default_value=False, default_value=0, 277 | message_type=None, enum_type=None, containing_type=None, 278 | is_extension=False, extension_scope=None, 279 | options=None), 280 | ], 281 | extensions=[ 282 | ], 283 | nested_types=[], 284 | enum_types=[ 285 | ], 286 | options=None, 287 | is_extendable=False, 288 | extension_ranges=[], 289 | serialized_start=375, 290 | serialized_end=430, 291 | ) 292 | 293 | _CATEGORY = descriptor.Descriptor( 294 | name='Category', 295 | full_name='Category', 296 | filename=None, 297 | file=DESCRIPTOR, 298 | containing_type=None, 299 | fields=[ 300 | descriptor.FieldDescriptor( 301 | name='appType', full_name='Category.appType', index=0, 302 | number=2, type=5, cpp_type=1, label=1, 303 | has_default_value=False, default_value=0, 304 | message_type=None, enum_type=None, containing_type=None, 305 | is_extension=False, extension_scope=None, 306 | options=None), 307 | descriptor.FieldDescriptor( 308 | name='title', full_name='Category.title', index=1, 309 | number=4, type=9, cpp_type=9, label=1, 310 | has_default_value=False, default_value=unicode("", "utf-8"), 311 | message_type=None, enum_type=None, containing_type=None, 312 | is_extension=False, extension_scope=None, 313 | options=None), 314 | descriptor.FieldDescriptor( 315 | name='categoryId', full_name='Category.categoryId', index=2, 316 | number=3, type=9, cpp_type=9, label=1, 317 | has_default_value=False, default_value=unicode("", "utf-8"), 318 | message_type=None, enum_type=None, containing_type=None, 319 | is_extension=False, extension_scope=None, 320 | options=None), 321 | descriptor.FieldDescriptor( 322 | name='subtitle', full_name='Category.subtitle', index=3, 323 | number=5, type=9, cpp_type=9, label=1, 324 | has_default_value=False, default_value=unicode("", "utf-8"), 325 | message_type=None, enum_type=None, containing_type=None, 326 | is_extension=False, extension_scope=None, 327 | options=None), 328 | descriptor.FieldDescriptor( 329 | name='subCategories', full_name='Category.subCategories', index=4, 330 | number=8, type=11, cpp_type=10, label=3, 331 | has_default_value=False, default_value=[], 332 | message_type=None, enum_type=None, containing_type=None, 333 | is_extension=False, extension_scope=None, 334 | options=None), 335 | ], 336 | extensions=[ 337 | ], 338 | nested_types=[], 339 | enum_types=[ 340 | ], 341 | options=None, 342 | is_extendable=False, 343 | extension_ranges=[], 344 | serialized_start=432, 345 | serialized_end=546, 346 | ) 347 | 348 | _COMMENTSREQUEST = descriptor.Descriptor( 349 | name='CommentsRequest', 350 | full_name='CommentsRequest', 351 | filename=None, 352 | file=DESCRIPTOR, 353 | containing_type=None, 354 | fields=[ 355 | descriptor.FieldDescriptor( 356 | name='appId', full_name='CommentsRequest.appId', index=0, 357 | number=1, type=9, cpp_type=9, label=1, 358 | has_default_value=False, default_value=unicode("", "utf-8"), 359 | message_type=None, enum_type=None, containing_type=None, 360 | is_extension=False, extension_scope=None, 361 | options=None), 362 | descriptor.FieldDescriptor( 363 | name='startIndex', full_name='CommentsRequest.startIndex', index=1, 364 | number=2, type=5, cpp_type=1, label=1, 365 | has_default_value=False, default_value=0, 366 | message_type=None, enum_type=None, containing_type=None, 367 | is_extension=False, extension_scope=None, 368 | options=None), 369 | descriptor.FieldDescriptor( 370 | name='entriesCount', full_name='CommentsRequest.entriesCount', index=2, 371 | number=3, type=5, cpp_type=1, label=1, 372 | has_default_value=False, default_value=0, 373 | message_type=None, enum_type=None, containing_type=None, 374 | is_extension=False, extension_scope=None, 375 | options=None), 376 | ], 377 | extensions=[ 378 | ], 379 | nested_types=[], 380 | enum_types=[ 381 | ], 382 | options=None, 383 | is_extendable=False, 384 | extension_ranges=[], 385 | serialized_start=548, 386 | serialized_end=622, 387 | ) 388 | 389 | _COMMENTSRESPONSE = descriptor.Descriptor( 390 | name='CommentsResponse', 391 | full_name='CommentsResponse', 392 | filename=None, 393 | file=DESCRIPTOR, 394 | containing_type=None, 395 | fields=[ 396 | descriptor.FieldDescriptor( 397 | name='comments', full_name='CommentsResponse.comments', index=0, 398 | number=1, type=11, cpp_type=10, label=3, 399 | has_default_value=False, default_value=[], 400 | message_type=None, enum_type=None, containing_type=None, 401 | is_extension=False, extension_scope=None, 402 | options=None), 403 | descriptor.FieldDescriptor( 404 | name='entriesCount', full_name='CommentsResponse.entriesCount', index=1, 405 | number=2, type=5, cpp_type=1, label=1, 406 | has_default_value=False, default_value=0, 407 | message_type=None, enum_type=None, containing_type=None, 408 | is_extension=False, extension_scope=None, 409 | options=None), 410 | ], 411 | extensions=[ 412 | ], 413 | nested_types=[], 414 | enum_types=[ 415 | ], 416 | options=None, 417 | is_extendable=False, 418 | extension_ranges=[], 419 | serialized_start=624, 420 | serialized_end=692, 421 | ) 422 | 423 | _APP_EXTENDEDINFO = descriptor.Descriptor( 424 | name='ExtendedInfo', 425 | full_name='App.ExtendedInfo', 426 | filename=None, 427 | file=DESCRIPTOR, 428 | containing_type=None, 429 | fields=[ 430 | descriptor.FieldDescriptor( 431 | name='description', full_name='App.ExtendedInfo.description', index=0, 432 | number=13, type=9, cpp_type=9, label=1, 433 | has_default_value=False, default_value=unicode("", "utf-8"), 434 | message_type=None, enum_type=None, containing_type=None, 435 | is_extension=False, extension_scope=None, 436 | options=None), 437 | descriptor.FieldDescriptor( 438 | name='downloadsCount', full_name='App.ExtendedInfo.downloadsCount', index=1, 439 | number=14, type=5, cpp_type=1, label=1, 440 | has_default_value=False, default_value=0, 441 | message_type=None, enum_type=None, containing_type=None, 442 | is_extension=False, extension_scope=None, 443 | options=None), 444 | descriptor.FieldDescriptor( 445 | name='permissionId', full_name='App.ExtendedInfo.permissionId', index=2, 446 | number=15, type=9, cpp_type=9, label=3, 447 | has_default_value=False, default_value=[], 448 | message_type=None, enum_type=None, containing_type=None, 449 | is_extension=False, extension_scope=None, 450 | options=None), 451 | descriptor.FieldDescriptor( 452 | name='installSize', full_name='App.ExtendedInfo.installSize', index=3, 453 | number=16, type=5, cpp_type=1, label=1, 454 | has_default_value=False, default_value=0, 455 | message_type=None, enum_type=None, containing_type=None, 456 | is_extension=False, extension_scope=None, 457 | options=None), 458 | descriptor.FieldDescriptor( 459 | name='packageName', full_name='App.ExtendedInfo.packageName', index=4, 460 | number=17, type=9, cpp_type=9, label=1, 461 | has_default_value=False, default_value=unicode("", "utf-8"), 462 | message_type=None, enum_type=None, containing_type=None, 463 | is_extension=False, extension_scope=None, 464 | options=None), 465 | descriptor.FieldDescriptor( 466 | name='category', full_name='App.ExtendedInfo.category', index=5, 467 | number=18, type=9, cpp_type=9, label=1, 468 | has_default_value=False, default_value=unicode("", "utf-8"), 469 | message_type=None, enum_type=None, containing_type=None, 470 | is_extension=False, extension_scope=None, 471 | options=None), 472 | descriptor.FieldDescriptor( 473 | name='contactEmail', full_name='App.ExtendedInfo.contactEmail', index=6, 474 | number=20, type=9, cpp_type=9, label=1, 475 | has_default_value=False, default_value=unicode("", "utf-8"), 476 | message_type=None, enum_type=None, containing_type=None, 477 | is_extension=False, extension_scope=None, 478 | options=None), 479 | descriptor.FieldDescriptor( 480 | name='downloadsCountText', full_name='App.ExtendedInfo.downloadsCountText', index=7, 481 | number=23, type=9, cpp_type=9, label=1, 482 | has_default_value=False, default_value=unicode("", "utf-8"), 483 | message_type=None, enum_type=None, containing_type=None, 484 | is_extension=False, extension_scope=None, 485 | options=None), 486 | descriptor.FieldDescriptor( 487 | name='contactPhone', full_name='App.ExtendedInfo.contactPhone', index=8, 488 | number=26, type=9, cpp_type=9, label=1, 489 | has_default_value=False, default_value=unicode("", "utf-8"), 490 | message_type=None, enum_type=None, containing_type=None, 491 | is_extension=False, extension_scope=None, 492 | options=None), 493 | descriptor.FieldDescriptor( 494 | name='contactWebsite', full_name='App.ExtendedInfo.contactWebsite', index=9, 495 | number=27, type=9, cpp_type=9, label=1, 496 | has_default_value=False, default_value=unicode("", "utf-8"), 497 | message_type=None, enum_type=None, containing_type=None, 498 | is_extension=False, extension_scope=None, 499 | options=None), 500 | descriptor.FieldDescriptor( 501 | name='screenshotsCount', full_name='App.ExtendedInfo.screenshotsCount', index=10, 502 | number=30, type=5, cpp_type=1, label=1, 503 | has_default_value=False, default_value=0, 504 | message_type=None, enum_type=None, containing_type=None, 505 | is_extension=False, extension_scope=None, 506 | options=None), 507 | descriptor.FieldDescriptor( 508 | name='promoText', full_name='App.ExtendedInfo.promoText', index=11, 509 | number=31, type=9, cpp_type=9, label=1, 510 | has_default_value=False, default_value=unicode("", "utf-8"), 511 | message_type=None, enum_type=None, containing_type=None, 512 | is_extension=False, extension_scope=None, 513 | options=None), 514 | descriptor.FieldDescriptor( 515 | name='recentChanges', full_name='App.ExtendedInfo.recentChanges', index=12, 516 | number=38, type=9, cpp_type=9, label=1, 517 | has_default_value=False, default_value=unicode("", "utf-8"), 518 | message_type=None, enum_type=None, containing_type=None, 519 | is_extension=False, extension_scope=None, 520 | options=None), 521 | descriptor.FieldDescriptor( 522 | name='promotionalVideo', full_name='App.ExtendedInfo.promotionalVideo', index=13, 523 | number=43, type=9, cpp_type=9, label=1, 524 | has_default_value=False, default_value=unicode("", "utf-8"), 525 | message_type=None, enum_type=None, containing_type=None, 526 | is_extension=False, extension_scope=None, 527 | options=None), 528 | ], 529 | extensions=[ 530 | ], 531 | nested_types=[], 532 | enum_types=[ 533 | ], 534 | options=None, 535 | is_extendable=False, 536 | extension_ranges=[], 537 | serialized_start=996, 538 | serialized_end=1327, 539 | ) 540 | 541 | _APP = descriptor.Descriptor( 542 | name='App', 543 | full_name='App', 544 | filename=None, 545 | file=DESCRIPTOR, 546 | containing_type=None, 547 | fields=[ 548 | descriptor.FieldDescriptor( 549 | name='id', full_name='App.id', index=0, 550 | number=1, type=9, cpp_type=9, label=1, 551 | has_default_value=False, default_value=unicode("", "utf-8"), 552 | message_type=None, enum_type=None, containing_type=None, 553 | is_extension=False, extension_scope=None, 554 | options=None), 555 | descriptor.FieldDescriptor( 556 | name='title', full_name='App.title', index=1, 557 | number=2, type=9, cpp_type=9, label=1, 558 | has_default_value=False, default_value=unicode("", "utf-8"), 559 | message_type=None, enum_type=None, containing_type=None, 560 | is_extension=False, extension_scope=None, 561 | options=None), 562 | descriptor.FieldDescriptor( 563 | name='appType', full_name='App.appType', index=2, 564 | number=3, type=14, cpp_type=8, label=1, 565 | has_default_value=True, default_value=0, 566 | message_type=None, enum_type=None, containing_type=None, 567 | is_extension=False, extension_scope=None, 568 | options=None), 569 | descriptor.FieldDescriptor( 570 | name='creator', full_name='App.creator', index=3, 571 | number=4, type=9, cpp_type=9, label=1, 572 | has_default_value=False, default_value=unicode("", "utf-8"), 573 | message_type=None, enum_type=None, containing_type=None, 574 | is_extension=False, extension_scope=None, 575 | options=None), 576 | descriptor.FieldDescriptor( 577 | name='version', full_name='App.version', index=4, 578 | number=5, type=9, cpp_type=9, label=1, 579 | has_default_value=False, default_value=unicode("", "utf-8"), 580 | message_type=None, enum_type=None, containing_type=None, 581 | is_extension=False, extension_scope=None, 582 | options=None), 583 | descriptor.FieldDescriptor( 584 | name='price', full_name='App.price', index=5, 585 | number=6, type=9, cpp_type=9, label=1, 586 | has_default_value=False, default_value=unicode("", "utf-8"), 587 | message_type=None, enum_type=None, containing_type=None, 588 | is_extension=False, extension_scope=None, 589 | options=None), 590 | descriptor.FieldDescriptor( 591 | name='rating', full_name='App.rating', index=6, 592 | number=7, type=9, cpp_type=9, label=1, 593 | has_default_value=False, default_value=unicode("", "utf-8"), 594 | message_type=None, enum_type=None, containing_type=None, 595 | is_extension=False, extension_scope=None, 596 | options=None), 597 | descriptor.FieldDescriptor( 598 | name='ratingsCount', full_name='App.ratingsCount', index=7, 599 | number=8, type=5, cpp_type=1, label=1, 600 | has_default_value=False, default_value=0, 601 | message_type=None, enum_type=None, containing_type=None, 602 | is_extension=False, extension_scope=None, 603 | options=None), 604 | descriptor.FieldDescriptor( 605 | name='extendedinfo', full_name='App.extendedinfo', index=8, 606 | number=12, type=10, cpp_type=10, label=1, 607 | has_default_value=False, default_value=None, 608 | message_type=None, enum_type=None, containing_type=None, 609 | is_extension=False, extension_scope=None, 610 | options=None), 611 | descriptor.FieldDescriptor( 612 | name='creatorId', full_name='App.creatorId', index=9, 613 | number=22, type=9, cpp_type=9, label=1, 614 | has_default_value=False, default_value=unicode("", "utf-8"), 615 | message_type=None, enum_type=None, containing_type=None, 616 | is_extension=False, extension_scope=None, 617 | options=None), 618 | descriptor.FieldDescriptor( 619 | name='packageName', full_name='App.packageName', index=10, 620 | number=24, type=9, cpp_type=9, label=1, 621 | has_default_value=False, default_value=unicode("", "utf-8"), 622 | message_type=None, enum_type=None, containing_type=None, 623 | is_extension=False, extension_scope=None, 624 | options=None), 625 | descriptor.FieldDescriptor( 626 | name='versionCode', full_name='App.versionCode', index=11, 627 | number=25, type=5, cpp_type=1, label=1, 628 | has_default_value=False, default_value=0, 629 | message_type=None, enum_type=None, containing_type=None, 630 | is_extension=False, extension_scope=None, 631 | options=None), 632 | descriptor.FieldDescriptor( 633 | name='priceCurrency', full_name='App.priceCurrency', index=12, 634 | number=32, type=9, cpp_type=9, label=1, 635 | has_default_value=False, default_value=unicode("", "utf-8"), 636 | message_type=None, enum_type=None, containing_type=None, 637 | is_extension=False, extension_scope=None, 638 | options=None), 639 | descriptor.FieldDescriptor( 640 | name='priceMicros', full_name='App.priceMicros', index=13, 641 | number=33, type=5, cpp_type=1, label=1, 642 | has_default_value=False, default_value=0, 643 | message_type=None, enum_type=None, containing_type=None, 644 | is_extension=False, extension_scope=None, 645 | options=None), 646 | ], 647 | extensions=[ 648 | ], 649 | nested_types=[_APP_EXTENDEDINFO, ], 650 | enum_types=[ 651 | ], 652 | options=None, 653 | is_extendable=False, 654 | extension_ranges=[], 655 | serialized_start=695, 656 | serialized_end=1327, 657 | ) 658 | 659 | _COMMENT = descriptor.Descriptor( 660 | name='Comment', 661 | full_name='Comment', 662 | filename=None, 663 | file=DESCRIPTOR, 664 | containing_type=None, 665 | fields=[ 666 | descriptor.FieldDescriptor( 667 | name='text', full_name='Comment.text', index=0, 668 | number=1, type=9, cpp_type=9, label=1, 669 | has_default_value=False, default_value=unicode("", "utf-8"), 670 | message_type=None, enum_type=None, containing_type=None, 671 | is_extension=False, extension_scope=None, 672 | options=None), 673 | descriptor.FieldDescriptor( 674 | name='rating', full_name='Comment.rating', index=1, 675 | number=2, type=5, cpp_type=1, label=1, 676 | has_default_value=False, default_value=0, 677 | message_type=None, enum_type=None, containing_type=None, 678 | is_extension=False, extension_scope=None, 679 | options=None), 680 | descriptor.FieldDescriptor( 681 | name='authorName', full_name='Comment.authorName', index=2, 682 | number=3, type=9, cpp_type=9, label=1, 683 | has_default_value=False, default_value=unicode("", "utf-8"), 684 | message_type=None, enum_type=None, containing_type=None, 685 | is_extension=False, extension_scope=None, 686 | options=None), 687 | descriptor.FieldDescriptor( 688 | name='creationTime', full_name='Comment.creationTime', index=3, 689 | number=4, type=4, cpp_type=4, label=1, 690 | has_default_value=False, default_value=0, 691 | message_type=None, enum_type=None, containing_type=None, 692 | is_extension=False, extension_scope=None, 693 | options=None), 694 | descriptor.FieldDescriptor( 695 | name='authorId', full_name='Comment.authorId', index=4, 696 | number=5, type=9, cpp_type=9, label=1, 697 | has_default_value=False, default_value=unicode("", "utf-8"), 698 | message_type=None, enum_type=None, containing_type=None, 699 | is_extension=False, extension_scope=None, 700 | options=None), 701 | ], 702 | extensions=[ 703 | ], 704 | nested_types=[], 705 | enum_types=[ 706 | ], 707 | options=None, 708 | is_extendable=False, 709 | extension_ranges=[], 710 | serialized_start=1329, 711 | serialized_end=1428, 712 | ) 713 | 714 | _CATEGORIESREQUEST = descriptor.Descriptor( 715 | name='CategoriesRequest', 716 | full_name='CategoriesRequest', 717 | filename=None, 718 | file=DESCRIPTOR, 719 | containing_type=None, 720 | fields=[ 721 | ], 722 | extensions=[ 723 | ], 724 | nested_types=[], 725 | enum_types=[ 726 | ], 727 | options=None, 728 | is_extendable=False, 729 | extension_ranges=[], 730 | serialized_start=1430, 731 | serialized_end=1449, 732 | ) 733 | 734 | _CATEGORIESRESPONSE = descriptor.Descriptor( 735 | name='CategoriesResponse', 736 | full_name='CategoriesResponse', 737 | filename=None, 738 | file=DESCRIPTOR, 739 | containing_type=None, 740 | fields=[ 741 | descriptor.FieldDescriptor( 742 | name='categories', full_name='CategoriesResponse.categories', index=0, 743 | number=1, type=11, cpp_type=10, label=3, 744 | has_default_value=False, default_value=[], 745 | message_type=None, enum_type=None, containing_type=None, 746 | is_extension=False, extension_scope=None, 747 | options=None), 748 | ], 749 | extensions=[ 750 | ], 751 | nested_types=[], 752 | enum_types=[ 753 | ], 754 | options=None, 755 | is_extendable=False, 756 | extension_ranges=[], 757 | serialized_start=1451, 758 | serialized_end=1502, 759 | ) 760 | 761 | _SUBCATEGORIESREQUEST = descriptor.Descriptor( 762 | name='SubCategoriesRequest', 763 | full_name='SubCategoriesRequest', 764 | filename=None, 765 | file=DESCRIPTOR, 766 | containing_type=None, 767 | fields=[ 768 | descriptor.FieldDescriptor( 769 | name='appType', full_name='SubCategoriesRequest.appType', index=0, 770 | number=1, type=14, cpp_type=8, label=1, 771 | has_default_value=False, default_value=0, 772 | message_type=None, enum_type=None, containing_type=None, 773 | is_extension=False, extension_scope=None, 774 | options=None), 775 | ], 776 | extensions=[ 777 | ], 778 | nested_types=[], 779 | enum_types=[ 780 | ], 781 | options=None, 782 | is_extendable=False, 783 | extension_ranges=[], 784 | serialized_start=1504, 785 | serialized_end=1553, 786 | ) 787 | 788 | _SUBCATEGORIESRESPONSE = descriptor.Descriptor( 789 | name='SubCategoriesResponse', 790 | full_name='SubCategoriesResponse', 791 | filename=None, 792 | file=DESCRIPTOR, 793 | containing_type=None, 794 | fields=[ 795 | descriptor.FieldDescriptor( 796 | name='category', full_name='SubCategoriesResponse.category', index=0, 797 | number=1, type=11, cpp_type=10, label=3, 798 | has_default_value=False, default_value=[], 799 | message_type=None, enum_type=None, containing_type=None, 800 | is_extension=False, extension_scope=None, 801 | options=None), 802 | descriptor.FieldDescriptor( 803 | name='subCategoryDisplay', full_name='SubCategoriesResponse.subCategoryDisplay', index=1, 804 | number=2, type=9, cpp_type=9, label=1, 805 | has_default_value=False, default_value=unicode("", "utf-8"), 806 | message_type=None, enum_type=None, containing_type=None, 807 | is_extension=False, extension_scope=None, 808 | options=None), 809 | descriptor.FieldDescriptor( 810 | name='subCategoryId', full_name='SubCategoriesResponse.subCategoryId', index=2, 811 | number=3, type=5, cpp_type=1, label=1, 812 | has_default_value=False, default_value=0, 813 | message_type=None, enum_type=None, containing_type=None, 814 | is_extension=False, extension_scope=None, 815 | options=None), 816 | ], 817 | extensions=[ 818 | ], 819 | nested_types=[], 820 | enum_types=[ 821 | ], 822 | options=None, 823 | is_extendable=False, 824 | extension_ranges=[], 825 | serialized_start=1555, 826 | serialized_end=1658, 827 | ) 828 | 829 | _REQUESTCONTEXT = descriptor.Descriptor( 830 | name='RequestContext', 831 | full_name='RequestContext', 832 | filename=None, 833 | file=DESCRIPTOR, 834 | containing_type=None, 835 | fields=[ 836 | descriptor.FieldDescriptor( 837 | name='authSubToken', full_name='RequestContext.authSubToken', index=0, 838 | number=1, type=9, cpp_type=9, label=2, 839 | has_default_value=False, default_value=unicode("", "utf-8"), 840 | message_type=None, enum_type=None, containing_type=None, 841 | is_extension=False, extension_scope=None, 842 | options=None), 843 | descriptor.FieldDescriptor( 844 | name='isSecure', full_name='RequestContext.isSecure', index=1, 845 | number=2, type=8, cpp_type=7, label=2, 846 | has_default_value=False, default_value=False, 847 | message_type=None, enum_type=None, containing_type=None, 848 | is_extension=False, extension_scope=None, 849 | options=None), 850 | descriptor.FieldDescriptor( 851 | name='version', full_name='RequestContext.version', index=2, 852 | number=3, type=5, cpp_type=1, label=2, 853 | has_default_value=False, default_value=0, 854 | message_type=None, enum_type=None, containing_type=None, 855 | is_extension=False, extension_scope=None, 856 | options=None), 857 | descriptor.FieldDescriptor( 858 | name='androidId', full_name='RequestContext.androidId', index=3, 859 | number=4, type=9, cpp_type=9, label=2, 860 | has_default_value=False, default_value=unicode("", "utf-8"), 861 | message_type=None, enum_type=None, containing_type=None, 862 | is_extension=False, extension_scope=None, 863 | options=None), 864 | descriptor.FieldDescriptor( 865 | name='deviceAndSdkVersion', full_name='RequestContext.deviceAndSdkVersion', index=4, 866 | number=5, type=9, cpp_type=9, label=1, 867 | has_default_value=False, default_value=unicode("", "utf-8"), 868 | message_type=None, enum_type=None, containing_type=None, 869 | is_extension=False, extension_scope=None, 870 | options=None), 871 | descriptor.FieldDescriptor( 872 | name='userLanguage', full_name='RequestContext.userLanguage', index=5, 873 | number=6, type=9, cpp_type=9, label=1, 874 | has_default_value=False, default_value=unicode("", "utf-8"), 875 | message_type=None, enum_type=None, containing_type=None, 876 | is_extension=False, extension_scope=None, 877 | options=None), 878 | descriptor.FieldDescriptor( 879 | name='userCountry', full_name='RequestContext.userCountry', index=6, 880 | number=7, type=9, cpp_type=9, label=1, 881 | has_default_value=False, default_value=unicode("", "utf-8"), 882 | message_type=None, enum_type=None, containing_type=None, 883 | is_extension=False, extension_scope=None, 884 | options=None), 885 | descriptor.FieldDescriptor( 886 | name='operatorAlpha', full_name='RequestContext.operatorAlpha', index=7, 887 | number=8, type=9, cpp_type=9, label=1, 888 | has_default_value=False, default_value=unicode("", "utf-8"), 889 | message_type=None, enum_type=None, containing_type=None, 890 | is_extension=False, extension_scope=None, 891 | options=None), 892 | descriptor.FieldDescriptor( 893 | name='simOperatorAlpha', full_name='RequestContext.simOperatorAlpha', index=8, 894 | number=9, type=9, cpp_type=9, label=1, 895 | has_default_value=False, default_value=unicode("", "utf-8"), 896 | message_type=None, enum_type=None, containing_type=None, 897 | is_extension=False, extension_scope=None, 898 | options=None), 899 | descriptor.FieldDescriptor( 900 | name='operatorNumeric', full_name='RequestContext.operatorNumeric', index=9, 901 | number=10, type=9, cpp_type=9, label=1, 902 | has_default_value=False, default_value=unicode("", "utf-8"), 903 | message_type=None, enum_type=None, containing_type=None, 904 | is_extension=False, extension_scope=None, 905 | options=None), 906 | descriptor.FieldDescriptor( 907 | name='simOperatorNumeric', full_name='RequestContext.simOperatorNumeric', index=10, 908 | number=11, type=9, cpp_type=9, label=1, 909 | has_default_value=False, default_value=unicode("", "utf-8"), 910 | message_type=None, enum_type=None, containing_type=None, 911 | is_extension=False, extension_scope=None, 912 | options=None), 913 | ], 914 | extensions=[ 915 | ], 916 | nested_types=[], 917 | enum_types=[ 918 | ], 919 | options=None, 920 | is_extendable=False, 921 | extension_ranges=[], 922 | serialized_start=1661, 923 | serialized_end=1927, 924 | ) 925 | 926 | _GETIMAGEREQUEST = descriptor.Descriptor( 927 | name='GetImageRequest', 928 | full_name='GetImageRequest', 929 | filename=None, 930 | file=DESCRIPTOR, 931 | containing_type=None, 932 | fields=[ 933 | descriptor.FieldDescriptor( 934 | name='appId', full_name='GetImageRequest.appId', index=0, 935 | number=1, type=9, cpp_type=9, label=1, 936 | has_default_value=False, default_value=unicode("", "utf-8"), 937 | message_type=None, enum_type=None, containing_type=None, 938 | is_extension=False, extension_scope=None, 939 | options=None), 940 | descriptor.FieldDescriptor( 941 | name='imageUsage', full_name='GetImageRequest.imageUsage', index=1, 942 | number=3, type=14, cpp_type=8, label=1, 943 | has_default_value=False, default_value=0, 944 | message_type=None, enum_type=None, containing_type=None, 945 | is_extension=False, extension_scope=None, 946 | options=None), 947 | descriptor.FieldDescriptor( 948 | name='imageId', full_name='GetImageRequest.imageId', index=2, 949 | number=4, type=9, cpp_type=9, label=1, 950 | has_default_value=False, default_value=unicode("", "utf-8"), 951 | message_type=None, enum_type=None, containing_type=None, 952 | is_extension=False, extension_scope=None, 953 | options=None), 954 | ], 955 | extensions=[ 956 | ], 957 | nested_types=[], 958 | enum_types=[ 959 | _GETIMAGEREQUEST_APPIMAGEUSAGE, 960 | ], 961 | options=None, 962 | is_extendable=False, 963 | extension_ranges=[], 964 | serialized_start=1930, 965 | serialized_end=2134, 966 | ) 967 | 968 | _GETASSETREQUEST = descriptor.Descriptor( 969 | name='GetAssetRequest', 970 | full_name='GetAssetRequest', 971 | filename=None, 972 | file=DESCRIPTOR, 973 | containing_type=None, 974 | fields=[ 975 | descriptor.FieldDescriptor( 976 | name='assetId', full_name='GetAssetRequest.assetId', index=0, 977 | number=1, type=9, cpp_type=9, label=2, 978 | has_default_value=False, default_value=unicode("", "utf-8"), 979 | message_type=None, enum_type=None, containing_type=None, 980 | is_extension=False, extension_scope=None, 981 | options=None), 982 | descriptor.FieldDescriptor( 983 | name='directDownloadKey', full_name='GetAssetRequest.directDownloadKey', index=1, 984 | number=2, type=9, cpp_type=9, label=1, 985 | has_default_value=False, default_value=unicode("", "utf-8"), 986 | message_type=None, enum_type=None, containing_type=None, 987 | is_extension=False, extension_scope=None, 988 | options=None), 989 | ], 990 | extensions=[ 991 | ], 992 | nested_types=[], 993 | enum_types=[ 994 | ], 995 | options=None, 996 | is_extendable=False, 997 | extension_ranges=[], 998 | serialized_start=2136, 999 | serialized_end=2197, 1000 | ) 1001 | 1002 | _GETIMAGERESPONSE = descriptor.Descriptor( 1003 | name='GetImageResponse', 1004 | full_name='GetImageResponse', 1005 | filename=None, 1006 | file=DESCRIPTOR, 1007 | containing_type=None, 1008 | fields=[ 1009 | descriptor.FieldDescriptor( 1010 | name='imageData', full_name='GetImageResponse.imageData', index=0, 1011 | number=1, type=12, cpp_type=9, label=1, 1012 | has_default_value=False, default_value="", 1013 | message_type=None, enum_type=None, containing_type=None, 1014 | is_extension=False, extension_scope=None, 1015 | options=None), 1016 | ], 1017 | extensions=[ 1018 | ], 1019 | nested_types=[], 1020 | enum_types=[ 1021 | ], 1022 | options=None, 1023 | is_extendable=False, 1024 | extension_ranges=[], 1025 | serialized_start=2199, 1026 | serialized_end=2236, 1027 | ) 1028 | 1029 | _GETASSETRESPONSE_INSTALLASSET = descriptor.Descriptor( 1030 | name='InstallAsset', 1031 | full_name='GetAssetResponse.InstallAsset', 1032 | filename=None, 1033 | file=DESCRIPTOR, 1034 | containing_type=None, 1035 | fields=[ 1036 | descriptor.FieldDescriptor( 1037 | name='assetId', full_name='GetAssetResponse.InstallAsset.assetId', index=0, 1038 | number=2, type=9, cpp_type=9, label=1, 1039 | has_default_value=False, default_value=unicode("", "utf-8"), 1040 | message_type=None, enum_type=None, containing_type=None, 1041 | is_extension=False, extension_scope=None, 1042 | options=None), 1043 | descriptor.FieldDescriptor( 1044 | name='assetName', full_name='GetAssetResponse.InstallAsset.assetName', index=1, 1045 | number=3, type=9, cpp_type=9, label=1, 1046 | has_default_value=False, default_value=unicode("", "utf-8"), 1047 | message_type=None, enum_type=None, containing_type=None, 1048 | is_extension=False, extension_scope=None, 1049 | options=None), 1050 | descriptor.FieldDescriptor( 1051 | name='assetType', full_name='GetAssetResponse.InstallAsset.assetType', index=2, 1052 | number=4, type=9, cpp_type=9, label=1, 1053 | has_default_value=False, default_value=unicode("", "utf-8"), 1054 | message_type=None, enum_type=None, containing_type=None, 1055 | is_extension=False, extension_scope=None, 1056 | options=None), 1057 | descriptor.FieldDescriptor( 1058 | name='assetPackage', full_name='GetAssetResponse.InstallAsset.assetPackage', index=3, 1059 | number=5, type=9, cpp_type=9, label=1, 1060 | has_default_value=False, default_value=unicode("", "utf-8"), 1061 | message_type=None, enum_type=None, containing_type=None, 1062 | is_extension=False, extension_scope=None, 1063 | options=None), 1064 | descriptor.FieldDescriptor( 1065 | name='blobUrl', full_name='GetAssetResponse.InstallAsset.blobUrl', index=4, 1066 | number=6, type=9, cpp_type=9, label=1, 1067 | has_default_value=False, default_value=unicode("", "utf-8"), 1068 | message_type=None, enum_type=None, containing_type=None, 1069 | is_extension=False, extension_scope=None, 1070 | options=None), 1071 | descriptor.FieldDescriptor( 1072 | name='assetSignature', full_name='GetAssetResponse.InstallAsset.assetSignature', index=5, 1073 | number=7, type=9, cpp_type=9, label=1, 1074 | has_default_value=False, default_value=unicode("", "utf-8"), 1075 | message_type=None, enum_type=None, containing_type=None, 1076 | is_extension=False, extension_scope=None, 1077 | options=None), 1078 | descriptor.FieldDescriptor( 1079 | name='assetSize', full_name='GetAssetResponse.InstallAsset.assetSize', index=6, 1080 | number=8, type=4, cpp_type=4, label=1, 1081 | has_default_value=False, default_value=0, 1082 | message_type=None, enum_type=None, containing_type=None, 1083 | is_extension=False, extension_scope=None, 1084 | options=None), 1085 | descriptor.FieldDescriptor( 1086 | name='refundTimeout', full_name='GetAssetResponse.InstallAsset.refundTimeout', index=7, 1087 | number=9, type=4, cpp_type=4, label=1, 1088 | has_default_value=False, default_value=0, 1089 | message_type=None, enum_type=None, containing_type=None, 1090 | is_extension=False, extension_scope=None, 1091 | options=None), 1092 | descriptor.FieldDescriptor( 1093 | name='forwardLocked', full_name='GetAssetResponse.InstallAsset.forwardLocked', index=8, 1094 | number=10, type=8, cpp_type=7, label=1, 1095 | has_default_value=False, default_value=False, 1096 | message_type=None, enum_type=None, containing_type=None, 1097 | is_extension=False, extension_scope=None, 1098 | options=None), 1099 | descriptor.FieldDescriptor( 1100 | name='secured', full_name='GetAssetResponse.InstallAsset.secured', index=9, 1101 | number=11, type=8, cpp_type=7, label=1, 1102 | has_default_value=False, default_value=False, 1103 | message_type=None, enum_type=None, containing_type=None, 1104 | is_extension=False, extension_scope=None, 1105 | options=None), 1106 | descriptor.FieldDescriptor( 1107 | name='versionCode', full_name='GetAssetResponse.InstallAsset.versionCode', index=10, 1108 | number=12, type=5, cpp_type=1, label=1, 1109 | has_default_value=False, default_value=0, 1110 | message_type=None, enum_type=None, containing_type=None, 1111 | is_extension=False, extension_scope=None, 1112 | options=None), 1113 | descriptor.FieldDescriptor( 1114 | name='downloadAuthCookieName', full_name='GetAssetResponse.InstallAsset.downloadAuthCookieName', index=11, 1115 | number=13, type=9, cpp_type=9, label=1, 1116 | has_default_value=False, default_value=unicode("", "utf-8"), 1117 | message_type=None, enum_type=None, containing_type=None, 1118 | is_extension=False, extension_scope=None, 1119 | options=None), 1120 | descriptor.FieldDescriptor( 1121 | name='downloadAuthCookieValue', full_name='GetAssetResponse.InstallAsset.downloadAuthCookieValue', index=12, 1122 | number=14, type=9, cpp_type=9, label=1, 1123 | has_default_value=False, default_value=unicode("", "utf-8"), 1124 | message_type=None, enum_type=None, containing_type=None, 1125 | is_extension=False, extension_scope=None, 1126 | options=None), 1127 | ], 1128 | extensions=[ 1129 | ], 1130 | nested_types=[], 1131 | enum_types=[ 1132 | ], 1133 | options=None, 1134 | is_extendable=False, 1135 | extension_ranges=[], 1136 | serialized_start=2314, 1137 | serialized_end=2614, 1138 | ) 1139 | 1140 | _GETASSETRESPONSE = descriptor.Descriptor( 1141 | name='GetAssetResponse', 1142 | full_name='GetAssetResponse', 1143 | filename=None, 1144 | file=DESCRIPTOR, 1145 | containing_type=None, 1146 | fields=[ 1147 | descriptor.FieldDescriptor( 1148 | name='installasset', full_name='GetAssetResponse.installasset', index=0, 1149 | number=1, type=10, cpp_type=10, label=3, 1150 | has_default_value=False, default_value=[], 1151 | message_type=None, enum_type=None, containing_type=None, 1152 | is_extension=False, extension_scope=None, 1153 | options=None), 1154 | ], 1155 | extensions=[ 1156 | ], 1157 | nested_types=[_GETASSETRESPONSE_INSTALLASSET, ], 1158 | enum_types=[ 1159 | ], 1160 | options=None, 1161 | is_extendable=False, 1162 | extension_ranges=[], 1163 | serialized_start=2239, 1164 | serialized_end=2614, 1165 | ) 1166 | 1167 | _REQUEST_REQUESTGROUP = descriptor.Descriptor( 1168 | name='RequestGroup', 1169 | full_name='Request.RequestGroup', 1170 | filename=None, 1171 | file=DESCRIPTOR, 1172 | containing_type=None, 1173 | fields=[ 1174 | descriptor.FieldDescriptor( 1175 | name='appsRequest', full_name='Request.RequestGroup.appsRequest', index=0, 1176 | number=4, type=11, cpp_type=10, label=1, 1177 | has_default_value=False, default_value=None, 1178 | message_type=None, enum_type=None, containing_type=None, 1179 | is_extension=False, extension_scope=None, 1180 | options=None), 1181 | descriptor.FieldDescriptor( 1182 | name='commentsRequest', full_name='Request.RequestGroup.commentsRequest', index=1, 1183 | number=5, type=11, cpp_type=10, label=1, 1184 | has_default_value=False, default_value=None, 1185 | message_type=None, enum_type=None, containing_type=None, 1186 | is_extension=False, extension_scope=None, 1187 | options=None), 1188 | descriptor.FieldDescriptor( 1189 | name='getAssetRequest', full_name='Request.RequestGroup.getAssetRequest', index=2, 1190 | number=10, type=11, cpp_type=10, label=1, 1191 | has_default_value=False, default_value=None, 1192 | message_type=None, enum_type=None, containing_type=None, 1193 | is_extension=False, extension_scope=None, 1194 | options=None), 1195 | descriptor.FieldDescriptor( 1196 | name='imageRequest', full_name='Request.RequestGroup.imageRequest', index=3, 1197 | number=11, type=11, cpp_type=10, label=1, 1198 | has_default_value=False, default_value=None, 1199 | message_type=None, enum_type=None, containing_type=None, 1200 | is_extension=False, extension_scope=None, 1201 | options=None), 1202 | descriptor.FieldDescriptor( 1203 | name='subCategoriesRequest', full_name='Request.RequestGroup.subCategoriesRequest', index=4, 1204 | number=14, type=11, cpp_type=10, label=1, 1205 | has_default_value=False, default_value=None, 1206 | message_type=None, enum_type=None, containing_type=None, 1207 | is_extension=False, extension_scope=None, 1208 | options=None), 1209 | descriptor.FieldDescriptor( 1210 | name='categoriesRequest', full_name='Request.RequestGroup.categoriesRequest', index=5, 1211 | number=21, type=11, cpp_type=10, label=1, 1212 | has_default_value=False, default_value=None, 1213 | message_type=None, enum_type=None, containing_type=None, 1214 | is_extension=False, extension_scope=None, 1215 | options=None), 1216 | ], 1217 | extensions=[ 1218 | ], 1219 | nested_types=[], 1220 | enum_types=[ 1221 | ], 1222 | options=None, 1223 | is_extendable=False, 1224 | extension_ranges=[], 1225 | serialized_start=2708, 1226 | serialized_end=2983, 1227 | ) 1228 | 1229 | _REQUEST = descriptor.Descriptor( 1230 | name='Request', 1231 | full_name='Request', 1232 | filename=None, 1233 | file=DESCRIPTOR, 1234 | containing_type=None, 1235 | fields=[ 1236 | descriptor.FieldDescriptor( 1237 | name='context', full_name='Request.context', index=0, 1238 | number=1, type=11, cpp_type=10, label=1, 1239 | has_default_value=False, default_value=None, 1240 | message_type=None, enum_type=None, containing_type=None, 1241 | is_extension=False, extension_scope=None, 1242 | options=None), 1243 | descriptor.FieldDescriptor( 1244 | name='requestgroup', full_name='Request.requestgroup', index=1, 1245 | number=2, type=10, cpp_type=10, label=3, 1246 | has_default_value=False, default_value=[], 1247 | message_type=None, enum_type=None, containing_type=None, 1248 | is_extension=False, extension_scope=None, 1249 | options=None), 1250 | ], 1251 | extensions=[ 1252 | ], 1253 | nested_types=[_REQUEST_REQUESTGROUP, ], 1254 | enum_types=[ 1255 | ], 1256 | options=None, 1257 | is_extendable=False, 1258 | extension_ranges=[], 1259 | serialized_start=2617, 1260 | serialized_end=2983, 1261 | ) 1262 | 1263 | _RESPONSECONTEXT = descriptor.Descriptor( 1264 | name='ResponseContext', 1265 | full_name='ResponseContext', 1266 | filename=None, 1267 | file=DESCRIPTOR, 1268 | containing_type=None, 1269 | fields=[ 1270 | descriptor.FieldDescriptor( 1271 | name='result', full_name='ResponseContext.result', index=0, 1272 | number=1, type=14, cpp_type=8, label=1, 1273 | has_default_value=False, default_value=0, 1274 | message_type=None, enum_type=None, containing_type=None, 1275 | is_extension=False, extension_scope=None, 1276 | options=None), 1277 | descriptor.FieldDescriptor( 1278 | name='maxAge', full_name='ResponseContext.maxAge', index=1, 1279 | number=2, type=5, cpp_type=1, label=1, 1280 | has_default_value=False, default_value=0, 1281 | message_type=None, enum_type=None, containing_type=None, 1282 | is_extension=False, extension_scope=None, 1283 | options=None), 1284 | descriptor.FieldDescriptor( 1285 | name='etag', full_name='ResponseContext.etag', index=2, 1286 | number=3, type=9, cpp_type=9, label=1, 1287 | has_default_value=False, default_value=unicode("", "utf-8"), 1288 | message_type=None, enum_type=None, containing_type=None, 1289 | is_extension=False, extension_scope=None, 1290 | options=None), 1291 | descriptor.FieldDescriptor( 1292 | name='serverVersion', full_name='ResponseContext.serverVersion', index=3, 1293 | number=4, type=5, cpp_type=1, label=1, 1294 | has_default_value=False, default_value=0, 1295 | message_type=None, enum_type=None, containing_type=None, 1296 | is_extension=False, extension_scope=None, 1297 | options=None), 1298 | ], 1299 | extensions=[ 1300 | ], 1301 | nested_types=[], 1302 | enum_types=[ 1303 | _RESPONSECONTEXT_RESULTTYPE, 1304 | ], 1305 | options=None, 1306 | is_extendable=False, 1307 | extension_ranges=[], 1308 | serialized_start=2986, 1309 | serialized_end=3208, 1310 | ) 1311 | 1312 | _RESPONSE_RESPONSEGROUP = descriptor.Descriptor( 1313 | name='ResponseGroup', 1314 | full_name='Response.ResponseGroup', 1315 | filename=None, 1316 | file=DESCRIPTOR, 1317 | containing_type=None, 1318 | fields=[ 1319 | descriptor.FieldDescriptor( 1320 | name='context', full_name='Response.ResponseGroup.context', index=0, 1321 | number=2, type=11, cpp_type=10, label=1, 1322 | has_default_value=False, default_value=None, 1323 | message_type=None, enum_type=None, containing_type=None, 1324 | is_extension=False, extension_scope=None, 1325 | options=None), 1326 | descriptor.FieldDescriptor( 1327 | name='appsResponse', full_name='Response.ResponseGroup.appsResponse', index=1, 1328 | number=3, type=11, cpp_type=10, label=1, 1329 | has_default_value=False, default_value=None, 1330 | message_type=None, enum_type=None, containing_type=None, 1331 | is_extension=False, extension_scope=None, 1332 | options=None), 1333 | descriptor.FieldDescriptor( 1334 | name='commentsResponse', full_name='Response.ResponseGroup.commentsResponse', index=2, 1335 | number=4, type=11, cpp_type=10, label=1, 1336 | has_default_value=False, default_value=None, 1337 | message_type=None, enum_type=None, containing_type=None, 1338 | is_extension=False, extension_scope=None, 1339 | options=None), 1340 | descriptor.FieldDescriptor( 1341 | name='getAssetResponse', full_name='Response.ResponseGroup.getAssetResponse', index=3, 1342 | number=9, type=11, cpp_type=10, label=1, 1343 | has_default_value=False, default_value=None, 1344 | message_type=None, enum_type=None, containing_type=None, 1345 | is_extension=False, extension_scope=None, 1346 | options=None), 1347 | descriptor.FieldDescriptor( 1348 | name='imageResponse', full_name='Response.ResponseGroup.imageResponse', index=4, 1349 | number=10, type=11, cpp_type=10, label=1, 1350 | has_default_value=False, default_value=None, 1351 | message_type=None, enum_type=None, containing_type=None, 1352 | is_extension=False, extension_scope=None, 1353 | options=None), 1354 | descriptor.FieldDescriptor( 1355 | name='categoriesResponse', full_name='Response.ResponseGroup.categoriesResponse', index=5, 1356 | number=20, type=11, cpp_type=10, label=1, 1357 | has_default_value=False, default_value=None, 1358 | message_type=None, enum_type=None, containing_type=None, 1359 | is_extension=False, extension_scope=None, 1360 | options=None), 1361 | descriptor.FieldDescriptor( 1362 | name='subCategoriesResponse', full_name='Response.ResponseGroup.subCategoriesResponse', index=6, 1363 | number=13, type=11, cpp_type=10, label=1, 1364 | has_default_value=False, default_value=None, 1365 | message_type=None, enum_type=None, containing_type=None, 1366 | is_extension=False, extension_scope=None, 1367 | options=None), 1368 | ], 1369 | extensions=[ 1370 | ], 1371 | nested_types=[], 1372 | enum_types=[ 1373 | ], 1374 | options=None, 1375 | is_extendable=False, 1376 | extension_ranges=[], 1377 | serialized_start=3272, 1378 | serialized_end=3595, 1379 | ) 1380 | 1381 | _RESPONSE = descriptor.Descriptor( 1382 | name='Response', 1383 | full_name='Response', 1384 | filename=None, 1385 | file=DESCRIPTOR, 1386 | containing_type=None, 1387 | fields=[ 1388 | descriptor.FieldDescriptor( 1389 | name='responsegroup', full_name='Response.responsegroup', index=0, 1390 | number=1, type=10, cpp_type=10, label=3, 1391 | has_default_value=False, default_value=[], 1392 | message_type=None, enum_type=None, containing_type=None, 1393 | is_extension=False, extension_scope=None, 1394 | options=None), 1395 | ], 1396 | extensions=[ 1397 | ], 1398 | nested_types=[_RESPONSE_RESPONSEGROUP, ], 1399 | enum_types=[ 1400 | ], 1401 | options=None, 1402 | is_extendable=False, 1403 | extension_ranges=[], 1404 | serialized_start=3211, 1405 | serialized_end=3595, 1406 | ) 1407 | 1408 | _APPSREQUEST.fields_by_name['appType'].enum_type = _APPTYPE 1409 | _APPSREQUEST.fields_by_name['orderType'].enum_type = _APPSREQUEST_ORDERTYPE 1410 | _APPSREQUEST.fields_by_name['viewType'].enum_type = _APPSREQUEST_VIEWTYPE 1411 | _APPSREQUEST_ORDERTYPE.containing_type = _APPSREQUEST; 1412 | _APPSREQUEST_VIEWTYPE.containing_type = _APPSREQUEST; 1413 | _APPSRESPONSE.fields_by_name['app'].message_type = _APP 1414 | _CATEGORY.fields_by_name['subCategories'].message_type = _CATEGORY 1415 | _COMMENTSRESPONSE.fields_by_name['comments'].message_type = _COMMENT 1416 | _APP_EXTENDEDINFO.containing_type = _APP; 1417 | _APP.fields_by_name['appType'].enum_type = _APPTYPE 1418 | _APP.fields_by_name['extendedinfo'].message_type = _APP_EXTENDEDINFO 1419 | _CATEGORIESRESPONSE.fields_by_name['categories'].message_type = _CATEGORY 1420 | _SUBCATEGORIESREQUEST.fields_by_name['appType'].enum_type = _APPTYPE 1421 | _SUBCATEGORIESRESPONSE.fields_by_name['category'].message_type = _CATEGORY 1422 | _GETIMAGEREQUEST.fields_by_name['imageUsage'].enum_type = _GETIMAGEREQUEST_APPIMAGEUSAGE 1423 | _GETIMAGEREQUEST_APPIMAGEUSAGE.containing_type = _GETIMAGEREQUEST; 1424 | _GETASSETRESPONSE_INSTALLASSET.containing_type = _GETASSETRESPONSE; 1425 | _GETASSETRESPONSE.fields_by_name['installasset'].message_type = _GETASSETRESPONSE_INSTALLASSET 1426 | _REQUEST_REQUESTGROUP.fields_by_name['appsRequest'].message_type = _APPSREQUEST 1427 | _REQUEST_REQUESTGROUP.fields_by_name['commentsRequest'].message_type = _COMMENTSREQUEST 1428 | _REQUEST_REQUESTGROUP.fields_by_name['getAssetRequest'].message_type = _GETASSETREQUEST 1429 | _REQUEST_REQUESTGROUP.fields_by_name['imageRequest'].message_type = _GETIMAGEREQUEST 1430 | _REQUEST_REQUESTGROUP.fields_by_name['subCategoriesRequest'].message_type = _SUBCATEGORIESREQUEST 1431 | _REQUEST_REQUESTGROUP.fields_by_name['categoriesRequest'].message_type = _CATEGORIESREQUEST 1432 | _REQUEST_REQUESTGROUP.containing_type = _REQUEST; 1433 | _REQUEST.fields_by_name['context'].message_type = _REQUESTCONTEXT 1434 | _REQUEST.fields_by_name['requestgroup'].message_type = _REQUEST_REQUESTGROUP 1435 | _RESPONSECONTEXT.fields_by_name['result'].enum_type = _RESPONSECONTEXT_RESULTTYPE 1436 | _RESPONSECONTEXT_RESULTTYPE.containing_type = _RESPONSECONTEXT; 1437 | _RESPONSE_RESPONSEGROUP.fields_by_name['context'].message_type = _RESPONSECONTEXT 1438 | _RESPONSE_RESPONSEGROUP.fields_by_name['appsResponse'].message_type = _APPSRESPONSE 1439 | _RESPONSE_RESPONSEGROUP.fields_by_name['commentsResponse'].message_type = _COMMENTSRESPONSE 1440 | _RESPONSE_RESPONSEGROUP.fields_by_name['getAssetResponse'].message_type = _GETASSETRESPONSE 1441 | _RESPONSE_RESPONSEGROUP.fields_by_name['imageResponse'].message_type = _GETIMAGERESPONSE 1442 | _RESPONSE_RESPONSEGROUP.fields_by_name['categoriesResponse'].message_type = _CATEGORIESRESPONSE 1443 | _RESPONSE_RESPONSEGROUP.fields_by_name['subCategoriesResponse'].message_type = _SUBCATEGORIESRESPONSE 1444 | _RESPONSE_RESPONSEGROUP.containing_type = _RESPONSE; 1445 | _RESPONSE.fields_by_name['responsegroup'].message_type = _RESPONSE_RESPONSEGROUP 1446 | DESCRIPTOR.message_types_by_name['AppsRequest'] = _APPSREQUEST 1447 | DESCRIPTOR.message_types_by_name['AppsResponse'] = _APPSRESPONSE 1448 | DESCRIPTOR.message_types_by_name['Category'] = _CATEGORY 1449 | DESCRIPTOR.message_types_by_name['CommentsRequest'] = _COMMENTSREQUEST 1450 | DESCRIPTOR.message_types_by_name['CommentsResponse'] = _COMMENTSRESPONSE 1451 | DESCRIPTOR.message_types_by_name['App'] = _APP 1452 | DESCRIPTOR.message_types_by_name['Comment'] = _COMMENT 1453 | DESCRIPTOR.message_types_by_name['CategoriesRequest'] = _CATEGORIESREQUEST 1454 | DESCRIPTOR.message_types_by_name['CategoriesResponse'] = _CATEGORIESRESPONSE 1455 | DESCRIPTOR.message_types_by_name['SubCategoriesRequest'] = _SUBCATEGORIESREQUEST 1456 | DESCRIPTOR.message_types_by_name['SubCategoriesResponse'] = _SUBCATEGORIESRESPONSE 1457 | DESCRIPTOR.message_types_by_name['RequestContext'] = _REQUESTCONTEXT 1458 | DESCRIPTOR.message_types_by_name['GetImageRequest'] = _GETIMAGEREQUEST 1459 | DESCRIPTOR.message_types_by_name['GetAssetRequest'] = _GETASSETREQUEST 1460 | DESCRIPTOR.message_types_by_name['GetImageResponse'] = _GETIMAGERESPONSE 1461 | DESCRIPTOR.message_types_by_name['GetAssetResponse'] = _GETASSETRESPONSE 1462 | DESCRIPTOR.message_types_by_name['Request'] = _REQUEST 1463 | DESCRIPTOR.message_types_by_name['ResponseContext'] = _RESPONSECONTEXT 1464 | DESCRIPTOR.message_types_by_name['Response'] = _RESPONSE 1465 | 1466 | class AppsRequest(message.Message): 1467 | __metaclass__ = reflection.GeneratedProtocolMessageType 1468 | DESCRIPTOR = _APPSREQUEST 1469 | 1470 | # @@protoc_insertion_point(class_scope:AppsRequest) 1471 | 1472 | class AppsResponse(message.Message): 1473 | __metaclass__ = reflection.GeneratedProtocolMessageType 1474 | DESCRIPTOR = _APPSRESPONSE 1475 | 1476 | # @@protoc_insertion_point(class_scope:AppsResponse) 1477 | 1478 | class Category(message.Message): 1479 | __metaclass__ = reflection.GeneratedProtocolMessageType 1480 | DESCRIPTOR = _CATEGORY 1481 | 1482 | # @@protoc_insertion_point(class_scope:Category) 1483 | 1484 | class CommentsRequest(message.Message): 1485 | __metaclass__ = reflection.GeneratedProtocolMessageType 1486 | DESCRIPTOR = _COMMENTSREQUEST 1487 | 1488 | # @@protoc_insertion_point(class_scope:CommentsRequest) 1489 | 1490 | class CommentsResponse(message.Message): 1491 | __metaclass__ = reflection.GeneratedProtocolMessageType 1492 | DESCRIPTOR = _COMMENTSRESPONSE 1493 | 1494 | # @@protoc_insertion_point(class_scope:CommentsResponse) 1495 | 1496 | class App(message.Message): 1497 | __metaclass__ = reflection.GeneratedProtocolMessageType 1498 | 1499 | class ExtendedInfo(message.Message): 1500 | __metaclass__ = reflection.GeneratedProtocolMessageType 1501 | DESCRIPTOR = _APP_EXTENDEDINFO 1502 | 1503 | # @@protoc_insertion_point(class_scope:App.ExtendedInfo) 1504 | DESCRIPTOR = _APP 1505 | 1506 | # @@protoc_insertion_point(class_scope:App) 1507 | 1508 | class Comment(message.Message): 1509 | __metaclass__ = reflection.GeneratedProtocolMessageType 1510 | DESCRIPTOR = _COMMENT 1511 | 1512 | # @@protoc_insertion_point(class_scope:Comment) 1513 | 1514 | class CategoriesRequest(message.Message): 1515 | __metaclass__ = reflection.GeneratedProtocolMessageType 1516 | DESCRIPTOR = _CATEGORIESREQUEST 1517 | 1518 | # @@protoc_insertion_point(class_scope:CategoriesRequest) 1519 | 1520 | class CategoriesResponse(message.Message): 1521 | __metaclass__ = reflection.GeneratedProtocolMessageType 1522 | DESCRIPTOR = _CATEGORIESRESPONSE 1523 | 1524 | # @@protoc_insertion_point(class_scope:CategoriesResponse) 1525 | 1526 | class SubCategoriesRequest(message.Message): 1527 | __metaclass__ = reflection.GeneratedProtocolMessageType 1528 | DESCRIPTOR = _SUBCATEGORIESREQUEST 1529 | 1530 | # @@protoc_insertion_point(class_scope:SubCategoriesRequest) 1531 | 1532 | class SubCategoriesResponse(message.Message): 1533 | __metaclass__ = reflection.GeneratedProtocolMessageType 1534 | DESCRIPTOR = _SUBCATEGORIESRESPONSE 1535 | 1536 | # @@protoc_insertion_point(class_scope:SubCategoriesResponse) 1537 | 1538 | class RequestContext(message.Message): 1539 | __metaclass__ = reflection.GeneratedProtocolMessageType 1540 | DESCRIPTOR = _REQUESTCONTEXT 1541 | 1542 | # @@protoc_insertion_point(class_scope:RequestContext) 1543 | 1544 | class GetImageRequest(message.Message): 1545 | __metaclass__ = reflection.GeneratedProtocolMessageType 1546 | DESCRIPTOR = _GETIMAGEREQUEST 1547 | 1548 | # @@protoc_insertion_point(class_scope:GetImageRequest) 1549 | 1550 | class GetAssetRequest(message.Message): 1551 | __metaclass__ = reflection.GeneratedProtocolMessageType 1552 | DESCRIPTOR = _GETASSETREQUEST 1553 | 1554 | # @@protoc_insertion_point(class_scope:GetAssetRequest) 1555 | 1556 | class GetImageResponse(message.Message): 1557 | __metaclass__ = reflection.GeneratedProtocolMessageType 1558 | DESCRIPTOR = _GETIMAGERESPONSE 1559 | 1560 | # @@protoc_insertion_point(class_scope:GetImageResponse) 1561 | 1562 | class GetAssetResponse(message.Message): 1563 | __metaclass__ = reflection.GeneratedProtocolMessageType 1564 | 1565 | class InstallAsset(message.Message): 1566 | __metaclass__ = reflection.GeneratedProtocolMessageType 1567 | DESCRIPTOR = _GETASSETRESPONSE_INSTALLASSET 1568 | 1569 | # @@protoc_insertion_point(class_scope:GetAssetResponse.InstallAsset) 1570 | DESCRIPTOR = _GETASSETRESPONSE 1571 | 1572 | # @@protoc_insertion_point(class_scope:GetAssetResponse) 1573 | 1574 | class Request(message.Message): 1575 | __metaclass__ = reflection.GeneratedProtocolMessageType 1576 | 1577 | class RequestGroup(message.Message): 1578 | __metaclass__ = reflection.GeneratedProtocolMessageType 1579 | DESCRIPTOR = _REQUEST_REQUESTGROUP 1580 | 1581 | # @@protoc_insertion_point(class_scope:Request.RequestGroup) 1582 | DESCRIPTOR = _REQUEST 1583 | 1584 | # @@protoc_insertion_point(class_scope:Request) 1585 | 1586 | class ResponseContext(message.Message): 1587 | __metaclass__ = reflection.GeneratedProtocolMessageType 1588 | DESCRIPTOR = _RESPONSECONTEXT 1589 | 1590 | # @@protoc_insertion_point(class_scope:ResponseContext) 1591 | 1592 | class Response(message.Message): 1593 | __metaclass__ = reflection.GeneratedProtocolMessageType 1594 | 1595 | class ResponseGroup(message.Message): 1596 | __metaclass__ = reflection.GeneratedProtocolMessageType 1597 | DESCRIPTOR = _RESPONSE_RESPONSEGROUP 1598 | 1599 | # @@protoc_insertion_point(class_scope:Response.ResponseGroup) 1600 | DESCRIPTOR = _RESPONSE 1601 | 1602 | # @@protoc_insertion_point(class_scope:Response) 1603 | 1604 | # @@protoc_insertion_point(module_scope) 1605 | --------------------------------------------------------------------------------