| After Width: | Height: | Size: 118 KiB | 
| After Width: | Height: | Size: 280 KiB | 
| After Width: | Height: | Size: 213 KiB | 
| After Width: | Height: | Size: 86 KiB | 
| After Width: | Height: | Size: 128 KiB | 
| After Width: | Height: | Size: 122 KiB | 
| After Width: | Height: | Size: 168 KiB | 
| After Width: | Height: | Size: 80 KiB | 
| @ -0,0 +1,49 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding:utf-8 -*- | ||||
| # project: 3月  | ||||
| # author: liuyu | ||||
| # date: 2020/3/18 | ||||
| 
 | ||||
| from qiniu import Auth | ||||
| from qiniu import BucketManager | ||||
| 
 | ||||
| class QiNiu(object): | ||||
|     def __init__(self): | ||||
|         access_key="mTqfvkLVSTVb2_1ERjDlFS_WAHLSkpDxYr4e4fiJ" | ||||
|         secret_key="0G9fXfgmi8h1-bmEsABYkE6apf8IuwKpj3hYLynv" | ||||
|         self.bucket_name = 'fir-storage' | ||||
|         self.download_domain = 'fly-cdn.dvcloud.xin' | ||||
|         self.qiniu_obj = Auth(access_key,secret_key) | ||||
| 
 | ||||
|     def get_qiniu_upload_token(self,name): | ||||
|         # 生成上传 Token,可以指定过期时间等 | ||||
|         # 上传策略示例 | ||||
|         # https://developer.qiniu.com/kodo/manual/1206/put-policy | ||||
|         policy = { | ||||
|             # 'callbackUrl':'https://requestb.in/1c7q2d31', | ||||
|             # 'callbackBody':'filename=$(fname)&filesize=$(fsize)' | ||||
|             # 'persistentOps':'imageView2/1/w/200/h/200' | ||||
|         } | ||||
|         # 3600为token过期时间,秒为单位。3600等于一小时 | ||||
|         token = self.qiniu_obj.upload_token(self.bucket_name, name, 3600, policy) | ||||
|         # print(token) | ||||
|         return token | ||||
| 
 | ||||
|     def get_qiniu_download_token(self,name): | ||||
|         #有两种方式构造base_url的形式 | ||||
|         base_url = 'http://%s/%s' % (self.download_domain, name) | ||||
|         #或者直接输入url的方式下载 | ||||
|         #可以设置token过期时间 | ||||
|         private_url = self.qiniu_obj.private_download_url(base_url, expires=3600) | ||||
|         print(private_url) | ||||
|         return private_url | ||||
| 
 | ||||
|     def del_qiniu_file(self,name): | ||||
|         # 初始化BucketManager | ||||
|         bucket = BucketManager(self.qiniu_obj) | ||||
|         # 你要测试的空间, 并且这个key在你空间中存在 | ||||
|         # 删除bucket_name 中的文件 key | ||||
|         ret, info = bucket.delete(self.bucket_name, name) | ||||
|         print(info) | ||||
|         return ret | ||||
| 
 | ||||
| @ -0,0 +1,78 @@ | ||||
| #!/usr/bin/env python | ||||
| # -*- coding:utf-8 -*- | ||||
| # project: 3月 | ||||
| # author: liuyu | ||||
| # date: 2020/3/6 | ||||
| from rest_framework.views import APIView | ||||
| from api.utils.response import BaseResponse | ||||
| from api.utils.auth import ExpiringTokenAuthentication | ||||
| from api.utils.randomstrings import make_from_user_uuid | ||||
| from rest_framework.response import Response | ||||
| from fir_ser import settings | ||||
| from api.utils.app.analyze import AnalyzeUtil, get_random_short,SaveAppInfos | ||||
| import os | ||||
| from api.utils.qiniu.tools import QiNiu | ||||
| from api.models import Apps | ||||
| from api.utils.randomstrings import make_app_uuid | ||||
| 
 | ||||
| 
 | ||||
| class QiNiuUploadView(APIView): | ||||
| 
 | ||||
|     authentication_classes = [ExpiringTokenAuthentication, ] | ||||
|     def post(self, request): | ||||
|         res = BaseResponse() | ||||
|         # 1.接受 bundelid ,返回随机应用名称和短连接 | ||||
|         bundleid = request.data.get("bundleid", None) | ||||
|         app_type = request.data.get("type", None) | ||||
| 
 | ||||
|         if bundleid and app_type: | ||||
|             ap = 'apk' | ||||
|             if app_type == 'iOS': | ||||
|                 ap='ipa' | ||||
|             app_uuid = make_app_uuid(request.user, bundleid + ap) | ||||
|             release_id = make_from_user_uuid(request.user) | ||||
|             png_id = make_from_user_uuid(request.user) | ||||
|             app_obj = Apps.objects.filter(app_id=app_uuid).first() | ||||
|             print(app_obj) | ||||
|             if app_obj: | ||||
|                 short = app_obj.short | ||||
|             else: | ||||
|                 short = get_random_short() | ||||
|             if app_type == 'iOS': | ||||
|                 upload_key = release_id+'.ipa' | ||||
|             else: | ||||
|                 upload_key = release_id+'.apk' | ||||
|             png_key = png_id+'.png' | ||||
|             qiniu = QiNiu() | ||||
|             res.data = {"app_uuid": app_uuid, "short": short, | ||||
|                         "domain_name": request.user.domain_name, | ||||
|                         "upload_token":qiniu.get_qiniu_upload_token(upload_key), | ||||
|                         "upload_key":upload_key, | ||||
|                         "png_token":qiniu.get_qiniu_upload_token(png_key), | ||||
|                         "png_key":png_key} | ||||
|         else: | ||||
|             res.code = 1003 | ||||
| 
 | ||||
|         return Response(res.dict) | ||||
| 
 | ||||
|     def put(self,request): | ||||
|         res = BaseResponse() | ||||
|         print(request.data) | ||||
|         data=request.data | ||||
|         appinfo={ | ||||
|             "labelname":data.get("appname"), | ||||
|             "version":data.get("buildversion"), | ||||
|             "versioncode":data.get("version"), | ||||
|             "release_type":data.get("release_type"), | ||||
|             "miniOSversion":data.get("miniosversion"), | ||||
|             "changelog":data.get("changelog",'') | ||||
|         } | ||||
| 
 | ||||
|         try: | ||||
|             SaveAppInfos(data.get("upload_key"), request.user, appinfo, | ||||
|                      data.get("bundleid"), data.get("png_key"), data.get("short"), data.get('filesize')) | ||||
|         except Exception as e: | ||||
|             print(e) | ||||
|             res.code = 10003 | ||||
|         return Response(res.dict) | ||||
| 
 | ||||