googleplay-api/gpapi/utils.py

79 lines
1.8 KiB
Python
Raw Permalink Normal View History

import struct
import sys
from google.protobuf.message import Message
2018-12-23 21:36:04 +00:00
from google.protobuf.json_format import MessageToDict
2017-12-09 09:06:34 +00:00
from . import googleplay_pb2
def parseProtobufObj(obj):
2018-12-23 21:36:04 +00:00
return MessageToDict(obj, False, False, False)
def readInt(byteArray, start):
"""Read the byte array, starting from *start* position,
as an 32-bit unsigned integer"""
return struct.unpack("!L", byteArray[start:][0:4])[0]
def toBigInt(byteArray):
"""Convert the byte array to a BigInteger"""
array = byteArray[::-1] # reverse array
out = 0
for key, value in enumerate(array):
2018-12-23 21:36:04 +00:00
decoded = struct.unpack("B", bytes([value]))[0]
out = out | decoded << key * 8
return out
2017-12-09 09:06:34 +00:00
2017-12-09 09:58:00 +00:00
def hasPrefetch(obj):
2017-12-09 09:06:34 +00:00
try:
2017-12-09 09:58:00 +00:00
return len(obj.preFetch) > 0
2017-12-09 09:06:34 +00:00
except ValueError:
return False
2017-12-09 09:58:00 +00:00
def hasListResponse(obj):
2017-12-09 09:06:34 +00:00
try:
2017-12-09 09:58:00 +00:00
return obj.HasField('listResponse')
2017-12-09 09:06:34 +00:00
except ValueError:
return False
2017-12-09 09:58:00 +00:00
def hasSearchResponse(obj):
2017-12-09 09:06:34 +00:00
try:
2017-12-09 09:58:00 +00:00
return obj.HasField('searchResponse')
2017-12-09 09:06:34 +00:00
except ValueError:
return False
2017-12-09 09:58:00 +00:00
def hasCluster(obj):
try:
return obj.HasField('cluster')
except ValueError:
return False
def hasTosContent(tocResponse):
try:
return tocResponse.HasField('tosContent')
except ValueError:
return False
def hasTosToken(tocResponse):
try:
return tocResponse.HasField('tosToken')
except ValueError:
return False
def hasCookie(tocResponse):
try:
return tocResponse.HasField('cookie')
except ValueError:
return False
2017-12-09 09:58:00 +00:00
def hasDoc(obj):
# doc an be a single object or a
# RepeatedComposite object
try:
existance = obj.HasField('doc')
except ValueError:
try:
existance = len(obj.doc) > 0
except TypeError:
existance = False
2018-03-18 20:18:47 +00:00
return existance