#-*- coding:utf-8 -*-#Author: drew#create time: 2020-07030#update time:#app store connect api
importjwtimporttimeimportjsonimportrequestsfrom datetime importdatetime, timedelta
algorithm= 'ES256'base_api_url= "https://api.appstoreconnect.apple.com"
defget_token(key, iss, key_file):""":param key:
:param iss:
:param key_file:
:return:"""
#读取私钥
private_key = open(key_file, 'r').read()#构造header
header ={"alg": algorithm,"kid": key,"typ": "JWT"}#构造payload
payload ={"iss": iss,"exp": int(time.mktime((datetime.now() + timedelta(minutes=20)).timetuple())),"aud": "appstoreconnect-v1"}
token= jwt.encode(payload=payload, key=private_key, algorithm=algorithm, headers=header).decode('ascii')returntokendef base_call(url, token, method="get", data=None):""":param url:
:param token:
:param method:
:param data:
:return:"""re_header= {"Authorization": "Bearer %s" %token}
r={}
url= base_api_url +url
requests.adapters.DEFAULT_RETRIES= 1req=requests.session()
req.keep_alive=Falseif method.lower() == "get":
r= req.get(url, params=data, headers=re_header)elif method.lower() == "post":
re_header["Content-Type"] = "application/json"r= req.post(url=url, headers=re_header, data=json.dumps(data))elif method.lower() == "patch":
re_header["Content-Type"] = "application/json"r= req.patch(url=url, headers=re_header, data=json.dumps(data))returnr#------------------ 获取具体接口的方法 ------------------
def get_devices(api_token, data=None):"""获取devices信息
:param api_token:
:param data:
:return:"""get_devices_url= '/v1/devices'
if data isNone:
data={"filter[platform]": "IOS",#"filter[status]": "ENABLED",
"limit": 100}
res= base_call(get_devices_url, api_token, 'get', data)returnresdefset_devices(api_token, data):"""增加devices信息
:param api_token:
:param data:
:return:"""set_device_url= '/v1/devices'res= base_call(set_device_url, api_token, 'post', data)returnresdefupdate_devices(api_token, id, data,):"""增加devices信息
:param id:
:param api_token:
:param data:
:return:"""set_device_url= '/v1/devices/{%s}' %id
res= base_call(set_device_url, api_token, 'patch', data)returnres"""if __name__ == "__main__":
ios_api_key = 'T8****8AD8'
ios_api_issuer = '69a**9-b79b-4**3-e053-5b**1a4d1'
file_key = "/Users/drew/.private_keys/AuthKey_T85LR***8.p8"
token_api = get_token(ios_api_key, ios_api_issuer, file_key)
# get_udid()
post_data = {
"data": {
"attributes": {
"name": "zb",
"platform": "IOS",
"udid": "80b677c2c****e476caf61ba0d34274000"
},
"type": "devices"
}
}
res = set_udid(token_api, post_data)
print(res)"""