diff --git a/admin/.env.development b/admin/.env.development deleted file mode 100644 index 5f0c274d..00000000 --- a/admin/.env.development +++ /dev/null @@ -1,8 +0,0 @@ -# api请求地址 -VITE_APP_BASE_URL='/adminapi/' - -# 图片服务器地址 -VITE_IMG_DOMAIN='' - -# 请求时header中token的参数名 -VITE_REQUEST_HEADER_TOKEN_KEY='token' \ No newline at end of file diff --git a/admin/.env.production b/admin/.env.production deleted file mode 100644 index 2d106965..00000000 --- a/admin/.env.production +++ /dev/null @@ -1,8 +0,0 @@ -# api请求地址 -VITE_APP_BASE_URL='/adminapi/' - -# 图片服务器地址 -VITE_IMG_DOMAIN='' - -# 请求时header中token的参数名 -VITE_REQUEST_HEADER_TOKEN_KEY='token' diff --git a/admin/.gitignore b/admin/.gitignore index a547bf36..06523083 100644 --- a/admin/.gitignore +++ b/admin/.gitignore @@ -22,3 +22,6 @@ dist-ssr *.njsproj *.sln *.sw? + +.env.development +.env.production \ No newline at end of file diff --git a/admin/auto-imports.d.ts b/admin/auto-imports.d.ts index a51b7a66..08908edd 100644 --- a/admin/auto-imports.d.ts +++ b/admin/auto-imports.d.ts @@ -1,5 +1,5 @@ // Generated by 'unplugin-auto-import' export {} declare global { - const ElNotification: typeof import('element-plus/es')['ElNotification'] + } diff --git a/admin/src/app/api/campus.ts b/admin/src/app/api/campus.ts new file mode 100644 index 00000000..af129908 --- /dev/null +++ b/admin/src/app/api/campus.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// USER_CODE_BEGIN -- campus +/** + * 获取校区列表 + * @param params + * @returns + */ +export function getCampusList(params: Record) { + return request.get(`campus/campus`, {params}) +} + +/** + * 获取校区详情 + * @param id 校区id + * @returns + */ +export function getCampusInfo(id: number) { + return request.get(`campus/campus/${id}`); +} + +/** + * 添加校区 + * @param params + * @returns + */ +export function addCampus(params: Record) { + return request.post('campus/campus', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑校区 + * @param id + * @param params + * @returns + */ +export function editCampus(params: Record) { + return request.put(`campus/campus/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除校区 + * @param id + * @returns + */ +export function deleteCampus(id: number) { + return request.delete(`campus/campus/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + + +// USER_CODE_END -- campus diff --git a/admin/src/app/lang/zh-cn/campus.campus.json b/admin/src/app/lang/zh-cn/campus.campus.json new file mode 100644 index 00000000..a4f26cd9 --- /dev/null +++ b/admin/src/app/lang/zh-cn/campus.campus.json @@ -0,0 +1,27 @@ +{ + "id":"主键ID", + "idPlaceholder":"请输入主键ID", + "campusName":"校区名称", + "campusNamePlaceholder":"请输入校区名称", + "campusAddress":"校区地址", + "campusAddressPlaceholder":"请输入校区地址", + "campusPreviewImage":"校区预览图,存储图片路径", + "campusPreviewImagePlaceholder":"请输入校区预览图,存储图片路径", + "campusCoordinates":"校区坐标,格式为经度,纬度", + "campusCoordinatesPlaceholder":"请输入校区坐标,格式为经度,纬度", + "campusIntroduction":"校区介绍", + "campusIntroductionPlaceholder":"请输入校区介绍", + "campusStatus":"校区状态:0-禁用,1-启用", + "campusStatusPlaceholder":"请输入校区状态:0-禁用,1-启用", + "createTime":"校区创建时间", + "createTimePlaceholder":"请输入校区创建时间", + "updateTime":"校区更新时间", + "updateTimePlaceholder":"请输入校区更新时间", + "deleteTime":"逻辑删除字段,NULL表示未删除,非空表示已删除", + "deleteTimePlaceholder":"请输入逻辑删除字段,NULL表示未删除,非空表示已删除", + "addCampus":"添加校区", + "updateCampus":"编辑校区", + "campusDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/app/views/campus/campus.vue b/admin/src/app/views/campus/campus.vue new file mode 100644 index 00000000..5b8dd4b6 --- /dev/null +++ b/admin/src/app/views/campus/campus.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/admin/src/app/views/campus/components/campus-edit.vue b/admin/src/app/views/campus/components/campus-edit.vue new file mode 100644 index 00000000..8e5b36a8 --- /dev/null +++ b/admin/src/app/views/campus/components/campus-edit.vue @@ -0,0 +1,203 @@ + + + + + + diff --git a/niucloud/.env b/niucloud/.env deleted file mode 100644 index 4d31c3c2..00000000 --- a/niucloud/.env +++ /dev/null @@ -1 +0,0 @@ -APP_DEBUG = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai AUTH_KEY = gogheyxfainjsraqdbusphmvcfdtkwzl PRODUCT_KEY = {product_key} [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = new_school_oa USERNAME = new_school_oa PASSWORD = f8a27896b1 HOSTPORT = 3306 PREFIX = school_ CHARSET = utf8mb4 DEBUG = false [REDIS] REDIS_HOSTNAME = 127.0.0.1 PORT = 6379 REDIS_PASSWORD = SELECT = 0 [QUEUE] state = false [LANG] default_lang = zh-cn [SYSTEM] ADMIN_TOKEN_NAME = token API_TOKEN_NAME = token ADMIN_TOKEN_EXPIRE_TIME = 604800 API_TOKEN_EXPIRE_TIME = 86400 LANG_NAME = lang CHANNEL_NAME = channel ADMIN_DOMAIN = WAP_DOMAIN = WEB_DOMAIN = [NIUCLOUD] code = secret = \ No newline at end of file diff --git a/niucloud/.gitignore b/niucloud/.gitignore index 5269144f..4306026f 100644 --- a/niucloud/.gitignore +++ b/niucloud/.gitignore @@ -1,4 +1,8 @@ /.idea /.vscode *.log -install.lock \ No newline at end of file +install.lock +/runtime/* +/vendor/* +/public/uploads/* +.env \ No newline at end of file diff --git a/niucloud/app/adminapi/controller/campus/Campus.php b/niucloud/app/adminapi/controller/campus/Campus.php new file mode 100644 index 00000000..d7eacb87 --- /dev/null +++ b/niucloud/app/adminapi/controller/campus/Campus.php @@ -0,0 +1,103 @@ +request->params([ + ["campus_name",""], + ["campus_address",""], + ["campus_preview_image",""], + ["campus_coordinates",""], + ["campus_introduction",""], + ["campus_status",""], + ["create_time",""], + ["update_time",""], + ["delete_time",""] + ]); + return success((new CampusService())->getPage($data)); + } + + /** + * 校区详情 + * @param int $id + * @return \think\Response + */ + public function info(int $id){ + return success((new CampusService())->getInfo($id)); + } + + /** + * 添加校区 + * @return \think\Response + */ + public function add(){ + $data = $this->request->params([ + ["campus_name",""], + ["campus_address",""], + ["campus_preview_image",""], + ["campus_coordinates",""], + ["campus_introduction",""], + ["campus_status",0], + ["delete_time",1747295250] + ]); + $this->validate($data, 'app\validate\campus\Campus.add'); + $id = (new CampusService())->add($data); + return success('ADD_SUCCESS', ['id' => $id]); + } + + /** + * 校区编辑 + * @param $id 校区id + * @return \think\Response + */ + public function edit(int $id){ + $data = $this->request->params([ + ["campus_name",""], + ["campus_address",""], + ["campus_preview_image",""], + ["campus_coordinates",""], + ["campus_introduction",""], + ["campus_status",0], + ["delete_time",1747295250] + ]); + $this->validate($data, 'app\validate\campus\Campus.edit'); + (new CampusService())->edit($id, $data); + return success('EDIT_SUCCESS'); + } + + /** + * 校区删除 + * @param $id 校区id + * @return \think\Response + */ + public function del(int $id){ + (new CampusService())->del($id); + return success('DELETE_SUCCESS'); + } + + +} diff --git a/niucloud/app/adminapi/route/campus.php b/niucloud/app/adminapi/route/campus.php new file mode 100644 index 00000000..0cc3c45e --- /dev/null +++ b/niucloud/app/adminapi/route/campus.php @@ -0,0 +1,37 @@ +middleware([ + AdminCheckToken::class, + AdminCheckRole::class, + AdminLog::class +]); +// USER_CODE_END -- campus diff --git a/niucloud/app/model/campus/Campus.php b/niucloud/app/model/campus/Campus.php new file mode 100644 index 00000000..9e643c88 --- /dev/null +++ b/niucloud/app/model/campus/Campus.php @@ -0,0 +1,170 @@ +where("id", $value); + } + } + + /** + * 搜索器:校区校区名称 + * @param $value + * @param $data + */ + public function searchCampusNameAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_name", $value); + } + } + + /** + * 搜索器:校区校区地址 + * @param $value + * @param $data + */ + public function searchCampusAddressAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_address", $value); + } + } + + /** + * 搜索器:校区校区预览图,存储图片路径 + * @param $value + * @param $data + */ + public function searchCampusPreviewImageAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_preview_image", $value); + } + } + + /** + * 搜索器:校区校区坐标,格式为经度,纬度 + * @param $value + * @param $data + */ + public function searchCampusCoordinatesAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_coordinates", $value); + } + } + + /** + * 搜索器:校区校区介绍 + * @param $value + * @param $data + */ + public function searchCampusIntroductionAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_introduction", $value); + } + } + + /** + * 搜索器:校区校区状态:0-禁用,1-启用 + * @param $value + * @param $data + */ + public function searchCampusStatusAttr($query, $value, $data) + { + if ($value) { + $query->where("campus_status", $value); + } + } + + /** + * 搜索器:校区校区创建时间 + * @param $value + * @param $data + */ + public function searchCreateTimeAttr($query, $value, $data) + { + if ($value) { + $query->where("create_time", $value); + } + } + + /** + * 搜索器:校区校区更新时间 + * @param $value + * @param $data + */ + public function searchUpdateTimeAttr($query, $value, $data) + { + if ($value) { + $query->where("update_time", $value); + } + } + + /** + * 搜索器:校区逻辑删除字段,NULL表示未删除,非空表示已删除 + * @param $value + * @param $data + */ + public function searchDeleteTimeAttr($query, $value, $data) + { + if ($value) { + $query->where("delete_time", $value); + } + } + + + + + + +} diff --git a/niucloud/app/service/admin/campus/CampusService.php b/niucloud/app/service/admin/campus/CampusService.php new file mode 100644 index 00000000..e628fc0e --- /dev/null +++ b/niucloud/app/service/admin/campus/CampusService.php @@ -0,0 +1,99 @@ +model = new Campus(); + } + + /** + * 获取校区列表 + * @param array $where + * @return array + */ + public function getPage(array $where = []) + { + $field = 'id,campus_name,campus_address,campus_preview_image,campus_coordinates,campus_introduction,campus_status,create_time,update_time,delete_time'; + $order = ''; + + $search_model = $this->model->withSearch(["id","campus_name","campus_address","campus_preview_image","campus_coordinates","campus_introduction","campus_status","create_time","update_time","delete_time"], $where)->field($field)->order($order); + $list = $this->pageQuery($search_model); + return $list; + } + + /** + * 获取校区信息 + * @param int $id + * @return array + */ + public function getInfo(int $id) + { + $field = 'id,campus_name,campus_address,campus_preview_image,campus_coordinates,campus_introduction,campus_status,create_time,update_time,delete_time'; + + $info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray(); + return $info; + } + + /** + * 添加校区 + * @param array $data + * @return mixed + */ + public function add(array $data) + { + $res = $this->model->create($data); + return $res->id; + + } + + /** + * 校区编辑 + * @param int $id + * @param array $data + * @return bool + */ + public function edit(int $id, array $data) + { + + $this->model->where([['id', '=', $id]])->update($data); + return true; + } + + /** + * 删除校区 + * @param int $id + * @return bool + */ + public function del(int $id) + { + $model = $this->model->where([['id', '=', $id]])->find(); + $res = $model->delete(); + return $res; + } + + + +} diff --git a/niucloud/app/validate/campus/Campus.php b/niucloud/app/validate/campus/Campus.php new file mode 100644 index 00000000..26337856 --- /dev/null +++ b/niucloud/app/validate/campus/Campus.php @@ -0,0 +1,37 @@ + 'require', + 'campus_address' => 'require', + ]; + + protected $message = [ + 'campus_name.require' => ['common_validate.require', ['campus_name']], + 'campus_address.require' => ['common_validate.require', ['campus_address']], + ]; + + protected $scene = [ + "add" => ['campus_name', 'campus_address', 'campus_preview_image', 'campus_coordinates', 'campus_introduction', 'campus_status', 'delete_time'], + "edit" => ['campus_name', 'campus_address', 'campus_preview_image', 'campus_coordinates', 'campus_introduction', 'campus_status', 'delete_time'] + ]; + +} diff --git a/niucloud/runtime/cache/01/c8e2ef1c2c504601d752e81c5f8f57.php b/niucloud/runtime/cache/01/c8e2ef1c2c504601d752e81c5f8f57.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/01/c8e2ef1c2c504601d752e81c5f8f57.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/04/a77b15025b2c34a79ecfe786681739.php b/niucloud/runtime/cache/04/a77b15025b2c34a79ecfe786681739.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/04/a77b15025b2c34a79ecfe786681739.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/0f/2b9dd04f7491367d2d894c702c894a.php b/niucloud/runtime/cache/0f/2b9dd04f7491367d2d894c702c894a.php deleted file mode 100644 index dc57689e..00000000 --- a/niucloud/runtime/cache/0f/2b9dd04f7491367d2d894c702c894a.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"8tc4bcd3aq4tm5mz";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:212;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/11/96761b4a84f0e988872166216d02cd.php b/niucloud/runtime/cache/11/96761b4a84f0e988872166216d02cd.php deleted file mode 100644 index facf23ae..00000000 --- a/niucloud/runtime/cache/11/96761b4a84f0e988872166216d02cd.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:4:"shop";} \ No newline at end of file diff --git a/niucloud/runtime/cache/20/336a007c8134208722cf4e14270f07.php b/niucloud/runtime/cache/20/336a007c8134208722cf4e14270f07.php deleted file mode 100644 index 0db1f650..00000000 --- a/niucloud/runtime/cache/20/336a007c8134208722cf4e14270f07.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:414:{i:0;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:447;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分明细";s:15:"menu_short_name";s:12:"积分明细";s:8:"menu_key";s:17:"member_point_list";s:10:"parent_key";s:12:"member_point";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconjifen-xianxing";s:7:"api_url";s:20:"member/account/point";s:11:"router_path";s:12:"member/point";s:9:"view_path";s:12:"member/point";s:7:"methods";s:3:"get";s:4:"sort";i:120;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:1;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:580;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件管理";s:15:"menu_short_name";s:6:"应用";s:8:"menu_key";s:9:"app_store";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:19:"element ShoppingBag";s:7:"api_url";s:11:"addon/local";s:11:"router_path";s:20:"app_manage/app_store";s:9:"view_path";s:11:"index/store";s:7:"methods";s:3:"get";s:4:"sort";i:120;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:2;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:448;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分规则";s:15:"menu_short_name";s:12:"积分规则";s:8:"menu_key";s:10:"point_rule";s:10:"parent_key";s:12:"member_point";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:24:"member/config/point_rule";s:11:"router_path";s:18:"setting/point_rule";s:9:"view_path";s:18:"setting/point_rule";s:7:"methods";s:3:"get";s:4:"sort";i:110;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:3;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:587;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件开发";s:15:"menu_short_name";s:12:"插件开发";s:8:"menu_key";s:13:"addon_develop";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconchajiankaifa";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"tools/addon";s:9:"view_path";s:17:"tools/addon/index";s:7:"methods";s:0:"";s:4:"sort";i:110;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:4;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1147;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"市场模块";s:15:"menu_short_name";s:6:"市场";s:8:"menu_key";s:13:"shichangmodel";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:40:"nc-iconfont nc-icon-yingyongzhongxinV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:101;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 10:44:57";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:5;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:389;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:15:"diy_tabbar_edit";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"diy/bottom/edit";s:11:"router_path";s:15:"diy/tabbar_edit";s:9:"view_path";s:15:"diy/tabbar_edit";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:6;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:390;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"启动页";s:15:"menu_short_name";s:9:"启动页";s:8:"menu_key";s:23:"diy_page_decorate_index";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element House";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"diy/index";s:9:"view_path";s:9:"diy/index";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:7;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:391;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"设置使用页";s:15:"menu_short_name";s:15:"设置使用页";s:8:"menu_key";s:11:"set_siy_use";s:10:"parent_key";s:23:"diy_page_decorate_index";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"diy/use";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:8;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:395;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"分享设置";s:15:"menu_short_name";s:12:"分享设置";s:8:"menu_key";s:14:"save_diy_share";s:10:"parent_key";s:13:"diy_page_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"diy/diy/share";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:9;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:400;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除素材";s:15:"menu_short_name";s:12:"删除素材";s:8:"menu_key";s:17:"delete_attachment";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/attachment/del";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:10;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:401;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"移动素材";s:15:"menu_short_name";s:12:"移动素材";s:8:"menu_key";s:15:"move_attachment";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"sys/attachment/batchmove";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:11;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:402;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加分组";s:15:"menu_short_name";s:12:"删除素材";s:8:"menu_key";s:23:"add_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"sys/attachment/category";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:12;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:403;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加分组";s:15:"menu_short_name";s:12:"添加分组";s:8:"menu_key";s:23:"add_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"sys/attachment/category";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:13;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:404;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑分组";s:15:"menu_short_name";s:12:"编辑分组";s:8:"menu_key";s:24:"edit_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"sys/attachment/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:14;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:405;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑分组";s:15:"menu_short_name";s:12:"编辑分组";s:8:"menu_key";s:24:"edit_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"sys/attachment/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:15;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:411;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"首页导航";s:15:"menu_short_name";s:12:"首页导航";s:8:"menu_key";s:11:"diy_web_nav";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:20:"iconfont-iconshouye1";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"web/nav";s:9:"view_path";s:7:"web/nav";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:16;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:425;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员列表";s:15:"menu_short_name";s:12:"会员列表";s:8:"menu_key";s:11:"member_list";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:13:"member/member";s:11:"router_path";s:13:"member/member";s:9:"view_path";s:13:"member/member";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:17;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:442;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"会员等级信息";s:15:"menu_short_name";s:18:"会员等级信息";s:8:"menu_key";s:17:"member_level_info";s:10:"parent_key";s:22:"member_level_edit_page";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:18;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:444;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"设置成长值规则";s:15:"menu_short_name";s:21:"设置成长值规则";s:8:"menu_key";s:15:"set_growth_rule";s:10:"parent_key";s:11:"growth_rule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"member/config/growth_rule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:19;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:449;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分规则";s:15:"menu_short_name";s:18:"设置积分规则";s:8:"menu_key";s:14:"set_point_rule";s:10:"parent_key";s:10:"point_rule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"member/config/point_rule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:20;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:456;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提现审核";s:15:"menu_short_name";s:12:"提现审核";s:8:"menu_key";s:14:"cash_out_audit";s:10:"parent_key";s:13:"cash_out_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:35:"member/cash_out/audit//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:21;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:457;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"转账";s:15:"menu_short_name";s:6:"转账";s:8:"menu_key";s:17:"cash_out_transfer";s:10:"parent_key";s:13:"cash_out_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:29:"member/cash_out/transfer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:22;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:459;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"转账";s:15:"menu_short_name";s:6:"转账";s:8:"menu_key";s:17:"cash_out_transfer";s:10:"parent_key";s:18:"member_refund_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"pay/refund/transfer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:23;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:464;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加核销员";s:15:"menu_short_name";s:15:"添加核销员";s:8:"menu_key";s:12:"add_verifier";s:10:"parent_key";s:13:"verifier_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"verify/verifier";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:24;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:465;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除核销员";s:15:"menu_short_name";s:15:"删除核销员";s:8:"menu_key";s:15:"delete_verifier";s:10:"parent_key";s:13:"verifier_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"verify/verifier/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:25;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:470;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:13:"save_sign_set";s:10:"parent_key";s:8:"sign_set";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"member/sign/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:26;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:475;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:5:"PC端";s:15:"menu_short_name";s:5:"PC端";s:8:"menu_key";s:9:"pc_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:20:"iconfont icondesktop";s:7:"api_url";s:17:"channel/pc/config";s:11:"router_path";s:17:"channel/pc/config";s:9:"view_path";s:17:"channel/pc/config";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:27;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:476;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:14:"save_pc_config";s:10:"parent_key";s:9:"pc_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"channel/pc/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:28;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:478;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:14:"save_h5_config";s:10:"parent_key";s:9:"h5_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"channel/h5/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:29;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:484;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_wechat_config";s:10:"parent_key";s:13:"wechat_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:30;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:486;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"默认回复设置";s:15:"menu_short_name";s:18:"默认回复设置";s:8:"menu_key";s:24:"wechat_default_reply_set";s:10:"parent_key";s:19:"wechat_reply_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"wechat/reply/default";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:31;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:487;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"关注回复设置";s:15:"menu_short_name";s:18:"关注回复设置";s:8:"menu_key";s:26:"wechat_subscribe_reply_set";s:10:"parent_key";s:19:"wechat_reply_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"wechat/reply/subscribe";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:32;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:493;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:16:"save_wechat_menu";s:10:"parent_key";s:11:"wechat_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:11:"wechat/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:33;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:495;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"同步";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:28:"sync_wechat_template_message";s:10:"parent_key";s:23:"wechat_template_message";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"wechat/template/sync";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:34;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:498;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"save_weapp_config";s:10:"parent_key";s:12:"weapp_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:35;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:500;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"同步";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:27:"sync_weapp_template_message";s:10:"parent_key";s:22:"weapp_template_message";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"weapp/template/sync";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:36;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:502;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"一键云端发布";s:15:"menu_short_name";s:18:"一键云端发布";s:8:"menu_key";s:14:"add_weapp_code";s:10:"parent_key";s:10:"weapp_code";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"weapp/version";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:37;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:504;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_aliapp_config";s:10:"parent_key";s:13:"aliapp_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:38;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:507;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"管理员";s:15:"menu_short_name";s:9:"管理员";s:8:"menu_key";s:9:"auth_list";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:12:"element Lock";s:7:"api_url";s:4:"user";s:11:"router_path";s:9:"auth/user";s:9:"view_path";s:9:"auth/user";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:39;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:509;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加管理员";s:15:"menu_short_name";s:15:"添加管理员";s:8:"menu_key";s:13:"add_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:4:"user";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:40;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:510;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑管理员";s:15:"menu_short_name";s:15:"编辑管理员";s:8:"menu_key";s:14:"edit_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"user/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:41;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:511;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改管理员属性";s:15:"menu_short_name";s:21:"修改管理员属性";s:8:"menu_key";s:20:"edit_site_user_field";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"user//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:42;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:512;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"锁定";s:15:"menu_short_name";s:6:"锁定";s:8:"menu_key";s:14:"lock_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"user/lock/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:43;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:513;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"解锁";s:15:"menu_short_name";s:12:"解锁用户";s:8:"menu_key";s:16:"unlock_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"user/unlock/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:44;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:520;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"网站设置";s:15:"menu_short_name";s:12:"网站设置";s:8:"menu_key";s:14:"setting_system";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:18:"element Basketball";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:45;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:521;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"基础设置";s:15:"menu_short_name";s:12:"基础设置";s:8:"menu_key";s:18:"setting_system_web";s:10:"parent_key";s:14:"setting_system";s:9:"menu_type";i:1;s:4:"icon";s:18:"element Basketball";s:7:"api_url";s:18:"sys/config/website";s:11:"router_path";s:14:"setting/system";s:9:"view_path";s:14:"setting/system";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:46;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:522;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"save_base_setting";s:10:"parent_key";s:18:"setting_system_web";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/config/website";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:47;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:524;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:22:"save_setting_copyright";s:10:"parent_key";s:17:"setting_copyright";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"sys/config/copyright";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:48;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:526;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_setting_login";s:10:"parent_key";s:13:"setting_login";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:16:"sys/config/login";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:49;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:529;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:26:"save_setting_member_config";s:10:"parent_key";s:21:"setting_member_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/config/member";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:50;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:531;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:27:"save_setting_login_register";s:10:"parent_key";s:22:"setting_login_register";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"member/config/login";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:51;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:533;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"支付设置";s:15:"menu_short_name";s:12:"支付设置";s:8:"menu_key";s:19:"setting_pay_channel";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"pay/channel/lists";s:11:"router_path";s:19:"setting/pay/channel";s:9:"view_path";s:11:"setting/pay";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:52;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:534;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:23:"setting_pay_channel_set";s:10:"parent_key";s:19:"setting_pay_channel";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"pay/channel/set//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:53;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:541;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息详情";s:15:"menu_short_name";s:12:"消息详情";s:8:"menu_key";s:13:"notice_detail";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"notice/notice/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:54;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:542;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"消息启动关闭";s:15:"menu_short_name";s:18:"消息启动关闭";s:8:"menu_key";s:18:"notice_edit_status";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"notice/notice/editstatus";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:55;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:543;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息修改";s:15:"menu_short_name";s:12:"消息修改";s:8:"menu_key";s:11:"notice_edit";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"notice/notice/edit";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:56;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:547;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取短信配置";s:15:"menu_short_name";s:18:"获取短信配置";s:8:"menu_key";s:14:"get_sms_config";s:10:"parent_key";s:11:"sms_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"notice/notice/sms/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:57;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:548;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"修改短信配置";s:15:"menu_short_name";s:18:"修改短信配置";s:8:"menu_key";s:14:"set_sms_config";s:10:"parent_key";s:11:"sms_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"notice/notice/sms/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:58;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:550;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"发送记录详情";s:15:"menu_short_name";s:18:"发送记录详情";s:8:"menu_key";s:14:"sms_log_detail";s:10:"parent_key";s:18:"sms_notice_records";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"notice/sms/log/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:59;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:552;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除打印机";s:15:"menu_short_name";s:15:"删除打印机";s:8:"menu_key";s:14:"delete_printer";s:10:"parent_key";s:18:"printer_management";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"printer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:60;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:556;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除打印模板";s:15:"menu_short_name";s:18:"删除打印模板";s:8:"menu_key";s:23:"delete_printer_template";s:10:"parent_key";s:27:"printer_template_management";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"printer/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:61;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:560;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"协议管理";s:15:"menu_short_name";s:12:"协议管理";s:8:"menu_key";s:16:"system_agreement";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Notebook";s:7:"api_url";s:13:"sys/agreement";s:11:"router_path";s:17:"setting/agreement";s:9:"view_path";s:17:"setting/agreement";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:62;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:561;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"协议编辑";s:15:"menu_short_name";s:12:"协议编辑";s:8:"menu_key";s:21:"system_agreement_edit";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:22:"setting/agreement/edit";s:9:"view_path";s:22:"setting/agreement_edit";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:63;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:562;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取协议信息";s:15:"menu_short_name";s:18:"获取协议信息";s:8:"menu_key";s:20:"get_system_agreement";s:10:"parent_key";s:21:"system_agreement_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/agreement/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:64;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:563;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"修改协议信息";s:15:"menu_short_name";s:18:"修改协议信息";s:8:"menu_key";s:21:"edit_system_agreement";s:10:"parent_key";s:21:"system_agreement_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/agreement/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:65;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:565;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:19:"save_layout_setting";s:10:"parent_key";s:11:"map_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"sys/config/map";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:66;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:567;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取存储配置";s:15:"menu_short_name";s:18:"获取存储配置";s:8:"menu_key";s:21:"setting_storage_value";s:10:"parent_key";s:15:"setting_storage";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/storage/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:67;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:568;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"存储设置修改";s:15:"menu_short_name";s:18:"存储设置修改";s:8:"menu_key";s:20:"edit_setting_storage";s:10:"parent_key";s:15:"setting_storage";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/storage/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:68;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:570;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除报表";s:15:"menu_short_name";s:12:"删除报表";s:8:"menu_key";s:13:"delete_export";s:10:"parent_key";s:14:"setting_export";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"sys/export/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:69;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:578;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"分享设置";s:15:"menu_short_name";s:12:"分享设置";s:8:"menu_key";s:19:"save_diy_form_share";s:10:"parent_key";s:13:"diy_form_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"diy_form/share";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:70;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:581;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"安装插件";s:15:"menu_short_name";s:12:"安装插件";s:8:"menu_key";s:13:"install_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"addon/install/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:71;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:582;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件卸载";s:15:"menu_short_name";s:12:"插件卸载";s:8:"menu_key";s:15:"uninstall_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"addon/uninstall/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:72;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:583;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"插件云安装";s:15:"menu_short_name";s:15:"插件云安装";s:8:"menu_key";s:19:"cloud_install_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"addon/cloudinstall/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:73;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:584;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件下载";s:15:"menu_short_name";s:12:"插件下载";s:8:"menu_key";s:14:"addon_download";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"addon/download/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:74;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:585;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"云编译";s:15:"menu_short_name";s:9:"云编译";s:8:"menu_key";s:11:"cloud_build";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"niucloud/build";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:75;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:586;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件升级";s:15:"menu_short_name";s:12:"插件升级";s:8:"menu_key";s:13:"addon_upgrade";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"upgrade/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:76;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:588;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除插件";s:15:"menu_short_name";s:12:"删除插件";s:8:"menu_key";s:20:"delete_develop_addon";s:10:"parent_key";s:13:"addon_develop";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:77;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:589;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"打包插件";s:15:"menu_short_name";s:12:"打包插件";s:8:"menu_key";s:19:"build_develop_addon";s:10:"parent_key";s:13:"addon_develop";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:31:"addon/addon_develop/build/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:78;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:590;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"代码生成";s:15:"menu_short_name";s:12:"代码生成";s:8:"menu_key";s:4:"code";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondaimashengcheng";s:7:"api_url";s:19:"generator/generator";s:11:"router_path";s:10:"tools/code";s:9:"view_path";s:16:"tools/code/index";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:79;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:592;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加数据表";s:15:"menu_short_name";s:15:"添加数据表";s:8:"menu_key";s:13:"add_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"generator/generator";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:80;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:593;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑数据表";s:15:"menu_short_name";s:15:"编辑数据表";s:8:"menu_key";s:14:"edit_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"generator/generator/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:81;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:594;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除数据表";s:15:"menu_short_name";s:15:"删除数据表";s:8:"menu_key";s:16:"delete_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"generator/generator/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:82;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:595;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"代码生成";s:15:"menu_short_name";s:12:"代码生成";s:8:"menu_key";s:18:"generator_download";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"generator/download";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:83;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:597;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加插件";s:15:"menu_short_name";s:12:"添加插件";s:8:"menu_key";s:17:"add_develop_addon";s:10:"parent_key";s:10:"addon_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:84;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:598;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑插件";s:15:"menu_short_name";s:12:"编辑插件";s:8:"menu_key";s:18:"edit_develop_addon";s:10:"parent_key";s:10:"addon_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:85;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:616;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统升级";s:15:"menu_short_name";s:12:"系统升级";s:8:"menu_key";s:14:"system_upgrade";s:10:"parent_key";s:8:"app_auth";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"upgrade";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:86;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:617;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"绑定授权信息";s:15:"menu_short_name";s:18:"绑定授权信息";s:8:"menu_key";s:13:"bind_app_auth";s:10:"parent_key";s:8:"app_auth";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"niucloud/authinfo";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:87;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:619;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:20:"save_developer_token";s:10:"parent_key";s:15:"developer_token";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/config/developer_token";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:88;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:669;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商城订单";s:15:"menu_short_name";s:12:"商城订单";s:8:"menu_key";s:15:"shop_order_list";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/order/list";s:11:"router_path";s:16:"shop/order/index";s:9:"view_path";s:10:"order/list";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:89;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:825;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校区列表";s:15:"menu_short_name";s:12:"校区列表";s:8:"menu_key";s:31:"zhjw_campuses_campuses_campuses";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"campuses";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 17:41:14";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:90;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:850;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"文章管理";s:15:"menu_short_name";s:12:"文章管理";s:8:"menu_key";s:36:"zhjw_zhjw_articles_articles_articles";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"articles";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 19:31:59";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:91;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:875;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"员工角色管理";s:15:"menu_short_name";s:12:"角色管理";s:8:"menu_key";s:22:"zhjw_roles_roles_roles";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"roles";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-06 11:48:59";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:92;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1005;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单管理";s:15:"menu_short_name";s:12:"订单管理";s:8:"menu_key";s:30:"zhjw_zhjw_orders_orders_orders";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"orders";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 15:28:01";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:93;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1035;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课表管理";s:15:"menu_short_name";s:12:"课表管理";s:8:"menu_key";s:37:"zhjw_timetables_timetables_timetables";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:10:"timetables";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 16:41:27";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:94;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1040;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"销售模块";s:15:"menu_short_name";s:12:"销售模块";s:8:"menu_key";s:27:"zhjw_zhjw_sales_sales_sales";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"sales";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 18:31:18";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:95;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1045;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"跟进管理";s:15:"menu_short_name";s:12:"跟进管理";s:8:"menu_key";s:54:"zhjw_zhjw_follow_up_logs_follow_up_logs_follow_up_logs";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"follow_up_logs";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-14 19:18:09";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:96;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1050;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"跟进提醒管理";s:15:"menu_short_name";s:18:"跟进提醒管理";s:8:"menu_key";s:69:"zhjw_zhjw_follow_up_reminders_follow_up_reminders_follow_up_reminders";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:19:"follow_up_reminders";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-14 19:38:04";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:97;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1082;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"人员管理";s:15:"menu_short_name";s:12:"人员管理";s:8:"menu_key";s:22:"zhjw_staff_staff_staff";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"staff";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-20 16:06:31";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:98;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1158;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"销售人员管理";s:15:"menu_short_name";s:18:"销售人员管理";s:8:"menu_key";s:6:"xsrygl";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:1;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xsrygl";s:9:"view_path";s:6:"xsrygl";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:31:38";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:99;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:392;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"个人中心";s:15:"menu_short_name";s:12:"个人中心";s:8:"menu_key";s:30:"diy_page_decorate_member_index";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:10:"diy/member";s:9:"view_path";s:10:"diy/member";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:100;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:415;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"广告位";s:15:"menu_short_name";s:9:"广告位";s:8:"menu_key";s:16:"web_adv_position";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont-icontupianguanggao1";s:7:"api_url";s:0:"";s:11:"router_path";s:16:"web/adv_position";s:9:"view_path";s:16:"web/adv_position";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:101;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:514;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"管理员角色";s:15:"menu_short_name";s:15:"管理员角色";s:8:"menu_key";s:9:"auth_role";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:8:"sys/role";s:11:"router_path";s:9:"auth/role";s:9:"view_path";s:9:"auth/role";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:102;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:564;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"地图秘钥";s:15:"menu_short_name";s:12:"地图秘钥";s:8:"menu_key";s:11:"map_setting";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:15:"element Message";s:7:"api_url";s:14:"sys/config/map";s:11:"router_path";s:11:"setting/map";s:9:"view_path";s:11:"setting/map";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:103;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:591;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"数据表编辑";s:15:"menu_short_name";s:15:"数据表编辑";s:8:"menu_key";s:9:"code_edit";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/code/edit";s:9:"view_path";s:15:"tools/code/edit";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:104;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:820;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"场地管理";s:15:"menu_short_name";s:12:"场地管理";s:8:"menu_key";s:25:"zhjw_venues_venues_venues";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"venues";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 17:37:13";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:105;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1055;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教务管理";s:15:"menu_short_name";s:12:"教务管理";s:8:"menu_key";s:12:"jiaowuguanli";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:37:"nc-iconfont nc-icon-jifenduihuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 20:35:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:106;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1160;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员约课管理";s:15:"menu_short_name";s:18:"学员约课管理";s:8:"menu_key";s:6:"xyykgl";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:33:"nc-iconfont nc-icon-gouwucheV6xx2";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xyykgl";s:9:"view_path";s:6:"xyykgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:35:54";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:107;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1172;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"账户及资金管理";s:15:"menu_short_name";s:21:"账户及资金管理";s:8:"menu_key";s:4:"zjgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"zjgl";s:9:"view_path";s:4:"zjgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:55:35";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:108;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1178;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"工资管理";s:15:"menu_short_name";s:12:"工资管理";s:8:"menu_key";s:6:"rsgzgl";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"rsgzgl";s:9:"view_path";s:6:"rsgzgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:11:47";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:109;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1179;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课程教案";s:15:"menu_short_name";s:12:"课程教案";s:8:"menu_key";s:4:"kcja";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kcja";s:9:"view_path";s:4:"kcja";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:02";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:110;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:394;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"微页面";s:15:"menu_short_name";s:9:"微页面";s:8:"menu_key";s:13:"diy_page_list";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondianpuzhuangxiu";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:8:"diy/list";s:9:"view_path";s:8:"diy/list";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:111;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:420;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"友情链接";s:15:"menu_short_name";s:12:"友情链接";s:8:"menu_key";s:21:"diy_web_friendly_link";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont-iconyouqinglianjie1";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"web/friendly_link";s:9:"view_path";s:17:"web/friendly_link";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:112;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:518;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"操作日志";s:15:"menu_short_name";s:12:"操作日志";s:8:"menu_key";s:8:"auth_log";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Document";s:7:"api_url";s:7:"sys/log";s:11:"router_path";s:16:"setting/auth/log";s:9:"view_path";s:8:"auth/log";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:113;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:566;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"存储设置";s:15:"menu_short_name";s:12:"存储设置";s:8:"menu_key";s:15:"setting_storage";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:11:"sys/storage";s:11:"router_path";s:15:"setting/storage";s:9:"view_path";s:15:"setting/storage";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:114;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:569;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据导出";s:15:"menu_short_name";s:12:"数据导出";s:8:"menu_key";s:14:"setting_export";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:10:"sys/export";s:11:"router_path";s:14:"setting/export";s:9:"view_path";s:14:"setting/export";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:115;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1010;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"合同管理";s:15:"menu_short_name";s:12:"合同管理";s:8:"menu_key";s:39:"zhjw_zhjw_contracts_contracts_contracts";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"contracts";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 15:30:15";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:116;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1067;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员档案";s:15:"menu_short_name";s:12:"学员档案";s:8:"menu_key";s:36:"zhjw_zhjw_students_students_students";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"students";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-20 15:54:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:117;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1167;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校区管理";s:15:"menu_short_name";s:12:"校区管理";s:8:"menu_key";s:4:"xqgl";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:41:12";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:118;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1168;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校长管理";s:15:"menu_short_name";s:12:"校长管理";s:8:"menu_key";s:4:"xzgl";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:38:"nc-iconfont nc-icon-gerenzhongxinV6mm1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xzgl";s:9:"view_path";s:4:"xzgl";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:42:28";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:119;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1173;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"报销付款";s:15:"menu_short_name";s:4:"bxfk";s:8:"menu_key";s:4:"bxfk";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-youhuiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"bxfk";s:9:"view_path";s:4:"bxfk";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:56:04";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:120;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1180;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"教学资料库";s:15:"menu_short_name";s:15:"教学资料库";s:8:"menu_key";s:5:"jxzlk";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"jxzlk";s:9:"view_path";s:5:"jxzlk";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:25";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:121;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:396;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面路径";s:15:"menu_short_name";s:12:"页面路径";s:8:"menu_key";s:14:"diy_page_route";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondianpuzhuangxiu";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:9:"diy/route";s:9:"view_path";s:9:"diy/route";s:7:"methods";s:3:"get";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:122;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:452;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"财务管理";s:15:"menu_short_name";s:6:"财务";s:8:"menu_key";s:7:"finance";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:11:"element Box";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:123;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1169;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"xqsjtj";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xqsjtj";s:9:"view_path";s:6:"xqsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:44:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:124;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1171;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员课程管理";s:15:"menu_short_name";s:18:"学员课程管理";s:8:"menu_key";s:6:"xykcgl";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-duanxinV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xykcgl";s:9:"view_path";s:6:"xykcgl";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:50:24";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:125;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1181;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"未来周内容训练";s:15:"menu_short_name";s:21:"未来周内容训练";s:8:"menu_key";s:7:"wlznrxl";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"wlznrxl";s:9:"view_path";s:7:"wlznrxl";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:52";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:126;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:397;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"底部导航";s:15:"menu_short_name";s:12:"底部导航";s:8:"menu_key";s:10:"diy_bottom";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont icondibudaohang";s:7:"api_url";s:10:"diy/bottom";s:11:"router_path";s:10:"diy/tabbar";s:9:"view_path";s:10:"diy/tabbar";s:7:"methods";s:3:"get";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:127;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:555;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"小票打印模板";s:15:"menu_short_name";s:18:"小票打印模板";s:8:"menu_key";s:27:"printer_template_management";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:16:"printer/template";s:11:"router_path";s:21:"printer/template/list";s:9:"view_path";s:21:"printer/template_list";s:7:"methods";s:3:"get";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:128;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1161;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员标签";s:15:"menu_short_name";s:12:"学员标签";s:8:"menu_key";s:4:"xybq";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:30:"nc-iconfont nc-icon-bianjiV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xybq";s:9:"view_path";s:4:"xybq";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:37:36";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:129;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1170;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教师管理";s:15:"menu_short_name";s:12:"教师管理";s:8:"menu_key";s:4:"jsgl";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"jsgl";s:9:"view_path";s:4:"jsgl";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:45:25";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:130;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1174;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课消管理";s:15:"menu_short_name";s:12:"课消管理";s:8:"menu_key";s:4:"xklb";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xklb";s:9:"view_path";s:4:"xklb";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:56:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:131;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1177;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"人事管理";s:15:"menu_short_name";s:12:"人事管理";s:8:"menu_key";s:4:"rsgl";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:10:12";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:132;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1182;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"专业技能";s:15:"menu_short_name";s:12:"专业技能";s:8:"menu_key";s:4:"zyjn";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"zyjn";s:9:"view_path";s:4:"zyjn";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:15:15";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:133;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:399;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"素材管理";s:15:"menu_short_name";s:12:"素材管理";s:8:"menu_key";s:10:"attachment";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:14:"sys/attachment";s:11:"router_path";s:14:"diy/attachment";s:9:"view_path";s:16:"tools/attachment";s:7:"methods";s:3:"get";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:134;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:965;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课程管理";s:15:"menu_short_name";s:18:"学员课程管理";s:8:"menu_key";s:28:"zhjw_courses_courses_courses";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"courses";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-06 14:24:03";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:135;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1056;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教研管理";s:15:"menu_short_name";s:12:"教研管理";s:8:"menu_key";s:13:"yunyingguanli";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 20:37:53";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:136;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1162;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课消追踪";s:15:"menu_short_name";s:12:"课消追踪";s:8:"menu_key";s:4:"kxzz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:36:"nc-iconfont nc-icon-sousuo-duanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kxzz";s:9:"view_path";s:4:"kxzz";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:38:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:137;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1175;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"工资管理";s:15:"menu_short_name";s:12:"工资管理";s:8:"menu_key";s:4:"gzgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"gzgl";s:9:"view_path";s:4:"gzgl";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:08:08";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:138;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1183;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"睿莱体测";s:15:"menu_short_name";s:12:"睿莱体测";s:8:"menu_key";s:4:"rltc";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"rltc";s:9:"view_path";s:4:"rltc";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:15:39";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:139;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:406;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"海报管理";s:15:"menu_short_name";s:12:"海报管理";s:8:"menu_key";s:17:"poster_management";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:6:"poster";s:11:"router_path";s:11:"poster/list";s:9:"view_path";s:11:"poster/list";s:7:"methods";s:3:"get";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:140;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1163;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提醒配置";s:15:"menu_short_name";s:12:"提醒配置";s:8:"menu_key";s:4:"txpz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-lingdangV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"txpz";s:9:"view_path";s:4:"txpz";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:38:46";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:141;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1176;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课包管理";s:15:"menu_short_name";s:12:"课包管理";s:8:"menu_key";s:4:"kbgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:38:"nc-iconfont nc-icon-huiyuandengjiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kbgl";s:9:"view_path";s:4:"kbgl";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:08:40";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:142;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1184;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"如何让孩子喜欢";s:15:"menu_short_name";s:21:"如何让孩子喜欢";s:8:"menu_key";s:7:"rhrhzxh";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"rhrhzxh";s:9:"view_path";s:7:"rhrhzxh";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:16:08";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:143;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:408;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"主题风格";s:15:"menu_short_name";s:12:"主题风格";s:8:"menu_key";s:15:"diy_theme_style";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"diy/theme_style";s:9:"view_path";s:15:"diy/theme_style";s:7:"methods";s:3:"get";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:144;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1164;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"服务配置";s:15:"menu_short_name";s:12:"服务配置";s:8:"menu_key";s:4:"fwpz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-shezhi-1V6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"fwpz";s:9:"view_path";s:4:"fwpz";s:7:"methods";s:4:"post";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:39:18";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:145;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1165;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"服务评价与反馈";s:15:"menu_short_name";s:21:"服务评价与反馈";s:8:"menu_key";s:4:"fwpj";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-dianzanV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"fwpj";s:9:"view_path";s:4:"fwpj";s:7:"methods";s:4:"post";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:39:46";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:146;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:410;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"电脑端";s:15:"menu_short_name";s:9:"电脑端";s:8:"menu_key";s:7:"diy_web";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:0;s:4:"icon";s:20:"iconfont icondesktop";s:7:"api_url";s:0:"";s:11:"router_path";s:3:"web";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:92;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:147;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1166;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"jwsjtj";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:30:"nc-iconfont nc-icon-chakanV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"jwsjtj";s:9:"view_path";s:6:"jwsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:92;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:40:20";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:148;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:388;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"装修管理";s:15:"menu_short_name";s:6:"装修";s:8:"menu_key";s:3:"diy";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:13:"element Brush";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:149;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:429;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员详情";s:15:"menu_short_name";s:12:"会员详情";s:8:"menu_key";s:11:"member_info";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:18:"member/member/";s:11:"router_path";s:13:"member/detail";s:9:"view_path";s:20:"member/member_detail";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:150;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:477;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:5:"H5端";s:15:"menu_short_name";s:5:"H5端";s:8:"menu_key";s:9:"h5_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:16:"iconfont iconh5e";s:7:"api_url";s:17:"channel/h5/config";s:11:"router_path";s:17:"channel/h5/config";s:9:"view_path";s:17:"channel/h5/config";s:7:"methods";s:3:"put";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:151;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:523;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"版权设置";s:15:"menu_short_name";s:12:"版权设置";s:8:"menu_key";s:17:"setting_copyright";s:10:"parent_key";s:14:"setting_system";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont iconbanquan1";s:7:"api_url";s:20:"sys/config/copyright";s:11:"router_path";s:17:"setting/copyright";s:9:"view_path";s:17:"setting/copyright";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:152;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:535;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"打款设置";s:15:"menu_short_name";s:12:"打款设置";s:8:"menu_key";s:20:"setting_pay_transfer";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"pay/transfer";s:11:"router_path";s:20:"setting/pay/transfer";s:9:"view_path";s:16:"setting/transfer";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:153;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:536;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:24:"setting_pay_transfer_set";s:10:"parent_key";s:20:"setting_pay_transfer";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"pay/transfer";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:154;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:538;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:19:"cash_out_config_set";s:10:"parent_key";s:15:"cash_out_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"member/config/cash_out";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:155;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:596;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:19:"插件添加/编辑";s:15:"menu_short_name";s:19:"插件添加/编辑";s:8:"menu_key";s:10:"addon_edit";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:16:"tools/addon_edit";s:9:"view_path";s:16:"tools/addon/edit";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:156;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:599;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据字典";s:15:"menu_short_name";s:12:"数据字典";s:8:"menu_key";s:23:"sys_dict_dict_dict_list";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconwenzhangguanli1";s:7:"api_url";s:14:"dict/post/post";s:11:"router_path";s:10:"tools/list";s:9:"view_path";s:9:"dict/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:157;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:730;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据概况";s:15:"menu_short_name";s:12:"数据概况";s:8:"menu_key";s:15:"shop_stat_index";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/stat/index";s:11:"router_path";s:15:"shop/stat/index";s:9:"view_path";s:10:"stat/index";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:158;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:734;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"优惠券";s:15:"menu_short_name";s:9:"优惠券";s:8:"menu_key";s:22:"shop_goods_coupon_list";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconyouhuiquan";s:7:"api_url";s:0:"";s:11:"router_path";s:26:"shop/marketing/coupon/list";s:9:"view_path";s:21:"marketing/coupon/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:159;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:747;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动列表";s:15:"menu_short_name";s:12:"活动列表";s:8:"menu_key";s:24:"shop_goods_discount_list";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:20:"shop/active/discount";s:11:"router_path";s:28:"shop/marketing/discount/list";s:9:"view_path";s:23:"marketing/discount/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:160;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:756;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分商品";s:15:"menu_short_name";s:12:"积分商品";s:8:"menu_key";s:21:"shop_point_goods_list";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconpointgoods";s:7:"api_url";s:20:"shop/active/exchange";s:11:"router_path";s:34:"shop/marketing/exchange/goods_list";s:9:"view_path";s:29:"marketing/exchange/goods_list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:161;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:764;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"新人设置";s:15:"menu_short_name";s:12:"新人设置";s:8:"menu_key";s:35:"shop_goods_newcomer_discount_config";s:10:"parent_key";s:28:"shop_goods_newcomer_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:27:"shop/active/newcomer/config";s:11:"router_path";s:30:"shop/marketing/newcomer/config";s:9:"view_path";s:25:"marketing/newcomer/config";s:7:"methods";s:3:"put";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:162;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:767;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单设置";s:15:"menu_short_name";s:12:"榜单设置";s:8:"menu_key";s:22:"shop_goods_rank_config";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:21:"shop/good/rank/config";s:11:"router_path";s:32:"shop/marketing/goods_rank/config";s:9:"view_path";s:27:"marketing/goods_rank/config";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:163;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1118;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测列表";s:15:"menu_short_name";s:18:"学员体测列表";s:8:"menu_key";s:67:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_list";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:41:"zhjw_students_survey/zhjw_students_survey";s:11:"router_path";s:41:"zhjw_students_survey/zhjw_students_survey";s:9:"view_path";s:41:"zhjw_students_survey/zhjw_students_survey";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:164;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:424;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员管理";s:15:"menu_short_name";s:6:"会员";s:8:"menu_key";s:6:"member";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:165;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:677;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款维权";s:15:"menu_short_name";s:12:"退款维权";s:8:"menu_key";s:17:"shop_order_refund";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont icondingdanweiquan";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"shop/order/refund";s:9:"view_path";s:12:"order/refund";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:166;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:731;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员数据";s:15:"menu_short_name";s:12:"会员数据";s:8:"menu_key";s:16:"shop_stat_member";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:16:"shop/stat/member";s:11:"router_path";s:16:"shop/stat/member";s:9:"view_path";s:11:"stat/member";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:167;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:740;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"满减送";s:15:"menu_short_name";s:9:"满减送";s:8:"menu_key";s:18:"shop_goods_manjian";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:12:"shop/manjian";s:11:"router_path";s:27:"shop/marketing/manjian/list";s:9:"view_path";s:22:"marketing/manjian/list";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:168;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:760;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"兑换记录";s:15:"menu_short_name";s:12:"兑换记录";s:8:"menu_key";s:24:"shop_point_exchange_list";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconpointexchange";s:7:"api_url";s:0:"";s:11:"router_path";s:34:"shop/marketing/exchange/order_list";s:9:"view_path";s:29:"marketing/exchange/order_list";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:169;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:680;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"批量发货";s:15:"menu_short_name";s:12:"批量发货";s:8:"menu_key";s:25:"shop_order_batch_delivery";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/batch/delivery";s:9:"view_path";s:20:"order/batch_delivery";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:170;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:732;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"交易数据";s:15:"menu_short_name";s:12:"交易数据";s:8:"menu_key";s:15:"shop_stat_order";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"shop/stat/order";s:9:"view_path";s:10:"stat/order";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:171;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:746;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"限时折扣";s:15:"menu_short_name";s:12:"限时折扣";s:8:"menu_key";s:19:"shop_goods_discount";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:172;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:681;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发票管理";s:15:"menu_short_name";s:12:"发票管理";s:8:"menu_key";s:12:"shop_invoice";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconfapiaoguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"shop/order/invoice";s:9:"view_path";s:13:"order/invoice";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:173;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:733;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"流量数据";s:15:"menu_short_name";s:12:"流量数据";s:8:"menu_key";s:15:"shop_stat_visit";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/stat/visit";s:11:"router_path";s:15:"shop/stat/visit";s:9:"view_path";s:10:"stat/visit";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:174;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:755;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分商城";s:15:"menu_short_name";s:12:"积分商城";s:8:"menu_key";s:25:"shop_goods_point_exchange";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:0;s:4:"icon";s:22:"iconfont iconpointshop";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:175;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:472;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"应用管理";s:15:"menu_short_name";s:6:"应用";s:8:"menu_key";s:5:"addon";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconmanage-apply";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:176;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:683;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品评价";s:15:"menu_short_name";s:12:"商品评价";s:8:"menu_key";s:19:"shop_goods_evaluate";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconshangpinpinglun";s:7:"api_url";s:19:"shop/goods/evaluate";s:11:"router_path";s:19:"shop/order/evaluate";s:9:"view_path";s:14:"goods/evaluate";s:7:"methods";s:3:"get";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:177;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:763;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"新人专享";s:15:"menu_short_name";s:12:"新人专享";s:8:"menu_key";s:28:"shop_goods_newcomer_discount";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:178;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:690;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单设置";s:15:"menu_short_name";s:12:"订单设置";s:8:"menu_key";s:17:"shop_config_order";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconjiaoyishezhi";s:7:"api_url";s:17:"shop/order/config";s:11:"router_path";s:23:"shop/order/order/config";s:9:"view_path";s:12:"order/config";s:7:"methods";s:0:"";s:4:"sort";i:85;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:179;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:766;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品榜单";s:15:"menu_short_name";s:12:"商品榜单";s:8:"menu_key";s:15:"shop_goods_rank";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:85;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:180;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:506;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"权限管理";s:15:"menu_short_name";s:6:"权限";s:8:"menu_key";s:4:"auth";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:12:"element Lock";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:181;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:647;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"参数模板";s:15:"menu_short_name";s:12:"参数模板";s:8:"menu_key";s:20:"shop_goods_attr_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconshangpinfuwu";s:7:"api_url";s:15:"shop/goods/attr";s:11:"router_path";s:15:"shop/goods/attr";s:9:"view_path";s:10:"goods/attr";s:7:"methods";s:3:"get";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:182;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:692;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"商家地址库";s:15:"menu_short_name";s:15:"商家地址库";s:8:"menu_key";s:12:"shop_address";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconshangjiadizhiku";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"shop/order/address";s:9:"view_path";s:12:"address/list";s:7:"methods";s:3:"get";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:183;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:519;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:7:"setting";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:15:"element Setting";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:184;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:651;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品统计";s:15:"menu_short_name";s:12:"商品统计";s:8:"menu_key";s:15:"shop_stat_goods";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:10:"stat/goods";s:11:"router_path";s:15:"shop/stat/goods";s:9:"view_path";s:10:"stat/goods";s:7:"methods";s:3:"get";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:185;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:694;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配送设置";s:15:"menu_short_name";s:12:"配送设置";s:8:"menu_key";s:20:"shop_config_delivery";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconpaisongshezhi";s:7:"api_url";s:0:"";s:11:"router_path";s:19:"shop/order/delivery";s:9:"view_path";s:15:"delivery/config";s:7:"methods";s:0:"";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:186;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:652;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"回收站";s:15:"menu_short_name";s:9:"回收站";s:8:"menu_key";s:23:"shop_goods_recycle_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconhuishouzhan";s:7:"api_url";s:18:"shop/goods/recycle";s:11:"router_path";s:18:"shop/goods/recycle";s:9:"view_path";s:13:"goods/recycle";s:7:"methods";s:3:"get";s:4:"sort";i:82;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:187;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:696;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"电子面单";s:15:"menu_short_name";s:12:"电子面单";s:8:"menu_key";s:30:"shop_delivery_electronic_sheet";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/delivery/electronic_sheet";s:9:"view_path";s:25:"delivery/electronic_sheet";s:7:"methods";s:3:"get";s:4:"sort";i:82;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:188;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:432;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员标签";s:15:"menu_short_name";s:12:"会员标签";s:8:"menu_key";s:12:"member_label";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:21:"element CollectionTag";s:7:"api_url";s:12:"member/label";s:11:"router_path";s:12:"member/label";s:9:"view_path";s:12:"member/label";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:189;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:479;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"微信公众号";s:15:"menu_short_name";s:15:"微信公众号";s:8:"menu_key";s:14:"channel_wechat";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:32:"iconfont iconweixingongzhonghao1";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"channel/wechat";s:9:"view_path";s:21:"channel/wechat/access";s:7:"methods";s:0:"";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:190;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:668;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单管理";s:15:"menu_short_name";s:6:"订单";s:8:"menu_key";s:10:"shop_order";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:0;s:4:"icon";s:26:"iconfont icondingdanguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:191;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:750;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动设置";s:15:"menu_short_name";s:12:"活动设置";s:8:"menu_key";s:26:"shop_goods_discount_config";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/marketing/discount/config";s:9:"view_path";s:25:"marketing/discount/config";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:192;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:765;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"购买记录";s:15:"menu_short_name";s:12:"购买记录";s:8:"menu_key";s:39:"shop_goods_newcomer_discount_order_list";s:10:"parent_key";s:28:"shop_goods_newcomer_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:26:"shop/active/newcomer/order";s:11:"router_path";s:34:"shop/marketing/newcomer/order_list";s:9:"view_path";s:29:"marketing/newcomer/order_list";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:193;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:768;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单管理";s:15:"menu_short_name";s:12:"榜单管理";s:8:"menu_key";s:20:"shop_goods_rank_list";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:20:"shop/good/rank/pages";s:11:"router_path";s:30:"shop/marketing/goods_rank/list";s:9:"view_path";s:25:"marketing/goods_rank/list";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:194;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1117;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员体测";s:15:"menu_short_name";s:12:"学员体测";s:8:"menu_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"zhjw_students_survey";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:195;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:527;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员设置";s:15:"menu_short_name";s:12:"会员设置";s:8:"menu_key";s:14:"setting_member";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:71;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:196;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:528;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员设置";s:15:"menu_short_name";s:12:"会员设置";s:8:"menu_key";s:21:"setting_member_config";s:10:"parent_key";s:14:"setting_member";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:20:"member/config/member";s:11:"router_path";s:14:"setting/member";s:9:"view_path";s:14:"setting/member";s:7:"methods";s:3:"get";s:4:"sort";i:71;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:197;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:480;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"微信小程序";s:15:"menu_short_name";s:15:"微信小程序";s:8:"menu_key";s:12:"weapp_access";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:30:"iconfont iconxiaochengxushezhi";s:7:"api_url";s:12:"weapp/access";s:11:"router_path";s:13:"channel/weapp";s:9:"view_path";s:20:"channel/weapp/access";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:198;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:530;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"注册登录";s:15:"menu_short_name";s:12:"注册登录";s:8:"menu_key";s:22:"setting_login_register";s:10:"parent_key";s:14:"setting_member";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconzhuceshezhi";s:7:"api_url";s:19:"member/config/login";s:11:"router_path";s:13:"setting/login";s:9:"view_path";s:13:"setting/login";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:199;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:729;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:6:"数据";s:8:"menu_key";s:9:"shop_stat";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:0;s:4:"icon";s:24:"iconfont iconshujutongji";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:200;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1119;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测添加";s:15:"menu_short_name";s:18:"学员体测添加";s:8:"menu_key";s:66:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_add";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:41:"zhjw_students_survey/zhjw_students_survey";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:201;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:481;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"支付宝小程序";s:15:"menu_short_name";s:18:"支付宝小程序";s:8:"menu_key";s:19:"aliapp_weapp_access";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont iconzhifubao";s:7:"api_url";s:13:"aliapp/access";s:11:"router_path";s:14:"channel/aliapp";s:9:"view_path";s:21:"channel/aliapp/access";s:7:"methods";s:3:"get";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:202;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:532;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"支付管理";s:15:"menu_short_name";s:12:"支付管理";s:8:"menu_key";s:11:"setting_pay";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:14:"element Wallet";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"setting/pay";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:203;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1120;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测编辑";s:15:"menu_short_name";s:18:"学员体测编辑";s:8:"menu_key";s:67:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_edit";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:46:"zhjw_students_survey/zhjw_students_survey/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:204;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:537;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提现设置";s:15:"menu_short_name";s:12:"提现设置";s:8:"menu_key";s:15:"cash_out_config";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:22:"member/config/cash_out";s:11:"router_path";s:16:"setting/cash_out";s:9:"view_path";s:16:"setting/cash_out";s:7:"methods";s:3:"get";s:4:"sort";i:59;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:205;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:437;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"等级列表";s:15:"menu_short_name";s:12:"会员等级";s:8:"menu_key";s:17:"member_level_list";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:21:"element CollectionTag";s:7:"api_url";s:12:"member/level";s:11:"router_path";s:12:"member/level";s:9:"view_path";s:12:"member/level";s:7:"methods";s:3:"get";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:206;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:473;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"应用列表";s:15:"menu_short_name";s:12:"应用列表";s:8:"menu_key";s:10:"addon_list";s:10:"parent_key";s:5:"addon";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconmanage-apply";s:7:"api_url";s:10:"addon/list";s:11:"router_path";s:9:"app/index";s:9:"view_path";s:9:"app/index";s:7:"methods";s:3:"get";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:207;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:539;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息管理";s:15:"menu_short_name";s:12:"消息管理";s:8:"menu_key";s:14:"setting_notice";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:22:"element ChatLineSquare";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"setting/notice";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:208;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:603;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"环境检测";s:15:"menu_short_name";s:12:"环境检测";s:8:"menu_key";s:23:"tools_check_environment";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuanjingjiance";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/detection";s:9:"view_path";s:15:"tools/detection";s:7:"methods";s:0:"";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:209;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1121;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测删除";s:15:"menu_short_name";s:18:"学员体测删除";s:8:"menu_key";s:69:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_delete";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:46:"zhjw_students_survey/zhjw_students_survey/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:210;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:441;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:19:"添加/编辑等级";s:15:"menu_short_name";s:19:"添加/编辑等级";s:8:"menu_key";s:22:"member_level_edit_page";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"member/level_edit";s:9:"view_path";s:17:"member/level_edit";s:7:"methods";s:0:"";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:211;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:443;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"成长值规则";s:15:"menu_short_name";s:15:"成长值规则";s:8:"menu_key";s:11:"growth_rule";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"member/config/growth_rule";s:11:"router_path";s:19:"setting/growth_rule";s:9:"view_path";s:19:"setting/growth_rule";s:7:"methods";s:3:"get";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:212;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:445;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"会员成长值";s:15:"menu_short_name";s:15:"会员成长值";s:8:"menu_key";s:13:"member_growth";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconjifen-xianxing";s:7:"api_url";s:21:"member/account/growth";s:11:"router_path";s:13:"member/growth";s:9:"view_path";s:13:"member/growth";s:7:"methods";s:3:"get";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:213;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:462;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销管理";s:15:"menu_short_name";s:12:"核销管理";s:8:"menu_key";s:6:"verify";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:214;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:463;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"核销员";s:15:"menu_short_name";s:9:"核销员";s:8:"menu_key";s:13:"verifier_list";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"verify/verifier";s:11:"router_path";s:18:"marketing/verifier";s:9:"view_path";s:18:"marketing/verifier";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:215;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:466;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销记录";s:15:"menu_short_name";s:12:"核销记录";s:8:"menu_key";s:11:"verify_list";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"verify/verify/record";s:11:"router_path";s:16:"marketing/verify";s:9:"view_path";s:16:"marketing/verify";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:216;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:467;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销详情";s:15:"menu_short_name";s:12:"核销详情";s:8:"menu_key";s:13:"verify_detail";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:27:"verify/verify/";s:11:"router_path";s:23:"marketing/verify/detail";s:9:"view_path";s:23:"marketing/verify_detail";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:217;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:604;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"菜单管理";s:15:"menu_short_name";s:12:"菜单管理";s:8:"menu_key";s:9:"site_menu";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:10:"tools/menu";s:9:"view_path";s:9:"auth/menu";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:218;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:545;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"短信管理";s:15:"menu_short_name";s:12:"短信管理";s:8:"menu_key";s:10:"sms_notice";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:15:"element Message";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:219;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:609;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"计划任务";s:15:"menu_short_name";s:12:"计划任务";s:8:"menu_key";s:14:"tools_schedule";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconjihuarenwu";s:7:"api_url";s:17:"sys/schedule/list";s:11:"router_path";s:14:"tools/schedule";s:9:"view_path";s:14:"tools/schedule";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:220;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:614;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"执行日志";s:15:"menu_short_name";s:12:"执行日志";s:8:"menu_key";s:18:"tools_schedule_log";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconjihuarenwu";s:7:"api_url";s:21:"sys/schedule/log/list";s:11:"router_path";s:18:"tools/schedule_log";s:9:"view_path";s:18:"tools/schedule_log";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:221;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:468;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到管理";s:15:"menu_short_name";s:12:"签到管理";s:8:"menu_key";s:4:"sign";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:222;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:469;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到设置";s:15:"menu_short_name";s:12:"签到设置";s:8:"menu_key";s:8:"sign_set";s:10:"parent_key";s:4:"sign";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:18:"member/sign/config";s:11:"router_path";s:21:"marketing/sign/config";s:9:"view_path";s:21:"marketing/sign_config";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:223;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:471;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到记录";s:15:"menu_short_name";s:12:"签到记录";s:8:"menu_key";s:9:"sign_list";s:10:"parent_key";s:4:"sign";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:11:"member/sign";s:11:"router_path";s:14:"marketing/sign";s:9:"view_path";s:19:"marketing/sign_list";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:224;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:551;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"小票打印";s:15:"menu_short_name";s:12:"小票打印";s:8:"menu_key";s:18:"printer_management";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:7:"printer";s:11:"router_path";s:12:"printer/list";s:9:"view_path";s:12:"printer/list";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:225;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:615;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"授权信息";s:15:"menu_short_name";s:12:"授权信息";s:8:"menu_key";s:8:"app_auth";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshouquanxinxi2";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/authorize";s:9:"view_path";s:13:"app/authorize";s:7:"methods";s:0:"";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:226;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:571;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面装修";s:15:"menu_short_name";s:12:"页面装修";s:8:"menu_key";s:8:"decorate";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:21;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:227;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:525;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"登录设置";s:15:"menu_short_name";s:12:"登录设置";s:8:"menu_key";s:13:"setting_login";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconzhuceshezhi";s:7:"api_url";s:16:"sys/config/login";s:11:"router_path";s:18:"setting/adminlogin";s:9:"view_path";s:18:"setting/adminlogin";s:7:"methods";s:3:"get";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:228;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:559;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统工具";s:15:"menu_short_name";s:12:"系统工具";s:8:"menu_key";s:12:"setting_tool";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:229;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:579;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"开发";s:15:"menu_short_name";s:6:"开发";s:8:"menu_key";s:4:"tool";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:12:"element Edit";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:230;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:618;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"开发者key";s:15:"menu_short_name";s:12:"开发者key";s:8:"menu_key";s:15:"developer_token";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshouquanxinxi2";s:7:"api_url";s:26:"sys/config/developer_token";s:11:"router_path";s:21:"tools/developer_token";s:9:"view_path";s:23:"setting/developer_token";s:7:"methods";s:3:"get";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:231;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:546;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"短信设置";s:15:"menu_short_name";s:12:"短信设置";s:8:"menu_key";s:11:"sms_setting";s:10:"parent_key";s:10:"sms_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"notice/notice/sms";s:11:"router_path";s:19:"setting/sms/setting";s:9:"view_path";s:11:"setting/sms";s:7:"methods";s:3:"get";s:4:"sort";i:12;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:232;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:549;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发送记录";s:15:"menu_short_name";s:12:"发送记录";s:8:"menu_key";s:18:"sms_notice_records";s:10:"parent_key";s:10:"sms_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"notice/sms/log";s:11:"router_path";s:19:"setting/sms/records";s:9:"view_path";s:19:"setting/sms_records";s:7:"methods";s:3:"get";s:4:"sort";i:11;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:233;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:540;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息模板";s:15:"menu_short_name";s:12:"消息模板";s:8:"menu_key";s:23:"setting_notice_template";s:10:"parent_key";s:14:"setting_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"notice/notice";s:11:"router_path";s:23:"setting/notice/template";s:9:"view_path";s:14:"setting/notice";s:7:"methods";s:3:"get";s:4:"sort";i:10;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:234;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:544;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发送记录";s:15:"menu_short_name";s:12:"发送记录";s:8:"menu_key";s:22:"setting_notice_records";s:10:"parent_key";s:14:"setting_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"notice/notice/log";s:11:"router_path";s:22:"setting/notice/records";s:9:"view_path";s:22:"setting/notice_records";s:7:"methods";s:3:"get";s:4:"sort";i:9;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:235;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:600;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"数据字典添加";s:15:"menu_short_name";s:18:"数据字典添加";s:8:"menu_key";s:22:"sys_dict_dict_dict_add";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:4:"dict";s:11:"router_path";s:4:"edit";s:9:"view_path";s:9:"dict/edit";s:7:"methods";s:4:"post";s:4:"sort";i:4;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:236;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:610;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:12:"schedule_add";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"sys/schedule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:4;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:237;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:601;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:23:"sys_dict_dict_dict_edit";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:9:"dict/";s:11:"router_path";s:4:"edit";s:9:"view_path";s:9:"dict/edit";s:7:"methods";s:3:"put";s:4:"sort";i:3;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:238;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:611;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:15:"schedule_update";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"sys/schedule/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:3;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:239;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:602;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:25:"sys_dict_dict_dict_delete";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:9:"dict/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:2;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:240;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:612;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"设置状态";s:15:"menu_short_name";s:12:"设置状态";s:8:"menu_key";s:19:"schedule_set_status";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"schedule/modify/status/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:2;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:241;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:412;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航添加";s:15:"menu_short_name";s:18:"首页导航添加";s:8:"menu_key";s:15:"diy_web_nav_add";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"web/nav";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:242;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:413;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航编辑";s:15:"menu_short_name";s:18:"首页导航编辑";s:8:"menu_key";s:16:"diy_web_nav_edit";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/nav/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:243;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:414;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航删除";s:15:"menu_short_name";s:18:"首页导航删除";s:8:"menu_key";s:18:"diy_web_nav_delete";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/nav/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:244;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:417;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告添加";s:15:"menu_short_name";s:12:"广告添加";s:8:"menu_key";s:11:"web_adv_add";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"web/adv";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:245;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:418;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告编辑";s:15:"menu_short_name";s:12:"广告编辑";s:8:"menu_key";s:12:"web_adv_edit";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/adv/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:246;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:419;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告删除";s:15:"menu_short_name";s:12:"广告删除";s:8:"menu_key";s:14:"web_adv_delete";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/adv/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:247;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:421;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接添加";s:15:"menu_short_name";s:18:"友情链接添加";s:8:"menu_key";s:25:"diy_web_friendly_link_add";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"web/friendly_link";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:248;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:422;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接编辑";s:15:"menu_short_name";s:18:"友情链接编辑";s:8:"menu_key";s:26:"diy_web_friendly_link_edit";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"web/friendly_link/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:249;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:423;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接删除";s:15:"menu_short_name";s:18:"友情链接删除";s:8:"menu_key";s:28:"diy_web_friendly_link_delete";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"web/friendly_link/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:250;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:508;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"管理员信息";s:15:"menu_short_name";s:15:"管理员信息";s:8:"menu_key";s:16:"auth_user_detail";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"user/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:251;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:515;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:13:"auth_role_add";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/role";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:252;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:516;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:16:"auth_role_update";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/role/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:253;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:517;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:13:"auth_role_del";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/role/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:254;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:605;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:18:"auth_site_menu_add";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:255;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:606;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:21:"auth_site_menu_update";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/menu/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:256;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:607;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:18:"auth_site_menu_del";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:257;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:613;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:12:"schedule_del";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"sys/schedule/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:258;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:393;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:15:"diy_page_update";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:259;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:398;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"diy_tabbar_update";s:10:"parent_key";s:10:"diy_bottom";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"diy/bottom";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:260;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:407;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"海报装修";s:15:"menu_short_name";s:12:"海报装修";s:8:"menu_key";s:15:"poster_decorate";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:11:"poster/";s:11:"router_path";s:11:"poster/edit";s:9:"view_path";s:11:"poster/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:261;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:409;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据列表";s:15:"menu_short_name";s:12:"数据列表";s:8:"menu_key";s:20:"diy_form_record_list";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:16:"diy_form/records";s:11:"router_path";s:16:"diy_form/records";s:9:"view_path";s:16:"diy_form/records";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:262;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:416;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告管理";s:15:"menu_short_name";s:6:"广告";s:8:"menu_key";s:7:"web_adv";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:13:"element-House";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"web/adv";s:9:"view_path";s:7:"web/adv";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:263;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:426;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑会员";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:13:"member_update";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:33:"member/modify//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:264;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:427;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加会员";s:15:"menu_short_name";s:6:"添加";s:8:"menu_key";s:10:"member_add";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"member/member";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:265;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:428;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员导出";s:15:"menu_short_name";s:12:"会员导出";s:8:"menu_key";s:13:"member_export";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/member/export";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:266;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:430;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"调整会员积分";s:15:"menu_short_name";s:18:"调整会员积分";s:8:"menu_key";s:12:"adjust_point";s:10:"parent_key";s:11:"member_info";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/account/point";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:267;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:431;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"调整会员余额";s:15:"menu_short_name";s:18:"调整会员余额";s:8:"menu_key";s:14:"adjust_balance";s:10:"parent_key";s:11:"member_info";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"member/account/balance";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:268;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:433;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑标签";s:15:"menu_short_name";s:12:"编辑标签";s:8:"menu_key";s:19:"member_label_update";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:269;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:434;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加标签";s:15:"menu_short_name";s:12:"添加标签";s:8:"menu_key";s:16:"member_label_add";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"member/label";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:270;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:435;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除标签";s:15:"menu_short_name";s:12:"删除标签";s:8:"menu_key";s:19:"member_label_delete";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:271;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:438;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加等级";s:15:"menu_short_name";s:12:"添加等级";s:8:"menu_key";s:16:"member_level_add";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"member/level";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:272;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:439;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑等级";s:15:"menu_short_name";s:12:"编辑等级";s:8:"menu_key";s:17:"member_level_edit";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:273;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:440;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除等级";s:15:"menu_short_name";s:12:"删除等级";s:8:"menu_key";s:19:"member_level_delete";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:274;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:453;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"财务流水";s:15:"menu_short_name";s:12:"财务流水";s:8:"menu_key";s:17:"site_account_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:15:"finance/account";s:11:"router_path";s:15:"finance/account";s:9:"view_path";s:15:"finance/account";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:275;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:454;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"支付单据详情";s:15:"menu_short_name";s:18:"支付单据详情";s:8:"menu_key";s:15:"site_pay_detail";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:10:"pay/detail";s:11:"router_path";s:18:"finance/pay/detail";s:9:"view_path";s:18:"finance/pay_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:276;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:455;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员提现";s:15:"menu_short_name";s:12:"会员提现";s:8:"menu_key";s:13:"cash_out_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:15:"member/cash_out";s:11:"router_path";s:16:"finance/cash_out";s:9:"view_path";s:16:"finance/cash_out";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:277;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:458;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员退款";s:15:"menu_short_name";s:12:"会员退款";s:8:"menu_key";s:18:"member_refund_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconhuiyuantixian";s:7:"api_url";s:10:"pay/refund";s:11:"router_path";s:14:"finance/refund";s:9:"view_path";s:18:"finance/pay_refund";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:278;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:460;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款详情";s:15:"menu_short_name";s:12:"退款详情";s:8:"menu_key";s:20:"member_refund_detail";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconhuiyuantixian";s:7:"api_url";s:22:"pay/refund/";s:11:"router_path";s:21:"finance/refund/detail";s:9:"view_path";s:21:"finance/refund_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:279;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:482;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发布教程";s:15:"menu_short_name";s:12:"发布教程";s:8:"menu_key";s:13:"wechat_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/course";s:11:"router_path";s:21:"channel/wechat/course";s:9:"view_path";s:21:"channel/wechat/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:280;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:483;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"公众号配置";s:15:"menu_short_name";s:15:"公众号配置";s:8:"menu_key";s:13:"wechat_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/config";s:11:"router_path";s:21:"channel/wechat/config";s:9:"view_path";s:21:"channel/wechat/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:281;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:485;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"公众号回复配置";s:15:"menu_short_name";s:21:"公众号回复配置";s:8:"menu_key";s:19:"wechat_reply_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"channel/wechat/reply";s:9:"view_path";s:20:"channel/wechat/reply";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:282;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:488;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:28:"关键字回复添加/编辑";s:15:"menu_short_name";s:28:"关键字回复添加/编辑";s:8:"menu_key";s:20:"wechat_keyword_reply";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:33:"channel/wechat/keyword_reply_edit";s:9:"view_path";s:33:"channel/wechat/keyword_reply_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:283;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:489;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复添加";s:15:"menu_short_name";s:21:"关键字回复添加";s:8:"menu_key";s:24:"wechat_keyword_reply_add";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:284;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:490;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复编辑";s:15:"menu_short_name";s:21:"关键字回复编辑";s:8:"menu_key";s:25:"wechat_keyword_reply_edit";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:285;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:491;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复删除";s:15:"menu_short_name";s:21:"关键字回复编辑";s:8:"menu_key";s:27:"wechat_keyword_reply_delete";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:286;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:492;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自定义菜单";s:15:"menu_short_name";s:15:"自定义菜单";s:8:"menu_key";s:11:"wechat_menu";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:11:"wechat/menu";s:11:"router_path";s:19:"channel/wechat/menu";s:9:"view_path";s:19:"channel/wechat/menu";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:287;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:494;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"模板消息";s:15:"menu_short_name";s:12:"模板消息";s:8:"menu_key";s:23:"wechat_template_message";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"wechat/template";s:11:"router_path";s:22:"channel/wechat/message";s:9:"view_path";s:23:"channel/wechat/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:288;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:496;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配置教程";s:15:"menu_short_name";s:12:"配置教程";s:8:"menu_key";s:12:"weapp_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/course";s:11:"router_path";s:20:"channel/weapp/course";s:9:"view_path";s:20:"channel/weapp/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:289;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:497;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"小程序配置";s:15:"menu_short_name";s:15:"小程序配置";s:8:"menu_key";s:12:"weapp_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/config";s:11:"router_path";s:20:"channel/weapp/config";s:9:"view_path";s:20:"channel/weapp/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:290;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:499;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订阅消息";s:15:"menu_short_name";s:12:"订阅消息";s:8:"menu_key";s:22:"weapp_template_message";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"weapp/template";s:11:"router_path";s:21:"channel/weapp/message";s:9:"view_path";s:22:"channel/weapp/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:291;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:501;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"小程序发布";s:15:"menu_short_name";s:15:"小程序发布";s:8:"menu_key";s:10:"weapp_code";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:10:"weapp/code";s:11:"router_path";s:18:"channel/weapp/code";s:9:"view_path";s:18:"channel/weapp/code";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:292;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:503;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"支付宝配置";s:15:"menu_short_name";s:15:"支付宝配置";s:8:"menu_key";s:13:"aliapp_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/config";s:11:"router_path";s:21:"channel/aliapp/config";s:9:"view_path";s:21:"channel/aliapp/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:293;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:505;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配置教程";s:15:"menu_short_name";s:12:"配置教程";s:8:"menu_key";s:13:"aliapp_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/course";s:11:"router_path";s:21:"channel/aliapp/course";s:9:"view_path";s:21:"channel/aliapp/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:294;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:553;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加打印机";s:15:"menu_short_name";s:15:"添加打印机";s:8:"menu_key";s:11:"printer_add";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:7:"printer";s:11:"router_path";s:11:"printer/add";s:9:"view_path";s:12:"printer/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:295;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:554;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑打印机";s:15:"menu_short_name";s:15:"添加打印机";s:8:"menu_key";s:12:"printer_edit";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"printer/";s:11:"router_path";s:12:"printer/edit";s:9:"view_path";s:12:"printer/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:296;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:557;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加打印模板";s:15:"menu_short_name";s:18:"添加打印模板";s:8:"menu_key";s:20:"printer_template_add";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:16:"printer/template";s:11:"router_path";s:20:"printer/template/add";s:9:"view_path";s:21:"printer/template_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:297;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:558;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑打印模板";s:15:"menu_short_name";s:18:"编辑打印模板";s:8:"menu_key";s:21:"printer_template_edit";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"printer/template/";s:11:"router_path";s:21:"printer/template/edit";s:9:"view_path";s:21:"printer/template_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:298;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:572;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"装修";s:15:"menu_short_name";s:6:"装修";s:8:"menu_key";s:13:"page_decorate";s:10:"parent_key";s:8:"decorate";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"diy/diy/";s:11:"router_path";s:13:"decorate/edit";s:9:"view_path";s:8:"diy/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:299;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:573;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"表单装修";s:15:"menu_short_name";s:12:"表单装修";s:8:"menu_key";s:18:"form_page_decorate";s:10:"parent_key";s:8:"decorate";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"decorate/form/edit";s:9:"view_path";s:13:"diy_form/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:300;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:574;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面预览";s:15:"menu_short_name";s:12:"页面预览";s:8:"menu_key";s:7:"preview";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:301;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:575;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面预览";s:15:"menu_short_name";s:12:"页面预览";s:8:"menu_key";s:16:"page_wap_preview";s:10:"parent_key";s:7:"preview";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"preview/wap";s:9:"view_path";s:13:"index/preview";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:302;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:576;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"万能表单";s:15:"menu_short_name";s:12:"万能表单";s:8:"menu_key";s:8:"diy_form";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:13:"element Files";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:303;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:577;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"表单列表";s:15:"menu_short_name";s:12:"表单列表";s:8:"menu_key";s:13:"diy_form_list";s:10:"parent_key";s:8:"diy_form";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:8:"diy_form";s:11:"router_path";s:13:"diy_form/list";s:9:"view_path";s:13:"diy_form/list";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:304;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:608;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"详情";s:15:"menu_short_name";s:6:"详情";s:8:"menu_key";s:19:"auth_site_menu_info";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/menu/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:305;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:648;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:27:"修改参数模板排序号";s:15:"menu_short_name";s:27:"修改参数模板排序号";s:8:"menu_key";s:25:"shop_goods_attr_sort_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:306;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:649;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"修改参数模板名称";s:15:"menu_short_name";s:24:"修改参数模板名称";s:8:"menu_key";s:25:"shop_goods_attr_name_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/goods/attr/attr_name";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:307;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:650;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改参数模板值";s:15:"menu_short_name";s:21:"修改参数模板值";s:8:"menu_key";s:26:"shop_goods_attr_value_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/attr/attr_value";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:308;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:653;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品恢复";s:15:"menu_short_name";s:12:"商品恢复";s:8:"menu_key";s:18:"shop_goods_recycle";s:10:"parent_key";s:23:"shop_goods_recycle_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"shop/goods/recycle";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:309;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:654;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品添加";s:15:"menu_short_name";s:12:"商品添加";s:8:"menu_key";s:22:"shop_goods_virtual_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:18:"shop/goods/virtual";s:11:"router_path";s:23:"shop/goods/virtual_edit";s:9:"view_path";s:18:"goods/virtual_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:310;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:655;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品编辑";s:15:"menu_short_name";s:12:"商品编辑";s:8:"menu_key";s:23:"shop_goods_virtual_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/goods/virtual/";s:11:"router_path";s:23:"shop/goods/virtual_edit";s:9:"view_path";s:18:"goods/virtual_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:311;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:656;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品删除";s:15:"menu_short_name";s:12:"商品删除";s:8:"menu_key";s:17:"shop_goods_delete";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/delete";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:312;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:657;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"商品排序号修改";s:15:"menu_short_name";s:21:"商品排序号修改";s:8:"menu_key";s:20:"shop_goods_sort_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:313;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:658;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:27:"商品上下架状态修改";s:15:"menu_short_name";s:27:"商品上下架状态修改";s:8:"menu_key";s:22:"shop_goods_status_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/status";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:314;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:659;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品复制";s:15:"menu_short_name";s:12:"商品复制";s:8:"menu_key";s:15:"shop_goods_copy";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/copy/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:315;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:660;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:30:"商品规格列表库存编辑";s:15:"menu_short_name";s:30:"商品规格列表库存编辑";s:8:"menu_key";s:25:"shop_goods_sku_stock_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/sku/stock";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:316;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:661;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:30:"商品规格列表价格编辑";s:15:"menu_short_name";s:30:"商品规格列表价格编辑";s:8:"menu_key";s:25:"shop_goods_sku_price_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/sku/price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:317;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:662;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:36:"商品规格列表会员价格编辑";s:15:"menu_short_name";s:36:"商品规格列表会员价格编辑";s:8:"menu_key";s:32:"shop_goods_sku_member_price_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/sku/member_price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:318;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:663;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除参数模板";s:15:"menu_short_name";s:18:"删除参数模板";s:8:"menu_key";s:22:"shop_goods_attr_delete";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:319;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:664;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑参数模板";s:15:"menu_short_name";s:18:"编辑参数模板";s:8:"menu_key";s:20:"shop_goods_attr_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/";s:11:"router_path";s:20:"shop/goods/attr_edit";s:9:"view_path";s:15:"goods/attr_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:320;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:665;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加参数模板";s:15:"menu_short_name";s:18:"添加参数模板";s:8:"menu_key";s:19:"shop_goods_attr_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/attr";s:11:"router_path";s:20:"shop/goods/attr_edit";s:9:"view_path";s:15:"goods/attr_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:321;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:666;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品添加";s:15:"menu_short_name";s:12:"商品添加";s:8:"menu_key";s:19:"shop_goods_real_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:10:"shop/goods";s:11:"router_path";s:20:"shop/goods/real_edit";s:9:"view_path";s:15:"goods/real_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:322;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:667;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品编辑";s:15:"menu_short_name";s:12:"商品编辑";s:8:"menu_key";s:20:"shop_goods_real_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/";s:11:"router_path";s:20:"shop/goods/real_edit";s:9:"view_path";s:15:"goods/real_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:323;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:670;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单关闭";s:15:"menu_short_name";s:12:"订单关闭";s:8:"menu_key";s:16:"shop_order_close";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/order/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:324;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:671;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单改价";s:15:"menu_short_name";s:12:"订单改价";s:8:"menu_key";s:21:"shop_order_edit_price";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/order/edit_price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:325;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:672;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"订单配送修改";s:15:"menu_short_name";s:18:"订单配送修改";s:8:"menu_key";s:24:"shop_order_edit_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/order/edit_delivery";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:326;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:673;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单发货";s:15:"menu_short_name";s:12:"订单发货";s:8:"menu_key";s:19:"shop_order_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/order/delivery";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:327;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:674;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"订单项发货";s:15:"menu_short_name";s:15:"订单项发货";s:8:"menu_key";s:25:"shop_order_goods_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/order/goods/delivery/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:328;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:675;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商家留言";s:15:"menu_short_name";s:12:"商家留言";s:8:"menu_key";s:17:"shop_order_remark";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/order/shop_remark";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:329;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:676;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单完成";s:15:"menu_short_name";s:12:"订单完成";s:8:"menu_key";s:17:"shop_order_finish";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/order/finish/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:330;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:678;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款审核";s:15:"menu_short_name";s:12:"退款审核";s:8:"menu_key";s:23:"shop_order_refund_audit";s:10:"parent_key";s:17:"shop_order_refund";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:41:"shop/order/refund/audit/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:331;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:679;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"退款收货审核";s:15:"menu_short_name";s:18:"退款收货审核";s:8:"menu_key";s:26:"shop_order_refund_delivery";s:10:"parent_key";s:17:"shop_order_refund";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:44:"shop/order/refund/delivery/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:332;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:682;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"开票";s:15:"menu_short_name";s:6:"开票";s:8:"menu_key";s:17:"shop_invoice_open";s:10:"parent_key";s:12:"shop_invoice";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/invoice/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:333;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:684;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价删除";s:15:"menu_short_name";s:18:"商品评价删除";s:8:"menu_key";s:26:"shop_goods_evaluate_delete";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/goods/evaluate/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:334;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:685;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价回复";s:15:"menu_short_name";s:18:"商品评价回复";s:8:"menu_key";s:25:"shop_goods_evaluate_reply";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/goods/evaluate/reply/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:335;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:686;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价通过";s:15:"menu_short_name";s:18:"商品评价通过";s:8:"menu_key";s:25:"shop_goods_evaluate_adopt";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/goods/evaluate/adopt/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:336;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:687;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价拒绝";s:15:"menu_short_name";s:18:"商品评价拒绝";s:8:"menu_key";s:26:"shop_goods_evaluate_refuse";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:31:"shop/goods/evaluate/refuse/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:337;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:688;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价置顶";s:15:"menu_short_name";s:18:"商品评价置顶";s:8:"menu_key";s:27:"shop_goods_evaluate_topping";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/goods/evaluate/topping/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:338;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:689;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品评价取消置顶";s:15:"menu_short_name";s:24:"商品评价取消置顶";s:8:"menu_key";s:34:"shop_goods_evaluate_cancel_topping";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:39:"shop/goods/evaluate/cancel_topping/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:339;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:691;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"订单设置编辑";s:15:"menu_short_name";s:18:"订单设置编辑";s:8:"menu_key";s:21:"shop_config_order_set";s:10:"parent_key";s:17:"shop_config_order";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/order/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:340;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:693;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"删除商家地址库";s:15:"menu_short_name";s:21:"删除商家地址库";s:8:"menu_key";s:19:"shop_address_delete";s:10:"parent_key";s:12:"shop_address";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shop_address/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:341;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:695;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"配送设置编辑";s:15:"menu_short_name";s:18:"配送设置编辑";s:8:"menu_key";s:24:"shop_config_delivery_set";s:10:"parent_key";s:20:"shop_config_delivery";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/delivery/setConfig";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:342;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:697;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"删除电子面单模板";s:15:"menu_short_name";s:24:"删除电子面单模板";s:8:"menu_key";s:34:"shop_delivery_electronic_sheet_del";s:10:"parent_key";s:30:"shop_delivery_electronic_sheet";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/electronic_sheet";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:343;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:698;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加评价";s:15:"menu_short_name";s:12:"添加评价";s:8:"menu_key";s:23:"shop_goods_evaluate_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/goods/evaluate";s:11:"router_path";s:23:"shop/order/evaluate/add";s:9:"view_path";s:19:"goods/evaluate_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:344;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:699;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:22:"添加/编辑地址库";s:15:"menu_short_name";s:22:"添加/编辑地址库";s:8:"menu_key";s:21:"shop_address_add_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:23:"shop/order/address/edit";s:9:"view_path";s:12:"address/edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:345;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:700;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"地址库添加";s:15:"menu_short_name";s:15:"地址库添加";s:8:"menu_key";s:16:"shop_address_add";s:10:"parent_key";s:21:"shop_address_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/shop_address";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:346;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:701;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"地址库编辑";s:15:"menu_short_name";s:15:"地址库编辑";s:8:"menu_key";s:17:"shop_address_edit";s:10:"parent_key";s:21:"shop_address_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shop_address/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:347;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:702;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"物流公司";s:15:"menu_short_name";s:12:"物流公司";s:8:"menu_key";s:28:"shop_config_delivery_company";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:27:"shop/order/delivery/company";s:9:"view_path";s:16:"delivery/company";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:348;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:703;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"物流公司删除";s:15:"menu_short_name";s:18:"物流公司删除";s:8:"menu_key";s:35:"shop_config_delivery_company_delete";s:10:"parent_key";s:28:"shop_config_delivery_company";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/delivery/company/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:349;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:704;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加物流公司";s:15:"menu_short_name";s:18:"添加物流公司";s:8:"menu_key";s:32:"shop_config_delivery_company_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:31:"shop/order/delivery/company_add";s:9:"view_path";s:21:"delivery/company_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:350;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:705;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑物流公司";s:15:"menu_short_name";s:18:"编辑物流公司";s:8:"menu_key";s:33:"shop_config_delivery_company_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:32:"shop/order/delivery/company_edit";s:9:"view_path";s:21:"delivery/company_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:351;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:706;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"同城配送";s:15:"menu_short_name";s:12:"同城配送";s:8:"menu_key";s:26:"shop_config_delivery_local";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/delivery/local";s:9:"view_path";s:14:"delivery/local";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:352;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:707;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"同城配送设置";s:15:"menu_short_name";s:18:"同城配送设置";s:8:"menu_key";s:30:"shop_config_delivery_local_set";s:10:"parent_key";s:26:"shop_config_delivery_local";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"shop/local";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:353;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:708;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"运费模版";s:15:"menu_short_name";s:12:"运费模版";s:8:"menu_key";s:38:"shop_config_delivery_shipping_template";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shipping/template";s:11:"router_path";s:28:"shop/order/shipping/template";s:9:"view_path";s:17:"delivery/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:354;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:709;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版删除";s:15:"menu_short_name";s:18:"运费模版列表";s:8:"menu_key";s:45:"shop_config_delivery_shipping_template_delete";s:10:"parent_key";s:38:"shop_config_delivery_shipping_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/shipping/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:355;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:710;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:25:"运费模版添加/编辑";s:15:"menu_short_name";s:25:"运费模版添加/编辑";s:8:"menu_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:33:"shop/order/shipping/template_edit";s:9:"view_path";s:22:"delivery/template_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:356;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:711;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版添加";s:15:"menu_short_name";s:18:"运费模版添加";s:8:"menu_key";s:42:"shop_config_delivery_shipping_template_add";s:10:"parent_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shipping/template";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:357;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:712;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版编辑";s:15:"menu_short_name";s:18:"运费模版编辑";s:8:"menu_key";s:43:"shop_config_delivery_shipping_template_edit";s:10:"parent_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/shipping/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:358;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:713;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"配送员";s:15:"menu_short_name";s:9:"配送员";s:8:"menu_key";s:26:"shop_config_delivery_staff";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/delivery/staff";s:9:"view_path";s:14:"delivery/staff";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:359;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:714;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员添加";s:15:"menu_short_name";s:15:"配送员添加";s:8:"menu_key";s:30:"shop_config_delivery_staff_add";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/staff";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:360;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:715;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员编辑";s:15:"menu_short_name";s:15:"配送员编辑";s:8:"menu_key";s:31:"shop_config_delivery_staff_edit";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/staff/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:361;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:716;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员删除";s:15:"menu_short_name";s:15:"配送员删除";s:8:"menu_key";s:33:"shop_config_delivery_staff_delete";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/staff/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:362;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:717;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单详情";s:15:"menu_short_name";s:12:"订单详情";s:8:"menu_key";s:17:"shop_order_detail";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinguanli";s:7:"api_url";s:22:"shop/order/detail/";s:11:"router_path";s:17:"shop/order/detail";s:9:"view_path";s:12:"order/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:363;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:718;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"物流跟踪";s:15:"menu_short_name";s:12:"物流跟踪";s:8:"menu_key";s:27:"shop_config_delivery_search";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconwuliugenzong";s:7:"api_url";s:0:"";s:11:"router_path";s:26:"shop/order/delivery/search";s:9:"view_path";s:15:"delivery/search";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:364;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:719;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"物流跟踪设置";s:15:"menu_short_name";s:18:"物流跟踪设置";s:8:"menu_key";s:31:"shop_config_delivery_search_set";s:10:"parent_key";s:27:"shop_config_delivery_search";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/delivery/search";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:365;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:720;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"自提点";s:15:"menu_short_name";s:9:"自提点";s:8:"menu_key";s:31:"shop_config_shop_delivery_store";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/store";s:11:"router_path";s:25:"shop/order/delivery/store";s:9:"view_path";s:14:"delivery/store";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:366;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:721;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点删除";s:15:"menu_short_name";s:15:"自提点删除";s:8:"menu_key";s:33:"shop_config_delete_delivery_store";s:10:"parent_key";s:31:"shop_config_shop_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/store/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:367;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:722;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:22:"自提点添加/编辑";s:15:"menu_short_name";s:22:"自提点添加/编辑";s:8:"menu_key";s:35:"shop_config_add_edit_delivery_store";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/order/delivery/store/edit";s:9:"view_path";s:19:"delivery/store_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:368;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:723;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点添加";s:15:"menu_short_name";s:15:"自提点添加";s:8:"menu_key";s:30:"shop_config_add_delivery_store";s:10:"parent_key";s:35:"shop_config_add_edit_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/store";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:369;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:724;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点编辑";s:15:"menu_short_name";s:15:"自提点编辑";s:8:"menu_key";s:31:"shop_config_edit_delivery_store";s:10:"parent_key";s:35:"shop_config_add_edit_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/store/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:370;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:725;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"维权详情";s:15:"menu_short_name";s:12:"维权详情";s:8:"menu_key";s:24:"shop_order_refund_detail";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:24:"shop/order/refund/detail";s:9:"view_path";s:19:"order/refund_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:371;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:726;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"电子面单设置";s:15:"menu_short_name";s:18:"电子面单设置";s:8:"menu_key";s:37:"shop_delivery_electronic_sheet_config";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:28:"shop/electronic_sheet/config";s:11:"router_path";s:37:"shop/delivery/electronic_sheet/config";s:9:"view_path";s:32:"delivery/electronic_sheet_config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:372;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:727;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加模板";s:15:"menu_short_name";s:24:"添加电子面单模板";s:8:"menu_key";s:34:"shop_delivery_electronic_sheet_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/electronic_sheet";s:11:"router_path";s:34:"shop/delivery/electronic_sheet_add";s:9:"view_path";s:30:"delivery/electronic_sheet_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:373;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:728;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑模板";s:15:"menu_short_name";s:24:"编辑电子面单模板";s:8:"menu_key";s:35:"shop_delivery_electronic_sheet_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/electronic_sheet/";s:11:"router_path";s:35:"shop/delivery/electronic_sheet_edit";s:9:"view_path";s:30:"delivery/electronic_sheet_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:374;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:735;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券删除";s:15:"menu_short_name";s:15:"优惠券删除";s:8:"menu_key";s:24:"shop_goods_coupon_delete";s:10:"parent_key";s:22:"shop_goods_coupon_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/goods/coupon/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:375;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:736;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"优惠券设置状态";s:15:"menu_short_name";s:21:"优惠券设置状态";s:8:"menu_key";s:28:"shop_goods_coupon_set_status";s:10:"parent_key";s:22:"shop_goods_coupon_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/goods/coupon/setstatus/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:376;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:737;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券添加";s:15:"menu_short_name";s:15:"优惠券添加";s:8:"menu_key";s:21:"shop_goods_coupon_add";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/coupon";s:11:"router_path";s:25:"shop/marketing/coupon/add";s:9:"view_path";s:20:"marketing/coupon/add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:377;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:738;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券编辑";s:15:"menu_short_name";s:15:"优惠券编辑";s:8:"menu_key";s:22:"shop_goods_coupon_edit";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/coupon/edit/";s:11:"router_path";s:26:"shop/marketing/coupon/edit";s:9:"view_path";s:21:"marketing/coupon/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:378;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:739;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"优惠券领取记录";s:15:"menu_short_name";s:21:"优惠券领取记录";s:8:"menu_key";s:28:"shop_goods_coupon_collection";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/goods/coupon/records";s:11:"router_path";s:32:"shop/marketing/coupon/collection";s:9:"view_path";s:27:"marketing/coupon/collection";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:379;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:741;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动关闭";s:15:"menu_short_name";s:12:"活动关闭";s:8:"menu_key";s:24:"shop_goods_manjian_close";s:10:"parent_key";s:18:"shop_goods_manjian";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/manjian/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:380;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:742;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动删除";s:15:"menu_short_name";s:12:"活动删除";s:8:"menu_key";s:25:"shop_goods_manjian_delete";s:10:"parent_key";s:18:"shop_goods_manjian";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:381;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:743;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动详情";s:15:"menu_short_name";s:12:"活动详情";s:8:"menu_key";s:25:"shop_goods_manjian_detail";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:29:"shop/marketing/manjian/detail";s:9:"view_path";s:24:"marketing/manjian/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:382;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:744;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"编辑满减送活动";s:15:"menu_short_name";s:21:"编辑满减送活动";s:8:"menu_key";s:23:"shop_goods_manjian_edit";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:27:"shop/marketing/manjian/edit";s:9:"view_path";s:22:"marketing/manjian/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:383;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:745;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"添加满减送活动";s:15:"menu_short_name";s:21:"添加满减送活动";s:8:"menu_key";s:22:"shop_goods_manjian_add";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"shop/manjian";s:11:"router_path";s:26:"shop/marketing/manjian/add";s:9:"view_path";s:22:"marketing/manjian/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:384;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:748;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动关闭";s:15:"menu_short_name";s:12:"活动关闭";s:8:"menu_key";s:25:"shop_goods_discount_close";s:10:"parent_key";s:24:"shop_goods_discount_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:38:"shop/active/discount/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:385;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:749;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动删除";s:15:"menu_short_name";s:12:"活动删除";s:8:"menu_key";s:26:"shop_goods_discount_delete";s:10:"parent_key";s:24:"shop_goods_discount_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:386;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:751;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"活动设置编辑";s:15:"menu_short_name";s:18:"活动设置编辑";s:8:"menu_key";s:30:"shop_goods_discount_config_set";s:10:"parent_key";s:26:"shop_goods_discount_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/active/discount/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:387;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:752;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动详情";s:15:"menu_short_name";s:12:"活动详情";s:8:"menu_key";s:26:"shop_goods_discount_detail";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:30:"shop/marketing/discount/detail";s:9:"view_path";s:25:"marketing/discount/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:388;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:753;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑限时折扣";s:15:"menu_short_name";s:18:"编辑限时折扣";s:8:"menu_key";s:24:"shop_goods_discount_edit";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:28:"shop/marketing/discount/edit";s:9:"view_path";s:23:"marketing/discount/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:389;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:754;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加限时折扣";s:15:"menu_short_name";s:18:"添加限时折扣";s:8:"menu_key";s:23:"shop_goods_discount_add";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/active/discount";s:11:"router_path";s:27:"shop/marketing/discount/add";s:9:"view_path";s:22:"marketing/discount/add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:390;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:757;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改上下架状态";s:15:"menu_short_name";s:21:"修改上下架状态";s:8:"menu_key";s:28:"shop_point_goods_status_edit";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/exchange/status/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:391;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:758;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除积分商品";s:15:"menu_short_name";s:18:"删除积分商品";s:8:"menu_key";s:23:"shop_point_goods_delete";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/active/exchange/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:392;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:759;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"修改排序号";s:15:"menu_short_name";s:15:"修改排序号";s:8:"menu_key";s:26:"shop_point_goods_sort_edit";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/active/exchange/sort/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:393;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:761;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加商品";s:15:"menu_short_name";s:12:"添加商品";s:8:"menu_key";s:20:"shop_point_goods_add";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/active/exchange";s:11:"router_path";s:33:"shop/marketing/exchange/goods_add";s:9:"view_path";s:28:"marketing/exchange/goods_add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:394;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:762;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑商品";s:15:"menu_short_name";s:12:"编辑商品";s:8:"menu_key";s:21:"shop_point_goods_edit";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/active/exchange/";s:11:"router_path";s:34:"shop/marketing/exchange/goods_edit";s:9:"view_path";s:29:"marketing/exchange/goods_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:395;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:769;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除榜单";s:15:"menu_short_name";s:12:"删除榜单";s:8:"menu_key";s:22:"shop_goods_rank_delete";s:10:"parent_key";s:20:"shop_goods_rank_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"shop/good/rank";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:396;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:770;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"榜单排序号修改";s:15:"menu_short_name";s:21:"榜单排序号修改";s:8:"menu_key";s:25:"shop_goods_rank_sort_edit";s:10:"parent_key";s:20:"shop_goods_rank_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/good/rank/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:397;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:771;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单添加";s:15:"menu_short_name";s:12:"榜单添加";s:8:"menu_key";s:19:"shop_goods_rank_add";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"shop/good/rank";s:11:"router_path";s:30:"shop/marketing/goods_rank/edit";s:9:"view_path";s:25:"marketing/goods_rank/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:398;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:772;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单编辑";s:15:"menu_short_name";s:12:"榜单编辑";s:8:"menu_key";s:20:"shop_goods_rank_edit";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/good/rank/";s:11:"router_path";s:30:"shop/marketing/goods_rank/edit";s:9:"view_path";s:25:"marketing/goods_rank/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:399;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:970;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"作业管理";s:15:"menu_short_name";s:12:"作业管理";s:8:"menu_key";s:45:"zhjw_zhjw_assignments_assignments_assignments";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"assignments";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-06 15:05:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:400;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:980;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"排班管理";s:15:"menu_short_name";s:12:"排班管理";s:8:"menu_key";s:39:"zhjw_zhjw_schedules_schedules_schedules";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"schedules";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-06 15:10:47";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:401;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1057;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"班级管理";s:15:"menu_short_name";s:12:"班级管理";s:8:"menu_key";s:28:"zhjw_classes_classes_classes";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"classes";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-19 10:32:31";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:402;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1062;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"意见反馈";s:15:"menu_short_name";s:12:"意见反馈";s:8:"menu_key";s:31:"zhjw_feedback_feedback_feedback";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"feedback";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-19 14:10:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:403;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1087;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"企业信息";s:15:"menu_short_name";s:12:"企业信息";s:8:"menu_key";s:73:"zhjw_enterprise_information_enterprise_information_enterprise_information";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:22:"enterprise_information";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-02 10:37:55";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:404;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1112;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学籍维护";s:15:"menu_short_name";s:12:"学籍维护";s:8:"menu_key";s:34:"zhjw_zhjw_roll_zhjw_roll_zhjw_roll";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"zhjw_roll";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 12:45:32";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:405;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1142;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员体测";s:15:"menu_short_name";s:12:"学员体测";s:8:"menu_key";s:67:"zhjw_zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"zhjw_students_survey";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:41:51";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:406;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1151;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"市场人员管理";s:15:"menu_short_name";s:18:"市场人员管理";s:8:"menu_key";s:5:"empty";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"empty";s:9:"view_path";s:5:"empty";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:23:16";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:407;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1152;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩管理";s:15:"menu_short_name";s:12:"业绩管理";s:8:"menu_key";s:4:"yjgl";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"empty";s:9:"view_path";s:5:"empty";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:24:17";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:408;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1153;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩配置";s:15:"menu_short_name";s:12:"业绩配置";s:8:"menu_key";s:4:"yjpz";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-bianjiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjpz";s:9:"view_path";s:4:"yjpz";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:25:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:409;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1154;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩分配";s:15:"menu_short_name";s:12:"业绩分配";s:8:"menu_key";s:4:"yjfp";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:36:"nc-iconfont nc-icon-sousuo-duanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjfp";s:9:"view_path";s:4:"yjfp";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:25:48";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:410;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1155;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩提成";s:15:"menu_short_name";s:12:"业绩提成";s:8:"menu_key";s:4:"yjtc";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjtc";s:9:"view_path";s:4:"yjtc";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:26:39";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:411;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1156;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:4:"sjtj";s:10:"parent_key";s:4:"sjtj";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-shouyeV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"sjtj";s:9:"view_path";s:4:"sjtj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:27:11";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:412;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1157;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"scsjtj";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-wendangV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"scsjtj";s:9:"view_path";s:6:"scsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:29:24";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:413;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1159;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"销售业绩";s:15:"menu_short_name";s:12:"销售业绩";s:8:"menu_key";s:4:"xsyj";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xsyj";s:9:"view_path";s:4:"xsyj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:32:53";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}} \ No newline at end of file diff --git a/niucloud/runtime/cache/27/f116a3d176a9d04d3825de43a5139a.php b/niucloud/runtime/cache/27/f116a3d176a9d04d3825de43a5139a.php deleted file mode 100644 index 8b321a2a..00000000 --- a/niucloud/runtime/cache/27/f116a3d176a9d04d3825de43a5139a.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"t1y1fkfbpiwp90z2";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:220;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/2c/e25dcb326df717900650d384ad7cf0.php b/niucloud/runtime/cache/2c/e25dcb326df717900650d384ad7cf0.php deleted file mode 100644 index f146061e..00000000 --- a/niucloud/runtime/cache/2c/e25dcb326df717900650d384ad7cf0.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:4:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/8d/4b55ce338f9b3a100a33ac8e8243e8.php";i:1;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/20/336a007c8134208722cf4e14270f07.php";i:2;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/32/0a87fb2f5a7e9725055a2c99bd1e51.php";i:3;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/5a/b59a6b9098844b87383115074eeae6.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/32/0a87fb2f5a7e9725055a2c99bd1e51.php b/niucloud/runtime/cache/32/0a87fb2f5a7e9725055a2c99bd1e51.php deleted file mode 100644 index ff7b18d4..00000000 --- a/niucloud/runtime/cache/32/0a87fb2f5a7e9725055a2c99bd1e51.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:5:{s:3:"get";a:78:{i:0;s:20:"member/account/point";i:1;s:11:"addon/local";i:2;s:24:"member/config/point_rule";i:3;s:13:"member/member";i:4;s:17:"member/level/";i:5;s:15:"finance/account";i:6;s:17:"channel/pc/config";i:7;s:4:"user";i:8;s:18:"sys/config/website";i:9;s:17:"pay/channel/lists";i:10;s:19:"notice/notice/";i:11;s:28:"notice/notice/sms/";i:12;s:19:"notice/sms/log/";i:13;s:13:"sys/agreement";i:14;s:19:"sys/agreement/";i:15;s:26:"sys/storage/";i:16;s:19:"generator/generator";i:17;s:8:"sys/role";i:18;s:14:"sys/config/map";i:19;s:7:"diy/diy";i:20;s:10:"pay/detail";i:21;s:7:"sys/log";i:22;s:11:"sys/storage";i:23;s:10:"sys/export";i:24;s:7:"diy/diy";i:25;s:15:"member/cash_out";i:26;s:10:"diy/bottom";i:27;s:10:"pay/refund";i:28;s:16:"printer/template";i:29;s:14:"sys/attachment";i:30;s:22:"pay/refund/";i:31;s:6:"poster";i:32;s:18:"member/member/";i:33;s:20:"sys/config/copyright";i:34;s:12:"pay/transfer";i:35;s:14:"dict/post/post";i:36;s:12:"member/label";i:37;s:12:"member/level";i:38;s:20:"member/config/member";i:39;s:12:"weapp/access";i:40;s:19:"member/config/login";i:41;s:22:"member/account/balance";i:42;s:13:"aliapp/access";i:43;s:25:"member/account/commission";i:44;s:22:"member/config/cash_out";i:45;s:12:"member/level";i:46;s:10:"addon/list";i:47;s:25:"member/config/growth_rule";i:48;s:21:"member/account/growth";i:49;s:15:"verify/verifier";i:50;s:20:"verify/verify/record";i:51;s:27:"verify/verify/";i:52;s:8:"sys/menu";i:53;s:18:"member/sign/config";i:54;s:11:"member/sign";i:55;s:7:"printer";i:56;s:16:"sys/config/login";i:57;s:26:"sys/config/developer_token";i:58;s:17:"notice/notice/sms";i:59;s:14:"notice/sms/log";i:60;s:13:"notice/notice";i:61;s:17:"notice/notice/log";i:62;s:10:"user/";i:63;s:16:"diy_form/records";i:64;s:20:"member/member/export";i:65;s:13:"wechat/course";i:66;s:13:"wechat/config";i:67;s:26:"wechat/reply/keywords/";i:68;s:11:"wechat/menu";i:69;s:15:"wechat/template";i:70;s:12:"weapp/course";i:71;s:12:"weapp/config";i:72;s:14:"weapp/template";i:73;s:10:"weapp/code";i:74;s:13:"aliapp/config";i:75;s:13:"aliapp/course";i:76;s:8:"diy_form";i:77;s:19:"sys/menu/";}s:4:"post";a:46:{i:0;s:15:"diy/bottom/edit";i:1;s:23:"sys/attachment/category";i:2;s:25:"member/config/growth_rule";i:3;s:24:"member/config/point_rule";i:4;s:24:"pay/refund/transfer/";i:5;s:15:"verify/verifier";i:6;s:13:"weapp/version";i:7;s:4:"user";i:8;s:20:"member/config/member";i:9;s:19:"member/config/login";i:10;s:32:"pay/channel/set//";i:11;s:24:"notice/notice/editstatus";i:12;s:18:"notice/notice/edit";i:13;s:28:"notice/notice/sms/";i:14;s:21:"addon/install/";i:15;s:23:"addon/uninstall/";i:16;s:26:"addon/cloudinstall/";i:17;s:22:"addon/download/";i:18;s:14:"niucloud/build";i:19;s:15:"upgrade/";i:20;s:31:"addon/addon_develop/build/";i:21;s:19:"generator/generator";i:22;s:18:"generator/download";i:23;s:25:"addon/addon_develop/";i:24;s:7:"upgrade";i:25;s:17:"niucloud/authinfo";i:26;s:26:"sys/config/developer_token";i:27;s:12:"pay/transfer";i:28;s:22:"member/config/cash_out";i:29;s:4:"dict";i:30;s:12:"sys/schedule";i:31;s:7:"web/nav";i:32;s:7:"web/adv";i:33;s:17:"web/friendly_link";i:34;s:8:"sys/role";i:35;s:8:"sys/menu";i:36;s:7:"diy/diy";i:37;s:10:"diy/bottom";i:38;s:13:"member/member";i:39;s:20:"member/account/point";i:40;s:22:"member/account/balance";i:41;s:12:"member/label";i:42;s:12:"member/level";i:43;s:26:"wechat/reply/keywords/";i:44;s:7:"printer";i:45;s:16:"printer/template";}s:3:"put";a:47:{i:0;s:7:"diy/use";i:1;s:13:"diy/diy/share";i:2;s:24:"sys/attachment/batchmove";i:3;s:28:"sys/attachment/category/";i:4;s:35:"member/cash_out/audit//";i:5;s:29:"member/cash_out/transfer/";i:6;s:18:"member/sign/config";i:7;s:17:"channel/pc/config";i:8;s:17:"channel/h5/config";i:9;s:13:"wechat/config";i:10;s:20:"wechat/reply/default";i:11;s:22:"wechat/reply/subscribe";i:12;s:11:"wechat/menu";i:13;s:20:"wechat/template/sync";i:14;s:12:"weapp/config";i:15;s:19:"weapp/template/sync";i:16;s:13:"aliapp/config";i:17;s:10:"user/";i:18;s:18:"user//";i:19;s:15:"user/lock/";i:20;s:17:"user/unlock/";i:21;s:18:"sys/config/website";i:22;s:20:"sys/config/copyright";i:23;s:16:"sys/config/login";i:24;s:19:"sys/agreement/";i:25;s:14:"sys/config/map";i:26;s:26:"sys/storage/";i:27;s:14:"diy_form/share";i:28;s:24:"generator/generator/";i:29;s:25:"addon/addon_develop/";i:30;s:17:"channel/h5/config";i:31;s:9:"dict/";i:32;s:17:"sys/schedule/";i:33;s:27:"schedule/modify/status/";i:34;s:12:"web/nav/";i:35;s:12:"web/adv/";i:36;s:22:"web/friendly_link/";i:37;s:18:"sys/role/";i:38;s:19:"sys/menu/";i:39;s:11:"poster/";i:40;s:33:"member/modify//";i:41;s:17:"member/label/";i:42;s:17:"member/level/";i:43;s:26:"wechat/reply/keywords/";i:44;s:12:"printer/";i:45;s:21:"printer/template/";i:46;s:12:"diy/diy/";}s:6:"delete";a:19:{i:0;s:18:"sys/attachment/del";i:1;s:23:"sys/attachment/category";i:2;s:28:"sys/attachment/category/";i:3;s:20:"verify/verifier/";i:4;s:12:"printer/";i:5;s:21:"printer/template/";i:6;s:15:"sys/export/";i:7;s:25:"addon/addon_develop/";i:8;s:24:"generator/generator/";i:9;s:9:"dict/";i:10;s:12:"web/nav/";i:11;s:12:"web/adv/";i:12;s:22:"web/friendly_link/";i:13;s:18:"sys/role/";i:14;s:8:"sys/menu";i:15;s:17:"sys/schedule/";i:16;s:17:"member/label/";i:17;s:17:"member/level/";i:18;s:26:"wechat/reply/keywords/";}s:0:"";a:2:{i:0;s:17:"sys/schedule/list";i:1;s:21:"sys/schedule/log/list";}} \ No newline at end of file diff --git a/niucloud/runtime/cache/33/90cfdce4f303504facffc42620c48f.php b/niucloud/runtime/cache/33/90cfdce4f303504facffc42620c48f.php deleted file mode 100644 index 017d04c6..00000000 --- a/niucloud/runtime/cache/33/90cfdce4f303504facffc42620c48f.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/85/dff97d885b41077c47958d953c2dbd.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/3d/23e92f6d905dabf364fea237dcc9b2.php b/niucloud/runtime/cache/3d/23e92f6d905dabf364fea237dcc9b2.php deleted file mode 100644 index c24f7816..00000000 --- a/niucloud/runtime/cache/3d/23e92f6d905dabf364fea237dcc9b2.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;a:6:{s:5:"title";s:12:"商城系统";s:4:"icon";s:19:"addon/shop/icon.png";s:3:"key";s:4:"shop";s:4:"desc";s:63:"实物虚拟商品,订单,物流同城配送,门店自提";s:6:"status";i:1;s:5:"cover";s:20:"addon/shop/cover.png";}} \ No newline at end of file diff --git a/niucloud/runtime/cache/40/3496a7ac120690d24b4a730ec05668.php b/niucloud/runtime/cache/40/3496a7ac120690d24b4a730ec05668.php deleted file mode 100644 index 601bf3a1..00000000 --- a/niucloud/runtime/cache/40/3496a7ac120690d24b4a730ec05668.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"buxxhve44knbv39r";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:182;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/40/ebbf24a398106b094b98cd831f45c4.php b/niucloud/runtime/cache/40/ebbf24a398106b094b98cd831f45c4.php deleted file mode 100644 index 1a662c38..00000000 --- a/niucloud/runtime/cache/40/ebbf24a398106b094b98cd831f45c4.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"a9o0ru62yhy3ipvi";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:259;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/42/8bd417fe30fa585d10b64d171d33c4.php b/niucloud/runtime/cache/42/8bd417fe30fa585d10b64d171d33c4.php deleted file mode 100644 index f181bbf5..00000000 --- a/niucloud/runtime/cache/42/8bd417fe30fa585d10b64d171d33c4.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"7blh529w0qefmdt9";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:245;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/47/0f6e29f334d3244ee0749eb9b1a151.php b/niucloud/runtime/cache/47/0f6e29f334d3244ee0749eb9b1a151.php deleted file mode 100644 index 5ef3ff92..00000000 --- a/niucloud/runtime/cache/47/0f6e29f334d3244ee0749eb9b1a151.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:6:{s:2:"id";i:1;s:10:"config_key";s:15:"NIUCLOUD_CONFIG";s:5:"value";a:2:{s:9:"auth_code";s:23:"20250514564159522820096";s:11:"auth_secret";s:13:"68240e727a56a";}s:6:"status";i:1;s:11:"create_time";s:19:"2025-05-14 11:36:38";s:11:"update_time";s:19:"2025-05-14 11:36:38";} \ No newline at end of file diff --git a/niucloud/runtime/cache/48/cfdb2e8e63c8b4dd3a556fc334fcbb.php b/niucloud/runtime/cache/48/cfdb2e8e63c8b4dd3a556fc334fcbb.php deleted file mode 100644 index 0d505472..00000000 --- a/niucloud/runtime/cache/48/cfdb2e8e63c8b4dd3a556fc334fcbb.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"570l4om645vy3ir5";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:218;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/4a/03ebb008135b76975cea0f239ca143.php b/niucloud/runtime/cache/4a/03ebb008135b76975cea0f239ca143.php deleted file mode 100644 index d927a7c9..00000000 --- a/niucloud/runtime/cache/4a/03ebb008135b76975cea0f239ca143.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"uqswflt3b4v2d6fz";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:257;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/56/184c66dcedb1c989ec4cf50eb03483.php b/niucloud/runtime/cache/56/184c66dcedb1c989ec4cf50eb03483.php deleted file mode 100644 index 47112034..00000000 --- a/niucloud/runtime/cache/56/184c66dcedb1c989ec4cf50eb03483.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"na3bmmvql6hfn5mu";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:260;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/58/745cacd434435731821012c2ecfd90.php b/niucloud/runtime/cache/58/745cacd434435731821012c2ecfd90.php deleted file mode 100644 index 58110812..00000000 --- a/niucloud/runtime/cache/58/745cacd434435731821012c2ecfd90.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:0:{} \ No newline at end of file diff --git a/niucloud/runtime/cache/5a/b59a6b9098844b87383115074eeae6.php b/niucloud/runtime/cache/5a/b59a6b9098844b87383115074eeae6.php deleted file mode 100644 index bf51e026..00000000 --- a/niucloud/runtime/cache/5a/b59a6b9098844b87383115074eeae6.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:447:{i:0;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:447;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分明细";s:15:"menu_short_name";s:12:"积分明细";s:8:"menu_key";s:17:"member_point_list";s:10:"parent_key";s:12:"member_point";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconjifen-xianxing";s:7:"api_url";s:20:"member/account/point";s:11:"router_path";s:12:"member/point";s:9:"view_path";s:12:"member/point";s:7:"methods";s:3:"get";s:4:"sort";i:120;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:1;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:580;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件管理";s:15:"menu_short_name";s:6:"应用";s:8:"menu_key";s:9:"app_store";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:19:"element ShoppingBag";s:7:"api_url";s:11:"addon/local";s:11:"router_path";s:20:"app_manage/app_store";s:9:"view_path";s:11:"index/store";s:7:"methods";s:3:"get";s:4:"sort";i:120;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:2;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:448;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分规则";s:15:"menu_short_name";s:12:"积分规则";s:8:"menu_key";s:10:"point_rule";s:10:"parent_key";s:12:"member_point";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:24:"member/config/point_rule";s:11:"router_path";s:18:"setting/point_rule";s:9:"view_path";s:18:"setting/point_rule";s:7:"methods";s:3:"get";s:4:"sort";i:110;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:3;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:587;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件开发";s:15:"menu_short_name";s:12:"插件开发";s:8:"menu_key";s:13:"addon_develop";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconchajiankaifa";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"tools/addon";s:9:"view_path";s:17:"tools/addon/index";s:7:"methods";s:0:"";s:4:"sort";i:110;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:4;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:620;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商城系统";s:15:"menu_short_name";s:6:"商城";s:8:"menu_key";s:4:"shop";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:28:"iconfont iconshangchengshequ";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:110;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:5;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1147;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"市场模块";s:15:"menu_short_name";s:6:"市场";s:8:"menu_key";s:13:"shichangmodel";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:40:"nc-iconfont nc-icon-yingyongzhongxinV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:101;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 10:44:57";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:6;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:389;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:15:"diy_tabbar_edit";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"diy/bottom/edit";s:11:"router_path";s:15:"diy/tabbar_edit";s:9:"view_path";s:15:"diy/tabbar_edit";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:7;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:390;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"启动页";s:15:"menu_short_name";s:9:"启动页";s:8:"menu_key";s:23:"diy_page_decorate_index";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element House";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"diy/index";s:9:"view_path";s:9:"diy/index";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:8;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:391;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"设置使用页";s:15:"menu_short_name";s:15:"设置使用页";s:8:"menu_key";s:11:"set_siy_use";s:10:"parent_key";s:23:"diy_page_decorate_index";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"diy/use";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:9;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:395;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"分享设置";s:15:"menu_short_name";s:12:"分享设置";s:8:"menu_key";s:14:"save_diy_share";s:10:"parent_key";s:13:"diy_page_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"diy/diy/share";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:10;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:400;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除素材";s:15:"menu_short_name";s:12:"删除素材";s:8:"menu_key";s:17:"delete_attachment";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/attachment/del";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:11;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:401;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"移动素材";s:15:"menu_short_name";s:12:"移动素材";s:8:"menu_key";s:15:"move_attachment";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"sys/attachment/batchmove";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:12;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:402;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加分组";s:15:"menu_short_name";s:12:"删除素材";s:8:"menu_key";s:23:"add_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"sys/attachment/category";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:13;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:403;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加分组";s:15:"menu_short_name";s:12:"添加分组";s:8:"menu_key";s:23:"add_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"sys/attachment/category";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:14;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:404;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑分组";s:15:"menu_short_name";s:12:"编辑分组";s:8:"menu_key";s:24:"edit_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"sys/attachment/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:15;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:405;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑分组";s:15:"menu_short_name";s:12:"编辑分组";s:8:"menu_key";s:24:"edit_attachment_category";s:10:"parent_key";s:10:"attachment";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"sys/attachment/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:16;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:411;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"首页导航";s:15:"menu_short_name";s:12:"首页导航";s:8:"menu_key";s:11:"diy_web_nav";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:20:"iconfont-iconshouye1";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"web/nav";s:9:"view_path";s:7:"web/nav";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:17;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:425;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员列表";s:15:"menu_short_name";s:12:"会员列表";s:8:"menu_key";s:11:"member_list";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:13:"member/member";s:11:"router_path";s:13:"member/member";s:9:"view_path";s:13:"member/member";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:18;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:442;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"会员等级信息";s:15:"menu_short_name";s:18:"会员等级信息";s:8:"menu_key";s:17:"member_level_info";s:10:"parent_key";s:22:"member_level_edit_page";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:19;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:444;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"设置成长值规则";s:15:"menu_short_name";s:21:"设置成长值规则";s:8:"menu_key";s:15:"set_growth_rule";s:10:"parent_key";s:11:"growth_rule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"member/config/growth_rule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:20;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:449;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分规则";s:15:"menu_short_name";s:18:"设置积分规则";s:8:"menu_key";s:14:"set_point_rule";s:10:"parent_key";s:10:"point_rule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"member/config/point_rule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:21;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:456;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提现审核";s:15:"menu_short_name";s:12:"提现审核";s:8:"menu_key";s:14:"cash_out_audit";s:10:"parent_key";s:13:"cash_out_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:35:"member/cash_out/audit//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:22;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:457;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"转账";s:15:"menu_short_name";s:6:"转账";s:8:"menu_key";s:17:"cash_out_transfer";s:10:"parent_key";s:13:"cash_out_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:29:"member/cash_out/transfer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:23;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:459;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"转账";s:15:"menu_short_name";s:6:"转账";s:8:"menu_key";s:17:"cash_out_transfer";s:10:"parent_key";s:18:"member_refund_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"pay/refund/transfer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:24;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:464;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加核销员";s:15:"menu_short_name";s:15:"添加核销员";s:8:"menu_key";s:12:"add_verifier";s:10:"parent_key";s:13:"verifier_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"verify/verifier";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:25;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:465;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除核销员";s:15:"menu_short_name";s:15:"删除核销员";s:8:"menu_key";s:15:"delete_verifier";s:10:"parent_key";s:13:"verifier_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"verify/verifier/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:26;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:470;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:13:"save_sign_set";s:10:"parent_key";s:8:"sign_set";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"member/sign/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:27;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:475;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:5:"PC端";s:15:"menu_short_name";s:5:"PC端";s:8:"menu_key";s:9:"pc_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:20:"iconfont icondesktop";s:7:"api_url";s:17:"channel/pc/config";s:11:"router_path";s:17:"channel/pc/config";s:9:"view_path";s:17:"channel/pc/config";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:28;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:476;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:14:"save_pc_config";s:10:"parent_key";s:9:"pc_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"channel/pc/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:29;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:478;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:14:"save_h5_config";s:10:"parent_key";s:9:"h5_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"channel/h5/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:30;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:484;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_wechat_config";s:10:"parent_key";s:13:"wechat_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:31;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:486;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"默认回复设置";s:15:"menu_short_name";s:18:"默认回复设置";s:8:"menu_key";s:24:"wechat_default_reply_set";s:10:"parent_key";s:19:"wechat_reply_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"wechat/reply/default";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:32;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:487;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"关注回复设置";s:15:"menu_short_name";s:18:"关注回复设置";s:8:"menu_key";s:26:"wechat_subscribe_reply_set";s:10:"parent_key";s:19:"wechat_reply_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"wechat/reply/subscribe";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:33;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:493;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:16:"save_wechat_menu";s:10:"parent_key";s:11:"wechat_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:11:"wechat/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:34;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:495;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"同步";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:28:"sync_wechat_template_message";s:10:"parent_key";s:23:"wechat_template_message";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"wechat/template/sync";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:35;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:498;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"save_weapp_config";s:10:"parent_key";s:12:"weapp_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:36;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:500;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"同步";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:27:"sync_weapp_template_message";s:10:"parent_key";s:22:"weapp_template_message";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"weapp/template/sync";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:37;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:502;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"一键云端发布";s:15:"menu_short_name";s:18:"一键云端发布";s:8:"menu_key";s:14:"add_weapp_code";s:10:"parent_key";s:10:"weapp_code";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"weapp/version";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:38;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:504;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_aliapp_config";s:10:"parent_key";s:13:"aliapp_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:39;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:507;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"管理员";s:15:"menu_short_name";s:9:"管理员";s:8:"menu_key";s:9:"auth_list";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:12:"element Lock";s:7:"api_url";s:4:"user";s:11:"router_path";s:9:"auth/user";s:9:"view_path";s:9:"auth/user";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:40;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:509;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加管理员";s:15:"menu_short_name";s:15:"添加管理员";s:8:"menu_key";s:13:"add_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:4:"user";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:41;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:510;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑管理员";s:15:"menu_short_name";s:15:"编辑管理员";s:8:"menu_key";s:14:"edit_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"user/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:42;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:511;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改管理员属性";s:15:"menu_short_name";s:21:"修改管理员属性";s:8:"menu_key";s:20:"edit_site_user_field";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"user//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:43;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:512;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"锁定";s:15:"menu_short_name";s:6:"锁定";s:8:"menu_key";s:14:"lock_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"user/lock/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:44;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:513;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"解锁";s:15:"menu_short_name";s:12:"解锁用户";s:8:"menu_key";s:16:"unlock_site_user";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"user/unlock/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:45;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:520;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"网站设置";s:15:"menu_short_name";s:12:"网站设置";s:8:"menu_key";s:14:"setting_system";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:18:"element Basketball";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:46;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:521;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"基础设置";s:15:"menu_short_name";s:12:"基础设置";s:8:"menu_key";s:18:"setting_system_web";s:10:"parent_key";s:14:"setting_system";s:9:"menu_type";i:1;s:4:"icon";s:18:"element Basketball";s:7:"api_url";s:18:"sys/config/website";s:11:"router_path";s:14:"setting/system";s:9:"view_path";s:14:"setting/system";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:47;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:522;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"save_base_setting";s:10:"parent_key";s:18:"setting_system_web";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/config/website";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:48;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:524;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:22:"save_setting_copyright";s:10:"parent_key";s:17:"setting_copyright";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"sys/config/copyright";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:49;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:526;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:18:"save_setting_login";s:10:"parent_key";s:13:"setting_login";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:16:"sys/config/login";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:50;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:529;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:26:"save_setting_member_config";s:10:"parent_key";s:21:"setting_member_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/config/member";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:51;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:531;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:27:"save_setting_login_register";s:10:"parent_key";s:22:"setting_login_register";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"member/config/login";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:52;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:533;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"支付设置";s:15:"menu_short_name";s:12:"支付设置";s:8:"menu_key";s:19:"setting_pay_channel";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"pay/channel/lists";s:11:"router_path";s:19:"setting/pay/channel";s:9:"view_path";s:11:"setting/pay";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:53;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:534;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:23:"setting_pay_channel_set";s:10:"parent_key";s:19:"setting_pay_channel";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"pay/channel/set//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:54;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:541;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息详情";s:15:"menu_short_name";s:12:"消息详情";s:8:"menu_key";s:13:"notice_detail";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"notice/notice/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:55;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:542;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"消息启动关闭";s:15:"menu_short_name";s:18:"消息启动关闭";s:8:"menu_key";s:18:"notice_edit_status";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"notice/notice/editstatus";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:56;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:543;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息修改";s:15:"menu_short_name";s:12:"消息修改";s:8:"menu_key";s:11:"notice_edit";s:10:"parent_key";s:23:"setting_notice_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"notice/notice/edit";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:57;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:547;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取短信配置";s:15:"menu_short_name";s:18:"获取短信配置";s:8:"menu_key";s:14:"get_sms_config";s:10:"parent_key";s:11:"sms_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"notice/notice/sms/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:58;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:548;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"修改短信配置";s:15:"menu_short_name";s:18:"修改短信配置";s:8:"menu_key";s:14:"set_sms_config";s:10:"parent_key";s:11:"sms_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:28:"notice/notice/sms/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:59;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:550;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"发送记录详情";s:15:"menu_short_name";s:18:"发送记录详情";s:8:"menu_key";s:14:"sms_log_detail";s:10:"parent_key";s:18:"sms_notice_records";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"notice/sms/log/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:60;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:552;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除打印机";s:15:"menu_short_name";s:15:"删除打印机";s:8:"menu_key";s:14:"delete_printer";s:10:"parent_key";s:18:"printer_management";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"printer/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:61;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:556;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除打印模板";s:15:"menu_short_name";s:18:"删除打印模板";s:8:"menu_key";s:23:"delete_printer_template";s:10:"parent_key";s:27:"printer_template_management";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"printer/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:62;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:560;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"协议管理";s:15:"menu_short_name";s:12:"协议管理";s:8:"menu_key";s:16:"system_agreement";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Notebook";s:7:"api_url";s:13:"sys/agreement";s:11:"router_path";s:17:"setting/agreement";s:9:"view_path";s:17:"setting/agreement";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:63;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:561;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"协议编辑";s:15:"menu_short_name";s:12:"协议编辑";s:8:"menu_key";s:21:"system_agreement_edit";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:22:"setting/agreement/edit";s:9:"view_path";s:22:"setting/agreement_edit";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:64;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:562;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取协议信息";s:15:"menu_short_name";s:18:"获取协议信息";s:8:"menu_key";s:20:"get_system_agreement";s:10:"parent_key";s:21:"system_agreement_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/agreement/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:65;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:563;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"修改协议信息";s:15:"menu_short_name";s:18:"修改协议信息";s:8:"menu_key";s:21:"edit_system_agreement";s:10:"parent_key";s:21:"system_agreement_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/agreement/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:66;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:565;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:19:"save_layout_setting";s:10:"parent_key";s:11:"map_setting";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"sys/config/map";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:67;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:567;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"获取存储配置";s:15:"menu_short_name";s:18:"获取存储配置";s:8:"menu_key";s:21:"setting_storage_value";s:10:"parent_key";s:15:"setting_storage";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/storage/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:68;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:568;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"存储设置修改";s:15:"menu_short_name";s:18:"存储设置修改";s:8:"menu_key";s:20:"edit_setting_storage";s:10:"parent_key";s:15:"setting_storage";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/storage/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:69;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:570;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除报表";s:15:"menu_short_name";s:12:"删除报表";s:8:"menu_key";s:13:"delete_export";s:10:"parent_key";s:14:"setting_export";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"sys/export/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:70;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:578;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"分享设置";s:15:"menu_short_name";s:12:"分享设置";s:8:"menu_key";s:19:"save_diy_form_share";s:10:"parent_key";s:13:"diy_form_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"diy_form/share";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:71;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:581;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"安装插件";s:15:"menu_short_name";s:12:"安装插件";s:8:"menu_key";s:13:"install_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"addon/install/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:72;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:582;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件卸载";s:15:"menu_short_name";s:12:"插件卸载";s:8:"menu_key";s:15:"uninstall_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"addon/uninstall/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:73;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:583;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"插件云安装";s:15:"menu_short_name";s:15:"插件云安装";s:8:"menu_key";s:19:"cloud_install_addon";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"addon/cloudinstall/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:74;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:584;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件下载";s:15:"menu_short_name";s:12:"插件下载";s:8:"menu_key";s:14:"addon_download";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"addon/download/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:75;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:585;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"云编译";s:15:"menu_short_name";s:9:"云编译";s:8:"menu_key";s:11:"cloud_build";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"niucloud/build";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:76;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:586;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"插件升级";s:15:"menu_short_name";s:12:"插件升级";s:8:"menu_key";s:13:"addon_upgrade";s:10:"parent_key";s:9:"app_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"upgrade/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:77;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:588;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除插件";s:15:"menu_short_name";s:12:"删除插件";s:8:"menu_key";s:20:"delete_develop_addon";s:10:"parent_key";s:13:"addon_develop";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:78;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:589;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"打包插件";s:15:"menu_short_name";s:12:"打包插件";s:8:"menu_key";s:19:"build_develop_addon";s:10:"parent_key";s:13:"addon_develop";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:31:"addon/addon_develop/build/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:79;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:590;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"代码生成";s:15:"menu_short_name";s:12:"代码生成";s:8:"menu_key";s:4:"code";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondaimashengcheng";s:7:"api_url";s:19:"generator/generator";s:11:"router_path";s:10:"tools/code";s:9:"view_path";s:16:"tools/code/index";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:80;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:592;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加数据表";s:15:"menu_short_name";s:15:"添加数据表";s:8:"menu_key";s:13:"add_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"generator/generator";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:81;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:593;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑数据表";s:15:"menu_short_name";s:15:"编辑数据表";s:8:"menu_key";s:14:"edit_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"generator/generator/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:82;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:594;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"删除数据表";s:15:"menu_short_name";s:15:"删除数据表";s:8:"menu_key";s:16:"delete_generator";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"generator/generator/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:83;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:595;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"代码生成";s:15:"menu_short_name";s:12:"代码生成";s:8:"menu_key";s:18:"generator_download";s:10:"parent_key";s:9:"code_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"generator/download";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:84;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:597;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加插件";s:15:"menu_short_name";s:12:"添加插件";s:8:"menu_key";s:17:"add_develop_addon";s:10:"parent_key";s:10:"addon_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:85;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:598;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑插件";s:15:"menu_short_name";s:12:"编辑插件";s:8:"menu_key";s:18:"edit_develop_addon";s:10:"parent_key";s:10:"addon_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"addon/addon_develop/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:86;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:616;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统升级";s:15:"menu_short_name";s:12:"系统升级";s:8:"menu_key";s:14:"system_upgrade";s:10:"parent_key";s:8:"app_auth";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"upgrade";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:87;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:617;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"绑定授权信息";s:15:"menu_short_name";s:18:"绑定授权信息";s:8:"menu_key";s:13:"bind_app_auth";s:10:"parent_key";s:8:"app_auth";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"niucloud/authinfo";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:88;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:619;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"同步";s:8:"menu_key";s:20:"save_developer_token";s:10:"parent_key";s:15:"developer_token";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"sys/config/developer_token";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:89;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:621;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"概况";s:15:"menu_short_name";s:6:"概况";s:8:"menu_key";s:10:"shop_index";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:1;s:4:"icon";s:22:"iconfont icongaikuang1";s:7:"api_url";s:10:"shop/index";s:11:"router_path";s:10:"shop/index";s:9:"view_path";s:11:"index/index";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:90;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:669;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商城订单";s:15:"menu_short_name";s:12:"商城订单";s:8:"menu_key";s:15:"shop_order_list";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/order/list";s:11:"router_path";s:16:"shop/order/index";s:9:"view_path";s:10:"order/list";s:7:"methods";s:3:"get";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:91;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:825;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校区列表";s:15:"menu_short_name";s:12:"校区列表";s:8:"menu_key";s:31:"zhjw_campuses_campuses_campuses";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"campuses";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 17:41:14";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:92;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:850;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"文章管理";s:15:"menu_short_name";s:12:"文章管理";s:8:"menu_key";s:36:"zhjw_zhjw_articles_articles_articles";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"articles";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 19:31:59";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:93;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:875;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"员工角色管理";s:15:"menu_short_name";s:12:"角色管理";s:8:"menu_key";s:22:"zhjw_roles_roles_roles";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"roles";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-06 11:48:59";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:94;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1005;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单管理";s:15:"menu_short_name";s:12:"订单管理";s:8:"menu_key";s:30:"zhjw_zhjw_orders_orders_orders";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"orders";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 15:28:01";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:95;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1035;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课表管理";s:15:"menu_short_name";s:12:"课表管理";s:8:"menu_key";s:37:"zhjw_timetables_timetables_timetables";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:10:"timetables";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 16:41:27";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:96;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1040;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"销售模块";s:15:"menu_short_name";s:12:"销售模块";s:8:"menu_key";s:27:"zhjw_zhjw_sales_sales_sales";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"sales";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 18:31:18";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:97;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1045;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"跟进管理";s:15:"menu_short_name";s:12:"跟进管理";s:8:"menu_key";s:54:"zhjw_zhjw_follow_up_logs_follow_up_logs_follow_up_logs";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"follow_up_logs";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-14 19:18:09";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:98;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1050;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"跟进提醒管理";s:15:"menu_short_name";s:18:"跟进提醒管理";s:8:"menu_key";s:69:"zhjw_zhjw_follow_up_reminders_follow_up_reminders_follow_up_reminders";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:19:"follow_up_reminders";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-14 19:38:04";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:99;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1082;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"人员管理";s:15:"menu_short_name";s:12:"人员管理";s:8:"menu_key";s:22:"zhjw_staff_staff_staff";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"staff";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-20 16:06:31";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:100;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1158;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"销售人员管理";s:15:"menu_short_name";s:18:"销售人员管理";s:8:"menu_key";s:6:"xsrygl";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:1;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xsrygl";s:9:"view_path";s:6:"xsrygl";s:7:"methods";s:4:"post";s:4:"sort";i:100;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:31:38";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:101;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:392;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"个人中心";s:15:"menu_short_name";s:12:"个人中心";s:8:"menu_key";s:30:"diy_page_decorate_member_index";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:10:"diy/member";s:9:"view_path";s:10:"diy/member";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:102;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:415;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"广告位";s:15:"menu_short_name";s:9:"广告位";s:8:"menu_key";s:16:"web_adv_position";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont-icontupianguanggao1";s:7:"api_url";s:0:"";s:11:"router_path";s:16:"web/adv_position";s:9:"view_path";s:16:"web/adv_position";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:103;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:514;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"管理员角色";s:15:"menu_short_name";s:15:"管理员角色";s:8:"menu_key";s:9:"auth_role";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuiyuanliebiao";s:7:"api_url";s:8:"sys/role";s:11:"router_path";s:9:"auth/role";s:9:"view_path";s:9:"auth/role";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:104;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:564;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"地图秘钥";s:15:"menu_short_name";s:12:"地图秘钥";s:8:"menu_key";s:11:"map_setting";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:15:"element Message";s:7:"api_url";s:14:"sys/config/map";s:11:"router_path";s:11:"setting/map";s:9:"view_path";s:11:"setting/map";s:7:"methods";s:3:"get";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:105;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:591;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"数据表编辑";s:15:"menu_short_name";s:15:"数据表编辑";s:8:"menu_key";s:9:"code_edit";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/code/edit";s:9:"view_path";s:15:"tools/code/edit";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:106;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:820;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"场地管理";s:15:"menu_short_name";s:12:"场地管理";s:8:"menu_key";s:25:"zhjw_venues_venues_venues";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"venues";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-05 17:37:13";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:107;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1055;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教务管理";s:15:"menu_short_name";s:12:"教务管理";s:8:"menu_key";s:12:"jiaowuguanli";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:37:"nc-iconfont nc-icon-jifenduihuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 20:35:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:108;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1160;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员约课管理";s:15:"menu_short_name";s:18:"学员约课管理";s:8:"menu_key";s:6:"xyykgl";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:33:"nc-iconfont nc-icon-gouwucheV6xx2";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xyykgl";s:9:"view_path";s:6:"xyykgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:35:54";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:109;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1172;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"账户及资金管理";s:15:"menu_short_name";s:21:"账户及资金管理";s:8:"menu_key";s:4:"zjgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"zjgl";s:9:"view_path";s:4:"zjgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:55:35";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:110;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1178;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"工资管理";s:15:"menu_short_name";s:12:"工资管理";s:8:"menu_key";s:6:"rsgzgl";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"rsgzgl";s:9:"view_path";s:6:"rsgzgl";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:11:47";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:111;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1179;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课程教案";s:15:"menu_short_name";s:12:"课程教案";s:8:"menu_key";s:4:"kcja";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kcja";s:9:"view_path";s:4:"kcja";s:7:"methods";s:4:"post";s:4:"sort";i:99;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:02";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:112;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:394;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"微页面";s:15:"menu_short_name";s:9:"微页面";s:8:"menu_key";s:13:"diy_page_list";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondianpuzhuangxiu";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:8:"diy/list";s:9:"view_path";s:8:"diy/list";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:113;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:420;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"友情链接";s:15:"menu_short_name";s:12:"友情链接";s:8:"menu_key";s:21:"diy_web_friendly_link";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont-iconyouqinglianjie1";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"web/friendly_link";s:9:"view_path";s:17:"web/friendly_link";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:114;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:518;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"操作日志";s:15:"menu_short_name";s:12:"操作日志";s:8:"menu_key";s:8:"auth_log";s:10:"parent_key";s:4:"auth";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Document";s:7:"api_url";s:7:"sys/log";s:11:"router_path";s:16:"setting/auth/log";s:9:"view_path";s:8:"auth/log";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:115;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:566;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"存储设置";s:15:"menu_short_name";s:12:"存储设置";s:8:"menu_key";s:15:"setting_storage";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:11:"sys/storage";s:11:"router_path";s:15:"setting/storage";s:9:"view_path";s:15:"setting/storage";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:116;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:569;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据导出";s:15:"menu_short_name";s:12:"数据导出";s:8:"menu_key";s:14:"setting_export";s:10:"parent_key";s:12:"setting_tool";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:10:"sys/export";s:11:"router_path";s:14:"setting/export";s:9:"view_path";s:14:"setting/export";s:7:"methods";s:3:"get";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:117;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1010;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"合同管理";s:15:"menu_short_name";s:12:"合同管理";s:8:"menu_key";s:39:"zhjw_zhjw_contracts_contracts_contracts";s:10:"parent_key";s:4:"rsgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"contracts";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 15:30:15";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:118;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1067;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员档案";s:15:"menu_short_name";s:12:"学员档案";s:8:"menu_key";s:36:"zhjw_zhjw_students_students_students";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"students";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-20 15:54:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:119;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1167;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校区管理";s:15:"menu_short_name";s:12:"校区管理";s:8:"menu_key";s:4:"xqgl";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:41:12";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:120;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1168;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"校长管理";s:15:"menu_short_name";s:12:"校长管理";s:8:"menu_key";s:4:"xzgl";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:38:"nc-iconfont nc-icon-gerenzhongxinV6mm1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xzgl";s:9:"view_path";s:4:"xzgl";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:42:28";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:121;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1173;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"报销付款";s:15:"menu_short_name";s:4:"bxfk";s:8:"menu_key";s:4:"bxfk";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-youhuiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"bxfk";s:9:"view_path";s:4:"bxfk";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:56:04";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:122;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1180;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"教学资料库";s:15:"menu_short_name";s:15:"教学资料库";s:8:"menu_key";s:5:"jxzlk";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"jxzlk";s:9:"view_path";s:5:"jxzlk";s:7:"methods";s:4:"post";s:4:"sort";i:98;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:25";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:123;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:396;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面路径";s:15:"menu_short_name";s:12:"页面路径";s:8:"menu_key";s:14:"diy_page_route";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont icondianpuzhuangxiu";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:9:"diy/route";s:9:"view_path";s:9:"diy/route";s:7:"methods";s:3:"get";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:124;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:452;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"财务管理";s:15:"menu_short_name";s:6:"财务";s:8:"menu_key";s:7:"finance";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:11:"element Box";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:125;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1169;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"xqsjtj";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xqsjtj";s:9:"view_path";s:6:"xqsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:44:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:126;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1171;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员课程管理";s:15:"menu_short_name";s:18:"学员课程管理";s:8:"menu_key";s:6:"xykcgl";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-duanxinV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"xykcgl";s:9:"view_path";s:6:"xykcgl";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:50:24";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:127;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1181;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"未来周内容训练";s:15:"menu_short_name";s:21:"未来周内容训练";s:8:"menu_key";s:7:"wlznrxl";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"wlznrxl";s:9:"view_path";s:7:"wlznrxl";s:7:"methods";s:4:"post";s:4:"sort";i:97;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:14:52";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:128;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:397;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"底部导航";s:15:"menu_short_name";s:12:"底部导航";s:8:"menu_key";s:10:"diy_bottom";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont icondibudaohang";s:7:"api_url";s:10:"diy/bottom";s:11:"router_path";s:10:"diy/tabbar";s:9:"view_path";s:10:"diy/tabbar";s:7:"methods";s:3:"get";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:129;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:555;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"小票打印模板";s:15:"menu_short_name";s:18:"小票打印模板";s:8:"menu_key";s:27:"printer_template_management";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:16:"printer/template";s:11:"router_path";s:21:"printer/template/list";s:9:"view_path";s:21:"printer/template_list";s:7:"methods";s:3:"get";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:130;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1161;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员标签";s:15:"menu_short_name";s:12:"学员标签";s:8:"menu_key";s:4:"xybq";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:30:"nc-iconfont nc-icon-bianjiV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xybq";s:9:"view_path";s:4:"xybq";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:37:36";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:131;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1170;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教师管理";s:15:"menu_short_name";s:12:"教师管理";s:8:"menu_key";s:4:"jsgl";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"jsgl";s:9:"view_path";s:4:"jsgl";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:45:25";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:132;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1174;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课消管理";s:15:"menu_short_name";s:12:"课消管理";s:8:"menu_key";s:4:"xklb";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xklb";s:9:"view_path";s:4:"xklb";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:56:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:133;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1177;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"人事管理";s:15:"menu_short_name";s:12:"人事管理";s:8:"menu_key";s:4:"rsgl";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:10:12";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:134;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1182;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"专业技能";s:15:"menu_short_name";s:12:"专业技能";s:8:"menu_key";s:4:"zyjn";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"zyjn";s:9:"view_path";s:4:"zyjn";s:7:"methods";s:4:"post";s:4:"sort";i:96;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:15:15";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:135;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:399;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"素材管理";s:15:"menu_short_name";s:12:"素材管理";s:8:"menu_key";s:10:"attachment";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:14:"sys/attachment";s:11:"router_path";s:14:"diy/attachment";s:9:"view_path";s:16:"tools/attachment";s:7:"methods";s:3:"get";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:136;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:965;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课程管理";s:15:"menu_short_name";s:18:"学员课程管理";s:8:"menu_key";s:28:"zhjw_courses_courses_courses";s:10:"parent_key";s:4:"xqgl";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"courses";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-06 14:24:03";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:137;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1056;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"教研管理";s:15:"menu_short_name";s:12:"教研管理";s:8:"menu_key";s:13:"yunyingguanli";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:31:"nc-iconfont nc-icon-liebiaoV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-03-14 20:37:53";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:138;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1162;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课消追踪";s:15:"menu_short_name";s:12:"课消追踪";s:8:"menu_key";s:4:"kxzz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:36:"nc-iconfont nc-icon-sousuo-duanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kxzz";s:9:"view_path";s:4:"kxzz";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:38:07";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:139;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1175;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"工资管理";s:15:"menu_short_name";s:12:"工资管理";s:8:"menu_key";s:4:"gzgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"gzgl";s:9:"view_path";s:4:"gzgl";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:08:08";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:140;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1183;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"睿莱体测";s:15:"menu_short_name";s:12:"睿莱体测";s:8:"menu_key";s:4:"rltc";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"rltc";s:9:"view_path";s:4:"rltc";s:7:"methods";s:4:"post";s:4:"sort";i:95;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:15:39";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:141;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:406;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"海报管理";s:15:"menu_short_name";s:12:"海报管理";s:8:"menu_key";s:17:"poster_management";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:6:"poster";s:11:"router_path";s:11:"poster/list";s:9:"view_path";s:11:"poster/list";s:7:"methods";s:3:"get";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:142;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1163;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提醒配置";s:15:"menu_short_name";s:12:"提醒配置";s:8:"menu_key";s:4:"txpz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-lingdangV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"txpz";s:9:"view_path";s:4:"txpz";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:38:46";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:143;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1176;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"课包管理";s:15:"menu_short_name";s:12:"课包管理";s:8:"menu_key";s:4:"kbgl";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:38:"nc-iconfont nc-icon-huiyuandengjiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"kbgl";s:9:"view_path";s:4:"kbgl";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:08:40";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:144;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1184;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"如何让孩子喜欢";s:15:"menu_short_name";s:21:"如何让孩子喜欢";s:8:"menu_key";s:7:"rhrhzxh";s:10:"parent_key";s:13:"yunyingguanli";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"rhrhzxh";s:9:"view_path";s:7:"rhrhzxh";s:7:"methods";s:4:"post";s:4:"sort";i:94;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 17:16:08";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:145;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:408;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"主题风格";s:15:"menu_short_name";s:12:"主题风格";s:8:"menu_key";s:15:"diy_theme_style";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"diy/theme_style";s:9:"view_path";s:15:"diy/theme_style";s:7:"methods";s:3:"get";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:146;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1164;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"服务配置";s:15:"menu_short_name";s:12:"服务配置";s:8:"menu_key";s:4:"fwpz";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-shezhi-1V6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"fwpz";s:9:"view_path";s:4:"fwpz";s:7:"methods";s:4:"post";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:39:18";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:147;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1165;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"服务评价与反馈";s:15:"menu_short_name";s:21:"服务评价与反馈";s:8:"menu_key";s:4:"fwpj";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-dianzanV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"fwpj";s:9:"view_path";s:4:"fwpj";s:7:"methods";s:4:"post";s:4:"sort";i:93;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:39:46";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:148;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:410;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"电脑端";s:15:"menu_short_name";s:9:"电脑端";s:8:"menu_key";s:7:"diy_web";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:0;s:4:"icon";s:20:"iconfont icondesktop";s:7:"api_url";s:0:"";s:11:"router_path";s:3:"web";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:92;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:149;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1166;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"jwsjtj";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:1;s:4:"icon";s:30:"nc-iconfont nc-icon-chakanV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"jwsjtj";s:9:"view_path";s:6:"jwsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:92;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:40:20";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:150;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:388;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"装修管理";s:15:"menu_short_name";s:6:"装修";s:8:"menu_key";s:3:"diy";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:13:"element Brush";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:151;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:429;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员详情";s:15:"menu_short_name";s:12:"会员详情";s:8:"menu_key";s:11:"member_info";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:18:"member/member/";s:11:"router_path";s:13:"member/detail";s:9:"view_path";s:20:"member/member_detail";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:152;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:477;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:5:"H5端";s:15:"menu_short_name";s:5:"H5端";s:8:"menu_key";s:9:"h5_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:16:"iconfont iconh5e";s:7:"api_url";s:17:"channel/h5/config";s:11:"router_path";s:17:"channel/h5/config";s:9:"view_path";s:17:"channel/h5/config";s:7:"methods";s:3:"put";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:153;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:523;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"版权设置";s:15:"menu_short_name";s:12:"版权设置";s:8:"menu_key";s:17:"setting_copyright";s:10:"parent_key";s:14:"setting_system";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont iconbanquan1";s:7:"api_url";s:20:"sys/config/copyright";s:11:"router_path";s:17:"setting/copyright";s:9:"view_path";s:17:"setting/copyright";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:154;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:535;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"打款设置";s:15:"menu_short_name";s:12:"打款设置";s:8:"menu_key";s:20:"setting_pay_transfer";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"pay/transfer";s:11:"router_path";s:20:"setting/pay/transfer";s:9:"view_path";s:16:"setting/transfer";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:155;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:536;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:24:"setting_pay_transfer_set";s:10:"parent_key";s:20:"setting_pay_transfer";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"pay/transfer";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:156;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:538;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:19:"cash_out_config_set";s:10:"parent_key";s:15:"cash_out_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"member/config/cash_out";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:157;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:596;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:19:"插件添加/编辑";s:15:"menu_short_name";s:19:"插件添加/编辑";s:8:"menu_key";s:10:"addon_edit";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:16:"tools/addon_edit";s:9:"view_path";s:16:"tools/addon/edit";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:158;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:599;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据字典";s:15:"menu_short_name";s:12:"数据字典";s:8:"menu_key";s:23:"sys_dict_dict_dict_list";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconwenzhangguanli1";s:7:"api_url";s:14:"dict/post/post";s:11:"router_path";s:10:"tools/list";s:9:"view_path";s:9:"dict/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:159;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:622;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品管理";s:15:"menu_short_name";s:6:"商品";s:8:"menu_key";s:10:"shop_goods";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:0;s:4:"icon";s:28:"iconfont iconshangpinguanli1";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:160;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:623;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品列表";s:15:"menu_short_name";s:12:"商品列表";s:8:"menu_key";s:15:"shop_goods_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont iconshangpinliebiao1";s:7:"api_url";s:10:"shop/goods";s:11:"router_path";s:15:"shop/goods/list";s:9:"view_path";s:10:"goods/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:161;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:730;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据概况";s:15:"menu_short_name";s:12:"数据概况";s:8:"menu_key";s:15:"shop_stat_index";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/stat/index";s:11:"router_path";s:15:"shop/stat/index";s:9:"view_path";s:10:"stat/index";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:162;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:734;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"优惠券";s:15:"menu_short_name";s:9:"优惠券";s:8:"menu_key";s:22:"shop_goods_coupon_list";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconyouhuiquan";s:7:"api_url";s:0:"";s:11:"router_path";s:26:"shop/marketing/coupon/list";s:9:"view_path";s:21:"marketing/coupon/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:163;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:747;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动列表";s:15:"menu_short_name";s:12:"活动列表";s:8:"menu_key";s:24:"shop_goods_discount_list";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:20:"shop/active/discount";s:11:"router_path";s:28:"shop/marketing/discount/list";s:9:"view_path";s:23:"marketing/discount/list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:164;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:756;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分商品";s:15:"menu_short_name";s:12:"积分商品";s:8:"menu_key";s:21:"shop_point_goods_list";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconpointgoods";s:7:"api_url";s:20:"shop/active/exchange";s:11:"router_path";s:34:"shop/marketing/exchange/goods_list";s:9:"view_path";s:29:"marketing/exchange/goods_list";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:165;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:764;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"新人设置";s:15:"menu_short_name";s:12:"新人设置";s:8:"menu_key";s:35:"shop_goods_newcomer_discount_config";s:10:"parent_key";s:28:"shop_goods_newcomer_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:27:"shop/active/newcomer/config";s:11:"router_path";s:30:"shop/marketing/newcomer/config";s:9:"view_path";s:25:"marketing/newcomer/config";s:7:"methods";s:3:"put";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:166;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:767;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单设置";s:15:"menu_short_name";s:12:"榜单设置";s:8:"menu_key";s:22:"shop_goods_rank_config";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:21:"shop/good/rank/config";s:11:"router_path";s:32:"shop/marketing/goods_rank/config";s:9:"view_path";s:27:"marketing/goods_rank/config";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:167;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1118;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测列表";s:15:"menu_short_name";s:18:"学员体测列表";s:8:"menu_key";s:67:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_list";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:41:"zhjw_students_survey/zhjw_students_survey";s:11:"router_path";s:41:"zhjw_students_survey/zhjw_students_survey";s:9:"view_path";s:41:"zhjw_students_survey/zhjw_students_survey";s:7:"methods";s:3:"get";s:4:"sort";i:90;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:168;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:424;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员管理";s:15:"menu_short_name";s:6:"会员";s:8:"menu_key";s:6:"member";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:169;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:624;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品分类";s:15:"menu_short_name";s:12:"商品分类";s:8:"menu_key";s:24:"shop_goods_category_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinfenlei";s:7:"api_url";s:19:"shop/goods/category";s:11:"router_path";s:19:"shop/goods/category";s:9:"view_path";s:14:"goods/category";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:170;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:677;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款维权";s:15:"menu_short_name";s:12:"退款维权";s:8:"menu_key";s:17:"shop_order_refund";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont icondingdanweiquan";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"shop/order/refund";s:9:"view_path";s:12:"order/refund";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:171;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:731;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员数据";s:15:"menu_short_name";s:12:"会员数据";s:8:"menu_key";s:16:"shop_stat_member";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:16:"shop/stat/member";s:11:"router_path";s:16:"shop/stat/member";s:9:"view_path";s:11:"stat/member";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:172;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:740;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"满减送";s:15:"menu_short_name";s:9:"满减送";s:8:"menu_key";s:18:"shop_goods_manjian";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:12:"shop/manjian";s:11:"router_path";s:27:"shop/marketing/manjian/list";s:9:"view_path";s:22:"marketing/manjian/list";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:173;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:760;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"兑换记录";s:15:"menu_short_name";s:12:"兑换记录";s:8:"menu_key";s:24:"shop_point_exchange_list";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconpointexchange";s:7:"api_url";s:0:"";s:11:"router_path";s:34:"shop/marketing/exchange/order_list";s:9:"view_path";s:29:"marketing/exchange/order_list";s:7:"methods";s:3:"get";s:4:"sort";i:89;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:174;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:629;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"分类设置";s:15:"menu_short_name";s:12:"分类设置";s:8:"menu_key";s:26:"shop_goods_category_config";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconfenleishezhi";s:7:"api_url";s:0:"";s:11:"router_path";s:26:"shop/goods/category/config";s:9:"view_path";s:21:"goods/category_config";s:7:"methods";s:0:"";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:175;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:631;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品标签分组";s:15:"menu_short_name";s:18:"商品标签分组";s:8:"menu_key";s:27:"shop_goods_label_group_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont iconshangpinbiaoqian";s:7:"api_url";s:22:"shop/goods/label/group";s:11:"router_path";s:22:"shop/goods/label/group";s:9:"view_path";s:22:"goods/label_group_list";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:176;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:680;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"批量发货";s:15:"menu_short_name";s:12:"批量发货";s:8:"menu_key";s:25:"shop_order_batch_delivery";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/batch/delivery";s:9:"view_path";s:20:"order/batch_delivery";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:177;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:732;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"交易数据";s:15:"menu_short_name";s:12:"交易数据";s:8:"menu_key";s:15:"shop_stat_order";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"shop/stat/order";s:9:"view_path";s:10:"stat/order";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:178;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:746;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"限时折扣";s:15:"menu_short_name";s:12:"限时折扣";s:8:"menu_key";s:19:"shop_goods_discount";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:88;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:179;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:0:"";s:2:"id";i:461;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"营销管理";s:15:"menu_short_name";s:6:"营销";s:8:"menu_key";s:6:"active";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:21:"iconfont iconyingxiao";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:87;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:180;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:635;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品标签";s:15:"menu_short_name";s:12:"商品标签";s:8:"menu_key";s:21:"shop_goods_label_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont iconshangpinbiaoqian";s:7:"api_url";s:16:"shop/goods/label";s:11:"router_path";s:16:"shop/goods/label";s:9:"view_path";s:16:"goods/label_list";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:181;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:681;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发票管理";s:15:"menu_short_name";s:12:"发票管理";s:8:"menu_key";s:12:"shop_invoice";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconfapiaoguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"shop/order/invoice";s:9:"view_path";s:13:"order/invoice";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:182;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:733;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"流量数据";s:15:"menu_short_name";s:12:"流量数据";s:8:"menu_key";s:15:"shop_stat_visit";s:10:"parent_key";s:9:"shop_stat";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:15:"shop/stat/visit";s:11:"router_path";s:15:"shop/stat/visit";s:9:"view_path";s:10:"stat/visit";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:183;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:755;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"积分商城";s:15:"menu_short_name";s:12:"积分商城";s:8:"menu_key";s:25:"shop_goods_point_exchange";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:0;s:4:"icon";s:22:"iconfont iconpointshop";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:87;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:184;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:472;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"应用管理";s:15:"menu_short_name";s:6:"应用";s:8:"menu_key";s:5:"addon";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconmanage-apply";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:185;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:639;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品品牌";s:15:"menu_short_name";s:12:"商品品牌";s:8:"menu_key";s:21:"shop_goods_brand_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinpinpai";s:7:"api_url";s:16:"shop/goods/brand";s:11:"router_path";s:16:"shop/goods/brand";s:9:"view_path";s:16:"goods/brand_list";s:7:"methods";s:3:"get";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:186;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:683;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品评价";s:15:"menu_short_name";s:12:"商品评价";s:8:"menu_key";s:19:"shop_goods_evaluate";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconshangpinpinglun";s:7:"api_url";s:19:"shop/goods/evaluate";s:11:"router_path";s:19:"shop/order/evaluate";s:9:"view_path";s:14:"goods/evaluate";s:7:"methods";s:3:"get";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:187;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:763;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"新人专享";s:15:"menu_short_name";s:12:"新人专享";s:8:"menu_key";s:28:"shop_goods_newcomer_discount";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:86;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:188;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:0:"";s:2:"id";i:474;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"渠道管理";s:15:"menu_short_name";s:6:"渠道";s:8:"menu_key";s:7:"channel";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:17:"element DataBoard";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:85;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:189;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:643;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品服务";s:15:"menu_short_name";s:12:"商品服务";s:8:"menu_key";s:23:"shop_goods_service_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconshangpinfuwu";s:7:"api_url";s:18:"shop/goods/service";s:11:"router_path";s:18:"shop/goods/service";s:9:"view_path";s:13:"goods/service";s:7:"methods";s:3:"get";s:4:"sort";i:85;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:190;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:690;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单设置";s:15:"menu_short_name";s:12:"订单设置";s:8:"menu_key";s:17:"shop_config_order";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconjiaoyishezhi";s:7:"api_url";s:17:"shop/order/config";s:11:"router_path";s:23:"shop/order/order/config";s:9:"view_path";s:12:"order/config";s:7:"methods";s:0:"";s:4:"sort";i:85;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:191;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:766;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品榜单";s:15:"menu_short_name";s:12:"商品榜单";s:8:"menu_key";s:15:"shop_goods_rank";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:85;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:192;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:506;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"权限管理";s:15:"menu_short_name";s:6:"权限";s:8:"menu_key";s:4:"auth";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:12:"element Lock";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:193;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:647;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"参数模板";s:15:"menu_short_name";s:12:"参数模板";s:8:"menu_key";s:20:"shop_goods_attr_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconshangpinfuwu";s:7:"api_url";s:15:"shop/goods/attr";s:11:"router_path";s:15:"shop/goods/attr";s:9:"view_path";s:10:"goods/attr";s:7:"methods";s:3:"get";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:194;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:692;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"商家地址库";s:15:"menu_short_name";s:15:"商家地址库";s:8:"menu_key";s:12:"shop_address";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:28:"iconfont iconshangjiadizhiku";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"shop/order/address";s:9:"view_path";s:12:"address/list";s:7:"methods";s:3:"get";s:4:"sort";i:84;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:195;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:519;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统设置";s:15:"menu_short_name";s:6:"设置";s:8:"menu_key";s:7:"setting";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:15:"element Setting";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:196;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:651;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品统计";s:15:"menu_short_name";s:12:"商品统计";s:8:"menu_key";s:15:"shop_stat_goods";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:29:"iconfont icona-dingdanliebiao";s:7:"api_url";s:10:"stat/goods";s:11:"router_path";s:15:"shop/stat/goods";s:9:"view_path";s:10:"stat/goods";s:7:"methods";s:3:"get";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:197;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:694;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配送设置";s:15:"menu_short_name";s:12:"配送设置";s:8:"menu_key";s:20:"shop_config_delivery";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconpaisongshezhi";s:7:"api_url";s:0:"";s:11:"router_path";s:19:"shop/order/delivery";s:9:"view_path";s:15:"delivery/config";s:7:"methods";s:0:"";s:4:"sort";i:83;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:198;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:652;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"回收站";s:15:"menu_short_name";s:9:"回收站";s:8:"menu_key";s:23:"shop_goods_recycle_list";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconhuishouzhan";s:7:"api_url";s:18:"shop/goods/recycle";s:11:"router_path";s:18:"shop/goods/recycle";s:9:"view_path";s:13:"goods/recycle";s:7:"methods";s:3:"get";s:4:"sort";i:82;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:199;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:696;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"电子面单";s:15:"menu_short_name";s:12:"电子面单";s:8:"menu_key";s:30:"shop_delivery_electronic_sheet";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/delivery/electronic_sheet";s:9:"view_path";s:25:"delivery/electronic_sheet";s:7:"methods";s:3:"get";s:4:"sort";i:82;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:200;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:432;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员标签";s:15:"menu_short_name";s:12:"会员标签";s:8:"menu_key";s:12:"member_label";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:21:"element CollectionTag";s:7:"api_url";s:12:"member/label";s:11:"router_path";s:12:"member/label";s:9:"view_path";s:12:"member/label";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:201;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:479;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"微信公众号";s:15:"menu_short_name";s:15:"微信公众号";s:8:"menu_key";s:14:"channel_wechat";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:32:"iconfont iconweixingongzhonghao1";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"channel/wechat";s:9:"view_path";s:21:"channel/wechat/access";s:7:"methods";s:0:"";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:202;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:668;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单管理";s:15:"menu_short_name";s:6:"订单";s:8:"menu_key";s:10:"shop_order";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:0;s:4:"icon";s:26:"iconfont icondingdanguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:203;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:750;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动设置";s:15:"menu_short_name";s:12:"活动设置";s:8:"menu_key";s:26:"shop_goods_discount_config";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/marketing/discount/config";s:9:"view_path";s:25:"marketing/discount/config";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:204;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:765;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"购买记录";s:15:"menu_short_name";s:12:"购买记录";s:8:"menu_key";s:39:"shop_goods_newcomer_discount_order_list";s:10:"parent_key";s:28:"shop_goods_newcomer_discount";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:26:"shop/active/newcomer/order";s:11:"router_path";s:34:"shop/marketing/newcomer/order_list";s:9:"view_path";s:29:"marketing/newcomer/order_list";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:205;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:768;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单管理";s:15:"menu_short_name";s:12:"榜单管理";s:8:"menu_key";s:20:"shop_goods_rank_list";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:20:"shop/good/rank/pages";s:11:"router_path";s:30:"shop/marketing/goods_rank/list";s:9:"view_path";s:25:"marketing/goods_rank/list";s:7:"methods";s:3:"get";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:206;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1117;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员体测";s:15:"menu_short_name";s:12:"学员体测";s:8:"menu_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"zhjw_students_survey";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:80;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:207;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:0:"";s:2:"id";i:436;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员等级";s:15:"menu_short_name";s:12:"会员等级";s:8:"menu_key";s:12:"member_level";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:0;s:4:"icon";s:21:"element CollectionTag";s:7:"api_url";s:12:"member/level";s:11:"router_path";s:12:"member/level";s:9:"view_path";s:12:"member/level";s:7:"methods";s:3:"get";s:4:"sort";i:79;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:208;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:527;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员设置";s:15:"menu_short_name";s:12:"会员设置";s:8:"menu_key";s:14:"setting_member";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:71;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:209;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:528;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员设置";s:15:"menu_short_name";s:12:"会员设置";s:8:"menu_key";s:21:"setting_member_config";s:10:"parent_key";s:14:"setting_member";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconjiaoseyonghu";s:7:"api_url";s:20:"member/config/member";s:11:"router_path";s:14:"setting/member";s:9:"view_path";s:14:"setting/member";s:7:"methods";s:3:"get";s:4:"sort";i:71;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:210;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:480;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"微信小程序";s:15:"menu_short_name";s:15:"微信小程序";s:8:"menu_key";s:12:"weapp_access";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:30:"iconfont iconxiaochengxushezhi";s:7:"api_url";s:12:"weapp/access";s:11:"router_path";s:13:"channel/weapp";s:9:"view_path";s:20:"channel/weapp/access";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:211;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:530;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"注册登录";s:15:"menu_short_name";s:12:"注册登录";s:8:"menu_key";s:22:"setting_login_register";s:10:"parent_key";s:14:"setting_member";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconzhuceshezhi";s:7:"api_url";s:19:"member/config/login";s:11:"router_path";s:13:"setting/login";s:9:"view_path";s:13:"setting/login";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:212;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:729;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:6:"数据";s:8:"menu_key";s:9:"shop_stat";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:0;s:4:"icon";s:24:"iconfont iconshujutongji";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:213;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1119;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测添加";s:15:"menu_short_name";s:18:"学员体测添加";s:8:"menu_key";s:66:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_add";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:41:"zhjw_students_survey/zhjw_students_survey";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:70;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:214;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:450;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员余额";s:15:"menu_short_name";s:12:"会员余额";s:8:"menu_key";s:14:"member_balance";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Money";s:7:"api_url";s:22:"member/account/balance";s:11:"router_path";s:14:"member/balance";s:9:"view_path";s:14:"member/balance";s:7:"methods";s:3:"get";s:4:"sort";i:60;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:215;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:481;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"支付宝小程序";s:15:"menu_short_name";s:18:"支付宝小程序";s:8:"menu_key";s:19:"aliapp_weapp_access";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont iconzhifubao";s:7:"api_url";s:13:"aliapp/access";s:11:"router_path";s:14:"channel/aliapp";s:9:"view_path";s:21:"channel/aliapp/access";s:7:"methods";s:3:"get";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:216;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:532;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"支付管理";s:15:"menu_short_name";s:12:"支付管理";s:8:"menu_key";s:11:"setting_pay";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:14:"element Wallet";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"setting/pay";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:217;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1120;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测编辑";s:15:"menu_short_name";s:18:"学员体测编辑";s:8:"menu_key";s:67:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_edit";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:46:"zhjw_students_survey/zhjw_students_survey/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:60;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:218;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:451;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员佣金";s:15:"menu_short_name";s:12:"会员佣金";s:8:"menu_key";s:17:"member_commission";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Money";s:7:"api_url";s:25:"member/account/commission";s:11:"router_path";s:17:"member/commission";s:9:"view_path";s:17:"member/commission";s:7:"methods";s:3:"get";s:4:"sort";i:59;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:219;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:537;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"提现设置";s:15:"menu_short_name";s:12:"提现设置";s:8:"menu_key";s:15:"cash_out_config";s:10:"parent_key";s:11:"setting_pay";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:22:"member/config/cash_out";s:11:"router_path";s:16:"setting/cash_out";s:9:"view_path";s:16:"setting/cash_out";s:7:"methods";s:3:"get";s:4:"sort";i:59;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:220;a:22:{s:11:"status_name";s:0:"";s:14:"menu_type_name";s:0:"";s:2:"id";i:446;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员积分";s:15:"menu_short_name";s:12:"会员积分";s:8:"menu_key";s:12:"member_point";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:0;s:4:"icon";s:27:"iconfont iconjifen-xianxing";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:51;s:6:"status";i:0;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:221;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:437;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"等级列表";s:15:"menu_short_name";s:12:"会员等级";s:8:"menu_key";s:17:"member_level_list";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:21:"element CollectionTag";s:7:"api_url";s:12:"member/level";s:11:"router_path";s:12:"member/level";s:9:"view_path";s:12:"member/level";s:7:"methods";s:3:"get";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:222;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:473;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"应用列表";s:15:"menu_short_name";s:12:"应用列表";s:8:"menu_key";s:10:"addon_list";s:10:"parent_key";s:5:"addon";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconmanage-apply";s:7:"api_url";s:10:"addon/list";s:11:"router_path";s:9:"app/index";s:9:"view_path";s:9:"app/index";s:7:"methods";s:3:"get";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:223;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:539;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息管理";s:15:"menu_short_name";s:12:"消息管理";s:8:"menu_key";s:14:"setting_notice";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:22:"element ChatLineSquare";s:7:"api_url";s:0:"";s:11:"router_path";s:14:"setting/notice";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:224;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:603;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"环境检测";s:15:"menu_short_name";s:12:"环境检测";s:8:"menu_key";s:23:"tools_check_environment";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconhuanjingjiance";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/detection";s:9:"view_path";s:15:"tools/detection";s:7:"methods";s:0:"";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:225;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:1121;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"学员体测删除";s:15:"menu_short_name";s:18:"学员体测删除";s:8:"menu_key";s:69:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey_delete";s:10:"parent_key";s:62:"zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:46:"zhjw_students_survey/zhjw_students_survey/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:50;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:24:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:226;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:441;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:19:"添加/编辑等级";s:15:"menu_short_name";s:19:"添加/编辑等级";s:8:"menu_key";s:22:"member_level_edit_page";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:17:"member/level_edit";s:9:"view_path";s:17:"member/level_edit";s:7:"methods";s:0:"";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:227;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:443;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"成长值规则";s:15:"menu_short_name";s:15:"成长值规则";s:8:"menu_key";s:11:"growth_rule";s:10:"parent_key";s:12:"member_level";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"member/config/growth_rule";s:11:"router_path";s:19:"setting/growth_rule";s:9:"view_path";s:19:"setting/growth_rule";s:7:"methods";s:3:"get";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:228;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:445;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"会员成长值";s:15:"menu_short_name";s:15:"会员成长值";s:8:"menu_key";s:13:"member_growth";s:10:"parent_key";s:6:"member";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconjifen-xianxing";s:7:"api_url";s:21:"member/account/growth";s:11:"router_path";s:13:"member/growth";s:9:"view_path";s:13:"member/growth";s:7:"methods";s:3:"get";s:4:"sort";i:49;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:229;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:462;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销管理";s:15:"menu_short_name";s:12:"核销管理";s:8:"menu_key";s:6:"verify";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:230;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:463;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"核销员";s:15:"menu_short_name";s:9:"核销员";s:8:"menu_key";s:13:"verifier_list";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"verify/verifier";s:11:"router_path";s:18:"marketing/verifier";s:9:"view_path";s:18:"marketing/verifier";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:231;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:466;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销记录";s:15:"menu_short_name";s:12:"核销记录";s:8:"menu_key";s:11:"verify_list";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"verify/verify/record";s:11:"router_path";s:16:"marketing/verify";s:9:"view_path";s:16:"marketing/verify";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:232;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:467;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"核销详情";s:15:"menu_short_name";s:12:"核销详情";s:8:"menu_key";s:13:"verify_detail";s:10:"parent_key";s:6:"verify";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:27:"verify/verify/";s:11:"router_path";s:23:"marketing/verify/detail";s:9:"view_path";s:23:"marketing/verify_detail";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:233;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:604;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"菜单管理";s:15:"menu_short_name";s:12:"菜单管理";s:8:"menu_key";s:9:"site_menu";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:10:"tools/menu";s:9:"view_path";s:9:"auth/menu";s:7:"methods";s:3:"get";s:4:"sort";i:48;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:234;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:545;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"短信管理";s:15:"menu_short_name";s:12:"短信管理";s:8:"menu_key";s:10:"sms_notice";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:15:"element Message";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:235;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:609;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"计划任务";s:15:"menu_short_name";s:12:"计划任务";s:8:"menu_key";s:14:"tools_schedule";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconjihuarenwu";s:7:"api_url";s:17:"sys/schedule/list";s:11:"router_path";s:14:"tools/schedule";s:9:"view_path";s:14:"tools/schedule";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:236;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:614;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"执行日志";s:15:"menu_short_name";s:12:"执行日志";s:8:"menu_key";s:18:"tools_schedule_log";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:23:"iconfont iconjihuarenwu";s:7:"api_url";s:21:"sys/schedule/log/list";s:11:"router_path";s:18:"tools/schedule_log";s:9:"view_path";s:18:"tools/schedule_log";s:7:"methods";s:0:"";s:4:"sort";i:40;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:237;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:468;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到管理";s:15:"menu_short_name";s:12:"签到管理";s:8:"menu_key";s:4:"sign";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:238;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:469;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到设置";s:15:"menu_short_name";s:12:"签到设置";s:8:"menu_key";s:8:"sign_set";s:10:"parent_key";s:4:"sign";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:18:"member/sign/config";s:11:"router_path";s:21:"marketing/sign/config";s:9:"view_path";s:21:"marketing/sign_config";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:239;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:471;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"签到记录";s:15:"menu_short_name";s:12:"签到记录";s:8:"menu_key";s:9:"sign_list";s:10:"parent_key";s:4:"sign";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:11:"member/sign";s:11:"router_path";s:14:"marketing/sign";s:9:"view_path";s:19:"marketing/sign_list";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:240;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:551;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"小票打印";s:15:"menu_short_name";s:12:"小票打印";s:8:"menu_key";s:18:"printer_management";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:7:"printer";s:11:"router_path";s:12:"printer/list";s:9:"view_path";s:12:"printer/list";s:7:"methods";s:3:"get";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:241;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:615;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"授权信息";s:15:"menu_short_name";s:12:"授权信息";s:8:"menu_key";s:8:"app_auth";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshouquanxinxi2";s:7:"api_url";s:0:"";s:11:"router_path";s:15:"tools/authorize";s:9:"view_path";s:13:"app/authorize";s:7:"methods";s:0:"";s:4:"sort";i:30;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:242;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:571;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面装修";s:15:"menu_short_name";s:12:"页面装修";s:8:"menu_key";s:8:"decorate";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:21;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:243;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:525;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"登录设置";s:15:"menu_short_name";s:12:"登录设置";s:8:"menu_key";s:13:"setting_login";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:24:"iconfont iconzhuceshezhi";s:7:"api_url";s:16:"sys/config/login";s:11:"router_path";s:18:"setting/adminlogin";s:9:"view_path";s:18:"setting/adminlogin";s:7:"methods";s:3:"get";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:244;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:559;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"系统工具";s:15:"menu_short_name";s:12:"系统工具";s:8:"menu_key";s:12:"setting_tool";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:0;s:4:"icon";s:21:"element FolderChecked";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:245;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:579;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"开发";s:15:"menu_short_name";s:6:"开发";s:8:"menu_key";s:4:"tool";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:12:"element Edit";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:246;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:618;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"开发者key";s:15:"menu_short_name";s:12:"开发者key";s:8:"menu_key";s:15:"developer_token";s:10:"parent_key";s:4:"tool";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshouquanxinxi2";s:7:"api_url";s:26:"sys/config/developer_token";s:11:"router_path";s:21:"tools/developer_token";s:9:"view_path";s:23:"setting/developer_token";s:7:"methods";s:3:"get";s:4:"sort";i:20;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:247;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:546;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"短信设置";s:15:"menu_short_name";s:12:"短信设置";s:8:"menu_key";s:11:"sms_setting";s:10:"parent_key";s:10:"sms_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"notice/notice/sms";s:11:"router_path";s:19:"setting/sms/setting";s:9:"view_path";s:11:"setting/sms";s:7:"methods";s:3:"get";s:4:"sort";i:12;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:248;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:549;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发送记录";s:15:"menu_short_name";s:12:"发送记录";s:8:"menu_key";s:18:"sms_notice_records";s:10:"parent_key";s:10:"sms_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"notice/sms/log";s:11:"router_path";s:19:"setting/sms/records";s:9:"view_path";s:19:"setting/sms_records";s:7:"methods";s:3:"get";s:4:"sort";i:11;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:249;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:540;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"消息模板";s:15:"menu_short_name";s:12:"消息模板";s:8:"menu_key";s:23:"setting_notice_template";s:10:"parent_key";s:14:"setting_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"notice/notice";s:11:"router_path";s:23:"setting/notice/template";s:9:"view_path";s:14:"setting/notice";s:7:"methods";s:3:"get";s:4:"sort";i:10;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:250;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:544;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发送记录";s:15:"menu_short_name";s:12:"发送记录";s:8:"menu_key";s:22:"setting_notice_records";s:10:"parent_key";s:14:"setting_notice";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"notice/notice/log";s:11:"router_path";s:22:"setting/notice/records";s:9:"view_path";s:22:"setting/notice_records";s:7:"methods";s:3:"get";s:4:"sort";i:9;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:251;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:600;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"数据字典添加";s:15:"menu_short_name";s:18:"数据字典添加";s:8:"menu_key";s:22:"sys_dict_dict_dict_add";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:4:"dict";s:11:"router_path";s:4:"edit";s:9:"view_path";s:9:"dict/edit";s:7:"methods";s:4:"post";s:4:"sort";i:4;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:252;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:610;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:12:"schedule_add";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"sys/schedule";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:4;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:253;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:601;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:23:"sys_dict_dict_dict_edit";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:9:"dict/";s:11:"router_path";s:4:"edit";s:9:"view_path";s:9:"dict/edit";s:7:"methods";s:3:"put";s:4:"sort";i:3;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:254;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:611;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:15:"schedule_update";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"sys/schedule/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:3;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:255;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:602;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:25:"sys_dict_dict_dict_delete";s:10:"parent_key";s:23:"sys_dict_dict_dict_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:9:"dict/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:2;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:256;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:612;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"设置状态";s:15:"menu_short_name";s:12:"设置状态";s:8:"menu_key";s:19:"schedule_set_status";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"schedule/modify/status/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:2;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:257;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:412;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航添加";s:15:"menu_short_name";s:18:"首页导航添加";s:8:"menu_key";s:15:"diy_web_nav_add";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"web/nav";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:258;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:413;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航编辑";s:15:"menu_short_name";s:18:"首页导航编辑";s:8:"menu_key";s:16:"diy_web_nav_edit";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/nav/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:259;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:414;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"首页导航删除";s:15:"menu_short_name";s:18:"首页导航删除";s:8:"menu_key";s:18:"diy_web_nav_delete";s:10:"parent_key";s:11:"diy_web_nav";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/nav/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:260;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:417;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告添加";s:15:"menu_short_name";s:12:"广告添加";s:8:"menu_key";s:11:"web_adv_add";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"web/adv";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:261;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:418;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告编辑";s:15:"menu_short_name";s:12:"广告编辑";s:8:"menu_key";s:12:"web_adv_edit";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/adv/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:262;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:419;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告删除";s:15:"menu_short_name";s:12:"广告删除";s:8:"menu_key";s:14:"web_adv_delete";s:10:"parent_key";s:7:"web_adv";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"web/adv/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:263;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:421;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接添加";s:15:"menu_short_name";s:18:"友情链接添加";s:8:"menu_key";s:25:"diy_web_friendly_link_add";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"web/friendly_link";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:264;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:422;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接编辑";s:15:"menu_short_name";s:18:"友情链接编辑";s:8:"menu_key";s:26:"diy_web_friendly_link_edit";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"web/friendly_link/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:265;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:423;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"友情链接删除";s:15:"menu_short_name";s:18:"友情链接删除";s:8:"menu_key";s:28:"diy_web_friendly_link_delete";s:10:"parent_key";s:21:"diy_web_friendly_link";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"web/friendly_link/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:266;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:508;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"管理员信息";s:15:"menu_short_name";s:15:"管理员信息";s:8:"menu_key";s:16:"auth_user_detail";s:10:"parent_key";s:9:"auth_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"user/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:267;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:515;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:13:"auth_role_add";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/role";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:268;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:516;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:16:"auth_role_update";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/role/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:269;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:517;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:13:"auth_role_del";s:10:"parent_key";s:9:"auth_role";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"sys/role/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:270;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:605;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"新增";s:15:"menu_short_name";s:6:"新增";s:8:"menu_key";s:18:"auth_site_menu_add";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:271;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:606;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"编辑";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:21:"auth_site_menu_update";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/menu/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:272;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:607;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:18:"auth_site_menu_del";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:8:"sys/menu";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:273;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:613;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"删除";s:15:"menu_short_name";s:6:"删除";s:8:"menu_key";s:12:"schedule_del";s:10:"parent_key";s:14:"tools_schedule";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"sys/schedule/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:1;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:274;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:393;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:15:"diy_page_update";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:7:"diy/diy";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:275;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:398;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"保存";s:15:"menu_short_name";s:6:"保存";s:8:"menu_key";s:17:"diy_tabbar_update";s:10:"parent_key";s:10:"diy_bottom";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"diy/bottom";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:276;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:407;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"海报装修";s:15:"menu_short_name";s:12:"海报装修";s:8:"menu_key";s:15:"poster_decorate";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:11:"poster/";s:11:"router_path";s:11:"poster/edit";s:9:"view_path";s:11:"poster/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:277;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:409;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据列表";s:15:"menu_short_name";s:12:"数据列表";s:8:"menu_key";s:20:"diy_form_record_list";s:10:"parent_key";s:3:"diy";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:16:"diy_form/records";s:11:"router_path";s:16:"diy_form/records";s:9:"view_path";s:16:"diy_form/records";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:278;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:416;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"广告管理";s:15:"menu_short_name";s:6:"广告";s:8:"menu_key";s:7:"web_adv";s:10:"parent_key";s:7:"diy_web";s:9:"menu_type";i:1;s:4:"icon";s:13:"element-House";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"web/adv";s:9:"view_path";s:7:"web/adv";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:279;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:426;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑会员";s:15:"menu_short_name";s:6:"编辑";s:8:"menu_key";s:13:"member_update";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:33:"member/modify//";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:280;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:427;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加会员";s:15:"menu_short_name";s:6:"添加";s:8:"menu_key";s:10:"member_add";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:13:"member/member";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:281;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:428;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员导出";s:15:"menu_short_name";s:12:"会员导出";s:8:"menu_key";s:13:"member_export";s:10:"parent_key";s:11:"member_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/member/export";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:282;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:430;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"调整会员积分";s:15:"menu_short_name";s:18:"调整会员积分";s:8:"menu_key";s:12:"adjust_point";s:10:"parent_key";s:11:"member_info";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"member/account/point";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:283;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:431;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"调整会员余额";s:15:"menu_short_name";s:18:"调整会员余额";s:8:"menu_key";s:14:"adjust_balance";s:10:"parent_key";s:11:"member_info";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"member/account/balance";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:284;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:433;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑标签";s:15:"menu_short_name";s:12:"编辑标签";s:8:"menu_key";s:19:"member_label_update";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:285;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:434;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加标签";s:15:"menu_short_name";s:12:"添加标签";s:8:"menu_key";s:16:"member_label_add";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"member/label";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:286;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:435;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除标签";s:15:"menu_short_name";s:12:"删除标签";s:8:"menu_key";s:19:"member_label_delete";s:10:"parent_key";s:12:"member_label";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:287;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:438;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加等级";s:15:"menu_short_name";s:12:"添加等级";s:8:"menu_key";s:16:"member_level_add";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:12:"member/level";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:288;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:439;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑等级";s:15:"menu_short_name";s:12:"编辑等级";s:8:"menu_key";s:17:"member_level_edit";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:289;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:440;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除等级";s:15:"menu_short_name";s:12:"删除等级";s:8:"menu_key";s:19:"member_level_delete";s:10:"parent_key";s:17:"member_level_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"member/level/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:290;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:453;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"财务流水";s:15:"menu_short_name";s:12:"财务流水";s:8:"menu_key";s:17:"site_account_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:15:"finance/account";s:11:"router_path";s:15:"finance/account";s:9:"view_path";s:15:"finance/account";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:291;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:454;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"支付单据详情";s:15:"menu_short_name";s:18:"支付单据详情";s:8:"menu_key";s:15:"site_pay_detail";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:10:"pay/detail";s:11:"router_path";s:18:"finance/pay/detail";s:9:"view_path";s:18:"finance/pay_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:292;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:455;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员提现";s:15:"menu_short_name";s:12:"会员提现";s:8:"menu_key";s:13:"cash_out_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:16:"element Postcard";s:7:"api_url";s:15:"member/cash_out";s:11:"router_path";s:16:"finance/cash_out";s:9:"view_path";s:16:"finance/cash_out";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:293;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:458;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"会员退款";s:15:"menu_short_name";s:12:"会员退款";s:8:"menu_key";s:18:"member_refund_list";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconhuiyuantixian";s:7:"api_url";s:10:"pay/refund";s:11:"router_path";s:14:"finance/refund";s:9:"view_path";s:18:"finance/pay_refund";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:294;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:460;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款详情";s:15:"menu_short_name";s:12:"退款详情";s:8:"menu_key";s:20:"member_refund_detail";s:10:"parent_key";s:7:"finance";s:9:"menu_type";i:1;s:4:"icon";s:26:"iconfont iconhuiyuantixian";s:7:"api_url";s:22:"pay/refund/";s:11:"router_path";s:21:"finance/refund/detail";s:9:"view_path";s:21:"finance/refund_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:295;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:482;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"发布教程";s:15:"menu_short_name";s:12:"发布教程";s:8:"menu_key";s:13:"wechat_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/course";s:11:"router_path";s:21:"channel/wechat/course";s:9:"view_path";s:21:"channel/wechat/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:296;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:483;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"公众号配置";s:15:"menu_short_name";s:15:"公众号配置";s:8:"menu_key";s:13:"wechat_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"wechat/config";s:11:"router_path";s:21:"channel/wechat/config";s:9:"view_path";s:21:"channel/wechat/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:297;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:485;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"公众号回复配置";s:15:"menu_short_name";s:21:"公众号回复配置";s:8:"menu_key";s:19:"wechat_reply_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"channel/wechat/reply";s:9:"view_path";s:20:"channel/wechat/reply";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:298;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:488;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:28:"关键字回复添加/编辑";s:15:"menu_short_name";s:28:"关键字回复添加/编辑";s:8:"menu_key";s:20:"wechat_keyword_reply";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:33:"channel/wechat/keyword_reply_edit";s:9:"view_path";s:33:"channel/wechat/keyword_reply_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:299;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:489;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复添加";s:15:"menu_short_name";s:21:"关键字回复添加";s:8:"menu_key";s:24:"wechat_keyword_reply_add";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:300;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:490;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复编辑";s:15:"menu_short_name";s:21:"关键字回复编辑";s:8:"menu_key";s:25:"wechat_keyword_reply_edit";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:301;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:491;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"关键字回复删除";s:15:"menu_short_name";s:21:"关键字回复编辑";s:8:"menu_key";s:27:"wechat_keyword_reply_delete";s:10:"parent_key";s:20:"wechat_keyword_reply";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"wechat/reply/keywords/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:302;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:492;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自定义菜单";s:15:"menu_short_name";s:15:"自定义菜单";s:8:"menu_key";s:11:"wechat_menu";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:11:"wechat/menu";s:11:"router_path";s:19:"channel/wechat/menu";s:9:"view_path";s:19:"channel/wechat/menu";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:303;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:494;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"模板消息";s:15:"menu_short_name";s:12:"模板消息";s:8:"menu_key";s:23:"wechat_template_message";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"wechat/template";s:11:"router_path";s:22:"channel/wechat/message";s:9:"view_path";s:23:"channel/wechat/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:304;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:496;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配置教程";s:15:"menu_short_name";s:12:"配置教程";s:8:"menu_key";s:12:"weapp_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/course";s:11:"router_path";s:20:"channel/weapp/course";s:9:"view_path";s:20:"channel/weapp/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:305;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:497;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"小程序配置";s:15:"menu_short_name";s:15:"小程序配置";s:8:"menu_key";s:12:"weapp_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"weapp/config";s:11:"router_path";s:20:"channel/weapp/config";s:9:"view_path";s:20:"channel/weapp/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:306;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:499;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订阅消息";s:15:"menu_short_name";s:12:"订阅消息";s:8:"menu_key";s:22:"weapp_template_message";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"weapp/template";s:11:"router_path";s:21:"channel/weapp/message";s:9:"view_path";s:22:"channel/weapp/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:307;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:501;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"小程序发布";s:15:"menu_short_name";s:15:"小程序发布";s:8:"menu_key";s:10:"weapp_code";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:10:"weapp/code";s:11:"router_path";s:18:"channel/weapp/code";s:9:"view_path";s:18:"channel/weapp/code";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:308;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:503;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"支付宝配置";s:15:"menu_short_name";s:15:"支付宝配置";s:8:"menu_key";s:13:"aliapp_config";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/config";s:11:"router_path";s:21:"channel/aliapp/config";s:9:"view_path";s:21:"channel/aliapp/config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:309;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:505;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"配置教程";s:15:"menu_short_name";s:12:"配置教程";s:8:"menu_key";s:13:"aliapp_course";s:10:"parent_key";s:7:"channel";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:13:"aliapp/course";s:11:"router_path";s:21:"channel/aliapp/course";s:9:"view_path";s:21:"channel/aliapp/course";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:310;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:553;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"添加打印机";s:15:"menu_short_name";s:15:"添加打印机";s:8:"menu_key";s:11:"printer_add";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:7:"printer";s:11:"router_path";s:11:"printer/add";s:9:"view_path";s:12:"printer/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:311;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:554;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"编辑打印机";s:15:"menu_short_name";s:15:"添加打印机";s:8:"menu_key";s:12:"printer_edit";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"printer/";s:11:"router_path";s:12:"printer/edit";s:9:"view_path";s:12:"printer/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:312;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:557;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加打印模板";s:15:"menu_short_name";s:18:"添加打印模板";s:8:"menu_key";s:20:"printer_template_add";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:16:"printer/template";s:11:"router_path";s:20:"printer/template/add";s:9:"view_path";s:21:"printer/template_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:313;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:558;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑打印模板";s:15:"menu_short_name";s:18:"编辑打印模板";s:8:"menu_key";s:21:"printer_template_edit";s:10:"parent_key";s:7:"setting";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"printer/template/";s:11:"router_path";s:21:"printer/template/edit";s:9:"view_path";s:21:"printer/template_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:314;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:572;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"装修";s:15:"menu_short_name";s:6:"装修";s:8:"menu_key";s:13:"page_decorate";s:10:"parent_key";s:8:"decorate";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"diy/diy/";s:11:"router_path";s:13:"decorate/edit";s:9:"view_path";s:8:"diy/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:315;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:573;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"表单装修";s:15:"menu_short_name";s:12:"表单装修";s:8:"menu_key";s:18:"form_page_decorate";s:10:"parent_key";s:8:"decorate";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:18:"decorate/form/edit";s:9:"view_path";s:13:"diy_form/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:316;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:574;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面预览";s:15:"menu_short_name";s:12:"页面预览";s:8:"menu_key";s:7:"preview";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:317;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:575;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"页面预览";s:15:"menu_short_name";s:12:"页面预览";s:8:"menu_key";s:16:"page_wap_preview";s:10:"parent_key";s:7:"preview";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"preview/wap";s:9:"view_path";s:13:"index/preview";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:318;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:576;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"万能表单";s:15:"menu_short_name";s:12:"万能表单";s:8:"menu_key";s:8:"diy_form";s:10:"parent_key";s:0:"";s:9:"menu_type";i:0;s:4:"icon";s:13:"element Files";s:7:"api_url";s:0:"";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:319;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:577;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"表单列表";s:15:"menu_short_name";s:12:"表单列表";s:8:"menu_key";s:13:"diy_form_list";s:10:"parent_key";s:8:"diy_form";s:9:"menu_type";i:1;s:4:"icon";s:13:"element Files";s:7:"api_url";s:8:"diy_form";s:11:"router_path";s:13:"diy_form/list";s:9:"view_path";s:13:"diy_form/list";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:8:"diy_form";}i:320;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:608;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"详情";s:15:"menu_short_name";s:6:"详情";s:8:"menu_key";s:19:"auth_site_menu_info";s:10:"parent_key";s:9:"site_menu";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"sys/menu/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:321;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:625;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品分类添加";s:15:"menu_short_name";s:18:"商品分类添加";s:8:"menu_key";s:23:"shop_goods_category_add";s:10:"parent_key";s:24:"shop_goods_category_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/goods/category";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:322;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:626;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品分类编辑";s:15:"menu_short_name";s:18:"商品分类编辑";s:8:"menu_key";s:24:"shop_goods_category_edit";s:10:"parent_key";s:24:"shop_goods_category_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/goods/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:323;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:627;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品分类删除";s:15:"menu_short_name";s:18:"商品分类删除";s:8:"menu_key";s:26:"shop_goods_category_delete";s:10:"parent_key";s:24:"shop_goods_category_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/goods/category/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:324;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:628;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品分类拖拽排序";s:15:"menu_short_name";s:24:"商品分类拖拽排序";s:8:"menu_key";s:24:"shop_goods_category_sort";s:10:"parent_key";s:24:"shop_goods_category_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/category/update";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:325;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:630;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"分类设置编辑";s:15:"menu_short_name";s:18:"分类设置编辑";s:8:"menu_key";s:30:"shop_goods_category_config_set";s:10:"parent_key";s:26:"shop_goods_category_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/category/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:326;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:632;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品标签分组添加";s:15:"menu_short_name";s:24:"商品标签分组添加";s:8:"menu_key";s:26:"shop_goods_label_group_add";s:10:"parent_key";s:27:"shop_goods_label_group_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/goods/label/group";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:327;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:633;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品标签分组编辑";s:15:"menu_short_name";s:24:"商品标签分组编辑";s:8:"menu_key";s:27:"shop_goods_label_group_edit";s:10:"parent_key";s:27:"shop_goods_label_group_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/label/group/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:328;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:634;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品标签分组删除";s:15:"menu_short_name";s:24:"商品标签分组删除";s:8:"menu_key";s:29:"shop_goods_label_group_delete";s:10:"parent_key";s:27:"shop_goods_label_group_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/label/group/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:329;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:636;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品标签添加";s:15:"menu_short_name";s:18:"商品标签添加";s:8:"menu_key";s:20:"shop_goods_label_add";s:10:"parent_key";s:21:"shop_goods_label_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:16:"shop/goods/label";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:330;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:637;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品标签编辑";s:15:"menu_short_name";s:18:"商品标签编辑";s:8:"menu_key";s:21:"shop_goods_label_edit";s:10:"parent_key";s:21:"shop_goods_label_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/goods/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:331;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:638;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品标签删除";s:15:"menu_short_name";s:18:"商品标签删除";s:8:"menu_key";s:23:"shop_goods_label_delete";s:10:"parent_key";s:21:"shop_goods_label_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/goods/label/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:332;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:640;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品品牌添加";s:15:"menu_short_name";s:18:"商品品牌添加";s:8:"menu_key";s:20:"shop_goods_brand_add";s:10:"parent_key";s:21:"shop_goods_brand_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:16:"shop/goods/brand";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:333;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:641;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品品牌编辑";s:15:"menu_short_name";s:18:"商品品牌编辑";s:8:"menu_key";s:21:"shop_goods_brand_edit";s:10:"parent_key";s:21:"shop_goods_brand_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/goods/brand/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:334;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:642;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品品牌删除";s:15:"menu_short_name";s:18:"商品品牌删除";s:8:"menu_key";s:23:"shop_goods_brand_delete";s:10:"parent_key";s:21:"shop_goods_brand_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/goods/brand/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:335;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:644;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品服务添加";s:15:"menu_short_name";s:18:"商品服务添加";s:8:"menu_key";s:22:"shop_goods_service_add";s:10:"parent_key";s:23:"shop_goods_service_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"shop/goods/service";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:336;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:645;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品服务编辑";s:15:"menu_short_name";s:18:"商品服务编辑";s:8:"menu_key";s:23:"shop_goods_service_edit";s:10:"parent_key";s:23:"shop_goods_service_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/goods/service/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:337;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:646;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品服务删除";s:15:"menu_short_name";s:18:"商品服务删除";s:8:"menu_key";s:25:"shop_goods_service_delete";s:10:"parent_key";s:23:"shop_goods_service_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/goods/service/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:338;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:648;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:27:"修改参数模板排序号";s:15:"menu_short_name";s:27:"修改参数模板排序号";s:8:"menu_key";s:25:"shop_goods_attr_sort_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:339;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:649;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"修改参数模板名称";s:15:"menu_short_name";s:24:"修改参数模板名称";s:8:"menu_key";s:25:"shop_goods_attr_name_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/goods/attr/attr_name";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:340;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:650;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改参数模板值";s:15:"menu_short_name";s:21:"修改参数模板值";s:8:"menu_key";s:26:"shop_goods_attr_value_edit";s:10:"parent_key";s:20:"shop_goods_attr_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/attr/attr_value";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:341;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:653;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品恢复";s:15:"menu_short_name";s:12:"商品恢复";s:8:"menu_key";s:18:"shop_goods_recycle";s:10:"parent_key";s:23:"shop_goods_recycle_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:18:"shop/goods/recycle";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:342;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:654;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品添加";s:15:"menu_short_name";s:12:"商品添加";s:8:"menu_key";s:22:"shop_goods_virtual_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:18:"shop/goods/virtual";s:11:"router_path";s:23:"shop/goods/virtual_edit";s:9:"view_path";s:18:"goods/virtual_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:343;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:655;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品编辑";s:15:"menu_short_name";s:12:"商品编辑";s:8:"menu_key";s:23:"shop_goods_virtual_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/goods/virtual/";s:11:"router_path";s:23:"shop/goods/virtual_edit";s:9:"view_path";s:18:"goods/virtual_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:344;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:656;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品删除";s:15:"menu_short_name";s:12:"商品删除";s:8:"menu_key";s:17:"shop_goods_delete";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/delete";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:345;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:657;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"商品排序号修改";s:15:"menu_short_name";s:21:"商品排序号修改";s:8:"menu_key";s:20:"shop_goods_sort_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:346;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:658;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:27:"商品上下架状态修改";s:15:"menu_short_name";s:27:"商品上下架状态修改";s:8:"menu_key";s:22:"shop_goods_status_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/status";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:347;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:659;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品复制";s:15:"menu_short_name";s:12:"商品复制";s:8:"menu_key";s:15:"shop_goods_copy";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/goods/copy/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:348;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:660;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:30:"商品规格列表库存编辑";s:15:"menu_short_name";s:30:"商品规格列表库存编辑";s:8:"menu_key";s:25:"shop_goods_sku_stock_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/sku/stock";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:349;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:661;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:30:"商品规格列表价格编辑";s:15:"menu_short_name";s:30:"商品规格列表价格编辑";s:8:"menu_key";s:25:"shop_goods_sku_price_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/sku/price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:350;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:662;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:36:"商品规格列表会员价格编辑";s:15:"menu_short_name";s:36:"商品规格列表会员价格编辑";s:8:"menu_key";s:32:"shop_goods_sku_member_price_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/sku/member_price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:351;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:663;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除参数模板";s:15:"menu_short_name";s:18:"删除参数模板";s:8:"menu_key";s:22:"shop_goods_attr_delete";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:352;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:664;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑参数模板";s:15:"menu_short_name";s:18:"编辑参数模板";s:8:"menu_key";s:20:"shop_goods_attr_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/goods/attr/";s:11:"router_path";s:20:"shop/goods/attr_edit";s:9:"view_path";s:15:"goods/attr_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:353;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:665;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加参数模板";s:15:"menu_short_name";s:18:"添加参数模板";s:8:"menu_key";s:19:"shop_goods_attr_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/attr";s:11:"router_path";s:20:"shop/goods/attr_edit";s:9:"view_path";s:15:"goods/attr_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:354;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:666;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品添加";s:15:"menu_short_name";s:12:"商品添加";s:8:"menu_key";s:19:"shop_goods_real_add";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:10:"shop/goods";s:11:"router_path";s:20:"shop/goods/real_edit";s:9:"view_path";s:15:"goods/real_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:355;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:667;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商品编辑";s:15:"menu_short_name";s:12:"商品编辑";s:8:"menu_key";s:20:"shop_goods_real_edit";s:10:"parent_key";s:10:"shop_goods";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:15:"shop/goods/";s:11:"router_path";s:20:"shop/goods/real_edit";s:9:"view_path";s:15:"goods/real_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:356;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:670;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单关闭";s:15:"menu_short_name";s:12:"订单关闭";s:8:"menu_key";s:16:"shop_order_close";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/order/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:357;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:671;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单改价";s:15:"menu_short_name";s:12:"订单改价";s:8:"menu_key";s:21:"shop_order_edit_price";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/order/edit_price";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:358;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:672;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"订单配送修改";s:15:"menu_short_name";s:18:"订单配送修改";s:8:"menu_key";s:24:"shop_order_edit_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/order/edit_delivery";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:359;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:673;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单发货";s:15:"menu_short_name";s:12:"订单发货";s:8:"menu_key";s:19:"shop_order_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/order/delivery";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:360;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:674;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"订单项发货";s:15:"menu_short_name";s:15:"订单项发货";s:8:"menu_key";s:25:"shop_order_goods_delivery";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/order/goods/delivery/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:361;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:675;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"商家留言";s:15:"menu_short_name";s:12:"商家留言";s:8:"menu_key";s:17:"shop_order_remark";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/order/shop_remark";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:362;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:676;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单完成";s:15:"menu_short_name";s:12:"订单完成";s:8:"menu_key";s:17:"shop_order_finish";s:10:"parent_key";s:15:"shop_order_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/order/finish/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:363;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:678;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"退款审核";s:15:"menu_short_name";s:12:"退款审核";s:8:"menu_key";s:23:"shop_order_refund_audit";s:10:"parent_key";s:17:"shop_order_refund";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:41:"shop/order/refund/audit/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:364;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:679;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"退款收货审核";s:15:"menu_short_name";s:18:"退款收货审核";s:8:"menu_key";s:26:"shop_order_refund_delivery";s:10:"parent_key";s:17:"shop_order_refund";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:44:"shop/order/refund/delivery/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:365;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:682;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:6:"开票";s:15:"menu_short_name";s:6:"开票";s:8:"menu_key";s:17:"shop_invoice_open";s:10:"parent_key";s:12:"shop_invoice";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/invoice/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:366;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:684;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价删除";s:15:"menu_short_name";s:18:"商品评价删除";s:8:"menu_key";s:26:"shop_goods_evaluate_delete";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/goods/evaluate/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:367;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:685;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价回复";s:15:"menu_short_name";s:18:"商品评价回复";s:8:"menu_key";s:25:"shop_goods_evaluate_reply";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/goods/evaluate/reply/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:368;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:686;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价通过";s:15:"menu_short_name";s:18:"商品评价通过";s:8:"menu_key";s:25:"shop_goods_evaluate_adopt";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/goods/evaluate/adopt/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:369;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:687;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价拒绝";s:15:"menu_short_name";s:18:"商品评价拒绝";s:8:"menu_key";s:26:"shop_goods_evaluate_refuse";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:31:"shop/goods/evaluate/refuse/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:370;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:688;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"商品评价置顶";s:15:"menu_short_name";s:18:"商品评价置顶";s:8:"menu_key";s:27:"shop_goods_evaluate_topping";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/goods/evaluate/topping/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:371;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:689;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"商品评价取消置顶";s:15:"menu_short_name";s:24:"商品评价取消置顶";s:8:"menu_key";s:34:"shop_goods_evaluate_cancel_topping";s:10:"parent_key";s:19:"shop_goods_evaluate";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:39:"shop/goods/evaluate/cancel_topping/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:372;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:691;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"订单设置编辑";s:15:"menu_short_name";s:18:"订单设置编辑";s:8:"menu_key";s:21:"shop_config_order_set";s:10:"parent_key";s:17:"shop_config_order";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/order/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:373;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:693;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"删除商家地址库";s:15:"menu_short_name";s:21:"删除商家地址库";s:8:"menu_key";s:19:"shop_address_delete";s:10:"parent_key";s:12:"shop_address";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shop_address/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:374;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:695;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"配送设置编辑";s:15:"menu_short_name";s:18:"配送设置编辑";s:8:"menu_key";s:24:"shop_config_delivery_set";s:10:"parent_key";s:20:"shop_config_delivery";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/delivery/setConfig";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:375;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:697;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:24:"删除电子面单模板";s:15:"menu_short_name";s:24:"删除电子面单模板";s:8:"menu_key";s:34:"shop_delivery_electronic_sheet_del";s:10:"parent_key";s:30:"shop_delivery_electronic_sheet";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/electronic_sheet";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:376;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:698;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加评价";s:15:"menu_short_name";s:12:"添加评价";s:8:"menu_key";s:23:"shop_goods_evaluate_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/goods/evaluate";s:11:"router_path";s:23:"shop/order/evaluate/add";s:9:"view_path";s:19:"goods/evaluate_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:377;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:699;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:22:"添加/编辑地址库";s:15:"menu_short_name";s:22:"添加/编辑地址库";s:8:"menu_key";s:21:"shop_address_add_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:23:"shop/order/address/edit";s:9:"view_path";s:12:"address/edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:378;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:700;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"地址库添加";s:15:"menu_short_name";s:15:"地址库添加";s:8:"menu_key";s:16:"shop_address_add";s:10:"parent_key";s:21:"shop_address_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/shop_address";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:379;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:701;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"地址库编辑";s:15:"menu_short_name";s:15:"地址库编辑";s:8:"menu_key";s:17:"shop_address_edit";s:10:"parent_key";s:21:"shop_address_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shop_address/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:380;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:702;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"物流公司";s:15:"menu_short_name";s:12:"物流公司";s:8:"menu_key";s:28:"shop_config_delivery_company";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:27:"shop/order/delivery/company";s:9:"view_path";s:16:"delivery/company";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:381;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:703;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"物流公司删除";s:15:"menu_short_name";s:18:"物流公司删除";s:8:"menu_key";s:35:"shop_config_delivery_company_delete";s:10:"parent_key";s:28:"shop_config_delivery_company";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/delivery/company/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:382;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:704;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加物流公司";s:15:"menu_short_name";s:18:"添加物流公司";s:8:"menu_key";s:32:"shop_config_delivery_company_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:31:"shop/order/delivery/company_add";s:9:"view_path";s:21:"delivery/company_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:383;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:705;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑物流公司";s:15:"menu_short_name";s:18:"编辑物流公司";s:8:"menu_key";s:33:"shop_config_delivery_company_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/delivery/company";s:11:"router_path";s:32:"shop/order/delivery/company_edit";s:9:"view_path";s:21:"delivery/company_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:384;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:706;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"同城配送";s:15:"menu_short_name";s:12:"同城配送";s:8:"menu_key";s:26:"shop_config_delivery_local";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/delivery/local";s:9:"view_path";s:14:"delivery/local";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:385;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:707;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"同城配送设置";s:15:"menu_short_name";s:18:"同城配送设置";s:8:"menu_key";s:30:"shop_config_delivery_local_set";s:10:"parent_key";s:26:"shop_config_delivery_local";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:10:"shop/local";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:386;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:708;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"运费模版";s:15:"menu_short_name";s:12:"运费模版";s:8:"menu_key";s:38:"shop_config_delivery_shipping_template";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shipping/template";s:11:"router_path";s:28:"shop/order/shipping/template";s:9:"view_path";s:17:"delivery/template";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:387;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:709;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版删除";s:15:"menu_short_name";s:18:"运费模版列表";s:8:"menu_key";s:45:"shop_config_delivery_shipping_template_delete";s:10:"parent_key";s:38:"shop_config_delivery_shipping_template";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/shipping/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:388;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:710;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:25:"运费模版添加/编辑";s:15:"menu_short_name";s:25:"运费模版添加/编辑";s:8:"menu_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:33:"shop/order/shipping/template_edit";s:9:"view_path";s:22:"delivery/template_edit";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:389;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:711;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版添加";s:15:"menu_short_name";s:18:"运费模版添加";s:8:"menu_key";s:42:"shop_config_delivery_shipping_template_add";s:10:"parent_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/shipping/template";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:390;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:712;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"运费模版编辑";s:15:"menu_short_name";s:18:"运费模版编辑";s:8:"menu_key";s:43:"shop_config_delivery_shipping_template_edit";s:10:"parent_key";s:47:"shop_config_delivery_shipping_template_add_edit";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/shipping/template/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:391;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:713;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"配送员";s:15:"menu_short_name";s:9:"配送员";s:8:"menu_key";s:26:"shop_config_delivery_staff";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:25:"shop/order/delivery/staff";s:9:"view_path";s:14:"delivery/staff";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:392;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:714;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员添加";s:15:"menu_short_name";s:15:"配送员添加";s:8:"menu_key";s:30:"shop_config_delivery_staff_add";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/staff";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:393;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:715;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员编辑";s:15:"menu_short_name";s:15:"配送员编辑";s:8:"menu_key";s:31:"shop_config_delivery_staff_edit";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/staff/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:394;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:716;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"配送员删除";s:15:"menu_short_name";s:15:"配送员删除";s:8:"menu_key";s:33:"shop_config_delivery_staff_delete";s:10:"parent_key";s:26:"shop_config_delivery_staff";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/staff/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:395;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:717;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"订单详情";s:15:"menu_short_name";s:12:"订单详情";s:8:"menu_key";s:17:"shop_order_detail";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinguanli";s:7:"api_url";s:22:"shop/order/detail/";s:11:"router_path";s:17:"shop/order/detail";s:9:"view_path";s:12:"order/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:396;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:718;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"物流跟踪";s:15:"menu_short_name";s:12:"物流跟踪";s:8:"menu_key";s:27:"shop_config_delivery_search";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:25:"iconfont iconwuliugenzong";s:7:"api_url";s:0:"";s:11:"router_path";s:26:"shop/order/delivery/search";s:9:"view_path";s:15:"delivery/search";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:397;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:719;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"物流跟踪设置";s:15:"menu_short_name";s:18:"物流跟踪设置";s:8:"menu_key";s:31:"shop_config_delivery_search_set";s:10:"parent_key";s:27:"shop_config_delivery_search";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/delivery/search";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:398;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:720;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:9:"自提点";s:15:"menu_short_name";s:9:"自提点";s:8:"menu_key";s:31:"shop_config_shop_delivery_store";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/store";s:11:"router_path";s:25:"shop/order/delivery/store";s:9:"view_path";s:14:"delivery/store";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:399;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:721;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点删除";s:15:"menu_short_name";s:15:"自提点删除";s:8:"menu_key";s:33:"shop_config_delete_delivery_store";s:10:"parent_key";s:31:"shop_config_shop_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/store/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:400;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:722;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:22:"自提点添加/编辑";s:15:"menu_short_name";s:22:"自提点添加/编辑";s:8:"menu_key";s:35:"shop_config_add_edit_delivery_store";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:30:"shop/order/delivery/store/edit";s:9:"view_path";s:19:"delivery/store_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:401;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:723;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点添加";s:15:"menu_short_name";s:15:"自提点添加";s:8:"menu_key";s:30:"shop_config_add_delivery_store";s:10:"parent_key";s:35:"shop_config_add_edit_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/delivery/store";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:402;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:724;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"自提点编辑";s:15:"menu_short_name";s:15:"自提点编辑";s:8:"menu_key";s:31:"shop_config_edit_delivery_store";s:10:"parent_key";s:35:"shop_config_add_edit_delivery_store";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:24:"shop/delivery/store/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:403;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:725;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"维权详情";s:15:"menu_short_name";s:12:"维权详情";s:8:"menu_key";s:24:"shop_order_refund_detail";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:27:"iconfont iconshangpinguanli";s:7:"api_url";s:0:"";s:11:"router_path";s:24:"shop/order/refund/detail";s:9:"view_path";s:19:"order/refund_detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:404;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:726;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"电子面单设置";s:15:"menu_short_name";s:18:"电子面单设置";s:8:"menu_key";s:37:"shop_delivery_electronic_sheet_config";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:21:"iconfont icondiscount";s:7:"api_url";s:28:"shop/electronic_sheet/config";s:11:"router_path";s:37:"shop/delivery/electronic_sheet/config";s:9:"view_path";s:32:"delivery/electronic_sheet_config";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:405;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:727;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加模板";s:15:"menu_short_name";s:24:"添加电子面单模板";s:8:"menu_key";s:34:"shop_delivery_electronic_sheet_add";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:21:"shop/electronic_sheet";s:11:"router_path";s:34:"shop/delivery/electronic_sheet_add";s:9:"view_path";s:30:"delivery/electronic_sheet_edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:406;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:728;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑模板";s:15:"menu_short_name";s:24:"编辑电子面单模板";s:8:"menu_key";s:35:"shop_delivery_electronic_sheet_edit";s:10:"parent_key";s:10:"shop_order";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:26:"shop/electronic_sheet/";s:11:"router_path";s:35:"shop/delivery/electronic_sheet_edit";s:9:"view_path";s:30:"delivery/electronic_sheet_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:407;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:735;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券删除";s:15:"menu_short_name";s:15:"优惠券删除";s:8:"menu_key";s:24:"shop_goods_coupon_delete";s:10:"parent_key";s:22:"shop_goods_coupon_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:22:"shop/goods/coupon/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:408;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:736;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"优惠券设置状态";s:15:"menu_short_name";s:21:"优惠券设置状态";s:8:"menu_key";s:28:"shop_goods_coupon_set_status";s:10:"parent_key";s:22:"shop_goods_coupon_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:36:"shop/goods/coupon/setstatus/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:409;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:737;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券添加";s:15:"menu_short_name";s:15:"优惠券添加";s:8:"menu_key";s:21:"shop_goods_coupon_add";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/goods/coupon";s:11:"router_path";s:25:"shop/marketing/coupon/add";s:9:"view_path";s:20:"marketing/coupon/add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:410;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:738;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"优惠券编辑";s:15:"menu_short_name";s:15:"优惠券编辑";s:8:"menu_key";s:22:"shop_goods_coupon_edit";s:10:"parent_key";s:4:"shop";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/goods/coupon/edit/";s:11:"router_path";s:26:"shop/marketing/coupon/edit";s:9:"view_path";s:21:"marketing/coupon/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:411;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:739;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"优惠券领取记录";s:15:"menu_short_name";s:21:"优惠券领取记录";s:8:"menu_key";s:28:"shop_goods_coupon_collection";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/goods/coupon/records";s:11:"router_path";s:32:"shop/marketing/coupon/collection";s:9:"view_path";s:27:"marketing/coupon/collection";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:412;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:741;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动关闭";s:15:"menu_short_name";s:12:"活动关闭";s:8:"menu_key";s:24:"shop_goods_manjian_close";s:10:"parent_key";s:18:"shop_goods_manjian";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:23:"shop/manjian/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:413;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:742;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动删除";s:15:"menu_short_name";s:12:"活动删除";s:8:"menu_key";s:25:"shop_goods_manjian_delete";s:10:"parent_key";s:18:"shop_goods_manjian";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:414;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:743;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动详情";s:15:"menu_short_name";s:12:"活动详情";s:8:"menu_key";s:25:"shop_goods_manjian_detail";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:29:"shop/marketing/manjian/detail";s:9:"view_path";s:24:"marketing/manjian/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:415;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:744;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"编辑满减送活动";s:15:"menu_short_name";s:21:"编辑满减送活动";s:8:"menu_key";s:23:"shop_goods_manjian_edit";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:17:"shop/manjian/";s:11:"router_path";s:27:"shop/marketing/manjian/edit";s:9:"view_path";s:22:"marketing/manjian/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:416;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:745;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"添加满减送活动";s:15:"menu_short_name";s:21:"添加满减送活动";s:8:"menu_key";s:22:"shop_goods_manjian_add";s:10:"parent_key";s:6:"active";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:12:"shop/manjian";s:11:"router_path";s:26:"shop/marketing/manjian/add";s:9:"view_path";s:22:"marketing/manjian/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:417;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:748;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动关闭";s:15:"menu_short_name";s:12:"活动关闭";s:8:"menu_key";s:25:"shop_goods_discount_close";s:10:"parent_key";s:24:"shop_goods_discount_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:38:"shop/active/discount/close/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:418;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:749;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动删除";s:15:"menu_short_name";s:12:"活动删除";s:8:"menu_key";s:26:"shop_goods_discount_delete";s:10:"parent_key";s:24:"shop_goods_discount_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:419;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:751;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"活动设置编辑";s:15:"menu_short_name";s:18:"活动设置编辑";s:8:"menu_key";s:30:"shop_goods_discount_config_set";s:10:"parent_key";s:26:"shop_goods_discount_config";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:27:"shop/active/discount/config";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:420;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:752;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"活动详情";s:15:"menu_short_name";s:12:"活动详情";s:8:"menu_key";s:26:"shop_goods_discount_detail";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:30:"shop/marketing/discount/detail";s:9:"view_path";s:25:"marketing/discount/detail";s:7:"methods";s:3:"get";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:421;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:753;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"编辑限时折扣";s:15:"menu_short_name";s:18:"编辑限时折扣";s:8:"menu_key";s:24:"shop_goods_discount_edit";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/discount/";s:11:"router_path";s:28:"shop/marketing/discount/edit";s:9:"view_path";s:23:"marketing/discount/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:422;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:754;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"添加限时折扣";s:15:"menu_short_name";s:18:"添加限时折扣";s:8:"menu_key";s:23:"shop_goods_discount_add";s:10:"parent_key";s:19:"shop_goods_discount";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/active/discount";s:11:"router_path";s:27:"shop/marketing/discount/add";s:9:"view_path";s:22:"marketing/discount/add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:423;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:757;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"修改上下架状态";s:15:"menu_short_name";s:21:"修改上下架状态";s:8:"menu_key";s:28:"shop_point_goods_status_edit";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:32:"shop/active/exchange/status/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:424;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:758;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"删除积分商品";s:15:"menu_short_name";s:18:"删除积分商品";s:8:"menu_key";s:23:"shop_point_goods_delete";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/active/exchange/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:425;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:759;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:15:"修改排序号";s:15:"menu_short_name";s:15:"修改排序号";s:8:"menu_key";s:26:"shop_point_goods_sort_edit";s:10:"parent_key";s:21:"shop_point_goods_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:30:"shop/active/exchange/sort/";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:426;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:761;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"添加商品";s:15:"menu_short_name";s:12:"添加商品";s:8:"menu_key";s:20:"shop_point_goods_add";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:20:"shop/active/exchange";s:11:"router_path";s:33:"shop/marketing/exchange/goods_add";s:9:"view_path";s:28:"marketing/exchange/goods_add";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:427;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:762;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"编辑商品";s:15:"menu_short_name";s:12:"编辑商品";s:8:"menu_key";s:21:"shop_point_goods_edit";s:10:"parent_key";s:25:"shop_goods_point_exchange";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:25:"shop/active/exchange/";s:11:"router_path";s:34:"shop/marketing/exchange/goods_edit";s:9:"view_path";s:29:"marketing/exchange/goods_edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:428;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:769;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"删除榜单";s:15:"menu_short_name";s:12:"删除榜单";s:8:"menu_key";s:22:"shop_goods_rank_delete";s:10:"parent_key";s:20:"shop_goods_rank_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:14:"shop/good/rank";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:6:"delete";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:429;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"按钮";s:2:"id";i:770;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:21:"榜单排序号修改";s:15:"menu_short_name";s:21:"榜单排序号修改";s:8:"menu_key";s:25:"shop_goods_rank_sort_edit";s:10:"parent_key";s:20:"shop_goods_rank_list";s:9:"menu_type";i:2;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/good/rank/sort";s:11:"router_path";s:0:"";s:9:"view_path";s:0:"";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:430;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:771;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单添加";s:15:"menu_short_name";s:12:"榜单添加";s:8:"menu_key";s:19:"shop_goods_rank_add";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:14:"shop/good/rank";s:11:"router_path";s:30:"shop/marketing/goods_rank/edit";s:9:"view_path";s:25:"marketing/goods_rank/edit";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:431;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:772;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"榜单编辑";s:15:"menu_short_name";s:12:"榜单编辑";s:8:"menu_key";s:20:"shop_goods_rank_edit";s:10:"parent_key";s:15:"shop_goods_rank";s:9:"menu_type";i:1;s:4:"icon";s:0:"";s:7:"api_url";s:19:"shop/good/rank/";s:11:"router_path";s:30:"shop/marketing/goods_rank/edit";s:9:"view_path";s:25:"marketing/goods_rank/edit";s:7:"methods";s:3:"put";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";i:0;s:11:"delete_time";i:0;s:5:"addon";s:4:"shop";s:6:"source";s:6:"system";s:9:"menu_attr";s:0:"";}i:432;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:970;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"作业管理";s:15:"menu_short_name";s:12:"作业管理";s:8:"menu_key";s:45:"zhjw_zhjw_assignments_assignments_assignments";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:11:"assignments";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-06 15:05:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:433;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:980;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"排班管理";s:15:"menu_short_name";s:12:"排班管理";s:8:"menu_key";s:39:"zhjw_zhjw_schedules_schedules_schedules";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:32:"nc-iconfont nc-icon-daifahuoV6mm";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"schedules";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-06 15:10:47";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:434;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1057;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"班级管理";s:15:"menu_short_name";s:12:"班级管理";s:8:"menu_key";s:28:"zhjw_classes_classes_classes";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:7:"classes";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-19 10:32:31";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:435;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1062;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"意见反馈";s:15:"menu_short_name";s:12:"意见反馈";s:8:"menu_key";s:31:"zhjw_feedback_feedback_feedback";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:8:"feedback";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-03-19 14:10:34";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:436;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1087;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"企业信息";s:15:"menu_short_name";s:12:"企业信息";s:8:"menu_key";s:73:"zhjw_enterprise_information_enterprise_information_enterprise_information";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:22:"enterprise_information";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-02 10:37:55";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:437;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1112;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学籍维护";s:15:"menu_short_name";s:12:"学籍维护";s:8:"menu_key";s:34:"zhjw_zhjw_roll_zhjw_roll_zhjw_roll";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:9:"zhjw_roll";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 12:45:32";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:438;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:0:"";s:2:"id";i:1142;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"学员体测";s:15:"menu_short_name";s:12:"学员体测";s:8:"menu_key";s:67:"zhjw_zhjw_students_survey_zhjw_students_survey_zhjw_students_survey";s:10:"parent_key";s:12:"jiaowuguanli";s:9:"menu_type";i:0;s:4:"icon";s:0:"";s:7:"api_url";s:0:"";s:11:"router_path";s:20:"zhjw_students_survey";s:9:"view_path";s:0:"";s:7:"methods";s:0:"";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:0;s:11:"create_time";s:19:"2025-04-07 13:41:51";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:9:"generator";s:9:"menu_attr";s:0:"";}i:439;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1151;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:18:"市场人员管理";s:15:"menu_short_name";s:18:"市场人员管理";s:8:"menu_key";s:5:"empty";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:37:"nc-iconfont nc-icon-gerenzhongxinV6xx";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"empty";s:9:"view_path";s:5:"empty";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:23:16";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:440;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1152;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩管理";s:15:"menu_short_name";s:12:"业绩管理";s:8:"menu_key";s:4:"yjgl";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:5:"empty";s:9:"view_path";s:5:"empty";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:24:17";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:441;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1153;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩配置";s:15:"menu_short_name";s:12:"业绩配置";s:8:"menu_key";s:4:"yjpz";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-bianjiV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjpz";s:9:"view_path";s:4:"yjpz";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:25:19";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:442;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1154;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩分配";s:15:"menu_short_name";s:12:"业绩分配";s:8:"menu_key";s:4:"yjfp";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:36:"nc-iconfont nc-icon-sousuo-duanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjfp";s:9:"view_path";s:4:"yjfp";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:25:48";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:443;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1155;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"业绩提成";s:15:"menu_short_name";s:12:"业绩提成";s:8:"menu_key";s:4:"yjtc";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"yjtc";s:9:"view_path";s:4:"yjtc";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:26:39";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:444;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1156;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:4:"sjtj";s:10:"parent_key";s:4:"sjtj";s:9:"menu_type";i:1;s:4:"icon";s:31:"nc-iconfont nc-icon-shouyeV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"sjtj";s:9:"view_path";s:4:"sjtj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:27:11";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:445;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1157;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"数据统计";s:15:"menu_short_name";s:12:"数据统计";s:8:"menu_key";s:6:"scsjtj";s:10:"parent_key";s:13:"shichangmodel";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-wendangV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:6:"scsjtj";s:9:"view_path";s:6:"scsjtj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:29:24";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}i:446;a:22:{s:11:"status_name";s:6:"正常";s:14:"menu_type_name";s:6:"菜单";s:2:"id";i:1159;s:8:"app_type";s:5:"admin";s:9:"menu_name";s:12:"销售业绩";s:15:"menu_short_name";s:12:"销售业绩";s:8:"menu_key";s:4:"xsyj";s:10:"parent_key";s:27:"zhjw_zhjw_sales_sales_sales";s:9:"menu_type";i:1;s:4:"icon";s:32:"nc-iconfont nc-icon-tuikuanV6xx1";s:7:"api_url";s:0:"";s:11:"router_path";s:4:"xsyj";s:9:"view_path";s:4:"xsyj";s:7:"methods";s:4:"post";s:4:"sort";i:0;s:6:"status";i:1;s:7:"is_show";i:1;s:11:"create_time";s:19:"2025-05-13 16:32:53";s:11:"delete_time";i:0;s:5:"addon";s:0:"";s:6:"source";s:6:"create";s:9:"menu_attr";s:0:"";}} \ No newline at end of file diff --git a/niucloud/runtime/cache/60/20f2824b87d39008be5a28cef5ef03.php b/niucloud/runtime/cache/60/20f2824b87d39008be5a28cef5ef03.php deleted file mode 100644 index 121739ce..00000000 --- a/niucloud/runtime/cache/60/20f2824b87d39008be5a28cef5ef03.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:11:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/47/0f6e29f334d3244ee0749eb9b1a151.php";i:1;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/01/c8e2ef1c2c504601d752e81c5f8f57.php";i:2;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/04/a77b15025b2c34a79ecfe786681739.php";i:3;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/f4/2498c1c8e75342476a682f6f5bbba6.php";i:4;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/95/228e6be1c6483f594d6d736cba9335.php";i:5;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/f4/073ed8013d62bb2e0f768418925e4d.php";i:6;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/c0/2ea470914e2a1b4422c74fb53b3fb7.php";i:7;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/c8/a5c3cd9f43d503a892ec0eaeb9ab08.php";i:8;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/8d/edc20f770c6500c52ce13d6f306b10.php";i:9;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/f0/8f735f0ec7f9eccc3e70aa516d941d.php";i:10;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/63/223550b09d74c7a7f49224de60bf39.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/62/83158d08e33a81121ab7798a5ab837.php b/niucloud/runtime/cache/62/83158d08e33a81121ab7798a5ab837.php deleted file mode 100644 index fd9b9c7d..00000000 --- a/niucloud/runtime/cache/62/83158d08e33a81121ab7798a5ab837.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"7adolb3be3dfg93m";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:244;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/63/223550b09d74c7a7f49224de60bf39.php b/niucloud/runtime/cache/63/223550b09d74c7a7f49224de60bf39.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/63/223550b09d74c7a7f49224de60bf39.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/66/9b6e0e682e08869e847f87c9b1c155.php b/niucloud/runtime/cache/66/9b6e0e682e08869e847f87c9b1c155.php deleted file mode 100644 index 7bc06082..00000000 --- a/niucloud/runtime/cache/66/9b6e0e682e08869e847f87c9b1c155.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"q70goxi4h1ok01fp";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:195;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/68/5b0a0eabec35dbf4056e171d5ccfc3.php b/niucloud/runtime/cache/68/5b0a0eabec35dbf4056e171d5ccfc3.php deleted file mode 100644 index 416e211c..00000000 --- a/niucloud/runtime/cache/68/5b0a0eabec35dbf4056e171d5ccfc3.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"q3gp3ysh8uayxtoo";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:263;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/6c/7d93a3611783268caaaa24629cfdb3.php b/niucloud/runtime/cache/6c/7d93a3611783268caaaa24629cfdb3.php deleted file mode 100644 index a021f8f3..00000000 --- a/niucloud/runtime/cache/6c/7d93a3611783268caaaa24629cfdb3.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:8:"username";s:5:"admin";s:8:"password";s:6:"123123";} \ No newline at end of file diff --git a/niucloud/runtime/cache/7e/a633578462c9bc9f474ad990ba553d.php b/niucloud/runtime/cache/7e/a633578462c9bc9f474ad990ba553d.php deleted file mode 100644 index 07997d05..00000000 --- a/niucloud/runtime/cache/7e/a633578462c9bc9f474ad990ba553d.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/11/96761b4a84f0e988872166216d02cd.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/85/dff97d885b41077c47958d953c2dbd.php b/niucloud/runtime/cache/85/dff97d885b41077c47958d953c2dbd.php deleted file mode 100644 index 58110812..00000000 --- a/niucloud/runtime/cache/85/dff97d885b41077c47958d953c2dbd.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:0:{} \ No newline at end of file diff --git a/niucloud/runtime/cache/8d/4b55ce338f9b3a100a33ac8e8243e8.php b/niucloud/runtime/cache/8d/4b55ce338f9b3a100a33ac8e8243e8.php deleted file mode 100644 index ff7b18d4..00000000 --- a/niucloud/runtime/cache/8d/4b55ce338f9b3a100a33ac8e8243e8.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:5:{s:3:"get";a:78:{i:0;s:20:"member/account/point";i:1;s:11:"addon/local";i:2;s:24:"member/config/point_rule";i:3;s:13:"member/member";i:4;s:17:"member/level/";i:5;s:15:"finance/account";i:6;s:17:"channel/pc/config";i:7;s:4:"user";i:8;s:18:"sys/config/website";i:9;s:17:"pay/channel/lists";i:10;s:19:"notice/notice/";i:11;s:28:"notice/notice/sms/";i:12;s:19:"notice/sms/log/";i:13;s:13:"sys/agreement";i:14;s:19:"sys/agreement/";i:15;s:26:"sys/storage/";i:16;s:19:"generator/generator";i:17;s:8:"sys/role";i:18;s:14:"sys/config/map";i:19;s:7:"diy/diy";i:20;s:10:"pay/detail";i:21;s:7:"sys/log";i:22;s:11:"sys/storage";i:23;s:10:"sys/export";i:24;s:7:"diy/diy";i:25;s:15:"member/cash_out";i:26;s:10:"diy/bottom";i:27;s:10:"pay/refund";i:28;s:16:"printer/template";i:29;s:14:"sys/attachment";i:30;s:22:"pay/refund/";i:31;s:6:"poster";i:32;s:18:"member/member/";i:33;s:20:"sys/config/copyright";i:34;s:12:"pay/transfer";i:35;s:14:"dict/post/post";i:36;s:12:"member/label";i:37;s:12:"member/level";i:38;s:20:"member/config/member";i:39;s:12:"weapp/access";i:40;s:19:"member/config/login";i:41;s:22:"member/account/balance";i:42;s:13:"aliapp/access";i:43;s:25:"member/account/commission";i:44;s:22:"member/config/cash_out";i:45;s:12:"member/level";i:46;s:10:"addon/list";i:47;s:25:"member/config/growth_rule";i:48;s:21:"member/account/growth";i:49;s:15:"verify/verifier";i:50;s:20:"verify/verify/record";i:51;s:27:"verify/verify/";i:52;s:8:"sys/menu";i:53;s:18:"member/sign/config";i:54;s:11:"member/sign";i:55;s:7:"printer";i:56;s:16:"sys/config/login";i:57;s:26:"sys/config/developer_token";i:58;s:17:"notice/notice/sms";i:59;s:14:"notice/sms/log";i:60;s:13:"notice/notice";i:61;s:17:"notice/notice/log";i:62;s:10:"user/";i:63;s:16:"diy_form/records";i:64;s:20:"member/member/export";i:65;s:13:"wechat/course";i:66;s:13:"wechat/config";i:67;s:26:"wechat/reply/keywords/";i:68;s:11:"wechat/menu";i:69;s:15:"wechat/template";i:70;s:12:"weapp/course";i:71;s:12:"weapp/config";i:72;s:14:"weapp/template";i:73;s:10:"weapp/code";i:74;s:13:"aliapp/config";i:75;s:13:"aliapp/course";i:76;s:8:"diy_form";i:77;s:19:"sys/menu/";}s:4:"post";a:46:{i:0;s:15:"diy/bottom/edit";i:1;s:23:"sys/attachment/category";i:2;s:25:"member/config/growth_rule";i:3;s:24:"member/config/point_rule";i:4;s:24:"pay/refund/transfer/";i:5;s:15:"verify/verifier";i:6;s:13:"weapp/version";i:7;s:4:"user";i:8;s:20:"member/config/member";i:9;s:19:"member/config/login";i:10;s:32:"pay/channel/set//";i:11;s:24:"notice/notice/editstatus";i:12;s:18:"notice/notice/edit";i:13;s:28:"notice/notice/sms/";i:14;s:21:"addon/install/";i:15;s:23:"addon/uninstall/";i:16;s:26:"addon/cloudinstall/";i:17;s:22:"addon/download/";i:18;s:14:"niucloud/build";i:19;s:15:"upgrade/";i:20;s:31:"addon/addon_develop/build/";i:21;s:19:"generator/generator";i:22;s:18:"generator/download";i:23;s:25:"addon/addon_develop/";i:24;s:7:"upgrade";i:25;s:17:"niucloud/authinfo";i:26;s:26:"sys/config/developer_token";i:27;s:12:"pay/transfer";i:28;s:22:"member/config/cash_out";i:29;s:4:"dict";i:30;s:12:"sys/schedule";i:31;s:7:"web/nav";i:32;s:7:"web/adv";i:33;s:17:"web/friendly_link";i:34;s:8:"sys/role";i:35;s:8:"sys/menu";i:36;s:7:"diy/diy";i:37;s:10:"diy/bottom";i:38;s:13:"member/member";i:39;s:20:"member/account/point";i:40;s:22:"member/account/balance";i:41;s:12:"member/label";i:42;s:12:"member/level";i:43;s:26:"wechat/reply/keywords/";i:44;s:7:"printer";i:45;s:16:"printer/template";}s:3:"put";a:47:{i:0;s:7:"diy/use";i:1;s:13:"diy/diy/share";i:2;s:24:"sys/attachment/batchmove";i:3;s:28:"sys/attachment/category/";i:4;s:35:"member/cash_out/audit//";i:5;s:29:"member/cash_out/transfer/";i:6;s:18:"member/sign/config";i:7;s:17:"channel/pc/config";i:8;s:17:"channel/h5/config";i:9;s:13:"wechat/config";i:10;s:20:"wechat/reply/default";i:11;s:22:"wechat/reply/subscribe";i:12;s:11:"wechat/menu";i:13;s:20:"wechat/template/sync";i:14;s:12:"weapp/config";i:15;s:19:"weapp/template/sync";i:16;s:13:"aliapp/config";i:17;s:10:"user/";i:18;s:18:"user//";i:19;s:15:"user/lock/";i:20;s:17:"user/unlock/";i:21;s:18:"sys/config/website";i:22;s:20:"sys/config/copyright";i:23;s:16:"sys/config/login";i:24;s:19:"sys/agreement/";i:25;s:14:"sys/config/map";i:26;s:26:"sys/storage/";i:27;s:14:"diy_form/share";i:28;s:24:"generator/generator/";i:29;s:25:"addon/addon_develop/";i:30;s:17:"channel/h5/config";i:31;s:9:"dict/";i:32;s:17:"sys/schedule/";i:33;s:27:"schedule/modify/status/";i:34;s:12:"web/nav/";i:35;s:12:"web/adv/";i:36;s:22:"web/friendly_link/";i:37;s:18:"sys/role/";i:38;s:19:"sys/menu/";i:39;s:11:"poster/";i:40;s:33:"member/modify//";i:41;s:17:"member/label/";i:42;s:17:"member/level/";i:43;s:26:"wechat/reply/keywords/";i:44;s:12:"printer/";i:45;s:21:"printer/template/";i:46;s:12:"diy/diy/";}s:6:"delete";a:19:{i:0;s:18:"sys/attachment/del";i:1;s:23:"sys/attachment/category";i:2;s:28:"sys/attachment/category/";i:3;s:20:"verify/verifier/";i:4;s:12:"printer/";i:5;s:21:"printer/template/";i:6;s:15:"sys/export/";i:7;s:25:"addon/addon_develop/";i:8;s:24:"generator/generator/";i:9;s:9:"dict/";i:10;s:12:"web/nav/";i:11;s:12:"web/adv/";i:12;s:22:"web/friendly_link/";i:13;s:18:"sys/role/";i:14;s:8:"sys/menu";i:15;s:17:"sys/schedule/";i:16;s:17:"member/label/";i:17;s:17:"member/level/";i:18;s:26:"wechat/reply/keywords/";}s:0:"";a:2:{i:0;s:17:"sys/schedule/list";i:1;s:21:"sys/schedule/log/list";}} \ No newline at end of file diff --git a/niucloud/runtime/cache/8d/edc20f770c6500c52ce13d6f306b10.php b/niucloud/runtime/cache/8d/edc20f770c6500c52ce13d6f306b10.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/8d/edc20f770c6500c52ce13d6f306b10.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/8d/fdacbfbb7ae58ba988054e909e2307.php b/niucloud/runtime/cache/8d/fdacbfbb7ae58ba988054e909e2307.php deleted file mode 100644 index e50c2fb7..00000000 --- a/niucloud/runtime/cache/8d/fdacbfbb7ae58ba988054e909e2307.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:6:{i:0;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTM0MTcsIm5iZiI6MTc0NzE5MzQxNywiZXhwIjoxNzQ3Nzk4MjE3LCJqdGkiOiIxX2FkbWluIn0.3Jv4XN3QLngUh6gOMlk9NJqX5XSjQ-Ys-SeAVTEm9fA";i:1;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTM0MzcsIm5iZiI6MTc0NzE5MzQzNywiZXhwIjoxNzQ3Nzk4MjM3LCJqdGkiOiIxX2FkbWluIn0.nWDtG3Ckln2oVF14IFn_8dCWsOWRwkhRZRzzecpOtXk";i:2;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTM1OTcsIm5iZiI6MTc0NzE5MzU5NywiZXhwIjoxNzQ3Nzk4Mzk3LCJqdGkiOiIxX2FkbWluIn0.KVNyHg7sNFhdAIdTXDvOM133kzfJqPATdQ5N42DLw7k";i:3;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTM3ODksIm5iZiI6MTc0NzE5Mzc4OSwiZXhwIjoxNzQ3Nzk4NTg5LCJqdGkiOiIxX2FkbWluIn0.Kw1Ovhz6Ck4sfkvGDbY8BGPJu_VjbDpY0q5q8WFvGIo";i:4;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTUwMTIsIm5iZiI6MTc0NzE5NTAxMiwiZXhwIjoxNzQ3Nzk5ODEyLCJqdGkiOiIxX2FkbWluIn0.16YcP5javxVsQqkF9qZrSExZiXrkHzQ5QaUWRTE3p-o";i:5;s:264:"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjEsInVzZXJuYW1lIjoiYWRtaW4iLCJpc3MiOiJ6aC5obmhidHkuY24iLCJhdWQiOiJ6aC5obmhidHkuY24iLCJpYXQiOjE3NDcxOTY3MTcsIm5iZiI6MTc0NzE5NjcxNywiZXhwIjoxNzQ3ODAxNTE3LCJqdGkiOiIxX2FkbWluIn0.nNIIFD2ZMXC5kzo5-Jhnj5ZQCO5WT0LDNTtIjhb8T74";} \ No newline at end of file diff --git a/niucloud/runtime/cache/95/228e6be1c6483f594d6d736cba9335.php b/niucloud/runtime/cache/95/228e6be1c6483f594d6d736cba9335.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/95/228e6be1c6483f594d6d736cba9335.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/9c/253292edecbcd0f01e89da912492d6.php b/niucloud/runtime/cache/9c/253292edecbcd0f01e89da912492d6.php deleted file mode 100644 index d4f60ebc..00000000 --- a/niucloud/runtime/cache/9c/253292edecbcd0f01e89da912492d6.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/3d/23e92f6d905dabf364fea237dcc9b2.php";i:1;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/58/745cacd434435731821012c2ecfd90.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/9f/d2f37875d1da637002182ec566f162.php b/niucloud/runtime/cache/9f/d2f37875d1da637002182ec566f162.php deleted file mode 100644 index 0697442d..00000000 --- a/niucloud/runtime/cache/9f/d2f37875d1da637002182ec566f162.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/8d/fdacbfbb7ae58ba988054e909e2307.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/a2/7df82b18bab8599dc054399c5fe90d.php b/niucloud/runtime/cache/a2/7df82b18bab8599dc054399c5fe90d.php deleted file mode 100644 index 52e61853..00000000 --- a/niucloud/runtime/cache/a2/7df82b18bab8599dc054399c5fe90d.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/a2/c8f1f64a1c2171c95fce93be9d7fad.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/a2/c8f1f64a1c2171c95fce93be9d7fad.php b/niucloud/runtime/cache/a2/c8f1f64a1c2171c95fce93be9d7fad.php deleted file mode 100644 index 9ec64979..00000000 --- a/niucloud/runtime/cache/a2/c8f1f64a1c2171c95fce93be9d7fad.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:14:{s:11:"status_name";s:6:"正常";s:3:"uid";i:1;s:8:"username";s:5:"admin";s:8:"head_img";s:0:"";s:9:"real_name";s:0:"";s:7:"last_ip";s:15:"182.200.111.164";s:9:"last_time";s:19:"2025-05-14 11:30:37";s:11:"create_time";s:0:"";s:11:"login_count";i:2;s:6:"status";i:1;s:11:"delete_time";i:0;s:11:"update_time";s:19:"2025-05-14 11:30:37";s:8:"role_ids";N;s:8:"is_admin";i:1;} \ No newline at end of file diff --git a/niucloud/runtime/cache/a7/0ce721bd2e955bfbc5b87e376dd2d1.php b/niucloud/runtime/cache/a7/0ce721bd2e955bfbc5b87e376dd2d1.php deleted file mode 100644 index 5f7276a2..00000000 --- a/niucloud/runtime/cache/a7/0ce721bd2e955bfbc5b87e376dd2d1.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"rwh4tvfn2guladm7";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:199;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/ab/ca59b2e7c7c27721a7202c411cb9d5.php b/niucloud/runtime/cache/ab/ca59b2e7c7c27721a7202c411cb9d5.php deleted file mode 100644 index 70e45e29..00000000 --- a/niucloud/runtime/cache/ab/ca59b2e7c7c27721a7202c411cb9d5.php +++ /dev/null @@ -1,4 +0,0 @@ - -N; \ No newline at end of file diff --git a/niucloud/runtime/cache/c0/2ea470914e2a1b4422c74fb53b3fb7.php b/niucloud/runtime/cache/c0/2ea470914e2a1b4422c74fb53b3fb7.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/c0/2ea470914e2a1b4422c74fb53b3fb7.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/c8/76052f599e032d1e6bd81033699e54.php b/niucloud/runtime/cache/c8/76052f599e032d1e6bd81033699e54.php deleted file mode 100644 index 78ea1936..00000000 --- a/niucloud/runtime/cache/c8/76052f599e032d1e6bd81033699e54.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"34azy4s5kckw2stg";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:262;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/c8/a5c3cd9f43d503a892ec0eaeb9ab08.php b/niucloud/runtime/cache/c8/a5c3cd9f43d503a892ec0eaeb9ab08.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/c8/a5c3cd9f43d503a892ec0eaeb9ab08.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/c8/d440dc6d9c13fca95c00d1e68c6834.php b/niucloud/runtime/cache/c8/d440dc6d9c13fca95c00d1e68c6834.php deleted file mode 100644 index 574b0d44..00000000 --- a/niucloud/runtime/cache/c8/d440dc6d9c13fca95c00d1e68c6834.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"80ani9vtgil9buf2";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:174;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/da/b1d38e60c1c6106bdf1f5c69571908.php b/niucloud/runtime/cache/da/b1d38e60c1c6106bdf1f5c69571908.php deleted file mode 100644 index fb615a9c..00000000 --- a/niucloud/runtime/cache/da/b1d38e60c1c6106bdf1f5c69571908.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"8lznwh6t1nm4ts19";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:216;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/cache/f0/6e1aa052f9faab5beb49d80df0ea28.php b/niucloud/runtime/cache/f0/6e1aa052f9faab5beb49d80df0ea28.php deleted file mode 100644 index 52e61853..00000000 --- a/niucloud/runtime/cache/f0/6e1aa052f9faab5beb49d80df0ea28.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:1:{i:0;s:83:"/www/wwwroot/hnhbty.cn/niucloud/runtime/cache/a2/c8f1f64a1c2171c95fce93be9d7fad.php";} \ No newline at end of file diff --git a/niucloud/runtime/cache/f0/8f735f0ec7f9eccc3e70aa516d941d.php b/niucloud/runtime/cache/f0/8f735f0ec7f9eccc3e70aa516d941d.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/f0/8f735f0ec7f9eccc3e70aa516d941d.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/f4/073ed8013d62bb2e0f768418925e4d.php b/niucloud/runtime/cache/f4/073ed8013d62bb2e0f768418925e4d.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/f4/073ed8013d62bb2e0f768418925e4d.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/f4/2498c1c8e75342476a682f6f5bbba6.php b/niucloud/runtime/cache/f4/2498c1c8e75342476a682f6f5bbba6.php deleted file mode 100644 index 4c8109fa..00000000 --- a/niucloud/runtime/cache/f4/2498c1c8e75342476a682f6f5bbba6.php +++ /dev/null @@ -1,4 +0,0 @@ - --1 \ No newline at end of file diff --git a/niucloud/runtime/cache/f5/2a0afe891a3f69be86cfb66dfa13a5.php b/niucloud/runtime/cache/f5/2a0afe891a3f69be86cfb66dfa13a5.php deleted file mode 100644 index 12506dc1..00000000 --- a/niucloud/runtime/cache/f5/2a0afe891a3f69be86cfb66dfa13a5.php +++ /dev/null @@ -1,4 +0,0 @@ - -a:2:{s:9:"secretKey";s:16:"13ywro0h0s94nttx";s:5:"point";O:27:"Fastknife\Domain\Vo\PointVo":2:{s:1:"x";i:244;s:1:"y";i:5;}} \ No newline at end of file diff --git a/niucloud/runtime/install/temp/15310768d86a8a75c197aa3ec8e7ba8d.php b/niucloud/runtime/install/temp/15310768d86a8a75c197aa3ec8e7ba8d.php deleted file mode 100644 index a58eafea..00000000 --- a/niucloud/runtime/install/temp/15310768d86a8a75c197aa3ec8e7ba8d.php +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - 安装程序 - <?php echo htmlentities($install_config['website_name']); ?> - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
-
1.许可协议
-
-
-
-
-
-
2.环境检测
-
-
-
-
-
-
3.参数配置
-
-
-
-
-
-
4.代码编译
-
-
-
-
-
-
5.安装完成
-
-
-
-
-
- -
-
-
-
- -
-
-
- -
-
- -

恭喜您!已成功安装

- -

安装过程已结束,您还需要手动编译,才能正常使用!

-

如何手动编译请参考如下链接

- -

建议删除安装目录install后使用

-
-
-
- - -
- - - - - - - diff --git a/niucloud/runtime/install/temp/1dd77fc645775dcc6bfb57b01c766ca9.php b/niucloud/runtime/install/temp/1dd77fc645775dcc6bfb57b01c766ca9.php deleted file mode 100644 index 598ed999..00000000 --- a/niucloud/runtime/install/temp/1dd77fc645775dcc6bfb57b01c766ca9.php +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - 安装程序 - <?php echo htmlentities($install_config['website_name']); ?> - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
-
1.许可协议
-
-
-
-
-
-
2.环境检测
-
-
-
-
-
-
3.参数配置
-
-
-
-
-
-
4.代码编译
-
-
-
-
-
-
5.安装完成
-
-
-
-
-
- -
-
-
-
- - -
-

阅读许可协议

-
- -
-
-
-
- -
-
- -
-
- - -
- - - - - - - diff --git a/niucloud/runtime/install/temp/27fdbc3198762eda61418fbb4d1f39d2.php b/niucloud/runtime/install/temp/27fdbc3198762eda61418fbb4d1f39d2.php deleted file mode 100644 index f3b602bb..00000000 --- a/niucloud/runtime/install/temp/27fdbc3198762eda61418fbb4d1f39d2.php +++ /dev/null @@ -1,491 +0,0 @@ - - - - - - - 安装程序 - <?php echo htmlentities($install_config['website_name']); ?> - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
-
1.许可协议
-
-
-
-
-
-
2.环境检测
-
-
-
-
-
-
3.参数配置
-
-
-
-
-
-
4.代码编译
-
-
-
-
-
-
5.安装完成
-
-
-
-
-
- -
-
-
-
- -
-
-
-
-
-
-
-

数据库设置

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*数据库主机: - - 一般为localhost -
*Mysql端口: - - 一般为3306 -
*数据库用户: - - 默认root -
*数据库密码: -
- -
-
-
*数据库名称: -
-
-
数据表前缀: -
-
数据库编码: - -
-
-
-

网站设置

- - - - - - - - - - - - - - - - - -
*网站标题: - - 网站标题 必填 -
*管理员用户名: - - 管理员用户名 必填 -
*管理员密码: - - 密码 必填 -
*确认密码: - - 确认密码 必填 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- -
-
-
-
- - -
-
- - -
- - - - - - - diff --git a/niucloud/runtime/install/temp/37c2b71043208e21de4607858691acfa.php b/niucloud/runtime/install/temp/37c2b71043208e21de4607858691acfa.php deleted file mode 100644 index 210b7ef6..00000000 --- a/niucloud/runtime/install/temp/37c2b71043208e21de4607858691acfa.php +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - - 安装程序 - <?php echo htmlentities($install_config['website_name']); ?> - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
-
1.许可协议
-
-
-
-
-
-
2.环境检测
-
-
-
-
-
-
3.参数配置
-
-
-
-
-
-
4.代码编译
-
-
-
-
-
-
5.安装完成
-
-
-
-
-
- -
-
-
-
- -
-
-

系统环境检测系统环境要求必须满足下列所有条件,否则系统或系统部份功能将无法使用。

-
- - - - - - - - - - - - $variables_item): ?> - - - - - - -
需开启的变量或函数要求实际状态及建议
php版本php8.0.0及以上 #409effred>
-
-

目录权限检测系统要求必须满足下列所有的目录权限全部可读写的需求才能使用,其它应用目录可安装后在管理后台检测。

-
- - - - - - - $dirs_item): ?> - - - - - - - -
目录名读取权限写入权限
- - - -
-
-
-
- - style="background-color:#777;color:#FFF;" disabled="disabled" onclick="window.location.href = '/install.php/index/index?step=3';" /> -
-
- -
- -
- - -
- - - - - - - diff --git a/niucloud/runtime/install/temp/d4fbb1381b4f97a052b0d5ff623ba1c5.php b/niucloud/runtime/install/temp/d4fbb1381b4f97a052b0d5ff623ba1c5.php deleted file mode 100644 index 5cab9494..00000000 --- a/niucloud/runtime/install/temp/d4fbb1381b4f97a052b0d5ff623ba1c5.php +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - 安装程序 - <?php echo htmlentities($install_config['website_name']); ?> - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- - -
-
-
1.许可协议
-
-
-
-
-
-
2.环境检测
-
-
-
-
-
-
3.参数配置
-
-
-
-
-
-
4.代码编译
-
-
-
-
-
-
5.安装完成
-
-
-
-
-
- -
-
-
-
- -
-
-
-
- > - -
-
-
- - - - -
- - - - - - - diff --git a/niucloud/runtime/temp/9535c8082dc681e56ce4c13af2983b5a.php b/niucloud/runtime/temp/9535c8082dc681e56ce4c13af2983b5a.php deleted file mode 100644 index 05e1bb67..00000000 --- a/niucloud/runtime/temp/9535c8082dc681e56ce4c13af2983b5a.php +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - -
- - - diff --git a/niucloud/runtime/temp/f8f7790b153ebc0da805cfa1acff27e9.php b/niucloud/runtime/temp/f8f7790b153ebc0da805cfa1acff27e9.php deleted file mode 100644 index d6b770c8..00000000 --- a/niucloud/runtime/temp/f8f7790b153ebc0da805cfa1acff27e9.php +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - -
- - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/.gitignore b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/.gitignore deleted file mode 100644 index 8f2077f7..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.idea -vendor/ -composer.lock \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Help on License b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Help on License deleted file mode 100644 index 1e4325ba..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Help on License +++ /dev/null @@ -1,35 +0,0 @@ -This help guides Huawei engineers to add or modify the license announcement -during the development. - -In the case that you add a new file, the text below should be added in the head. - Copyright 2019 Huawei Technologies Co.,Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not use - this file except in compliance with the License. You may obtain a copy of the - License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software distributed - under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - CONDITIONS OF ANY KIND, either express or implied. See the License for the - specific language governing permissions and limitations under the License. - - -In the case that you modify one existing file, the text below should be added after -the exiting license. - Huawei has modified this source file. - - Copyright 2019 Huawei Technologies Co., Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not - use this file except in compliance with the License. You may obtain a copy of - the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - License for the specific language governing permissions and limitations under - the License. diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/LICENSE b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/LICENSE deleted file mode 100644 index 4cd54f94..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2019 Huawei Technologies Co., Ltd. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Notice.MD b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Notice.MD deleted file mode 100644 index 8a894351..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Notice.MD +++ /dev/null @@ -1,39 +0,0 @@ -OPEN SOURCE SOFTWARE NOTICE - -Please note we provide an open source software notice along with this product and/or this product firmware (in the following just “this product”). The open source software licenses are granted by the respective right holders. And the open source licenses prevail all other license information with regard to the respective open source software contained in the product, including but not limited to End User Software Licensing Agreement. This notice is provided on behalf of Huawei Technologies Co. Ltd. and any of its local subsidiaries which may have provided this product to you in your local country. - -Warranty Disclaimer -THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. - -Copyright Notice and License Texts - -Software: guzzle 6.3.3 -Copyright notice: - -Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -License: -MIT License - - - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/CheckoutStream.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/CheckoutStream.php deleted file mode 100644 index 6fbeebbb..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/CheckoutStream.php +++ /dev/null @@ -1,63 +0,0 @@ -stream = $stream; - $this->expectedLength = $expectedLength; - } - - public function getContents() { - $contents = $this->stream->getContents(); - $length = strlen($contents); - if ($this->expectedLength !== null && floatval($length) !== $this->expectedLength) { - $this -> throwObsException($this->expectedLength, $length); - } - return $contents; - } - - public function read($length) { - $string = $this->stream->read($length); - if ($this->expectedLength !== null) { - $this->readedCount += strlen($string); - if ($this->stream->eof()) { - if (floatval($this->readedCount) !== $this->expectedLength) { - $this -> throwObsException($this->expectedLength, $this->readedCount); - } - } - } - return $string; - } - - public function throwObsException($expectedLength, $reaLength) { - $obsException = new ObsException('premature end of Content-Length delimiter message body (expected:' . $expectedLength . '; received:' . $reaLength . ')'); - $obsException->setExceptionType('server'); - throw $obsException; - } -} - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ITransform.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ITransform.php deleted file mode 100644 index a0c369c3..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ITransform.php +++ /dev/null @@ -1,23 +0,0 @@ - - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -namespace Obs\Internal\Common; - -class Model implements \ArrayAccess, \IteratorAggregate, \Countable, ToArrayInterface -{ - protected $data; - - public function __construct(array $data = []) - { - $this->data = $data; - } - - public function count() - { - return count($this->data); - } - - public function getIterator() - { - return new \ArrayIterator($this->data); - } - - public function toArray() - { - return $this->data; - } - - public function clear() - { - $this->data = []; - - return $this; - } - - public function getAll(array $keys = null) - { - return $keys ? array_intersect_key($this->data, array_flip($keys)) : $this->data; - } - - public function get($key) - { - return isset($this->data[$key]) ? $this->data[$key] : null; - } - - public function set($key, $value) - { - $this->data[$key] = $value; - - return $this; - } - - public function add($key, $value) - { - if (!array_key_exists($key, $this->data)) { - $this->data[$key] = $value; - } elseif (is_array($this->data[$key])) { - $this->data[$key][] = $value; - } else { - $this->data[$key] = [$this->data[$key], $value]; - } - - return $this; - } - - public function remove($key) - { - unset($this->data[$key]); - - return $this; - } - - public function getKeys() - { - return array_keys($this->data); - } - - public function hasKey($key) - { - return array_key_exists($key, $this->data); - } - - public function keySearch($key) - { - foreach (array_keys($this->data) as $k) { - if (!strcasecmp($k, $key)) { - return $k; - } - } - - return false; - } - - - public function hasValue($value) - { - return array_search($value, $this->data); - } - - public function replace(array $data) - { - $this->data = $data; - - return $this; - } - - public function merge($data) - { - foreach ($data as $key => $value) { - $this->add($key, $value); - } - - return $this; - } - - public function overwriteWith($data) - { - if (is_array($data)) { - $this->data = $data + $this->data; - } else { - foreach ($data as $key => $value) { - $this->data[$key] = $value; - } - } - - return $this; - } - - public function map(\Closure $closure, array $context = [], $static = true) - { - $collection = $static ? new static() : new self(); - foreach ($this as $key => $value) { - $collection->add($key, $closure($key, $value, $context)); - } - - return $collection; - } - - public function filter(\Closure $closure, $static = true) - { - $collection = ($static) ? new static() : new self(); - foreach ($this->data as $key => $value) { - if ($closure($key, $value)) { - $collection->add($key, $value); - } - } - - return $collection; - } - - public function offsetExists($offset) - { - return isset($this->data[$offset]); - } - - public function offsetGet($offset) - { - return isset($this->data[$offset]) ? $this->data[$offset] : null; - } - - public function offsetSet($offset, $value) - { - $this->data[$offset] = $value; - } - - public function offsetUnset($offset) - { - unset($this->data[$offset]); - } - - public function setPath($path, $value) - { - $current =& $this->data; - $queue = explode('/', $path); - while (null !== ($key = array_shift($queue))) { - if (!is_array($current)) { - throw new \RuntimeException("Trying to setPath {$path}, but {$key} is set and is not an array"); - } elseif (!$queue) { - $current[$key] = $value; - } elseif (isset($current[$key])) { - $current =& $current[$key]; - } else { - $current[$key] = []; - $current =& $current[$key]; - } - } - - return $this; - } - - public function getPath($path, $separator = '/', $data = null) - { - if ($data === null) { - $data =& $this->data; - } - - $path = is_array($path) ? $path : explode($separator, $path); - while (null !== ($part = array_shift($path))) { - if (!is_array($data)) { - return null; - } elseif (isset($data[$part])) { - $data =& $data[$part]; - } elseif ($part != '*') { - return null; - } else { - // Perform a wildcard search by diverging and merging paths - $result = []; - foreach ($data as $value) { - if (!$path) { - $result = array_merge_recursive($result, (array) $value); - } elseif (null !== ($test = $this->getPath($path, $separator, $value))) { - $result = array_merge_recursive($result, (array) $test); - } - } - return $result; - } - } - - return $data; - } - - public function __toString() - { - $output = 'Debug output of '; - $output .= 'model'; - $output = str_repeat('=', strlen($output)) . "\n" . $output . "\n" . str_repeat('=', strlen($output)) . "\n\n"; - $output .= "Model data\n-----------\n\n"; - $output .= "This data can be retrieved from the model object using the get() method of the model " - . "(e.g. \$model->get(\$key)) or accessing the model like an associative array (e.g. \$model['key']).\n\n"; - $lines = array_slice(explode("\n", trim(print_r($this->toArray(), true))), 2, -1); - $output .= implode("\n", $lines); - - return $output . "\n"; - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ObsTransform.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ObsTransform.php deleted file mode 100644 index 03d42b69..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ObsTransform.php +++ /dev/null @@ -1,78 +0,0 @@ -transAclHeader($para); - } else if ($sign === 'aclUri') { - $para = $this->transAclGroupUri($para); - } else if ($sign == 'event') { - $para = $this->transNotificationEvent($para); - } else if ($sign == 'storageClass') { - $para = $this->transStorageClass($para); - } - return $para; - } - - private function transAclHeader($para) { - if ($para === ObsClient::AclAuthenticatedRead || $para === ObsClient::AclBucketOwnerRead || - $para === ObsClient::AclBucketOwnerFullControl || $para === ObsClient::AclLogDeliveryWrite) { - $para = null; - } - return $para; - } - - private function transAclGroupUri($para) { - if ($para === ObsClient::GroupAllUsers) { - $para = ObsClient::AllUsers; - } - return $para; - } - - private function transNotificationEvent($para) { - $pos = strpos($para, 's3:'); - if ($pos !== false && $pos === 0) { - $para = substr($para, 3); - } - return $para; - } - - private function transStorageClass($para) { - $search = array('STANDARD', 'STANDARD_IA', 'GLACIER'); - $repalce = array(ObsClient::StorageClassStandard, ObsClient::StorageClassWarm, ObsClient::StorageClassCold); - $para = str_replace($search, $repalce, $para); - return $para; - } -} - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SchemaFormatter.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SchemaFormatter.php deleted file mode 100644 index 46b896b1..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SchemaFormatter.php +++ /dev/null @@ -1,116 +0,0 @@ - format('Y-m-d\T00:00:00\Z'); - } - return null; - } - - public static function formatDateTime($value) - { - return self::dateFormatter($value, 'Y-m-d\TH:i:s\Z'); - } - - public static function formatDateTimeHttp($value) - { - return self::dateFormatter($value, 'D, d M Y H:i:s \G\M\T'); - } - - public static function formatDate($value) - { - return self::dateFormatter($value, 'Y-m-d'); - } - - public static function formatTime($value) - { - return self::dateFormatter($value, 'H:i:s'); - } - - public static function formatBooleanAsString($value) - { - return filter_var($value, FILTER_VALIDATE_BOOLEAN) ? 'true' : 'false'; - } - - public static function formatTimestamp($value) - { - return (int) self::dateFormatter($value, 'U'); - } - - private static function dateFormatter($dt, $fmt) - { - if (is_numeric($dt)) { - return gmdate($fmt, (int) $dt); - } - - if (is_string($dt)) { - $dt = new \DateTime($dt); - } - - if ($dt instanceof \DateTime) { - if (!self::$utcTimeZone) { - self::$utcTimeZone = new \DateTimeZone('UTC'); - } - - return $dt->setTimezone(self::$utcTimeZone)->format($fmt); - } - - return null; - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkCurlFactory.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkCurlFactory.php deleted file mode 100644 index af563618..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkCurlFactory.php +++ /dev/null @@ -1,430 +0,0 @@ - - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -namespace Obs\Internal\Common; - -use GuzzleHttp\Psr7; -use GuzzleHttp\Psr7\LazyOpenStream; -use Psr\Http\Message\RequestInterface; -use GuzzleHttp\Handler\CurlFactoryInterface; -use GuzzleHttp\Handler\EasyHandle; - -class SdkCurlFactory implements CurlFactoryInterface -{ - private $handles = []; - - private $maxHandles; - - public function __construct($maxHandles) - { - $this->maxHandles = $maxHandles; - } - - public function create(RequestInterface $request, array $options): EasyHandle - { - if (isset($options['curl']['body_as_string'])) { - $options['_body_as_string'] = $options['curl']['body_as_string']; - unset($options['curl']['body_as_string']); - } - - $easy = new EasyHandle; - $easy->request = $request; - $easy->options = $options; - $conf = $this->getDefaultConf($easy); - $this->applyMethod($easy, $conf); - $this->applyHandlerOptions($easy, $conf); - $this->applyHeaders($easy, $conf); - - - unset($conf['_headers']); - - if (isset($options['curl'])) { - $conf = array_replace($conf, $options['curl']); - } - - $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); - if($this->handles){ - $easy->handle = array_pop($this->handles); - }else{ - $easy->handle = curl_init(); - } - curl_setopt_array($easy->handle, $conf); - - return $easy; - } - - public function close() - { - if($this->handles){ - foreach ($this->handles as $handle){ - curl_close($handle); - } - unset($this->handles); - $this->handles = []; - } - } - - public function release(EasyHandle $easy): void - { - $resource = $easy->handle; - unset($easy->handle); - - if (count($this->handles) >= $this->maxHandles) { - curl_close($resource); - } else { - curl_setopt($resource, CURLOPT_HEADERFUNCTION, null); - curl_setopt($resource, CURLOPT_READFUNCTION, null); - curl_setopt($resource, CURLOPT_WRITEFUNCTION, null); - curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null); - curl_reset($resource); - $this->handles[] = $resource; - } - } - - private function getDefaultConf(EasyHandle $easy) - { - $conf = [ - '_headers' => $easy->request->getHeaders(), - CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), - CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''), - CURLOPT_RETURNTRANSFER => false, - CURLOPT_HEADER => false, - CURLOPT_CONNECTTIMEOUT => 150, - ]; - - if (defined('CURLOPT_PROTOCOLS')) { - $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS; - } - - $version = $easy->request->getProtocolVersion(); - if ($version == 1.1) { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1; - } elseif ($version == 2.0) { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0; - } else { - $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0; - } - - return $conf; - } - - private function applyMethod(EasyHandle $easy, array &$conf) - { - $body = $easy->request->getBody(); - $size = $body->getSize(); - - if ($size === null || $size > 0) { - $this->applyBody($easy->request, $easy->options, $conf); - return; - } - - $method = $easy->request->getMethod(); - if ($method === 'PUT' || $method === 'POST') { - if (!$easy->request->hasHeader('Content-Length')) { - $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; - } - } elseif ($method === 'HEAD') { - $conf[CURLOPT_NOBODY] = true; - unset( - $conf[CURLOPT_WRITEFUNCTION], - $conf[CURLOPT_READFUNCTION], - $conf[CURLOPT_FILE], - $conf[CURLOPT_INFILE] - ); - } - } - - private function applyBody(RequestInterface $request, array $options, array &$conf) - { - $size = $request->hasHeader('Content-Length') - ? (int) $request->getHeaderLine('Content-Length') - : $request->getBody()->getSize(); - - if($request->getBody()->getSize() === $size && $request -> getBody() ->tell() <= 0){ - if (($size !== null && $size < 1000000) || - !empty($options['_body_as_string']) - ) { - $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody(); - $this->removeHeader('Content-Length', $conf); - $this->removeHeader('Transfer-Encoding', $conf); - } else { - $conf[CURLOPT_UPLOAD] = true; - if ($size !== null) { - $conf[CURLOPT_INFILESIZE] = $size; - $this->removeHeader('Content-Length', $conf); - } - $body = $request->getBody(); - if ($body->isSeekable()) { - $body->rewind(); - } - $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) { - return $body->read($length); - }; - } - }else{ - $body = $request->getBody(); - $conf[CURLOPT_UPLOAD] = true; - $conf[CURLOPT_INFILESIZE] = $size; - $readCount = 0; - $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body, $readCount, $size) { - if($readCount >= $size){ - $body -> close(); - return ''; - } - $readCountOnce = $length <= $size ? $length : $size; - $readCount += $readCountOnce; - return $body->read($readCountOnce); - }; - } - - - - if (!$request->hasHeader('Expect')) { - $conf[CURLOPT_HTTPHEADER][] = 'Expect:'; - } - - if (!$request->hasHeader('Content-Type')) { - $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:'; - } - } - - private function applyHeaders(EasyHandle $easy, array &$conf) - { - foreach ($conf['_headers'] as $name => $values) { - foreach ($values as $value) { - $conf[CURLOPT_HTTPHEADER][] = "$name: $value"; - } - } - - // Remove the Accept header if one was not set - if (!$easy->request->hasHeader('Accept')) { - $conf[CURLOPT_HTTPHEADER][] = 'Accept:'; - } - } - - private function removeHeader($name, array &$options) - { - foreach (array_keys($options['_headers']) as $key) { - if (!strcasecmp($key, $name)) { - unset($options['_headers'][$key]); - return; - } - } - } - - private function applyHandlerOptions(EasyHandle $easy, array &$conf) - { - $options = $easy->options; - if (isset($options['verify'])) { - $conf[CURLOPT_SSL_VERIFYHOST] = 0; - if ($options['verify'] === false) { - unset($conf[CURLOPT_CAINFO]); - $conf[CURLOPT_SSL_VERIFYPEER] = false; - } else { - $conf[CURLOPT_SSL_VERIFYPEER] = true; - if (is_string($options['verify'])) { - if (!file_exists($options['verify'])) { - throw new \InvalidArgumentException( - "SSL CA bundle not found: {$options['verify']}" - ); - } - if (is_dir($options['verify']) || - (is_link($options['verify']) && is_dir(readlink($options['verify'])))) { - $conf[CURLOPT_CAPATH] = $options['verify']; - } else { - $conf[CURLOPT_CAINFO] = $options['verify']; - } - } - } - } - - if (!empty($options['decode_content'])) { - $accept = $easy->request->getHeaderLine('Accept-Encoding'); - if ($accept) { - $conf[CURLOPT_ENCODING] = $accept; - } else { - $conf[CURLOPT_ENCODING] = ''; - $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; - } - } - - if (isset($options['sink'])) { - $sink = $options['sink']; - if (!is_string($sink)) { - try { - $sink = Psr7\stream_for($sink); - } catch (\Throwable $e) { - $sink = Psr7\Utils::streamFor($sink); - } - } elseif (!is_dir(dirname($sink))) { - throw new \RuntimeException(sprintf( - 'Directory %s does not exist for sink value of %s', - dirname($sink), - $sink - )); - } else { - $sink = new LazyOpenStream($sink, 'w+'); - } - $easy->sink = $sink; - $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) { - return $sink->write($write); - }; - } else { - $conf[CURLOPT_FILE] = fopen('php://temp', 'w+'); - try { - $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]); - } catch (\Throwable $e) { - $easy->sink = Psr7\Utils::streamFor($conf[CURLOPT_FILE]); - } - } - $timeoutRequiresNoSignal = false; - if (isset($options['timeout'])) { - $timeoutRequiresNoSignal |= $options['timeout'] < 1; - $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; - } - - if (isset($options['force_ip_resolve'])) { - if ('v4' === $options['force_ip_resolve']) { - $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; - } else if ('v6' === $options['force_ip_resolve']) { - $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6; - } - } - - if (isset($options['connect_timeout'])) { - $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1; - $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; - } - - if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') { - $conf[CURLOPT_NOSIGNAL] = true; - } - - if (isset($options['proxy'])) { - if (!is_array($options['proxy'])) { - $conf[CURLOPT_PROXY] = $options['proxy']; - } else { - $scheme = $easy->request->getUri()->getScheme(); - if (isset($options['proxy'][$scheme])) { - $host = $easy->request->getUri()->getHost(); - if (!isset($options['proxy']['no']) || - !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no']) - ) { - $conf[CURLOPT_PROXY] = $options['proxy'][$scheme]; - } - } - } - } - - if (isset($options['cert'])) { - $cert = $options['cert']; - if (is_array($cert)) { - $conf[CURLOPT_SSLCERTPASSWD] = $cert[1]; - $cert = $cert[0]; - } - if (!file_exists($cert)) { - throw new \InvalidArgumentException( - "SSL certificate not found: {$cert}" - ); - } - $conf[CURLOPT_SSLCERT] = $cert; - } - - if (isset($options['ssl_key'])) { - $sslKey = $options['ssl_key']; - if (is_array($sslKey)) { - $conf[CURLOPT_SSLKEYPASSWD] = $sslKey[1]; - $sslKey = $sslKey[0]; - } - if (!file_exists($sslKey)) { - throw new \InvalidArgumentException( - "SSL private key not found: {$sslKey}" - ); - } - $conf[CURLOPT_SSLKEY] = $sslKey; - } - - if (isset($options['progress'])) { - $progress = $options['progress']; - if (!is_callable($progress)) { - throw new \InvalidArgumentException( - 'progress client option must be callable' - ); - } - $conf[CURLOPT_NOPROGRESS] = false; - $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) { - $args = func_get_args(); - if (is_resource($args[0])) { - array_shift($args); - } - call_user_func_array($progress, $args); - }; - } - - if (!empty($options['debug'])) { - $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']); - $conf[CURLOPT_VERBOSE] = true; - } - } - - - private function createHeaderFn(EasyHandle $easy) - { - if (isset($easy->options['on_headers'])) { - $onHeaders = $easy->options['on_headers']; - - if (!is_callable($onHeaders)) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - } else { - $onHeaders = null; - } - - return function ($ch, $h) use ( - $onHeaders, - $easy, - &$startingResponse - ) { - $value = trim($h); - if ($value === '') { - $startingResponse = true; - $easy->createResponse(); - if ($onHeaders !== null) { - try { - $onHeaders($easy->response); - } catch (\Exception $e) { - $easy->onHeadersException = $e; - return -1; - } - } - } elseif ($startingResponse) { - $startingResponse = false; - $easy->headers = [$value]; - } else { - $easy->headers[] = $value; - } - return strlen($h); - }; - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkStreamHandler.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkStreamHandler.php deleted file mode 100644 index c7075aca..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/SdkStreamHandler.php +++ /dev/null @@ -1,519 +0,0 @@ - - - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -namespace Obs\Internal\Common; - -use GuzzleHttp\Exception\RequestException; -use GuzzleHttp\Exception\ConnectException; -use GuzzleHttp\Promise\FulfilledPromise; -use GuzzleHttp\Promise\PromiseInterface; -use GuzzleHttp\Psr7; -use GuzzleHttp\TransferStats; -use Psr\Http\Message\RequestInterface; -use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\StreamInterface; - -class SdkStreamHandler -{ - private $lastHeaders = []; - - public function __invoke(RequestInterface $request, array $options) - { - if (isset($options['delay'])) { - usleep($options['delay'] * 1000); - } - - $startTime = isset($options['on_stats']) ? microtime(true) : null; - - try { - $request = $request->withoutHeader('Expect'); - - if (0 === $request->getBody()->getSize()) { - $request = $request->withHeader('Content-Length', 0); - } - - return $this->createResponse( - $request, - $options, - $this->createStream($request, $options), - $startTime - ); - } catch (\InvalidArgumentException $e) { - throw $e; - } catch (\Exception $e) { - $message = $e->getMessage(); - if (strpos($message, 'getaddrinfo') - || strpos($message, 'Connection refused') - || strpos($message, "couldn't connect to host") - ) { - $e = new ConnectException($e->getMessage(), $request, $e); - } - $e = RequestException::wrapException($request, $e); - $this->invokeStats($options, $request, $startTime, null, $e); - - return \GuzzleHttp\Promise\rejection_for($e); - } - } - - private function invokeStats( - array $options, - RequestInterface $request, - $startTime, - ResponseInterface $response = null, - $error = null - ) { - if (isset($options['on_stats'])) { - $stats = new TransferStats( - $request, - $response, - microtime(true) - $startTime, - $error, - [] - ); - call_user_func($options['on_stats'], $stats); - } - } - - private function createResponse( - RequestInterface $request, - array $options, - $stream, - $startTime - ) { - $hdrs = $this->lastHeaders; - $this->lastHeaders = []; - $parts = explode(' ', array_shift($hdrs), 3); - $ver = explode('/', $parts[0])[1]; - $status = $parts[1]; - $reason = isset($parts[2]) ? $parts[2] : null; - $headers = \GuzzleHttp\headers_from_lines($hdrs); - list ($stream, $headers) = $this->checkDecode($options, $headers, $stream); - try { - $stream = Psr7\stream_for($stream); - } catch (\Throwable $e) { - $stream = Psr7\Utils::streamFor($stream); - } - $sink = $stream; - - if (strcasecmp('HEAD', $request->getMethod())) { - $sink = $this->createSink($stream, $options); - } - - $response = new Psr7\Response($status, $headers, $sink, $ver, $reason); - - if (isset($options['on_headers'])) { - try { - $options['on_headers']($response); - } catch (\Exception $e) { - $msg = 'An error was encountered during the on_headers event'; - $ex = new RequestException($msg, $request, $response, $e); - return \GuzzleHttp\Promise\rejection_for($ex); - } - } - - if ($sink !== $stream) { - $this->drain( - $stream, - $sink, - $response->getHeaderLine('Content-Length') - ); - } - - $this->invokeStats($options, $request, $startTime, $response, null); - - return new FulfilledPromise($response); - } - - private function createSink(StreamInterface $stream, array $options) - { - if (!empty($options['stream'])) { - return $stream; - } - - $sink = isset($options['sink']) - ? $options['sink'] - : fopen('php://temp', 'r+'); - - if (is_string($sink)) { - return new Psr7\LazyOpenStream($sink, 'w+'); - } - - try { - return Psr7\stream_for($sink); - } catch (\Throwable $e) { - return Psr7\Utils::streamFor($sink); - } - } - - private function checkDecode(array $options, array $headers, $stream) - { - if (!empty($options['decode_content'])) { - $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers); - if (isset($normalizedKeys['content-encoding'])) { - $encoding = $headers[$normalizedKeys['content-encoding']]; - if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') { - try { - $stream = new Psr7\InflateStream( - Psr7\stream_for($stream) - ); - } catch (\Throwable $th) { - $stream = new Psr7\InflateStream( - Psr7\Utils::streamFor($stream) - ); - } - - $headers['x-encoded-content-encoding'] - = $headers[$normalizedKeys['content-encoding']]; - unset($headers[$normalizedKeys['content-encoding']]); - if (isset($normalizedKeys['content-length'])) { - $headers['x-encoded-content-length'] - = $headers[$normalizedKeys['content-length']]; - - $length = (int) $stream->getSize(); - if ($length === 0) { - unset($headers[$normalizedKeys['content-length']]); - } else { - $headers[$normalizedKeys['content-length']] = [$length]; - } - } - } - } - } - - return [$stream, $headers]; - } - - private function drain( - StreamInterface $source, - StreamInterface $sink, - $contentLength - ) { - Psr7\copy_to_stream( - $source, - $sink, - (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1 - ); - - $sink->seek(0); - $source->close(); - - return $sink; - } - - private function createResource(callable $callback) - { - $errors = null; - set_error_handler(function ($_, $msg, $file, $line) use (&$errors) { - $errors[] = [ - 'message' => $msg, - 'file' => $file, - 'line' => $line - ]; - return true; - }); - - $resource = $callback(); - restore_error_handler(); - - if (!$resource) { - $message = 'Error creating resource: '; - foreach ($errors as $err) { - foreach ($err as $key => $value) { - $message .= "[$key] $value" . PHP_EOL; - } - } - throw new \RuntimeException(trim($message)); - } - - return $resource; - } - - private function createStream(RequestInterface $request, array $options) - { - static $methods; - if (!$methods) { - $methods = array_flip(get_class_methods(__CLASS__)); - } - - if ($request->getProtocolVersion() == '1.1' - && !$request->hasHeader('Connection') - ) { - $request = $request->withHeader('Connection', 'close'); - } - - if (!isset($options['verify'])) { - $options['verify'] = true; - } - - $params = []; - $context = $this->getDefaultContext($request, $options); - - if (isset($options['on_headers']) && !is_callable($options['on_headers'])) { - throw new \InvalidArgumentException('on_headers must be callable'); - } - - if (!empty($options)) { - foreach ($options as $key => $value) { - $method = "add_{$key}"; - if (isset($methods[$method])) { - $this->{$method}($request, $context, $value, $params); - } - } - } - - if (isset($options['stream_context'])) { - if (!is_array($options['stream_context'])) { - throw new \InvalidArgumentException('stream_context must be an array'); - } - $context = array_replace_recursive( - $context, - $options['stream_context'] - ); - } - - if (isset($options['auth']) - && is_array($options['auth']) - && isset($options['auth'][2]) - && 'ntlm' == $options['auth'][2] - ) { - - throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler'); - } - - $uri = $this->resolveHost($request, $options); - - $context = $this->createResource( - function () use ($context, $params) { - return stream_context_create($context, $params); - } - ); - - return $this->createResource( - function () use ($uri, &$http_response_header, $context, $options) { - $resource = fopen((string) $uri, 'r', null, $context); - $this->lastHeaders = $http_response_header; - - if (isset($options['read_timeout'])) { - $readTimeout = $options['read_timeout']; - $sec = (int) $readTimeout; - $usec = ($readTimeout - $sec) * 100000; - stream_set_timeout($resource, $sec, $usec); - } - - return $resource; - } - ); - } - - private function resolveHost(RequestInterface $request, array $options) - { - $uri = $request->getUri(); - - if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) { - if ('v4' === $options['force_ip_resolve']) { - $records = dns_get_record($uri->getHost(), DNS_A); - if (!isset($records[0]['ip'])) { - throw new ConnectException(sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request); - } - $uri = $uri->withHost($records[0]['ip']); - } elseif ('v6' === $options['force_ip_resolve']) { - $records = dns_get_record($uri->getHost(), DNS_AAAA); - if (!isset($records[0]['ipv6'])) { - throw new ConnectException(sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request); - } - $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']'); - } - } - - return $uri; - } - - private function getDefaultContext(RequestInterface $request) - { - $headers = ''; - foreach ($request->getHeaders() as $name => $value) { - foreach ($value as $val) { - $headers .= "$name: $val\r\n"; - } - } - - $context = [ - 'http' => [ - 'method' => $request->getMethod(), - 'header' => $headers, - 'protocol_version' => $request->getProtocolVersion(), - 'ignore_errors' => true, - 'follow_location' => 0, - ], - ]; - - $body = (string) $request->getBody(); - - if (!empty($body)) { - $context['http']['content'] = $body; - if (!$request->hasHeader('Content-Type')) { - $context['http']['header'] .= "Content-Type:\r\n"; - } - } - - $context['http']['header'] = rtrim($context['http']['header']); - - return $context; - } - - private function add_proxy(RequestInterface $request, &$options, $value, &$params) - { - if (!is_array($value)) { - $options['http']['proxy'] = $value; - } else { - $scheme = $request->getUri()->getScheme(); - if (isset($value[$scheme])) { - if (!isset($value['no']) - || !\GuzzleHttp\is_host_in_noproxy( - $request->getUri()->getHost(), - $value['no'] - ) - ) { - $options['http']['proxy'] = $value[$scheme]; - } - } - } - } - - private function add_timeout(RequestInterface $request, &$options, $value, &$params) - { - if ($value > 0) { - $options['http']['timeout'] = $value; - } - } - - private function add_verify(RequestInterface $request, &$options, $value, &$params) - { - if ($value === true) { - if (PHP_VERSION_ID < 50600) { - $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle(); - } - } elseif (is_string($value)) { - $options['ssl']['cafile'] = $value; - if (!file_exists($value)) { - throw new \RuntimeException("SSL CA bundle not found: $value"); - } - } elseif ($value === false) { - $options['ssl']['verify_peer'] = false; - $options['ssl']['verify_peer_name'] = false; - return; - } else { - throw new \InvalidArgumentException('Invalid verify request option'); - } - - $options['ssl']['verify_peer'] = true; - $options['ssl']['verify_peer_name'] = true; - $options['ssl']['allow_self_signed'] = false; - } - - private function add_cert(RequestInterface $request, &$options, $value, &$params) - { - if (is_array($value)) { - $options['ssl']['passphrase'] = $value[1]; - $value = $value[0]; - } - - if (!file_exists($value)) { - throw new \RuntimeException("SSL certificate not found: {$value}"); - } - - $options['ssl']['local_cert'] = $value; - } - - private function add_progress(RequestInterface $request, &$options, $value, &$params) - { - $this->addNotification( - $params, - function ($code, $a, $b, $c, $transferred, $total) use ($value) { - if ($code == STREAM_NOTIFY_PROGRESS) { - $value($total, $transferred, null, null); - } - } - ); - } - - private function add_debug(RequestInterface $request, &$options, $value, &$params) - { - if ($value === false) { - return; - } - - static $map = [ - STREAM_NOTIFY_CONNECT => 'CONNECT', - STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', - STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', - STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', - STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', - STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', - STREAM_NOTIFY_PROGRESS => 'PROGRESS', - STREAM_NOTIFY_FAILURE => 'FAILURE', - STREAM_NOTIFY_COMPLETED => 'COMPLETED', - STREAM_NOTIFY_RESOLVE => 'RESOLVE', - ]; - static $args = ['severity', 'message', 'message_code', - 'bytes_transferred', 'bytes_max']; - - $value = \GuzzleHttp\debug_resource($value); - $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment(''); - $this->addNotification( - $params, - function () use ($ident, $value, $map, $args) { - $passed = func_get_args(); - $code = array_shift($passed); - fprintf($value, '<%s> [%s] ', $ident, $map[$code]); - foreach (array_filter($passed) as $i => $v) { - fwrite($value, $args[$i] . ': "' . $v . '" '); - } - fwrite($value, "\n"); - } - ); - } - - private function addNotification(array &$params, callable $notify) - { - if (!isset($params['notification'])) { - $params['notification'] = $notify; - } else { - $params['notification'] = $this->callArray([ - $params['notification'], - $notify - ]); - } - } - - private function callArray(array $functions) - { - return function () use ($functions) { - $args = func_get_args(); - foreach ($functions as $fn) { - call_user_func_array($fn, $args); - } - }; - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ToArrayInterface.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ToArrayInterface.php deleted file mode 100644 index e8d51773..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Common/ToArrayInterface.php +++ /dev/null @@ -1,23 +0,0 @@ -transStorageClass($para); - } else if ($sign === 'aclHeader') { - $para = $this->transAclHeader($para); - } else if ($sign === 'aclUri') { - $para = $this->transAclGroupUri($para); - } else if ($sign == 'event') { - $para = $this->transNotificationEvent($para); - } - return $para; - } - - private function transStorageClass($para) { - $search = array(ObsClient::StorageClassStandard, ObsClient::StorageClassWarm, ObsClient::StorageClassCold); - $repalce = array('STANDARD', 'STANDARD_IA', 'GLACIER'); - $para = str_replace($search, $repalce, $para); - return $para; - } - - private function transAclHeader($para) { - if ($para === ObsClient::AclPublicReadDelivered || $para === ObsClient::AclPublicReadWriteDelivered) { - $para = null; - } - return $para; - } - - private function transAclGroupUri($para) { - if ($para === ObsClient::GroupAllUsers) { - $para = V2Constants::GROUP_ALL_USERS_PREFIX . $para; - } else if ($para === ObsClient::GroupAuthenticatedUsers) { - $para = V2Constants::GROUP_AUTHENTICATED_USERS_PREFIX . $para; - } else if ($para === ObsClient::GroupLogDelivery) { - $para = V2Constants::GROUP_LOG_DELIVERY_PREFIX . $para; - } else if ($para === ObsClient::AllUsers) { - $para = V2Constants::GROUP_ALL_USERS_PREFIX . ObsClient::GroupAllUsers; - } - return $para; - } - - private function transNotificationEvent($para) { - $pos = strpos($para, 's3:'); - if ($pos === false || $pos !== 0) { - $para = 's3:' . $para; - } - return $para; - } -} - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/GetResponseTrait.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/GetResponseTrait.php deleted file mode 100644 index 90b84220..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/GetResponseTrait.php +++ /dev/null @@ -1,455 +0,0 @@ - getStatusCode() >= 400 && $response -> getStatusCode() < 500; - } - - protected function parseXmlByType($searchPath, $key, &$value, $xml, $prefix) - { - $type = 'string'; - - if(isset($value['sentAs'])){ - $key = $value['sentAs']; - } - - if($searchPath === null){ - $searchPath = '//'.$prefix.$key; - } - - if(isset($value['type'])){ - $type = $value['type']; - if($type === 'array'){ - $items = $value['items']; - if(isset($value['wrapper'])){ - $paths = explode('/', $searchPath); - $size = count($paths); - if ($size > 1) { - $end = $paths[$size - 1]; - $paths[$size - 1] = $value['wrapper']; - $paths[] = $end; - $searchPath = implode('/', $paths) .'/' . $prefix; - } - } - - $array = []; - if(!isset($value['data']['xmlFlattened'])){ - $pkey = isset($items['sentAs']) ? $items['sentAs'] : $items['name']; - $_searchPath = $searchPath .'/' . $prefix .$pkey; - }else{ - $pkey = $key; - $_searchPath = $searchPath; - } - if($result = $xml -> xpath($_searchPath)){ - if(is_array($result)){ - foreach ($result as $subXml){ - $subXml = simplexml_load_string($subXml -> asXML()); - $subPrefix = $this->getXpathPrefix($subXml); - $array[] = $this->parseXmlByType('//'.$subPrefix. $pkey, $pkey, $items, $subXml, $subPrefix); - } - } - } - return $array; - }else if($type === 'object'){ - $properties = $value['properties']; - $array = []; - foreach ($properties as $pkey => $pvalue){ - $name = isset($pvalue['sentAs']) ? $pvalue['sentAs'] : $pkey; - $array[$pkey] = $this->parseXmlByType($searchPath.'/' . $prefix .$name, $name, $pvalue, $xml, $prefix); - } - return $array; - } - } - - if($result = $xml -> xpath($searchPath)){ - if($type === 'boolean'){ - return strval($result[0]) !== 'false'; - }else if($type === 'numeric' || $type === 'float'){ - return floatval($result[0]); - }else if($type === 'int' || $type === 'integer'){ - return intval($result[0]); - }else{ - return strval($result[0]); - } - }else{ - if($type === 'boolean'){ - return false; - }else if($type === 'numeric' || $type === 'float' || $type === 'int' || $type === 'integer'){ - return null; - }else{ - return ''; - } - } - } - - private function isJsonResponse($response) { - return $response -> getHeaderLine('content-type') === 'application/json'; - } - - private function parseCommonHeaders($model, $response){ - $constants = Constants::selectConstants($this -> signature); - foreach($constants::COMMON_HEADERS as $key => $value){ - $model[$value] = $response -> getHeaderLine($key); - } - } - - protected function parseItems($responseParameters, $model, $response, $body) - { - $prefix = ''; - - $this->parseCommonHeaders($model, $response); - - $closeBody = false; - try{ - foreach ($responseParameters as $key => $value){ - if(isset($value['location'])){ - $location = $value['location']; - if($location === 'header'){ - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - $isSet = false; - if(isset($value['type'])){ - $type = $value['type']; - if($type === 'object'){ - $headers = $response -> getHeaders(); - $temp = []; - foreach ($headers as $headerName => $headerValue){ - if(stripos($headerName, $name) === 0){ - $metaKey = rawurldecode(substr($headerName, strlen($name))); - $temp[$metaKey] = rawurldecode($response -> getHeaderLine($headerName)); - } - } - $model[$key] = $temp; - $isSet = true; - }else{ - if($response -> hasHeader($name)){ - if($type === 'boolean'){ - $model[$key] = ($response -> getHeaderLine($name)) !== 'false'; - $isSet = true; - }else if($type === 'numeric' || $type === 'float'){ - $model[$key] = floatval($response -> getHeaderLine($name)); - $isSet = true; - }else if($type === 'int' || $type === 'integer'){ - $model[$key] = intval($response -> getHeaderLine($name)); - $isSet = true; - } - } - } - } - if(!$isSet){ - $model[$key] = rawurldecode($response -> getHeaderLine($name)); - } - }else if($location === 'xml' && $body !== null){ - if(!isset($xml) && ($xml = simplexml_load_string($body -> getContents()))){ - $prefix = $this ->getXpathPrefix($xml); - } - $closeBody = true; - $model[$key] = $this -> parseXmlByType(null, $key,$value, $xml, $prefix); - }else if($location === 'body' && $body !== null){ - if(isset($value['type']) && $value['type'] === 'stream'){ - $model[$key] = $body; - }else if (isset($value['type']) && $value['type'] === 'json') { - $jsonBody = trim($body -> getContents()); - if ($jsonBody && ($data = json_decode($jsonBody, true))) { - if (is_array($data)) { - $model[$key] = $data; - } elseif (strlen($data)) { - ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $data); - } - } - $closeBody = true; - } else { - $model[$key] = $body -> getContents(); - $closeBody = true; - } - } - } - } - }finally { - if($closeBody && $body !== null){ - $body -> close(); - } - } - } - - private function writeFile($filePath, StreamInterface &$body, $contentLength) - { - $filePath = iconv('UTF-8', 'GBK', $filePath); - if(is_string($filePath) && $filePath !== '') - { - $fp = null; - $dir = dirname($filePath); - try{ - if(!is_dir($dir)) - { - mkdir($dir,0755,true); - } - - if(($fp = fopen($filePath, 'w'))) - { - while(!$body->eof()) - { - $str = $body->read($this->chunkSize); - fwrite($fp, $str); - } - fflush($fp); - ObsLog::commonLog(DEBUG, "write file %s ok",$filePath); - } - else{ - ObsLog::commonLog(ERROR, "open file error,file path:%s",$filePath); - } - }finally{ - if($fp){ - fclose($fp); - } - $body->close(); - $body = null; - } - } - } - - private function parseXmlToException($body, $obsException){ - try{ - $xmlErrorBody = trim($body -> getContents()); - if($xmlErrorBody && ($xml = simplexml_load_string($xmlErrorBody))){ - $prefix = $this->getXpathPrefix($xml); - if ($tempXml = $xml->xpath('//'.$prefix . 'Code')) { - $obsException-> setExceptionCode(strval($tempXml[0])); - } - if ($tempXml = $xml->xpath('//'.$prefix . 'RequestId')) { - $obsException-> setRequestId(strval($tempXml[0])); - } - if ($tempXml = $xml->xpath('//'.$prefix . 'Message')) { - $obsException-> setExceptionMessage(strval($tempXml[0])); - } - if ($tempXml = $xml->xpath('//'.$prefix . 'HostId')) { - $obsException -> setHostId(strval($tempXml[0])); - } - } - }finally{ - $body -> close(); - } - } - - private function parseJsonToException($body, $obsException) { - try { - $jsonErrorBody = trim($body -> getContents()); - if ($jsonErrorBody && ($data = json_decode($jsonErrorBody, true))) { - if (is_array($data)) { - if ($data['request_id']) { - $obsException -> setRequestId(strval($data['request_id'])); - } - if ($data['code']) { - $obsException -> setExceptionCode(strval($data['code'])); - } - if ($data['message']) { - $obsException -> setExceptionMessage(strval($data['message'])); - } - } elseif (strlen($data)) { - ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $data); - $obsException-> setExceptionMessage("Invalid response data,since it is not json data"); - } - } - } finally { - $body -> close(); - } - } - - private function parseJsonToModel($body, $model) { - try{ - $jsonErrorBody = trim($body -> getContents()); - if ($jsonErrorBody && ($jsonArray = json_decode($jsonErrorBody, true))) { - if (is_array($jsonArray)) { - if ($jsonArray['request_id']) { - $model['RequestId'] = strval($jsonArray['request_id']); - } - if ($jsonArray['code']) { - $model['Code'] = strval($jsonArray['code']); - } - if ($jsonArray['message']) { - $model['Message'] = strval($jsonArray['message']); - } - } elseif (strlen($jsonArray)) { - ObsLog::commonLog(ERROR, "response body %s, and jsonToArray data is %s",$body, $jsonArray); - $model['Message'] = "Invalid response data,since it is not json data"; - } - } - } finally { - $body -> close(); - } - } - - private function parseXmlToModel($body, $model){ - try{ - $xmlErrorBody = trim($body -> getContents()); - if($xmlErrorBody && ($xml = simplexml_load_string($xmlErrorBody))){ - $prefix = $this->getXpathPrefix($xml); - if ($tempXml = $xml->xpath('//'.$prefix . 'Code')) { - $model['Code'] = strval($tempXml[0]); - } - if ($tempXml = $xml->xpath('//'.$prefix . 'RequestId')) { - $model['RequestId'] = strval($tempXml[0]); - } - - if ($tempXml = $xml->xpath('//'.$prefix . 'HostId')) { - $model['HostId'] = strval($tempXml[0]); - } - if ($tempXml = $xml->xpath('//'.$prefix . 'Resource')) { - $model['Resource'] = strval($tempXml[0]); - } - - if ($tempXml = $xml->xpath('//'.$prefix . 'Message')) { - $model['Message'] = strval($tempXml[0]); - } - } - }finally { - $body -> close(); - } - } - - protected function parseResponse(Model $model, Request $request, Response $response, array $requestConfig) - { - $statusCode = $response -> getStatusCode(); - $expectedLength = $response -> getHeaderLine('content-length'); - $responseContentType = $response -> getHeaderLine('content-type'); - - $expectedLength = is_numeric($expectedLength) ? floatval($expectedLength) : null; - - $body = new CheckoutStream($response->getBody(), $expectedLength); - - if($statusCode >= 300){ - if($this-> exceptionResponseMode){ - $obsException= new ObsException(); - $obsException-> setRequest($request); - $obsException-> setResponse($response); - $obsException-> setExceptionType($this->isClientError($response) ? 'client' : 'server'); - if ($responseContentType === 'application/json') { - $this->parseJsonToException($body, $obsException); - } else { - $this->parseXmlToException($body, $obsException); - } - throw $obsException; - }else{ - $this->parseCommonHeaders($model, $response); - if ($responseContentType === 'application/json') { - $this->parseJsonToModel($body, $model); - } else { - $this->parseXmlToModel($body, $model); - } - } - - }else{ - if(!empty($model)){ - foreach ($model as $key => $value){ - if($key === 'method'){ - continue; - } - if(isset($value['type']) && $value['type'] === 'file'){ - $this->writeFile($value['value'], $body, $expectedLength); - } - $model[$key] = $value['value']; - } - } - - if(isset($requestConfig['responseParameters'])){ - $responseParameters = $requestConfig['responseParameters']; - if(isset($responseParameters['type']) && $responseParameters['type'] === 'object'){ - $responseParameters = $responseParameters['properties']; - } - $this->parseItems($responseParameters, $model, $response, $body); - } - } - - $model['HttpStatusCode'] = $statusCode; - $model['Reason'] = $response -> getReasonPhrase(); - } - - protected function getXpathPrefix($xml) - { - $namespaces = $xml -> getDocNamespaces(); - if (isset($namespaces[''])) { - $xml->registerXPathNamespace('ns', $namespaces['']); - $prefix = 'ns:'; - } else { - $prefix = ''; - } - return $prefix; - } - - protected function buildException(Request $request, RequestException $exception, $message) - { - $response = $exception-> hasResponse() ? $exception-> getResponse() : null; - $obsException= new ObsException($message ? $message : $exception-> getMessage()); - $obsException-> setExceptionType('client'); - $obsException-> setRequest($request); - if($response){ - $obsException-> setResponse($response); - $obsException-> setExceptionType($this->isClientError($response) ? 'client' : 'server'); - if ($this->isJsonResponse($response)) { - $this->parseJsonToException($response -> getBody(), $obsException); - } else { - $this->parseXmlToException($response -> getBody(), $obsException); - } - if ($obsException->getRequestId() === null) { - $prefix = strcasecmp($this->signature, 'obs' ) === 0 ? 'x-obs-' : 'x-amz-'; - $requestId = $response->getHeaderLine($prefix . 'request-id'); - $obsException->setRequestId($requestId); - } - } - return $obsException; - } - - protected function parseExceptionAsync(Request $request, RequestException $exception, $message=null) - { - return $this->buildException($request, $exception, $message); - } - - protected function parseException(Model $model, Request $request, RequestException $exception, $message=null) - { - $response = $exception-> hasResponse() ? $exception-> getResponse() : null; - if($this-> exceptionResponseMode){ - throw $this->buildException($request, $exception, $message); - }else{ - if($response){ - $model['HttpStatusCode'] = $response -> getStatusCode(); - $model['Reason'] = $response -> getReasonPhrase(); - $this->parseXmlToModel($response -> getBody(), $model); - }else{ - $model['HttpStatusCode'] = -1; - $model['Message'] = $exception -> getMessage(); - } - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/Constants.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/Constants.php deleted file mode 100644 index 6f99d809..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/Constants.php +++ /dev/null @@ -1,140 +0,0 @@ - 'ContentLength', - 'date' => 'Date', - 'x-obs-request-id' => 'RequestId', - 'x-obs-id-2' => 'Id2', - 'x-reserved' => 'Reserved' - ]; -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/OBSRequestResource.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/OBSRequestResource.php deleted file mode 100644 index 38ceb422..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/OBSRequestResource.php +++ /dev/null @@ -1,4304 +0,0 @@ - [ - 'createBucket' => [ - 'httpMethod' => 'PUT', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CreateBucketConfiguration' - ] - ], - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'LocationConstraint' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'Location' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class', - 'transform' => 'storageClass' - ] - ], - 'responseParameters' => [ - 'Location' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'listBuckets' => [ - 'httpMethod' => 'GET', - 'responseParameters' => [ - 'Buckets' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Buckets', - 'items' => [ - 'name' => 'Bucket', - 'type' => 'object', - 'sentAs' => 'Bucket', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - 'CreationDate' => [ - 'type' => 'string' - ], - 'Location' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'deleteBucket' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'listObjects' => [ - 'httpMethod' => 'GET', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'Marker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'marker' - ], - 'MaxKeys' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Marker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Contents' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Contents', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Object', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Type' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'Name' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxKeys' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-bucket-location' - ] - ] - ] - ], - - 'listVersions' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'versions', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker' - ], - 'MaxKeys' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ], - 'VersionIdMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'version-id-marker' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextKeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextVersionIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Versions' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Version', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ObjectVersion', - 'type' => 'object', - 'sentAs' => 'Version', - 'properties' => [ - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'IsLatest' => [ - 'type' => 'boolean' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'Type' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'DeleteMarkers' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'DeleteMarker', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'DeleteMarkerEntry', - 'type' => 'object', - 'sentAs' => 'DeleteMarker', - 'properties' => [ - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'IsLatest' => [ - 'type' => 'boolean' - ], - 'LastModified' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Name' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxKeys' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-bucket-location' - ] - ] - ] - ], - - 'getBucketMetadata' => [ - 'httpMethod' => 'HEAD', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class' - ], - - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-bucket-location' - ], - - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age', - 'type' => 'integer' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ] - ] - ], - - 'getBucketLocation' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'location', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Location' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketStorageInfo' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'storageinfo', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Size' => [ - 'type' => 'numeric', - 'location' => 'xml', - 'sentAs' => 'Size' - ], - 'ObjectNumber' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketQuota' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'quota', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Quota' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'StorageQuota' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketQuota' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'quota', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'StorageQuota' => [ - 'type' => 'integer', - 'location' => 'xml', - 'sentAs' => 'StorageQuota' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketStoragePolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'storageClass', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'StorageClass' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'StorageClass' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'xml', - 'transform' => 'storageClass', - 'data' => [ - 'xmlFlattened' => true - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketStoragePolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'storageClass', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketAcl' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'acl', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'AccessControlPolicy' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'GrantRead' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-read' - ], - 'GrantWrite' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-write' - ], - 'GrantReadAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-read-acp' - ], - 'GrantWriteAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-write-acp' - ], - 'GrantFullControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-full-control' - ], - 'GrantDeliveryRead' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-read-delivered' - ], - 'GrantDeliveryFullControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-full-control-delivered' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ], - 'Delivered' => [ - 'type' => 'boolean' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketAcl' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'acl', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ], - 'Delivered' => [ - 'type' => 'boolean' - ] - ] - ] - ] - ] - ] - ], - - 'setBucketLoggingConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'logging', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'BucketLoggingStatus' - ], - 'xmlAllowEmpty' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Agency' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LoggingEnabled' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'TargetBucket' => [ - 'type' => 'string' - ], - 'TargetPrefix' => [ - 'type' => 'string' - ], - 'TargetGrants' => [ - 'type' => 'array', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketLoggingConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'logging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Agency' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LoggingEnabled' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'TargetBucket' => [ - 'type' => 'string' - ], - 'TargetGrants' => [ - 'type' => 'array', - 'sentAs' => 'TargetGrants', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ], - 'TargetPrefix' => [ - 'type' => 'string' - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setFetchPolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Policy' => [ - 'required' => true, - 'type' => 'json', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getFetchPolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Policy' => [ - 'type' => 'json', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'deleteFetchPolicy' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'setBucketPolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Policy' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketPolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Policy' => [ - 'type' => 'string', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setFetchJob' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'obsfetchjob', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Job' => [ - 'required' => true, - 'type' => 'json', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'JobInfo' => [ - 'type' => 'string', - 'location' => 'body' - ] - ] - ] - ], - - 'getFetchJob' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'obsfetchjob', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'JobID' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'x-fetch-job-id' - ], - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Job' => [ - 'type' => 'json', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'deleteBucketPolicy' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketLifecycleConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'lifecycle', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'LifecycleConfiguration' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Rules' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Rule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => [ - 'Transitions' => [ - 'type' => 'array', - 'sentAs' => 'Transition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Transition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'transform' => 'storageClass' - ], - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'Expiration' => [ - 'type' => 'object', - 'properties' => [ - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ], - 'NoncurrentVersionTransitions' => [ - 'type' => 'array', - 'sentAs' => 'NoncurrentVersionTransition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'NoncurrentVersionTransition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'transform' => 'storageClass' - ], - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'NoncurrentVersionExpiration' => [ - 'type' => 'object', - 'properties' => [ - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ], - 'ID' => [ - 'type' => 'string' - ], - 'Prefix' => [ - 'required' => true, - 'type' => 'string', - 'canEmpty' => true - ], - 'Status' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketLifecycleConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'lifecycle', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Rules' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Rule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => [ - 'Transitions' => [ - 'type' => 'array', - 'sentAs' => 'Transition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Transition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string' - ], - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'Expiration' => [ - 'type' => 'object', - 'properties' => [ - 'Date' => [ - 'type' => 'string' - ], - 'Days' => [ - 'type' => 'integer' - ] - ] - ], - 'NoncurrentVersionTransitions' => [ - 'type' => 'array', - 'sentAs' => 'NoncurrentVersionTransition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'NoncurrentVersionTransition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string' - ], - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'NoncurrentVersionExpiration' => [ - 'type' => 'object', - 'properties' => [ - 'NoncurrentDays' => [ - 'type' => 'integer' - ] - ] - ], - 'ID' => [ - 'type' => 'string' - ], - 'Prefix' => [ - 'type' => 'string' - ], - 'Status' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketLifecycleConfiguration' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'lifecycle', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketWebsiteConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'website', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'WebsiteConfiguration' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ErrorDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ], - 'IndexDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Suffix' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ], - 'RedirectAllRequestsTo' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'HostName' => [ - 'required' => true, - 'type' => 'string' - ], - 'Protocol' => [ - 'type' => 'string' - ] - ] - ], - 'RoutingRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'items' => [ - 'name' => 'RoutingRule', - 'type' => 'object', - 'properties' => [ - 'Condition' => [ - 'type' => 'object', - 'properties' => [ - 'HttpErrorCodeReturnedEquals' => [ - 'type' => 'numeric' - ], - 'KeyPrefixEquals' => [ - 'type' => 'string' - ] - ] - ], - 'Redirect' => [ - 'required' => true, - 'type' => 'object', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'HttpRedirectCode' => [ - 'type' => 'numeric' - ], - 'Protocol' => [ - 'type' => 'string' - ], - 'ReplaceKeyPrefixWith' => [ - 'type' => 'string' - ], - 'ReplaceKeyWith' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketWebsiteConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'website', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'RedirectAllRequestsTo' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'Protocol' => [ - 'type' => 'string' - ] - ] - ], - 'IndexDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Suffix' => [ - 'type' => 'string' - ] - ] - ], - 'ErrorDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ] - ] - ], - 'RoutingRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'items' => [ - 'name' => 'RoutingRule', - 'type' => 'object', - 'sentAs' => 'RoutingRule', - 'properties' => [ - 'Condition' => [ - 'type' => 'object', - 'properties' => [ - 'HttpErrorCodeReturnedEquals' => [ - 'type' => 'integer' - ], - 'KeyPrefixEquals' => [ - 'type' => 'string' - ] - ] - ], - 'Redirect' => [ - 'type' => 'object', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'HttpRedirectCode' => [ - 'type' => 'integer' - ], - 'Protocol' => [ - 'type' => 'string' - ], - 'ReplaceKeyPrefixWith' => [ - 'type' => 'string' - ], - 'ReplaceKeyWith' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketWebsiteConfiguration' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'website', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketVersioningConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'versioning', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'VersioningConfiguration' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Status' => [ - 'type' => 'string', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketVersioningConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'versioning', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Status' => [ - 'type' => 'string', - 'location' => 'xml' - ] - ] - ] - ], - - 'setBucketCors' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'cors', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CORSConfiguration' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'CorsRules' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'CORSRule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'CORSRule', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'AllowedMethod' => [ - 'required' => true, - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'AllowedMethod' - ] - ], - 'AllowedOrigin' => [ - 'required' => true, - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'sentAs' => 'AllowedOrigin', - 'type' => 'string' - ] - ], - 'AllowedHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'AllowedHeader', - 'type' => 'string' - ] - ], - 'MaxAgeSeconds' => [ - 'type' => 'numeric' - ], - 'ExposeHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ExposeHeader', - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketCors' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'cors', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'CorsRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'CORSRule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'AllowedMethod' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'AllowedMethod' - ] - ], - 'AllowedOrigin' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'sentAs' => 'AllowedOrigin', - 'type' => 'string' - ] - ], - 'AllowedHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'AllowedHeader', - 'type' => 'string' - ] - ], - 'MaxAgeSeconds' => [ - 'type' => 'integer' - ], - 'ExposeHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ExposeHeader', - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketCors' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'cors', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'optionsBucket' => [ - 'httpMethod' => 'OPTIONS', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Origin' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header' - ], - 'AccessControlRequestMethods' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Method', - 'type' => 'string' - ] - ], - 'AccessControlRequestHeaders' => [ - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Headers', - 'type' => 'string' - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ] - ] - ] - ], - - 'setBucketTagging' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'tagging', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Tagging' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Tags' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TagSet', - 'items' => [ - 'required' => true, - 'type' => 'object', - 'name' => 'Tag', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ], - 'Value' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketTagging' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'tagging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Tags' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TagSet', - 'items' => [ - 'type' => 'object', - 'name' => 'Tag', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketTagging' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'tagging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setBucketNotification' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'notification', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'NotificationConfiguration' - ], - 'xmlAllowEmpty' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'TopicConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Topic' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event', - 'transform' => 'event' - ] - ], - ] - ] - ], - 'FunctionStageConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'FunctionStageConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'FunctionStageConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'FunctionStage' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'FunctionGraphConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'FunctionGraphConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'FunctionGraphConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'FunctionGraph' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'getBucketNotification' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'notification', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'TopicConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'Topic' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'FunctionStageConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'FunctionStageConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'FunctionStageConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'FunctionStage' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'FunctionGraphConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'FunctionGraphConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'FunctionGraphConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'FunctionGraph' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'Object', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - - 'optionsObject' => [ - 'httpMethod' => 'OPTIONS', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Origin' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header' - ], - 'AccessControlRequestMethods' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Method', - 'type' => 'string' - ] - ], - 'AccessControlRequestHeaders' => [ - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Headers', - 'type' => 'string' - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ] - ] - ] - ], - - 'deleteObject' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'DeleteMarker' => [ - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-obs-delete-marker' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - 'deleteObjects' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'delete', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Delete' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Quiet' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Objects' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Object', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Deleteds' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Deleted', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'DeletedObject', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'DeleteMarker' => [ - 'type' => 'boolean' - ], - 'DeleteMarkerVersionId' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Errors' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Error', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Error', - 'type' => 'object', - 'sentAs' => 'Error', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'Code' => [ - 'type' => 'string' - ], - 'Message' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'setObjectAcl' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'acl', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'AccessControlPolicy' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'GrantRead' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-read' - ], - 'GrantWrite' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-write' - ], - 'GrantReadAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-read-acp' - ], - 'GrantWriteAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-write-acp' - ], - 'GrantFullControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-grant-full-control' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Delivered' => [ - 'type' => 'boolean' - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'getObjectAcl' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'acl', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Delivered' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string', - 'sentAs' => 'Canned' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'VersionId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ] - ] - ] - ], - - 'restoreObject' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'restore', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'RestoreRequest' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'Days' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'xml', - 'sentAs' => 'Days' - ], - 'Tier' => [ - 'wrapper' => 'RestoreJob', - 'type' => 'string', - 'sentAs' => 'Tier', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'putObject' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class', - 'transform' => 'storageClass' - ], - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Callback' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-callback' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'ContentMD5' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-MD5' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'ContentLength' => [ - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-obs-meta-' - ], - 'SourceFile' => [ - 'type' => 'file', - 'location' => 'body' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'SuccessRedirect' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'success-action-redirect' - ], - 'Expires' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-expires' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'getObject' => [ - 'httpMethod' => 'GET', - 'stream' => true, - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'IfMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-Match' - ], - 'IfModifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Modified-Since' - ], - 'IfNoneMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-None-Match' - ], - 'IfUnmodifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Unmodified-Since' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Range' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'ImageProcess' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'x-image-process' - ], - 'ResponseCacheControl' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-cache-control' - ], - 'ResponseContentDisposition' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-disposition' - ], - 'ResponseContentEncoding' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-encoding' - ], - 'ResponseContentLanguage' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-language' - ], - 'ResponseContentType' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-type' - ], - 'ResponseExpires' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'query', - 'sentAs' => 'response-expires' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'SaveAsFile' => [ - 'type' => 'file', - 'location' => 'response' - ], - 'FilePath' => [ - 'type' => 'file', - 'location' => 'response' - ], - - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'DeleteMarker' => [ - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-obs-delete-marker' - ], - 'Expiration' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-expiration' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'last-modified' - ], - 'ContentLength' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'content-length' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'etag' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'CacheControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'cache-control' - ], - 'ContentDisposition' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-disposition' - ], - 'ContentEncoding' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-encoding' - ], - 'ContentLanguage' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-language' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'Expires' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-website-redirect-location' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class' - ], - 'Restore' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-restore' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ], - 'Metadata' => [ - 'location' => 'header', - 'type' => 'object', - 'sentAs' => 'x-obs-meta-' - ], - 'ObjectType' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-object-type' - ], - 'AppendPosition' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-next-append-position' - ] - ] - ] - ], - - 'copyObject' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class', - 'transform' => 'storageClass' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'CopySource' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source' - ], - 'CopySourceIfMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-if-match' - ], - 'CopySourceIfModifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-if-modified-since' - ], - 'CopySourceIfNoneMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-if-none-match' - ], - 'CopySourceIfUnmodifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-if-unmodified-since' - ], - 'MetadataDirective' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-metadata-directive' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'ContentEncoding' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-encoding' - ], - 'ContentLanguage' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-language' - ], - 'ContentDisposition' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-disposition' - ], - 'CacheControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'cache-control' - ], - 'Expires' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'expires' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-obs-meta-' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'CopySourceSseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-server-side-encryption-customer-algorithm' - ], - 'CopySourceSseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'CopySourceVersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'getObjectMetadata' => [ - 'httpMethod' => 'HEAD', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Expiration' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-expiration' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'last-modified' - ], - 'ContentLength' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'content-length' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-website-redirect-location' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'Restore' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-restore' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ], - 'Metadata' => [ - 'location' => 'header', - 'type' => 'object', - 'sentAs' => 'x-obs-meta-' - ], - 'ObjectType' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-object-type' - ], - 'AppendPosition' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-next-append-position' - ] - ] - ] - ], - - 'initiateMultipartUpload' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'uploads', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-storage-class', - 'transform' => 'storageClass' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-obs-meta-' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'Expires' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-expires' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'Bucket' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadId' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'listMultipartUploads' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'uploads', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker' - ], - 'MaxUploads' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-uploads' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ], - 'UploadIdMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'upload-id-marker' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextKeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextUploadIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxUploads' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Uploads' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Upload', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'MultipartUpload', - 'type' => 'object', - 'sentAs' => 'Upload', - 'properties' => [ - 'UploadId' => [ - 'type' => 'string' - ], - 'Key' => [ - 'type' => 'string' - ], - 'Initiated' => [ - 'type' => 'string' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Initiator' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'abortMultipartUpload' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'uploadPart' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'SourceFile' => [ - 'type' => 'file', - 'location' => 'body' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'PartNumber' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'Offset' => [ - 'type' => 'numeric', - 'location' => 'response' - ], - 'PartSize' => [ - 'type' => 'numeric', - 'location' => 'response' - ], - 'ContentMD5' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-MD5' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'completeMultipartUpload' => [ - 'httpMethod' => 'POST', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CompleteMultipartUpload' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Parts' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CompletedPart', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => [ - 'PartNumber' => [ - 'type' => 'numeric' - ], - 'ETag' => [ - 'type' => 'string' - ] - ] - ] - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'Callback' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-callback' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Location' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Location' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'listParts' => [ - 'httpMethod' => 'GET', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'MaxParts' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-parts' - ], - 'PartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'part-number-marker' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadId' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'PartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'NextPartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'MaxParts' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Parts' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Part', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Part', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => [ - 'PartNumber' => [ - 'type' => 'integer' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ] - ] - ] - ], - 'Initiator' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ] - ], - - 'copyPart' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'CopySource' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source' - ], - 'CopySourceRange' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-range' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'PartNumber' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'CopySourceSseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-server-side-encryption-customer-algorithm' - ], - 'CopySourceSseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-copy-source-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'setBucketCustomDomain' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'DomainName' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'customdomain' - ] - - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'getBucketCustomDomain' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'customdomain', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Domains' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Domains', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'DomainName' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'DomainName' - ], - 'CreateTime' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'CreateTime' - ], - ] - ] - ] - ] - ] - ], - - 'deleteBucketCustomDomain' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'DomainName' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'customdomain' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - ], - - 'aliases' => [ - 'headBucket' => 'getBucketMetadata', - - 'getBucketLogging' => 'getBucketLoggingConfiguration', - 'setBucketLogging' => 'setBucketLoggingConfiguration', - 'getBucketVersioning' => 'getBucketVersioningConfiguration', - 'setBucketVersioning' => 'setBucketVersioningConfiguration', - 'setBucketWebsite' => 'setBucketWebsiteConfiguration', - 'getBucketWebsite' => 'getBucketWebsiteConfiguration', - 'deleteBucketWebsite' => 'deleteBucketWebsiteConfiguration', - 'setBucketLifecycle' => 'setBucketLifecycleConfiguration', - 'getBucketLifecycle' => 'getBucketLifecycleConfiguration', - 'deleteBucketLifecycle' => 'deleteBucketLifecycleConfiguration' - ] - ]; -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2Constants.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2Constants.php deleted file mode 100644 index 57cb93d4..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2Constants.php +++ /dev/null @@ -1,38 +0,0 @@ - 'ContentLength', - 'date' => 'Date', - 'x-amz-request-id' => 'RequestId', - 'x-amz-id-2' => 'Id2', - 'x-reserved' => 'Reserved' - ]; -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2RequestResource.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2RequestResource.php deleted file mode 100644 index a59c9952..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Resource/V2RequestResource.php +++ /dev/null @@ -1,4121 +0,0 @@ - [ - 'createBucket' => [ - 'httpMethod' => 'PUT', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CreateBucketConfiguration' - ] - ], - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'LocationConstraint' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-default-storage-class', - 'transform' => 'storageClass' - ] - ], - 'responseParameters' => [ - 'Location' => [ - 'type' => 'string', - 'location' => 'header', - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ], - - 'listBuckets' => [ - 'httpMethod' => 'GET', - 'requestParameters' => [ - 'QueryLocation' => [ - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-amz-location', - ], - ], - 'responseParameters' => [ - 'Buckets' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Buckets', - 'items' => [ - 'name' => 'Bucket', - 'type' => 'object', - 'sentAs' => 'Bucket', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - 'CreationDate' => [ - 'type' => 'string' - ], - 'Location' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ], - - 'deleteBucket' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'listObjects' => [ - 'httpMethod' => 'GET', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'Marker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'marker' - ], - 'MaxKeys' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Marker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Contents' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Contents', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Object', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'Name' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxKeys' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-bucket-region' - ] - ] - ] - ], - - 'listVersions' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'versions', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker' - ], - 'MaxKeys' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-keys' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ], - 'VersionIdMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'version-id-marker' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextKeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextVersionIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Versions' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Version', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ObjectVersion', - 'type' => 'object', - 'sentAs' => 'Version', - 'properties' => [ - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'IsLatest' => [ - 'type' => 'boolean' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'DeleteMarkers' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'DeleteMarker', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'DeleteMarkerEntry', - 'type' => 'object', - 'sentAs' => 'DeleteMarker', - 'properties' => [ - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'IsLatest' => [ - 'type' => 'boolean' - ], - 'LastModified' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Name' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxKeys' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-bucket-region' - ] - ] - ] - ], - - 'getBucketMetadata' => [ - 'httpMethod' => 'HEAD', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-default-storage-class' - ], - - 'Location' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-bucket-region' - ], - - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age', - 'type' => 'integer' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ] - ] - ], - - 'getBucketLocation' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'location', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Location' => [ - 'type' => 'string', - 'sentAs' => 'LocationConstraint', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketStorageInfo' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'storageinfo', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Size' => [ - 'type' => 'numeric', - 'location' => 'xml', - 'sentAs' => 'Size' - ], - 'ObjectNumber' => [ - 'type' => 'integer', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - 'setBucketQuota' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'quota', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Quota' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'StorageQuota' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketQuota' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'quota', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'StorageQuota' => [ - 'type' => 'integer', - 'location' => 'xml', - 'sentAs' => 'StorageQuota' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketStoragePolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'storagePolicy', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'StoragePolicy' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'StorageClass' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'DefaultStorageClass', - 'transform' => 'storageClass' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketStoragePolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'storagePolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'DefaultStorageClass' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketAcl' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'acl', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'AccessControlPolicy' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'GrantRead' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-read' - ], - 'GrantWrite' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-write' - ], - 'GrantReadAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-read-acp' - ], - 'GrantWriteAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-write-acp' - ], - 'GrantFullControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-full-control' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'Type' => [ - 'required' => true, - 'type' => 'string', - 'sentAs' => 'xsi:type', - 'data' => [ - 'xmlAttribute' => true, - 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance' - ] - ], - 'URI' => [ - 'type' => 'string', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketAcl' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'acl', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - - 'setBucketLoggingConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'logging', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'BucketLoggingStatus' - ], - 'xmlAllowEmpty' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'LoggingEnabled' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'TargetBucket' => [ - 'type' => 'string' - ], - 'TargetPrefix' => [ - 'type' => 'string' - ], - 'TargetGrants' => [ - 'type' => 'array', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'Type' => [ - 'required' => true, - 'type' => 'string', - 'sentAs' => 'xsi:type', - 'data' => [ - 'xmlAttribute' => true, - 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance' - ] - ], - 'URI' => [ - 'type' => 'string', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketLoggingConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'logging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'LoggingEnabled' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'TargetBucket' => [ - 'type' => 'string' - ], - 'TargetGrants' => [ - 'type' => 'array', - 'sentAs' => 'TargetGrants', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ], - 'TargetPrefix' => [ - 'type' => 'string' - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setFetchPolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Policy' => [ - 'required' => true, - 'type' => 'json', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getFetchPolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Policy' => [ - 'type' => 'json', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'deleteFetchPolicy' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'obsfetchpolicy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ], - - 'setFetchJob' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'obsfetchjob', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Job' => [ - 'required' => true, - 'type' => 'json', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'JobInfo' => [ - 'type' => 'string', - 'location' => 'body' - ] - ] - ] - ], - - 'getFetchJob' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'obsfetchjob', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'JobID' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'x-fetch-job-id' - ], - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Job' => [ - 'type' => 'json', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketPolicy' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Policy' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'body' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketPolicy' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Policy' => [ - 'type' => 'string', - 'location' => 'body' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'deleteBucketPolicy' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'policy', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketLifecycleConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'lifecycle', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'LifecycleConfiguration' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Rules' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Rule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => [ - 'Transitions' => [ - 'type' => 'array', - 'sentAs' => 'Transition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Transition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'transform' => 'storageClass' - ], - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'Expiration' => [ - 'type' => 'object', - 'properties' => [ - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ], - 'NoncurrentVersionTransitions' => [ - 'type' => 'array', - 'sentAs' => 'NoncurrentVersionTransition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'NoncurrentVersionTransition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string', - 'transform' => 'storageClass' - ], - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'NoncurrentVersionExpiration' => [ - 'type' => 'object', - 'properties' => [ - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ], - 'ID' => [ - 'type' => 'string' - ], - 'Prefix' => [ - 'required' => true, - 'type' => 'string', - 'canEmpty' => true - ], - 'Status' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketLifecycleConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'lifecycle', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Rules' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Rule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Rule', - 'type' => 'object', - 'sentAs' => 'Rule', - 'properties' => [ - 'Transitions' => [ - 'type' => 'array', - 'sentAs' => 'Transition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Transition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string' - ], - 'Date' => [ - 'type' => 'string', - 'format' => 'date-time-middle' - ], - 'Days' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'Expiration' => [ - 'type' => 'object', - 'properties' => [ - 'Date' => [ - 'type' => 'string' - ], - 'Days' => [ - 'type' => 'integer' - ] - ] - ], - 'NoncurrentVersionTransitions' => [ - 'type' => 'array', - 'sentAs' => 'NoncurrentVersionTransition', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'NoncurrentVersionTransition', - 'properties' => [ - 'StorageClass' => [ - 'type' => 'string' - ], - 'NoncurrentDays' => [ - 'type' => 'numeric' - ] - ] - ] - ], - 'NoncurrentVersionExpiration' => [ - 'type' => 'object', - 'properties' => [ - 'NoncurrentDays' => [ - 'type' => 'integer' - ] - ] - ], - 'ID' => [ - 'type' => 'string' - ], - 'Prefix' => [ - 'type' => 'string' - ], - 'Status' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketLifecycleConfiguration' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'lifecycle', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketWebsiteConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'website', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'WebsiteConfiguration' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ErrorDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ], - 'IndexDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Suffix' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ], - 'RedirectAllRequestsTo' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'HostName' => [ - 'required' => true, - 'type' => 'string' - ], - 'Protocol' => [ - 'type' => 'string' - ] - ] - ], - 'RoutingRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'items' => [ - 'name' => 'RoutingRule', - 'type' => 'object', - 'properties' => [ - 'Condition' => [ - 'type' => 'object', - 'properties' => [ - 'HttpErrorCodeReturnedEquals' => [ - 'type' => 'numeric' - ], - 'KeyPrefixEquals' => [ - 'type' => 'string' - ] - ] - ], - 'Redirect' => [ - 'required' => true, - 'type' => 'object', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'HttpRedirectCode' => [ - 'type' => 'numeric' - ], - 'Protocol' => [ - 'type' => 'string' - ], - 'ReplaceKeyPrefixWith' => [ - 'type' => 'string' - ], - 'ReplaceKeyWith' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketWebsiteConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'website', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'RedirectAllRequestsTo' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'Protocol' => [ - 'type' => 'string' - ] - ] - ], - 'IndexDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Suffix' => [ - 'type' => 'string' - ] - ] - ], - 'ErrorDocument' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ] - ] - ], - 'RoutingRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'items' => [ - 'name' => 'RoutingRule', - 'type' => 'object', - 'sentAs' => 'RoutingRule', - 'properties' => [ - 'Condition' => [ - 'type' => 'object', - 'properties' => [ - 'HttpErrorCodeReturnedEquals' => [ - 'type' => 'integer' - ], - 'KeyPrefixEquals' => [ - 'type' => 'string' - ] - ] - ], - 'Redirect' => [ - 'type' => 'object', - 'properties' => [ - 'HostName' => [ - 'type' => 'string' - ], - 'HttpRedirectCode' => [ - 'type' => 'integer' - ], - 'Protocol' => [ - 'type' => 'string' - ], - 'ReplaceKeyPrefixWith' => [ - 'type' => 'string' - ], - 'ReplaceKeyWith' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketWebsiteConfiguration' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'website', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketVersioningConfiguration' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'versioning', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'VersioningConfiguration' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Status' => [ - 'type' => 'string', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketVersioningConfiguration' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'versioning', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Status' => [ - 'type' => 'string', - 'location' => 'xml' - ] - ] - ] - ], - - 'setBucketCors' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'cors', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CORSConfiguration' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'CorsRules' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'CORSRule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'CORSRule', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'AllowedMethod' => [ - 'required' => true, - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'AllowedMethod' - ] - ], - 'AllowedOrigin' => [ - 'required' => true, - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'sentAs' => 'AllowedOrigin', - 'type' => 'string' - ] - ], - 'AllowedHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'AllowedHeader', - 'type' => 'string' - ] - ], - 'MaxAgeSeconds' => [ - 'type' => 'numeric' - ], - 'ExposeHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ExposeHeader', - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketCors' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'cors', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'CorsRules' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'CORSRule', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'AllowedMethod' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'AllowedMethod' - ] - ], - 'AllowedOrigin' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'sentAs' => 'AllowedOrigin', - 'type' => 'string' - ] - ], - 'AllowedHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'AllowedHeader', - 'type' => 'string' - ] - ], - 'MaxAgeSeconds' => [ - 'type' => 'integer' - ], - 'ExposeHeader' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'ExposeHeader', - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketCors' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'cors', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'optionsBucket' => [ - 'httpMethod' => 'OPTIONS', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Origin' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header' - ], - 'AccessControlRequestMethods' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Method', - 'type' => 'string' - ] - ], - 'AccessControlRequestHeaders' => [ - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Headers', - 'type' => 'string' - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ] - ] - ] - ], - - 'setBucketTagging' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'tagging', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Tagging' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Tags' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TagSet', - 'items' => [ - 'required' => true, - 'type' => 'object', - 'name' => 'Tag', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ], - 'Value' => [ - 'required' => true, - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketTagging' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'tagging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'Tags' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TagSet', - 'items' => [ - 'type' => 'object', - 'name' => 'Tag', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ], - - 'deleteBucketTagging' => [ - 'httpMethod' => 'DELETE', - 'specialParam' => 'tagging', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setBucketNotification' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'notification', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'NotificationConfiguration' - ], - 'xmlAllowEmpty' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - - 'TopicConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'S3Key', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Topic' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event', - 'transform' => 'event' - ] - ], - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'getBucketNotification' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'notification', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'TopicConfigurations' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'location' => 'xml', - 'sentAs' => 'TopicConfiguration', - 'properties' => [ - 'ID' => [ - 'type' => 'string', - 'sentAs' => 'Id' - ], - 'Topic' => [ - 'type' => 'string' - ], - 'Event' => [ - 'type' => 'array', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'string', - 'sentAs' => 'Event' - ] - ], - 'Filter' => [ - 'type' => 'array', - 'wrapper' => 'Filter', - 'sentAs' => 'S3Key', - 'items' => [ - 'type' => 'object', - 'sentAs' => 'FilterRule', - 'properties' => [ - 'Name' => [ - 'type' => 'string' - ], - - 'Value' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ] - ] - ] - ] - ], - - 'optionsObject' => [ - 'httpMethod' => 'OPTIONS', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Origin' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header' - ], - 'AccessControlRequestMethods' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Method', - 'type' => 'string' - ] - ], - 'AccessControlRequestHeaders' => [ - 'type' => 'array', - 'location' => 'header', - 'items' => [ - 'sentAs' => 'Access-Control-Request-Headers', - 'type' => 'string' - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ] - ] - ] - ], - - 'deleteObject' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'DeleteMarker' => [ - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-amz-delete-marker' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - 'deleteObjects' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'delete', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'Delete' - ], - 'contentMd5' => true - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Quiet' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Objects' => [ - 'required' => true, - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'sentAs' => 'Object', - 'properties' => [ - 'Key' => [ - 'required' => true, - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Deleteds' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Deleted', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'DeletedObject', - 'type' => 'object', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'DeleteMarker' => [ - 'type' => 'boolean' - ], - 'DeleteMarkerVersionId' => [ - 'type' => 'string' - ] - ] - ] - ], - 'Errors' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Error', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Error', - 'type' => 'object', - 'sentAs' => 'Error', - 'properties' => [ - 'Key' => [ - 'type' => 'string' - ], - 'VersionId' => [ - 'type' => 'string' - ], - 'Code' => [ - 'type' => 'string' - ], - 'Message' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'setObjectAcl' => [ - 'httpMethod' => 'PUT', - 'specialParam' => 'acl', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'AccessControlPolicy' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'GrantRead' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-read' - ], - 'GrantWrite' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-write' - ], - 'GrantReadAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-read-acp' - ], - 'GrantWriteAcp' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-write-acp' - ], - 'GrantFullControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-grant-full-control' - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'Type' => [ - 'required' => true, - 'type' => 'string', - 'sentAs' => 'xsi:type', - 'data' => [ - 'xmlAttribute' => true, - 'xmlNamespace' => 'http://www.w3.org/2001/XMLSchema-instance' - ] - ], - 'URI' => [ - 'type' => 'string', - 'transform' => 'aclUri' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ], - - 'getObjectAcl' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'acl', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Grants' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'AccessControlList', - 'items' => [ - 'name' => 'Grant', - 'type' => 'object', - 'sentAs' => 'Grant', - 'properties' => [ - 'Grantee' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ], - 'URI' => [ - 'type' => 'string' - ] - ] - ], - 'Permission' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'VersionId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ] - ] - ] - ], - - 'restoreObject' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'restore', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'RestoreRequest' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'Days' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'xml', - 'sentAs' => 'Days' - ], - 'Tier' => [ - 'wrapper' => 'GlacierJobParameters', - 'type' => 'string', - 'sentAs' => 'Tier', - 'location' => 'xml' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ], - - 'putObject' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class', - 'transform' => 'storageClass' - ], - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Callback' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-callback' - ], - 'ContentMD5' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-MD5' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'ContentLength' => [ - 'type' => 'numeric', - 'location' => 'header', - 'sentAs' => 'Content-Length' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-amz-meta-' - ], - 'SourceFile' => [ - 'type' => 'file', - 'location' => 'body' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'Expires' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-expires' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'getObject' => [ - 'httpMethod' => 'GET', - 'stream' => true, - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'IfMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-Match' - ], - 'IfModifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Modified-Since' - ], - 'IfNoneMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'If-None-Match' - ], - 'IfUnmodifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'If-Unmodified-Since' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Range' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'ImageProcess' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'x-image-process' - ], - 'ResponseCacheControl' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-cache-control' - ], - 'ResponseContentDisposition' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-disposition' - ], - 'ResponseContentEncoding' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-encoding' - ], - 'ResponseContentLanguage' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-language' - ], - 'ResponseContentType' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'response-content-type' - ], - 'ResponseExpires' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'query', - 'sentAs' => 'response-expires' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'SaveAsFile' => [ - 'type' => 'file', - 'location' => 'response' - ], - 'FilePath' => [ - 'type' => 'file', - 'location' => 'response' - ], - - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'DeleteMarker' => [ - 'type' => 'boolean', - 'location' => 'header', - 'sentAs' => 'x-amz-delete-marker' - ], - 'Expiration' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-expiration' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'last-modified' - ], - 'ContentLength' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'content-length' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'etag' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'CacheControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'cache-control' - ], - 'ContentDisposition' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-disposition' - ], - 'ContentEncoding' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-encoding' - ], - 'ContentLanguage' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-language' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'Expires' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-website-redirect-location' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class' - ], - 'Restore' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-restore' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ], - 'Metadata' => [ - 'location' => 'header', - 'type' => 'object', - 'sentAs' => 'x-amz-meta-' - ] - ] - ] - ], - - 'copyObject' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class', - 'transform' => 'storageClass' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'CopySource' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source' - ], - 'CopySourceIfMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-if-match' - ], - 'CopySourceIfModifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-if-modified-since' - ], - 'CopySourceIfNoneMatch' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-if-none-match' - ], - 'CopySourceIfUnmodifiedSince' => [ - 'type' => 'string', - 'format' => 'date-time-http', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-if-unmodified-since' - ], - 'MetadataDirective' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-metadata-directive' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'ContentEncoding' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-encoding' - ], - 'ContentLanguage' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-language' - ], - 'ContentDisposition' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-disposition' - ], - 'CacheControl' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'cache-control' - ], - 'Expires' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'expires' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-amz-meta-' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'CopySourceSseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-algorithm' - ], - 'CopySourceSseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'CopySourceVersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'getObjectMetadata' => [ - 'httpMethod' => 'HEAD', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'versionId' - ], - 'Origin' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Origin' - ], - 'RequestHeader' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Access-Control-Request-Headers' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Expiration' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-expiration' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'last-modified' - ], - 'ContentLength' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'content-length' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'content-type' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-website-redirect-location' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'StorageClass' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class' - ], - 'AllowOrigin' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-origin' - ], - 'MaxAgeSeconds' => [ - 'type' => 'integer', - 'location' => 'header', - 'sentAs' => 'access-control-max-age' - ], - 'ExposeHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-expose-headers' - ], - 'AllowMethod' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-methods' - ], - 'AllowHeader' => [ - 'location' => 'header', - 'sentAs' => 'access-control-allow-headers' - ], - 'Restore' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-restore' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ], - 'Metadata' => [ - 'location' => 'header', - 'type' => 'object', - 'sentAs' => 'x-amz-meta-' - ] - ] - ] - ], - - 'initiateMultipartUpload' => [ - 'httpMethod' => 'POST', - 'specialParam' => 'uploads', - 'requestParameters' => [ - 'ACL' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-acl', - 'transform' => 'aclHeader' - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-storage-class', - 'transform' => 'storageClass' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Metadata' => [ - 'type' => 'object', - 'location' => 'header', - 'sentAs' => 'x-amz-meta-' - ], - 'WebsiteRedirectLocation' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-website-redirect-location' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'Expires' => [ - 'location' => 'header', - 'type' => 'string', - 'sentAs' => 'x-obs-expires' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'Bucket' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadId' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'listMultipartUploads' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'uploads', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'delimiter' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'key-marker' - ], - 'MaxUploads' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-uploads' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'prefix' - ], - 'UploadIdMarker' => [ - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'upload-id-marker' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'KeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextKeyMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Prefix' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Delimiter' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'NextUploadIdMarker' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'MaxUploads' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Uploads' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Upload', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'MultipartUpload', - 'type' => 'object', - 'sentAs' => 'Upload', - 'properties' => [ - 'UploadId' => [ - 'type' => 'string' - ], - 'Key' => [ - 'type' => 'string' - ], - 'Initiated' => [ - 'type' => 'string' - ], - 'StorageClass' => [ - 'type' => 'string' - ], - 'Owner' => [ - 'type' => 'object', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'Initiator' => [ - 'type' => 'object', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'DisplayName' => [ - 'type' => 'string' - ] - ] - ] - ] - ] - ], - 'CommonPrefixes' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CommonPrefix', - 'type' => 'object', - 'properties' => [ - 'Prefix' => [ - 'type' => 'string' - ] - ] - ] - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'abortMultipartUpload' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'uploadPart' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Body' => [ - 'type' => 'stream', - 'location' => 'body' - ], - 'SourceFile' => [ - 'type' => 'file', - 'location' => 'body' - ], - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'PartNumber' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'Offset' => [ - 'type' => 'numeric', - 'location' => 'response' - ], - 'PartSize' => [ - 'type' => 'numeric', - 'location' => 'response' - ], - 'ContentMD5' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-MD5' - ], - 'ContentType' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'Content-Type' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'header' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'completeMultipartUpload' => [ - 'httpMethod' => 'POST', - 'data' => [ - 'xmlRoot' => [ - 'name' => 'CompleteMultipartUpload' - ] - ], - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'Parts' => [ - 'type' => 'array', - 'location' => 'xml', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'CompletedPart', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => [ - 'PartNumber' => [ - 'type' => 'numeric' - ], - 'ETag' => [ - 'type' => 'string' - ] - ] - ] - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'Callback' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-callback' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Location' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Location' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'VersionId' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-version-id' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'listParts' => [ - 'httpMethod' => 'GET', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'MaxParts' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'max-parts' - ], - 'PartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'part-number-marker' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'Bucket' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'Key' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'UploadId' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'PartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'NextPartNumberMarker' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'MaxParts' => [ - 'type' => 'numeric', - 'location' => 'xml' - ], - 'IsTruncated' => [ - 'type' => 'boolean', - 'location' => 'xml' - ], - 'Parts' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Part', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'name' => 'Part', - 'type' => 'object', - 'sentAs' => 'Part', - 'properties' => [ - 'PartNumber' => [ - 'type' => 'integer' - ], - 'LastModified' => [ - 'type' => 'string' - ], - 'ETag' => [ - 'type' => 'string' - ], - 'Size' => [ - 'type' => 'integer' - ] - ] - ] - ], - 'Initiator' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'ID' => [ - 'type' => 'string' - ], - 'DisplayName' => [ - 'type' => 'string' - ] - ] - ], - 'Owner' => [ - 'type' => 'object', - 'location' => 'xml', - 'properties' => [ - 'DisplayName' => [ - 'type' => 'string' - ], - 'ID' => [ - 'type' => 'string' - ] - ] - ], - 'StorageClass' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ] - ] - ] - ], - - 'copyPart' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'CopySource' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source' - ], - 'CopySourceRange' => [ - 'type' => 'string', - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-range' - ], - 'Key' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'uri' - ], - 'PartNumber' => [ - 'required' => true, - 'type' => 'numeric', - 'location' => 'query', - 'sentAs' => 'partNumber' - ], - 'UploadId' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'uploadId' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key', - 'type' => 'password' - ], - 'CopySourceSseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-algorithm' - ], - 'CopySourceSseCKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-copy-source-server-side-encryption-customer-key', - 'type' => 'password' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'ETag' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'LastModified' => [ - 'type' => 'string', - 'location' => 'xml' - ], - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-request-id' - ], - 'SseKms' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption' - ], - 'SseKmsKey' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-aws-kms-key-id' - ], - 'SseC' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-algorithm' - ], - 'SseCKeyMd5' => [ - 'location' => 'header', - 'sentAs' => 'x-amz-server-side-encryption-customer-key-MD5' - ] - ] - ] - ], - - 'setBucketCustomDomain' => [ - 'httpMethod' => 'PUT', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'DomainName' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'customdomain' - ] - - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - - 'getBucketCustomDomain' => [ - 'httpMethod' => 'GET', - 'specialParam' => 'customdomain', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ] - ], - 'responseParameters' => [ - 'type' => 'object', - 'properties' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ], - 'Domains' => [ - 'type' => 'array', - 'location' => 'xml', - 'sentAs' => 'Domains', - 'data' => [ - 'xmlFlattened' => true - ], - 'items' => [ - 'type' => 'object', - 'properties' => [ - 'DomainName' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'DomainName' - ], - 'CreateTime' => [ - 'type' => 'string', - 'location' => 'xml', - 'sentAs' => 'CreateTime' - ], - ] - ] - ] - ] - ] - ], - - 'deleteBucketCustomDomain' => [ - 'httpMethod' => 'DELETE', - 'requestParameters' => [ - 'Bucket' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'dns' - ], - 'DomainName' => [ - 'required' => true, - 'type' => 'string', - 'location' => 'query', - 'sentAs' => 'customdomain' - ] - ], - 'responseParameters' => [ - 'RequestId' => [ - 'location' => 'header', - 'sentAs' => 'x-obs-request-id' - ] - ] - ], - ], - - 'aliases' => [ - 'headBucket' => 'getBucketMetadata', - - 'getBucketLogging' => 'getBucketLoggingConfiguration', - 'setBucketLogging' => 'setBucketLoggingConfiguration', - 'getBucketVersioning' => 'getBucketVersioningConfiguration', - 'setBucketVersioning' => 'setBucketVersioningConfiguration', - 'setBucketWebsite' => 'setBucketWebsiteConfiguration', - 'getBucketWebsite' => 'getBucketWebsiteConfiguration', - 'deleteBucketWebsite' => 'deleteBucketWebsiteConfiguration', - 'setBucketLifecycle' => 'setBucketLifecycleConfiguration', - 'getBucketLifecycle' => 'getBucketLifecycleConfiguration', - 'deleteBucketLifecycle' => 'deleteBucketLifecycleConfiguration' - ] - ]; -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/SendRequestTrait.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/SendRequestTrait.php deleted file mode 100644 index 6bfe5830..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/SendRequestTrait.php +++ /dev/null @@ -1,726 +0,0 @@ - signature, 'v4') === 0) { - return $this -> createV4SignedUrl($args); - } - return $this->createCommonSignedUrl($this->signature,$args); - } - - public function createV2SignedUrl(array $args=[]) { - return $this->createCommonSignedUrl( 'v2',$args); - } - - private function createCommonSignedUrl(string $signature,array $args=[]) { - if(!isset($args['Method'])){ - $obsException = new ObsException('Method param must be specified, allowed values: GET | PUT | HEAD | POST | DELETE | OPTIONS'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $method = strval($args['Method']); - $bucketName = isset($args['Bucket'])? strval($args['Bucket']): null; - $objectKey = isset($args['Key'])? strval($args['Key']): null; - $specialParam = isset($args['SpecialParam'])? strval($args['SpecialParam']): null; - $expires = isset($args['Expires']) && is_numeric($args['Expires']) ? intval($args['Expires']): 300; - - $headers = []; - if(isset($args['Headers']) && is_array($args['Headers']) ){ - foreach ($args['Headers'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $headers[$key] = $val; - } - } - } - - - - $queryParams = []; - if(isset($args['QueryParams']) && is_array($args['QueryParams']) ){ - foreach ($args['QueryParams'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $queryParams[$key] = $val; - } - } - } - - $constants = Constants::selectConstants($signature); - if($this->securityToken && !isset($queryParams[$constants::SECURITY_TOKEN_HEAD])){ - $queryParams[$constants::SECURITY_TOKEN_HEAD] = $this->securityToken; - } - - $sign = new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $method, $this->signature, $this->securityToken, $this->isCname); - - $url = parse_url($this->endpoint); - $host = $url['host']; - - $result = ''; - - if($bucketName){ - if($this-> pathStyle){ - $result = '/' . $bucketName; - }else{ - $host = $this->isCname ? $host : $bucketName . '.' . $host; - } - } - - $headers['Host'] = $host; - - if($objectKey){ - $objectKey = $sign ->urlencodeWithSafe($objectKey); - $result .= '/' . $objectKey; - } - - $result .= '?'; - - if($specialParam){ - $queryParams[$specialParam] = ''; - } - - $queryParams[$constants::TEMPURL_AK_HEAD] = $this->ak; - - - if(!is_numeric($expires) || $expires < 0){ - $expires = 300; - } - $expires = intval($expires) + intval(microtime(true)); - - $queryParams['Expires'] = strval($expires); - - $_queryParams = []; - - foreach ($queryParams as $key => $val){ - $key = $sign -> urlencodeWithSafe($key); - $val = $sign -> urlencodeWithSafe($val); - $_queryParams[$key] = $val; - $result .= $key; - if($val){ - $result .= '=' . $val; - } - $result .= '&'; - } - - $canonicalstring = $sign ->makeCanonicalstring($method, $headers, $_queryParams, $bucketName, $objectKey, $expires); - $signatureContent = base64_encode(hash_hmac('sha1', $canonicalstring, $this->sk, true)); - - $result .= 'Signature=' . $sign->urlencodeWithSafe($signatureContent); - - $model = new Model(); - $model['ActualSignedRequestHeaders'] = $headers; - $model['SignedUrl'] = $url['scheme'] . '://' . $host . ':' . (isset($url['port']) ? $url['port'] : (strtolower($url['scheme']) === 'https' ? '443' : '80')) . $result; - return $model; - } - - public function createV4SignedUrl(array $args=[]){ - if(!isset($args['Method'])){ - $obsException= new ObsException('Method param must be specified, allowed values: GET | PUT | HEAD | POST | DELETE | OPTIONS'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $method = strval($args['Method']); - $bucketName = isset($args['Bucket'])? strval($args['Bucket']): null; - $objectKey = isset($args['Key'])? strval($args['Key']): null; - $specialParam = isset($args['SpecialParam'])? strval($args['SpecialParam']): null; - $expires = isset($args['Expires']) && is_numeric($args['Expires']) ? intval($args['Expires']): 300; - $headers = []; - if(isset($args['Headers']) && is_array($args['Headers']) ){ - foreach ($args['Headers'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $headers[$key] = $val; - } - } - } - - $queryParams = []; - if(isset($args['QueryParams']) && is_array($args['QueryParams']) ){ - foreach ($args['QueryParams'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $queryParams[$key] = $val; - } - } - } - - if($this->securityToken && !isset($queryParams['x-amz-security-token'])){ - $queryParams['x-amz-security-token'] = $this->securityToken; - } - - $v4 = new V4Signature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $this->region, $method, $this->signature, $this->securityToken, $this->isCname); - - $url = parse_url($this->endpoint); - $host = $url['host']; - - $result = ''; - - if($bucketName){ - if($this-> pathStyle){ - $result = '/' . $bucketName; - }else{ - $host = $this->isCname ? $host : $bucketName . '.' . $host; - } - } - - $headers['Host'] = $host; - - if($objectKey){ - $objectKey = $v4 -> urlencodeWithSafe($objectKey); - $result .= '/' . $objectKey; - } - - $result .= '?'; - - if($specialParam){ - $queryParams[$specialParam] = ''; - } - - if(!is_numeric($expires) || $expires < 0){ - $expires = 300; - } - - $expires = strval($expires); - - $date = isset($headers['date']) ? $headers['date'] : (isset($headers['Date']) ? $headers['Date'] : null); - - $timestamp = $date ? date_create_from_format('D, d M Y H:i:s \G\M\T', $date, new \DateTimeZone ('UTC')) -> getTimestamp() - :time(); - - $longDate = gmdate('Ymd\THis\Z', $timestamp); - $shortDate = substr($longDate, 0, 8); - - $headers['host'] = $host; - if(isset($url['port'])){ - $port = $url['port']; - if($port !== 443 && $port !== 80){ - $headers['host'] = $headers['host'] . ':' . $port; - } - } - - $signedHeaders = $v4 -> getSignedHeaders($headers); - - $queryParams['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'; - $queryParams['X-Amz-Credential'] = $v4 -> getCredential($shortDate); - $queryParams['X-Amz-Date'] = $longDate; - $queryParams['X-Amz-Expires'] = $expires; - $queryParams['X-Amz-SignedHeaders'] = $signedHeaders; - - $_queryParams = []; - - foreach ($queryParams as $key => $val){ - $key = rawurlencode($key); - $val = rawurlencode($val); - $_queryParams[$key] = $val; - $result .= $key; - if($val){ - $result .= '=' . $val; - } - $result .= '&'; - } - - $canonicalstring = $v4 -> makeCanonicalstring($method, $headers, $_queryParams, $bucketName, $objectKey, $signedHeaders, 'UNSIGNED-PAYLOAD'); - - $signatureContent = $v4 -> getSignature($canonicalstring, $longDate, $shortDate); - - $result .= 'X-Amz-Signature=' . $v4 -> urlencodeWithSafe($signatureContent); - - $model = new Model(); - $model['ActualSignedRequestHeaders'] = $headers; - $model['SignedUrl'] = $url['scheme'] . '://' . $host . ':' . (isset($url['port']) ? $url['port'] : (strtolower($url['scheme']) === 'https' ? '443' : '80')) . $result; - return $model; - } - - public function createPostSignature(array $args=[]) { - if (strcasecmp($this -> signature, 'v4') === 0) { - return $this -> createV4PostSignature($args); - } - - $bucketName = isset($args['Bucket'])? strval($args['Bucket']): null; - $objectKey = isset($args['Key'])? strval($args['Key']): null; - $expires = isset($args['Expires']) && is_numeric($args['Expires']) ? intval($args['Expires']): 300; - - $formParams = []; - - if(isset($args['FormParams']) && is_array($args['FormParams'])){ - foreach ($args['FormParams'] as $key => $val){ - $formParams[$key] = $val; - } - } - - $constants = Constants::selectConstants($this -> signature); - if($this->securityToken && !isset($formParams[$constants::SECURITY_TOKEN_HEAD])){ - $formParams[$constants::SECURITY_TOKEN_HEAD] = $this->securityToken; - } - - $timestamp = time(); - $expires = gmdate('Y-m-d\TH:i:s\Z', $timestamp + $expires); - - if($bucketName){ - $formParams['bucket'] = $bucketName; - } - - if($objectKey){ - $formParams['key'] = $objectKey; - } - - $policy = []; - - $policy[] = '{"expiration":"'; - $policy[] = $expires; - $policy[] = '", "conditions":['; - - $matchAnyBucket = true; - $matchAnyKey = true; - - $conditionAllowKeys = ['acl', 'bucket', 'key', 'success_action_redirect', 'redirect', 'success_action_status']; - - foreach($formParams as $key => $val){ - if($key){ - $key = strtolower(strval($key)); - - if($key === 'bucket'){ - $matchAnyBucket = false; - }else if($key === 'key'){ - $matchAnyKey = false; - } - - if(!in_array($key, Constants::ALLOWED_REQUEST_HTTP_HEADER_METADATA_NAMES) && strpos($key, $constants::HEADER_PREFIX) !== 0 && !in_array($key, $conditionAllowKeys)){ - $key = $constants::METADATA_PREFIX . $key; - } - - $policy[] = '{"'; - $policy[] = $key; - $policy[] = '":"'; - $policy[] = $val !== null ? strval($val) : ''; - $policy[] = '"},'; - } - } - - if($matchAnyBucket){ - $policy[] = '["starts-with", "$bucket", ""],'; - } - - if($matchAnyKey){ - $policy[] = '["starts-with", "$key", ""],'; - } - - $policy[] = ']}'; - - $originPolicy = implode('', $policy); - - $policy = base64_encode($originPolicy); - - $signatureContent = base64_encode(hash_hmac('sha1', $policy, $this->sk, true)); - - $model = new Model(); - $model['OriginPolicy'] = $originPolicy; - $model['Policy'] = $policy; - $model['Signature'] = $signatureContent; - return $model; - } - - public function createV4PostSignature(array $args=[]){ - $bucketName = isset($args['Bucket'])? strval($args['Bucket']): null; - $objectKey = isset($args['Key'])? strval($args['Key']): null; - $expires = isset($args['Expires']) && is_numeric($args['Expires']) ? intval($args['Expires']): 300; - - $formParams = []; - - if(isset($args['FormParams']) && is_array($args['FormParams'])){ - foreach ($args['FormParams'] as $key => $val){ - $formParams[$key] = $val; - } - } - - if($this->securityToken && !isset($formParams['x-amz-security-token'])){ - $formParams['x-amz-security-token'] = $this->securityToken; - } - - $timestamp = time(); - $longDate = gmdate('Ymd\THis\Z', $timestamp); - $shortDate = substr($longDate, 0, 8); - - $credential = sprintf('%s/%s/%s/s3/aws4_request', $this->ak, $shortDate, $this->region); - - $expires = gmdate('Y-m-d\TH:i:s\Z', $timestamp + $expires); - - $formParams['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256'; - $formParams['X-Amz-Date'] = $longDate; - $formParams['X-Amz-Credential'] = $credential; - - if($bucketName){ - $formParams['bucket'] = $bucketName; - } - - if($objectKey){ - $formParams['key'] = $objectKey; - } - - $policy = []; - - $policy[] = '{"expiration":"'; - $policy[] = $expires; - $policy[] = '", "conditions":['; - - $matchAnyBucket = true; - $matchAnyKey = true; - - $conditionAllowKeys = ['acl', 'bucket', 'key', 'success_action_redirect', 'redirect', 'success_action_status']; - - foreach($formParams as $key => $val){ - if($key){ - $key = strtolower(strval($key)); - - if($key === 'bucket'){ - $matchAnyBucket = false; - }else if($key === 'key'){ - $matchAnyKey = false; - } - - if(!in_array($key, Constants::ALLOWED_REQUEST_HTTP_HEADER_METADATA_NAMES) && strpos($key, V2Constants::HEADER_PREFIX) !== 0 && !in_array($key, $conditionAllowKeys)){ - $key = V2Constants::METADATA_PREFIX . $key; - } - - $policy[] = '{"'; - $policy[] = $key; - $policy[] = '":"'; - $policy[] = $val !== null ? strval($val) : ''; - $policy[] = '"},'; - } - } - - if($matchAnyBucket){ - $policy[] = '["starts-with", "$bucket", ""],'; - } - - if($matchAnyKey){ - $policy[] = '["starts-with", "$key", ""],'; - } - - $policy[] = ']}'; - - $originPolicy = implode('', $policy); - - $policy = base64_encode($originPolicy); - - $dateKey = hash_hmac('sha256', $shortDate, 'AWS4' . $this -> sk, true); - $regionKey = hash_hmac('sha256', $this->region, $dateKey, true); - $serviceKey = hash_hmac('sha256', 's3', $regionKey, true); - $signingKey = hash_hmac('sha256', 'aws4_request', $serviceKey, true); - $signatureContent = hash_hmac('sha256', $policy, $signingKey); - - $model = new Model(); - $model['OriginPolicy'] = $originPolicy; - $model['Policy'] = $policy; - $model['Algorithm'] = $formParams['X-Amz-Algorithm']; - $model['Credential'] = $formParams['X-Amz-Credential']; - $model['Date'] = $formParams['X-Amz-Date']; - $model['Signature'] = $signatureContent; - return $model; - } - - public function __call($originMethod, $args) - { - $method = $originMethod; - - $contents = Constants::selectRequestResource($this->signature); - $resource = &$contents::$RESOURCE_ARRAY; - $async = false; - if(strpos($method, 'Async') === (strlen($method) - 5)){ - $method = substr($method, 0, strlen($method) - 5); - $async = true; - } - - if(isset($resource['aliases'][$method])){ - $method = $resource['aliases'][$method]; - } - - $method = lcfirst($method); - - - $operation = isset($resource['operations'][$method]) ? - $resource['operations'][$method] : null; - - if(!$operation){ - ObsLog::commonLog(WARNING, 'unknow method ' . $originMethod); - $obsException= new ObsException('unknow method '. $originMethod); - $obsException-> setExceptionType('client'); - throw $obsException; - } - - $start = microtime(true); - if(!$async){ - ObsLog::commonLog(INFO, 'enter method '. $originMethod. '...'); - $model = new Model(); - $model['method'] = $method; - $params = empty($args) ? [] : $args[0]; - $this->checkMimeType($method, $params); - $this->doRequest($model, $operation, $params); - ObsLog::commonLog(INFO, 'obsclient cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms to execute '. $originMethod); - unset($model['method']); - return $model; - }else{ - if(empty($args) || !(is_callable($callback = $args[count($args) -1]))){ - ObsLog::commonLog(WARNING, 'async method ' . $originMethod . ' must pass a CallbackInterface as param'); - $obsException= new ObsException('async method ' . $originMethod . ' must pass a CallbackInterface as param'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - ObsLog::commonLog(INFO, 'enter method '. $originMethod. '...'); - $params = count($args) === 1 ? [] : $args[0]; - $this->checkMimeType($method, $params); - $model = new Model(); - $model['method'] = $method; - return $this->doRequestAsync($model, $operation, $params, $callback, $start, $originMethod); - } - } - - private function checkMimeType($method, &$params){ - // fix bug that guzzlehttp lib will add the content-type if not set - if(($method === 'putObject' || $method === 'initiateMultipartUpload' || $method === 'uploadPart') && (!isset($params['ContentType']) || $params['ContentType'] === null)){ - if(isset($params['Key'])){ - try { - $params['ContentType'] = Psr7\mimetype_from_filename($params['Key']); - } catch (\Throwable $e) { - $params['ContentType'] = Psr7\MimeType::fromFilename($params['Key']); - } - } - - if((!isset($params['ContentType']) || $params['ContentType'] === null) && isset($params['SourceFile'])){ - try { - $params['ContentType'] = Psr7\mimetype_from_filename($params['SourceFile']); - } catch (\Throwable $e) { - $params['ContentType'] = Psr7\MimeType::fromFilename($params['SourceFile']); - } - } - - if(!isset($params['ContentType']) || $params['ContentType'] === null){ - $params['ContentType'] = 'binary/octet-stream'; - } - } - } - - protected function makeRequest($model, &$operation, $params, $endpoint = null) - { - if($endpoint === null){ - $endpoint = $this->endpoint; - } - $signatureInterface = strcasecmp($this-> signature, 'v4') === 0 ? - new V4Signature($this->ak, $this->sk, $this->pathStyle, $endpoint, $this->region, $model['method'], $this->signature, $this->securityToken, $this->isCname) : - new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $endpoint, $model['method'], $this->signature, $this->securityToken, $this->isCname); - $authResult = $signatureInterface -> doAuth($operation, $params, $model); - $httpMethod = $authResult['method']; - ObsLog::commonLog(DEBUG, 'perform '. strtolower($httpMethod) . ' request with url ' . $authResult['requestUrl']); - ObsLog::commonLog(DEBUG, 'cannonicalRequest:' . $authResult['cannonicalRequest']); - ObsLog::commonLog(DEBUG, 'request headers ' . var_export($authResult['headers'],true)); - $authResult['headers']['User-Agent'] = self::default_user_agent(); - if($model['method'] === 'putObject'){ - $model['ObjectURL'] = ['value' => $authResult['requestUrl']]; - } - return new Request($httpMethod, $authResult['requestUrl'], $authResult['headers'], $authResult['body']); - } - - - protected function doRequest($model, &$operation, $params, $endpoint = null) - { - $request = $this -> makeRequest($model, $operation, $params, $endpoint); - $this->sendRequest($model, $operation, $params, $request); - } - - protected function sendRequest($model, &$operation, $params, $request, $requestCount = 1) - { - $start = microtime(true); - $saveAsStream = false; - if(isset($operation['stream']) && $operation['stream']){ - $saveAsStream = isset($params['SaveAsStream']) ? $params['SaveAsStream'] : false; - - if(isset($params['SaveAsFile'])){ - if($saveAsStream){ - $obsException = new ObsException('SaveAsStream cannot be used with SaveAsFile together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $saveAsStream = true; - } - if(isset($params['FilePath'])){ - if($saveAsStream){ - $obsException = new ObsException('SaveAsStream cannot be used with FilePath together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $saveAsStream = true; - } - - if(isset($params['SaveAsFile']) && isset($params['FilePath'])){ - $obsException = new ObsException('SaveAsFile cannot be used with FilePath together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - } - - $promise = $this->httpClient->sendAsync($request, ['stream' => $saveAsStream])->then( - function(Response $response) use ($model, $operation, $params, $request, $requestCount, $start){ - - ObsLog::commonLog(INFO, 'http request cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms'); - $statusCode = $response -> getStatusCode(); - $readable = isset($params['Body']) && ($params['Body'] instanceof StreamInterface || is_resource($params['Body'])); - if($statusCode >= 300 && $statusCode <400 && $statusCode !== 304 && !$readable && $requestCount <= $this->maxRetryCount){ - if($location = $response -> getHeaderLine('location')){ - $url = parse_url($this->endpoint); - $newUrl = parse_url($location); - $scheme = (isset($newUrl['scheme']) ? $newUrl['scheme'] : $url['scheme']); - $defaultPort = strtolower($scheme) === 'https' ? '443' : '80'; - $this->doRequest($model, $operation, $params, $scheme. '://' . $newUrl['host'] . - ':' . (isset($newUrl['port']) ? $newUrl['port'] : $defaultPort)); - return; - } - } - $this -> parseResponse($model, $request, $response, $operation); - }, - function (RequestException $exception) use ($model, $operation, $params, $request, $requestCount, $start) { - - ObsLog::commonLog(INFO, 'http request cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms'); - $message = null; - if($exception instanceof ConnectException){ - if($requestCount <= $this->maxRetryCount){ - $this -> sendRequest($model, $operation, $params, $request, $requestCount + 1); - return; - }else{ - $message = 'Exceeded retry limitation, max retry count:'. $this->maxRetryCount . ', error message:' . $exception -> getMessage(); - } - } - $this -> parseException($model, $request, $exception, $message); - }); - $promise -> wait(); - } - - - protected function doRequestAsync($model, &$operation, $params, $callback, $startAsync, $originMethod, $endpoint = null){ - $request = $this -> makeRequest($model, $operation, $params, $endpoint); - return $this->sendRequestAsync($model, $operation, $params, $callback, $startAsync, $originMethod, $request); - } - - protected function sendRequestAsync($model, &$operation, $params, $callback, $startAsync, $originMethod, $request, $requestCount = 1) - { - $start = microtime(true); - - $saveAsStream = false; - if(isset($operation['stream']) && $operation['stream']){ - $saveAsStream = isset($params['SaveAsStream']) ? $params['SaveAsStream'] : false; - - if($saveAsStream){ - if(isset($params['SaveAsFile'])){ - $obsException = new ObsException('SaveAsStream cannot be used with SaveAsFile together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - if(isset($params['FilePath'])){ - $obsException = new ObsException('SaveAsStream cannot be used with FilePath together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - } - - if(isset($params['SaveAsFile']) && isset($params['FilePath'])){ - $obsException = new ObsException('SaveAsFile cannot be used with FilePath together'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - } - return $this->httpClient->sendAsync($request, ['stream' => $saveAsStream])->then( - function(Response $response) use ($model, $operation, $params, $callback, $startAsync, $originMethod, $request, $start){ - ObsLog::commonLog(INFO, 'http request cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms'); - $statusCode = $response -> getStatusCode(); - $readable = isset($params['Body']) && ($params['Body'] instanceof StreamInterface || is_resource($params['Body'])); - if($statusCode === 307 && !$readable){ - if($location = $response -> getHeaderLine('location')){ - $url = parse_url($this->endpoint); - $newUrl = parse_url($location); - $scheme = (isset($newUrl['scheme']) ? $newUrl['scheme'] : $url['scheme']); - $defaultPort = strtolower($scheme) === 'https' ? '443' : '80'; - return $this->doRequestAsync($model, $operation, $params, $callback, $startAsync, $originMethod, $scheme. '://' . $newUrl['host'] . - ':' . (isset($newUrl['port']) ? $newUrl['port'] : $defaultPort)); - } - } - $this -> parseResponse($model, $request, $response, $operation); - ObsLog::commonLog(INFO, 'obsclient cost ' . round(microtime(true) - $startAsync, 3) * 1000 . ' ms to execute '. $originMethod); - unset($model['method']); - $callback(null, $model); - }, - function (RequestException $exception) use ($model, $operation, $params, $callback, $startAsync, $originMethod, $request, $start, $requestCount){ - ObsLog::commonLog(INFO, 'http request cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms'); - $message = null; - if($exception instanceof ConnectException){ - if($requestCount <= $this->maxRetryCount){ - return $this -> sendRequestAsync($model, $operation, $params, $callback, $startAsync, $originMethod, $request, $requestCount + 1); - }else{ - $message = 'Exceeded retry limitation, max retry count:'. $this->maxRetryCount . ', error message:' . $exception -> getMessage(); - } - } - $obsException = $this -> parseExceptionAsync($request, $exception, $message); - ObsLog::commonLog(INFO, 'obsclient cost ' . round(microtime(true) - $startAsync, 3) * 1000 . ' ms to execute '. $originMethod); - $callback($obsException, null); - } - ); - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/AbstractSignature.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/AbstractSignature.php deleted file mode 100644 index 3d366041..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/AbstractSignature.php +++ /dev/null @@ -1,471 +0,0 @@ - ak = $ak; - $this -> sk = $sk; - $this -> pathStyle = $pathStyle; - $this -> endpoint = $endpoint; - $this -> methodName = $methodName; - $this -> signature = $signature; - $this -> securityToken = $securityToken; - $this -> isCname = $isCname; - } - - protected function transXmlByType($key, &$value, &$subParams, $transHolder) - { - $xml = []; - $treatAsString = false; - if(isset($value['type'])){ - $type = $value['type']; - if($type === 'array'){ - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - $subXml = []; - foreach($subParams as $item){ - $temp = $this->transXmlByType($key, $value['items'], $item, $transHolder); - if($temp !== ''){ - $subXml[] = $temp; - } - } - if(!empty($subXml)){ - if(!isset($value['data']['xmlFlattened'])){ - $xml[] = '<' . $name . '>'; - $xml[] = implode('', $subXml); - $xml[] = ''; - }else{ - $xml[] = implode('', $subXml); - } - } - }else if($type === 'object'){ - $name = isset($value['sentAs']) ? $value['sentAs'] : (isset($value['name']) ? $value['name'] : $key); - $properties = $value['properties']; - $subXml = []; - $attr = []; - foreach ($properties as $pkey => $pvalue){ - if(isset($pvalue['required']) && $pvalue['required'] && !isset($subParams[$pkey])){ - $obsException= new ObsException('param:' .$pkey. ' is required'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - if(isset($subParams[$pkey])){ - if(isset($pvalue['data']) && isset($pvalue['data']['xmlAttribute']) && $pvalue['data']['xmlAttribute']){ - $attrValue = $this->xml_tansfer(trim(strval($subParams[$pkey]))); - $attr[$pvalue['sentAs']] = '"' . $attrValue . '"'; - if(isset($pvalue['data']['xmlNamespace'])){ - $ns = substr($pvalue['sentAs'], 0, strpos($pvalue['sentAs'], ':')); - $attr['xmlns:' . $ns] = '"' . $pvalue['data']['xmlNamespace'] . '"'; - } - }else{ - $subXml[] = $this -> transXmlByType($pkey, $pvalue, $subParams[$pkey], $transHolder); - } - } - } - $val = implode('', $subXml); - if($val !== ''){ - $_name = $name; - if(!empty($attr)){ - foreach ($attr as $akey => $avalue){ - $_name .= ' ' . $akey . '=' . $avalue; - } - } - if(!isset($value['data']['xmlFlattened'])){ - $xml[] = '<' . $_name . '>'; - $xml[] = $val; - $xml[] = ''; - } else { - $xml[] = $val; - } - } - }else{ - $treatAsString = true; - } - }else{ - $treatAsString = true; - $type = null; - } - - if($treatAsString){ - if($type === 'boolean'){ - if(!is_bool($subParams) && strval($subParams) !== 'false' && strval($subParams) !== 'true'){ - $obsException= new ObsException('param:' .$key. ' is not a boolean value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'numeric'){ - if(!is_numeric($subParams)){ - $obsException= new ObsException('param:' .$key. ' is not a numeric value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'float'){ - if(!is_float($subParams)){ - $obsException= new ObsException('param:' .$key. ' is not a float value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'int' || $type === 'integer'){ - if(!is_int($subParams)){ - $obsException= new ObsException('param:' .$key. ' is not a int value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - } - - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - if(is_bool($subParams)){ - $val = $subParams ? 'true' : 'false'; - }else{ - $val = strval($subParams); - } - if(isset($value['format'])){ - $val = SchemaFormatter::format($value['format'], $val); - } - if (isset($value['transform'])) { - $val = $transHolder->transform($value['transform'], $val); - } - if(isset($val) && $val !== ''){ - $val = $this->xml_tansfer($val); - if(!isset($value['data']['xmlFlattened'])){ - $xml[] = '<' . $name . '>'; - $xml[] = $val; - $xml[] = ''; - } else { - $xml[] = $val; - } - }else if(isset($value['canEmpty']) && $value['canEmpty']){ - $xml[] = '<' . $name . '>'; - $xml[] = $val; - $xml[] = ''; - } - } - $ret = implode('', $xml); - - if(isset($value['wrapper'])){ - $ret = '<'. $value['wrapper'] . '>' . $ret . ''; - } - - return $ret; - } - - private function xml_tansfer($tag) { - $search = array('&', '<', '>', '\'', '"'); - $repalce = array('&', '<', '>', ''', '"'); - $transferXml = str_replace($search, $repalce, $tag); - return $transferXml; - } - - protected function prepareAuth(array &$requestConfig, array &$params, Model $model) - { - $transHolder = strcasecmp($this-> signature, 'obs') === 0 ? ObsTransform::getInstance() : V2Transform::getInstance(); - $method = $requestConfig['httpMethod']; - $requestUrl = $this->endpoint; - $headers = []; - $pathArgs = []; - $dnsParam = null; - $uriParam = null; - $body = []; - $xml = []; - - if(isset($requestConfig['specialParam'])){ - $pathArgs[$requestConfig['specialParam']] = ''; - } - - $result = ['body' => null]; - $url = parse_url($requestUrl); - $host = $url['host']; - - $fileFlag = false; - - if(isset($requestConfig['requestParameters'])){ - $paramsMetadata = $requestConfig['requestParameters']; - foreach ($paramsMetadata as $key => $value){ - if(isset($value['required']) && $value['required'] && !isset($params[$key])){ - $obsException= new ObsException('param:' .$key. ' is required'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - if(isset($params[$key]) && isset($value['location'])){ - $location = $value['location']; - $val = $params[$key]; - $type = 'string'; - if($val !== '' && isset($value['type'])){ - $type = $value['type']; - if($type === 'boolean'){ - if(!is_bool($val) && strval($val) !== 'false' && strval($val) !== 'true'){ - $obsException= new ObsException('param:' .$key. ' is not a boolean value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'numeric'){ - if(!is_numeric($val)){ - $obsException= new ObsException('param:' .$key. ' is not a numeric value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'float'){ - if(!is_float($val)){ - $obsException= new ObsException('param:' .$key. ' is not a float value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - }else if($type === 'int' || $type === 'integer'){ - if(!is_int($val)){ - $obsException= new ObsException('param:' .$key. ' is not a int value'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - } - } - - if($location === 'header'){ - if($type === 'object'){ - if(is_array($val)){ - $sentAs = strtolower($value['sentAs']); - foreach ($val as $k => $v){ - $k = self::urlencodeWithSafe(strtolower($k), ' ;/?:@&=+$,'); - $name = strpos($k, $sentAs) === 0 ? $k : $sentAs . $k; - $headers[$name] = self::urlencodeWithSafe($v, ' ;/?:@&=+$,\'*'); - } - } - }else if($type === 'array'){ - if(is_array($val)){ - $name = isset($value['sentAs']) ? $value['sentAs'] : (isset($value['items']['sentAs']) ? $value['items']['sentAs'] : $key); - $temp = []; - foreach ($val as $v){ - if(($v = strval($v)) !== ''){ - $temp[] = self::urlencodeWithSafe($val, ' ;/?:@&=+$,\'*'); - } - } - - $headers[$name] = $temp; - } - }else if($type === 'password'){ - if(($val = strval($val)) !== ''){ - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - $pwdName = isset($value['pwdSentAs']) ? $value['pwdSentAs'] : $name . '-MD5'; - $val1 = base64_encode($val); - $val2 = base64_encode(md5($val, true)); - $headers[$name] = $val1; - $headers[$pwdName] = $val2; - } - }else{ - if (isset($value['transform'])) { - $val = $transHolder->transform($value['transform'], strval($val)); - } - if(isset($val)){ - if(is_bool($val)){ - $val = $val ? 'true' : 'false'; - }else{ - $val = strval($val); - } - if($val !== ''){ - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - if(isset($value['format'])){ - $val = SchemaFormatter::format($value['format'], $val); - } - $headers[$name] = self::urlencodeWithSafe($val, ' ;/?:@&=+$,\'*'); - } - } - } - }else if($location === 'uri' && $uriParam === null){ - $uriParam = self::urlencodeWithSafe($val); - }else if($location === 'dns' && $dnsParam === null){ - $dnsParam = $val; - }else if($location === 'query'){ - $name = isset($value['sentAs']) ? $value['sentAs'] : $key; - if(strval($val) !== ''){ - if (strcasecmp ( $this->signature, 'v4' ) === 0) { - $pathArgs[rawurlencode($name)] = rawurlencode(strval($val)); - } else { - $pathArgs[self::urlencodeWithSafe($name)] = self::urlencodeWithSafe(strval($val)); - } - } - }else if($location === 'xml'){ - $val = $this->transXmlByType($key, $value, $val, $transHolder); - if($val !== ''){ - $xml[] = $val; - } - }else if($location === 'body'){ - - if(isset($result['body'])){ - $obsException= new ObsException('duplicated body provided'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - - if($type === 'file'){ - if(!file_exists($val)){ - $obsException= new ObsException('file[' .$val. '] does not exist'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $result['body'] = new Stream(fopen($val, 'r')); - $fileFlag = true; - }else if($type === 'stream'){ - $result['body'] = $val; - } else if ($type === 'json') { - //TODO - $jsonData = json_encode($val); - if (!$jsonData) { - $obsException= new ObsException('input is invalid, since it is not json data'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $result['body'] = strval($jsonData); - } else{ - $result['body'] = strval($val); - } - }else if($location === 'response'){ - $model[$key] = ['value' => $val, 'type' => $type]; - } - } - } - - - if($dnsParam){ - if($this -> pathStyle){ - $requestUrl = $requestUrl . '/' . $dnsParam; - }else{ - $defaultPort = strtolower($url['scheme']) === 'https' ? '443' : '80'; - $host = $this -> isCname ? $host : $dnsParam. '.' . $host; - $requestUrl = $url['scheme'] . '://' . $host . ':' . (isset($url['port']) ? $url['port'] : $defaultPort); - } - } - if($uriParam){ - $requestUrl = $requestUrl . '/' . $uriParam; - } - - if(!empty($pathArgs)){ - $requestUrl .= '?'; - $_pathArgs = []; - foreach ($pathArgs as $key => $value){ - $_pathArgs[] = $value === null || $value === '' ? $key : $key . '=' . $value; - } - $requestUrl .= implode('&', $_pathArgs); - } - } - - if($xml || (isset($requestConfig['data']['xmlAllowEmpty']) && $requestConfig['data']['xmlAllowEmpty'])){ - $body[] = '<'; - $xmlRoot = $requestConfig['data']['xmlRoot']['name']; - - $body[] = $xmlRoot; - $body[] = '>'; - $body[] = implode('', $xml); - $body[] = ''; - $headers['Content-Type'] = 'application/xml'; - $result['body'] = implode('', $body); - - ObsLog::commonLog(DEBUG, 'request content ' . $result['body']); - - if(isset($requestConfig['data']['contentMd5']) && $requestConfig['data']['contentMd5']){ - $headers['Content-MD5'] = base64_encode(md5($result['body'],true)); - } - } - - if($fileFlag && ($result['body'] instanceof StreamInterface)){ - if($this->methodName === 'uploadPart' && (isset($model['Offset']) || isset($model['PartSize']))){ - $bodySize = $result['body'] ->getSize(); - if(isset($model['Offset'])){ - $offset = intval($model['Offset']['value']); - $offset = $offset >= 0 && $offset < $bodySize ? $offset : 0; - }else{ - $offset = 0; - } - - if(isset($model['PartSize'])){ - $partSize = intval($model['PartSize']['value']); - $partSize = $partSize > 0 && $partSize <= ($bodySize - $offset) ? $partSize : $bodySize - $offset; - }else{ - $partSize = $bodySize - $offset; - } - $result['body'] -> rewind(); - $result['body'] -> seek($offset); - $headers['Content-Length'] = $partSize; - }else if(isset($headers['Content-Length'])){ - $bodySize = $result['body'] -> getSize(); - if(intval($headers['Content-Length']) > $bodySize){ - $headers['Content-Length'] = $bodySize; - } - } - } - - $constants = Constants::selectConstants($this -> signature); - - if($this->securityToken){ - $headers[$constants::SECURITY_TOKEN_HEAD] = $this->securityToken; - } - - $headers['Host'] = $host; - - $result['host'] = $host; - $result['method'] = $method; - $result['headers'] = $headers; - $result['pathArgs'] = $pathArgs; - $result['dnsParam'] = $dnsParam; - $result['uriParam'] = $uriParam; - $result['requestUrl'] = $requestUrl; - - return $result; - } -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/DefaultSignature.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/DefaultSignature.php deleted file mode 100644 index d83c230f..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/DefaultSignature.php +++ /dev/null @@ -1,138 +0,0 @@ - prepareAuth($requestConfig, $params, $model); - - $result['headers']['Date'] = gmdate('D, d M Y H:i:s \G\M\T'); - $canonicalstring = $this-> makeCanonicalstring($result['method'], $result['headers'], $result['pathArgs'], $result['dnsParam'], $result['uriParam']); - - $result['cannonicalRequest'] = $canonicalstring; - - $signature = base64_encode(hash_hmac('sha1', $canonicalstring, $this->sk, true)); - - $constants = Constants::selectConstants($this -> signature); - $signatureFlag = $constants::FLAG; - - $authorization = $signatureFlag . ' ' . $this->ak . ':' . $signature; - - $result['headers']['Authorization'] = $authorization; - - return $result; - } - - public function makeCanonicalstring($method, $headers, $pathArgs, $bucketName, $objectKey, $expires = null) - { - $buffer = []; - $buffer[] = $method; - $buffer[] = "\n"; - $interestHeaders = []; - $constants = Constants::selectConstants($this -> signature); - - foreach ($headers as $key => $value){ - $key = strtolower($key); - if(in_array($key, self::INTEREST_HEADER_KEY_LIST) || strpos($key, $constants::HEADER_PREFIX) === 0){ - $interestHeaders[$key] = $value; - } - } - - if(array_key_exists($constants::ALTERNATIVE_DATE_HEADER, $interestHeaders)){ - $interestHeaders['date'] = ''; - } - - if($expires !== null){ - $interestHeaders['date'] = strval($expires); - } - - if(!array_key_exists('content-type', $interestHeaders)){ - $interestHeaders['content-type'] = ''; - } - - if(!array_key_exists('content-md5', $interestHeaders)){ - $interestHeaders['content-md5'] = ''; - } - - ksort($interestHeaders); - - foreach ($interestHeaders as $key => $value){ - if(strpos($key, $constants::HEADER_PREFIX) === 0){ - $buffer[] = $key . ':' . $value; - }else{ - $buffer[] = $value; - } - $buffer[] = "\n"; - } - - $uri = ''; - - $bucketName = $this->isCname ? $headers['Host'] : $bucketName; - - if($bucketName){ - $uri .= '/'; - $uri .= $bucketName; - if(!$this->pathStyle){ - $uri .= '/'; - } - } - - if($objectKey){ - if(!($pos=strripos($uri, '/')) || strlen($uri)-1 !== $pos){ - $uri .= '/'; - } - $uri .= $objectKey; - } - - $buffer[] = $uri === ''? '/' : $uri; - - - if(!empty($pathArgs)){ - ksort($pathArgs); - $_pathArgs = []; - foreach ($pathArgs as $key => $value){ - if(in_array(strtolower($key), $constants::ALLOWED_RESOURCE_PARAMTER_NAMES) || strpos($key, $constants::HEADER_PREFIX) === 0){ - $_pathArgs[] = $value === null || $value === '' ? $key : $key . '=' . urldecode($value); - } - } - if(!empty($_pathArgs)){ - $buffer[] = '?'; - $buffer[] = implode('&', $_pathArgs); - } - } - - return implode('', $buffer); - } - -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/SignatureInterface.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/SignatureInterface.php deleted file mode 100644 index ae11c788..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Internal/Signature/SignatureInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -region = $region; - $this->utcTimeZone = new \DateTimeZone ('UTC'); - } - - public function doAuth(array &$requestConfig, array &$params, Model $model) - { - $result = $this -> prepareAuth($requestConfig, $params, $model); - - $result['headers']['x-amz-content-sha256'] = self::CONTENT_SHA256; - - $bucketName = $result['dnsParam']; - - $result['headers']['Host'] = $result['host']; - - $time = null; - if(array_key_exists('x-amz-date', $result['headers'])){ - $time = $result['headers']['x-amz-date']; - }else if(array_key_exists('X-Amz-Date', $result['headers'])){ - $time = $result['headers']['X-Amz-Date']; - } - $timestamp = $time ? date_create_from_format('Ymd\THis\Z', $time, $this->utcTimeZone) -> getTimestamp() - :time(); - - $result['headers']['Date'] = gmdate('D, d M Y H:i:s \G\M\T', $timestamp); - - $longDate = gmdate('Ymd\THis\Z', $timestamp); - $shortDate = substr($longDate, 0, 8); - - $credential = $this-> getCredential($shortDate); - - $signedHeaders = $this->getSignedHeaders($result['headers']); - - $canonicalstring = $this-> makeCanonicalstring($result['method'], $result['headers'], $result['pathArgs'], $bucketName, $result['uriParam'], $signedHeaders); - - $result['cannonicalRequest'] = $canonicalstring; - - $signature = $this -> getSignature($canonicalstring, $longDate, $shortDate); - - $authorization = 'AWS4-HMAC-SHA256 ' . 'Credential=' . $credential. ',' . 'SignedHeaders=' . $signedHeaders . ',' . 'Signature=' . $signature; - - $result['headers']['Authorization'] = $authorization; - - return $result; - } - - public function getSignature($canonicalstring, $longDate, $shortDate) - { - $stringToSign = []; - $stringToSign[] = 'AWS4-HMAC-SHA256'; - - $stringToSign[] = "\n"; - - $stringToSign[] = $longDate; - - $stringToSign[] = "\n"; - $stringToSign[] = $this -> getScope($shortDate); - $stringToSign[] = "\n"; - - $stringToSign[] = hash('sha256', $canonicalstring); - - $dateKey = hash_hmac('sha256', $shortDate, 'AWS4' . $this -> sk, true); - $regionKey = hash_hmac('sha256', $this->region, $dateKey, true); - $serviceKey = hash_hmac('sha256', 's3', $regionKey, true); - $signingKey = hash_hmac('sha256', 'aws4_request', $serviceKey, true); - $signature = hash_hmac('sha256', implode('', $stringToSign), $signingKey); - return $signature; - } - - public function getCanonicalQueryString($pathArgs) - { - $queryStr = ''; - - ksort($pathArgs); - $index = 0; - foreach ($pathArgs as $key => $value){ - $queryStr .= $key . '=' . $value; - if($index++ !== count($pathArgs) - 1){ - $queryStr .= '&'; - } - } - return $queryStr; - } - - public function getCanonicalHeaders($headers) - { - $_headers = []; - foreach ($headers as $key => $value) { - $_headers[strtolower($key)] = $value; - } - ksort($_headers); - - $canonicalHeaderStr = ''; - - foreach ($_headers as $key => $value){ - $value = is_array($value) ? implode(',', $value) : $value; - $canonicalHeaderStr .= $key . ':' . $value; - $canonicalHeaderStr .= "\n"; - } - return $canonicalHeaderStr; - } - - public function getCanonicalURI($bucketName, $objectKey) - { - $uri = ''; - if($this -> pathStyle && $bucketName){ - $uri .= '/' . $bucketName; - } - - if($objectKey){ - $uri .= '/' . $objectKey; - } - - if($uri === ''){ - $uri = '/'; - } - return $uri; - } - - public function makeCanonicalstring($method, $headers, $pathArgs, $bucketName, $objectKey, $signedHeaders=null, $payload=null) - { - $buffer = []; - $buffer[] = $method; - $buffer[] = "\n"; - $buffer[] = $this->getCanonicalURI($bucketName, $objectKey); - $buffer[] = "\n"; - $buffer[] = $this->getCanonicalQueryString($pathArgs); - $buffer[] = "\n"; - $buffer[] = $this->getCanonicalHeaders($headers); - $buffer[] = "\n"; - $buffer[] = $signedHeaders ? $signedHeaders : $this->getSignedHeaders($headers); - $buffer[] = "\n"; - $buffer[] = $payload ? strval($payload) : self::CONTENT_SHA256; - - return implode('', $buffer); - } - - public function getSignedHeaders($headers) - { - $_headers = []; - - foreach ($headers as $key => $value) { - $_headers[] = strtolower($key); - } - - sort($_headers); - - $signedHeaders = ''; - - foreach ($_headers as $key => $value){ - $signedHeaders .= $value; - if($key !== count($_headers) - 1){ - $signedHeaders .= ';'; - } - } - return $signedHeaders; - } - - public function getScope($shortDate) - { - return $shortDate . '/' . $this->region . '/s3/aws4_request'; - } - - public function getCredential($shortDate) - { - return $this->ak . '/' . $this->getScope($shortDate); - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsConfig.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsConfig.php deleted file mode 100644 index aea82139..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsConfig.php +++ /dev/null @@ -1,28 +0,0 @@ -'./logs', - 'FileName'=>'eSDK-OBS-PHP.log', - 'MaxFiles'=>10, - 'Level'=>INFO - ]; -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsLog.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsLog.php deleted file mode 100644 index 7cc8c5df..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/Log/ObsLog.php +++ /dev/null @@ -1,126 +0,0 @@ -setConfig($logConfig); - $s3log->cheakDir(); - $s3log->setFilePath(); - $s3log->setFormat(); - $s3log->setHande(); - } - private function setFormat() - { - $output = '[%datetime%][%level_name%]'.'%message%' . "\n"; - $this->formatter = new LineFormatter($output); - - } - private function setHande() - { - self::$log = new Logger('obs_logger'); - $rotating = new RotatingFileHandler($this->filepath, $this->log_maxFiles, $this->log_level); - $rotating->setFormatter($this->formatter); - self::$log->pushHandler($rotating); - } - private function setConfig($logConfig= []) - { - $arr = empty($logConfig) ? ObsConfig::LOG_FILE_CONFIG : $logConfig; - $this->log_path = iconv('UTF-8', 'GBK',$arr['FilePath']); - $this->log_name = iconv('UTF-8', 'GBK',$arr['FileName']); - $this->log_maxFiles = is_numeric($arr['MaxFiles']) ? 0 : intval($arr['MaxFiles']); - $this->log_level = $arr['Level']; - } - private function cheakDir() - { - if (!is_dir($this->log_path)){ - mkdir($this->log_path, 0755, true); - } - } - private function setFilePath() - { - $this->filepath = $this->log_path.'/'.$this->log_name; - } - private static function writeLog($level, $msg) - { - switch ($level) { - case DEBUG: - self::$log->debug($msg); - break; - case INFO: - self::$log->info($msg); - break; - case NOTICE: - self::$log->notice($msg); - break; - case WARNING: - self::$log->warning($msg); - break; - case ERROR: - self::$log->error($msg); - break; - case CRITICAL: - self::$log->critical($msg); - break; - case ALERT: - self::$log->alert($msg); - break; - case EMERGENCY: - self::$log->emergency($msg); - break; - default: - break; - } - - } - - public static function commonLog($level, $format, $args1 = null, $arg2 = null) - { - if(ObsLog::$log){ - if ($args1 === null && $arg2 === null) { - $msg = urldecode($format); - } else { - $msg = sprintf($format, $args1, $arg2); - } - $back = debug_backtrace(); - $line = $back[0]['line']; - $funcname = $back[1]['function']; - $filename = basename($back[0]['file']); - $message = '['.$filename.':'.$line.']: '.$msg; - ObsLog::writeLog($level, $message); - } - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsClient.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsClient.php deleted file mode 100644 index 41dc4bd6..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsClient.php +++ /dev/null @@ -1,415 +0,0 @@ -factorys = []; - - $this -> ak = strval($config['key']); - $this -> sk = strval($config['secret']); - - if(isset($config['security_token'])){ - $this -> securityToken = strval($config['security_token']); - } - - if(isset($config['endpoint'])){ - $this -> endpoint = trim(strval($config['endpoint'])); - } - - if($this -> endpoint === ''){ - throw new \RuntimeException('endpoint is not set'); - } - - while($this -> endpoint[strlen($this -> endpoint)-1] === '/'){ - $this -> endpoint = substr($this -> endpoint, 0, strlen($this -> endpoint)-1); - } - - if(strpos($this-> endpoint, 'http') !== 0){ - $this -> endpoint = 'https://' . $this -> endpoint; - } - - if(isset($config['signature'])){ - $this -> signature = strval($config['signature']); - } - - if(isset($config['path_style'])){ - $this -> pathStyle = $config['path_style']; - } - - if(isset($config['region'])){ - $this -> region = strval($config['region']); - } - - if(isset($config['ssl_verify'])){ - $this -> sslVerify = $config['ssl_verify']; - }else if(isset($config['ssl.certificate_authority'])){ - $this -> sslVerify = $config['ssl.certificate_authority']; - } - - if(isset($config['max_retry_count'])){ - $this -> maxRetryCount = intval($config['max_retry_count']); - } - - if(isset($config['timeout'])){ - $this -> timeout = intval($config['timeout']); - } - - if(isset($config['socket_timeout'])){ - $this -> socketTimeout = intval($config['socket_timeout']); - } - - if(isset($config['connect_timeout'])){ - $this -> connectTimeout = intval($config['connect_timeout']); - } - - if(isset($config['chunk_size'])){ - $this -> chunkSize = intval($config['chunk_size']); - } - - if(isset($config['exception_response_mode'])){ - $this -> exceptionResponseMode = $config['exception_response_mode']; - } - - if (isset($config['is_cname'])) { - $this -> isCname = $config['is_cname']; - } - - $host = parse_url($this -> endpoint)['host']; - if(filter_var($host, FILTER_VALIDATE_IP) !== false) { - $this -> pathStyle = true; - } - - $handler = self::choose_handler($this); - - $this -> httpClient = new Client( - [ - 'timeout' => 0, - 'read_timeout' => $this -> socketTimeout, - 'connect_timeout' => $this -> connectTimeout, - 'allow_redirects' => false, - 'verify' => $this -> sslVerify, - 'expect' => false, - 'handler' => HandlerStack::create($handler), - 'curl' => [ - CURLOPT_BUFFERSIZE => $this -> chunkSize - ] - ] - ); - - } - - public function __destruct(){ - $this-> close(); - } - - public function refresh($key, $secret, $security_token=false){ - $this -> ak = strval($key); - $this -> sk = strval($secret); - if($security_token){ - $this -> securityToken = strval($security_token); - } - } - - /** - * Get the default User-Agent string to use with Guzzle - * - * @return string - */ - private static function default_user_agent() - { - static $defaultAgent = ''; - if (!$defaultAgent) { - $defaultAgent = 'obs-sdk-php/' . self::SDK_VERSION; - } - - return $defaultAgent; - } - - /** - * Factory method to create a new Obs client using an array of configuration options. - * - * @param array $config Client configuration data - * - * @return ObsClient - */ - public static function factory(array $config = []) - { - return new ObsClient($config); - } - - public function close(){ - if($this->factorys){ - foreach ($this->factorys as $factory){ - $factory->close(); - } - } - } - - public function initLog(array $logConfig= []) - { - ObsLog::initLog($logConfig); - - $msg = []; - $msg[] = '[OBS SDK Version=' . self::SDK_VERSION; - $msg[] = 'Endpoint=' . $this->endpoint; - $msg[] = 'Access Mode=' . ($this->pathStyle ? 'Path' : 'Virtual Hosting').']'; - - ObsLog::commonLog(WARNING, implode("];[", $msg)); - } - - private static function choose_handler($obsclient) - { - $handler = null; - if (function_exists('curl_multi_exec') && function_exists('curl_exec')) { - $f1 = new SdkCurlFactory(50); - $f2 = new SdkCurlFactory(3); - $obsclient->factorys[] = $f1; - $obsclient->factorys[] = $f2; - $handler = Proxy::wrapSync(new CurlMultiHandler(['handle_factory' => $f1]), new CurlHandler(['handle_factory' => $f2])); - } elseif (function_exists('curl_exec')) { - $f = new SdkCurlFactory(3); - $obsclient->factorys[] = $f; - $handler = new CurlHandler(['handle_factory' => $f]); - } elseif (function_exists('curl_multi_exec')) { - $f = new SdkCurlFactory(50); - $obsclient->factorys[] = $f; - $handler = new CurlMultiHandler(['handle_factory' => $f]); - } - - if (ini_get('allow_url_fopen')) { - $handler = $handler - ? Proxy::wrapStreaming($handler, new SdkStreamHandler()) - : new SdkStreamHandler(); - } elseif (!$handler) { - throw new \RuntimeException('GuzzleHttp requires cURL, the ' - . 'allow_url_fopen ini setting, or a custom HTTP handler.'); - } - - return $handler; - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsException.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsException.php deleted file mode 100644 index 29d555e3..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsException.php +++ /dev/null @@ -1,140 +0,0 @@ -exceptionCode = $exceptionCode; - } - - public function getExceptionCode() - { - return $this->exceptionCode; - } - - public function setExceptionMessage($exceptionMessage) - { - $this->exceptionMessage = $exceptionMessage; - } - - public function getExceptionMessage() - { - return $this->exceptionMessage ? $this->exceptionMessage : $this->message; - } - - public function setExceptionType($exceptionType) - { - $this->exceptionType = $exceptionType; - } - - public function getExceptionType() - { - return $this->exceptionType; - } - - public function setRequestId($requestId) - { - $this->requestId = $requestId; - } - - public function getRequestId() - { - return $this->requestId; - } - - public function setResponse(Response $response) - { - $this->response = $response; - } - - public function getResponse() - { - return $this->response; - } - - public function setRequest(Request $request) - { - $this->request = $request; - } - - public function getRequest() - { - return $this->request; - } - - public function getStatusCode() - { - return $this->response ? $this->response->getStatusCode() : -1; - } - - public function setHostId($hostId){ - $this->hostId = $hostId; - } - - public function getHostId(){ - return $this->hostId; - } - - public function __toString() - { - $message = get_class($this) . ': ' - . 'OBS Error Code: ' . $this->getExceptionCode() . ', ' - . 'Status Code: ' . $this->getStatusCode() . ', ' - . 'OBS Error Type: ' . $this->getExceptionType() . ', ' - . 'OBS Error Message: ' . ($this->getExceptionMessage() ? $this->getExceptionMessage():$this->getMessage()); - - // Add the User-Agent if available - if ($this->request) { - $message .= ', ' . 'User-Agent: ' . $this->request->getHeaderLine('User-Agent'); - } - $message .= "\n"; - - ObsLog::commonLog(INFO, "http request:status:%d, %s",$this->getStatusCode(),"code:".$this->getExceptionCode().", message:".$this->getMessage()); - return $message; - } - -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsImageClient.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsImageClient.php deleted file mode 100644 index 31f3ebd1..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/Obs/ObsImageClient.php +++ /dev/null @@ -1,642 +0,0 @@ -factorys = []; - - $this->ak = strval($config['key']); - $this->sk = strval($config['secret']); - - if (isset($config['project_name'])) { - $this->project_name = strval($config['project_name']); - } - - if (isset($config['project_sub_name'])) { - $this->project_sub_name = strval($config['project_sub_name']); - } - - if (isset($config['custom_domain'])) { - $this->custom_domain = strval($config['custom_domain']); - } - - if (isset($config['security_token'])) { - $this->securityToken = strval($config['security_token']); - } - - if (isset($config['endpoint'])) { - $this->endpoint = trim(strval($config['endpoint'])); - } - - if ($this->endpoint === '') { - throw new \RuntimeException('endpoint is not set'); - } - - while ($this->endpoint[strlen($this->endpoint) - 1] === '/') { - $this->endpoint = substr($this->endpoint, 0, strlen($this->endpoint) - 1); - } - - if (strpos($this->endpoint, 'http') !== 0) { - $this->endpoint = 'https://' . $this->endpoint; - } - - if (isset($config['signature'])) { - $this->signature = strval($config['signature']); - } - - if (isset($config['path_style'])) { - $this->pathStyle = $config['path_style']; - } - - if (isset($config['region'])) { - $this->region = strval($config['region']); - } - - if (isset($config['ssl_verify'])) { - $this->sslVerify = $config['ssl_verify']; - } else if (isset($config['ssl.certificate_authority'])) { - $this->sslVerify = $config['ssl.certificate_authority']; - } - - if (isset($config['max_retry_count'])) { - $this->maxRetryCount = intval($config['max_retry_count']); - } - - if (isset($config['timeout'])) { - $this->timeout = intval($config['timeout']); - } - - if (isset($config['socket_timeout'])) { - $this->socketTimeout = intval($config['socket_timeout']); - } - - if (isset($config['connect_timeout'])) { - $this->connectTimeout = intval($config['connect_timeout']); - } - - if (isset($config['chunk_size'])) { - $this->chunkSize = intval($config['chunk_size']); - } - - if (isset($config['exception_response_mode'])) { - $this->exceptionResponseMode = $config['exception_response_mode']; - } - - if (isset($config['is_cname'])) { - $this->isCname = $config['is_cname']; - } - - $host = parse_url($this->endpoint)['host']; - if (filter_var($host, FILTER_VALIDATE_IP) !== false) { - $this->pathStyle = true; - } - - $handler = self::choose_handler($this); - - $this->httpClient = new Client( - [ - 'timeout' => 0, - 'read_timeout' => $this->socketTimeout, - 'connect_timeout' => $this->connectTimeout, - 'allow_redirects' => false, - 'verify' => $this->sslVerify, - 'expect' => false, - 'handler' => HandlerStack::create($handler), - 'curl' => [ - CURLOPT_BUFFERSIZE => $this->chunkSize - ] - ] - ); - - } - - public function __destruct() - { - $this->close(); - } - - public function refresh($key, $secret, $security_token = false) - { - $this->ak = strval($key); - $this->sk = strval($secret); - if ($security_token) { - $this->securityToken = strval($security_token); - } - } - - /** - * Get the default User-Agent string to use with Guzzle - * - * @return string - */ - private static function default_user_agent() - { - static $defaultAgent = ''; - if (!$defaultAgent) { - $defaultAgent = 'obs-sdk-php/' . self::SDK_VERSION; - } - - return $defaultAgent; - } - - /** - * Factory method to create a new Obs client using an array of configuration options. - * - * @param array $config Client configuration data - * - * @return ObsClient - */ - public static function factory(array $config = []) - { - return new ObsClient($config); - } - - public function close() - { - if ($this->factorys) { - foreach ($this->factorys as $factory) { - $factory->close(); - } - } - } - - public function initLog(array $logConfig = []) - { - ObsLog::initLog($logConfig); - - $msg = []; - $msg[] = '[OBS SDK Version=' . self::SDK_VERSION; - $msg[] = 'Endpoint=' . $this->endpoint; - $msg[] = 'Access Mode=' . ($this->pathStyle ? 'Path' : 'Virtual Hosting') . ']'; - - ObsLog::commonLog(WARNING, implode("];[", $msg)); - } - - private static function choose_handler($obsclient) - { - $handler = null; - if (function_exists('curl_multi_exec') && function_exists('curl_exec')) { - $f1 = new SdkCurlFactory(50); - $f2 = new SdkCurlFactory(3); - $obsclient->factorys[] = $f1; - $obsclient->factorys[] = $f2; - $handler = Proxy::wrapSync(new CurlMultiHandler(['handle_factory' => $f1]), new CurlHandler(['handle_factory' => $f2])); - } elseif (function_exists('curl_exec')) { - $f = new SdkCurlFactory(3); - $obsclient->factorys[] = $f; - $handler = new CurlHandler(['handle_factory' => $f]); - } elseif (function_exists('curl_multi_exec')) { - $f = new SdkCurlFactory(50); - $obsclient->factorys[] = $f; - $handler = new CurlMultiHandler(['handle_factory' => $f]); - } - - if (ini_get('allow_url_fopen')) { - $handler = $handler - ? Proxy::wrapStreaming($handler, new SdkStreamHandler()) - : new SdkStreamHandler(); - } elseif (!$handler) { - throw new \RuntimeException('GuzzleHttp requires cURL, the ' - . 'allow_url_fopen ini setting, or a custom HTTP handler.'); - } - - return $handler; - } - - public function createSignedUrl(array $args=[]) - { - if (strcasecmp($this -> signature, 'v4') === 0) { - return $this -> createV4SignedUrl($args); - } - return $this->createCommonSignedUrl($this->signature,$args); - } - - private function createCommonSignedUrl(string $signature,array $args=[]) { - if(!isset($args['Method'])){ - $obsException = new ObsException('Method param must be specified, allowed values: GET | PUT | HEAD | POST | DELETE | OPTIONS'); - $obsException-> setExceptionType('client'); - throw $obsException; - } - $method = strval($args['Method']); - $bucketName = isset($args['Bucket'])? strval($args['Bucket']): null; - $objectKey = isset($args['Key'])? strval($args['Key']): null; - $specialParam = isset($args['SpecialParam'])? strval($args['SpecialParam']): null; - $expires = isset($args['Expires']) && is_numeric($args['Expires']) ? intval($args['Expires']): 300; - $objectKey = $this->genKey($objectKey); - - $headers = []; - if(isset($args['Headers']) && is_array($args['Headers']) ){ - foreach ($args['Headers'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $headers[$key] = $val; - } - } - } - - - - $queryParams = []; - if(isset($args['QueryParams']) && is_array($args['QueryParams']) ){ - foreach ($args['QueryParams'] as $key => $val){ - if(is_string($key) && $key !== ''){ - $queryParams[$key] = $val; - } - } - } - - $constants = Constants::selectConstants($signature); - if($this->securityToken && !isset($queryParams[$constants::SECURITY_TOKEN_HEAD])){ - $queryParams[$constants::SECURITY_TOKEN_HEAD] = $this->securityToken; - } - - $sign = new DefaultSignature($this->ak, $this->sk, $this->pathStyle, $this->endpoint, $method, $this->signature, $this->securityToken, $this->isCname); - - $url = parse_url($this->endpoint); - $host = $url['host']; - - $result = ''; - - if($bucketName){ - if($this-> pathStyle){ - $result = '/' . $bucketName; - }else{ - $host = $this->isCname ? $host : $bucketName . '.' . $host; - } - } - - $headers['Host'] = $this->custom_domain ?? $host; - - if($objectKey){ - $objectKey = $sign ->urlencodeWithSafe($objectKey); - $result .= '/' . $objectKey; - } - - $result .= '?'; - - if($specialParam){ - $queryParams[$specialParam] = ''; - } - - $queryParams[$constants::TEMPURL_AK_HEAD] = $this->ak; - - - if(!is_numeric($expires) || $expires < 0){ - $expires = 300; - } - $expires = intval($expires) + intval(microtime(true)); - - $queryParams['Expires'] = strval($expires); - - $_queryParams = []; - - foreach ($queryParams as $key => $val){ - $key = $sign -> urlencodeWithSafe($key); - $val = $sign -> urlencodeWithSafe($val); - $_queryParams[$key] = $val; - $result .= $key; - if($val){ - $result .= '=' . $val; - } - $result .= '&'; - } - - $canonicalstring = $sign ->makeCanonicalstring($method, $headers, $_queryParams, $bucketName, $objectKey, $expires); - $signatureContent = base64_encode(hash_hmac('sha1', $canonicalstring, $this->sk, true)); - - $result .= 'Signature=' . $sign->urlencodeWithSafe($signatureContent); - - $model = new Model(); - $model['ActualSignedRequestHeaders'] = $headers; - $model['SignedUrl'] = $url['scheme'] . '://' . ($this->custom_domain ?? $host) . ':' . (isset($url['port']) ? $url['port'] : (strtolower($url['scheme']) === 'https' ? '443' : '80')) . $result; - return $model; - } - - public function genKey(&$key) - { - if (empty($this->project_name)) { - throw new \RuntimeException('project_name 参数有误'); - } - $extension = explode('.', $key); - $ext = end($extension); - $date_ym = date('Y-m'); - $date_ymd = date('Ymd'); - $filePath = empty($this->project_sub_name) ? $this->project_name : $this->project_name . '/' . $this->project_sub_name; - $filePath .= "/{$date_ym}/{$date_ymd}_"; - $hash_data = $this->project_name . $key . time() . mt_rand(111111, 999999); - $filePath .= hash('sha256', $hash_data) . '.' . $ext; - return $filePath; - } - - /************************************************ 改造内容 *******************************************************/ - public function __call($originMethod, $args) - { - $method = $originMethod; - - $contents = Constants::selectRequestResource($this->signature); - $resource = &$contents::$RESOURCE_ARRAY; - $async = false; - if (strpos($method, 'Async') === (strlen($method) - 5)) { - $method = substr($method, 0, strlen($method) - 5); - $async = true; - } - - if (isset($resource['aliases'][$method])) { - $method = $resource['aliases'][$method]; - } - - $method = lcfirst($method); - - - $operation = isset($resource['operations'][$method]) ? - $resource['operations'][$method] : null; - - if (!$operation) { - ObsLog::commonLog(WARNING, 'unknow method ' . $originMethod); - $obsException = new ObsException('unknow method ' . $originMethod); - $obsException->setExceptionType('client'); - throw $obsException; - } - - $start = microtime(true); - if (!$async) { - ObsLog::commonLog(INFO, 'enter method ' . $originMethod . '...'); - $model = new Model(); - $model['method'] = $method; - $params = empty($args) ? [] : $args[0]; - $this->_checkParams($params);//house365::校验参数,自动生成文件路径名 - $this->checkMimeType($method, $params); - $this->doRequest($model, $operation, $params); - ObsLog::commonLog(INFO, 'obsclient cost ' . round(microtime(true) - $start, 3) * 1000 . ' ms to execute ' . $originMethod); - unset($model['method']); - $this->_replaceDomain($model);//house365::替换域名 - return $model; - } else { - if (empty($args) || !(is_callable($callback = $args[count($args) - 1]))) { - ObsLog::commonLog(WARNING, 'async method ' . $originMethod . ' must pass a CallbackInterface as param'); - $obsException = new ObsException('async method ' . $originMethod . ' must pass a CallbackInterface as param'); - $obsException->setExceptionType('client'); - throw $obsException; - } - ObsLog::commonLog(INFO, 'enter method ' . $originMethod . '...'); - $params = count($args) === 1 ? [] : $args[0]; - $this->checkMimeType($method, $params); - $model = new Model(); - $model['method'] = $method; - return $this->doRequestAsync($model, $operation, $params, $callback, $start, $originMethod); - } - } - - //house365::校验参数,自动生成文件路径名 - private function _checkParams(&$params) - { - if (!isset($params['Key'])) { - throw new \RuntimeException('Key 参数有误'); - } - if (empty($this->project_name)) { - throw new \RuntimeException('project_name 参数有误'); - } - $extension = explode('.', $params['Key']); - $ext = end($extension); - $date_ym = date('Y-m'); - $date_ymd = date('Ymd'); - $filePath = empty($this->project_sub_name) ? $this->project_name : $this->project_name . '/' . $this->project_sub_name; - $filePath .= "/{$date_ym}/{$date_ymd}_"; - $hash_data = $this->project_name . $params['Key'] . time() . mt_rand(111111, 999999); - $filePath .= hash('sha256', $hash_data) . '.' . $ext; - $params['Key'] = $filePath; - } - - //house365::替换域名 - private function _replaceDomain(&$model) - { - if ($this->custom_domain && $model['ObjectURL']) { - $origin_url = $model['ObjectURL']; - $url_arr = parse_url($origin_url); - if (!empty($url_arr['host'])) { - $url_ = $url_arr['scheme'] . '://' . $this->custom_domain . $url_arr['path']; - $url_ .= isset($url_arr['query']) ? '?' . $url_arr['query'] : ''; - $model['ObjectURL'] = $url_; - } - } - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/README.md b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/README.md deleted file mode 100644 index 3348eccb..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/README.md +++ /dev/null @@ -1,48 +0,0 @@ -Version 3.23.501 -基于华为3.23.5版本,增加自定义ObsImageClient - -Version 3.23.5 - -新特性: -1. 新增自定义域名相关接口; -2. 新增上传回调参数; - -资料&demo: - -修复问题: -1. 优化部分代码; - ----- - -Version 3.22.6 - -新特性: - -资料&demo: - -修复问题: -1. 修复三方依赖冲突的问题; - ----- - -Version 3.19.9 - -新特性: - -资料&demo: - -修复问题: -1. 修复OBS请求时,Host偶尔被异常替换的问题; -2. 修复特殊场景下,日志模块无法正常工作的问题; -3. 修复header中的正常特殊字符被url编码的问题; - -------------------------------------------------------------------------------------------------- - -Version 3.1.3 -新特性: - -资料&demo: - -修复问题: -1. 修复连接OBS服务超时时,解析request-id报错导致异常信息被截断的问题; - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/composer.json b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/composer.json deleted file mode 100644 index 90257d9f..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/composer.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name" : "365taofang/huaweicloud-sdk-php-obs", - "description" : "OBS PHP SDK", - "license":"Apache-2.0", - "version":"3.23.501", - "require" : { - "php" : ">=5.6.0", - "guzzlehttp/guzzle" : "^6.3.0 || ^7.0", - "guzzlehttp/psr7" : "^1.4.2 || ^2.0", - "monolog/monolog" : "^1.23.0 || ^2.0", - "psr/http-message": "^1.0" - }, - - "keywords" :["obs", "php"], - "autoload": { - "psr-4": { - "Obs\\": "Obs/" - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/BucketOperationsSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/BucketOperationsSample.php deleted file mode 100644 index 4c98e55e..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/BucketOperationsSample.php +++ /dev/null @@ -1,503 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - - -try { - - /* - * Put bucket operation - */ - createBucket (); - - /* - * Get bucket location operation - */ - getBucketLocation (); - - /* - * Get bucket storageInfo operation - */ - getBucketStorageInfo (); - - /* - * Put/Get bucket quota operations - */ - doBucketQuotaOperation (); - - /* - * Put/Get bucket versioning operations - */ - doBucketVersioningOperation (); - - /* - * Put/Get bucket acl operations - */ - $ownerId = doBucketAclOperation (); - - /* - * Put/Get/Delete bucket cors operations - */ - doBucketCorsOperation (); - - /* - * Options bucket operation - */ - optionsBucket (); - - /* - * Get bucket metadata operation - */ - getBucketMetadata (); - - /* - * Put/Get/Delete bucket lifecycle operations - */ - doBucketLifecycleOperation (); - - /* - * Put/Get/Delete bucket logging operations - */ - doBucketLoggingOperation ($ownerId); - - /* - * Put/Get/Delete bucket website operations - */ - doBucketWebsiteOperation (); - - /* - * Put/Get/Delete bucket tagging operations - */ - doBucketTaggingOperation (); - - /* - * Delete bucket operation - */ - deleteBucket (); -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - - -function createBucket() -{ - global $obsClient; - global $bucketName; - - $resp = $obsClient->createBucket ([ - 'Bucket' => $bucketName, - ]); - printf("HttpStatusCode:%s\n\n", $resp ['HttpStatusCode']); - printf("Create bucket: %s successfully!\n\n", $bucketName); -} - -function getBucketLocation() -{ - global $obsClient; - global $bucketName; - - $promise = $obsClient -> getBucketLocationAsync(['Bucket' => $bucketName], function($exception, $resp){ - printf("Getting bucket location %s\n\n", $resp ['Location']); - }); - $promise -> wait(); -} - -function getBucketStorageInfo() -{ - global $obsClient; - global $bucketName; - $promise = $obsClient -> getBucketStorageInfoAsync(['Bucket' => $bucketName], function($exception, $resp){ - printf("Getting bucket storageInfo Size:%d,ObjectNumber:%d\n\n", $resp ['Size'], $resp ['ObjectNumber']); - }); - $promise -> wait(); -} - -function doBucketQuotaOperation() -{ - global $obsClient; - global $bucketName; - $obsClient->setBucketQuota ([ - 'Bucket' => $bucketName, - 'StorageQuota' => 1024 * 1024 * 1024//Set bucket quota to 1GB - ]); - - $resp = $obsClient->getBucketQuota ([ - 'Bucket' => $bucketName - ]); - printf ("Getting bucket quota:%s\n\n", $resp ['StorageQuota'] ); -} - -function doBucketVersioningOperation() -{ - global $obsClient; - global $bucketName; - - $resp = $obsClient->getBucketVersioningConfiguration ( [ - 'Bucket' => $bucketName - ]); - printf ( "Getting bucket versioning config:%s\n\n", $resp ['Status']); - //Enable bucket versioning - $obsClient->setBucketVersioningConfiguration ([ - 'Bucket' => $bucketName, - 'Status' => 'Enabled' - ]); - $resp = $obsClient->getBucketVersioningConfiguration ( [ - 'Bucket' => $bucketName - ]); - printf ( "Current bucket versioning config:%s\n\n", $resp ['Status']); - - //Suspend bucket versioning - $obsClient->setBucketVersioningConfiguration ([ - 'Bucket' => $bucketName, - 'Status' => 'Suspended' - ]); - $resp = $obsClient->getBucketVersioningConfiguration ( [ - 'Bucket' => $bucketName - ]); - printf ( "Current bucket versioning config:%s\n\n", $resp ['Status']); -} - -function doBucketAclOperation() -{ - global $obsClient; - global $bucketName; - printf ("Setting bucket ACL to ". ObsClient::AclPublicRead. "\n\n"); - $obsClient->setBucketAcl ([ - 'Bucket' => $bucketName, - 'ACL' => ObsClient::AclPublicRead, - ]); - - $resp = $obsClient->getBucketAcl ([ - 'Bucket' => $bucketName - ]); - printf ("Getting bucket ACL:%s\n\n", json_encode($resp -> toArray())); - - printf ("Setting bucket ACL to ". ObsClient::AclPrivate. "\n\n"); - - $obsClient->setBucketAcl ([ - 'Bucket' => $bucketName, - 'ACL' => ObsClient::AclPrivate, - ]); - $resp = $obsClient->getBucketAcl ([ - 'Bucket' => $bucketName - ]); - printf ("Getting bucket ACL:%s\n\n", json_encode($resp -> toArray())); - return $resp ['Owner'] ['ID']; -} - -function doBucketCorsOperation() -{ - global $obsClient; - global $bucketName; - printf ("Setting bucket CORS\n\n"); - $obsClient->setBucketCors ( [ - 'Bucket' => $bucketName, - 'CorsRule' => [ - [ - 'AllowedMethod' => ['HEAD', 'GET', 'PUT'], - 'AllowedOrigin' => ['http://www.a.com', 'http://www.b.com'], - 'AllowedHeader'=> ['Authorization'], - 'ExposeHeaders' => ['x-obs-test1', 'x-obs-test2'], - 'MaxAgeSeconds' => 100 - ] - ] - ] ); - printf ("Getting bucket CORS:%s\n\n", json_encode($obsClient-> getBucketCors(['Bucket' => $bucketName])-> toArray())); - -} - -function optionsBucket() -{ - global $obsClient; - global $bucketName; - - $resp = $obsClient->optionsBucket([ - 'Bucket'=>$bucketName, - 'Origin'=>'http://www.a.com', - 'AccessControlRequestMethods' => ['PUT'], - 'AccessControlRequestHeaders'=> ['Authorization'] - ]); - printf ("Options bucket: %s\n\n", json_encode($resp -> toArray())); - -} - -function getBucketMetadata() -{ - global $obsClient; - global $bucketName; - printf ("Getting bucket metadata\n\n"); - - $resp = $obsClient->getBucketMetadata ( [ - "Bucket" => $bucketName, - "Origin" => "http://www.a.com", - "RequestHeader" => "Authorization" - ] ); - printf ( "\tHttpStatusCode:%s\n", $resp ['HttpStatusCode'] ); - printf ( "\tStorageClass:%s\n", $resp ["StorageClass"] ); - printf ( "\tAllowOrigin:%s\n", $resp ["AllowOrigin"] ); - printf ( "\tMaxAgeSeconds:%s\n", $resp ["MaxAgeSeconds"] ); - printf ( "\tExposeHeader:%s\n", $resp ["ExposeHeader"] ); - printf ( "\tAllowHeader:%s\n", $resp ["AllowHeader"] ); - printf ( "\tAllowMethod:%s\n", $resp ["AllowMethod"] ); - - printf ("Deleting bucket CORS\n\n"); - $obsClient -> deleteBucketCors(['Bucket' => $bucketName]); -} - -function doBucketLifecycleOperation() -{ - global $obsClient; - global $bucketName; - - $ruleId0 = "delete obsoleted files"; - $matchPrefix0 = "obsoleted/"; - $ruleId1 = "delete temporary files"; - $matchPrefix1 = "temporary/"; - $ruleId2 = "delete temp files"; - $matchPrefix2 = "temp/"; - - printf ("Setting bucket lifecycle\n\n"); - - $obsClient->setBucketLifecycleConfiguration ( [ - 'Bucket' => $bucketName, - 'Rules' => [ - [ - 'ID' => $ruleId0, - 'Prefix' => $matchPrefix0, - 'Status' => 'Enabled', - 'Expiration'=> ['Days'=>5] - ], - [ - 'ID' => $ruleId1, - 'Prefix' => $matchPrefix1, - 'Status' => 'Enabled', - 'Expiration' => ['Date' => '2017-12-31T00:00:00Z'] - ], - [ - 'ID' => $ruleId2, - 'Prefix' => $matchPrefix2, - 'Status' => 'Enabled', - 'NoncurrentVersionExpiration' => ['NoncurrentDays' => 10] - ] - ] - ]); - - printf ("Getting bucket lifecycle\n\n"); - - $resp = $obsClient->getBucketLifecycleConfiguration ([ - 'Bucket' => $bucketName - ]); - - $i = 0; - foreach ( $resp ['Rules'] as $rule ) { - printf ( "\tRules[$i][Expiration][Date]:%s,Rules[$i][Expiration][Days]:%d\n", $rule ['Expiration'] ['Date'], $rule ['Expiration'] ['Days'] ); - printf ( "\yRules[$i][NoncurrentVersionExpiration][NoncurrentDays]:%s\n", $rule ['NoncurrentVersionExpiration'] ['NoncurrentDays'] ); - printf ( "\tRules[$i][ID]:%s,Rules[$i][Prefix]:%s,Rules[$i][Status]:%s\n", $rule ['ID'], $rule ['Prefix'], $rule ['Status'] ); - $i ++; - } - - printf ("Deleting bucket lifecycle\n\n"); - $obsClient->deleteBucketLifecycleConfiguration (['Bucket' => $bucketName]); -} - -function doBucketLoggingOperation($ownerId) -{ - global $obsClient; - global $bucketName; - - printf ("Setting bucket ACL, give the log-delivery group " . ObsClient::PermissionWrite ." and " .ObsClient::PermissionReadAcp ." permissions\n\n"); - - $obsClient->setBucketAcl ([ - 'Bucket' => $bucketName, - 'Owner' => [ - 'ID' => $ownerId - ], - 'Grants' => [ - [ - 'Grantee' => [ - 'URI' => ObsClient::GroupLogDelivery, - 'Type' => 'Group' - ], - 'Permission' => ObsClient::PermissionWrite - ], - [ - 'Grantee' => [ - 'URI' => ObsClient::GroupLogDelivery, - 'Type' => 'Group' - ], - 'Permission' => ObsClient::PermissionReadAcp - ], - ] - ]); - - printf ("Setting bucket logging\n\n"); - - $targetBucket = $bucketName; - $targetPrefix = 'log-'; - - $obsClient->setBucketLoggingConfiguration ( [ - 'Bucket' => $bucketName, - 'LoggingEnabled' => [ - 'TargetBucket' => $targetBucket, - 'TargetPrefix' => $targetPrefix, - 'TargetGrants' => [ - [ - 'Grantee' => [ - 'URI' => ObsClient::GroupAuthenticatedUsers, - 'Type' => 'Group' - ], - 'Permission' => ObsClient::PermissionRead - ] - ] - ] - ]); - - printf ("Getting bucket logging\n"); - - $resp = $obsClient->getBucketLoggingConfiguration ([ - 'Bucket' => $bucketName - ]); - - printf ("\tTarget bucket=%s, target prefix=%s\n", $resp ['LoggingEnabled'] ['TargetBucket'], $resp ['LoggingEnabled'] ['TargetPrefix'] ); - printf("\tTargetGrants=%s\n\n", json_encode($resp ['LoggingEnabled'] ['TargetGrants'])); - - printf ("Deletting bucket logging\n"); - - $obsClient->setBucketLoggingConfiguration ( [ - 'Bucket' => $bucketName - ]); -} - -function doBucketWebsiteOperation() -{ - global $obsClient; - global $bucketName; - - printf ("Setting bucket website\n\n"); - - $obsClient->setBucketWebsiteConfiguration ([ - 'Bucket' => $bucketName, - 'IndexDocument' => [ - 'Suffix' => 'index.html' - ], - 'ErrorDocument' => [ - 'Key' => 'error.html' - ] - ]); - printf ("Getting bucket website\n"); - - $resp = $obsClient->GetBucketWebsiteConfiguration ( [ - 'Bucket' => $bucketName - ]); - - printf ("\tIndex document=%s, error document=%s\n\n", $resp ['IndexDocument'] ['Suffix'], $resp ['ErrorDocument'] ['Key']); - printf ("Deletting bucket website\n"); - - $obsClient->deleteBucketWebsiteConfiguration ([ - 'Bucket' => $bucketName - ]); -} - -function doBucketTaggingOperation() -{ - global $obsClient; - global $bucketName; - printf ("Setting bucket tagging\n\n"); - $obsClient -> setBucketTagging([ - 'Bucket' => $bucketName, - 'TagSet' => [ - [ - 'Key' => 'testKey1', - 'Value' => 'testValue1' - ], - [ - 'Key' => 'testKey2', - 'Value' => 'testValue2' - ] - ] - ]); - printf ("Getting bucket tagging\n"); - - $resp = $obsClient -> getBucketTagging(['Bucket' => $bucketName]); - - printf ("\t%s\n\n", json_encode($resp->toArray())); - - printf ("Deletting bucket tagging\n\n"); - - $obsClient -> deleteBucketTagging(['Bucket' => $bucketName]); -} - -function deleteBucket() -{ - - global $obsClient; - global $bucketName; - - $resp = $obsClient->deleteBucket ([ - 'Bucket' => $bucketName - ] ); - printf("Deleting bucket %s successfully!\n\n", $bucketName); - printf("HttpStatusCode:%s\n\n", $resp ['HttpStatusCode']); -} - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentCopyPartSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentCopyPartSample.php deleted file mode 100644 index 4e180905..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentCopyPartSample.php +++ /dev/null @@ -1,221 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - - $sampleFilePath = '/temp/test.txt'; //sample large file path - // you can prepare a large file in you filesystem first - createSampleFile($sampleFilePath); - - /* - * Upload an object to your source bucket - */ - $obsClient -> putObject(['Bucket' => $sourceBucketName, 'Key' => $sourceObjectKey, 'SourceFile' => $sampleFilePath]); - - /* - * Claim a upload id firstly - */ - $resp = $obsClient -> initiateMultipartUpload(['Bucket' => $bucketName, 'Key' => $objectKey]); - $uploadId = $resp['UploadId']; - printf("Claiming a new upload id %s\n\n", $uploadId); - - - $partSize = 5 * 1024 * 1024; - $resp = $obsClient -> getObjectMetadata(['Bucket' => $sourceBucketName, 'Key' => $sourceObjectKey]); - $objectSize = $resp['ContentLength']; - - $partCount = $objectSize % $partSize === 0 ? intval($objectSize / $partSize) : intval($objectSize / $partSize) + 1; - - if($partCount > 10000){ - throw new \RuntimeException('Total parts count should not exceed 10000'); - } - printf("Total parts count %d\n\n", $partCount); - - /* - * Upload multiparts by copy mode - */ - $promise = null; - $parts = []; - printf("Begin to upload multiparts to OBS by copy mode\n\n"); - for($i = 0; $i < $partCount; $i++){ - $rangeStart = $i * $partSize; - $rangeEnd = ($i + 1 === $partCount) ? $objectSize - 1 : $rangeStart + $partSize - 1; - $partNumber = $i + 1; - $p = $obsClient -> copyPartAsync([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => $uploadId, - 'PartNumber' => $partNumber, - 'CopySource'=>sprintf('%s/%s', $sourceBucketName, $sourceObjectKey), - 'CopySourceRange' => sprintf('bytes=%d-%d', $rangeStart, $rangeEnd) - ], function($exception, $resp) use (&$parts, $partNumber){ - $parts[] = ['PartNumber' => $partNumber, 'ETag' => $resp['ETag']]; - printf ( "Part#" . strval ( $partNumber ) . " done\n\n" ); - }); - - if($promise === null){ - $promise = $p; - } - } - - - /* - * Waiting for all parts finished - */ - $promise->wait(); - - usort($parts, function($a, $b){ - if($a['PartNumber'] === $b['PartNumber']){ - return 0; - } - return $a['PartNumber'] > $b['PartNumber'] ? 1 : -1; - }); - - /* - * Verify whether all parts are finished - */ - if(count($parts) !== $partCount){ - throw new \RuntimeException('Upload multiparts fail due to some parts are not finished yet'); - } - - - printf("Succeed to complete multiparts into an object named %s\n\n", $objectKey); - - /* - * View all parts uploaded recently - */ - printf("Listing all parts......\n"); - $resp = $obsClient -> listParts(['Bucket' => $bucketName, 'Key' => $objectKey, 'UploadId' => $uploadId]); - foreach ($resp['Parts'] as $part) - { - printf("\tPart#%d, ETag=%s\n", $part['PartNumber'], $part['ETag']); - } - printf("\n"); - - /* - * Complete to upload multiparts - */ - $resp = $obsClient->completeMultipartUpload([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => $uploadId, - 'Parts'=> $parts - ]); - - if(file_exists($sampleFilePath)){ - unlink($sampleFilePath); - } - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - - -function createSampleFile($filePath) -{ - if(file_exists($filePath)){ - return; - } - $filePath = iconv('UTF-8', 'GBK', $filePath); - if(is_string($filePath) && $filePath !== '') - { - $fp = null; - $dir = dirname($filePath); - try{ - if(!is_dir($dir)) - { - mkdir($dir,0755,true); - } - - if(($fp = fopen($filePath, 'w'))) - { - - for($i=0;$i< 1000000;$i++){ - fwrite($fp, uniqid() . "\n"); - fwrite($fp, uniqid() . "\n"); - if($i % 100 === 0){ - fflush($fp); - } - } - } - }finally{ - if($fp){ - fclose($fp); - } - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentDownloadObjectSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentDownloadObjectSample.php deleted file mode 100644 index 17ff984c..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentDownloadObjectSample.php +++ /dev/null @@ -1,203 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -]); - -try { - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient->createBucket([ - 'Bucket' => $bucketName - ]); - - $sampleFilePath = '/temp/test.txt'; // sample large file path - // you can prepare a large file in you filesystem first - createSampleFile($sampleFilePath); - - /* - * Upload an object to your bucket - */ - printf("Uploading a new object to OBS from a file\n\n"); - $obsClient->putObject([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'SourceFile' => $sampleFilePath - ]); - - /* - * Get size of the object and pre-create a random access file to hold object data - */ - $resp = $obsClient->getObjectMetadata([ - 'Bucket' => $bucketName, - 'Key' => $objectKey - ]); - - $objectSize = $resp ['ContentLength']; - - printf("Object size from metadata:%d\n\n", $objectSize); - - $dir = dirname($localFilePath); - if (! is_dir($dir)) { - mkdir($dir, 0755, true); - } - - /* - * Calculate how many blocks to be divided - */ - $blockSize = 5 * 1024 * 1024; // 5MB - $blockCount = intval($objectSize / $blockSize); - - if ($objectSize % $blockSize !== 0) { - $blockCount ++; - } - - printf("Total blocks count:%d\n\n", $blockCount); - - /* - * Download the object concurrently - */ - printf("Start to download %s\n\n", $objectKey); - - $fp = fopen($localFilePath, 'w'); - $promise = null; - - for($i = 0; $i < $blockCount;) { - $startPos = $i ++ * $blockSize; - $endPos = ($i == $blockCount) ? $objectSize - 1 : ($i * $blockSize - 1); - $range = sprintf('bytes=%d-%d', $startPos, $endPos); - $p = $obsClient->getObjectAsync([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Range' => $range - ], function ($exception, $resp) use ($startPos, $fp, $i, $range) { - fseek($fp, $startPos, 0); - printf("%s\n", $range); - try { - while ( ! $resp ['Body']->eof() ) { - $str = $resp ['Body']->read(65536); - fwrite($fp, $str); - } - } catch ( Exception $exception ) { - printf($exception); - } - $resp ['Body']->close(); - printf("Part#" . strval($i) . " done\n\n"); - }); - if ($promise === null) { - $promise = $p; - } - } - - /* - * Waiting for all blocks finished - */ - $promise->wait(); - fclose($fp); - if (file_exists($sampleFilePath)) { - unlink($sampleFilePath); - } - - /* - * Deleting object - */ - printf("Deleting object %s \n\n", $objectKey); - $obsClient->deleteObject([ - 'Bucket' => $bucketName, - 'Key' => $objectKey - ]); -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode() . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage() . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode() . PHP_EOL; - echo 'Request ID:' . $e->getRequestId() . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType() . PHP_EOL; -} finally{ - $obsClient->close(); -} - -function createSampleFile($filePath) { - if (file_exists($filePath)) { - return; - } - $filePath = iconv('UTF-8', 'GBK', $filePath); - if (is_string($filePath) && $filePath !== '') { - $fp = null; - $dir = dirname($filePath); - try { - if (! is_dir($dir)) { - mkdir($dir, 0755, true); - } - - if (($fp = fopen($filePath, 'w'))) { - - for($i = 0; $i < 1000000; $i ++) { - fwrite($fp, uniqid() . "\n"); - fwrite($fp, uniqid() . "\n"); - if ($i % 100 === 0) { - fflush($fp); - } - } - } - } finally{ - if ($fp) { - fclose($fp); - } - } - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentUploadPartSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentUploadPartSample.php deleted file mode 100644 index 7d558a78..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ConcurrentUploadPartSample.php +++ /dev/null @@ -1,215 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Claim a upload id firstly - */ - $resp = $obsClient -> initiateMultipartUpload(['Bucket' => $bucketName, 'Key' => $objectKey]); - - $uploadId = $resp['UploadId']; - printf("Claiming a new upload id %s\n\n", $uploadId); - - $sampleFilePath = '/temp/test.txt'; //sample large file path - // you can prepare a large file in you filesystem first - createSampleFile($sampleFilePath); - - $partSize = 5 * 1024 * 1024; - $fileLength = filesize($sampleFilePath); - - $partCount = $fileLength % $partSize === 0 ? intval($fileLength / $partSize) : intval($fileLength / $partSize) + 1; - - if($partCount > 10000){ - throw new \RuntimeException('Total parts count should not exceed 10000'); - } - - printf("Total parts count %d\n\n", $partCount); - $parts = []; - $promise = null; - /* - * Upload multiparts to your bucket - */ - printf("Begin to upload multiparts to OBS from a file\n\n"); - for($i = 0; $i < $partCount; $i++){ - $offset = $i * $partSize; - $currPartSize = ($i + 1 === $partCount) ? $fileLength - $offset : $partSize; - $partNumber = $i + 1; - $p = $obsClient -> uploadPartAsync([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => $uploadId, - 'PartNumber' => $partNumber, - 'SourceFile' => $sampleFilePath, - 'Offset' => $offset, - 'PartSize' => $currPartSize - ], function($exception, $resp) use(&$parts, $partNumber) { - $parts[] = ['PartNumber' => $partNumber, 'ETag' => $resp['ETag']]; - printf ( "Part#" . strval ( $partNumber ) . " done\n\n" ); - }); - - if($promise === null){ - $promise = $p; - } - } - - /* - * Waiting for all parts finished - */ - $promise -> wait(); - - usort($parts, function($a, $b){ - if($a['PartNumber'] === $b['PartNumber']){ - return 0; - } - return $a['PartNumber'] > $b['PartNumber'] ? 1 : -1; - }); - - /* - * Verify whether all parts are finished - */ - if(count($parts) !== $partCount){ - throw new \RuntimeException('Upload multiparts fail due to some parts are not finished yet'); - } - - - printf("Succeed to complete multiparts into an object named %s\n\n", $objectKey); - - /* - * View all parts uploaded recently - */ - printf("Listing all parts......\n"); - $resp = $obsClient -> listParts(['Bucket' => $bucketName, 'Key' => $objectKey, 'UploadId' => $uploadId]); - foreach ($resp['Parts'] as $part) - { - printf("\tPart#%d, ETag=%s\n", $part['PartNumber'], $part['ETag']); - } - printf("\n"); - - - /* - * Complete to upload multiparts - */ - $resp = $obsClient->completeMultipartUpload([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => $uploadId, - 'Parts'=> $parts - ]); - -// deleteTempFile($sampleFilePath); - - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - - -function createSampleFile($filePath) -{ - if(file_exists($filePath)){ - return; - } - $filePath = iconv('UTF-8', 'GBK', $filePath); - if(is_string($filePath) && $filePath !== '') - { - $fp = null; - $dir = dirname($filePath); - try{ - if(!is_dir($dir)) - { - mkdir($dir,0755,true); - } - - if(($fp = fopen($filePath, 'w'))) - { - - for($i=0;$i< 1000000;$i++){ - fwrite($fp, uniqid() . "\n"); - fwrite($fp, uniqid() . "\n"); - if($i % 100 === 0){ - fflush($fp); - } - } - } - }finally{ - if($fp){ - fclose($fp); - } - } - } -} - -function deleteTempFile($sampleFilePath) { - if(file_exists($sampleFilePath)){ - unlink($sampleFilePath); - }; -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/CreateFolderSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/CreateFolderSample.php deleted file mode 100644 index 99ef7a54..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/CreateFolderSample.php +++ /dev/null @@ -1,100 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - echo "Create a new bucket for demo\n\n"; - $obsClient -> createBucket(['Bucket' => $bucketName]); - - - /* - * Create an empty folder without request body, note that the key must be - * suffixed with a slash - */ - $keySuffixWithSlash = "MyObjectKey1/"; - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $keySuffixWithSlash]); - echo "Creating an empty folder " . $keySuffixWithSlash . "\n\n"; - - /* - * Verify whether the size of the empty folder is zero - */ - $resp = $obsClient -> getObject(['Bucket' => $bucketName, 'Key' => $keySuffixWithSlash]); - - echo "Size of the empty folder '" . $keySuffixWithSlash. "' is " . $resp['ContentLength'] . "\n\n"; - if($resp['Body']){ - $resp['Body'] -> close(); - } - - /* - * Create an object under the folder just created - */ - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $keySuffixWithSlash . $objectKey, 'Body' => 'Hello OBS']); - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DeleteObjectsSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DeleteObjectsSample.php deleted file mode 100644 index 66966006..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DeleteObjectsSample.php +++ /dev/null @@ -1,149 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - echo "Create a new bucket for demo\n\n"; - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Batch put objects into the bucket - */ - $content = 'Thank you for using Object Storage Service'; - $keyPrefix = 'MyObjectKey'; - $keys = []; - - $start = microtime(true); - -// doUploadSync($keys, $keyPrefix, $content); - - doUploadAsync($keys, $keyPrefix, $content); - - printf("Cost " . round(microtime(true) - $start, 3) * 1000 . " ms to upload 100 objects\n\n"); - - /* - * Delete all objects uploaded recently under the bucket - */ - - printf("Deleting all objects\n\n"); - - $resp = $obsClient->deleteObjects([ - 'Bucket'=>$bucketName, - 'Objects'=>$keys, - 'Quiet'=> false, - ]); - - printf("Delete results:\n\n"); - $i = 0; - foreach ($resp['Deleteds'] as $delete) - { - printf("\tDeleteds[$i][Key]:%s,Deleted[$i][VersionId]:%s,Deleted[$i][DeleteMarker]:%s,Deleted[$i][DeleteMarkerVersionId]:%s\n", - $delete['Key'],$delete['VersionId'],$delete['DeleteMarker'],$delete['DeleteMarkerVersionId']); - $i++; - } - printf("\n"); - printf("Error results:\n\n"); - $i = 0; - foreach ($resp['Errors'] as $error) - { - printf("\tErrors[$i][Key]:%s,Errors[$i][VersionId]:%s,Errors[$i][Code]:%s,Errors[$i][Message]:%s\n", - $error['Key'],$error['VersionId'],$error['Code'],$error['Message']); - $i++; - } - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - -function doUploadSync(&$keys, $keyPrefix, $content) -{ - global $obsClient; - global $bucketName; - for($i = 0;$i < 100;$i++){ - $key = $keyPrefix . strval($i); - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $key, 'Body' => $content]); - printf("Succeed to put object %s\n\n", $key); - $keys[] = ['Key' => $key]; - } -} - -function doUploadAsync(&$keys, $keyPrefix, $content) -{ - global $obsClient; - global $bucketName; - $promise = null; - for($i = 0;$i < 100;$i++){ - $key = $keyPrefix . strval($i); - $p = $obsClient -> putObjectAsync(['Bucket' => $bucketName, 'Key' => $key, 'Body' => $content], - function($exception, $resp) use ($key){ - printf("Succeed to put object %s\n\n", $key); - }); - if($promise === null){ - $promise = $p; - } - $keys[] = ['Key' => $key]; - } - $promise -> wait(); -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DownloadSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DownloadSample.php deleted file mode 100644 index 9e2ede07..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/DownloadSample.php +++ /dev/null @@ -1,101 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Upload an object to your bucket - */ - printf("Uploading a new object to OBS\n\n"); - $content = "abcdefghijklmnopqrstuvwxyz\n\t0123456789011234567890\n"; - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $objectKey, 'Body' => $content]); - - /* - * Download the object as an inputstream and display it directly - */ - printf("Downloading an object\n"); - $resp = $obsClient -> getObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - printf("\t%s\n\n", $resp['Body']); - - - /* - * Download the object to a file - */ - printf("Downloading an object to local file\n"); - $resp = $obsClient -> getObject(['Bucket' => $bucketName, 'Key' => $objectKey, 'SaveAsFile' => '/temp/' .$objectKey]); - printf("\tSaveAsFile:%s\n\n", $resp['SaveAsFile']); - - - printf("Deleting object %s \n\n", $objectKey); - $obsClient -> deleteObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsInFolderSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsInFolderSample.php deleted file mode 100644 index dcb7e38e..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsInFolderSample.php +++ /dev/null @@ -1,191 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * First prepare folders and sub folders - */ - $keys = []; - $promise = null; - $keyPrefix = 'MyObjectKey'; - $folderPrefix = 'src'; - $subFolderPrefix = 'test'; - - for($i = 0; $i<5; $i++){ - $key = $folderPrefix . $i . '/'; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $key]); - $keys[] = ['Key' => $key]; - for($j = 0; $j < 3; $j++){ - $subKey = $key . $subFolderPrefix . $j . '/'; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $subKey]); - $keys[] = ['Key' => $subKey]; - } - } - - /* - * Insert 2 objects in each folder - */ - $resp = $obsClient -> listObjects(['Bucket' => $bucketName]); - foreach ($resp ['Contents'] as $content ) { - for($k =0; $k < 2; $k++){ - $objectKey = $content['Key'] . $keyPrefix . $k; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $objectKey, 'Body' => 'Hello OBS']); - $keys[] = ['Key' => $objectKey]; - } - } - - /* - * Insert 2 objects in root path - */ - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $keyPrefix . '0', 'Body' => 'Hello OBS']); - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $keyPrefix . '1', 'Body' => 'Hello OBS']); - printf("Put %d objects completed.\n\n", count($keys)); - - - /* - * List all objects in folder src0/ - */ - printf("List all objects in folder src0/\n\n"); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'Prefix' => 'src0/']); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - /* - * List all objects in sub folder src0/test0/ - */ - - printf("List all objects in folder src0/test0/\n\n"); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'Prefix' => 'src0/test0/']); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - /* - * List all objects group by folder - */ - printf("List all objects group by folder\n\n"); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'Delimiter' => '/']); - printf("Root path:\n"); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - listObjectsByPrefix($resp); - printf("\n"); - - /* - * Delete all the objects created - */ - $resp = $obsClient->deleteObjects([ - 'Bucket'=>$bucketName, - 'Objects'=>$keys, - 'Quiet'=> false, - ]); - - printf("Delete results:\n\n"); - $i = 0; - foreach ($resp['Deleteds'] as $delete) - { - printf("\tDeleteds[$i][Key]:%s,Deleted[$i][VersionId]:%s,Deleted[$i][DeleteMarker]:%s,Deleted[$i][DeleteMarkerVersionId]:%s\n", - $delete['Key'],$delete['VersionId'],$delete['DeleteMarker'],$delete['DeleteMarkerVersionId']); - $i++; - } - printf("\n"); - printf("Error results:\n\n"); - $i = 0; - foreach ($resp['Errors'] as $error) - { - printf("\tErrors[$i][Key]:%s,Errors[$i][VersionId]:%s,Errors[$i][Code]:%s,Errors[$i][Message]:%s\n", - $error['Key'],$error['VersionId'],$error['Code'],$error['Message']); - $i++; - } - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - - -function listObjectsByPrefix($resp){ - global $obsClient; - global $bucketName; - while(!empty($resp ['CommonPrefixes'])){ - foreach ($resp ['CommonPrefixes'] as $commonPrefix){ - $commonPrefix = $commonPrefix['Prefix']; - printf("Folder %s:\n", $commonPrefix); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'Delimiter' => '/', 'Prefix' => $commonPrefix]); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - listObjectsByPrefix($resp); - } - } - -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsSample.php deleted file mode 100644 index 2087d9f8..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListObjectsSample.php +++ /dev/null @@ -1,180 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - - /* - * First insert 100 objects for demo - */ - $promise = null; - $keyPrefix = 'MyObjectKey'; - for($i = 0;$i < 100;$i++){ - $key = $keyPrefix . strval($i); - $p = $obsClient -> putObjectAsync(['Bucket' => $bucketName, 'Key' => $key, 'Body' => 'Hello OBS'],function(){}); - if($promise === null){ - $promise = $p; - } - $keys[] = ['Key' => $key]; - } - $promise -> wait(); - - printf("Put %d objects completed.\n\n", count($keys)); - - /* - * List objects using default parameters, will return up to 1000 objects - */ - printf("List objects using default parameters:\n"); - - $resp = $obsClient -> listObjects(['Bucket' => $bucketName]); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - /* - * List the first 10 objects - */ - printf("List the first 10 objects:\n"); - - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'MaxKeys' => 10]); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - $theSecond10ObjectsMarker = $resp['NextMarker']; - /* - * List the second 10 objects using marker - */ - printf("List the second 10 objects using marker:\n"); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'MaxKeys' => 10, 'Marker' => $theSecond10ObjectsMarker]); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - /* - * List objects with prefix and max keys - */ - printf("List objects with prefix and max keys:\n"); - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'MaxKeys' => 5, 'Prefix' => $keyPrefix . '2']); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - printf("\n"); - - /* - * List all the objects in way of pagination - */ - printf("List all the objects in way of pagination:\n"); - $nextMarker = null; - $index = 1; - do{ - - $resp = $obsClient -> listObjects(['Bucket' => $bucketName, 'MaxKeys' => 10, 'Marker' => $nextMarker]); - $nextMarker = $resp['NextMarker']; - printf("Page:%d\n", $index++); - foreach ( $resp ['Contents'] as $content ) { - printf("\t%s etag[%s]\n", $content ['Key'], $content ['ETag']); - } - - }while($resp['IsTruncated']); - printf("\n"); - /* - * Delete all the objects created - */ - $resp = $obsClient->deleteObjects([ - 'Bucket'=>$bucketName, - 'Objects'=>$keys, - 'Quiet'=> false, - ]); - - printf("Delete results:\n\n"); - $i = 0; - foreach ($resp['Deleteds'] as $delete) - { - printf("\tDeleteds[$i][Key]:%s,Deleted[$i][VersionId]:%s,Deleted[$i][DeleteMarker]:%s,Deleted[$i][DeleteMarkerVersionId]:%s\n", - $delete['Key'],$delete['VersionId'],$delete['DeleteMarker'],$delete['DeleteMarkerVersionId']); - $i++; - } - printf("\n"); - printf("Error results:\n\n"); - $i = 0; - foreach ($resp['Errors'] as $error) - { - printf("\tErrors[$i][Key]:%s,Errors[$i][VersionId]:%s,Errors[$i][Code]:%s,Errors[$i][Message]:%s\n", - $error['Key'],$error['VersionId'],$error['Code'],$error['Message']); - $i++; - } - - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListVersionsSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListVersionsSample.php deleted file mode 100644 index 3364ee04..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ListVersionsSample.php +++ /dev/null @@ -1,236 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Enable bucket versioning - */ - $obsClient -> setBucketVersioningConfiguration(['Bucket' => $bucketName, 'Status' => 'Enabled']); - - /* - * First prepare folders and sub folders - */ - $keys = []; - $promise = null; - $keyPrefix = 'MyObjectKey'; - $folderPrefix = 'src'; - $subFolderPrefix = 'test'; - - for($i = 0; $i<5; $i++){ - $key = $folderPrefix . $i . '/'; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $key]); - $keys[] = ['Key' => $key]; - for($j = 0; $j < 3; $j++){ - $subKey = $key . $subFolderPrefix . $j . '/'; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $subKey]); - $keys[] = ['Key' => $subKey]; - } - } - - /* - * Insert 2 objects in each folder - */ - $resp = $obsClient -> listObjects(['Bucket' => $bucketName]); - foreach ($resp ['Contents'] as $content ) { - for($k =0; $k < 2; $k++){ - $objectKey = $content['Key'] . $keyPrefix . $k; - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $objectKey, 'Body' => 'Hello OBS']); - $keys[] = ['Key' => $objectKey]; - } - } - - /* - * Insert 2 objects in root path - */ - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $keyPrefix . '0', 'Body' => 'Hello OBS']); - $obsClient -> putObject(['Bucket'=>$bucketName, 'Key' => $keyPrefix . '1', 'Body' => 'Hello OBS']); - - printf("Put %d objects completed.\n\n", count($keys)); - - - $keys = []; - - /* - * List versions using default parameters, will return up to 1000 objects - */ - $resp = $obsClient -> listVersions (['Bucket' => $bucketName ]); - printf("\tVersions:\n"); - foreach ( $resp ['Versions'] as $version ) { - printf("\t%s etag[%s] versionid[%s]\n", $version['Key'], $version['ETag'],$version['VersionId']); - $keys[] = ['Key' => $version['Key'], 'VersionId' => $version['VersionId']]; - } - printf("\n"); - - printf("\tDeleteMarkers:\n"); - foreach ( $resp ['DeleteMarkers'] as $deleteMarker ) { - printf("\t%s versionid[%s]\n", $deleteMarker['Key'], $deleteMarker['VersionId']); - $keys[] = ['Key' => $deleteMarker['Key'], 'VersionId' => $deleteMarker['VersionId']]; - } - printf("\n"); - - - /* - * List all the versions in way of pagination - */ - printf("List all the versions in way of pagination:\n"); - $nextMarker = null; - $index = 1; - do{ - $resp = $obsClient -> listVersions(['Bucket' => $bucketName, 'MaxKeys' => 10, 'KeyMarker' => $nextMarker]); - $nextMarker = $resp['NextKeyMarker']; - printf("Page:%d\n", $index++); - - printf("\tVersions:\n"); - foreach ( $resp ['Versions'] as $version ) { - printf("\t%s etag[%s] versionid[%s]\n", $version['Key'], $version['ETag'],$version['VersionId']); - } - - printf("\n"); - printf("\tDeleteMarkers:\n"); - foreach ( $resp ['DeleteMarkers'] as $deleteMarker ) { - printf("\t%s versionid[%s]\n", $deleteMarker['Key'], $deleteMarker['VersionId']); - } - }while($resp['IsTruncated']); - printf("\n"); - - /* - * List all versions group by folder - */ - printf("List all versions group by folder \n"); - $resp = $obsClient -> listVersions(['Bucket' => $bucketName, 'Delimiter' => '/']); - - printf("Root path:\n"); - printf("\tVersions:\n"); - foreach ( $resp ['Versions'] as $version ) { - printf("\t%s etag[%s] versionid[%s]\n", $version['Key'], $version['ETag'],$version['VersionId']); - } - - printf("\n"); - printf("\tDeleteMarkers:\n"); - foreach ( $resp ['DeleteMarkers'] as $deleteMarker ) { - printf("\t%s versionid[%s]\n", $deleteMarker['Key'], $deleteMarker['VersionId']); - } - - listVersionsByPrefix($resp); - - - printf("\n"); - /* - * Delete all the objects created - */ - $resp = $obsClient->deleteObjects([ - 'Bucket'=>$bucketName, - 'Objects'=>$keys, - 'Quiet'=> false, - ]); - - printf("Delete results:\n\n"); - $i = 0; - foreach ($resp['Deleteds'] as $delete) - { - printf("\tDeleteds[$i][Key]:%s,Deleted[$i][VersionId]:%s,Deleted[$i][DeleteMarker]:%s,Deleted[$i][DeleteMarkerVersionId]:%s\n", - $delete['Key'],$delete['VersionId'],$delete['DeleteMarker'],$delete['DeleteMarkerVersionId']); - $i++; - } - printf("\n"); - printf("Error results:\n\n"); - $i = 0; - foreach ($resp['Errors'] as $error) - { - printf("\tErrors[$i][Key]:%s,Errors[$i][VersionId]:%s,Errors[$i][Code]:%s,Errors[$i][Message]:%s\n", - $error['Key'],$error['VersionId'],$error['Code'],$error['Message']); - $i++; - } - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - -function listVersionsByPrefix($resp){ - global $obsClient; - global $bucketName; - while(!empty($resp ['CommonPrefixes'])){ - foreach ($resp ['CommonPrefixes'] as $commonPrefix){ - $commonPrefix = $commonPrefix['Prefix']; - printf("Folder %s:\n", $commonPrefix); - $resp = $obsClient -> listVersions(['Bucket' => $bucketName, 'Delimiter' => '/', 'Prefix' => $commonPrefix]); - printf("\tVersions:\n"); - foreach ( $resp ['Versions'] as $version ) { - printf("\t%s etag[%s] versionid[%s]\n", $version['Key'], $version['ETag'],$version['VersionId']); - } - printf("\n"); - printf("\tDeleteMarkers:\n"); - foreach ( $resp ['DeleteMarkers'] as $deleteMarker ) { - printf("\t%s versionid[%s]\n", $deleteMarker['Key'], $deleteMarker['VersionId']); - } - listVersionsByPrefix($resp); - } - } - -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectMetaSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectMetaSample.php deleted file mode 100644 index 55edf927..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectMetaSample.php +++ /dev/null @@ -1,107 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Create object - */ - $content = 'Hello OBS'; - - /* - * Setting self-defined metadata - */ - - $metadata = []; - - $metadata['meta1'] = 'value1'; - $metadata['meta2'] = 'value2'; - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $objectKey, 'Body' => $content, 'Metadata' => $metadata]); - - printf("Create object %s successfully!\n\n", $objectKey); - - /* - * Get object metadata - */ - $resp = $obsClient -> getObjectMetadata(['Bucket' => $bucketName, 'Key' => $objectKey]); - printf("Getting object metadata:\n"); - foreach ($resp['Metadata'] as $key => $value){ - printf("\t%s=%s\n", $key, $value); - } - - /* - * Delete object - */ - $obsClient -> deleteObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectOperationsSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectOperationsSample.php deleted file mode 100644 index f1878808..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObjectOperationsSample.php +++ /dev/null @@ -1,187 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create bucket - */ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Create object - */ - $content = 'Hello OBS'; - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $objectKey, 'Body' => $content]); - printf("Create object: %s successfully!\n\n", $objectKey); - - - /* - * Get object metadata - */ - printf("Getting object metadata\n"); - $resp = $obsClient->getObjectMetadata([ - 'Bucket'=>$bucketName, - 'Key'=>$objectKey, - ]); - printf("\tMetadata:%s\n\n", json_encode($resp)); - - /* - * Get object - */ - printf("Getting object content\n"); - $resp = $obsClient -> getObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - printf("\t%s\n\n", $resp['Body']); - - /* - * Copy object - */ - $sourceBucketName = $bucketName; - $destBucketName = $bucketName; - $sourceObjectKey = $objectKey; - $destObjectKey = $objectKey . '-back'; - printf("Copying object\n\n"); - $obsClient -> copyObject([ - 'Bucket'=> $destBucketName, - 'Key'=> $destObjectKey, - 'CopySource'=>$sourceBucketName . '/' . $sourceObjectKey, - 'MetadataDirective' => ObsClient::CopyMetadata - ]); - - /* - * Options object - */ - doObjectOptions(); - - /* - * Put/Get object acl operations - */ - doObjectAclOperations(); - - /* - * Delete object - */ - printf("Deleting objects\n\n"); - $obsClient -> deleteObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - $obsClient -> deleteObject(['Bucket' => $bucketName, 'Key' => $destObjectKey]); - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} - -function doObjectOptions() -{ - - global $obsClient; - global $bucketName; - global $objectKey; - - $obsClient->setBucketCors ( [ - 'Bucket' => $bucketName, - 'CorsRule' => [ - [ - 'AllowedMethod' => ['HEAD', 'GET', 'PUT'], - 'AllowedOrigin' => ['http://www.a.com', 'http://www.b.com'], - 'AllowedHeader'=> ['Authorization'], - 'ExposeHeaders' => ['x-obs-test1', 'x-obs-test2'], - 'MaxAgeSeconds' => 100 - ] - ] - ] ); - - $resp = $obsClient->optionsObject([ - 'Bucket'=>$bucketName, - 'Key' => $objectKey, - 'Origin'=>'http://www.a.com', - 'AccessControlRequestMethods' => ['PUT'], - 'AccessControlRequestHeaders'=> ['Authorization'] - ]); - printf ("Options bucket: %s\n\n", json_encode($resp -> toArray())); - -} - -function doObjectAclOperations() -{ - global $obsClient; - global $bucketName; - global $objectKey; - - printf("Setting object ACL to " . ObsClient::AclPublicRead . "\n\n"); - - $obsClient ->setObjectAcl([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'ACL' => ObsClient::AclPublicRead - ]); - - printf("Getting object ACL\n"); - $resp = $obsClient -> getObjectAcl([ - 'Bucket' => $bucketName, - 'Key' => $objectKey - ]); - printf("\tOwner:%s\n", json_encode($resp['Owner'])); - printf("\tGrants:%s\n\n", json_encode($resp['Grants'])); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObsPhpDemo.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObsPhpDemo.php deleted file mode 100644 index a80c2e8c..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/ObsPhpDemo.php +++ /dev/null @@ -1,1406 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, -)); - -$obsClient->initLog(array ( - 'FilePath' => './logs', - 'FileName' => 'eSDK-OBS-PHP.log', - 'MaxFiles' => 10, - 'Level' => WARN -)); - -$bucketName = 'bucket000'; -$objectKey = 'test'; - -// create bucket -function CreateBucket() { - global $obsClient; - global $bucketName; - echo "create bucket start...\n"; - try { - $resp = $obsClient->createBucket(array ( - 'Bucket' => $bucketName, - 'ACL' => ObsClient::AclPrivate, - 'LocationConstraint' => '', - 'StorageClass' => ObsClient::StorageClassWarm - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("Location:%s\n", $resp ['Location']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// list buckets -function ListBuckets() { - global $obsClient; - echo "list bucket start...\n"; - try { - $resp = $obsClient->listBuckets(); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - $i = 0; - foreach ( $resp ['Buckets'] as $bucket ) { - printf("Buckets[$i][Name]:%s,Buckets[$i][CreationDate]:%s\n", $bucket ['Name'], $bucket ['CreationDate']); - $i ++; - } - printf("Owner[ID]:%s\n", $resp ['Owner'] ['ID']); - } catch ( ObsException $e ) { - echo $e; - } -} - - -// delete bucket -function DeleteBucket() { - global $obsClient; - global $bucketName; - echo "delete bucket start...\n"; - try { - $resp = $obsClient->deleteBucket(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// list objects -function ListObjects() { - global $obsClient; - global $bucketName; - echo "list objects start...\n"; - try { - $resp = $obsClient->listObjects(array ( - 'Bucket' => $bucketName, - 'Delimiter' => '', - 'Marker' => '', - 'MaxKeys' => '', - 'Prefix' => '' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("IsTruncated:%d,Marker:%s,NextMarker:%s,Name:%s\n", $resp ['IsTruncated'], $resp ['Marker'], $resp ['NextMarker'], $resp ['Name']); - printf("Prefix:%s,Delimiter:%s,MaxKeys:%d\n", $resp ['Prefix'], $resp ['Delimiter'], $resp ['MaxKeys']); - $i = 0; - foreach ( $resp ['CommonPrefixes'] as $CommonPrefixe ) { - printf("CommonPrefixes[$i][Prefix]:%s\n", $CommonPrefixe ['Prefix']); - $i ++; - } - $i = 0; - foreach ( $resp ['Contents'] as $content ) { - printf("Contents[$i][ETag]:%s,Contents[$i][Size]:%d,Contents[$i][StorageClass]:%s\n", $content ['ETag'], $content ['Size'], $content ['StorageClass']); - printf("Contents[$i][Key]:%s,Contents[$i][LastModified]:%s\n", $content ['Key'], $content ['LastModified']); - printf("Contents[$i][Owner][ID]:%s\n", $content ['Owner'] ['ID']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// list versions -function ListVersions() { - global $obsClient; - global $bucketName; - echo "list versions start...\n"; - try { - $resp = $obsClient->listVersions(array ( - 'Bucket' => $bucketName, - 'Delimiter' => '', - 'KeyMarker' => '', - 'MaxKeys' => '', - 'Prefix' => '', - 'VersionIdMarker' => '' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("IsTruncated:%d,KeyMarker:%s,VersionIdMarker:%s,NextKeyMarker:%s\n", $resp ['IsTruncated'], $resp ['KeyMarker'], $resp ['VersionIdMarker'], $resp ['NextKeyMarker']); - printf("NextVersionIdMarker:%s,Name:%s,Prefix:%s,Delimiter:%s,MaxKeys:%s\n", $resp ['NextVersionIdMarker'], $resp ['Name'], $resp ['Prefix'], $resp ['Delimiter'], $resp ['MaxKeys']); - $i = 0; - foreach ( $resp ['CommonPrefixes'] as $CommonPrefixe ) { - printf("CommonPrefixes[$i][Prefix]:%s\n", $CommonPrefixe ['Prefix']); - $i ++; - } - $i = 0; - foreach ( $resp ['Versions'] as $version ) { - printf("Versions[$i][ETag]:%s,Versions[$i][Size]:%d,Versions[$i][StorageClass]:%s\n", $version ['ETag'], $version ['Size'], $version ['StorageClass']); - printf("Versions[$i][Key]:%s,Versions[$i][VersionId]:%s,Versions[$i][IsLatest]:%d,Versions[$i][LastModified]:%s\n", $version ['Key'], $version ['VersionId'], $version ['IsLatest'], $version ['LastModified']); - printf("Versions[$i][Owner][ID]:%s\n", $version ['Owner'] ['ID']); - $i ++; - } - $i = 0; - foreach ( $resp ['DeleteMarkers'] as $deleteMarker ) { - printf("DeleteMarkers[$i][Key]:%s,DeleteMarkers[$i][VersionId]:%s,DeleteMarkers[$i][IsLatest]:%d,DeleteMarkers[$i][LastModified]:%s\n", $deleteMarker ['Key'], $deleteMarker ['VersionId'], $deleteMarker ['IsLatest'], $deleteMarker ['LastModified']); - printf("DeleteMarkers[$i][Owner][ID]:%s\n", $deleteMarker ['Owner'] ['ID']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// head bucket -function HeadBucket() { - global $obsClient; - global $bucketName; - echo "head bucket start...\n"; - try { - $resp = $obsClient->headBucket(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket metadata -function GetBucketMetadata() { - global $obsClient; - global $bucketName; - echo "get bucket metatdata start...\n"; - try { - $resp = $obsClient->getBucketMetadata(array ( - "Bucket" => $bucketName, - "Origin" => "www.example.com", - "RequestHeader" => "header1" - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("StorageClass:%s\n", $resp ["StorageClass"]); - printf("AllowOrigin:%s\n", $resp ["AllowOrigin"]); - printf("MaxAgeSeconds:%s\n", $resp ["MaxAgeSeconds"]); - printf("ExposeHeader:%s\n", $resp ["ExposeHeader"]); - printf("AllowHeader:%s\n", $resp ["AllowHeader"]); - printf("AllowMethod:%s\n", $resp ["AllowMethod"]); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket location -function GetBucketLocation() { - global $obsClient; - global $bucketName; - echo "get bucket location start...\n"; - try { - $resp = $obsClient->getBucketLocation(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Location:%s\n", $resp ['Location']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket storageinfo -function GetBucketStorageInfo() { - global $obsClient; - global $bucketName; - echo "get bucket storage info start...\n"; - try { - $resp = $obsClient->getBucketStorageInfo(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Size:%d,ObjectNumber:%d\n", $resp ['Size'], $resp ['ObjectNumber']); - } catch ( ObsException $e ) { - echo $e; - } -} - - -// set bucket quota -function SetBucketQuota() { - global $obsClient; - global $bucketName; - echo "set bucket quota start...\n"; - try { - $resp = $obsClient->setBucketQuota(array ( - 'Bucket' => $bucketName, - 'StorageQuota' => 1048576 - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket quota -function GetBucketQuota() { - global $obsClient; - global $bucketName; - echo "get bucket quota start...\n"; - try { - $resp = $obsClient->getBucketQuota(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("StorageQuota:%s\n", $resp ['StorageQuota']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket storage policy -function SetBucketStoragePolicy() { - global $obsClient; - global $bucketName; - echo "set bucket storage policy start...\n"; - try { - $resp = $obsClient->setBucketStoragePolicy(array ( - 'Bucket' => $bucketName, - 'StorageClass' => ObsClient::StorageClassCold - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket storage policy -function GetBucketStoragePolicy() { - global $obsClient; - global $bucketName; - echo "get bucket storage policy start...\n"; - try { - $resp = $obsClient->getBucketStoragePolicy(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("StorageClass:%s\n", $resp ['StorageClass']); - } catch ( ObsException $e ) { - echo $e; - } -} - - -// set bucket acl -function SetBucketAcl() { - global $obsClient; - global $bucketName; - echo "set bucket ACL start...\n"; - try { - $resp = $obsClient->setBucketAcl(array ( - 'Bucket' => $bucketName, - 'ACL' => '', - 'Owner' => array ( - 'ID' => 'ownerid' - ), - 'Grants' => array ( - 0 => array ( - 'Grantee' => array ( - 'ID' => 'userid' - ), - 'Permission' => ObsClient::PermissionRead, - 'Delivered' => true - ), - 1 => array ( - 'Grantee' => array ( - 'URI' => ObsClient::AllUsers - ), - 'Permission' => ObsClient::PermissionWrite, - 'Delivered' => true - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket acl -function GetBucketAcl() { - global $obsClient; - global $bucketName; - echo "get bucket ACL start...\n"; - try { - $resp = $obsClient->getBucketAcl(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Owner[ID]:%s\n", $resp ['Owner'] ['ID'] ); - $i = 0; - foreach ( $resp ['Grants'] as $grant ) { - printf("Grants[$i][Grantee][ID]:%s,Grants[$i][Grantee][URI]:%s\n",$grant ['Grantee'] ['ID'], $grant ['Grantee'] ['URI']); - printf("Grants[$i][Permission]:%s\n", $grant ['Permission']); - printf("Grants[$i][Delivered]:%s\n", $grant['Delivered'] ? 'true' : 'false'); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket logging configuration -function SetBucketLogging() { - global $obsClient; - global $bucketName; - echo "set bucket logging configuration start...\n"; - try { - $resp = $obsClient->setBucketLogging(array ( - 'Bucket' => $bucketName, - 'Agency' => 'your agency', - 'LoggingEnabled' => array ( - 'TargetBucket' => 'bucket003', - 'TargetPrefix' => 'bucket.log', - 'TargetGrants' => array ( - 0 => array ( - 'Grantee' => array ( - 'ID' => 'userid' - ), - 'Permission' => ObsClient::PermissionRead - ), - 1 => array ( - 'Grantee' => array ( - 'URI' => ObsClient::AllUsers, - ), - 'Permission' => ObsClient::PermissionRead - ) - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket logging configuration -function GetBucketLogging() { - global $obsClient; - global $bucketName; - echo "get bucket logging configuration start...\n"; - try { - $resp = $obsClient->getBucketLogging(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Agency:%s\n", $resp ['Agency']); - printf("LoggingEnabled[TargetBucket]:%s,LoggingEnabled[TargetPrefix]:%s\n", $resp ['LoggingEnabled'] ['TargetBucket'], $resp ['LoggingEnabled'] ['TargetPrefix']); - if (is_array($resp ['LoggingEnabled'] ['TargetGrants'])) { - $i = 0; - foreach ( $resp ['LoggingEnabled'] ['TargetGrants'] as $grant ) { - printf("LoggingEnabled[$i][TargetGrants][Permission]:%s\n", $grant ['Permission']); - printf("LoggingEnabled[$i][TargetGrants][Grantee][ID]:%s,LoggingEnabled[$i][TargetGrants][Grantee][URI]:%s\n", $grant ['Grantee'] ['ID'], $grant ['Grantee'] ['URI']); - $i ++; - } - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket policy -function SetBucketPolicy() { - global $obsClient; - global $bucketName; - echo "set bucket policy start...\n"; - try { - $resp = $obsClient->setBucketPolicy(array ( - 'Bucket' => $bucketName, - 'Policy' => 'your policy' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket policy -function GetBucketPolicy() { - global $obsClient; - global $bucketName; - echo "get bucket policy start...\n"; - try { - $resp = $obsClient->getBucketPolicy(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("Policy:%s\n", $resp ['Policy']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete bucket policy -function DeleteBucketPolicy() { - global $obsClient; - global $bucketName; - echo "delete bucket policy start...\n"; - try { - $resp = $obsClient->deleteBucketPolicy(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket lifycycle configuration -function SetBucketLifecycle() { - global $obsClient; - global $bucketName; - echo "set bucket lifecycle configuration start...\n"; - try { - $resp = $obsClient->setBucketLifecycle(array ( - 'Bucket' => $bucketName, - 'Rules' => array ( - 0 => array ( - 'ID' => '', - 'Prefix' => 'ok', - 'Status' => 'Enabled', - 'Transitions' => array ( - 0 => array ( - 'StorageClass' => ObsClient::StorageClassWarm, - 'Date' => '2019-02-01T00:00:00Z' - ), - 1 => array ( - 'StorageClass' => ObsClient::StorageClassCold, - 'Date' => '2019-03-01T00:00:00Z' - ) - ), - 'Expiration' => array ( - 'Date' => '2019-04-01T00:00:00Z' - ), - 'NoncurrentVersionTransitions' => array ( - 0 => array ( - 'StorageClass' => ObsClient::StorageClassWarm, - 'NoncurrentDays' => 30 - ), - 1 => array ( - 'StorageClass' => ObsClient::StorageClassCold, - 'NoncurrentDays' => 60 - ) - ), - // 'Expiration'=>array('Days'=>100), - 'NoncurrentVersionExpiration' => array ( - 'NoncurrentDays' => 60 - ) - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket lifycycle configuration -function GetBucketLifecycle() { - global $obsClient; - global $bucketName; - echo "get bucket lifecycle configuration start...\n"; - try { - $resp = $obsClient->getBucketLifecycle(array ( - 'Bucket' => $bucketName - )); - $i = 0; - foreach ( $resp ['Rules'] as $rule ) { - foreach ( $rule ['Transitions'] as $index => $transition ) { - printf("Rules[$i][Transitions][$index][Date]:%s,Rules[$i][Transitions][$index][StorageClass]:%s\n", $transition ['Date'], $transition ['StorageClass']); - } - printf("Rules[$i][Expiration][Date]:%s,Rules[$i][Expiration][Days]:%d\n", $rule ['Expiration'] ['Date'], $rule ['Expiration'] ['Days']); - printf("Rules[$i][NoncurrentVersionExpiration][NoncurrentDays]:%s\n", $rule ['NoncurrentVersionExpiration'] ['NoncurrentDays']); - foreach ( $rule ['NoncurrentVersionTransitions'] as $index => $noncurrentVersionTransition ) { - printf("Rules[$i][NoncurrentVersionTransitions][$index][NoncurrentDays]:%d,Rules[$i][NoncurrentVersionTransitions][$index][StorageClass]:%s\n", $noncurrentVersionTransition ['NoncurrentDays'], $noncurrentVersionTransition ['StorageClass']); - } - printf("Rules[$i][ID]:%s,Rules[$i][Prefix]:%s,Rules[$i][Status]:%s\n", $rule ['ID'], $rule ['Prefix'], $rule ['Status']); - $i ++; - } - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete bucket lifycycle configuration -function DeleteBucketLifecycle() { - global $obsClient; - global $bucketName; - echo "delete bucket lifecycle configuration start...\n"; - try { - $resp = $obsClient->deleteBucketLifecycle(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket website configuration -function SetBucketWebsite() { - global $obsClient; - global $bucketName; - echo "set bucket website configuration start...\n"; - try { - $resp = $obsClient->setBucketWebsite(array ( - 'Bucket' => $bucketName, - // 'RedirectAllRequestsTo'=>array('HostName'=>'obs.hostname','Protocol'=>'http'), - 'IndexDocument' => array ( - 'Suffix' => 'index.html' - ), - 'ErrorDocument' => array ( - 'Key' => 'error.html' - ), - 'RoutingRules' => array ( - 0 => array ( - 'Condition' => array ( - 'KeyPrefixEquals' => 'docs/', - 'HttpErrorCodeReturnedEquals' => 404 - ), - 'Redirect' => array ( - 'ReplaceKeyPrefixWith' => 'documents/', - 'HostName' => 'obs.hostname', - 'Protocol' => 'http', - 'HttpRedirectCode' => 308 - ) - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket website configuration -function GetBucketWebsite() { - global $obsClient; - global $bucketName; - echo "get bucket website configuration start...\n"; - try { - $resp = $obsClient->GetBucketWebsite(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("RedirectAllRequestsTo[HostName]:%s,RedirectAllRequestsTo[Protocol]:%s\n", $resp ['RedirectAllRequestsTo'] ['HostName'], $resp ['RedirectAllRequestsTo'] ['Protocol']); - printf("IndexDocument[Suffix]:%s\n", $resp ['IndexDocument'] ['Suffix']); - printf("ErrorDocument[Key]:%s\n", $resp ['ErrorDocument'] ['Key']); - $i = 0; - foreach ( $resp ['RoutingRules'] as $rout ) { - printf("RoutingRules[$i][Condition][HttpErrorCodeReturnedEquals]:%s,RoutingRules[$i][Condition][KeyPrefixEquals]:%s\n", $rout ['Condition'] ['HttpErrorCodeReturnedEquals'], $rout ['Condition'] ['KeyPrefixEquals']); - printf("RoutingRules[$i][Redirect][Protocol]:%s,RoutingRules[$i][Redirect][HostName]:%s,RoutingRules[$i][Redirect][ReplaceKeyPrefixWith]:%s,RoutingRules[$i][Redirect][ReplaceKeyWith]:%s,RoutingRules[$i][Redirect][HttpRedirectCode]:%s\n", $rout ['Redirect'] ['Protocol'], $rout ['Redirect'] ['HostName'], $rout ['Redirect'] ['ReplaceKeyPrefixWith'], $rout ['Redirect'] ['ReplaceKeyWith'], $rout ['Redirect'] ['HttpRedirectCode']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete bucket website configuration -function DeleteBucketWebsite() { - global $obsClient; - global $bucketName; - echo "delete bucket website configuration start...\n"; - try { - $resp = $obsClient->deleteBucketWebsite(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket versioning configuration -function SetBucketVersioning() { - global $obsClient; - global $bucketName; - echo "set bucket versioning configuration start...\n"; - try { - $resp = $obsClient->setBucketVersioning(array ( - 'Bucket' => $bucketName, - 'Status' => 'Suspended' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket versioning configuration -function GetBucketVersioning() { - global $obsClient; - global $bucketName; - echo "get bucket versioning configuration start...\n"; - try { - $resp = $obsClient->getBucketVersioning(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("Status:%s\n", $resp ['Status']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket cors -function SetBucketCors() { - global $obsClient; - global $bucketName; - echo "set bucket cors start...\n"; - try { - $resp = $obsClient->setBucketCors(array ( - 'Bucket' => $bucketName, - 'CorsRules' => array ( - 0 => array ( - 'ID' => '123456', - 'AllowedMethod' => array ( - 0 => "PUT", - 1 => "POST", - 2 => "GET", - 3 => "DELETE" - ), - 'AllowedOrigin' => array ( - 0 => "obs.hostname1" - ), - 'AllowedHeader' => array ( - 0 => "header-1", - 1 => "header-2" - ) - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete bucket cors -function DeleteBucketCors() { - global $obsClient; - global $bucketName; - echo "delete bucket cors start...\n"; - try { - $resp = $obsClient->deleteBucketCors(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket cors -function GetBucketCors() { - global $obsClient; - global $bucketName; - echo "get bucket cors start...\n"; - try { - $resp = $obsClient->getBucketCors(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - print_r($resp ['CorsRules']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// options bucket -function OptionsBucket() { - global $obsClient; - global $bucketName; - echo "options bucket start...\n"; - try { - $resp = $obsClient->optionsBucket(array ( - 'Bucket' => $bucketName, - 'Origin' => 'obs.hostname1', - 'AccessControlRequestMethods' => array ( - 0 => "PUT", - 1 => "POST" - ), - 'AccessControlRequestHeaders' => array ( - 0 => "header-1", - 1 => "header-2" - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - print_r($resp); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket tagging -function SetBucketTagging() { - global $obsClient; - global $bucketName; - echo "set bucket tagging start...\n"; - try { - $resp = $obsClient->setBucketTagging(array ( - 'Bucket' => $bucketName, - 'Tags' => array ( - 0 => array ( - 'Key' => 'testKey1', - 'Value' => 'testValue1' - ), - 1 => array ( - 'Key' => 'testKey2', - 'Value' => 'testValue2' - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket tagging -function GetBucketTagging() { - global $obsClient; - global $bucketName; - echo "get bucket tagging start...\n"; - try { - $resp = $obsClient->getBucketTagging(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - foreach ( $resp ["Tags"] as $tag ) { - printf("Tag[%s:%s]\n", $tag ["Key"], $tag ["Value"]); - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete bucket tagging -function DeleteBucketTagging() { - global $obsClient; - global $bucketName; - echo "delete bucket tagging start...\n"; - try { - $resp = $obsClient->deleteBucketTagging(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - } catch ( ObsException $e ) { - echo $e; - } -} - -// set bucket notification -function SetBucketNotification() { - global $obsClient; - global $bucketName; - echo "set bucket notification start...\n"; - try { - $resp = $obsClient->setBucketNotification(array ( - 'Bucket' => $bucketName, - 'TopicConfigurations' => array ( - 0 => array ( - 'ID' => '001', - 'Topic' => 'your topic', - 'Event' => array ( - 0 => 'ObjectCreated:*' - ), - 'Filter' => array ( - 0 => array ( - 'Name' => 'prefix', - 'Value' => 'smn/' - ), - 1 => array ( - 'Name' => 'suffix', - 'Value' => '.jpg' - ) - ) - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get bucket notification -function GetBucketNotification() { - global $obsClient; - global $bucketName; - echo "get bucket notification start...\n"; - try { - $resp = $obsClient->getBucketNotification(array ( - 'Bucket' => $bucketName - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - print_r($resp ['TopicConfigurations']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete object -function DeleteObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "delete object start...\n"; - try { - $resp = $obsClient->deleteObject(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'VersionId' => '' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("DeleteMarker:%s,VersionId:%s\n", $resp ['DeleteMarker'], $resp ['VersionId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// options object -function OptionsObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "options bucket start...\n"; - try { - $resp = $obsClient->optionsObject(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Origin' => 'obs.hostname1', - 'AccessControlRequestMethods' => array ( - "PUT", - "GET" - ), - 'AccessControlRequestHeaders' => array ( - 0 => "header-1", - 1 => "header-2" - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - print_r($resp); - } catch ( ObsException $e ) { - echo $e; - } -} - -// delete objects -function DeleteObjects() { - global $obsClient; - global $bucketName; - echo "delete objects start...\n"; - try { - $resp = $obsClient->deleteObjects(array ( - 'Bucket' => $bucketName, - 'Objects' => array ( - 0 => array ( - 'Key' => 'test' - ), - 1 => array ( - 'Key' => 'file.log' - ) - ), - 'Quiet' => false - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - $i = 0; - foreach ( $resp ['Errors'] as $error ) { - printf("Errors[$i][Key]:%s,Errors[$i][VersionId]:%s锛孍rrors[$i][Code]:%s锛孍rrors[$i][Message]:%s\n", $error ['Key'], $error ['VersionId'], $error ['Code'], $error ['Message']); - $i ++; - } - $i = 0; - foreach ( $resp ['Deleteds'] as $delete ) { - printf("Deleteds[$i][Key]:%s,Deleted[$i][VersionId]:%s锛孌eleted[$i][DeleteMarker]:%s锛孌eleted[$i][DeleteMarkerVersionId]:%s\n", $delete ['Key'], $delete ['VersionId'], $delete ['DeleteMarker'], $delete ['DeleteMarkerVersionId']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// set object acl -function SetObjectAcl() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "set object ACL start...\n"; - try { - $resp = $obsClient->setObjectAcl(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Delivered' => true, - 'Grants' => array ( - 0 => array ( - 'Grantee' => array ( - 'ID' => 'userid', - ), - 'Permission' => ObsClient::PermissionWrite - ), - 1 => array ( - 'Grantee' => array ( - 'URI' => ObsClient::AllUsers - ), - 'Permission' => ObsClient::PermissionRead - ) - ), - 'Owner' => array ( - 'ID' => 'ownerid' - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get object acl -function GetObjectAcl() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "get bucket ACL start...\n"; - try { - $resp = $obsClient->getObjectAcl(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Owner[ID]:%s\n", $resp ['Owner'] ['ID']); - printf("Delivered:%s\n", $resp['Delivered'] ? 'true' : 'false'); - $i = 0; - foreach ( $resp ['Grants'] as $grant ) { - printf("Grants[$i][Grantee][ID]:%s,Grants[$i][Grantee][URI]:%s\n", $grant ['Grantee'] ['ID'], $grant ['Grantee'] ['URI']); - printf("Grants[$i][Permission]:%s\n", $grant ['Permission']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// restore object -function RestoreObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "restore object start...\n"; - - try { - $resp = $obsClient->restoreObject(array ( - "Bucket" => $bucketName, - "Key" => $objectKey, - "VersionId" => NULL, - "Days" => 1, - "Tier" => ObsClient::RestoreTierExpedited - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ["RequestId"]); - } catch ( ObsException $e ) { - echo $e; - } -} - -// put object -function PutObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "put object start...\n"; - try { - $resp = $obsClient->putObject(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Metadata' => array ( - 'test' => "value" - ), - // 'Body'=>'msg to put', - 'ContentType' => 'text/plain', - 'SourceFile' => '/temp/test.txt' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("ETag:%s,VersionId:%s\n", $resp ['ETag'], $resp ['VersionId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get object metadata -function GetObjectMetadata() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "get object metadata start...\n"; - try { - $resp = $obsClient->getObjectMetadata(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Expiration:%s,LastModified:%s,ContentLength:%d,StorageClass:%s\n", $resp ['Expiration'], $resp ['LastModified'], $resp ['ContentLength'], $resp ['StorageClass']); - printf("ETag:%s,VersionId:%s,WebsiteRedirectLocation:%s\n", $resp ['ETag'], $resp ['VersionId'], $resp ['WebsiteRedirectLocation']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// get object -function GetObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "get object start...\n"; - try { - $resp = $obsClient->getObject(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Range' => 'bytes=0-10', - 'SaveAsFile' => '/temp/test.txt' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Metadata:%s\n", json_encode($resp ['Metadata'])); - printf("DeleteMarker:%s,Expiration:%s,LastModified:%s\n", $resp ['DeleteMarker'], $resp ['Expiration'], $resp ['LastModified']); - printf("ContentLength:%d,ETag:%s,VersionId:%s,SaveAsFile:%s\n", $resp ['ContentLength'], $resp ['ETag'], $resp ['VersionId'], $resp ['SaveAsFile']); - printf("Expires:%s,WebsiteRedirectLocation:%s\n", $resp ['Expires'], $resp ['WebsiteRedirectLocation']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// copy object -function CopyObject() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "copy object start...\n"; - try { - $resp = $obsClient->copyObject(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'CopySource' => 'bucket003/test', - 'Metadata' => array ( - 'test' => "value" - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("ETag:%s,VersionId:%s,LastModified:%s,CopySourceVersionId:%s\n", $resp ['ETag'], $resp ['VersionId'], $resp ['LastModified'], $resp ['CopySourceVersionId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// initiate multipart upload -function InitiateMultipartUpload() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "initiate mutipart upload start...\n"; - try { - $resp = $obsClient->initiateMultipartUpload(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Bucket:%s,Key:%s,UploadId:%s\n", $resp ['Bucket'], $resp ['Key'], $resp ['UploadId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// abort multipart upload -function AbortMultipartUpload() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "abort mutipart upload start...\n"; - try { - $resp = $obsClient->abortMultipartUpload(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => 'uploadid' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// list multipart uploads -function ListMultipartUploads() { - global $obsClient; - global $bucketName; - echo "list mutipart upload start...\n"; - try { - $resp = $obsClient->listMultipartUploads(array ( - 'Bucket' => $bucketName, - 'MaxUploads' => 1000 - )); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Bucket锛�%s,KeyMarker:%s,UploadIdMarker:%s,NextKeyMarker:%s\n", $resp ['Bucket'], $resp ['KeyMarker'], $resp ['UploadIdMarker'], $resp ['NextKeyMarker']); - printf("Prefix:%s,Delimiter:%s,NextUploadIdMarker:%s,MaxUploads:%d,IsTruncated:%s\n", $resp ['Prefix'], $resp ['Delimiter'], $resp ['NextUploadIdMarker'], $resp ['MaxUploads'], $resp ['IsTruncated']); - $i = 0; - foreach ( $resp ['CommonPrefixes'] as $common ) { - printf("CommonPrefixes[$i][Prefix]:%s\n", $common ['Prefix']); - $i ++; - } - $i = 0; - foreach ( $resp ['Uploads'] as $upload ) { - printf("Uploads[$i][Key]:%s,Uploads[$i][UploadId]:%s,Uploads[$i][StorageClass]:%s,Uploads[$i][Initiated]:%s\n", $upload ['Key'], $upload ['UploadId'], $upload ['StorageClass'], $upload ['Initiated']); - printf("Uploads[$i][Initiator][ID]:%s,Uploads[$i][Initiator][DisplayName]:%s\n", $upload ['Initiator'] ['ID'], $upload ['Initiator'] ['DisplayName']); - printf("Uploads[$i][Owner][ID]:%s,Uploads[$i][Owner][DisplayName]:%s\n", $upload ['Owner'] ['ID'], $upload ['Owner'] ['DisplayName']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// upload part -function UploadPart() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "upload part start...\n"; - try { - $resp = $obsClient->uploadPart(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => 'uploadid', - 'PartNumber' => 1, - // 'Body' => 'test', - 'SourceFile' => '/temp/test.txt' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("ETag:%s\n", $resp ['ETag']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// copry part -function CopyPart() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "copy part start...\n"; - try { - $resp = $obsClient->copyPart(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => 'uploadid', - 'PartNumber' => 1, - 'CopySource' => 'bucket003/test' - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("ETag:%s,LastModified:%s\n", $resp ['ETag'], $resp ['LastModified']); - } catch ( ObsException $e ) { - echo $e; - } -} - -// list parts -function ListParts() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "list parts start...\n"; - try { - $resp = $obsClient->listParts(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => 'uploadid', - 'MaxParts' => 500, - 'PartNumberMarker' => 0 - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Bucket锛�%s,Key:%s,UploadId:%s,PartNumberMarker:%d\n", $resp ['Bucket'], $resp ['Key'], $resp ['UploadId'], $resp ['PartNumberMarker']); - printf("NextPartNumberMarker:%d,MaxParts:%d,IsTruncated:%d,StorageClass:%s\n", $resp ['NextPartNumberMarker'], $resp ['MaxParts'], $resp ['IsTruncated'], $resp ['StorageClass']); - printf("Initiator[ID]:%s,Initiator[DisplayName]:%s\n", $resp ['Initiator'] ['ID'], $resp ['Initiator'] ['DisplayName']); - printf("Owner[ID]:%s,Owner[DisplayName]:%s\n", $resp ['Owner'] ['ID'], $resp ['Owner'] ['DisplayName']); - $i = 0; - foreach ( $resp ['Parts'] as $part ) { - printf("Parts[$i][PartNumber]:%s,Parts[$i][LastModified]:%s,Parts[$i][ETag]:%s,Parts[$i][Size]:%d\n", $part ['PartNumber'], $part ['LastModified'], $part ['ETag'], $part ['Size']); - $i ++; - } - } catch ( ObsException $e ) { - echo $e; - } -} - -// merge parts -function CompleteMultipartUpload() { - global $obsClient; - global $bucketName; - global $objectKey; - echo "complete multipart upload start...\n"; - try { - $resp = $obsClient->completeMultipartUpload(array ( - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'UploadId' => 'uploadid', - 'Parts' => array ( - 0 => array ( - 'PartNumber' => 1, - 'ETag' => 'etagvalue' - ) - ) - )); - printf("HttpStatusCode:%s\n", $resp ['HttpStatusCode']); - printf("RequestId:%s\n", $resp ['RequestId']); - printf("Bucket:%s,Key:%s,ETag:%s,VersionId:%s,Location:%s\n", $resp ['Bucket'], $resp ['Key'], $resp ['ETag'], $resp ['VersionId'], $resp ['Location']); - } catch ( ObsException $e ) { - echo $e; - } -} - -//----bucket related apis--- -// CreateBucket(); -// ListBuckets(); -// DeleteBucket(); -// ListObjects(); -// ListVersions(); -// HeadBucket(); -// GetBucketMetadata(); -// GetBucketLocation(); -// GetBucketStorageInfo(); -// SetBucketQuota(); -// GetBucketQuota(); -// SetBucketStoragePolicy(); -// GetBucketStoragePolicy(); -// SetBucketAcl(); -// GetBucketAcl(); -// SetBucketLogging(); -// GetBucketLogging(); -// SetBucketPolicy(); -// GetBucketPolicy(); -// DeleteBucketPolicy(); -// SetBucketLifecycle(); -// GetBucketLifecycle(); -// DeleteBucketLifecycle(); -// SetBucketWebsite(); -// GetBucketWebsite(); -// DeleteBucketWebsite(); -// SetBucketVersioning(); -// GetBucketVersioning(); -// SetBucketCors(); -// GetBucketCors(); -// DeleteBucketCors(); -// OptionsBucket(); -// SetBucketTagging(); -// GetBucketTagging(); -// DeleteBucketTagging(); -// SetBucketNotification(); -// GetBucketNotification(); - -//-----object related apis-------- -// DeleteObject(); -// OptionsObject(); -// SetObjectAcl(); -// GetObjectAcl(); -// RestoreObject(); -// DeleteObjects(); -// PutObject(); -// GetObject(); -// CopyObject(); -// GetObjectMetadata(); -// InitiateMultipartUpload(); -// ListMultipartUploads(); -// AbortMultipartUpload(); -// UploadPart(); -// ListParts(); -// CompleteMultipartUpload(); -// CopyPart(); - - - - - - - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/PostObjectSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/PostObjectSample.php deleted file mode 100644 index 2f1d3275..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/PostObjectSample.php +++ /dev/null @@ -1,227 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10, - 'signature' => $signature -]); - -/* - * Create bucket - */ -printf("Create a new bucket for demo\n\n"); -$obsClient -> createBucket(['Bucket' => $bucketName]); - - -/* - * Create sample file - */ -$sampleFilePath = '/temp/text.txt'; -createSampleFile($sampleFilePath); - -/* - * Claim a post object request - */ -$formParams = []; -if (strcasecmp($signature, 'obs') === 0) { - $formParams['x-obs-acl'] = ObsClient::AclPublicRead; -} else { - $formParams['acl'] = ObsClient::AclPublicRead; -} -$formParams['content-type'] = 'text/plain'; - -$res = $obsClient -> createPostSignature(['Bucket' => $bucketName, 'Key' => $objectKey, 'Expires' => 3600, 'FormParams' => $formParams]); - -$formParams['key'] = $objectKey; -$formParams['policy'] = $res['Policy']; - -if (strcasecmp($signature, 'obs') === 0) { - $formParams['Accesskeyid'] = $ak; -} else { - $formParams['AWSAccesskeyid'] = $ak; -} - -$formParams['signature'] = $res['Signature']; - - -printf("Creating object in browser-based post way\n\n"); -$boundary = '9431149156168'; - -$buffers = []; -$contentLength = 0; - -/* - * Construct form data - */ -$buffer = []; -$first = true; -foreach ($formParams as $key => $val){ - if(!$first){ - $buffer[] = "\r\n"; - }else{ - $first = false; - } - - $buffer[] = "--"; - $buffer[] = $boundary; - $buffer[] = "\r\n"; - $buffer[] = "Content-Disposition: form-data; name=\""; - $buffer[] = strval($key); - $buffer[] = "\"\r\n\r\n"; - $buffer[] = strval($val); -} - -$buffer = implode('', $buffer); -$contentLength += strlen($buffer); -$buffers[] = $buffer; - -/* - * Construct file description - */ -$buffer = []; - -$buffer[] = "\r\n"; -$buffer[] = "--"; -$buffer[] = $boundary; -$buffer[] = "\r\n"; -$buffer[] = "Content-Disposition: form-data; name=\"file\"; filename=\""; -$buffer[] = "myfile"; -$buffer[] = "\"\r\n"; -$buffer[] = "Content-Type: text/plain"; -$buffer[] = "\r\n\r\n"; - -$buffer = implode('', $buffer); -$contentLength += strlen($buffer); -$buffers[] = $buffer; - -/* - * Construct file data - */ -$buffer = []; - -$fp = fopen($sampleFilePath, 'r'); -if($fp){ - while(!feof($fp)){ - $buffer[] = fgetc($fp); - } - fclose($fp); -} - -$buffer = implode('', $buffer); -$contentLength += strlen($buffer); -$buffers[] = $buffer; - -/* - * Contruct end data - */ -$buffer = []; -$buffer[] = "\r\n--"; -$buffer[] = $boundary; -$buffer[] = "--\r\n"; - -$buffer = implode('', $buffer); -$contentLength += strlen($buffer); -$buffers[] = $buffer; - - -$httpClient = new Client(['verify' => false]); -$host = parse_url($endpoint)['host']; -$host = $bucketName . '.' . $host; -$url = 'https://' . $host . ':443'; -$headers = ['Content-Length' => strval($contentLength), 'Content-Type' => 'multipart/form-data; boundary=' . $boundary]; - -try{ - $response = $httpClient -> request('POST', $url, ['body' => implode('', $buffers), 'headers'=> $headers]); - - printf('Post object successfully!'); - $response -> getBody()-> close(); -}catch (ClientException $ex){ - printf('Exception message:%s', $ex ->getMessage()); -} - - -if(file_exists($sampleFilePath)){ - unlink($sampleFilePath); -} - -function createSampleFile($filePath) -{ - if(file_exists($filePath)){ - return; - } - $filePath = iconv('UTF-8', 'GBK', $filePath); - if(is_string($filePath) && $filePath !== '') - { - $fp = null; - $dir = dirname($filePath); - try{ - if(!is_dir($dir)) - { - mkdir($dir,0755,true); - } - - if(($fp = fopen($filePath, 'w+'))) - { - fwrite($fp, uniqid() . "\n"); - fwrite($fp, uniqid() . "\n"); - } - }finally{ - if($fp){ - fclose($fp); - } - } - } -} diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/RestoreObjectSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/RestoreObjectSample.php deleted file mode 100644 index a4bbb0e1..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/RestoreObjectSample.php +++ /dev/null @@ -1,110 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - /* - * Create a cold bucket - */ - printf("Create a new cold bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName, 'StorageClass' => ObsClient::StorageClassCold]); - - /* - * Create a cold object - */ - printf("Create a new cold object for demo\n\n"); - $content = 'Hello OBS'; - $obsClient -> putObject(['Bucket' => $bucketName, 'Key' => $objectKey, 'Body' => $content]); - - /* - * Restore the cold object - */ - printf("Restore the cold object\n\n"); - $obsClient -> restoreObject([ - 'Bucket' => $bucketName, - 'Key' => $objectKey, - 'Days' => 1, - 'Tier' => ObsClient::RestoreTierExpedited - ]); - - /* - * Wait 6 minute to get the object - */ - sleep(60 * 6); - - /* - * Get the cold object - */ - printf("Get the cold object\n"); - $resp = $obsClient -> getObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - printf("\t%s\n\n", $resp['Body']); - - /* - * Delete the cold object - */ - $obsClient -> deleteObject(['Bucket' => $bucketName, 'Key' => $objectKey]); - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/SimpleMultipartUploadSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/SimpleMultipartUploadSample.php deleted file mode 100644 index 950f2699..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/SimpleMultipartUploadSample.php +++ /dev/null @@ -1,109 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -try -{ - printf("Create a new bucket for demo\n\n"); - $obsClient -> createBucket(['Bucket' => $bucketName]); - - /* - * Step 1: initiate multipart upload - */ - printf("Step 1: initiate multipart upload\n\n"); - - $resp = $obsClient -> initiateMultipartUpload(['Bucket'=>$bucketName, - 'Key'=>$objectKey]); - - $uploadId = $resp['UploadId']; - /* - * Step 2: upload a part - */ - printf("Step 2: upload a part\n\n"); - $resp = $obsClient->uploadPart([ - 'Bucket'=>$bucketName, - 'Key' => $objectKey, - 'UploadId'=>$uploadId, - 'PartNumber'=>1, - 'Body' => 'Hello OBS' - ]); - - $etag = $resp['ETag']; - - /* - * Step 3: complete multipart upload - */ - printf("Step 3: complete multipart upload\n\n"); - $obsClient->completeMultipartUpload([ - 'Bucket'=>$bucketName, - 'Key'=>$objectKey, - 'UploadId'=>$uploadId, - 'Parts'=>[ - ['PartNumber'=>1,'ETag'=>$etag] - ], - ]); - - -} catch ( ObsException $e ) { - echo 'Response Code:' . $e->getStatusCode () . PHP_EOL; - echo 'Error Message:' . $e->getExceptionMessage () . PHP_EOL; - echo 'Error Code:' . $e->getExceptionCode () . PHP_EOL; - echo 'Request ID:' . $e->getRequestId () . PHP_EOL; - echo 'Exception Type:' . $e->getExceptionType () . PHP_EOL; -} finally{ - $obsClient->close (); -} \ No newline at end of file diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/TemporarySignatureSample.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/TemporarySignatureSample.php deleted file mode 100644 index cea21bfb..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/examples/TemporarySignatureSample.php +++ /dev/null @@ -1,151 +0,0 @@ - $ak, - 'secret' => $sk, - 'endpoint' => $endpoint, - 'socket_timeout' => 30, - 'connect_timeout' => 10 -] ); - -$httpClient = new Client(['verify' => false]); - -/* - * Create bucket - */ -$method = 'PUT'; -$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]); -doAction('Create bucket', $method, $res['SignedUrl']); - -/* - * Set/Get/Delete bucket cors - */ -$method = 'PUT'; -$content = 'PUThttp://www.a.comheader1100header2'; -$headers = ['Content-Length'=> strval(strlen($content)), 'Content-MD5' => base64_encode(md5($content, true))]; -$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors', 'Headers' => $headers]); -doAction('Set bucket cors ', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']); - - -$method = 'GET'; -$res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']); -doAction('Get bucket cors ', $method, $res['SignedUrl']); - -$method = 'DELETE'; -$res= $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method, 'SpecialParam' => 'cors']); -doAction('Delete bucket cors ', $method, $res['SignedUrl']); - -/* - * Create object - */ -$method = 'PUT'; -$content = 'Hello OBS'; -$headers = ['Content-Length'=> strval(strlen($content))]; -$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers]); -doAction('Create object', $method, $res['SignedUrl'], $content, $res['ActualSignedRequestHeaders']); - - -/* - * Get object - */ -$method = 'GET'; -$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]); -doAction('Get object', $method, $res['SignedUrl']); - -/* - * Set/Get object acl - */ -$method = 'PUT'; -$headers = ['x-amz-acl'=> ObsClient::AclPublicRead]; -$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'Headers'=> $headers, 'SpecialParam' => 'acl']); -doAction('Set object Acl', $method, $res['SignedUrl'], null, $res['ActualSignedRequestHeaders']); - - -$method = 'GET'; -$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey, 'SpecialParam' => 'acl']); -doAction('Get object Acl', $method, $res['SignedUrl']); - -/* - * Delete object - */ -$method = 'DELETE'; -$res = $obsClient -> createSignedUrl(['Method' => $method, 'Bucket' => $bucketName, 'Key' => $objectKey]); -doAction('Delete object', $method, $res['SignedUrl']); - -/* - * Delete bucket - */ -$method = 'DELETE'; -$res = $obsClient -> createSignedUrl(['Bucket' => $bucketName, 'Method' => $method]); -doAction('Delete bucket', $method, $res['SignedUrl']); - - -function doAction($msg, $method, $url, $content=null, $headers=null){ - global $httpClient; - - try{ - $response = $httpClient -> request($method, $url, ['body' => $content, 'headers'=> $headers]); - printf("%s using temporary signature url:\n", $msg); - printf("\t%s successfully.\n", $url); - printf("\tStatus:%d\n", $response -> getStatusCode()); - printf("\tContent:%s\n", $response -> getBody() -> getContents()); - $response -> getBody()-> close(); - }catch (ClientException $ex){ - printf("%s using temporary signature url:\n", $msg); - printf("\t%s failed!\n", $url); - printf('Exception message:%s', $ex ->getMessage()); - } - - printf("\n"); -} - - - diff --git a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/obs-autoloader.php b/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/obs-autoloader.php deleted file mode 100644 index 98bef9aa..00000000 --- a/niucloud/vendor/365taofang/huaweicloud-sdk-php-obs/obs-autoloader.php +++ /dev/null @@ -1,37 +0,0 @@ - __DIR__.'/Obs/Internal/Common/CheckoutStream.php', - 'Obs\Internal\Common\ITransform' => __DIR__.'/Obs/Internal/Common/ITransform.php', - 'Obs\Internal\Common\Model' => __DIR__.'/Obs/Internal/Common/Model.php', - 'Obs\Internal\Common\ObsTransform' => __DIR__.'/Obs/Internal/Common/ObsTransform.php', - 'Obs\Internal\Common\SchemaFormatter' => __DIR__.'/Obs/Internal/Common/SchemaFormatter.php', - 'Obs\Internal\Common\SdkCurlFactory' => __DIR__.'/Obs/Internal/Common/SdkCurlFactory.php', - 'Obs\Internal\Common\SdkStreamHandler' => __DIR__.'/Obs/Internal/Common/SdkStreamHandler.php', - 'Obs\Internal\Common\ToArrayInterface' => __DIR__.'/Obs/Internal/Common/ToArrayInterface.php', - 'Obs\Internal\Common\V2Transform' => __DIR__.'/Obs/Internal/Common/V2Transform.php', - 'Obs\Internal\GetResponseTrait' => __DIR__.'/Obs/Internal/GetResponseTrait.php', - 'Obs\Internal\Resource\Constants' => __DIR__.'/Obs/Internal/Resource/Constants.php', - 'Obs\Internal\Resource\OBSConstants' => __DIR__.'/Obs/Internal/Resource/OBSConstants.php', - 'Obs\Internal\Resource\OBSRequestResource' => __DIR__.'/Obs/Internal/Resource/OBSRequestResource.php', - 'Obs\Internal\Resource\V2Constants' => __DIR__.'/Obs/Internal/Resource/V2Constants.php', - 'Obs\Internal\Resource\V2RequestResource' => __DIR__.'/Obs/Internal/Resource/V2RequestResource.php', - 'Obs\Internal\SendRequestTrait' => __DIR__.'/Obs/Internal/SendRequestTrait.php', - 'Obs\Internal\Signature\AbstractSignature' => __DIR__.'/Obs/Internal/Signature/AbstractSignature.php', - 'Obs\Internal\Signature\DefaultSignature' => __DIR__.'/Obs/Internal/Signature/DefaultSignature.php', - 'Obs\Internal\Signature\SignatureInterface' => __DIR__.'/Obs/Internal/Signature/SignatureInterface.php', - 'Obs\Internal\Signature\V4Signature' => __DIR__.'/Obs/Internal/Signature/V4Signature.php', - 'Obs\Log\ObsConfig' => __DIR__.'/Obs/Log/ObsConfig.php', - 'Obs\Log\ObsLog' => __DIR__.'/Obs/Log/ObsLog.php', - 'Obs\ObsClient' => __DIR__.'/Obs/ObsClient.php', - 'Obs\ObsImageClient' => __DIR__.'/Obs/ObsImageClient.php', - 'Obs\ObsException' => __DIR__.'/Obs/ObsException.php', -]; - - -spl_autoload_register(function ($class) use ($mapping) { - if (isset($mapping[$class])) { - require $mapping[$class]; - } -}, true); diff --git a/niucloud/vendor/adbario/php-dot-notation/LICENSE.md b/niucloud/vendor/adbario/php-dot-notation/LICENSE.md deleted file mode 100644 index fe013238..00000000 --- a/niucloud/vendor/adbario/php-dot-notation/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) 2016-2019 Riku Särkinen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/niucloud/vendor/adbario/php-dot-notation/composer.json b/niucloud/vendor/adbario/php-dot-notation/composer.json deleted file mode 100644 index cea71261..00000000 --- a/niucloud/vendor/adbario/php-dot-notation/composer.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "adbario/php-dot-notation", - "description": "PHP dot notation access to arrays", - "keywords": ["dotnotation", "arrayaccess"], - "homepage": "https://github.com/adbario/php-dot-notation", - "license": "MIT", - "authors": [ - { - "name": "Riku Särkinen", - "email": "riku@adbar.io" - } - ], - "require": { - "php": "^5.5 || ^7.0 || ^8.0", - "ext-json": "*" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Adbar\\": "src" - } - } -} diff --git a/niucloud/vendor/adbario/php-dot-notation/src/Dot.php b/niucloud/vendor/adbario/php-dot-notation/src/Dot.php deleted file mode 100644 index 3cd1c501..00000000 --- a/niucloud/vendor/adbario/php-dot-notation/src/Dot.php +++ /dev/null @@ -1,623 +0,0 @@ - - * @link https://github.com/adbario/php-dot-notation - * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) - */ -namespace Adbar; - -use Countable; -use ArrayAccess; -use ArrayIterator; -use JsonSerializable; -use IteratorAggregate; - -/** - * Dot - * - * This class provides a dot notation access and helper functions for - * working with arrays of data. Inspired by Laravel Collection. - */ -class Dot implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable -{ - /** - * The stored items - * - * @var array - */ - protected $items = []; - - - /** - * The delimiter (alternative to a '.') to be used. - * - * @var string - */ - protected $delimiter = '.'; - - - /** - * Create a new Dot instance - * - * @param mixed $items - * @param string $delimiter - */ - public function __construct($items = [], $delimiter = '.') - { - $this->items = $this->getArrayItems($items); - $this->delimiter = strlen($delimiter) ? $delimiter : '.'; - } - - /** - * Set a given key / value pair or pairs - * if the key doesn't exist already - * - * @param array|int|string $keys - * @param mixed $value - */ - public function add($keys, $value = null) - { - if (is_array($keys)) { - foreach ($keys as $key => $value) { - $this->add($key, $value); - } - } elseif (is_null($this->get($keys))) { - $this->set($keys, $value); - } - } - - /** - * Return all the stored items - * - * @return array - */ - public function all() - { - return $this->items; - } - - /** - * Delete the contents of a given key or keys - * - * @param array|int|string|null $keys - */ - public function clear($keys = null) - { - if (is_null($keys)) { - $this->items = []; - - return; - } - - $keys = (array) $keys; - - foreach ($keys as $key) { - $this->set($key, []); - } - } - - /** - * Delete the given key or keys - * - * @param array|int|string $keys - */ - public function delete($keys) - { - $keys = (array) $keys; - - foreach ($keys as $key) { - if ($this->exists($this->items, $key)) { - unset($this->items[$key]); - - continue; - } - - $items = &$this->items; - $segments = explode($this->delimiter, $key); - $lastSegment = array_pop($segments); - - foreach ($segments as $segment) { - if (!isset($items[$segment]) || !is_array($items[$segment])) { - continue 2; - } - - $items = &$items[$segment]; - } - - unset($items[$lastSegment]); - } - } - - /** - * Checks if the given key exists in the provided array. - * - * @param array $array Array to validate - * @param int|string $key The key to look for - * - * @return bool - */ - protected function exists($array, $key) - { - return array_key_exists($key, $array); - } - - /** - * Flatten an array with the given character as a key delimiter - * - * @param string $delimiter - * @param array|null $items - * @param string $prepend - * @return array - */ - public function flatten($delimiter = '.', $items = null, $prepend = '') - { - $flatten = []; - - if (is_null($items)) { - $items = $this->items; - } - - if (!func_num_args()) { - $delimiter = $this->delimiter; - } - - foreach ($items as $key => $value) { - if (is_array($value) && !empty($value)) { - $flatten = array_merge( - $flatten, - $this->flatten($delimiter, $value, $prepend.$key.$delimiter) - ); - } else { - $flatten[$prepend.$key] = $value; - } - } - - return $flatten; - } - - /** - * Return the value of a given key - * - * @param int|string|null $key - * @param mixed $default - * @return mixed - */ - public function get($key = null, $default = null) - { - if (is_null($key)) { - return $this->items; - } - - if ($this->exists($this->items, $key)) { - return $this->items[$key]; - } - - if (strpos($key, $this->delimiter) === false) { - return $default; - } - - $items = $this->items; - - foreach (explode($this->delimiter, $key) as $segment) { - if (!is_array($items) || !$this->exists($items, $segment)) { - return $default; - } - - $items = &$items[$segment]; - } - - return $items; - } - - /** - * Return the given items as an array - * - * @param mixed $items - * @return array - */ - protected function getArrayItems($items) - { - if (is_array($items)) { - return $items; - } elseif ($items instanceof self) { - return $items->all(); - } - - return (array) $items; - } - - /** - * Check if a given key or keys exists - * - * @param array|int|string $keys - * @return bool - */ - public function has($keys) - { - $keys = (array) $keys; - - if (!$this->items || $keys === []) { - return false; - } - - foreach ($keys as $key) { - $items = $this->items; - - if ($this->exists($items, $key)) { - continue; - } - - foreach (explode($this->delimiter, $key) as $segment) { - if (!is_array($items) || !$this->exists($items, $segment)) { - return false; - } - - $items = $items[$segment]; - } - } - - return true; - } - - /** - * Check if a given key or keys are empty - * - * @param array|int|string|null $keys - * @return bool - */ - public function isEmpty($keys = null) - { - if (is_null($keys)) { - return empty($this->items); - } - - $keys = (array) $keys; - - foreach ($keys as $key) { - if (!empty($this->get($key))) { - return false; - } - } - - return true; - } - - /** - * Merge a given array or a Dot object with the given key - * or with the whole Dot object - * - * @param array|string|self $key - * @param array|self $value - */ - public function merge($key, $value = []) - { - if (is_array($key)) { - $this->items = array_merge($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_merge($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_merge($this->items, $key->all()); - } - } - - /** - * Recursively merge a given array or a Dot object with the given key - * or with the whole Dot object. - * - * Duplicate keys are converted to arrays. - * - * @param array|string|self $key - * @param array|self $value - */ - public function mergeRecursive($key, $value = []) - { - if (is_array($key)) { - $this->items = array_merge_recursive($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_merge_recursive($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_merge_recursive($this->items, $key->all()); - } - } - - /** - * Recursively merge a given array or a Dot object with the given key - * or with the whole Dot object. - * - * Instead of converting duplicate keys to arrays, the value from - * given array will replace the value in Dot object. - * - * @param array|string|self $key - * @param array|self $value - */ - public function mergeRecursiveDistinct($key, $value = []) - { - if (is_array($key)) { - $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = $this->arrayMergeRecursiveDistinct($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key->all()); - } - } - - /** - * Merges two arrays recursively. In contrast to array_merge_recursive, - * duplicate keys are not converted to arrays but rather overwrite the - * value in the first array with the duplicate value in the second array. - * - * @param array $array1 Initial array to merge - * @param array $array2 Array to recursively merge - * @return array - */ - protected function arrayMergeRecursiveDistinct(array $array1, array $array2) - { - $merged = &$array1; - - foreach ($array2 as $key => $value) { - if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { - $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value); - } else { - $merged[$key] = $value; - } - } - - return $merged; - } - - /** - * Return the value of a given key and - * delete the key - * - * @param int|string|null $key - * @param mixed $default - * @return mixed - */ - public function pull($key = null, $default = null) - { - if (is_null($key)) { - $value = $this->all(); - $this->clear(); - - return $value; - } - - $value = $this->get($key, $default); - $this->delete($key); - - return $value; - } - - /** - * Push a given value to the end of the array - * in a given key - * - * @param mixed $key - * @param mixed $value - */ - public function push($key, $value = null) - { - if (is_null($value)) { - $this->items[] = $key; - - return; - } - - $items = $this->get($key); - - if (is_array($items) || is_null($items)) { - $items[] = $value; - $this->set($key, $items); - } - } - - /** - * Replace all values or values within the given key - * with an array or Dot object - * - * @param array|string|self $key - * @param array|self $value - */ - public function replace($key, $value = []) - { - if (is_array($key)) { - $this->items = array_replace($this->items, $key); - } elseif (is_string($key)) { - $items = (array) $this->get($key); - $value = array_replace($items, $this->getArrayItems($value)); - - $this->set($key, $value); - } elseif ($key instanceof self) { - $this->items = array_replace($this->items, $key->all()); - } - } - - /** - * Set a given key / value pair or pairs - * - * @param array|int|string $keys - * @param mixed $value - */ - public function set($keys, $value = null) - { - if (is_array($keys)) { - foreach ($keys as $key => $value) { - $this->set($key, $value); - } - - return; - } - - $items = &$this->items; - - foreach (explode($this->delimiter, $keys) as $key) { - if (!isset($items[$key]) || !is_array($items[$key])) { - $items[$key] = []; - } - - $items = &$items[$key]; - } - - $items = $value; - } - - /** - * Replace all items with a given array - * - * @param mixed $items - */ - public function setArray($items) - { - $this->items = $this->getArrayItems($items); - } - - /** - * Replace all items with a given array as a reference - * - * @param array $items - */ - public function setReference(array &$items) - { - $this->items = &$items; - } - - /** - * Return the value of a given key or all the values as JSON - * - * @param mixed $key - * @param int $options - * @return string - */ - public function toJson($key = null, $options = 0) - { - if (is_string($key)) { - return json_encode($this->get($key), $options); - } - - $options = $key === null ? 0 : $key; - - return json_encode($this->items, $options); - } - - /* - * -------------------------------------------------------------- - * ArrayAccess interface - * -------------------------------------------------------------- - */ - - /** - * Check if a given key exists - * - * @param int|string $key - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($key) - { - return $this->has($key); - } - - /** - * Return the value of a given key - * - * @param int|string $key - * @return mixed - */ - #[\ReturnTypeWillChange] - public function offsetGet($key) - { - return $this->get($key); - } - - /** - * Set a given value to the given key - * - * @param int|string|null $key - * @param mixed $value - */ - #[\ReturnTypeWillChange] - public function offsetSet($key, $value) - { - if (is_null($key)) { - $this->items[] = $value; - - return; - } - - $this->set($key, $value); - } - - /** - * Delete the given key - * - * @param int|string $key - */ - #[\ReturnTypeWillChange] - public function offsetUnset($key) - { - $this->delete($key); - } - - /* - * -------------------------------------------------------------- - * Countable interface - * -------------------------------------------------------------- - */ - - /** - * Return the number of items in a given key - * - * @param int|string|null $key - * @return int - */ - #[\ReturnTypeWillChange] - public function count($key = null) - { - return count($this->get($key)); - } - - /* - * -------------------------------------------------------------- - * IteratorAggregate interface - * -------------------------------------------------------------- - */ - - /** - * Get an iterator for the stored items - * - * @return \ArrayIterator - */ - #[\ReturnTypeWillChange] - public function getIterator() - { - return new ArrayIterator($this->items); - } - - /* - * -------------------------------------------------------------- - * JsonSerializable interface - * -------------------------------------------------------------- - */ - - /** - * Return items for JSON serialization - * - * @return array - */ - #[\ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->items; - } -} diff --git a/niucloud/vendor/adbario/php-dot-notation/src/helpers.php b/niucloud/vendor/adbario/php-dot-notation/src/helpers.php deleted file mode 100644 index bebb9527..00000000 --- a/niucloud/vendor/adbario/php-dot-notation/src/helpers.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @link https://github.com/adbario/php-dot-notation - * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) - */ - -use Adbar\Dot; - -if (! function_exists('dot')) { - /** - * Create a new Dot object with the given items and optional delimiter - * - * @param mixed $items - * @param string $delimiter - * @return \Adbar\Dot - */ - function dot($items, $delimiter = '.') - { - return new Dot($items, $delimiter); - } -} diff --git a/niucloud/vendor/alibabacloud/client/CHANGELOG.md b/niucloud/vendor/alibabacloud/client/CHANGELOG.md deleted file mode 100644 index ad5fcf83..00000000 --- a/niucloud/vendor/alibabacloud/client/CHANGELOG.md +++ /dev/null @@ -1,311 +0,0 @@ -# CHANGELOG - -## 1.5.32 - 2022-12-08 - -- Support PHP versions: From 5.5 up to 8.1 - -## 1.5.31 - 2021-05-13 - -- Deprecate `\GuzzleHttp\Psr7\parse_query` method - -## 1.5.30 - 2021-03-22 -- Fixed incompatibility in PHP 5.6 version. - -## 1.5.29 - 2020-08-03 -- Fixed RPC Signature. - -## 1.5.28 - 2020-08-03 -- Updated `endpoints`. - -## 1.5.27 - 2020-07-17 -- Fixed composer error config. - -## 1.5.26 - 2020-07-17 -- Validate RegionID/EndpointSuffix/Network. - -## 1.5.25 - 2020-07-04 -- Fixed ROA signature. -- Deprecated `LogFormatter`. - -## 1.5.24 - 2020-06-04 -- Fixed Resolve Host. - -## 1.5.23 - 2020-05-22 -- Optimized global product support. - -## 1.5.22 - 2020-05-12 -- Updated Endpoints. - -## 1.5.21 - 2020-02-26 -- Improved Nonce. -- Updated Endpoints. - -## 1.5.20 - 2019-12-30 -- Improved Docs. -- Updated Endpoints. - -## 1.5.19 - 2019-12-17 -- Updated Endpoints. - -## 1.5.18 - 2019-10-11 -- Updated Request link. -- Updated Endpoints data. - -## 1.5.17 - 2019-09-15 -- Improved Host Finder. -- Updated Endpoints Data. - -## 1.5.16 - 2019-08-21 -- Updated Endpoints Data. - -## 1.5.15 - 2019-08-14 -- Improved Client. - - -## 1.5.14 - 2019-07-25 -- Improved Credential Filter. - - -## 1.5.13 - 2019-07-18 -- Improved API Resolver. - - -## 1.5.12 - 2019-06-20 -- Fixed Signature for ROA. - - -## 1.5.11 - 2019-06-14 -- Added endpoint rules. - - -## 1.5.10 - 2019-06-13 -- Improved `Resovler`. -- Updated `endpoints`. - - -## 1.5.9 - 2019-06-04 -- Improved `UUID`. - - -## 1.5.8 - 2019-05-30 -- Improved `Arrays`. - - -## 1.5.7 - 2019-05-29 -- Improved `uuid`. - - -## 1.5.6 - 2019-05-29 -- Fixed `uuid` version lock. - - -## 1.5.5 - 2019-05-23 -- Improved `Signature`. - - -## 1.5.4 - 2019-05-22 -- Updated `Endpoints`. -- Fixed `Content-Type` in header. - - -## 1.5.3 - 2019-05-13 -- Improved `Endpoint` tips. -- Improved `Endpoints` for `STS`. - - -## 1.5.2 - 2019-05-10 -- Improved `Result` object. - - -## 1.5.1 - 2019-05-09 -- Supported `Resolver` for Third-party dependencies. - - -## 1.5.0 - 2019-05-07 -- Improved `Resolver` for products. - - -## 1.4.0 - 2019-05-06 -- Support `Retry` and `Asynchronous` for Request. - - -## 1.3.1 - 2019-04-30 -- Allow timeouts to be set in microseconds. - - -## 1.3.0 - 2019-04-18 -- Improved parameters methods. -- Optimized the logic for body encode. - - -## 1.2.1 - 2019-04-11 -- Improve exception code and message for `Region ID`. - - -## 1.2.0 - 2019-04-11 -- Improve exception message for `Region ID`. - - -## 1.1.1 - 2019-04-02 -- Added endpoints for `batchcomputenew`, `privatelink`. -- Improve Region ID tips. - - -## 1.1.0 - 2019-04-01 -- Updated `composer.json`. - - -## 1.0.27 - 2019-03-31 -- Support `Policy` for `ramRoleArnClient`. - - -## 1.0.26 - 2019-03-27 -- Support `pid`, `cost`, `start_time` for Log. - - -## 1.0.25 - 2019-03-27 -- Updated default log format. -- Add endpoints for `dbs`. - - -## 1.0.24 - 2019-03-26 -- Support Log. - - -## 1.0.23 - 2019-03-23 -- Remove SVG. - - -## 1.0.22 - 2019-03-20 -- Add endpoint `cn-hangzhou` for `idaas` . - - -## 1.0.21 - 2019-03-19 -- Installing by Using the ZIP file. -- Update Docs. - - -## 1.0.20 - 2019-03-13 -- Improve Tests. -- Update Docs. - - -## 1.0.19 - 2019-03-12 -- Add SSL Verify Option `verify()`. - - -## 1.0.18 - 2019-03-11 -- Add endpoints for `acr`. -- Add endpoints for `faas`. -- Add endpoints for `ehs`. -- SSL certificates are not validated by default. - - -## 1.0.17 - 2019-03-08 -- Support Mock for Test. - - -## 1.0.16 - 2019-03-07 -- Support Credential Provider Chain. -- Support `CCC`. -- Add `ap-south-1` for `cas`. -- Add `ap-southeast-1` for `waf`. -- Update Docs. - - -## 1.0.15 - 2019-02-27 -- Add endpoints for `Chatbot`. -- Change endpoints for `drdspost` and `drdspre`. - - -## 1.0.14 - 2019-02-21 -- Enable debug mode by set environment variable `DEBUG=sdk`. - - -## 1.0.13 - 2019-02-18 -- Support Release Script `composer release`. -- Add endpoints for apigateway in `drdspre` in `cn-qingdao`. -- Add endpoints for apigateway in `drdspre` in `cn-beijing`. -- Add endpoints for apigateway in `drdspre` in `cn-hangzhou`. -- Add endpoints for apigateway in `drdspre` in `cn-shanghai`. -- Add endpoints for apigateway in `drdspre` in `cn-shenzhen`. -- Add endpoints for apigateway in `drdspre` in `cn-hongkong`. -- Add endpoints for apigateway in `drdspost` in `ap-southeast-1`. -- Add endpoints for apigateway in `drdspost` in `cn-shanghai`. -- Add endpoints for apigateway in `drdspost` in `cn-hongkong`. -- Add endpoints for apigateway in `vod` in `ap-southeast-1`. -- Add endpoints for apigateway in `vod` in `eu-central-1`. - - -## 1.0.12 - 2019-02-16 -- Support `open_basedir`. - - -## 1.0.11 - 2019-02-13 -- Improve User Agent. - - -## 1.0.10 - 2019-02-12 -- `userAgentAppend` is renamed to `appendUserAgent`. - - -## 1.0.9 - 2019-02-12 -- `userAgent` is renamed to `userAgentAppend`. - - -## 1.0.8 - 2019-02-11 -- `userAgent` - Support DIY User Agent. -- Add endpoints for apigateway in Zhangjiakou. -- Add endpoints for apigateway in Hu He Hao Te. -- Add endpoints for vod in Hu He Hao Te. -- Add endpoints for hsm in Zhangjiakou. -- Add endpoints for luban in Germany. -- Add endpoints for linkwan in Hangzhou. -- Add endpoints for drdspost in Singapore. - - -## 1.0.7 - 2019-01-28 -- Add endpoints for gpdb in Tokyo. -- Add endpoints for elasticsearch in Beijing. - - -## 1.0.6 - 2019-01-23 -- Add endpoints for dysmsapi in Singapore. -- Add endpoints for dybaseapi. -- Add endpoints for dyiotapi. -- Add endpoints for dycdpapi. -- Add endpoints for dyplsapi. -- Add endpoints for dypnsapi. -- Add endpoints for dyvmsapi. -- Add endpoints for snsuapi. - - -## 1.0.5 - 2019-01-21 -- Add endpoints for ApiGateway in Silicon Valley, Virginia. -- Add endpoints for Image Search in Shanghai. - - -## 1.0.4 - 2019-01-17 -- Support fixer all. -- Add Endpoints. - - -## 1.0.3 - 2019-01-15 -- Update Endpoints. -- Update README.md. -- Update Return Result Message. - - -## 1.0.2 - 2019-01-15 -- Optimize the documentation. -- Adjust the CI configuration. - - -## 1.0.1 - 2019-01-09 -- Distinguish credential error. -- Add endpoints for NLS. -- Add not found product tip. - - -## 1.0.0 - 2019-01-07 -- Initial release of the Alibaba Cloud Client for PHP Version 1.0.0 on Packagist See for more information. diff --git a/niucloud/vendor/alibabacloud/client/CONTRIBUTING.md b/niucloud/vendor/alibabacloud/client/CONTRIBUTING.md deleted file mode 100644 index a1c52a0b..00000000 --- a/niucloud/vendor/alibabacloud/client/CONTRIBUTING.md +++ /dev/null @@ -1,30 +0,0 @@ -# Contributing to the Alibaba Cloud Client for PHP - -We work hard to provide a high-quality and useful SDK for Alibaba Cloud, and -we greatly value feedback and contributions from our community. Please submit -your [issues][issues] or [pull requests][pull-requests] through GitHub. - -## Tips - -- The SDK is released under the [Apache license][license]. Any code you submit - will be released under that license. For substantial contributions, we may - ask you to sign a [Alibaba Documentation Corporate Contributor License - Agreement (CLA)][cla]. -- We follow all of the relevant PSR recommendations from the [PHP Framework - Interop Group][php-fig]. Please submit code that follows these standards. - The [PHP CS Fixer][cs-fixer] tool can be helpful for formatting your code. - Your can use `composer fixer` to fix code. -- We maintain a high percentage of code coverage in our unit tests. If you make - changes to the code, please add, update, and/or remove tests as appropriate. -- If your code does not conform to the PSR standards, does not include adequate - tests, or does not contain a changelog document, we may ask you to update - your pull requests before we accept them. We also reserve the right to deny - any pull requests that do not align with our standards or goals. - -[issues]: https://github.com/aliyun/openapi-sdk-php-client/issues -[pull-requests]: https://github.com/aliyun/openapi-sdk-php-client/pulls -[license]: http://www.apache.org/licenses/LICENSE-2.0 -[cla]: https://alibaba-cla-2018.oss-cn-beijing.aliyuncs.com/Alibaba_Documentation_Open_Source_Corporate_CLA.pdf -[php-fig]: http://php-fig.org -[cs-fixer]: http://cs.sensiolabs.org/ -[docs-readme]: https://github.com/aliyun/openapi-sdk-php-client/blob/master/README.md diff --git a/niucloud/vendor/alibabacloud/client/LICENSE.md b/niucloud/vendor/alibabacloud/client/LICENSE.md deleted file mode 100644 index ec13fccd..00000000 --- a/niucloud/vendor/alibabacloud/client/LICENSE.md +++ /dev/null @@ -1,13 +0,0 @@ -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/niucloud/vendor/alibabacloud/client/NOTICE.md b/niucloud/vendor/alibabacloud/client/NOTICE.md deleted file mode 100644 index db041645..00000000 --- a/niucloud/vendor/alibabacloud/client/NOTICE.md +++ /dev/null @@ -1,88 +0,0 @@ -# Alibaba Cloud Client for PHP - - - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"). -You may not use this file except in compliance with the License. -A copy of the License is located at - - - -or in the "license" file accompanying this file. This file is distributed -on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either -express or implied. See the License for the specific language governing -permissions and limitations under the License. - -# Guzzle - - - -Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -# jmespath.php - - - -Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -# Dot - - - -Copyright (c) 2016-2019 Riku Särkinen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/niucloud/vendor/alibabacloud/client/README-zh-CN.md b/niucloud/vendor/alibabacloud/client/README-zh-CN.md deleted file mode 100644 index b27d282b..00000000 --- a/niucloud/vendor/alibabacloud/client/README-zh-CN.md +++ /dev/null @@ -1,168 +0,0 @@ -[English](/README.md) | 简体中文 - - -# Alibaba Cloud Client for PHP -[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client) -[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client) -[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client) -[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client) -[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg?token=90Yd5Bne3S)](https://codecov.io/gh/aliyun/openapi-sdk-php-client) -[![PHP Version Require](http://poser.pugx.org/alibabacloud/client/require/php)](https://packagist.org/packages/alibabacloud/client) - - -![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) - - -Alibaba Cloud Client for PHP 是帮助 PHP 开发者管理凭据、发送请求的客户端工具,[Alibaba Cloud SDK for PHP][SDK] 由本工具提供底层支持。 - - -## 使用诊断 -[Troubleshoot](https://troubleshoot.api.aliyun.com/?source=github_sdk) 提供 OpenAPI 使用诊断服务,通过 `RequestID` 或 `报错信息` ,帮助开发者快速定位,为开发者提供解决方案。 - -## 在线示例 -[阿里云 OpenAPI 开发者门户]https://next.api.aliyun.com/) 提供在线调用阿里云产品,并动态生成 SDK 代码和快速检索接口等能力,能显著降低使用云 API 的难度。 - - -## 先决条件 -您的系统需要满足[先决条件](/docs/zh-CN/0-Prerequisites.md),包括 PHP> = 5.5。 我们强烈建议使用cURL扩展,并使用TLS后端编译cURL 7.16.2+。 - - -## 安装依赖 -如果已在系统上[全局安装 Composer](https://getcomposer.org/doc/00-intro.md#globally),请直接在项目目录中运行以下内容来安装 Alibaba Cloud Client for PHP 作为依赖项: -``` -composer require alibabacloud/client -``` -> 一些用户可能由于网络问题无法安装,可以使用[阿里云 Composer 全量镜像](https://developer.aliyun.com/composer)。 - -请看[安装](/docs/zh-CN/1-Installation.md)有关通过 Composer 和其他方式安装的详细信息。 - - -## 快速使用 -在您开始之前,您需要注册阿里云帐户并获取您的[凭证](https://usercenter.console.aliyun.com/#/manage/ak)。 - -```php -asDefaultClient(); -``` - - -## 请求 -> 请求风格分为 `ROA` 和 `RPC`,不同产品风格不同,使用前,请参考产品文档。推荐使用 [Alibaba Cloud SDK for PHP][SDK] ,细节已被封装,无需关心风格。 - - -### ROA 请求 -```php -regionId('cn-hangzhou') // 指定请求的区域,不指定则使用客户端区域、默认区域 - ->product('CS') // 指定产品 - ->version('2015-12-15') // 指定产品版本 - ->action('DescribeClusterServices') // 指定产品接口 - ->serviceCode('cs') // 设置 ServiceCode 以备寻址,非必须 - ->endpointType('openAPI') // 设置类型,非必须 - ->method('GET') // 指定请求方式 - ->host('cs.aliyun.com') // 指定域名则不会寻址,如认证方式为 Bearer Token 的服务则需要指定 - ->pathPattern('/clusters/[ClusterId]/services') // 指定ROA风格路径规则 - ->withClusterId('123456') // 为路径中参数赋值,方法名:with + 参数 - ->request(); // 发起请求并返回结果对象,请求需要放在设置的最后面 - - print_r($result->toArray()); - -} catch (ClientException $exception) { - print_r($exception->getErrorMessage()); -} catch (ServerException $exception) { - print_r($exception->getErrorMessage()); -} -``` - -### RPC 请求 -```php -product('Cdn') - ->version('2014-11-11') - ->action('DescribeCdnService') - ->method('POST') - ->request(); - - print_r($result->toArray()); - -} catch (ClientException $exception) { - print_r($exception->getErrorMessage()); -} catch (ServerException $exception) { - print_r($exception->getErrorMessage()); -} -``` - - -## 文档 -* [先决条件](/docs/zh-CN/0-Prerequisites.md) -* [安装](/docs/zh-CN/1-Installation.md) -* [客户端和凭证](/docs/zh-CN/2-Client.md) -* [请求](/docs/zh-CN/3-Request.md) -* [结果](/docs/zh-CN/4-Result.md) -* [区域](/docs/zh-CN/5-Region.md) -* [域名](/docs/zh-CN/6-Host.md) -* [SSL 验证](/docs/zh-CN/7-Verify.md) -* [调试](/docs/zh-CN/8-Debug.md) -* [日志](/docs/zh-CN/9-Log.md) -* [测试](/docs/zh-CN/10-Test.md) - - -## 问题 -[提交 Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose),不符合指南的问题可能会立即关闭。 - - -## 发行说明 -每个版本的详细更改记录在[发行说明](/CHANGELOG.md)中。 - - -## 贡献 -提交 Pull Request 之前请阅读[贡献指南](/CONTRIBUTING.md)。 - - -## 相关 -* [阿里云服务 Regions & Endpoints][endpoints] -* [阿里云 OpenAPI 开发者门户][open-api] -* [Packagist][packagist] -* [Composer][composer] -* [Guzzle中文文档][guzzle-docs] -* [最新源码][latest-release] - - -## 许可证 -[Apache-2.0](/LICENSE.md) - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - - -[SDK]: https://github.com/aliyun/openapi-sdk-php -[open-api]: https://next.api.aliyun.com/ -[latest-release]: https://github.com/aliyun/openapi-sdk-php-client -[guzzle-docs]: https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html -[composer]: https://getcomposer.org -[packagist]: https://packagist.org/packages/alibabacloud/sdk -[home]: https://home.console.aliyun.com -[aliyun]: https://www.aliyun.com -[regions]: https://help.aliyun.com/document_detail/40654.html -[endpoints]: https://developer.aliyun.com/endpoints -[cURL]: http://php.net/manual/zh/book.curl.php -[OPCache]: http://php.net/manual/zh/book.opcache.php -[xdebug]: http://xdebug.org -[OpenSSL]: http://php.net/manual/zh/book.openssl.php -[client]: https://github.com/aliyun/openapi-sdk-php-client diff --git a/niucloud/vendor/alibabacloud/client/README.md b/niucloud/vendor/alibabacloud/client/README.md deleted file mode 100644 index dacf2bf3..00000000 --- a/niucloud/vendor/alibabacloud/client/README.md +++ /dev/null @@ -1,167 +0,0 @@ -English | [简体中文](/README-zh-CN.md) - - -# Alibaba Cloud Client for PHP -[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client) -[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client) -[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client) -[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client) -[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg?token=90Yd5Bne3S)](https://codecov.io/gh/aliyun/openapi-sdk-php-client) -[![PHP Version Require](http://poser.pugx.org/alibabacloud/client/require/php)](https://packagist.org/packages/alibabacloud/client) - - -![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) - - -Alibaba Cloud Client for PHP is a client tool that helps PHP developers manage credentials and send requests, [Alibaba Cloud SDK for PHP][SDK] dependency on this tool. - -## Troubleshoot -[Troubleshoot](https://troubleshoot.api.aliyun.com/?source=github_sdk) Provide OpenAPI diagnosis service to help developers locate quickly and provide solutions for developers through `RequestID` or `error message`. - -## Online Demo -[Alibaba Cloud OpenAPI Developer Portal](https://next.api.aliyun.com/) provides the ability to call the cloud product OpenAPI online, and dynamically generate SDK Example code and quick retrieval interface, which can significantly reduce the difficulty of using the cloud API. - -## Prerequisites -Your system will need to meet the [Prerequisites](/docs/en-US/0-Prerequisites.md), including having PHP >= 5.5. We highly recommend having it compiled with the cURL extension and cURL 7.16.2+. - - -## Installation -If Composer is already [installed globally on your system](https://getcomposer.org/doc/00-intro.md#globally), run the following in the base directory of your project to install Alibaba Cloud Client for PHP as a dependency: -``` -composer require alibabacloud/client -``` -> Some users may not be able to install due to network problems, you can try to switch the Composer mirror. - -Please see the [Installation](/docs/en-US/1-Installation.md) for more detailed information about installing the Alibaba Cloud Client for PHP through Composer and other means. - - -## Quick Examples -Before you begin, you need to sign up for an Alibaba Cloud account and retrieve your [Credentials](https://usercenter.console.aliyun.com/#/manage/ak). - -### Create Client -```php -asDefaultClient(); -``` - - -## Request -> Request styles are divided into `ROA` and `RPC`. Different product styles are different. Please refer to the product documentation before using. It is recommended to use [Alibaba cloud SDK for PHP][SDK], the details have been encapsulated, and you do not need to care about the style. - - -### ROA Request -```php -regionId('cn-hangzhou') // Specify the requested regionId, if not specified, use the client regionId, then default regionId - ->product('CS') // Specify product - ->version('2015-12-15') // Specify product version - ->action('DescribeClusterServices') // Specify product interface - ->serviceCode('cs') // Set ServiceCode for addressing, optional - ->endpointType('openAPI') // Set type, optional - ->method('GET') // Set request method - ->host('cs.aliyun.com') // Location Service will not be enabled if the host is specified. For example, service with a Certification type-Bearer Token should be specified - ->pathPattern('/clusters/[ClusterId]/services') // Specify path rule with ROA-style - ->withClusterId('123456') // Assign values to parameters in the path. Method: with + Parameter - ->request(); // Make a request and return to result object. The request is to be placed at the end of the setting - - print_r($result->toArray()); - -} catch (ClientException $exception) { - print_r($exception->getErrorMessage()); -} catch (ServerException $exception) { - print_r($exception->getErrorMessage()); -} -``` - -### RPC Request -```php -product('Cdn') - ->version('2014-11-11') - ->action('DescribeCdnService') - ->method('POST') - ->request(); - - print_r($result->toArray()); - -} catch (ClientException $exception) { - print_r($exception->getErrorMessage()); -} catch (ServerException $exception) { - print_r($exception->getErrorMessage()); -} -``` - - -## Documentation -* [Prerequisites](/docs/en-US/0-Prerequisites.md) -* [Installation](/docs/en-US/1-Installation.md) -* [Client & Credentials](/docs/en-US/2-Client.md) -* [Request](/docs/en-US/3-Request.md) -* [Result](/docs/en-US/4-Result.md) -* [Region](/docs/en-US/5-Region.md) -* [Host](/docs/en-US/6-Host.md) -* [SSL Verify](/docs/en-US/7-Verify.md) -* [Debug](/docs/en-US/8-Debug.md) -* [Log](/docs/en-US/9-Log.md) -* [Test](/docs/en-US/10-Test.md) - - -## Issues -[Opening an Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose), Issues not conforming to the guidelines may be closed immediately. - - -## Changelog -Detailed changes for each release are documented in the [release notes](/CHANGELOG.md). - - -## Contribution -Please make sure to read the [Contributing Guide](/CONTRIBUTING.md) before making a pull request. - - -## References -* [Alibaba Cloud Regions & Endpoints][endpoints] -* [Alibaba Cloud OpenAPI Developer Portal][open-api] -* [Packagist][packagist] -* [Composer][composer] -* [Guzzle Documentation][guzzle-docs] -* [Latest Release][latest-release] - - -## License -[Apache-2.0](/LICENSE.md) - -Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - - -[SDK]: https://github.com/aliyun/openapi-sdk-php -[open-api]: https://next.api.aliyun.com/ -[latest-release]: https://github.com/aliyun/openapi-sdk-php-client -[guzzle-docs]: http://docs.guzzlephp.org/en/stable/request-options.html -[composer]: https://getcomposer.org -[packagist]: https://packagist.org/packages/alibabacloud/sdk -[home]: https://home.console.aliyun.com -[alibabacloud]: https://www.alibabacloud.com -[regions]: https://www.alibabacloud.com/help/doc-detail/40654.html -[endpoints]: https://developer.aliyun.com/endpoints -[cURL]: http://php.net/manual/en/book.curl.php -[OPCache]: http://php.net/manual/en/book.opcache.php -[xdebug]: http://xdebug.org -[OpenSSL]: http://php.net/manual/en/book.openssl.php -[client]: https://github.com/aliyun/openapi-sdk-php-client diff --git a/niucloud/vendor/alibabacloud/client/UPGRADING.md b/niucloud/vendor/alibabacloud/client/UPGRADING.md deleted file mode 100644 index 08c1bb33..00000000 --- a/niucloud/vendor/alibabacloud/client/UPGRADING.md +++ /dev/null @@ -1,6 +0,0 @@ -Upgrading Guide -=============== - -1.x ------------------------ -- This is the first version. See for more information. diff --git a/niucloud/vendor/alibabacloud/client/autoload.php b/niucloud/vendor/alibabacloud/client/autoload.php deleted file mode 100644 index e654320c..00000000 --- a/niucloud/vendor/alibabacloud/client/autoload.php +++ /dev/null @@ -1,17 +0,0 @@ -=5.5", - "ext-curl": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-openssl": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "mtdowling/jmespath.php": "^2.5", - "adbario/php-dot-notation": "^2.4.1", - "clagiordano/weblibs-configmanager": "^1.0" - }, - "require-dev": { - "ext-spl": "*", - "ext-dom": "*", - "ext-pcre": "*", - "psr/cache": "^1.0", - "ext-sockets": "*", - "drupal/coder": "^8.3", - "symfony/dotenv": "^3.4", - "league/climate": "^3.2.4", - "phpunit/phpunit": "^5.7|^6.6|^7.5|^8.5|^9.5", - "monolog/monolog": "^1.24", - "composer/composer": "^1.8", - "mikey179/vfsstream": "^1.6", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-sockets": "To use client-side monitoring" - }, - "autoload": { - "psr-4": { - "AlibabaCloud\\Client\\": "src" - }, - "files": [ - "src/Functions.php" - ] - }, - "autoload-dev": { - "psr-4": { - "AlibabaCloud\\Client\\Tests\\": "tests/" - } - }, - "config": { - "preferred-install": "dist", - "optimize-autoloader": true, - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "scripts-descriptions": { - "cs": "Tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard.", - "cbf": "Automatically correct coding standard violations.", - "fixer": "Fixes code to follow standards.", - "test": "Run all tests.", - "unit": "Run Unit tests.", - "feature": "Run Feature tests.", - "clearCache": "Clear cache like coverage.", - "coverage": "Show Coverage html.", - "endpoints": "Update endpoints from OSS." - }, - "scripts": { - "cs": "phpcs --standard=PSR2 -n ./", - "cbf": "phpcbf --standard=PSR2 -n ./", - "fixer": "php-cs-fixer fix ./", - "test": [ - "phpunit --colors=always" - ], - "test4HighVersion": [ - "@clearCache", - "phpunit --testsuite=Test4HighVersion --colors=always" - ], - "test4LowVersion": [ - "@clearCache", - "phpunit --testsuite=Test4LowVersion --colors=always" - ], - "unit4HighVersion": [ - "@clearCache", - "phpunit --testsuite=Unit4HighVersion --colors=always" - ], - "unit4LowVersion": [ - "@clearCache", - "phpunit --testsuite=Unit4LowVersion --colors=always" - ], - "feature4HighVersion": [ - "@clearCache", - "phpunit --testsuite=Feature4HighVersion --colors=always" - ], - "feature4LowVersion": [ - "@clearCache", - "phpunit --testsuite=Feature4LowVersion --colors=always" - ], - "coverage": "open cache/coverage/index.html", - "clearCache": "rm -rf cache/*", - "endpoints": [ - "AlibabaCloud\\Client\\Regions\\LocationService::updateEndpoints", - "@fixer" - ], - "release": [ - "AlibabaCloud\\Client\\Release::release" - ] - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Accept.php b/niucloud/vendor/alibabacloud/client/src/Accept.php deleted file mode 100644 index e7c52613..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Accept.php +++ /dev/null @@ -1,53 +0,0 @@ -format = $format; - } - - /** - * @param $format - * - * @return Accept - */ - public static function create($format) - { - return new static($format); - } - - /** - * @return mixed|string - */ - public function toString() - { - $key = \strtoupper($this->format); - - $list = [ - 'JSON' => 'application/json', - 'XML' => 'application/xml', - 'RAW' => 'application/octet-stream', - 'FORM' => 'application/x-www-form-urlencoded' - ]; - - return isset($list[$key]) ? $list[$key] : $list['RAW']; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/AlibabaCloud.php b/niucloud/vendor/alibabacloud/client/src/AlibabaCloud.php deleted file mode 100644 index 16847fae..00000000 --- a/niucloud/vendor/alibabacloud/client/src/AlibabaCloud.php +++ /dev/null @@ -1,62 +0,0 @@ -credential = $credential; - $this->signature = $signature; - $this->options['connect_timeout'] = Request::CONNECT_TIMEOUT; - $this->options['timeout'] = Request::TIMEOUT; - $this->options['verify'] = false; - } - - /** - * @return AccessKeyCredential|BearerTokenCredential|CredentialsInterface|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential|StsCredential - */ - public function getCredential() - { - return $this->credential; - } - - /** - * @return SignatureInterface|BearerTokenSignature|ShaHmac1Signature|ShaHmac256Signature|ShaHmac256WithRsaSignature - */ - public function getSignature() - { - return $this->signature; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php b/niucloud/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php deleted file mode 100644 index e97cd6cc..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php +++ /dev/null @@ -1,26 +0,0 @@ -credential)) { - case EcsRamRoleCredential::class: - return (new EcsRamRoleProvider($this))->get(); - case RamRoleArnCredential::class: - return (new RamRoleArnProvider($this))->get($timeout, $connectTimeout); - case RsaKeyPairCredential::class: - return (new RsaKeyPairProvider($this))->get($timeout, $connectTimeout); - default: - return $this->credential; - } - } - - /** - * @return static - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function asGlobalClient() - { - return $this->asDefaultClient(); - } - - /** - * Set the current client as the default client. - * - * @return static - * @throws ClientException - */ - public function asDefaultClient() - { - return $this->name(CredentialsProvider::getDefaultName()); - } - - /** - * Naming clients. - * - * @param string $name - * - * @return static - * @throws ClientException - */ - public function name($name) - { - Filter::name($name); - - return AlibabaCloud::set($name, $this); - } - - /** - * @return bool - */ - public function isDebug() - { - if (isset($this->options['debug'])) { - return $this->options['debug'] === true && PHP_SAPI === 'cli'; - } - - return false; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php b/niucloud/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php deleted file mode 100644 index b7d3087d..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php +++ /dev/null @@ -1,33 +0,0 @@ -getValue( - \strtolower($configPath), - $defaultValue - ); - } - - /** - * @return ConfigManager - */ - private static function getConfigManager() - { - if (!self::$configManager instanceof ConfigManager) { - self::$configManager = new ConfigManager(__DIR__ . DIRECTORY_SEPARATOR . 'Data.php'); - } - - return self::$configManager; - } - - /** - * @param string $configPath - * @param mixed $newValue - * - * @return ConfigManager - * @throws Exception - */ - public static function set($configPath, $newValue) - { - self::getConfigManager()->setValue(\strtolower($configPath), $newValue); - - return self::getConfigManager()->saveConfigFile(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Config/Data.php b/niucloud/vendor/alibabacloud/client/src/Config/Data.php deleted file mode 100644 index 883b2f0b..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Config/Data.php +++ /dev/null @@ -1,3799 +0,0 @@ - - [ - 'dysmsapi' => - [ - 'cn-hangzhou' => 'dysmsapi.aliyuncs.com', - 'ap-southeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', - ], - 'ccc' => - [ - 'global' => 'ccc.cn-shanghai.aliyuncs.com', - 'cn-shanghai' => 'ccc.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'ccc.cn-hangzhou.aliyuncs.com', - ], - 'dbs' => - [ - 'cn-hangzhou' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'dbs-api.ap-southeast-1.aliyuncs.com', - 'ap-northeast-1' => 'dbs-api.ap-northeast-1.aliyuncs.com', - ], - 'dybaseapi' => - [ - 'global' => 'dybaseapi.aliyuncs.com', - 'cn-hangzhou' => 'dybaseapi.aliyuncs.com', - ], - 'dyiotapi' => - [ - 'global' => 'dyiotapi.aliyuncs.com', - 'cn-hangzhou' => 'dyiotapi.aliyuncs.com', - ], - 'dycdpapi' => - [ - 'global' => 'dycdpapi.aliyuncs.com', - 'cn-hangzhou' => 'dycdpapi.aliyuncs.com', - ], - 'dyplsapi' => - [ - 'global' => 'dyplsapi.aliyuncs.com', - 'cn-hangzhou' => 'dyplsapi.aliyuncs.com', - ], - 'dypnsapi' => - [ - 'global' => 'dypnsapi.aliyuncs.com', - 'cn-hangzhou' => 'dypnsapi.aliyuncs.com', - ], - 'dyvmsapi' => - [ - 'global' => 'dyvmsapi.aliyuncs.com', - 'cn-hangzhou' => 'dyvmsapi.aliyuncs.com', - ], - 'snsuapi' => - [ - 'global' => 'snsuapi.aliyuncs.com', - 'cn-hangzhou' => 'snsuapi.aliyuncs.com', - ], - 'ecs' => - [ - 'jp-fudao-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'me-east-1' => 'ecs.me-east-1.aliyuncs.com', - 'us-east-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'ap-northeast-1' => 'ecs.ap-northeast-1.aliyuncs.com', - 'cn-hangzhou-bj-b01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-beijing-nu16-b01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-beijing-am13-c01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'in-west-antgroup-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-guizhou-gov' => 'ecs-cn-hangzhou.aliyuncs.com', - 'in-west-antgroup-2' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'ecs-cn-hangzhou.aliyuncs.com', - 'tw-snowcloud-kaohsiung' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-finance-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-guizhou' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-fujian' => 'ecs-cn-hangzhou.aliyuncs.com', - 'in-mumbai-alipay' => 'ecs-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-anhui-gov-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-anhui-gov' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'ecs-cn-hangzhou.aliyuncs.com', - 'ap-southeast-2' => 'ecs.ap-southeast-2.aliyuncs.com', - 'cn-qingdao' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-su18-b02' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-su18-b03' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-su18-b01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'ap-southeast-antgroup-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-henan-am12001' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-gansu-am6' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-ningxiazhongwei' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-ningxia-am7-c01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-st4-d01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'eu-central-1' => 'ecs.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'ecs.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ecs.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'ecs.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'ecs.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'ecs.eu-west-1.aliyuncs.com', - 'ap-south-1' => 'ecs.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'ecs.cn-chengdu.aliyuncs.com', - 'cn-north-2-gov-1' => 'ecs.aliyuncs.com', - 'cn-edge-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', - 'cn-hangzhou-internal-prod-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-internal-test-3' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', - 'cn-qingdao-nebula' => 'ecs.cn-qingdao-nebula.aliyuncs.com', - 'cn-shanghai-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-zhangbei-na61-b01' => 'ecs-cn-hangzhou.aliyuncs.com', - 'cn-zhengzhou-nebula-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', - 'eu-west-1-oxs' => 'ecs.cn-shenzhen-cloudstone.aliyuncs.com', - 'cn-heyuan' => 'ecs.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'ecs.cn-wulanchabu.aliyuncs.com', - ], - 'rds' => - [ - 'me-east-1' => 'rds.me-east-1.aliyuncs.com', - 'us-east-1' => 'rds.aliyuncs.com', - 'ap-northeast-1' => 'rds.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'rds.aliyuncs.com', - 'cn-qingdao-cm9' => 'rds.aliyuncs.com', - 'cn-shanghai-finance-1' => 'rds.aliyuncs.com', - 'cn-beijing-gov-1' => 'rds.aliyuncs.com', - 'cn-shanghai' => 'rds.aliyuncs.com', - 'cn-shenzhen-inner' => 'rds.aliyuncs.com', - 'cn-fujian' => 'rds.aliyuncs.com', - 'us-west-1' => 'rds.aliyuncs.com', - 'cn-shanghai-inner' => 'rds.aliyuncs.com', - 'cn-hangzhou' => 'rds.aliyuncs.com', - 'cn-beijing-inner' => 'rds.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'rds.aliyuncs.com', - 'cn-shenzhen' => 'rds.aliyuncs.com', - 'ap-southeast-2' => 'rds.ap-southeast-2.aliyuncs.com', - 'cn-qingdao' => 'rds.aliyuncs.com', - 'cn-beijing' => 'rds.aliyuncs.com', - 'cn-hangzhou-d' => 'rds.aliyuncs.com', - 'cn-gansu-am6' => 'rds.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'rds.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'rds.aliyuncs.com', - 'ap-southeast-1' => 'rds.aliyuncs.com', - 'eu-central-1' => 'rds.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'rds.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'rds.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'rds.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'rds.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'rds.eu-west-1.aliyuncs.com', - 'ap-south-1' => 'rds.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'rds.cn-chengdu.aliyuncs.com', - 'cn-north-2-gov-1' => 'rds.aliyuncs.com', - 'cn-yushanfang' => 'rds.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'rds.cn-chengdu.aliyuncs.com', - 'cn-heyuan' => 'rds.aliyuncs.com', - ], - 'vpc' => - [ - 'me-east-1' => 'vpc.me-east-1.aliyuncs.com', - 'us-east-1' => 'vpc.aliyuncs.com', - 'ap-northeast-1' => 'vpc.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'vpc.aliyuncs.com', - 'cn-beijing-am13-c01' => 'vpc.aliyuncs.com', - 'cn-guizhou-gov' => 'vpc.aliyuncs.com', - 'cn-shanghai-finance-1' => 'vpc.aliyuncs.com', - 'cn-guizhou' => 'vpc.aliyuncs.com', - 'cn-shanghai' => 'vpc.aliyuncs.com', - 'us-west-1' => 'vpc.aliyuncs.com', - 'cn-hangzhou' => 'vpc.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'vpc.aliyuncs.com', - 'cn-anhui-gov' => 'vpc.aliyuncs.com', - 'cn-shenzhen' => 'vpc.aliyuncs.com', - 'ap-southeast-2' => 'vpc.ap-southeast-2.aliyuncs.com', - 'cn-henan-am12001' => 'vpc.aliyuncs.com', - 'cn-beijing' => 'vpc.aliyuncs.com', - 'cn-gansu-am6' => 'vpc.aliyuncs.com', - 'cn-ningxiazhongwei' => 'vpc.aliyuncs.com', - 'cn-ningxia-am7-c01' => 'vpc.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'vpc.aliyuncs.com', - 'ap-southeast-1' => 'vpc.aliyuncs.com', - 'eu-central-1' => 'vpc.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'vpc.cn-zhangjiakou.aliyuncs.com', - 'cn-qingdao' => 'vpc.aliyuncs.com', - 'cn-huhehaote' => 'vpc.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'vpc.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'vpc.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'vpc.eu-west-1.aliyuncs.com', - 'ap-south-1' => 'vpc.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'vpc.cn-chengdu.aliyuncs.com', - 'cn-north-2-gov-1' => 'vpc.aliyuncs.com', - 'ap-northeast-2-pop' => 'vpc.aliyuncs.com', - 'cn-beijing-finance-1' => 'vpc.aliyuncs.com', - 'cn-beijing-finance-pop' => 'vpc.aliyuncs.com', - 'cn-edge-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'vpc.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'vpc.aliyuncs.com', - 'cn-hangzhou-internal-test-3' => 'vpc.aliyuncs.com', - 'cn-hongkong-finance-pop' => 'vpc.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', - 'cn-qingdao-nebula' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', - 'cn-shanghai-et15-b01' => 'vpc.aliyuncs.com', - 'cn-wuhan' => 'vpc.aliyuncs.com', - 'cn-zhangbei-na61-b01' => 'vpc.aliyuncs.com', - 'cn-zhengzhou-nebula-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', - 'eu-west-1-oxs' => 'vpc-nebula.cn-shenzhen-cloudstone.aliyuncs.com', - 'rus-west-1-pop' => 'vpc.aliyuncs.com', - 'cn-heyuan' => 'vpc.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'vpc.cn-wulanchabu.aliyuncs.com', - ], - 'kms' => - [ - 'me-east-1' => 'kms.me-east-1.aliyuncs.com', - 'ap-northeast-1' => 'kms.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'kms.cn-hongkong.aliyuncs.com', - 'cn-shanghai-finance-1' => 'kms.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shanghai' => 'kms.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'kms.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'kms.cn-shenzhen.aliyuncs.com', - 'ap-southeast-2' => 'kms.ap-southeast-2.aliyuncs.com', - 'cn-beijing' => 'kms.cn-beijing.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'kms.cn-shenzhen-finance-1.aliyuncs.com', - 'ap-southeast-1' => 'kms.ap-southeast-1.aliyuncs.com', - 'eu-central-1' => 'kms.eu-central-1.aliyuncs.com', - 'cn-qingdao' => 'kms.cn-qingdao.aliyuncs.com', - 'cn-zhangjiakou' => 'kms.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'kms.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'kms.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'kms.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'kms.eu-west-1.aliyuncs.com', - 'us-west-1' => 'kms.us-west-1.aliyuncs.com', - 'us-east-1' => 'kms.us-east-1.aliyuncs.com', - 'ap-south-1' => 'kms.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'kms.cn-chengdu.aliyuncs.com', - 'cn-hangzhou-finance' => 'kms.cn-hangzhou-finance.aliyuncs.com', - 'cn-north-2-gov-1' => 'kms.cn-north-2-gov-1.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'kms.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'kms.cn-hangzhou.aliyuncs.com', - 'cn-heyuan' => 'kms.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'kms.cn-wulanchabu.aliyuncs.com', - ], - 'cms' => - [ - 'me-east-1' => 'metrics.cn-hangzhou.aliyuncs.com', - 'us-east-1' => 'metrics.cn-hangzhou.aliyuncs.com', - 'ap-northeast-1' => 'metrics.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'metrics.aliyuncs.com', - 'cn-shanghai' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'metrics.aliyuncs.com', - 'us-west-1' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'metrics.aliyuncs.com', - 'cn-hangzhou' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'metrics.aliyuncs.com', - 'cn-shenzhen' => 'metrics.cn-hangzhou.aliyuncs.com', - 'ap-southeast-2' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'metrics.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'metrics.aliyuncs.com', - 'ap-southeast-1' => 'metrics.cn-hangzhou.aliyuncs.com', - 'eu-central-1' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-zhangjiakou' => 'metrics.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'metrics.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'metrics.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'metrics.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'metrics.eu-west-1.aliyuncs.com', - 'ap-south-1' => 'metrics.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'metrics.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'metrics.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'metrics.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'metrics.cn-north-2-gov-1.aliyuncs.com', - 'cn-qingdao-nebula' => 'metrics.cn-qingdao-nebula.aliyuncs.com', - 'cn-heyuan' => 'metrics.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'metrics.cn-wulanchabu.aliyuncs.com', - ], - 'slb' => - [ - 'me-east-1' => 'slb.me-east-1.aliyuncs.com', - 'us-east-1' => 'slb.aliyuncs.com', - 'ap-northeast-1' => 'slb.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'slb.aliyuncs.com', - 'cn-qingdao-cm9' => 'slb.aliyuncs.com', - 'cn-shanghai' => 'slb.aliyuncs.com', - 'cn-shenzhen-inner' => 'slb.aliyuncs.com', - 'us-west-1' => 'slb.aliyuncs.com', - 'cn-shanghai-inner' => 'slb.aliyuncs.com', - 'cn-hangzhou' => 'slb.aliyuncs.com', - 'cn-beijing-inner' => 'slb.aliyuncs.com', - 'cn-shenzhen' => 'slb.aliyuncs.com', - 'ap-southeast-2' => 'slb.ap-southeast-2.aliyuncs.com', - 'cn-qingdao' => 'slb.aliyuncs.com', - 'cn-beijing' => 'slb.aliyuncs.com', - 'cn-hangzhou-d' => 'slb.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'slb.aliyuncs.com', - 'ap-southeast-1' => 'slb.aliyuncs.com', - 'eu-central-1' => 'slb.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'slb.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'slb.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'slb.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'slb.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'slb.eu-west-1.aliyuncs.com', - 'ap-south-1' => 'slb.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'slb.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'slb.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'slb.aliyuncs.com', - 'cn-north-2-gov-1' => 'slb.aliyuncs.com', - 'cn-fujian' => 'slb.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'slb.aliyuncs.com', - 'cn-hangzhou-test-306' => 'slb.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'slb-api.cn-qingdao-nebula.aliyuncs.com', - 'cn-heyuan' => 'slb.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'slb.cn-wulanchabu.aliyuncs.com', - ], - 'cs' => - [ - 'us-east-1' => 'cs.us-east-1.aliyuncs.com', - 'cn-hongkong' => 'cs.cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'cs.aliyuncs.com', - 'cn-shanghai' => 'cs.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'cs.aliyuncs.com', - 'us-west-1' => 'cs.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'cs.aliyuncs.com', - 'cn-hangzhou' => 'cs.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'cs.aliyuncs.com', - 'cn-shenzhen' => 'cs.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'cs.aliyuncs.com', - 'cn-beijing' => 'cs.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'cs.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'cs.aliyuncs.com', - 'ap-southeast-1' => 'cs.ap-southeast-1.aliyuncs.com', - 'cn-chengdu' => 'cs.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'cs.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'cs.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'cs.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'cs.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'cs.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'cs.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'cs.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'cs.eu-central-1.aliyuncs.com', - 'me-east-1' => 'cs.me-east-1.aliyuncs.com', - 'ap-south-1' => 'cs.ap-south-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'cs.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'cs.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'cs.cn-north-2-gov-1.aliyuncs.com', - ], - 'push' => - [ - 'us-east-1' => 'cloudpush.aliyuncs.com', - 'cn-hongkong' => 'cloudpush.aliyuncs.com', - 'cn-qingdao-cm9' => 'cloudpush.aliyuncs.com', - 'cn-shanghai' => 'cloudpush.aliyuncs.com', - 'cn-shenzhen-inner' => 'cloudpush.aliyuncs.com', - 'us-west-1' => 'cloudpush.aliyuncs.com', - 'cn-shanghai-inner' => 'cloudpush.aliyuncs.com', - 'cn-hangzhou' => 'cloudpush.aliyuncs.com', - 'cn-beijing-inner' => 'cloudpush.aliyuncs.com', - 'cn-shenzhen' => 'cloudpush.aliyuncs.com', - 'cn-qingdao' => 'cloudpush.aliyuncs.com', - 'cn-beijing' => 'cloudpush.aliyuncs.com', - 'cn-hangzhou-d' => 'cloudpush.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'cloudpush.aliyuncs.com', - 'ap-southeast-1' => 'cloudpush.aliyuncs.com', - ], - 'cos' => - [ - 'us-east-1' => 'cos.aliyuncs.com', - 'cn-hongkong' => 'cos.aliyuncs.com', - 'cn-qingdao-cm9' => 'cos.aliyuncs.com', - 'cn-shanghai' => 'cos.aliyuncs.com', - 'cn-shenzhen-inner' => 'cos.aliyuncs.com', - 'us-west-1' => 'cos.aliyuncs.com', - 'cn-shanghai-inner' => 'cos.aliyuncs.com', - 'cn-hangzhou' => 'cos.aliyuncs.com', - 'cn-beijing-inner' => 'cos.aliyuncs.com', - 'cn-shenzhen' => 'cos.aliyuncs.com', - 'cn-qingdao' => 'cos.aliyuncs.com', - 'cn-beijing' => 'cos.aliyuncs.com', - 'cn-hangzhou-d' => 'cos.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'cos.aliyuncs.com', - 'ap-southeast-1' => 'cos.aliyuncs.com', - ], - 'ess' => - [ - 'us-east-1' => 'ess.aliyuncs.com', - 'cn-hongkong' => 'ess.aliyuncs.com', - 'cn-qingdao-cm9' => 'ess.aliyuncs.com', - 'cn-shanghai' => 'ess.aliyuncs.com', - 'cn-shenzhen-inner' => 'ess.aliyuncs.com', - 'us-west-1' => 'ess.aliyuncs.com', - 'cn-shanghai-inner' => 'ess.aliyuncs.com', - 'cn-hangzhou' => 'ess.aliyuncs.com', - 'cn-beijing-inner' => 'ess.aliyuncs.com', - 'cn-shenzhen' => 'ess.aliyuncs.com', - 'cn-qingdao' => 'ess.aliyuncs.com', - 'cn-beijing' => 'ess.aliyuncs.com', - 'cn-hangzhou-d' => 'ess.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ess.aliyuncs.com', - 'ap-southeast-1' => 'ess.aliyuncs.com', - 'cn-zhangjiakou' => 'ess.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ess.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'ess.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'ess.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'ess.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'ess.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'ess.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'ess.eu-central-1.aliyuncs.com', - 'me-east-1' => 'ess.me-east-1.aliyuncs.com', - 'ap-south-1' => 'ess.ap-south-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'ess.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'ess.aliyuncs.com', - 'cn-north-2-gov-1' => 'ess.aliyuncs.com', - 'cn-chengdu' => 'ess.cn-chengdu.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'ess.aliyuncs.com', - 'cn-heyuan' => 'ess.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'ess.cn-wulanchabu.aliyuncs.com', - ], - 'ace-ops' => - [ - 'us-east-1' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'ace-ops.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ace-ops.cn-hangzhou.aliyuncs.com', - ], - 'billing' => - [ - 'us-east-1' => 'billing.aliyuncs.com', - 'cn-hongkong' => 'billing.aliyuncs.com', - 'cn-qingdao-cm9' => 'billing.aliyuncs.com', - 'cn-shanghai' => 'billing.aliyuncs.com', - 'cn-shenzhen-inner' => 'billing.aliyuncs.com', - 'us-west-1' => 'billing.aliyuncs.com', - 'cn-shanghai-inner' => 'billing.aliyuncs.com', - 'cn-hangzhou' => 'billing.aliyuncs.com', - 'cn-beijing-inner' => 'billing.aliyuncs.com', - 'cn-beijing' => 'billing.aliyuncs.com', - 'cn-hangzhou-d' => 'billing.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'billing.aliyuncs.com', - 'ap-southeast-1' => 'billing.aliyuncs.com', - ], - 'dqs' => - [ - 'us-east-1' => 'dqs.aliyuncs.com', - 'cn-hongkong' => 'dqs.aliyuncs.com', - 'cn-qingdao-cm9' => 'dqs.aliyuncs.com', - 'cn-shanghai' => 'dqs.aliyuncs.com', - 'cn-shenzhen-inner' => 'dqs.aliyuncs.com', - 'us-west-1' => 'dqs.aliyuncs.com', - 'cn-shanghai-inner' => 'dqs.aliyuncs.com', - 'cn-hangzhou' => 'dqs.aliyuncs.com', - 'cn-beijing-inner' => 'dqs.aliyuncs.com', - 'cn-shenzhen' => 'dqs.aliyuncs.com', - 'cn-qingdao' => 'dqs.aliyuncs.com', - 'cn-beijing' => 'dqs.aliyuncs.com', - 'cn-hangzhou-d' => 'dqs.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'dqs.aliyuncs.com', - 'ap-southeast-1' => 'dqs.aliyuncs.com', - ], - 'dds' => - [ - 'us-east-1' => 'mongodb.aliyuncs.com', - 'cn-hongkong' => 'mongodb.aliyuncs.com', - 'cn-qingdao-cm9' => 'mongodb.aliyuncs.com', - 'cn-shanghai' => 'mongodb.aliyuncs.com', - 'cn-shenzhen-inner' => 'mongodb.aliyuncs.com', - 'us-west-1' => 'mongodb.aliyuncs.com', - 'cn-shanghai-inner' => 'mongodb.aliyuncs.com', - 'cn-hangzhou' => 'mongodb.aliyuncs.com', - 'cn-beijing-inner' => 'mongodb.aliyuncs.com', - 'cn-shenzhen' => 'mongodb.aliyuncs.com', - 'cn-qingdao' => 'mongodb.aliyuncs.com', - 'cn-beijing' => 'mongodb.aliyuncs.com', - 'cn-hangzhou-d' => 'mongodb.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'mongodb.aliyuncs.com', - 'ap-southeast-1' => 'mongodb.aliyuncs.com', - 'cn-zhangjiakou' => 'mongodb.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'mongodb.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'mongodb.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'mongodb.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'mongodb.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'mongodb.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'mongodb.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'mongodb.eu-central-1.aliyuncs.com', - 'me-east-1' => 'mongodb.me-east-1.aliyuncs.com', - 'ap-south-1' => 'mongodb.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'mongodb.cn-chengdu.aliyuncs.com', - 'cn-hangzhou-finance' => 'mongodb.aliyuncs.com', - 'cn-shanghai-finance-1' => 'mongodb.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'mongodb.aliyuncs.com', - 'cn-north-2-gov-1' => 'mongodb.aliyuncs.com', - 'cn-heyuan' => 'mongodb.aliyuncs.com', - 'cn-wulanchabu' => 'mongodb.aliyuncs.com', - ], - 'emr' => - [ - 'us-east-1' => 'emr.us-east-1.aliyuncs.com', - 'cn-hongkong' => 'emr.cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'emr.aliyuncs.com', - 'cn-shanghai' => 'emr.aliyuncs.com', - 'cn-shenzhen-inner' => 'emr.aliyuncs.com', - 'us-west-1' => 'emr.aliyuncs.com', - 'cn-shanghai-inner' => 'emr.aliyuncs.com', - 'cn-hangzhou' => 'emr.aliyuncs.com', - 'cn-beijing-inner' => 'emr.aliyuncs.com', - 'cn-shenzhen' => 'emr.aliyuncs.com', - 'cn-qingdao' => 'emr.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'emr.aliyuncs.com', - 'cn-hangzhou-d' => 'emr.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'emr.aliyuncs.com', - 'ap-southeast-1' => 'emr.aliyuncs.com', - 'cn-zhangjiakou' => 'emr.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'emr.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'emr.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'emr.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'emr.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'emr.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'emr.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'emr.eu-central-1.aliyuncs.com', - 'me-east-1' => 'emr.me-east-1.aliyuncs.com', - 'ap-south-1' => 'emr.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'emr.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'emr.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'emr.aliyuncs.com', - ], - 'sms' => - [ - 'us-east-1' => 'sms.aliyuncs.com', - 'cn-hongkong' => 'sms.aliyuncs.com', - 'cn-qingdao-cm9' => 'sms.aliyuncs.com', - 'cn-shanghai' => 'sms.aliyuncs.com', - 'cn-shenzhen-inner' => 'sms.aliyuncs.com', - 'us-west-1' => 'sms.aliyuncs.com', - 'cn-shanghai-inner' => 'sms.aliyuncs.com', - 'cn-hangzhou' => 'sms.aliyuncs.com', - 'cn-beijing-inner' => 'sms.aliyuncs.com', - 'cn-shenzhen' => 'sms.aliyuncs.com', - 'cn-qingdao' => 'sms.aliyuncs.com', - 'cn-beijing' => 'sms.aliyuncs.com', - 'cn-hangzhou-d' => 'sms.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'sms.aliyuncs.com', - 'ap-southeast-1' => 'sms.aliyuncs.com', - ], - 'jaq' => - [ - 'us-east-1' => 'jaq.aliyuncs.com', - 'cn-hongkong' => 'jaq.aliyuncs.com', - 'cn-qingdao-cm9' => 'jaq.aliyuncs.com', - 'cn-shanghai' => 'jaq.aliyuncs.com', - 'cn-shenzhen-inner' => 'jaq.aliyuncs.com', - 'us-west-1' => 'jaq.aliyuncs.com', - 'cn-shanghai-inner' => 'jaq.aliyuncs.com', - 'cn-hangzhou' => 'jaq.aliyuncs.com', - 'cn-beijing-inner' => 'jaq.aliyuncs.com', - 'cn-shenzhen' => 'jaq.aliyuncs.com', - 'cn-qingdao' => 'jaq.aliyuncs.com', - 'cn-beijing' => 'jaq.aliyuncs.com', - 'cn-hangzhou-d' => 'jaq.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'jaq.aliyuncs.com', - 'ap-southeast-1' => 'jaq.aliyuncs.com', - ], - 'hpc' => - [ - 'us-east-1' => 'hpc.aliyuncs.com', - 'cn-hongkong' => 'hpc.aliyuncs.com', - 'cn-qingdao-cm9' => 'hpc.aliyuncs.com', - 'cn-shanghai' => 'hpc.aliyuncs.com', - 'cn-shenzhen-inner' => 'hpc.aliyuncs.com', - 'us-west-1' => 'hpc.aliyuncs.com', - 'cn-shanghai-inner' => 'hpc.aliyuncs.com', - 'cn-hangzhou' => 'hpc.aliyuncs.com', - 'cn-beijing-inner' => 'hpc.aliyuncs.com', - 'cn-shenzhen' => 'hpc.aliyuncs.com', - 'cn-qingdao' => 'hpc.aliyuncs.com', - 'cn-beijing' => 'hpc.aliyuncs.com', - 'cn-hangzhou-d' => 'hpc.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'hpc.aliyuncs.com', - 'ap-southeast-1' => 'hpc.aliyuncs.com', - ], - 'location' => - [ - 'us-east-1' => 'location.aliyuncs.com', - 'cn-hongkong' => 'location.aliyuncs.com', - 'cn-qingdao-cm9' => 'location.aliyuncs.com', - 'cn-shanghai' => 'location.aliyuncs.com', - 'cn-shenzhen-inner' => 'location.aliyuncs.com', - 'us-west-1' => 'location.aliyuncs.com', - 'cn-shanghai-inner' => 'location.aliyuncs.com', - 'cn-hangzhou' => 'location.aliyuncs.com', - 'cn-beijing-inner' => 'location.aliyuncs.com', - 'cn-shenzhen' => 'location.aliyuncs.com', - 'cn-qingdao' => 'location.aliyuncs.com', - 'cn-beijing' => 'location.aliyuncs.com', - 'cn-hangzhou-d' => 'location.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'location.aliyuncs.com', - 'ap-southeast-1' => 'location.aliyuncs.com', - ], - 'chargingservice' => - [ - 'us-east-1' => 'chargingservice.aliyuncs.com', - 'cn-hongkong' => 'chargingservice.aliyuncs.com', - 'cn-qingdao-cm9' => 'chargingservice.aliyuncs.com', - 'cn-shanghai' => 'chargingservice.aliyuncs.com', - 'cn-shenzhen-inner' => 'chargingservice.aliyuncs.com', - 'us-west-1' => 'chargingservice.aliyuncs.com', - 'cn-shanghai-inner' => 'chargingservice.aliyuncs.com', - 'cn-hangzhou' => 'chargingservice.aliyuncs.com', - 'cn-beijing-inner' => 'chargingservice.aliyuncs.com', - 'cn-beijing' => 'chargingservice.aliyuncs.com', - 'cn-hangzhou-d' => 'chargingservice.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'chargingservice.aliyuncs.com', - 'ap-southeast-1' => 'chargingservice.aliyuncs.com', - ], - 'msg' => - [ - 'us-east-1' => 'msg-inner.aliyuncs.com', - 'cn-hongkong' => 'msg-inner.aliyuncs.com', - 'cn-qingdao-cm9' => 'msg-inner.aliyuncs.com', - 'cn-shanghai' => 'msg-inner.aliyuncs.com', - 'cn-shenzhen-inner' => 'msg-inner.aliyuncs.com', - 'us-west-1' => 'msg-inner.aliyuncs.com', - 'cn-shanghai-inner' => 'msg-inner.aliyuncs.com', - 'cn-hangzhou' => 'msg-inner.aliyuncs.com', - 'cn-beijing-inner' => 'msg-inner.aliyuncs.com', - 'cn-beijing' => 'msg-inner.aliyuncs.com', - 'cn-hangzhou-d' => 'msg-inner.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'msg-inner.aliyuncs.com', - 'ap-southeast-1' => 'msg-inner.aliyuncs.com', - ], - 'commondriver' => - [ - 'us-east-1' => 'common.driver.aliyuncs.com', - 'cn-hongkong' => 'common.driver.aliyuncs.com', - 'cn-qingdao-cm9' => 'common.driver.aliyuncs.com', - 'cn-shanghai' => 'common.driver.aliyuncs.com', - 'cn-shenzhen-inner' => 'common.driver.aliyuncs.com', - 'us-west-1' => 'common.driver.aliyuncs.com', - 'cn-shanghai-inner' => 'common.driver.aliyuncs.com', - 'cn-hangzhou' => 'common.driver.aliyuncs.com', - 'cn-beijing-inner' => 'common.driver.aliyuncs.com', - 'cn-shenzhen' => 'common.driver.aliyuncs.com', - 'cn-qingdao' => 'common.driver.aliyuncs.com', - 'cn-beijing' => 'common.driver.aliyuncs.com', - 'cn-hangzhou-d' => 'common.driver.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'common.driver.aliyuncs.com', - 'ap-southeast-1' => 'common.driver.aliyuncs.com', - ], - 'r-kvstore' => - [ - 'us-east-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', - ], - 'bss' => - [ - 'us-east-1' => 'bss.aliyuncs.com', - 'cn-hongkong' => 'bss.aliyuncs.com', - 'cn-qingdao-cm9' => 'bss.aliyuncs.com', - 'cn-shanghai' => 'bss.aliyuncs.com', - 'cn-shenzhen-inner' => 'bss.aliyuncs.com', - 'us-west-1' => 'bss.aliyuncs.com', - 'cn-shanghai-inner' => 'bss.aliyuncs.com', - 'cn-hangzhou' => 'bss.aliyuncs.com', - 'cn-beijing-inner' => 'bss.aliyuncs.com', - 'cn-shenzhen' => 'bss.aliyuncs.com', - 'cn-qingdao' => 'bss.aliyuncs.com', - 'cn-beijing' => 'bss.aliyuncs.com', - 'cn-hangzhou-d' => 'bss.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'bss.aliyuncs.com', - 'ap-southeast-1' => 'bss.aliyuncs.com', - ], - 'workorder' => - [ - 'us-east-1' => 'workorder.aliyuncs.com', - 'cn-hongkong' => 'workorder.aliyuncs.com', - 'cn-qingdao-cm9' => 'workorder.aliyuncs.com', - 'cn-shanghai' => 'workorder.aliyuncs.com', - 'cn-shenzhen-inner' => 'workorder.aliyuncs.com', - 'us-west-1' => 'workorder.aliyuncs.com', - 'cn-shanghai-inner' => 'workorder.aliyuncs.com', - 'cn-hangzhou' => 'workorder.aliyuncs.com', - 'cn-beijing-inner' => 'workorder.aliyuncs.com', - 'cn-beijing' => 'workorder.aliyuncs.com', - 'cn-hangzhou-d' => 'workorder.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'workorder.aliyuncs.com', - 'ap-southeast-1' => 'workorder.aliyuncs.com', - ], - 'ocs' => - [ - 'us-east-1' => 'm-kvstore.aliyuncs.com', - 'cn-hongkong' => 'm-kvstore.aliyuncs.com', - 'cn-qingdao-cm9' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai' => 'm-kvstore.aliyuncs.com', - 'cn-shenzhen-inner' => 'm-kvstore.aliyuncs.com', - 'us-west-1' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai-inner' => 'm-kvstore.aliyuncs.com', - 'cn-hangzhou' => 'm-kvstore.aliyuncs.com', - 'cn-beijing-inner' => 'm-kvstore.aliyuncs.com', - 'cn-shenzhen' => 'm-kvstore.aliyuncs.com', - 'cn-qingdao' => 'm-kvstore.aliyuncs.com', - 'cn-beijing' => 'm-kvstore.aliyuncs.com', - 'cn-hangzhou-d' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com', - 'ap-southeast-1' => 'm-kvstore.aliyuncs.com', - ], - 'yundun' => - [ - 'us-east-1' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'yundun-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'yundun-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'yundun-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'yundun-cn-hangzhou.aliyuncs.com', - ], - 'ubsms-inner' => - [ - 'us-east-1' => 'ubsms-inner.aliyuncs.com', - 'cn-hongkong' => 'ubsms-inner.aliyuncs.com', - 'cn-qingdao-cm9' => 'ubsms-inner.aliyuncs.com', - 'cn-shanghai' => 'ubsms-inner.aliyuncs.com', - 'cn-shenzhen-inner' => 'ubsms-inner.aliyuncs.com', - 'us-west-1' => 'ubsms-inner.aliyuncs.com', - 'cn-shanghai-inner' => 'ubsms-inner.aliyuncs.com', - 'cn-hangzhou' => 'ubsms-inner.aliyuncs.com', - 'cn-beijing-inner' => 'ubsms-inner.aliyuncs.com', - 'cn-shenzhen' => 'ubsms-inner.aliyuncs.com', - 'cn-qingdao' => 'ubsms-inner.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ubsms-inner.aliyuncs.com', - 'cn-hangzhou-d' => 'ubsms-inner.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ubsms-inner.aliyuncs.com', - 'ap-southeast-1' => 'ubsms-inner.aliyuncs.com', - ], - 'dm' => - [ - 'us-east-1' => 'dm.aliyuncs.com', - 'cn-hongkong' => 'dm.aliyuncs.com', - 'cn-qingdao-cm9' => 'dm.aliyuncs.com', - 'cn-shanghai' => 'dm.aliyuncs.com', - 'cn-shenzhen-inner' => 'dm.aliyuncs.com', - 'us-west-1' => 'dm.aliyuncs.com', - 'cn-shanghai-inner' => 'dm.aliyuncs.com', - 'cn-hangzhou' => 'dm.aliyuncs.com', - 'cn-beijing-inner' => 'dm.aliyuncs.com', - 'cn-shenzhen' => 'dm.aliyuncs.com', - 'cn-qingdao' => 'dm.aliyuncs.com', - 'cn-beijing' => 'dm.aliyuncs.com', - 'cn-hangzhou-d' => 'dm.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'dm.aliyuncs.com', - 'ap-southeast-1' => 'dm.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'dm.ap-southeast-2.aliyuncs.com', - ], - 'green' => - [ - 'us-east-1' => 'green.aliyuncs.com', - 'cn-hongkong' => 'green.aliyuncs.com', - 'cn-qingdao-cm9' => 'green.aliyuncs.com', - 'cn-shanghai' => 'green.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'green.aliyuncs.com', - 'us-west-1' => 'green.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'green.aliyuncs.com', - 'cn-hangzhou' => 'green.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'green.aliyuncs.com', - 'cn-shenzhen' => 'green.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'green.aliyuncs.com', - 'cn-beijing' => 'green.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'green.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'green.aliyuncs.com', - 'ap-southeast-1' => 'green.ap-southeast-1.aliyuncs.com', - ], - 'risk' => - [ - 'us-east-1' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'risk-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'risk-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'risk-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'risk-cn-hangzhou.aliyuncs.com', - ], - 'oceanbase' => - [ - 'us-east-1' => 'oceanbase.aliyuncs.com', - 'cn-hongkong' => 'oceanbase.aliyuncs.com', - 'cn-qingdao-cm9' => 'oceanbase.aliyuncs.com', - 'cn-shanghai' => 'oceanbasepro-share.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'oceanbase.aliyuncs.com', - 'us-west-1' => 'oceanbase.aliyuncs.com', - 'cn-shanghai-inner' => 'oceanbase.aliyuncs.com', - 'cn-hangzhou' => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'oceanbase.aliyuncs.com', - 'cn-shenzhen' => 'oceanbase.aliyuncs.com', - 'cn-qingdao' => 'oceanbase.aliyuncs.com', - 'cn-beijing' => 'oceanbasepro-share.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'oceanbase.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'oceanbase.aliyuncs.com', - 'ap-southeast-1' => 'oceanbasepro-share.ap-southeast-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'oceanbasepro-share.cn-shanghai-finance-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com', - ], - 'msc' => - [ - 'us-east-1' => 'msc-inner.aliyuncs.com', - 'cn-hongkong' => 'msc-inner.aliyuncs.com', - 'cn-qingdao-cm9' => 'msc-inner.aliyuncs.com', - 'cn-shanghai' => 'msc-inner.aliyuncs.com', - 'cn-shenzhen-inner' => 'msc-inner.aliyuncs.com', - 'us-west-1' => 'msc-inner.aliyuncs.com', - 'cn-shanghai-inner' => 'msc-inner.aliyuncs.com', - 'cn-hangzhou' => 'msc-inner.aliyuncs.com', - 'cn-beijing-inner' => 'msc-inner.aliyuncs.com', - 'cn-beijing' => 'msc-inner.aliyuncs.com', - 'cn-hangzhou-d' => 'msc-inner.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'msc-inner.aliyuncs.com', - 'ap-southeast-1' => 'msc-inner.aliyuncs.com', - ], - 'yundunhsm' => - [ - 'us-east-1' => 'yundunhsm.aliyuncs.com', - 'cn-hongkong' => 'yundunhsm.aliyuncs.com', - 'cn-qingdao-cm9' => 'yundunhsm.aliyuncs.com', - 'cn-shanghai' => 'yundunhsm.aliyuncs.com', - 'cn-shenzhen-inner' => 'yundunhsm.aliyuncs.com', - 'us-west-1' => 'yundunhsm.aliyuncs.com', - 'cn-shanghai-inner' => 'yundunhsm.aliyuncs.com', - 'cn-hangzhou' => 'yundunhsm.aliyuncs.com', - 'cn-beijing-inner' => 'yundunhsm.aliyuncs.com', - 'cn-beijing' => 'yundunhsm.aliyuncs.com', - 'cn-hangzhou-d' => 'yundunhsm.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'yundunhsm.aliyuncs.com', - 'ap-southeast-1' => 'yundunhsm.aliyuncs.com', - ], - 'iot' => - [ - 'cn-hongkong' => 'iot.aliyuncs.com', - 'cn-qingdao-cm9' => 'iot.aliyuncs.com', - 'cn-shanghai' => 'iot.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'iot.aliyuncs.com', - 'us-west-1' => 'iot.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'iot.aliyuncs.com', - 'cn-hangzhou' => 'iot.aliyuncs.com', - 'cn-beijing-inner' => 'iot.aliyuncs.com', - 'cn-shenzhen' => 'iot.aliyuncs.com', - 'cn-qingdao' => 'iot.aliyuncs.com', - 'cn-beijing' => 'iot.aliyuncs.com', - 'cn-hangzhou-d' => 'iot.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'iot.aliyuncs.com', - 'ap-southeast-1' => 'iot.ap-southeast-1.aliyuncs.com', - 'ap-northeast-1' => 'iot.ap-northeast-1.aliyuncs.com', - 'us-east-1' => 'iot.us-east-1.aliyuncs.com', - 'eu-central-1' => 'iot.eu-central-1.aliyuncs.com', - ], - 'oms' => - [ - 'us-east-1' => 'oms.aliyuncs.com', - 'cn-hongkong' => 'oms.aliyuncs.com', - 'cn-qingdao-cm9' => 'oms.aliyuncs.com', - 'cn-shanghai' => 'oms.aliyuncs.com', - 'cn-shenzhen-inner' => 'oms.aliyuncs.com', - 'us-west-1' => 'oms.aliyuncs.com', - 'cn-shanghai-inner' => 'oms.aliyuncs.com', - 'cn-hangzhou' => 'oms.aliyuncs.com', - 'cn-beijing-inner' => 'oms.aliyuncs.com', - 'cn-shenzhen' => 'oms.aliyuncs.com', - 'cn-qingdao' => 'oms.aliyuncs.com', - 'cn-beijing' => 'oms.aliyuncs.com', - 'cn-hangzhou-d' => 'oms.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'oms.aliyuncs.com', - 'ap-southeast-1' => 'oms.aliyuncs.com', - ], - 'live' => - [ - 'us-east-1' => 'live.aliyuncs.com', - 'cn-hongkong' => 'live.aliyuncs.com', - 'cn-qingdao-cm9' => 'live.aliyuncs.com', - 'cn-shanghai' => 'live.aliyuncs.com', - 'cn-shenzhen-inner' => 'live.aliyuncs.com', - 'us-west-1' => 'live.aliyuncs.com', - 'cn-shanghai-inner' => 'live.aliyuncs.com', - 'cn-hangzhou' => 'live.aliyuncs.com', - 'cn-beijing-inner' => 'live.aliyuncs.com', - 'cn-shenzhen' => 'live.aliyuncs.com', - 'cn-qingdao' => 'live.aliyuncs.com', - 'cn-beijing' => 'live.aliyuncs.com', - 'cn-hangzhou-d' => 'live.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'live.aliyuncs.com', - 'ap-southeast-1' => 'live.aliyuncs.com', - 'ap-northeast-1' => 'live.aliyuncs.com', - 'eu-central-1' => 'live.aliyuncs.com', - 'ap-southeast-5' => 'live.aliyuncs.com', - 'ap-south-1' => 'live.aliyuncs.com', - ], - 'ubsms' => - [ - 'us-east-1' => 'ubsms.aliyuncs.com', - 'cn-hongkong' => 'ubsms.aliyuncs.com', - 'cn-qingdao-cm9' => 'ubsms.aliyuncs.com', - 'cn-shanghai' => 'ubsms.aliyuncs.com', - 'cn-shenzhen-inner' => 'ubsms.aliyuncs.com', - 'us-west-1' => 'ubsms.aliyuncs.com', - 'cn-shanghai-inner' => 'ubsms.aliyuncs.com', - 'cn-hangzhou' => 'ubsms.aliyuncs.com', - 'cn-beijing-inner' => 'ubsms.aliyuncs.com', - 'cn-shenzhen' => 'ubsms.aliyuncs.com', - 'cn-qingdao' => 'ubsms.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ubsms.aliyuncs.com', - 'cn-hangzhou-d' => 'ubsms.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ubsms.aliyuncs.com', - 'ap-southeast-1' => 'ubsms.aliyuncs.com', - ], - 'alert' => - [ - 'us-east-1' => 'alert.aliyuncs.com', - 'cn-hongkong' => 'alert.aliyuncs.com', - 'cn-qingdao-cm9' => 'alert.aliyuncs.com', - 'cn-shanghai' => 'alert.aliyuncs.com', - 'cn-shenzhen-inner' => 'alert.aliyuncs.com', - 'us-west-1' => 'alert.aliyuncs.com', - 'cn-shanghai-inner' => 'alert.aliyuncs.com', - 'cn-hangzhou' => 'alert.aliyuncs.com', - 'cn-beijing-inner' => 'alert.aliyuncs.com', - 'cn-shenzhen' => 'alert.aliyuncs.com', - 'cn-qingdao' => 'alert.aliyuncs.com', - 'cn-beijing' => 'alert.aliyuncs.com', - 'cn-hangzhou-d' => 'alert.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'alert.aliyuncs.com', - 'ap-southeast-1' => 'alert.aliyuncs.com', - ], - 'ace' => - [ - 'us-east-1' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'ace.cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'ace.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ace.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'ace.cn-hangzhou.aliyuncs.com', - ], - 'ams' => - [ - 'us-east-1' => 'ams.aliyuncs.com', - 'cn-hongkong' => 'ams.aliyuncs.com', - 'cn-qingdao-cm9' => 'ams.aliyuncs.com', - 'cn-shanghai' => 'ams.aliyuncs.com', - 'cn-shenzhen-inner' => 'ams.aliyuncs.com', - 'us-west-1' => 'ams.aliyuncs.com', - 'cn-shanghai-inner' => 'ams.aliyuncs.com', - 'cn-hangzhou' => 'ams.aliyuncs.com', - 'cn-beijing-inner' => 'ams.aliyuncs.com', - 'cn-beijing' => 'ams.aliyuncs.com', - 'cn-hangzhou-d' => 'ams.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ams.aliyuncs.com', - 'ap-southeast-1' => 'ams.aliyuncs.com', - ], - 'ros' => - [ - 'us-east-1' => 'ros.aliyuncs.com', - 'cn-hongkong' => 'ros.aliyuncs.com', - 'cn-qingdao-cm9' => 'ros.aliyuncs.com', - 'cn-shanghai' => 'ros.aliyuncs.com', - 'cn-shenzhen-inner' => 'ros.aliyuncs.com', - 'us-west-1' => 'ros.aliyuncs.com', - 'cn-shanghai-inner' => 'ros.aliyuncs.com', - 'cn-hangzhou' => 'ros.aliyuncs.com', - 'cn-beijing-inner' => 'ros.aliyuncs.com', - 'cn-shenzhen' => 'ros.aliyuncs.com', - 'cn-qingdao' => 'ros.aliyuncs.com', - 'cn-beijing' => 'ros.aliyuncs.com', - 'cn-hangzhou-d' => 'ros.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ros.aliyuncs.com', - 'ap-southeast-1' => 'ros.aliyuncs.com', - ], - 'pts' => - [ - 'us-east-1' => 'pts.aliyuncs.com', - 'cn-hongkong' => 'pts.aliyuncs.com', - 'cn-qingdao-cm9' => 'pts.aliyuncs.com', - 'cn-shanghai' => 'pts.aliyuncs.com', - 'cn-shenzhen-inner' => 'pts.aliyuncs.com', - 'us-west-1' => 'pts.aliyuncs.com', - 'cn-shanghai-inner' => 'pts.aliyuncs.com', - 'cn-hangzhou' => 'pts.aliyuncs.com', - 'cn-beijing-inner' => 'pts.aliyuncs.com', - 'cn-shenzhen' => 'pts.aliyuncs.com', - 'cn-qingdao' => 'pts.aliyuncs.com', - 'cn-beijing' => 'pts.aliyuncs.com', - 'cn-hangzhou-d' => 'pts.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'pts.aliyuncs.com', - 'ap-southeast-1' => 'pts.aliyuncs.com', - ], - 'qualitycheck' => - [ - 'us-east-1' => 'qualitycheck.aliyuncs.com', - 'cn-hongkong' => 'qualitycheck.aliyuncs.com', - 'cn-qingdao-cm9' => 'qualitycheck.aliyuncs.com', - 'cn-shanghai' => 'qualitycheck.aliyuncs.com', - 'cn-shenzhen-inner' => 'qualitycheck.aliyuncs.com', - 'us-west-1' => 'qualitycheck.aliyuncs.com', - 'cn-shanghai-inner' => 'qualitycheck.aliyuncs.com', - 'cn-hangzhou' => 'qualitycheck.aliyuncs.com', - 'cn-beijing-inner' => 'qualitycheck.aliyuncs.com', - 'cn-hangzhou-d' => 'qualitycheck.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'qualitycheck.aliyuncs.com', - 'ap-southeast-1' => 'qualitycheck.aliyuncs.com', - ], - 'm-kvstore' => - [ - 'us-east-1' => 'm-kvstore.aliyuncs.com', - 'cn-hongkong' => 'm-kvstore.aliyuncs.com', - 'cn-qingdao-cm9' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai' => 'm-kvstore.aliyuncs.com', - 'cn-shenzhen-inner' => 'm-kvstore.aliyuncs.com', - 'us-west-1' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai-inner' => 'm-kvstore.aliyuncs.com', - 'cn-hangzhou' => 'm-kvstore.aliyuncs.com', - 'cn-beijing-inner' => 'm-kvstore.aliyuncs.com', - 'cn-shenzhen' => 'm-kvstore.aliyuncs.com', - 'cn-qingdao' => 'm-kvstore.aliyuncs.com', - 'cn-beijing' => 'm-kvstore.aliyuncs.com', - 'cn-hangzhou-d' => 'm-kvstore.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com', - 'ap-southeast-1' => 'm-kvstore.aliyuncs.com', - ], - 'highddos' => - [ - 'us-east-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', - ], - 'cmssitemonitor' => - [ - 'us-east-1' => 'sitemonitor.aliyuncs.com', - 'cn-hongkong' => 'sitemonitor.aliyuncs.com', - 'cn-qingdao-cm9' => 'sitemonitor.aliyuncs.com', - 'cn-shanghai' => 'sitemonitor.aliyuncs.com', - 'cn-shenzhen-inner' => 'sitemonitor.aliyuncs.com', - 'us-west-1' => 'sitemonitor.aliyuncs.com', - 'cn-shanghai-inner' => 'sitemonitor.aliyuncs.com', - 'cn-hangzhou' => 'sitemonitor.aliyuncs.com', - 'cn-beijing-inner' => 'sitemonitor.aliyuncs.com', - 'cn-shenzhen' => 'sitemonitor.aliyuncs.com', - 'cn-qingdao' => 'sitemonitor.aliyuncs.com', - 'cn-beijing' => 'sitemonitor.aliyuncs.com', - 'cn-hangzhou-d' => 'sitemonitor.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'sitemonitor.aliyuncs.com', - 'ap-southeast-1' => 'sitemonitor.aliyuncs.com', - ], - 'batchcompute' => - [ - 'us-east-1' => 'batchCompute.us-east-1.aliyuncs.com', - 'cn-hongkong' => 'batchCompute.cn-hongkong.aliyuncs.com', - 'cn-shanghai' => 'batchCompute.cn-shanghai.aliyuncs.com', - 'us-west-1' => 'batchCompute.us-west-1.aliyuncs.com', - 'cn-hangzhou' => 'batchCompute.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'batchcompute.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'batchcompute.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'batchCompute.cn-beijing.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'batchCompute.cn-shanghai-et2-b01.aliyuncs.com', - 'ap-southeast-1' => 'batchCompute.ap-southeast-1.aliyuncs.com', - ], - 'cf' => - [ - 'us-east-1' => 'cf.aliyuncs.com', - 'cn-hongkong' => 'cf.aliyuncs.com', - 'cn-qingdao-cm9' => 'cf.aliyuncs.com', - 'cn-shanghai' => 'cf.aliyuncs.com', - 'cn-shenzhen-inner' => 'cf.aliyuncs.com', - 'us-west-1' => 'cf.aliyuncs.com', - 'cn-shanghai-inner' => 'cf.aliyuncs.com', - 'cn-hangzhou' => 'cf.aliyuncs.com', - 'cn-beijing-inner' => 'cf.aliyuncs.com', - 'cn-shenzhen' => 'cf.aliyuncs.com', - 'cn-qingdao' => 'cf.aliyuncs.com', - 'cn-beijing' => 'cf.aliyuncs.com', - 'cn-hangzhou-d' => 'cf.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'cf.aliyuncs.com', - 'ap-southeast-1' => 'cf.aliyuncs.com', - ], - 'drds' => - [ - 'us-east-1' => 'drds.aliyuncs.com', - 'cn-hongkong' => 'drds.aliyuncs.com', - 'cn-qingdao-cm9' => 'drds.aliyuncs.com', - 'cn-shanghai' => 'drds.aliyuncs.com', - 'cn-shenzhen-inner' => 'drds.aliyuncs.com', - 'us-west-1' => 'drds.aliyuncs.com', - 'cn-shanghai-inner' => 'drds.aliyuncs.com', - 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'drds.aliyuncs.com', - 'cn-shenzhen' => 'drds.aliyuncs.com', - 'cn-qingdao' => 'drds.aliyuncs.com', - 'cn-beijing' => 'drds.aliyuncs.com', - 'cn-hangzhou-d' => 'drds.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'drds.aliyuncs.com', - 'ap-southeast-1' => 'drds.aliyuncs.com', - ], - 'acs' => - [ - 'us-east-1' => 'acs.aliyun-inc.com', - 'cn-hongkong' => 'acs.aliyun-inc.com', - 'cn-shanghai' => 'acs.aliyun-inc.com', - 'us-west-1' => 'acs.aliyun-inc.com', - 'cn-hangzhou' => 'acs.aliyun-inc.com', - 'cn-shenzhen' => 'acs.aliyun-inc.com', - 'cn-qingdao' => 'acs.aliyun-inc.com', - 'cn-beijing' => 'acs.aliyun-inc.com', - 'cn-shanghai-et2-b01' => 'acs.aliyun-inc.com', - ], - 'httpdns' => - [ - 'us-east-1' => 'httpdns-api.aliyuncs.com', - 'cn-hongkong' => 'httpdns-api.aliyuncs.com', - 'cn-qingdao-cm9' => 'httpdns-api.aliyuncs.com', - 'cn-shanghai' => 'httpdns-api.aliyuncs.com', - 'cn-shenzhen-inner' => 'httpdns-api.aliyuncs.com', - 'us-west-1' => 'httpdns-api.aliyuncs.com', - 'cn-shanghai-inner' => 'httpdns-api.aliyuncs.com', - 'cn-hangzhou' => 'httpdns-api.aliyuncs.com', - 'cn-beijing-inner' => 'httpdns-api.aliyuncs.com', - 'cn-shenzhen' => 'httpdns-api.aliyuncs.com', - 'cn-qingdao' => 'httpdns-api.aliyuncs.com', - 'cn-beijing' => 'httpdns-api.aliyuncs.com', - 'cn-hangzhou-d' => 'httpdns-api.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'httpdns-api.aliyuncs.com', - 'ap-southeast-1' => 'httpdns-api.aliyuncs.com', - ], - 'location-inner' => - [ - 'us-east-1' => 'location-inner.aliyuncs.com', - 'cn-hongkong' => 'location-inner.aliyuncs.com', - 'cn-qingdao-cm9' => 'location-inner.aliyuncs.com', - 'cn-shanghai' => 'location-inner.aliyuncs.com', - 'cn-shenzhen-inner' => 'location-inner.aliyuncs.com', - 'us-west-1' => 'location-inner.aliyuncs.com', - 'cn-shanghai-inner' => 'location-inner.aliyuncs.com', - 'cn-hangzhou' => 'location-inner.aliyuncs.com', - 'cn-beijing-inner' => 'location-inner.aliyuncs.com', - 'cn-shenzhen' => 'location-inner.aliyuncs.com', - 'cn-qingdao' => 'location-inner.aliyuncs.com', - 'cn-beijing' => 'location-inner.aliyuncs.com', - 'cn-hangzhou-d' => 'location-inner.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'location-inner.aliyuncs.com', - 'ap-southeast-1' => 'location-inner.aliyuncs.com', - ], - 'aas' => - [ - 'us-east-1' => 'aas.aliyuncs.com', - 'cn-hongkong' => 'aas.aliyuncs.com', - 'cn-qingdao-cm9' => 'aas.aliyuncs.com', - 'cn-shanghai' => 'aas.aliyuncs.com', - 'cn-shenzhen-inner' => 'aas.aliyuncs.com', - 'us-west-1' => 'aas.aliyuncs.com', - 'cn-shanghai-inner' => 'aas.aliyuncs.com', - 'cn-hangzhou' => 'aas.aliyuncs.com', - 'cn-beijing-inner' => 'aas.aliyuncs.com', - 'cn-shenzhen' => 'aas.aliyuncs.com', - 'cn-qingdao' => 'aas.aliyuncs.com', - 'cn-beijing' => 'aas.aliyuncs.com', - 'cn-hangzhou-d' => 'aas.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'aas.aliyuncs.com', - 'ap-southeast-1' => 'aas.aliyuncs.com', - ], - 'sts' => - [ - 'cn-hangzhou' => 'sts.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'sts.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'sts.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'sts.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'sts.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'sts.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'sts.cn-huhehaote.aliyuncs.com', - 'cn-hongkong' => 'sts.cn-hongkong.aliyuncs.com', - 'cn-chengdu' => 'sts.cn-chengdu.aliyuncs.com', - 'ap-southeast-1' => 'sts.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'sts.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'sts.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'sts.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'sts.ap-northeast-1.aliyuncs.com', - 'ap-south-1' => 'sts.ap-south-1.aliyuncs.com', - 'us-west-1' => 'sts.us-west-1.aliyuncs.com', - 'us-east-1' => 'sts.us-east-1.aliyuncs.com', - 'eu-central-1' => 'sts.eu-central-1.aliyuncs.com', - 'me-east-1' => 'sts.me-east-1.aliyuncs.com', - 'eu-west-1' => 'sts.eu-west-1.aliyuncs.com', - ], - 'dts' => - [ - 'us-east-1' => 'dts.aliyuncs.com', - 'cn-hongkong' => 'dts.aliyuncs.com', - 'cn-qingdao-cm9' => 'dts.aliyuncs.com', - 'cn-shanghai' => 'dts.aliyuncs.com', - 'cn-shenzhen-inner' => 'dts.aliyuncs.com', - 'us-west-1' => 'dts.aliyuncs.com', - 'cn-shanghai-inner' => 'dts.aliyuncs.com', - 'cn-hangzhou' => 'dts.aliyuncs.com', - 'cn-beijing-inner' => 'dts.aliyuncs.com', - 'cn-shenzhen' => 'dts.aliyuncs.com', - 'cn-qingdao' => 'dts.aliyuncs.com', - 'cn-beijing' => 'dts.aliyuncs.com', - 'cn-hangzhou-d' => 'dts.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'dts.aliyuncs.com', - 'ap-southeast-1' => 'dts.aliyuncs.com', - 'cn-zhangjiakou' => 'dts.aliyuncs.com', - 'cn-huhehaote' => 'dts.aliyuncs.com', - 'ap-southeast-2' => 'dts.aliyuncs.com', - 'ap-southeast-3' => 'dts.aliyuncs.com', - 'ap-southeast-5' => 'dts.aliyuncs.com', - 'eu-west-1' => 'dts.aliyuncs.com', - 'eu-central-1' => 'dts.aliyuncs.com', - 'me-east-1' => 'dts.aliyuncs.com', - 'ap-south-1' => 'dts.aliyuncs.com', - 'cn-hangzhou-finance' => 'dts.aliyuncs.com', - 'cn-shanghai-finance-1' => 'dts.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'dts.aliyuncs.com', - 'cn-north-2-gov-1' => 'dts.aliyuncs.com', - 'cn-beijing-gov-1' => 'dts.aliyuncs.com', - ], - 'drc' => - [ - 'us-east-1' => 'drc.aliyuncs.com', - 'cn-hongkong' => 'drc.aliyuncs.com', - 'cn-qingdao-cm9' => 'drc.aliyuncs.com', - 'cn-shanghai' => 'drc.aliyuncs.com', - 'cn-shenzhen-inner' => 'drc.aliyuncs.com', - 'us-west-1' => 'drc.aliyuncs.com', - 'cn-shanghai-inner' => 'drc.aliyuncs.com', - 'cn-hangzhou' => 'drc.aliyuncs.com', - 'cn-beijing-inner' => 'drc.aliyuncs.com', - 'cn-shenzhen' => 'drc.aliyuncs.com', - 'cn-qingdao' => 'drc.aliyuncs.com', - 'cn-beijing' => 'drc.aliyuncs.com', - 'cn-hangzhou-d' => 'drc.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'drc.aliyuncs.com', - 'ap-southeast-1' => 'drc.aliyuncs.com', - ], - 'vpc-inner' => - [ - 'us-east-1' => 'vpc-inner.aliyuncs.com', - 'cn-hongkong' => 'vpc-inner.aliyuncs.com', - 'cn-shanghai' => 'vpc-inner.aliyuncs.com', - 'us-west-1' => 'vpc-inner.aliyuncs.com', - 'cn-hangzhou' => 'vpc-inner.aliyuncs.com', - 'cn-shenzhen' => 'vpc-inner.aliyuncs.com', - 'cn-qingdao' => 'vpc-inner.aliyuncs.com', - 'cn-beijing' => 'vpc-inner.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'vpc-inner.aliyuncs.com', - ], - 'crm' => - [ - 'us-east-1' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'crm-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'crm-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'crm-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'crm-cn-hangzhou.aliyuncs.com', - ], - 'domain' => - [ - 'us-east-1' => 'domain.aliyuncs.com', - 'cn-hongkong' => 'domain.aliyuncs.com', - 'cn-qingdao-cm9' => 'domain.aliyuncs.com', - 'cn-shanghai' => 'domain.aliyuncs.com', - 'cn-shenzhen-inner' => 'domain.aliyuncs.com', - 'us-west-1' => 'domain.aliyuncs.com', - 'cn-shanghai-inner' => 'domain.aliyuncs.com', - 'cn-hangzhou' => 'domain.aliyuncs.com', - 'cn-beijing-inner' => 'domain.aliyuncs.com', - 'cn-shenzhen' => 'domain.aliyuncs.com', - 'cn-qingdao' => 'domain.aliyuncs.com', - 'cn-beijing' => 'domain.aliyuncs.com', - 'cn-hangzhou-d' => 'domain.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'domain.aliyuncs.com', - 'ap-southeast-1' => 'domain.aliyuncs.com', - ], - 'ots' => - [ - 'us-east-1' => 'ots.us-east-1.aliyuncs.com', - 'cn-hongkong' => 'ots.cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'ots-pop.aliyuncs.com', - 'cn-shanghai' => 'ots.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'ots-pop.aliyuncs.com', - 'us-west-1' => 'ots.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'ots-pop.aliyuncs.com', - 'cn-hangzhou' => 'ots.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'ots-pop.aliyuncs.com', - 'cn-shenzhen' => 'ots.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'ots.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ots.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'ots-pop.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ots-pop.aliyuncs.com', - 'ap-southeast-1' => 'ots.ap-southeast-1.aliyuncs.com', - 'cn-zhangjiakou' => 'ots.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ots.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'ots.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'ots.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'ots.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'ots.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'ots.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'ots.eu-central-1.aliyuncs.com', - 'me-east-1' => 'ots.me-east-1.aliyuncs.com', - 'ap-south-1' => 'ots.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'ots.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'ots.cn-shanghai-finance-1.aliyuncs.com', - ], - 'oss' => - [ - 'us-east-1' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'oss-cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-qingdao-finance' => 'oss-cn-qdjbp-a.aliyuncs.com', - 'cn-beijing-gov-1' => 'oss-cn-haidian-a.aliyuncs.com', - 'cn-shanghai' => 'oss-cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'oss-cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'oss-us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-finance' => 'oss-cn-hzjbp-b-console.aliyuncs.com', - 'cn-hangzhou' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'oss-cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'oss-cn-qingdao.aliyuncs.com', - 'oss-cn-bjzwy' => 'oss-cn-bjzwy.aliyuncs.com', - 'cn-beijing' => 'oss-cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'oss-cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'oss-cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'oss-ap-southeast-1.aliyuncs.com', - 'cn-chengdu' => 'oss-cn-chengdu.aliyuncs.com', - 'ap-northeast-1' => 'oss-ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'oss-eu-west-1.aliyuncs.com', - 'me-east-1' => 'oss-me-east-1.aliyuncs.com', - 'ap-south-1' => 'oss-ap-south-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'oss-cn-shanghai-finance-1-internal.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'oss-cn-shenzhen-finance-1-internal.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'oss-cn-huhehaote-nebula-1.aliyuncs.com', - 'cn-zhengzhou-nebula-1' => 'oss-cn-zhengzhou-nebula-1.aliyuncs.com', - 'cn-heyuan' => 'oss-cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'oss-cn-wulanchabu.aliyuncs.com', - ], - 'ram' => - [ - 'global' => 'ram.aliyuncs.com', - 'us-east-1' => 'ram.aliyuncs.com', - 'cn-hongkong' => 'ram.aliyuncs.com', - 'cn-qingdao-cm9' => 'ram.aliyuncs.com', - 'cn-shanghai' => 'ram.aliyuncs.com', - 'cn-shenzhen-inner' => 'ram.aliyuncs.com', - 'us-west-1' => 'ram.aliyuncs.com', - 'cn-shanghai-inner' => 'ram.aliyuncs.com', - 'cn-hangzhou' => 'ram.aliyuncs.com', - 'cn-beijing-inner' => 'ram.aliyuncs.com', - 'cn-shenzhen' => 'ram.aliyuncs.com', - 'cn-qingdao' => 'ram.aliyuncs.com', - 'cn-beijing' => 'ram.aliyuncs.com', - 'cn-hangzhou-d' => 'ram.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ram.aliyuncs.com', - 'ap-southeast-1' => 'ram.aliyuncs.com', - ], - 'sales' => - [ - 'us-east-1' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'sales.cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'sales.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'sales.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'sales.cn-hangzhou.aliyuncs.com', - ], - 'ossadmin' => - [ - 'us-east-1' => 'oss-admin.aliyuncs.com', - 'cn-hongkong' => 'oss-admin.aliyuncs.com', - 'cn-qingdao-cm9' => 'oss-admin.aliyuncs.com', - 'cn-shanghai' => 'oss-admin.aliyuncs.com', - 'cn-shenzhen-inner' => 'oss-admin.aliyuncs.com', - 'us-west-1' => 'oss-admin.aliyuncs.com', - 'cn-shanghai-inner' => 'oss-admin.aliyuncs.com', - 'cn-hangzhou' => 'oss-admin.aliyuncs.com', - 'cn-beijing-inner' => 'oss-admin.aliyuncs.com', - 'cn-shenzhen' => 'oss-admin.aliyuncs.com', - 'cn-qingdao' => 'oss-admin.aliyuncs.com', - 'cn-beijing' => 'oss-admin.aliyuncs.com', - 'cn-hangzhou-d' => 'oss-admin.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'oss-admin.aliyuncs.com', - 'ap-southeast-1' => 'oss-admin.aliyuncs.com', - ], - 'alidns' => - [ - 'us-east-1' => 'alidns.aliyuncs.com', - 'cn-hongkong' => 'alidns.aliyuncs.com', - 'cn-qingdao-cm9' => 'alidns.aliyuncs.com', - 'cn-shanghai' => 'alidns.aliyuncs.com', - 'cn-shenzhen-inner' => 'alidns.aliyuncs.com', - 'us-west-1' => 'alidns.aliyuncs.com', - 'cn-shanghai-inner' => 'alidns.aliyuncs.com', - 'cn-hangzhou' => 'alidns.aliyuncs.com', - 'cn-beijing-inner' => 'alidns.aliyuncs.com', - 'cn-shenzhen' => 'alidns.aliyuncs.com', - 'cn-qingdao' => 'alidns.aliyuncs.com', - 'cn-beijing' => 'alidns.aliyuncs.com', - 'cn-hangzhou-d' => 'alidns.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'alidns.aliyuncs.com', - 'ap-southeast-1' => 'alidns.aliyuncs.com', - ], - 'ons' => - [ - 'us-east-1' => 'ons.us-east-1.aliyuncs.com', - 'cn-hongkong' => 'ons.cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'ons.aliyuncs.com', - 'cn-shanghai' => 'ons.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'ons.aliyuncs.com', - 'us-west-1' => 'ons.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'ons.aliyuncs.com', - 'cn-hangzhou' => 'ons.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'ons.aliyuncs.com', - 'cn-shenzhen' => 'ons.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'ons.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ons.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'ons.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'ons.aliyuncs.com', - 'ap-southeast-1' => 'ons.ap-southeast-1.aliyuncs.com', - 'cn-zhangjiakou' => 'ons.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ons.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'ons.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'ons.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'ons.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'ons.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'ons.eu-central-1.aliyuncs.com', - 'me-east-1' => 'ons.me-east-1.aliyuncs.com', - 'ap-south-1' => 'ons.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'ons.cn-chengdu.aliyuncs.com', - 'cn-hangzhou-finance' => 'ons.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'ons.cn-north-2-gov-1.aliyuncs.com', - 'ap-southeast-5' => 'ons.ap-southeast-5.aliyuncs.com', - ], - 'cdn' => - [ - 'global' => 'cdn.aliyuncs.com', - 'us-east-1' => 'cdn.aliyuncs.com', - 'cn-hongkong' => 'cdn.aliyuncs.com', - 'cn-qingdao-cm9' => 'cdn.aliyuncs.com', - 'cn-shanghai' => 'cdn.aliyuncs.com', - 'cn-shenzhen-inner' => 'cdn.aliyuncs.com', - 'us-west-1' => 'cdn.aliyuncs.com', - 'cn-shanghai-inner' => 'cdn.aliyuncs.com', - 'cn-hangzhou' => 'cdn.aliyuncs.com', - 'cn-beijing-inner' => 'cdn.aliyuncs.com', - 'cn-shenzhen' => 'cdn.aliyuncs.com', - 'cn-qingdao' => 'cdn.aliyuncs.com', - 'cn-beijing' => 'cdn.aliyuncs.com', - 'cn-hangzhou-d' => 'cdn.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'cdn.aliyuncs.com', - 'ap-southeast-1' => 'cdn.aliyuncs.com', - ], - 'yundunddos' => - [ - 'us-east-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-qingdao-cm9' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'us-west-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou-d' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', - ], - 'kvstore' => - [ - 'ap-northeast-1' => 'r-kvstore.ap-northeast-1.aliyuncs.com', - ], - 'cloudapi' => - [ - 'cn-hongkong' => 'apigateway.cn-hongkong.aliyuncs.com', - 'cn-shanghai' => 'apigateway.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'apigateway.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'apigateway.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'apigateway.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'apigateway.cn-beijing.aliyuncs.com', - 'ap-southeast-1' => 'apigateway.ap-southeast-1.aliyuncs.com', - ], - 'mts' => - [ - 'cn-hongkong' => 'mts.cn-hongkong.aliyuncs.com', - 'cn-qingdao-cm9' => 'mts.cn-qingdao.aliyuncs.com', - 'cn-shanghai' => 'mts.cn-shanghai.aliyuncs.com', - 'cn-shenzhen-inner' => 'mts.cn-shenzhen.aliyuncs.com', - 'us-west-1' => 'mts.us-west-1.aliyuncs.com', - 'cn-shanghai-inner' => 'mts.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'mts.cn-hangzhou.aliyuncs.com', - 'cn-beijing-inner' => 'mts.cn-beijing.aliyuncs.com', - 'cn-shenzhen' => 'mts.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'mts.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'mts.cn-beijing.aliyuncs.com', - 'cn-hangzhou-d' => 'mts.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'mts.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'mts.ap-southeast-1.aliyuncs.com', - 'cn-zhangjiakou' => 'mts.cn-zhangjiakou.aliyuncs.com', - 'ap-northeast-1' => 'mts.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'mts.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'mts.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'mts.ap-south-1.aliyuncs.com', - 'ap-southeast-5' => 'mts.ap-southeast-5.aliyuncs.com', - ], - 'saf' => - [ - 'cn-shanghai' => 'saf.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'saf.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'saf.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'saf.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'saf.cn-north-2-gov-1.aliyuncs.com', - 'cn-zhangjiakou' => 'saf.cn-zhangjiakou.aliyuncs.com', - ], - 'arms' => - [ - 'cn-shanghai' => 'arms.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'arms.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'arms.cn-shenzhen.aliyuncs.com', - 'cn-beijing' => 'arms.cn-beijing.aliyuncs.com', - 'cn-qingdao' => 'arms.cn-qingdao.aliyuncs.com', - 'cn-zhangjiakou' => 'arms.cn-zhangjiakou.aliyuncs.com', - 'cn-hongkong' => 'arms.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'arms.ap-southeast-1.aliyuncs.com', - 'ap-south-1' => 'arms.ap-south-1.aliyuncs.com', - ], - 'apigateway' => - [ - 'cn-shanghai' => 'apigateway.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'apigateway.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'apigateway.cn-shenzhen.aliyuncs.com', - 'cn-qingdao' => 'apigateway.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'apigateway.cn-beijing.aliyuncs.com', - 'ap-southeast-1' => 'apigateway.ap-southeast-1.aliyuncs.com', - 'cn-hongkong' => 'apigateway.cn-hongkong.aliyuncs.com', - 'ap-southeast-2' => 'apigateway.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'apigateway.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'apigateway.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'apigateway.ap-northeast-1.aliyuncs.com', - 'eu-central-1' => 'apigateway.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'apigateway.ap-south-1.aliyuncs.com', - 'eu-west-1' => 'apigateway.eu-west-1.aliyuncs.com', - 'me-east-1' => 'apigateway.me-east-1.aliyuncs.com', - 'us-east-1' => 'apigateway.us-east-1.aliyuncs.com', - 'us-west-1' => 'apigateway.us-west-1.aliyuncs.com', - 'cn-zhangjiakou' => 'apigateway.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'apigateway.cn-huhehaote.aliyuncs.com', - 'cn-chengdu' => 'apigateway.cn-chengdu.aliyuncs.com', - 'cn-north-2-gov-1' => 'apigateway.cn-north-2-gov-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'apigateway.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'apigateway.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'apigateway.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-shanghai-inner' => 'apigateway.cn-shanghai-inner.aliyuncs.com', - 'cn-heyuan' => 'apigateway.cn-heyuan.aliyuncs.com', - ], - 'vod' => - [ - 'cn-shanghai' => 'vod.cn-shanghai.aliyuncs.com', - 'cn-beijing' => 'vod.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'vod.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'vod.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'vod.ap-southeast-1.aliyuncs.com', - 'eu-central-1' => 'vod.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'vod.cn-zhangjiakou.aliyuncs.com', - 'cn-hongkong' => 'vod.cn-hongkong.aliyuncs.com', - 'ap-southeast-5' => 'vod.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'vod.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'vod.eu-west-1.aliyuncs.com', - 'us-west-1' => 'vod.us-west-1.aliyuncs.com', - 'ap-south-1' => 'vod.ap-south-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'vod.cn-north-2-gov-1.aliyuncs.com', - ], - 'afs' => - [ - 'cn-hangzhou' => 'afs.aliyuncs.com', - ], - 'oas' => - [ - 'cn-hangzhou' => 'cn-hangzhou.oas.aliyuncs.com', - 'cn-shenzhen' => 'cn-shenzhen.oas.aliyuncs.com', - 'cn-beijing' => 'cn-beijing.oas.aliyuncs.com', - ], - 'alikafka' => - [ - 'cn-qingdao' => 'alikafka.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'alikafka.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'alikafka.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'alikafka.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'alikafka.cn-shenzhen.aliyuncs.com', - 'cn-zhangjiakou' => 'alikafka.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'alikafka.cn-huhehaote.aliyuncs.com', - 'cn-hongkong' => 'alikafka.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'alikafka.ap-southeast-1.aliyuncs.com', - 'ap-southeast-5' => 'alikafka.ap-southeast-5.aliyuncs.com', - 'ap-south-1' => 'alikafka.ap-south-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'alikafka.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'alikafka.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'alikafka.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-chengdu' => 'alikafka.cn-chengdu.aliyuncs.com', - 'cn-north-2-gov-1' => 'alikafka.cn-north-2-gov-1.aliyuncs.com', - 'cn-heyuan' => 'alikafka.cn-heyuan.aliyuncs.com', - 'ap-southeast-3' => 'alikafka.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'alikafka.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'alikafka.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'alikafka.eu-central-1.aliyuncs.com', - ], - 'cbn' => - [ - 'cn-qingdao' => 'cbn.aliyuncs.com', - 'cn-beijing' => 'cbn.aliyuncs.com', - 'cn-zhangjiakou' => 'cbn.aliyuncs.com', - 'cn-huhehaote' => 'cbn.aliyuncs.com', - 'cn-hangzhou' => 'cbn.aliyuncs.com', - 'cn-shanghai' => 'cbn.aliyuncs.com', - 'cn-shenzhen' => 'cbn.aliyuncs.com', - 'cn-hongkong' => 'cbn.aliyuncs.com', - 'ap-southeast-1' => 'cbn.aliyuncs.com', - 'ap-southeast-2' => 'cbn.aliyuncs.com', - 'ap-southeast-3' => 'cbn.aliyuncs.com', - 'ap-southeast-5' => 'cbn.aliyuncs.com', - 'ap-northeast-1' => 'cbn.aliyuncs.com', - 'eu-west-1' => 'cbn.aliyuncs.com', - 'us-west-1' => 'cbn.aliyuncs.com', - 'us-east-1' => 'cbn.aliyuncs.com', - 'eu-central-1' => 'cbn.aliyuncs.com', - 'me-east-1' => 'cbn.aliyuncs.com', - 'ap-south-1' => 'cbn.aliyuncs.com', - 'cn-chengdu' => 'cbn.aliyuncs.com', - 'cn-shanghai-finance-1' => 'cbn.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'cbn.aliyuncs.com', - 'ap-northeast-2-pop' => 'cbn.aliyuncs.com', - 'cn-beijing-finance-pop' => 'cbn.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'cbn.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'cbn.aliyuncs.com', - 'cn-hangzhou-internal-test-3' => 'cbn.aliyuncs.com', - 'cn-wuhan' => 'cbn.aliyuncs.com', - 'cn-heyuan' => 'cbn.aliyuncs.com', - 'cn-wulanchabu' => 'cbn.aliyuncs.com', - 'cn-north-2-gov-1' => 'cbn.aliyuncs.com', - ], - 'onsvip' => - [ - 'cn-qingdao' => 'ons.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ons.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'ons.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ons.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'ons.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'ons.ap-southeast-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'ons.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance.aliyuncs.com', - ], - 'ddosbgp' => - [ - 'cn-qingdao' => 'ddosbgp.aliyuncs.com', - 'cn-beijing' => 'ddosbgp.aliyuncs.com', - 'cn-zhangjiakou' => 'ddosbgp.aliyuncs.com', - 'cn-huhehaote' => 'ddosbgp.aliyuncs.com', - 'cn-hangzhou' => 'ddosbgp.aliyuncs.com', - 'cn-shanghai' => 'ddosbgp.aliyuncs.com', - 'cn-shenzhen' => 'ddosbgp.aliyuncs.com', - 'cn-hongkong' => 'ddosbgp.cn-hongkong.aliyuncs.com', - 'us-west-1' => 'ddosbgp.us-west-1.aliyuncs.com', - 'ap-southeast-1' => 'ddosbgp.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'ddosbgp.us-east-1.aliyuncs.com', - 'cn-chengdu' => 'ddosbgp.aliyuncs.com', - 'cn-heyuan' => 'ddosbgp.aliyuncs.com', - 'cn-wulanchabu' => 'ddosbgp.aliyuncs.com', - 'ap-southeast-2' => 'ddosbgp.aliyuncs.com', - 'ap-southeast-3' => 'ddosbgp.aliyuncs.com', - 'ap-southeast-5' => 'ddosbgp.aliyuncs.com', - 'ap-northeast-1' => 'ddosbgp.aliyuncs.com', - 'eu-west-1' => 'ddosbgp.aliyuncs.com', - 'eu-central-1' => 'ddosbgp.aliyuncs.com', - 'me-east-1' => 'ddosbgp.aliyuncs.com', - 'ap-south-1' => 'ddosbgp.aliyuncs.com', - ], - 'ehs' => - [ - 'cn-qingdao' => 'ehpc.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ehpc.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'ehpc.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ehpc.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'ehpc.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ehpc.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'ehpc.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'ehpc.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'ehpc.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'ehpc.ap-southeast-2.aliyuncs.com', - 'eu-central-1' => 'ehpc.eu-central-1.aliyuncs.com', - 'ap-northeast-1' => 'ehpc.ap-northeast-1.aliyuncs.com', - ], - 'redisa' => - [ - 'cn-qingdao' => 'r-kvstore.aliyuncs.com', - 'cn-beijing' => 'r-kvstore.aliyuncs.com', - 'cn-zhangjiakou' => 'r-kvstore.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'r-kvstore.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'r-kvstore.aliyuncs.com', - 'cn-shanghai' => 'r-kvstore.aliyuncs.com', - 'cn-shenzhen' => 'r-kvstore.aliyuncs.com', - 'cn-hongkong' => 'r-kvstore.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'r-kvstore.aliyuncs.com', - 'ap-southeast-2' => 'r-kvstore.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'r-kvstore.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'r-kvstore.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'r-kvstore.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'r-kvstore.eu-west-1.aliyuncs.com', - 'us-west-1' => 'r-kvstore.aliyuncs.com', - 'us-east-1' => 'r-kvstore.aliyuncs.com', - 'eu-central-1' => 'r-kvstore.eu-central-1.aliyuncs.com', - 'me-east-1' => 'r-kvstore.me-east-1.aliyuncs.com', - 'ap-south-1' => 'r-kvstore.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'r-kvstore.cn-chengdu.aliyuncs.com', - 'cn-hangzhou-finance' => 'r-kvstore.aliyuncs.com', - 'cn-shanghai-finance-1' => 'r-kvstore.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'r-kvstore.aliyuncs.com', - 'cn-north-2-gov-1' => 'r-kvstore.aliyuncs.com', - 'cn-heyuan' => 'r-kvstore.aliyuncs.com', - 'cn-wulanchabu' => 'r-kvstore.aliyuncs.com', - ], - 'nas' => - [ - 'cn-qingdao' => 'nas.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'nas.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'nas.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'nas.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'nas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'nas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'nas.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'nas.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'nas.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'nas.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'nas.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'nas.ap-southeast-5.aliyuncs.com', - 'us-east-1' => 'nas.us-east-1.aliyuncs.com', - 'eu-central-1' => 'nas.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'nas.ap-south-1.aliyuncs.com', - 'ap-northeast-1' => 'nas.ap-northeast-1.aliyuncs.com', - 'us-west-1' => 'nas.us-west-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'nas.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'nas.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'nas.cn-north-2-gov-1.aliyuncs.com', - 'eu-west-1' => 'nas.eu-west-1.aliyuncs.com', - 'cn-chengdu' => 'nas.cn-chengdu.aliyuncs.com', - 'cn-heyuan' => 'nas.cn-heyuan.aliyuncs.com', - ], - 'hbase' => - [ - 'cn-qingdao' => 'hbase.aliyuncs.com', - 'cn-beijing' => 'hbase.aliyuncs.com', - 'cn-huhehaote' => 'hbase.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'hbase.aliyuncs.com', - 'cn-shanghai' => 'hbase.aliyuncs.com', - 'cn-shenzhen' => 'hbase.aliyuncs.com', - 'ap-southeast-1' => 'hbase.aliyuncs.com', - 'ap-southeast-2' => 'hbase.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'hbase.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'hbase.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'hbase.aliyuncs.com', - 'us-east-1' => 'hbase.aliyuncs.com', - 'eu-central-1' => 'hbase.eu-central-1.aliyuncs.com', - 'me-east-1' => 'hbase.me-east-1.aliyuncs.com', - 'ap-south-1' => 'hbase.ap-south-1.aliyuncs.com', - 'eu-west-1' => 'hbase.eu-west-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'hbase.aliyuncs.com', - 'cn-shanghai-finance-1' => 'hbase.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'hbase.aliyuncs.com', - 'cn-north-2-gov-1' => 'hbase.aliyuncs.com', - 'cn-zhangjiakou' => 'hbase.cn-zhangjiakou.aliyuncs.com', - 'cn-hongkong' => 'hbase.aliyuncs.com', - 'ap-northeast-1' => 'hbase.ap-northeast-1.aliyuncs.com', - ], - 'ddosbasic' => - [ - 'cn-qingdao' => 'antiddos.aliyuncs.com', - 'cn-beijing' => 'antiddos.aliyuncs.com', - 'cn-zhangjiakou' => 'antiddos-openapi.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'antiddos-openapi.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'antiddos.aliyuncs.com', - 'cn-shanghai' => 'antiddos.aliyuncs.com', - 'cn-shenzhen' => 'antiddos.aliyuncs.com', - 'cn-hongkong' => 'antiddos.aliyuncs.com', - 'ap-southeast-1' => 'antiddos.aliyuncs.com', - 'ap-southeast-2' => 'antiddos-openapi.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'antiddos-openapi.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'antiddos-openapi.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'antiddos-openapi.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'antiddos-openapi.eu-west-1.aliyuncs.com', - 'us-west-1' => 'antiddos.aliyuncs.com', - 'us-east-1' => 'antiddos.aliyuncs.com', - 'eu-central-1' => 'antiddos-openapi.eu-central-1.aliyuncs.com', - 'me-east-1' => 'antiddos-openapi.me-east-1.aliyuncs.com', - 'ap-south-1' => 'antiddos-openapi.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'antiddos-openapi.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'antiddos.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'antiddos.aliyuncs.com', - 'cn-north-2-gov-1' => 'antiddos.aliyuncs.com', - 'cn-fujian' => 'antiddos.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'antiddos.aliyuncs.com', - 'cn-heyuan' => 'antiddos-openapi.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'antiddos-openapi.cn-wulanchabu.aliyuncs.com', - ], - 'polardb' => - [ - 'cn-qingdao' => 'polardb.aliyuncs.com', - 'cn-beijing' => 'polardb.aliyuncs.com', - 'cn-huhehaote' => 'polardb.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'polardb.aliyuncs.com', - 'cn-shanghai' => 'polardb.aliyuncs.com', - 'cn-shenzhen' => 'polardb.aliyuncs.com', - 'cn-hongkong' => 'polardb.aliyuncs.com', - 'cn-zhangjiakou' => 'polardb.cn-zhangjiakou.aliyuncs.com', - 'ap-southeast-1' => 'polardb.aliyuncs.com', - 'ap-southeast-3' => 'polardb.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'polardb.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'polardb.aliyuncs.com', - 'cn-hangzhou-finance' => 'polardb.aliyuncs.com', - 'cn-shanghai-finance-1' => 'polardb.aliyuncs.com', - 'eu-central-1' => 'polardb.eu-central-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'polardb.aliyuncs.com', - 'ap-south-1' => 'polardb.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'polardb.cn-chengdu.aliyuncs.com', - 'ap-northeast-1' => 'polardb.ap-northeast-1.aliyuncs.com', - 'us-east-1' => 'polardb.aliyuncs.com', - ], - 'actiontrail' => - [ - 'cn-qingdao' => 'actiontrail.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'actiontrail.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'actiontrail.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'actiontrail.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'actiontrail.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'actiontrail.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'actiontrail.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'actiontrail.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'actiontrail.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'actiontrail.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'actiontrail.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'actiontrail.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'actiontrail.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'actiontrail.eu-west-1.aliyuncs.com', - 'us-west-1' => 'actiontrail.us-west-1.aliyuncs.com', - 'us-east-1' => 'actiontrail.us-east-1.aliyuncs.com', - 'eu-central-1' => 'actiontrail.eu-central-1.aliyuncs.com', - 'me-east-1' => 'actiontrail.me-east-1.aliyuncs.com', - 'ap-south-1' => 'actiontrail.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'actiontrail.cn-chengdu.aliyuncs.com', - 'cn-shanghai-finance-1' => 'actiontrail.cn-shanghai-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'actiontrail.cn-north-2-gov-1.aliyuncs.com', - 'cn-heyuan' => 'actiontrail.cn-heyuan.aliyuncs.com', - ], - 'codepipeline' => - [ - 'cn-beijing' => 'cds.cn-beijing.aliyuncs.com', - ], - 'hcs_sgw' => - [ - 'cn-beijing' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-zhangjiakou' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-shanghai' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-hongkong' => 'sgw.cn-shanghai.aliyuncs.com', - 'ap-southeast-1' => 'sgw.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'sgw.ap-southeast-2.aliyuncs.com', - 'eu-central-1' => 'sgw.eu-central-1.aliyuncs.com', - 'cn-qingdao' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-huhehaote' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-chengdu' => 'sgw.cn-shanghai.aliyuncs.com', - 'ap-southeast-5' => 'sgw.ap-southeast-5.aliyuncs.com', - 'ap-southeast-3' => 'sgw.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'sgw.ap-northeast-1.aliyuncs.com', - 'us-west-1' => 'sgw.us-west-1.aliyuncs.com', - 'us-east-1' => 'sgw.us-west-1.aliyuncs.com', - 'cn-heyuan' => 'sgw.cn-shanghai.aliyuncs.com', - 'cn-north-2-gov-1' => 'sgw.cn-north-2-gov-1.aliyuncs.com', - ], - 'openanalytics' => - [ - 'cn-beijing' => 'openanalytics.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'openanalytics.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'openanalytics.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'openanalytics.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'openanalytics.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'openanalytics.ap-southeast-1.aliyuncs.com', - 'ap-southeast-3' => 'openanalytics.ap-southeast-3.aliyuncs.com', - 'eu-west-1' => 'openanalytics.eu-west-1.aliyuncs.com', - 'cn-hongkong' => 'openanalytics.cn-hongkong.aliyuncs.com', - 'us-west-1' => 'openanalytics.us-west-1.aliyuncs.com', - 'ap-southeast-2' => 'datalakeanalytics.ap-southeast-2.aliyuncs.com', - 'ap-northeast-1' => 'datalakeanalytics.ap-northeast-1.aliyuncs.com', - 'us-east-1' => 'datalakeanalytics.us-east-1.aliyuncs.com', - 'eu-central-1' => 'datalakeanalytics.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'openanalytics.ap-south-1.aliyuncs.com', - 'ap-southeast-5' => 'openanalytics.ap-southeast-5.aliyuncs.com', - ], - 'clouddesktop' => - [ - 'cn-beijing' => 'clouddesktop.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'clouddesktop.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'clouddesktop.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'clouddesktop.cn-shenzhen.aliyuncs.com', - ], - 'ivision' => - [ - 'cn-beijing' => 'ivision.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'ivision.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ivision.cn-shanghai.aliyuncs.com', - ], - 'fc' => - [ - 'cn-beijing' => 'cn-beijing.fc.aliyuncs.com', - 'cn-hangzhou' => 'cn-hangzhou.fc.aliyuncs.com', - 'cn-shanghai' => 'cn-shanghai.fc.aliyuncs.com', - 'cn-shenzhen' => 'cn-shenzhen.fc.aliyuncs.com', - 'ap-southeast-2' => 'ap-southeast-2.fc.aliyuncs.com', - 'cn-huhehaote' => 'cn-huhehaote.fc.aliyuncs.com', - 'cn-qingdao' => 'cn-qingdao.fc.aliyuncs.com', - 'cn-chengdu' => 'cn-chengdu.fc.aliyuncs.com', - 'cn-zhangjiakou' => 'cn-zhangjiakou.fc.aliyuncs.com', - 'cn-hongkong' => 'cn-hongkong.fc.aliyuncs.com', - 'ap-southeast-1' => 'ap-southeast-1.fc.aliyuncs.com', - 'ap-southeast-3' => 'ap-southeast-3.fc.aliyuncs.com', - 'ap-southeast-5' => 'ap-southeast-5.fc.aliyuncs.com', - 'ap-northeast-1' => 'ap-northeast-1.fc.aliyuncs. com', - 'eu-west-1' => 'eu-west-1.fc.aliyuncs.com', - 'us-west-1' => 'us-west-1.fc.aliyuncs.com', - 'us-east-1' => 'us-east-1.fc.aliyuncs.com', - 'eu-central-1' => 'eu-central-1.fc.aliyuncs.com', - 'ap-south-1' => 'ap-south-1.fc.aliyuncs.com', - 'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com', - ], - 'hsm' => - [ - 'cn-beijing' => 'hsm.aliyuncs.com', - 'cn-hangzhou' => 'hsm.aliyuncs.com', - 'cn-shanghai' => 'hsm.aliyuncs.com', - 'cn-shenzhen' => 'hsm.aliyuncs.com', - 'cn-hongkong' => 'hsm.aliyuncs.com', - 'ap-southeast-1' => 'hsm.aliyuncs.com', - 'cn-shanghai-finance-1' => 'hsm.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'hsm.aliyuncs.com', - 'cn-hangzhou-finance' => 'hsm.aliyuncs.com', - 'cn-north-2-gov-1' => 'hsm.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'hsm.aliyuncs.com', - 'cn-heyuan' => 'hsm.aliyuncs.com', - 'ap-southeast-3' => 'hsm.aliyuncs.com', - ], - 'petadata' => - [ - 'cn-beijing' => 'petadata.aliyuncs.com', - 'cn-zhangjiakou' => 'petadata.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'petadata.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'petadata.aliyuncs.com', - 'cn-shanghai' => 'petadata.aliyuncs.com', - 'cn-shenzhen' => 'petadata.aliyuncs.com', - 'ap-southeast-1' => 'petadata.aliyuncs.com', - 'ap-southeast-2' => 'petadata.ap-southeast-2.aliyuncs.com', - 'ap-southeast-5' => 'petadata.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'petadata.aliyuncs.com', - 'us-east-1' => 'petadata.aliyuncs.com', - 'eu-central-1' => 'petadata.eu-central-1.aliyuncs.com', - 'me-east-1' => 'petadata.me-east-1.aliyuncs.com', - 'cn-hongkong' => 'petadata.aliyuncs.com', - 'cn-qingdao' => 'petadata.aliyuncs.com', - 'cn-shanghai-et2-b01' => 'petadata.aliyuncs.com', - 'cn-zhangjiakou-na62-a01' => 'petadata.aliyuncs.com', - ], - 'gpdb' => - [ - 'cn-beijing' => 'gpdb.aliyuncs.com', - 'cn-zhangjiakou' => 'gpdb.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'gpdb.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'gpdb.aliyuncs.com', - 'cn-shanghai' => 'gpdb.aliyuncs.com', - 'cn-shenzhen' => 'gpdb.aliyuncs.com', - 'ap-southeast-1' => 'gpdb.aliyuncs.com', - 'ap-southeast-2' => 'gpdb.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'gpdb.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'gpdb.ap-southeast-5.aliyuncs.com', - 'eu-west-1' => 'gpdb.eu-west-1.aliyuncs.com', - 'us-west-1' => 'gpdb.aliyuncs.com', - 'us-east-1' => 'gpdb.aliyuncs.com', - 'eu-central-1' => 'gpdb.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'gpdb.ap-south-1.aliyuncs.com', - 'ap-northeast-1' => 'gpdb.ap-northeast-1.aliyuncs.com', - 'cn-hongkong' => 'gpdb.aliyuncs.com', - 'cn-chengdu' => 'gpdb.cn-chengdu.aliyuncs.com', - 'cn-hangzhou-finance' => 'gpdb.aliyuncs.com', - 'cn-shanghai-finance-1' => 'gpdb.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'gpdb.aliyuncs.com', - ], - 'eci' => - [ - 'cn-beijing' => 'eci.aliyuncs.com', - 'cn-hangzhou' => 'eci.aliyuncs.com', - 'cn-shanghai' => 'eci.aliyuncs.com', - 'cn-shenzhen' => 'eci.aliyuncs.com', - 'ap-southeast-1' => 'eci.aliyuncs.com', - 'us-west-1' => 'eci.aliyuncs.com', - 'cn-hongkong' => 'eci.aliyuncs.com', - 'cn-zhangjiakou' => 'eci.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'eci.cn-huhehaote.aliyuncs.com', - 'ap-southeast-2' => 'eci.ap-southeast-2.aliyuncs.com', - 'eu-west-1' => 'eci.eu-west-1.aliyuncs.com', - 'us-east-1' => 'eci.aliyuncs.com', - 'eu-central-1' => 'eci.eu-central-1.aliyuncs.com', - 'cn-chengdu' => 'eci.cn-chengdu.aliyuncs.com', - 'ap-southeast-5' => 'eci.ap-southeast-5.aliyuncs.com', - 'ap-south-1' => 'eci.ap-south-1.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'eci.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'eci.aliyuncs.com', - 'cn-qingdao' => 'eci.aliyuncs.com', - 'cn-heyuan' => 'eci.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'eci.cn-wulanchabu.aliyuncs.com', - 'ap-southeast-3' => 'eci.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'eci.ap-northeast-1.aliyuncs.com', - ], - 'airec' => - [ - 'cn-beijing' => 'airec.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'airec.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'airec.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'airec.cn-shenzhen.aliyuncs.com', - ], - 'imm' => - [ - 'cn-beijing' => 'imm.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'imm.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'imm.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'imm.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'imm.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'imm.ap-southeast-1.aliyuncs.com', - ], - 'gameshield' => - [ - 'cn-zhangjiakou' => 'gameshield.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'gameshield.aliyuncs.com', - ], - 'ims' => - [ - 'cn-hangzhou' => 'ims.aliyuncs.com', - ], - 'cloudfirewall' => - [ - 'cn-hangzhou' => 'cloudfw.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'cloudfw.ap-southeast-1.aliyuncs.com', - ], - 'ens' => - [ - 'cn-hangzhou' => 'ens.aliyuncs.com', - 'ap-southeast-1' => 'ens.ap-southeast-1.aliyuncs.com', - 'cn-beijing' => 'ens.aliyuncs.com', - 'cn-chengdu' => 'ens.aliyuncs.com', - 'cn-zhangjiakou' => 'ens.aliyuncs.com', - 'cn-shanghai' => 'ens.aliyuncs.com', - 'cn-heyuan' => 'ens.aliyuncs.com', - 'cn-wulanchabu' => 'ens.aliyuncs.com', - ], - 'hitsdb' => - [ - 'cn-hangzhou' => 'hitsdb.aliyuncs.com', - 'cn-qingdao' => 'hitsdb.aliyuncs.com', - 'cn-beijing' => 'hitsdb.aliyuncs.com', - 'cn-zhangjiakou' => 'hitsdb.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'hitsdb.cn-huhehaote.aliyuncs.com', - 'cn-shanghai' => 'hitsdb.aliyuncs.com', - 'cn-shenzhen' => 'hitsdb.aliyuncs.com', - 'cn-hongkong' => 'hitsdb.aliyuncs.com', - 'ap-southeast-5' => 'hitsdb.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'hitsdb.aliyuncs.com', - 'us-east-1' => 'hitsdb.aliyuncs.com', - 'ap-southeast-1' => 'hitsdb.aliyuncs.com', - 'ap-southeast-2' => 'hitsdb.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'hitsdb.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'hitsdb.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'hitsdb.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'hitsdb.eu-central-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'hitsdb.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'hitsdb.aliyuncs.com', - ], - 'ddos' => - [ - 'cn-hangzhou' => 'ddospro.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'ddospro.cn-hongkong.aliyuncs.com', - ], - 'rtc' => - [ - 'cn-hangzhou' => 'rtc.aliyuncs.com', - ], - 'emas' => - [ - 'cn-hangzhou' => 'mhub.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mhub.cn-shanghai.aliyuncs.com', - ], - 'vipaegis' => - [ - 'cn-hangzhou' => 'aegis.cn-hangzhou.aliyuncs.com', - 'ap-southeast-3' => 'aegis.ap-southeast-3.aliyuncs.com', - ], - 'ddosrewards' => - [ - 'cn-hangzhou' => 'ddosright.cn-hangzhou.aliyuncs.com', - ], - 'cloudap' => - [ - 'cn-hangzhou' => 'cloudwf.aliyuncs.com', - ], - 'ensdisk' => - [ - 'cn-hangzhou' => 'ens.aliyuncs.com', - ], - 'bastionhost' => - [ - 'cn-hangzhou' => 'yundun-bastionhost.aliyuncs.com', - 'cn-qingdao' => 'yundun-bastionhost.aliyuncs.com', - 'cn-beijing' => 'yundun-bastionhost.aliyuncs.com', - 'cn-chengdu' => 'yundun-bastionhost.aliyuncs.com', - 'cn-zhangjiakou' => 'yundun-bastionhost.aliyuncs.com', - 'cn-huhehaote' => 'yundun-bastionhost.aliyuncs.com', - 'cn-shanghai' => 'yundun-bastionhost.aliyuncs.com', - 'cn-shenzhen' => 'yundun-bastionhost.aliyuncs.com', - 'cn-hongkong' => 'bastionhost.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'bastionhost.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'bastionhost.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'bastionhost.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'bastionhost.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'bastionhost.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'bastionhost.eu-west-1.aliyuncs.com', - 'us-west-1' => 'bastionhost.us-west-1.aliyuncs.com', - 'us-east-1' => 'bastionhost.us-east-1.aliyuncs.com', - 'eu-central-1' => 'bastionhost.eu-central-1.aliyuncs.com', - 'me-east-1' => 'yundun-bastionhost.aliyuncs.com', - 'ap-south-1' => 'bastionhost.ap-south-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'yundun-bastionhost.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'yundun-bastionhost.aliyuncs.com', - 'cn-north-2-gov-1' => 'yundun-bastionhost.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'yundun-bastionhost.aliyuncs.com', - 'cn-heyuan' => 'yundun-bastionhost.aliyuncs.com', - ], - 'pvtz' => - [ - 'cn-hangzhou' => 'pvtz.aliyuncs.com', - ], - 'ccs' => - [ - 'cn-hangzhou' => 'ccs.aliyuncs.com', - ], - 'yunmarket' => - [ - 'cn-hangzhou' => 'market.aliyuncs.com', - ], - 'cas' => - [ - 'cn-hangzhou' => 'cas.aliyuncs.com', - 'ap-southeast-2' => 'cas.ap-southeast-2.aliyuncs.com', - 'ap-northeast-1' => 'cas.ap-northeast-1.aliyuncs.com', - 'eu-central-1' => 'cas.eu-central-1.aliyuncs.com', - 'me-east-1' => 'cas.me-east-1.aliyuncs.com', - 'ap-south-1' => 'cas.ap-south-1.aliyuncs.com', - ], - 'ddoscoo' => - [ - 'cn-hangzhou' => 'ddoscoo.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'ddoscoo.ap-southeast-1.aliyuncs.com', - ], - 'waf' => - [ - 'cn-hangzhou' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'cn-qingdao' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-chengdu' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-zhangjiakou' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-heyuan' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-wulanchabu' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-3' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'ap-southeast-5' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'eu-west-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'us-west-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'eu-central-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'me-east-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'ap-south-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - 'cn-north-2-gov-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', - ], - 'xianzhi' => - [ - 'cn-hangzhou' => 'xianzhi.aliyuncs.com', - ], - 'sas' => - [ - 'cn-hangzhou' => 'tds.aliyuncs.com', - 'ap-southeast-3' => 'tds.ap-southeast-3.aliyuncs.com', - ], - 'cloudauth' => - [ - 'cn-hangzhou' => 'cloudauth.aliyuncs.com', - ], - 'dmsenterprise' => - [ - 'cn-hangzhou' => 'dms-enterprise.aliyuncs.com', - 'cn-shanghai' => 'dms-enterprise.aliyuncs.com', - 'cn-shenzhen' => 'dms-enterprise.aliyuncs.com', - 'cn-beijing' => 'dms-enterprise.aliyuncs.com', - 'cn-qingdao' => 'dms-enterprise.aliyuncs.com', - 'ap-northeast-1' => 'dms-enterprise.aliyuncs.com', - 'ap-southeast-1' => 'dms-enterprise.aliyuncs.com', - ], - 'baas' => - [ - 'cn-hangzhou' => 'baas.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'ap-northeast-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'cn-beijing' => 'baas.aliyuncs.com', - 'cn-shanghai' => 'baas.aliyuncs.com', - 'cn-shenzhen' => 'baas.aliyuncs.com', - 'cn-hongkong' => 'baas.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'baas.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'eu-central-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'cn-qingdao' => 'baas.aliyuncs.com', - 'cn-zhangjiakou' => 'baas.aliyuncs.com', - 'cn-huhehaote' => 'baas.aliyuncs.com', - 'eu-west-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'us-west-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'ap-south-1' => 'baas.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'baas.cn-north-2-gov-1.aliyuncs.com', - ], - 'alimt' => - [ - 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', - ], - 'dcdn' => - [ - 'cn-hangzhou' => 'dcdn.aliyuncs.com', - ], - 'hcs_mgw' => - [ - 'cn-hangzhou' => 'mgw.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mgw.cn-shanghai.aliyuncs.com', - 'ap-southeast-1' => 'mgw.ap-southeast-1.aliyuncs.com', - ], - 'linkedmall' => - [ - 'cn-hangzhou' => 'linkedmall.aliyuncs.com', - 'cn-shanghai' => 'linkedmall.aliyuncs.com', - ], - 'cps' => - [ - 'cn-hangzhou' => 'cloudpush.aliyuncs.com', - ], - 'scdn' => - [ - 'cn-hangzhou' => 'scdn.aliyuncs.com', - ], - 'trademark' => - [ - 'cn-hangzhou' => 'trademark.aliyuncs.com', - ], - 'elasticsearch' => - [ - 'cn-hangzhou' => 'elasticsearch.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'elasticsearch.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'elasticsearch.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'elasticsearch.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'elasticsearch.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'elasticsearch.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'elasticsearch.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'elasticsearch.ap-northeast-1.aliyuncs.com', - 'us-west-1' => 'elasticsearch.us-west-1.aliyuncs.com', - 'eu-central-1' => 'elasticsearch.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'elasticsearch.ap-south-1.aliyuncs.com', - 'cn-qingdao' => 'elasticsearch.cn-qingdao.aliyuncs.com', - 'ap-southeast-5' => 'elasticsearch.ap-southeast-5.aliyuncs.com', - 'cn-beijing' => 'elasticsearch.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'elasticsearch.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou-finance' => 'elasticsearch.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'elasticsearch.cn-shanghai-finance-1.aliyuncs.com', - 'us-east-1' => 'elasticsearch.us-east-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'elasticsearch.cn-north-2-gov-1.aliyuncs.com', - 'eu-west-1' => 'elasticsearch.eu-west-1.aliyuncs.com', - ], - 'luban' => - [ - 'cn-hangzhou' => 'luban.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'luban.cn-shanghai.aliyuncs.com', - ], - 'pcdn' => - [ - 'cn-hangzhou' => 'pcdn.aliyuncs.com', - ], - 'uis' => - [ - 'cn-hangzhou' => 'uis.cn-hangzhou.aliyuncs.com', - 'cn-north-2-gov-1' => 'uis.cn-hangzhou.aliyuncs.com', - ], - 'beebot' => - [ - 'cn-hangzhou' => 'chatbot.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'chatbot.cn-shanghai.aliyuncs.com', - 'cn-north-2-gov-1' => 'chatbot.cn-north-2-gov-1.aliyuncs.com', - ], - 'chatbot' => - [ - 'global' => 'chatbot.cn-shanghai.aliyuncs.com', - 'cn-shanghai' => 'chatbot.cn-shanghai.aliyuncs.com', - ], - 'alidnsgtm' => - [ - 'cn-hangzhou' => 'alidns.aliyuncs.com', - ], - 'sca' => - [ - 'cn-hangzhou' => 'qualitycheck.cn-hangzhou.aliyuncs.com', - ], - 'cccvn' => - [ - 'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com', - ], - 'cloudphoto' => - [ - 'cn-shanghai' => 'cloudphoto.cn-shanghai.aliyuncs.com', - ], - 'smartag' => - [ - 'cn-shanghai' => 'smartag.cn-shanghai.aliyuncs.com', - 'cn-hongkong' => 'smartag.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'smartag.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'smartag.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'smartag.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'smartag.ap-southeast-5.aliyuncs.com', - 'eu-central-1' => 'smartag.eu-central-1.aliyuncs.com', - 'ap-northeast-1' => 'smartag.ap-northeast-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'smartag.cn-shanghai-finance-1.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'smartag.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'smartag.aliyuncs.com', - 'eu-west-1' => 'smartag.eu-west-1.aliyuncs.com', - 'us-east-1' => 'smartag.us-east-1.aliyuncs.com', - ], - 'nlp' => - [ - 'cn-shanghai' => 'nlp.cn-shanghai.aliyuncs.com', - ], - 'nls-cloud-meta' => - [ - 'cn-shanghai' => 'nls-meta.cn-shanghai.aliyuncs.com', - ], - 'nls-filetrans' => - [ - 'cn-shanghai' => 'filetrans.cn-shanghai.aliyuncs.com', - ], - 'linkwan' => - [ - 'cn-shanghai' => 'linkwan.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'linkwan.cn-hangzhou.aliyuncs.com', - ], - 'hdm' => - [ - 'cn-shanghai' => 'hdm-api.aliyuncs.com', - ], - 'iovcc' => - [ - 'cn-shanghai' => 'iovcc.cn-shanghai.aliyuncs.com', - ], - 'ddosdip' => - [ - 'ap-southeast-1' => 'ddosdip.ap-southeast-1.aliyuncs.com', - ], - 'imagesearch' => - [ - 'ap-southeast-1' => 'imagesearch.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'imagesearch.ap-southeast-2.aliyuncs.com', - 'ap-northeast-1' => 'imagesearch.ap-northeast-1.aliyuncs.com', - 'cn-shanghai' => 'imagesearch.cn-shanghai.aliyuncs.com', - ], - 'alidfs' => - [ - 'cn-beijing' => 'dfs.cn-beijing.aliyuncs.com', - 'cn-shanghai' => 'dfs.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'dfs.cn-hangzhou.aliyuncs.com', - 'cn-zhangjiakou' => 'dfs.cn-zhangjiakou.aliyuncs.com', - ], - 'vs' => - [ - 'cn-hangzhou' => 'vs.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'vs.cn-shanghai.aliyuncs.com', - 'cn-qingdao' => 'vs.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'vs.cn-beijing.aliyuncs.com', - 'cn-shenzhen' => 'vs.cn-shenzhen.aliyuncs.com', - ], - 'foas' => - [ - 'cn-qingdao' => 'foas.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'foas.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'foas.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'foas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'foas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'foas.cn-shenzhen.aliyuncs.com', - 'ap-northeast-1' => 'foas.ap-northeast-1.aliyuncs.com', - 'ap-southeast-1' => 'foas.ap-southeast-1.aliyuncs.com', - 'ap-southeast-3' => 'foas.ap-southeast-3.aliyuncs.com', - 'cn-hangzhou-finance' => 'foas.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'foas.cn-shanghai-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'foas.cn-north-2-gov-1.aliyuncs.com', - 'cn-hongkong' => 'foas.cn-hongkong.aliyuncs.com', - 'eu-central-1' => 'foas.eu-central-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'foas.cn-shenzhen-finance-1.aliyuncs.com', - ], - 'iotid' => - [ - 'cn-hangzhou' => 'iotid.cn-hangzhou.aliyuncs.com', - ], - 'drdspost' => - [ - 'ap-southeast-1' => 'drds.ap-southeast-1.aliyuncs.com', - 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', - 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', - 'us-east-1' => 'drds.us-east-1.aliyuncs.com', - ], - 'drdspre' => - [ - 'cn-qingdao' => 'drds.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'drds.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'drds.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', - 'us-east-1' => 'drds.us-east-1.aliyuncs.com', - ], - 'acr' => - [ - 'cn-qingdao' => 'cr.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'cr.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'cr.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'cr.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'cr.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'cr.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'cr.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'cr.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'cr.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'cr.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'cr.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'cr.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'cr.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'cr.eu-west-1.aliyuncs.com', - 'us-west-1' => 'cr.us-west-1.aliyuncs.com', - 'us-east-1' => 'cr.us-east-1.aliyuncs.com', - 'eu-central-1' => 'cr.eu-central-1.aliyuncs.com', - 'me-east-1' => 'cr.me-east-1.aliyuncs.com', - 'ap-south-1' => 'cr.ap-south-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'cr.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'cr.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'cr.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'cr.cn-north-2-gov-1.aliyuncs.com', - 'cn-chengdu' => 'cr.cn-chengdu.aliyuncs.com', - ], - 'faas' => - [ - 'cn-beijing' => 'faas.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'faas.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'faas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'faas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'faas.cn-shenzhen.aliyuncs.com', - 'ap-southeast-5' => 'faas.ap-southeast-5.aliyuncs.com', - 'cn-shanghai-finance-1' => 'faas.cn-shanghai-finance-1.aliyuncs.com', - 'cn-chengdu' => 'faas.cn-chengdu.aliyuncs.com', - 'cn-heyuan' => 'faas.cn-heyuan.aliyuncs.com', - 'us-west-1' => 'faas.us-west-1.aliyuncs.com', - ], - 'idaas' => - [ - 'cn-hangzhou' => 'idaas.aliyuncs.com', - 'cn-qingdao' => 'idaas.aliyuncs.com', - 'cn-beijing' => 'idaas.aliyuncs.com', - 'cn-chengdu' => 'idaas.aliyuncs.com', - 'cn-zhangjiakou' => 'idaas.aliyuncs.com', - 'cn-huhehaote' => 'idaas.aliyuncs.com', - 'cn-shanghai' => 'idaas.aliyuncs.com', - 'cn-shenzhen' => 'idaas.aliyuncs.com', - 'cn-hongkong' => 'idaas.aliyuncs.com', - 'cn-shanghai-finance-1' => 'idaas.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'idaas.aliyuncs.com', - 'ap-southeast-1' => 'idaas.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'idaas.aliyuncs.com', - ], - 'privatelink' => - [ - 'cn-hangzhou' => 'privatelink-center.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'privatelink.cn-huhehaote.aliyuncs.com', - 'eu-west-1' => 'privatelink.eu-west-1.aliyuncs.com', - 'ap-southeast-2' => 'privatelink.ap-southeast-2.aliyuncs.com', - 'ap-southeast-5' => 'privatelink.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'privatelink.ap-northeast-1.aliyuncs.com', - 'ap-south-1' => 'privatelink.ap-south-1.aliyuncs.com', - 'cn-shenzhen' => 'privatelink.cn-shenzhen.aliyuncs.com', - 'eu-central-1' => 'privatelink.eu-central-1.aliyuncs.com', - 'cn-zhangjiakou' => 'privatelink.cn-zhangjiakou.aliyuncs.com', - 'ap-southeast-3' => 'privatelink.ap-southeast-3.aliyuncs.com', - 'cn-hangzhou-internal-test-1' => 'privatelink.aliyuncs.com', - 'cn-hangzhou-test-306' => 'privatelink-center.cn-hangzhou.aliyuncs.com', - 'cn-chengdu' => 'privatelink.cn-chengdu.aliyuncs.com', - 'ap-southeast-1' => 'privatelink.ap-southeast-1.aliyuncs.com', - ], - 'batchcomputenew' => - [ - 'cn-hongkong' => 'batchcompute.cn-hongkong.aliyuncs.com', - ], - 'vcs' => - [ - 'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'vcs.cn-shanghai.aliyuncs.com', - ], - 'vds' => - [ - 'cn-hangzhou' => 'vds.aliyuncs.com', - 'cn-shanghai' => 'vds.cn-shanghai.aliyuncs.com', - ], - 'vcsbasic' => - [ - 'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'vcs.cn-hangzhou.aliyuncs.com', - ], - 'hbr' => - [ - 'cn-qingdao' => 'hbr.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'hbr.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'hbr.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'hbr.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'hbr.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'hbr.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'hbr.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'hbr.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'hbr.ap-southeast-2.aliyuncs.com', - 'cn-hongkong' => 'hbr.cn-hongkong.aliyuncs.com', - 'ap-southeast-5' => 'hbr.ap-southeast-5.aliyuncs.com', - 'ap-southeast-3' => 'hbr.ap-southeast-3.aliyuncs.com', - 'us-west-1' => 'hbr.us-west-1.aliyuncs.com', - 'eu-central-1' => 'hbr.eu-central-1.aliyuncs.com', - 'ap-northeast-1' => 'hbr.ap-northeast-1.aliyuncs.com', - 'cn-chengdu' => 'hbr.cn-chengdu.aliyuncs.com', - 'us-east-1' => 'hbr.us-east-1.aliyuncs.com', - 'ap-south-1' => 'hbr.ap-south-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'hbr.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'hbr.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'hbr.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'hbr.cn-north-2-gov-1.aliyuncs.com', - ], - 'image' => - [ - 'cn-shanghai' => 'image.cn-shanghai.aliyuncs.com', - ], - 'webx' => - [ - 'cn-shenzhen' => 'webplus.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'webplus.cn-hangzhou.aliyuncs.com', - 'cn-zhangjiakou' => 'webplus.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'webplus.cn-hangzhou.aliyuncs.com', - 'cn-hangzhou' => 'webplus.cn-hangzhou.aliyuncs.com', - ], - 'sddp' => - [ - 'cn-zhangjiakou' => 'sddp.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'sddp.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'sddp.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'sddp.cn-north-2-gov-1.aliyuncs.com', - ], - 'oos' => - [ - 'cn-hangzhou' => 'oos.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'oos.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'oos.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'oos.cn-hongkong.aliyuncs.com', - 'us-east-1' => 'oos.us-east-1.aliyuncs.com', - 'cn-beijing' => 'oos.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'oos.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'oos.cn-huhehaote.aliyuncs.com', - 'eu-west-1' => 'oos.eu-west-1.aliyuncs.com', - 'eu-central-1' => 'oos.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'oos.ap-south-1.aliyuncs.com', - 'cn-chengdu' => 'oos.cn-chengdu.aliyuncs.com', - 'ap-southeast-1' => 'oos.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'oos.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'oos.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'oos.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'oos.ap-northeast-1.aliyuncs.com', - ], - 'fnf' => - [ - 'cn-hangzhou' => 'cn-hangzhou.fnf.aliyuncs.com', - 'cn-shanghai' => 'cn-shanghai.fnf.aliyuncs.com', - 'cn-shenzhen' => 'cn-shenzhen.fnf.aliyuncs.com', - 'cn-beijing' => 'cn-beijing.fnf.aliyuncs.com', - ], - 'smc' => - [ - 'cn-huhehaote' => 'smc.aliyuncs.com', - 'cn-hangzhou' => 'smc.aliyuncs.com', - 'cn-qingdao' => 'smc.aliyuncs.com', - 'cn-beijing' => 'smc.aliyuncs.com', - 'cn-zhangjiakou' => 'smc.aliyuncs.com', - 'cn-shanghai' => 'smc.aliyuncs.com', - 'cn-shenzhen' => 'smc.aliyuncs.com', - 'cn-hongkong' => 'smc.aliyuncs.com', - 'ap-southeast-1' => 'smc.aliyuncs.com', - 'ap-southeast-2' => 'smc.aliyuncs.com', - 'ap-southeast-3' => 'smc.aliyuncs.com', - 'ap-southeast-5' => 'smc.aliyuncs.com', - 'ap-northeast-1' => 'smc.aliyuncs.com', - 'eu-west-1' => 'smc.aliyuncs.com', - 'us-west-1' => 'smc.aliyuncs.com', - 'us-east-1' => 'smc.aliyuncs.com', - 'eu-central-1' => 'smc.aliyuncs.com', - 'me-east-1' => 'smc.aliyuncs.com', - 'ap-south-1' => 'smc.aliyuncs.com', - 'cn-chengdu' => 'smc.aliyuncs.com', - ], - 'foasconsole' => - [ - 'cn-beijing' => 'foasconsole.aliyuncs.com', - 'cn-zhangjiakou' => 'foasconsole.aliyuncs.com', - 'cn-hangzhou' => 'foasconsole.aliyuncs.com', - 'cn-shanghai' => 'foasconsole.aliyuncs.com', - 'cn-shenzhen' => 'foasconsole.aliyuncs.com', - 'cn-hongkong' => 'foasconsole.aliyuncs.com', - 'ap-southeast-1' => 'foasconsole.aliyuncs.com', - 'ap-southeast-3' => 'foasconsole.aliyuncs.com', - 'ap-northeast-1' => 'foasconsole.aliyuncs.com', - 'cn-hangzhou-finance' => 'foasconsole.aliyuncs.com', - 'cn-shanghai-finance-1' => 'foasconsole.aliyuncs.com', - 'cn-north-2-gov-1' => 'foasconsole.aliyuncs.com', - 'eu-central-1' => 'foasconsole.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'foasconsole.aliyuncs.com', - ], - 'serverless' => - [ - 'cn-beijing' => 'sae.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'sae.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'sae.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'sae.cn-shenzhen.aliyuncs.com', - 'us-west-1' => 'sae.us-west-1.aliyuncs.com', - ], - 'ivpd' => - [ - 'cn-huhehaote' => 'ivpd.cn-huhehaote.aliyuncs.com', - 'cn-shanghai' => 'ivpd.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'ivpd.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'ivpd.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'ivpd.cn-zhangjiakou.aliyuncs.com', - 'cn-hongkong' => 'ivpd.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'ivpd.ap-southeast-1.aliyuncs.com', - ], - 'hivisengine' => - [ - 'cn-huhehaote' => 'hivisengine.aliyuncs.com', - 'cn-shanghai' => 'hivisengine.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'hivisengine.cn-hangzhou.aliyuncs.com', - ], - 'hiknoengine' => - [ - 'cn-huhehaote' => 'hiknoengine.aliyuncs.com', - 'cn-shanghai' => 'hiknoengine.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'hiknoengine.cn-hangzhou.aliyuncs.com', - ], - 'clouddev' => - [ - 'cn-hangzhou' => 'mpserverless.aliyuncs.com', - 'cn-shanghai' => 'mpserverless.aliyuncs.com', - ], - 'premiumpics' => - [ - 'cn-hangzhou' => 'premiumpics.aliyuncs.com', - ], - 'composer' => - [ - 'cn-hangzhou' => 'composer.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'composer.cn-shanghai.aliyuncs.com', - 'us-east-1' => 'composer.us-east-1.aliyuncs.com', - 'ap-southeast-1' => 'composer.ap-southeast-1.aliyuncs.com', - ], - 'cloudesl' => - [ - 'cn-hangzhou' => 'cloudesl.cn-hangzhou.aliyuncs.com', - ], - 'amscloudapp' => - [ - 'cn-hangzhou' => 'mpca.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mpca.cn-shanghai.aliyuncs.com', - ], - 'mse' => - [ - 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', - 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', - 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', - 'us-east-1' => 'mse.us-east-1.aliyuncs.com', - 'ap-southeast-1' => 'mse.ap-southeast-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'msefinance-share.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'msefinance-share.cn-shenzhen-finance-1.aliyuncs.com', - ], - 'dg' => - [ - 'cn-hangzhou' => 'dg.cn-hangzhou.aliyuncs.com', - ], - 'graphcompute' => - [ - 'cn-shanghai' => 'gcs.cn-shanghai.aliyuncs.com', - ], - 'cds' => - [ - 'ap-southeast-1' => 'cassandra.aliyuncs.com', - 'cn-qingdao' => 'cassandra.aliyuncs.com', - 'cn-beijing' => 'cassandra.aliyuncs.com', - 'cn-hangzhou' => 'cassandra.aliyuncs.com', - 'cn-shanghai' => 'cassandra.aliyuncs.com', - 'cn-shenzhen' => 'cassandra.aliyuncs.com', - 'cn-hongkong' => 'cassandra.aliyuncs.com', - 'cn-chengdu' => 'cassandra.aliyuncs.com', - 'cn-zhangjiakou' => 'cassandra.aliyuncs.com', - 'cn-huhehaote' => 'cassandra.aliyuncs.com', - 'ap-southeast-2' => 'cassandra.aliyuncs.com', - 'ap-southeast-3' => 'cassandra.aliyuncs.com', - 'ap-southeast-5' => 'cassandra.aliyuncs.com', - 'eu-west-1' => 'cassandra.aliyuncs.com', - 'us-west-1' => 'cassandra.aliyuncs.com', - 'us-east-1' => 'cassandra.aliyuncs.com', - 'eu-central-1' => 'cassandra.aliyuncs.com', - 'me-east-1' => 'cassandra.aliyuncs.com', - 'ap-south-1' => 'cassandra.aliyuncs.com', - 'ap-northeast-1' => 'cassandra.aliyuncs.com', - ], - 'ads' => - [ - 'cn-qingdao' => 'adb.aliyuncs.com', - 'cn-beijing' => 'adb.aliyuncs.com', - 'cn-zhangjiakou' => 'adb.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'adb.aliyuncs.com', - 'cn-shanghai' => 'adb.aliyuncs.com', - 'cn-shenzhen' => 'adb.aliyuncs.com', - 'cn-hongkong' => 'adb.aliyuncs.com', - 'ap-southeast-1' => 'adb.aliyuncs.com', - 'ap-northeast-1' => 'adb.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'adb.eu-west-1.aliyuncs.com', - 'us-west-1' => 'adb.aliyuncs.com', - 'us-east-1' => 'adb.aliyuncs.com', - 'ap-southeast-2' => 'adb.ap-southeast-2.aliyuncs.com', - 'eu-central-1' => 'adb.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'adb.ap-south-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'adb.aliyuncs.com', - 'cn-chengdu' => 'adb.cn-chengdu.aliyuncs.com', - 'cn-huhehaote' => 'adb.cn-huhehaote.aliyuncs.com', - 'ap-southeast-3' => 'adb.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'adb.ap-southeast-5.aliyuncs.com', - 'cn-hangzhou-finance' => 'adb.aliyuncs.com', - 'cn-shanghai-finance-1' => 'adb.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'adb.aliyuncs.com', - ], - 'csb' => - [ - 'cn-beijing' => 'csb.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'csb.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'csb.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'csb.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'csb.cn-hongkong.aliyuncs.com', - 'cn-north-2-gov-1' => 'csb.cn-north-2-gov-1.aliyuncs.com', - ], - 'cityvisual' => - [ - 'cn-hangzhou' => 'cityvisual.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'cityvisual.cn-shanghai.aliyuncs.com', - ], - 'dbaudit' => - [ - 'cn-hangzhou' => 'yundun-dbaudit.aliyuncs.com', - 'cn-qingdao' => 'yundun-dbaudit.aliyuncs.com', - 'cn-beijing' => 'yundun-dbaudit.aliyuncs.com', - 'cn-zhangjiakou' => 'yundun-dbaudit.aliyuncs.com', - 'cn-huhehaote' => 'yundun-dbaudit.aliyuncs.com', - 'cn-shanghai' => 'yundun-dbaudit.aliyuncs.com', - 'cn-shenzhen' => 'yundun-dbaudit.aliyuncs.com', - 'cn-hongkong' => 'yundun-dbaudit.aliyuncs.com', - 'ap-southeast-1' => 'yundun-dbaudit.aliyuncs.com', - 'ap-southeast-2' => 'yundun-dbaudit.aliyuncs.com', - 'ap-southeast-3' => 'yundun-dbaudit.aliyuncs.com', - 'ap-southeast-5' => 'yundun-dbaudit.aliyuncs.com', - 'ap-northeast-1' => 'yundun-dbaudit.aliyuncs.com', - 'us-west-1' => 'yundun-dbaudit.aliyuncs.com', - 'us-east-1' => 'yundun-dbaudit.aliyuncs.com', - 'eu-central-1' => 'yundun-dbaudit.aliyuncs.com', - 'me-east-1' => 'yundun-dbaudit.aliyuncs.com', - 'ap-south-1' => 'yundun-dbaudit.aliyuncs.com', - 'cn-shanghai-finance-1' => 'yundun-dbaudit.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'yundun-dbaudit.aliyuncs.com', - 'cn-north-2-gov-1' => 'yundun-dbaudit.aliyuncs.com', - 'cn-chengdu' => 'yundun-dbaudit.aliyuncs.com', - 'eu-west-1' => 'yundun-dbaudit.aliyuncs.com', - 'cn-huhehaote-nebula-1' => 'yundun-dbaudit.aliyuncs.com', - ], - 'bssopenapi' => - [ - 'cn-hangzhou' => 'business.aliyuncs.com', - 'cn-shanghai' => 'business.aliyuncs.com', - 'ap-southeast-1' => 'business.ap-southeast-1.aliyuncs.com', - ], - 'indvi' => - [ - 'cn-hangzhou' => 'indvi.cn-hangzhou.aliyuncs.com', - ], - 'swcopyright' => - [ - 'cn-hangzhou' => 'copyright.aliyuncs.com', - ], - 'multimediaai' => - [ - 'cn-beijing' => 'multimediaai.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'multimediaai.cn-hangzhou.aliyuncs.com', - ], - 'rsimganalys' => - [ - 'cn-hangzhou' => 'rsimganalys.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'rsimganalys.cn-shanghai.aliyuncs.com', - ], - 'tdsr' => - [ - 'cn-hangzhou' => 'lyj.cn-hangzhou.aliyuncs.com', - ], - 'eslogstash' => - [ - 'cn-qingdao' => 'elasticsearch.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'elasticsearch.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'elasticsearch.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'elasticsearch.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'elasticsearch.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'elasticsearch.cn-shenzhen.aliyuncs.com', - ], - 'vcoverimage' => - [ - 'cn-beijing' => 'vcoverimage.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'vcoverimage.cn-hangzhou.aliyuncs.com', - ], - 'ahas' => - [ - 'cn-beijing' => 'ahas.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'ahas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ahas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'ahas.cn-shenzhen.aliyuncs.com', - 'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com', - ], - 'vstruction' => - [ - 'cn-beijing' => 'vstruction.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'vstruction.cn-hangzhou.aliyuncs.com', - ], - 'vcovergif' => - [ - 'cn-beijing' => 'vcovergif.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'vcovergif.cn-hangzhou.aliyuncs.com', - ], - 'aiccs' => - [ - 'cn-hangzhou' => 'aiccs.aliyuncs.com', - ], - 'nls' => - [ - 'cn-shanghai' => 'nls-slp.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'nls-slp.cn-shanghai.aliyuncs.com', - ], - 'antcloudauth' => - [ - 'cn-shanghai' => 'antcloudauth.cn-shanghai.aliyuncs.com', - ], - 'prepaid_ads' => - [ - 'cn-hangzhou-finance' => 'ads.cn-hangzhou-finance.aliyuncs.com', - 'cn-beijing' => 'ads.cn-beijing.aliyuncs.com', - 'cn-chengdu' => 'ads.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'ads.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'ads.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'ads.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'ads.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'ads.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'ads.ap-southeast-1.aliyuncs.com', - 'ap-southeast-3' => 'ads.ap-southeast-3.aliyuncs.com', - 'ap-northeast-1' => 'ads-share.ap-northeast-1.aliyuncs.com', - 'us-west-1' => 'ads.us-west-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'ads.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'ads.cn-north-2-gov-1.aliyuncs.com', - ], - 'hdr' => - [ - 'cn-qingdao' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-beijing' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-zhangjiakou' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-hangzhou' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-shanghai' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-hongkong' => 'hdr.cn-shanghai.aliyuncs.com', - 'cn-chengdu' => 'hdr.cn-shanghai.aliyuncs.com', - ], - 'cbs' => - [ - 'cn-qingdao' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-beijing' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-zhangjiakou' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-huhehaote' => 'dbs-api.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-hongkong' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'dbs-api.ap-southeast-1.aliyuncs.com', - 'ap-northeast-1' => 'dbs-api.ap-northeast-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shanghai-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'cn-chengdu' => 'dbs-api.cn-chengdu.aliyuncs.com', - 'ap-southeast-2' => 'dbs-api.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'dbs-api.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'dbs-api.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'us-east-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', - 'eu-central-1' => 'dbs-api.eu-central-1.aliyuncs.com', - ], - 'datag' => - [ - 'cn-beijing' => 'datag.cn-beijing.aliyuncs.com', - ], - 'retailir' => - [ - 'cn-hangzhou' => 'retailir.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'retailir.cn-shanghai.aliyuncs.com', - ], - 'mpaas' => - [ - 'cn-hangzhou' => 'mpaas.aliyuncs.com', - ], - 'iqa' => - [ - 'cn-hangzhou' => 'iqa.cn-hangzhou.aliyuncs.com', - ], - 'sofa' => - [ - 'cn-hangzhou' => 'sofa.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', - 'cn-hangzhou-finance' => 'sofa.cn-shanghai.aliyuncs.com', - ], - 'edas' => - [ - 'cn-hangzhou' => 'edas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'edas.cn-shanghai.aliyuncs.com', - 'cn-qingdao' => 'edas.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'edas.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'edas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'edas.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'edas.cn-shanghai.aliyuncs.com', - 'ap-southeast-1' => 'edas.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'edas.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'edas.ap-southeast-1.aliyuncs.com', - 'eu-central-1' => 'edas.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'edas.cn-shanghai.aliyuncs.com', - ], - 'gwsservice' => - [ - 'cn-shanghai' => 'gws.cn-shanghai.aliyuncs.com', - 'cn-beijing' => 'gws.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'gws.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'gws.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen' => 'gws.cn-shenzhen.aliyuncs.com', - 'cn-chengdu' => 'gws.cn-chengdu.aliyuncs.com', - 'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com', - 'cn-hongkong' => 'gws.cn-hongkong.aliyuncs.com', - 'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com', - 'us-west-1' => 'gws.us-west-1.aliyuncs.com', - 'us-east-1' => 'gws.us-east-1.aliyuncs.com', - 'eu-central-1' => 'gws.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'gws.ap-south-1.aliyuncs.com', - 'cn-qingdao' => 'gws.cn-qingdao.aliyuncs.com', - 'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com', - 'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'gws.eu-west-1.aliyuncs.com', - ], - 'gds' => - [ - 'ap-southeast-1' => 'gdb-api.aliyuncs.com', - 'cn-beijing' => 'gdb-api.aliyuncs.com', - 'cn-zhangjiakou' => 'gdb-api.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'gdb-api.aliyuncs.com', - 'cn-shanghai' => 'gdb-api.aliyuncs.com', - 'cn-shenzhen' => 'gdb-api.aliyuncs.com', - 'ap-southeast-5' => 'gdb-api.ap-southeast-5.aliyuncs.com', - 'cn-qingdao' => 'gdb-api.aliyuncs.com', - 'cn-chengdu' => 'gdb-api.cn-chengdu.aliyuncs.com', - 'cn-huhehaote' => 'gdb-api.cn-huhehaote.aliyuncs.com', - 'cn-hongkong' => 'gdb-api.aliyuncs.com', - 'ap-southeast-2' => 'gdb-api.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'gdb-api.ap-southeast-3.aliyuncs.com', - 'eu-west-1' => 'gdb-api.eu-west-1.aliyuncs.com', - 'us-west-1' => 'gdb-api.aliyuncs.com', - 'us-east-1' => 'gdb-api.aliyuncs.com', - 'eu-central-1' => 'gdb-api.eu-central-1.aliyuncs.com', - 'me-east-1' => 'gdb-api.me-east-1.aliyuncs.com', - 'ap-south-1' => 'gdb-api.ap-south-1.aliyuncs.com', - ], - 'eais' => - [ - 'cn-beijing' => 'eais.cn-beijing.aliyuncs.com', - 'cn-shenzhen' => 'eais.cn-shenzhen.aliyuncs.com', - ], - 'clickhouse' => - [ - 'cn-beijing' => 'clickhouse.aliyuncs.com', - 'cn-hangzhou' => 'clickhouse.aliyuncs.com', - 'cn-shanghai' => 'clickhouse.aliyuncs.com', - 'cn-shenzhen' => 'clickhouse.aliyuncs.com', - 'ap-southeast-1' => 'clickhouse.aliyuncs.com', - ], - 'msepost' => - [ - 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', - 'us-east-1' => 'mse.us-east-1.aliyuncs.com', - ], - 'visionai' => - [ - 'cn-beijing' => 'visionai.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'visionai.cn-hangzhou.aliyuncs.com', - ], - 'mseprepaid' => - [ - 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', - 'us-east-1' => 'mse.us-east-1.aliyuncs.com', - ], - 'adam' => - [ - 'cn-beijing' => 'adam.cn-beijing.aliyuncs.com', - ], - 'onsmqtt' => - [ - 'cn-beijing' => 'onsmqtt.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'onsmqtt.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'onsmqtt.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'onsmqtt.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'onsmqtt.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'onsmqtt.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'onsmqtt.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'onsmqtt.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'onsmqtt.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'onsmqtt.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'onsmqtt.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'onsmqtt.us-west-1.aliyuncs.com', - 'eu-central-1' => 'onsmqtt.eu-central-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'onsmqtt.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'onsmqtt.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-qingdao' => 'onsmqtt.cn-qingdao.aliyuncs.com', - 'ap-northeast-1' => 'onsmqtt.ap-northeast-1.aliyuncs.com', - 'cn-chengdu' => 'onsmqtt.cn-chengdu.aliyuncs.com', - 'us-east-1' => 'onsmqtt.us-east-1.aliyuncs.com', - 'ap-south-1' => 'onsmqtt.ap-south-1.aliyuncs.com', - ], - 'dypls' => - [ - 'cn-hangzhou' => 'dyplsapi.aliyuncs.com', - ], - 'resourcemanager' => - [ - 'cn-hangzhou' => 'resourcemanager.aliyuncs.com', - 'cn-shanghai' => 'resourcemanager.aliyuncs.com', - ], - 'nlpautoml' => - [ - 'cn-hangzhou' => 'nlp-automl.cn-hangzhou.aliyuncs.com', - ], - 'companyreg' => - [ - 'cn-hangzhou' => 'companyreg.aliyuncs.com', - ], - 'aliyuncvc' => - [ - 'cn-hangzhou' => 'aliyuncvc.cn-hangzhou.aliyuncs.com', - ], - 'alimtautoml' => - [ - 'cn-hangzhou' => 'alimtautoml.cn-hangzhou.aliyuncs.com', - ], - 'dbfs' => - [ - 'cn-hangzhou' => 'dbfs.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'dbfs.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'dbfs.cn-beijing.aliyuncs.com', - 'cn-chengdu' => 'dbfs.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'dbfs.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'dbfs.cn-huhehaote.aliyuncs.com', - 'cn-shanghai' => 'dbfs.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'dbfs.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'dbfs.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'dbfs.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'dbfs.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'dbfs.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'dbfs.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'dbfs.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'dbfs.eu-west-1.aliyuncs.com', - 'us-west-1' => 'dbfs.us-west-1.aliyuncs.com', - 'us-east-1' => 'dbfs.us-east-1.aliyuncs.com', - 'eu-central-1' => 'dbfs.eu-central-1.aliyuncs.com', - 'me-east-1' => 'dbfs.me-east-1.aliyuncs.com', - 'ap-south-1' => 'dbfs.ap-south-1.aliyuncs.com', - 'cn-heyuan' => 'dbfs.cn-heyuan.aliyuncs.com', - ], - 'addrp' => - [ - 'cn-hangzhou' => 'address-purification.cn-hangzhou.aliyuncs.com', - ], - 'gaplus' => - [ - 'cn-hangzhou' => 'ga.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'ga.cn-hangzhou.aliyuncs.com', - ], - 'datav' => - [ - 'cn-hangzhou' => 'datav.cn-hangzhou.aliyuncs.com', - ], - 'ocr' => - [ - 'cn-shanghai' => 'ocr.cn-shanghai.aliyuncs.com', - ], - 'objectdet' => - [ - 'cn-shanghai' => 'objectdet.cn-shanghai.aliyuncs.com', - ], - 'assetservice' => - [ - 'cn-shanghai' => 'assettech.cn-shanghai.aliyuncs.com', - ], - 'imageenhan' => - [ - 'cn-shanghai' => 'imageenhan.cn-shanghai.aliyuncs.com', - ], - 'imageaudit' => - [ - 'cn-shanghai' => 'imageaudit.cn-shanghai.aliyuncs.com', - ], - 'imagerecog' => - [ - 'cn-shanghai' => 'imagerecog.cn-shanghai.aliyuncs.com', - ], - 'imageseg' => - [ - 'cn-shanghai' => 'imageseg.cn-shanghai.aliyuncs.com', - ], - 'goodstech' => - [ - 'cn-shanghai' => 'goodstech.cn-shanghai.aliyuncs.com', - ], - 'facebody' => - [ - 'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com', - ], - 'voicebot' => - [ - 'cn-hangzhou' => 'voicenavigator.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com', - ], - 'dyiot' => - [ - 'cn-hangzhou' => 'dyiotapi.aliyuncs.com', - ], - 'drp' => - [ - 'cn-hangzhou' => 'drp-share.cn-hangzhou.aliyuncs.com', - ], - 'uem' => - [ - 'cn-hangzhou' => 'uem.aliyuncs.com', - ], - 'outboundbot' => - [ - 'cn-hangzhou' => 'outboundbot.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'outboundbot.cn-shanghai.aliyuncs.com', - ], - 'hcs_hgw' => - [ - 'cn-shanghai' => 'hgw.cn-shanghai.aliyuncs.com', - ], - 'acms' => - [ - 'cn-qingdao' => 'acm.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'acm.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'acm.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'acm.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'acm.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'acm.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'acm.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'acm.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'acm.ap-southeast-2.aliyuncs.com', - 'us-west-1' => 'acm.us-west-1.aliyuncs.com', - 'us-east-1' => 'acm.us-east-1.aliyuncs.com', - 'eu-central-1' => 'acm.eu-central-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'acm.cn-hangzhou-finance.aliyuncs.com', - 'cn-shanghai-finance-1' => 'acm.cn-shanghai-finance-1.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'acm.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'acm.cn-north-2-gov-1.aliyuncs.com', - 'ap-south-1' => 'acm.ap-south-1.aliyuncs.com', - ], - 'onsproxy' => - [ - 'cn-qingdao' => 'amqp-open.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'amqp-open.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'amqp-open.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'amqp-open.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'amqp-open.cn-shenzhen.aliyuncs.com', - 'cn-zhangjiakou' => 'amqp-open.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'amqp-open.cn-huhehaote.aliyuncs.com', - 'cn-hongkong' => 'amqp-open.cn-hongkong.aliyuncs.com', - ], - 'drdsro' => - [ - 'cn-qingdao' => 'drds.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'drds.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'drds.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'drds.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', - 'ap-southeast-1' => 'drds.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'drds.us-east-1.aliyuncs.com', - 'cn-shanghai-finance-1' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'drds.cn-hangzhou.aliyuncs.com', - 'cn-north-2-gov-1' => 'drds.cn-hangzhou.aliyuncs.com', - ], - 'opensearch' => - [ - 'cn-qingdao' => 'opensearch.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'opensearch.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'opensearch.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'opensearch.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'opensearch.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'opensearch.cn-shenzhen.aliyuncs.com', - 'ap-southeast-1' => 'opensearch.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'opensearch.cn-north-2-gov-1.aliyuncs.com', - ], - 'edasschedulerx' => - [ - 'cn-beijing' => 'schedulerx.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'schedulerx.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'schedulerx.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'schedulerx.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'schedulerx.cn-shenzhen.aliyuncs.com', - 'us-east-1' => 'schedulerx.us-east-1.aliyuncs.com', - ], - 'tag' => - [ - 'cn-beijing' => 'tag.aliyuncs.com', - 'cn-shenzhen' => 'tag.aliyuncs.com', - 'cn-qingdao' => 'tag.aliyuncs.com', - 'cn-chengdu' => 'tag.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'tag.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'tag.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'tag.aliyuncs.com', - 'cn-shanghai' => 'tag.aliyuncs.com', - 'cn-hongkong' => 'tag.aliyuncs.com', - 'ap-southeast-1' => 'tag.aliyuncs.com', - 'ap-southeast-2' => 'tag.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'tag.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'tag.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'tag.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'tag.eu-west-1.aliyuncs.com', - 'us-west-1' => 'tag.aliyuncs.com', - 'us-east-1' => 'tag.aliyuncs.com', - 'eu-central-1' => 'tag.eu-central-1.aliyuncs.com', - 'me-east-1' => 'tag.me-east-1.aliyuncs.com', - 'ap-south-1' => 'tag.ap-south-1.aliyuncs.com', - 'cn-hangzhou-finance' => 'tag.aliyuncs.com', - 'cn-shanghai-finance-1' => 'tag.aliyuncs.com', - 'cn-shenzhen-finance-1' => 'tag.cn-shenzhen-finance-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'tag.cn-north-2-gov-1.aliyuncs.com', - 'cn-fujian' => 'tag.aliyuncs.com', - 'cn-haidian-cm12-c01' => 'tag.aliyuncs.com', - 'cn-hangzhou-internal-test-2' => 'tag.aliyuncs.com', - 'cn-hangzhou-internal-test-3' => 'tag.aliyuncs.com', - 'cn-hangzhou-test-306' => 'tag.aliyuncs.com', - 'cn-shanghai-et15-b01' => 'tag.aliyuncs.com', - 'cn-zhangbei-na61-b01' => 'tag.aliyuncs.com', - 'eu-west-1-oxs' => 'tag.cn-shenzhen-cloudstone.aliyuncs.com', - 'cn-heyuan' => 'tag.cn-heyuan.aliyuncs.com', - 'cn-wulanchabu' => 'tag.cn-wulanchabu.aliyuncs.com', - ], - 'servicemesh' => - [ - 'cn-beijing' => 'servicemesh.aliyuncs.com', - 'cn-zhangjiakou' => 'servicemesh.aliyuncs.com', - 'cn-hangzhou' => 'servicemesh.aliyuncs.com', - 'cn-shanghai' => 'servicemesh.aliyuncs.com', - 'cn-shenzhen' => 'servicemesh.aliyuncs.com', - 'ap-southeast-1' => 'servicemesh.aliyuncs.com', - 'us-west-1' => 'servicemesh.aliyuncs.com', - ], - 'rdc' => - [ - 'cn-beijing' => 'rdc.cn-beijing.aliyuncs.com', - ], - 'sddprsrc' => - [ - 'cn-zhangjiakou' => 'sddp-rsrc.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'sddprsrc.cn-hangzhou.aliyuncs.com', - 'cn-north-2-gov-1' => 'sddprsrc.cn-north-2-gov-1.aliyuncs.com', - ], - 'polardbx' => - [ - 'cn-hangzhou' => 'polardbx.cn-hangzhou.aliyuncs.com', - 'cn-qingdao' => 'polardbx.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'polardbx.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'polardbx.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'polardbx.cn-huhehaote.aliyuncs.com', - 'cn-shanghai' => 'polardbx.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'polardbx.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'polardbx.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'polardbx.ap-southeast-1.aliyuncs.com', - ], - 'dytns' => - [ - 'cn-hangzhou' => 'dytnsapi.aliyuncs.com', - ], - 'datahub' => - [ - 'cn-hangzhou' => 'datahub.aliyuncs.com', - 'cn-shanghai' => 'datahub.aliyuncs.com', - ], - 'geoip' => - [ - 'cn-hangzhou' => 'geoip.aliyuncs.com', - ], - 'digitalstore' => - [ - 'cn-hangzhou' => 'digitalstore.cn-hangzhou.aliyuncs.com', - ], - 'quickbi' => - [ - 'cn-hangzhou' => 'quickbi-public-share.aliyuncs.com', - 'cn-hongkong' => 'quickbi-public-share.aliyuncs.com', - 'ap-southeast-1' => 'quickbi-public-share.aliyuncs.com', - 'ap-southeast-3' => 'quickbi-public-share.aliyuncs.com', - 'eu-central-1' => 'quickbi-public-share.aliyuncs.com', - ], - 'alimtdt' => - [ - 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', - ], - 'sofamq' => - [ - 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', - 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', - ], - 'sofaodp' => - [ - 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', - 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', - ], - 'dascharge' => - [ - 'cn-shanghai' => 'das.aliyuncs.com', - 'cn-hangzhou' => 'das.aliyuncs.com', - ], - 'sofadst' => - [ - 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', - ], - 'springcloud' => - [ - 'cn-qingdao' => 'ms.aliyuncs.com', - 'cn-beijing' => 'ms.aliyuncs.com', - 'cn-zhangjiakou' => 'ms.aliyuncs.com', - 'cn-hangzhou' => 'ms.aliyuncs.com', - 'cn-shanghai' => 'ms.aliyuncs.com', - 'cn-shenzhen' => 'ms.aliyuncs.com', - ], - 'edasmsc' => - [ - 'cn-qingdao' => 'edasmsc.aliyuncs.com', - 'cn-beijing' => 'edasmsc.aliyuncs.com', - 'cn-zhangjiakou' => 'edasmsc.aliyuncs.com', - 'cn-hangzhou' => 'edasmsc.aliyuncs.com', - 'cn-shanghai' => 'edasmsc.aliyuncs.com', - 'cn-shenzhen' => 'edasmsc.aliyuncs.com', - 'cn-hongkong' => 'edasmsc.aliyuncs.com', - ], - 'polarx' => - [ - 'cn-qingdao' => 'polardbx-share.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'polardbx-share.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'polardbx-share.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'polardbx-share.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'polardbx-share.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'polardbx-share.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'polardbx-share.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'polardbx-share.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'polardbx-share.ap-southeast-1.aliyuncs.com', - ], - 'cddc' => - [ - 'cn-qingdao' => 'cddc.aliyuncs.com', - 'cn-beijing' => 'cddc.aliyuncs.com', - 'cn-chengdu' => 'cddc.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'cddc.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'cddc.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'cddc.aliyuncs.com', - 'cn-shanghai' => 'cddc.aliyuncs.com', - 'cn-shenzhen' => 'cddc.aliyuncs.com', - 'cn-hongkong' => 'cddc.aliyuncs.com', - 'ap-southeast-1' => 'cddc.aliyuncs.com', - 'ap-southeast-2' => 'cddc.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'cddc.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'cddc.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'cddc.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'cddc.eu-west-1.aliyuncs.com', - 'us-west-1' => 'cddc.aliyuncs.com', - 'us-east-1' => 'cddc.aliyuncs.com', - 'eu-central-1' => 'cddc.eu-central-1.aliyuncs.com', - 'me-east-1' => 'cddc.me-east-1.aliyuncs.com', - 'ap-south-1' => 'cddc.ap-south-1.aliyuncs.com', - 'cn-heyuan' => 'cddc.aliyuncs.com', - ], - 'dlasparkpre' => - [ - 'cn-qingdao' => 'dlaspark.aliyuncs.com', - 'cn-beijing' => 'dlaspark.aliyuncs.com', - 'cn-zhangjiakou' => 'dlaspark.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'dlaspark.aliyuncs.com', - 'cn-shanghai' => 'dlaspark.aliyuncs.com', - 'cn-shenzhen' => 'dlaspark.aliyuncs.com', - ], - 'spark' => - [ - 'cn-qingdao' => 'ddi.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'ddi.aliyuncs.com', - 'cn-chengdu' => 'ddi.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'ddi.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'ddi.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'ddi.aliyuncs.com', - 'cn-shanghai' => 'ddi.aliyuncs.com', - 'cn-shenzhen' => 'ddi.aliyuncs.com', - 'cn-hongkong' => 'ddi.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'ddi.aliyuncs.com', - 'ap-southeast-2' => 'ddi.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'ddi.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'ddi.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'ddi.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'ddi.eu-west-1.aliyuncs.com', - 'us-west-1' => 'ddi.aliyuncs.com', - 'us-east-1' => 'ddi.us-east-1.aliyuncs.com', - 'eu-central-1' => 'ddi.eu-central-1.aliyuncs.com', - 'me-east-1' => 'ddi.me-east-1.aliyuncs.com', - 'ap-south-1' => 'ddi.ap-south-1.aliyuncs.com', - 'cn-heyuan' => 'ddi.aliyuncs.com', - ], - 'multisearch' => - [ - 'cn-beijing' => 'multisearch.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'multisearch.cn-hangzhou.aliyuncs.com', - ], - 'pai' => - [ - 'cn-beijing' => 'pai.cn-beijing.aliyuncs.com', - 'cn-hangzhou' => 'pai.cn-hangzhou.data.aliyun.com', - 'cn-shanghai' => 'pai.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'pai.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'pai.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'pai.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'pai.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'pai.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'pai.ap-southeast-5.aliyuncs.com', - 'us-west-1' => 'pai.us-west-1.aliyuncs.com', - 'us-east-1' => 'pai.us-east-1.aliyuncs.com', - 'eu-central-1' => 'pai.eu-central-1.aliyuncs.com', - 'me-east-1' => 'pai.me-east-1.aliyuncs.com', - 'ap-south-1' => 'pai.ap-south-1.aliyuncs.com', - ], - 'fcpre' => - [ - 'cn-chengdu' => 'cn-chengdu.fc.aliyuncs.com', - 'ap-southeast-3' => 'ap-southeast-3.fc.aliyuncs.com', - 'eu-west-1' => 'eu-west-1.fc.aliyuncs.com', - 'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com', - ], - 'ahaschaospre' => - [ - 'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com', - ], - 'sasti' => - [ - 'cn-zhangjiakou' => 'sasti.aliyuncs.com', - ], - 'config' => - [ - 'cn-hangzhou' => 'config.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'config.cn-shanghai.aliyuncs.com', - ], - 'ledgerdb' => - [ - 'cn-hangzhou' => 'ledgerdb.cn-hangzhou.aliyuncs.com', - ], - 'nlpvision' => - [ - 'cn-hangzhou' => 'nlp-vision.cn-hangzhou.aliyuncs.com', - ], - 'alimtld' => - [ - 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', - ], - 'databot' => - [ - 'cn-hangzhou' => 'databot.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'databot.cn-shanghai.aliyuncs.com', - ], - 'livinglink' => - [ - 'cn-hangzhou' => 'livinglink.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'livinglink.cn-shanghai.aliyuncs.com', - 'ap-southeast-1' => 'livinglink.ap-southeast-1.aliyuncs.com', - 'us-east-1' => 'livinglink.us-east-1.aliyuncs.com', - 'eu-central-1' => 'livinglink.eu-central-1.aliyuncs.com', - ], - 'eipanycast' => - [ - 'cn-hangzhou' => 'eipanycast.cn-hangzhou.aliyuncs.com', - ], - 'alimtct' => - [ - 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', - ], - 'videorecog' => - [ - 'cn-shanghai' => 'videorecog.cn-shanghai.aliyuncs.com', - ], - 'imageprocess' => - [ - 'cn-shanghai' => 'imageprocess.cn-shanghai.aliyuncs.com', - ], - 'sofats' => - [ - 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', - 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', - ], - 'videoenhan' => - [ - 'cn-shanghai' => 'videoenhan.cn-shanghai.aliyuncs.com', - ], - 'imgsearch' => - [ - 'cn-shanghai' => 'imgsearch.cn-shanghai.aliyuncs.com', - ], - 'videoseg' => - [ - 'cn-shanghai' => 'videoseg.cn-shanghai.aliyuncs.com', - ], - 'sofacaferms' => - [ - 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', - ], - 'retailadvqa' => - [ - 'cn-zhangjiakou' => 'quicka-public.cn-zhangjiakou.aliyuncs.com', - 'cn-shanghai' => 'quicka-public.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'quicka-public.cn-shenzhen.aliyuncs.com', - ], - 'linkanalytics' => - [ - 'cn-hangzhou' => 'linkanalytics.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'linkanalytics.cn-shanghai.aliyuncs.com', - ], - 'swas' => - [ - 'cn-qingdao' => 'swas.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'swas.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'swas.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'swas.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'swas.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'swas.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'swas.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'swas.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'swas.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'swas.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'swas.ap-southeast-3.aliyuncs.com', - 'ap-southeast-5' => 'swas.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'swas.ap-northeast-1.aliyuncs.com', - 'eu-west-1' => 'swas.eu-west-1.aliyuncs.com', - 'us-west-1' => 'swas.us-west-1.aliyuncs.com', - 'us-east-1' => 'swas.us-east-1.aliyuncs.com', - 'eu-central-1' => 'swas.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'swas.ap-south-1.aliyuncs.com', - ], - 'gws' => - [ - 'cn-qingdao' => 'gws.cn-qingdao.aliyuncs.com', - 'cn-beijing' => 'gws.cn-beijing.aliyuncs.com', - 'cn-chengdu' => 'gws.cn-chengdu.aliyuncs.com', - 'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com', - 'cn-huhehaote' => 'gws.cn-huhehaote.aliyuncs.com', - 'cn-hangzhou' => 'gws.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'gws.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'gws.cn-shenzhen.aliyuncs.com', - 'cn-hongkong' => 'gws.cn-hongkong.aliyuncs.com', - 'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com', - 'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com', - 'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com', - 'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com', - 'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com', - 'us-west-1' => 'gws.us-west-1.aliyuncs.com', - 'us-east-1' => 'gws.us-east-1.aliyuncs.com', - 'eu-central-1' => 'gws.eu-central-1.aliyuncs.com', - 'ap-south-1' => 'gws.ap-south-1.aliyuncs.com', - ], - 'dlacupost' => - [ - 'cn-beijing' => 'openanalytics.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'openanalytics.cn-hongkong.aliyuncs.com', - 'cn-hangzhou' => 'openanalytics.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'openanalytics.cn-shanghai.aliyuncs.com', - 'cn-shenzhen' => 'openanalytics.cn-beijing.aliyuncs.com', - 'cn-hongkong' => 'openanalytics.cn-hongkong.aliyuncs.com', - ], - 'ressharing' => - [ - 'cn-beijing' => 'resourcesharing.cn-beijing.aliyuncs.com', - 'cn-zhangjiakou' => 'resourcesharing.cn-zhangjiakou.aliyuncs.com', - 'cn-hangzhou' => 'resourcesharing.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'resourcesharing.cn-shanghai.aliyuncs.com', - 'ap-southeast-1' => 'resourcesharing.ap-southeast-1.aliyuncs.com', - 'cn-north-2-gov-1' => 'resourcesharing.cn-north-2-gov-1.aliyuncs.com', - ], - 'uisplus' => - [ - 'cn-huhehaote' => 'uisplus.cn-huhehaote.aliyuncs.com', - 'cn-shenzhen' => 'uisplus.cn-shenzhen.aliyuncs.com', - ], - 'idrsservice' => - [ - 'cn-hangzhou' => 'idrsservice.cn-hangzhou.aliyuncs.com', - ], - 'alinlp' => - [ - 'cn-hangzhou' => 'alinlp.cn-hangzhou.aliyuncs.com', - ], - 'miniapplcdp' => - [ - 'cn-hangzhou' => 'miniapplcdp.aliyuncs.com', - 'cn-shanghai' => 'miniapplcdp.aliyuncs.com', - ], - 'baasdis' => - [ - 'cn-hangzhou' => 'baasdis.cn-hangzhou.aliyuncs.com', - ], - 'baasodats' => - [ - 'cn-hangzhou' => 'baasodats.cn-hangzhou.aliyuncs.com', - ], - 'baascccs' => - [ - 'cn-hangzhou' => 'baascccs.cn-hangzhou.aliyuncs.com', - ], - 'pam' => - [ - 'cn-hangzhou' => 'pam.cn-hangzhou.aliyuncs.com', - ], - 'alimtec' => - [ - 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', - ], - 'cloudgame' => - [ - 'cn-hangzhou' => 'cloudgame.cn-hangzhou.aliyuncs.com', - 'cn-shanghai' => 'cloudgame.cn-shanghai.aliyuncs.com', - ], - 'csas' => - [ - 'cn-hangzhou' => 'csas.aliyuncs.com', - ], - 'facebodyqps' => - [ - 'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com', - ], - 'face' => - [ - 'cn-shanghai' => 'face.cn-shanghai.aliyuncs.com', - ], - 'cams' => - [ - 'ap-southeast-1' => 'cams.ap-southeast-1.aliyuncs.com', - ], - 'mpaasfin' => - [ - 'cn-hangzhou-finance' => 'mpaas.cn-hangzhou-finance.aliyuncs.com', - ], - 'mpaasgov' => - [ - 'cn-north-2-gov-1' => 'mpaas.cn-north-2-gov-1.aliyuncs.com', - ], - ], -]; diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php deleted file mode 100644 index bacaecc4..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php +++ /dev/null @@ -1,65 +0,0 @@ -accessKeyId = $accessKeyId; - $this->accessKeySecret = $accessKeySecret; - } - - /** - * @return string - */ - public function getAccessKeyId() - { - return $this->accessKeyId; - } - - /** - * @return string - */ - public function getAccessKeySecret() - { - return $this->accessKeySecret; - } - - /** - * @return string - */ - public function __toString() - { - return "$this->accessKeyId#$this->accessKeySecret"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php deleted file mode 100644 index db69a7c2..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php +++ /dev/null @@ -1,66 +0,0 @@ -bearerToken = $bearerToken; - } - - /** - * @return string - */ - public function getBearerToken() - { - return $this->bearerToken; - } - - /** - * @return string - */ - public function getAccessKeyId() - { - return ''; - } - - /** - * @return string - */ - public function getAccessKeySecret() - { - return ''; - } - - /** - * @return string - */ - public function __toString() - { - return "bearerToken#$this->bearerToken"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php b/niucloud/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php deleted file mode 100644 index 96ee50ab..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php +++ /dev/null @@ -1,18 +0,0 @@ -roleName = $roleName; - } - - /** - * @return string - */ - public function getRoleName() - { - return $this->roleName; - } - - /** - * @return string - */ - public function __toString() - { - return "roleName#$this->roleName"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php deleted file mode 100644 index 2ec7511c..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php +++ /dev/null @@ -1,181 +0,0 @@ -missingRequired('type', $clientName); - } - - return $this->createClientByType($clientName, $credential)->name($clientName); - } - - /** - * @param string $clientName - * @param array $credential - * - * @return AccessKeyClient|BearerTokenClient|EcsRamRoleClient|RamRoleArnClient|RsaKeyPairClient - * @throws ClientException - */ - private function createClientByType($clientName, array $credential) - { - switch (\strtolower($credential['type'])) { - case 'access_key': - return $this->accessKeyClient($clientName, $credential); - case 'ecs_ram_role': - return $this->ecsRamRoleClient($clientName, $credential); - case 'ram_role_arn': - return $this->ramRoleArnClient($clientName, $credential); - case 'bearer_token': - return $this->bearerTokenClient($clientName, $credential); - case 'rsa_key_pair': - return $this->rsaKeyPairClient($clientName, $credential); - default: - throw new ClientException( - "Invalid type '{$credential['type']}' for '$clientName' in {$this->filename}", - SDK::INVALID_CREDENTIAL - ); - } - } - - /** - * @param array $credential - * @param string $clientName - * - * @return AccessKeyClient - * @throws ClientException - */ - private function accessKeyClient($clientName, array $credential) - { - if (!isset($credential['access_key_id'])) { - $this->missingRequired('access_key_id', $clientName); - } - - if (!isset($credential['access_key_secret'])) { - $this->missingRequired('access_key_secret', $clientName); - } - - return new AccessKeyClient( - $credential['access_key_id'], - $credential['access_key_secret'] - ); - } - - /** - * @param string $clientName - * @param array $credential - * - * @return EcsRamRoleClient - * @throws ClientException - */ - private function ecsRamRoleClient($clientName, array $credential) - { - if (!isset($credential['role_name'])) { - $this->missingRequired('role_name', $clientName); - } - - return new EcsRamRoleClient($credential['role_name']); - } - - /** - * @param string $clientName - * @param array $credential - * - * @return RamRoleArnClient - * @throws ClientException - */ - private function ramRoleArnClient($clientName, array $credential) - { - if (!isset($credential['access_key_id'])) { - $this->missingRequired('access_key_id', $clientName); - } - - if (!isset($credential['access_key_secret'])) { - $this->missingRequired('access_key_secret', $clientName); - } - - if (!isset($credential['role_arn'])) { - $this->missingRequired('role_arn', $clientName); - } - - if (!isset($credential['role_session_name'])) { - $this->missingRequired('role_session_name', $clientName); - } - - return new RamRoleArnClient( - $credential['access_key_id'], - $credential['access_key_secret'], - $credential['role_arn'], - $credential['role_session_name'] - ); - } - - /** - * @param string $clientName - * @param array $credential - * - * @return BearerTokenClient - * @throws ClientException - */ - private function bearerTokenClient($clientName, array $credential) - { - if (!isset($credential['bearer_token'])) { - $this->missingRequired('bearer_token', $clientName); - } - - return new BearerTokenClient($credential['bearer_token']); - } - - /** - * @param array $credential - * @param string $clientName - * - * @return RsaKeyPairClient - * @throws ClientException - */ - private function rsaKeyPairClient($clientName, array $credential) - { - if (!isset($credential['public_key_id'])) { - $this->missingRequired('public_key_id', $clientName); - } - - if (!isset($credential['private_key_file'])) { - $this->missingRequired('private_key_file', $clientName); - } - - return new RsaKeyPairClient( - $credential['public_key_id'], - $credential['private_key_file'] - ); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php deleted file mode 100644 index 94ec7fbd..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php +++ /dev/null @@ -1,209 +0,0 @@ -filename = $filename ?: $this->getDefaultFile(); - } - - /** - * Get the default credential file. - * - * @return string - */ - public function getDefaultFile() - { - return self::getHomeDirectory() . DIRECTORY_SEPARATOR . '.alibabacloud' . DIRECTORY_SEPARATOR . 'credentials'; - } - - /** - * Gets the environment's HOME directory. - * - * @return null|string - */ - private static function getHomeDirectory() - { - if (getenv('HOME')) { - return getenv('HOME'); - } - - return (getenv('HOMEDRIVE') && getenv('HOMEPATH')) - ? getenv('HOMEDRIVE') . getenv('HOMEPATH') - : null; - } - - /** - * Clear credential cache. - * - * @return void - */ - public static function forgetLoadedCredentialsFile() - { - self::$hasLoaded = []; - } - - /** - * Get the credential file. - * - * @return string - */ - public function getFilename() - { - return $this->filename; - } - - /** - * @param array $array - * @param string $key - * - * @return bool - */ - protected static function isNotEmpty(array $array, $key) - { - return isset($array[$key]) && !empty($array[$key]); - } - - /** - * @param string $key - * @param string $clientName - * - * @throws ClientException - */ - public function missingRequired($key, $clientName) - { - throw new ClientException( - "Missing required '$key' option for '$clientName' in " . $this->getFilename(), - SDK::INVALID_CREDENTIAL - ); - } - - /** - * @return array|mixed - * @throws ClientException - */ - public function load() - { - // If it has been loaded, assign the client directly. - if (isset(self::$hasLoaded[$this->filename])) { - /** - * @var $client Client - */ - foreach (self::$hasLoaded[$this->filename] as $projectName => $client) { - $client->name($projectName); - } - - return self::$hasLoaded[$this->filename]; - } - - return $this->loadFile(); - } - - /** - * Exceptions will be thrown if the file is unreadable and not the default file. - * - * @return array|mixed - * @throws ClientException - */ - private function loadFile() - { - if (!\AlibabaCloud\Client\inOpenBasedir($this->filename)) { - return []; - } - - if (!\is_readable($this->filename) || !\is_file($this->filename)) { - if ($this->filename === $this->getDefaultFile()) { - // @codeCoverageIgnoreStart - return []; - // @codeCoverageIgnoreEnd - } - throw new ClientException( - 'Credential file is not readable: ' . $this->getFilename(), - SDK::INVALID_CREDENTIAL - ); - } - - return $this->parseFile(); - } - - /** - * Decode the ini file into an array. - * - * @return array|mixed - * @throws ClientException - */ - private function parseFile() - { - try { - $file = \parse_ini_file($this->filename, true); - if (\is_array($file) && $file !== []) { - return $this->initClients($file); - } - throw new ClientException( - 'Format error: ' . $this->getFilename(), - SDK::INVALID_CREDENTIAL - ); - } catch (\Exception $e) { - throw new ClientException( - $e->getMessage(), - SDK::INVALID_CREDENTIAL, - $e - ); - } - } - - /** - * Initialize clients. - * - * @param array $array - * - * @return array|mixed - * @throws ClientException - */ - private function initClients($array) - { - foreach (\array_change_key_case($array) as $clientName => $configures) { - $configures = \array_change_key_case($configures); - $clientInstance = $this->createClient($clientName, $configures); - if ($clientInstance instanceof Client) { - self::$hasLoaded[$this->filename][$clientName] = $clientInstance; - self::setClientAttributes($configures, $clientInstance); - self::setCert($configures, $clientInstance); - self::setProxy($configures, $clientInstance); - } - } - - return isset(self::$hasLoaded[$this->filename]) - ? self::$hasLoaded[$this->filename] - : []; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php deleted file mode 100644 index 192d4940..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php +++ /dev/null @@ -1,111 +0,0 @@ -regionId($configures['region_id']); - } - - if (isset($configures['debug'])) { - $client->options( - [ - 'debug' => (bool)$configures['debug'], - ] - ); - } - - if (self::isNotEmpty($configures, 'timeout')) { - $client->options( - [ - 'timeout' => $configures['timeout'], - ] - ); - } - - if (self::isNotEmpty($configures, 'connect_timeout')) { - $client->options( - [ - 'connect_timeout' => $configures['connect_timeout'], - ] - ); - } - } - - /** - * @param array $configures - * @param Client $client - */ - private static function setProxy($configures, Client $client) - { - if (self::isNotEmpty($configures, 'proxy')) { - $client->options( - [ - 'proxy' => $configures['proxy'], - ] - ); - } - $proxy = []; - if (self::isNotEmpty($configures, 'proxy_http')) { - $proxy['http'] = $configures['proxy_http']; - } - if (self::isNotEmpty($configures, 'proxy_https')) { - $proxy['https'] = $configures['proxy_https']; - } - if (self::isNotEmpty($configures, 'proxy_no')) { - $proxy['no'] = \explode(',', $configures['proxy_no']); - } - if ($proxy !== []) { - $client->options( - [ - 'proxy' => $proxy, - ] - ); - } - } - - /** - * @param array $configures - * @param Client $client - */ - private static function setCert($configures, Client $client) - { - if (self::isNotEmpty($configures, 'cert_file') && !self::isNotEmpty($configures, 'cert_password')) { - $client->options( - [ - 'cert' => $configures['cert_file'], - ] - ); - } - - if (self::isNotEmpty($configures, 'cert_file') && self::isNotEmpty($configures, 'cert_password')) { - $client->options( - [ - 'cert' => [ - $configures['cert_file'], - $configures['cert_password'], - ], - ] - ); - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php deleted file mode 100644 index 21aec9bb..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php +++ /dev/null @@ -1,170 +0,0 @@ -asDefaultClient(); - } - }; - } - - /** - * @return Closure - */ - public static function ini() - { - return static function () { - $ini = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_CREDENTIALS_FILE'); - - if ($ini) { - AlibabaCloud::load($ini); - } else { - // @codeCoverageIgnoreStart - AlibabaCloud::load(); - // @codeCoverageIgnoreEnd - } - - self::compatibleWithGlobal(); - }; - } - - /** - * @codeCoverageIgnore - * - * Compatible with global - * - * @throws ClientException - */ - private static function compatibleWithGlobal() - { - if (AlibabaCloud::has('global') && !AlibabaCloud::has(self::getDefaultName())) { - AlibabaCloud::get('global')->name(self::getDefaultName()); - } - } - - /** - * @return array|false|string - * @throws ClientException - */ - public static function getDefaultName() - { - $name = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_PROFILE'); - - if ($name) { - return $name; - } - - return 'default'; - } - - /** - * @return Closure - */ - public static function instance() - { - return static function () { - $instance = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_ECS_METADATA'); - if ($instance) { - AlibabaCloud::ecsRamRoleClient($instance)->asDefaultClient(); - } - }; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php deleted file mode 100644 index 0515ca63..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php +++ /dev/null @@ -1,128 +0,0 @@ -getCredentialsInCache(); - - if ($result === null) { - $result = $this->request(); - - if (!isset($result['AccessKeyId'], $result['AccessKeySecret'], $result['SecurityToken'])) { - throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); - } - - $this->cache($result->toArray()); - } - - return new StsCredential( - $result['AccessKeyId'], - $result['AccessKeySecret'], - $result['SecurityToken'] - ); - } - - /** - * Get credentials by request. - * - * @return Result - * @throws ClientException - * @throws ServerException - */ - public function request() - { - $result = $this->getResponse(); - - if ($result->getStatusCode() === 404) { - $message = 'The role was not found in the instance'; - throw new ClientException($message, SDK::INVALID_CREDENTIAL); - } - - if (!$result->isSuccess()) { - $message = 'Error retrieving credentials from result'; - throw new ServerException($result, $message, SDK::INVALID_CREDENTIAL); - } - - return $result; - } - - /** - * Get data from meta. - * - * @return mixed|ResponseInterface - * @throws ClientException - * @throws Exception - */ - public function getResponse() - { - /** - * @var EcsRamRoleCredential $credential - */ - $credential = $this->client->getCredential(); - $url = $this->uri . $credential->getRoleName(); - - $options = [ - 'http_errors' => false, - 'timeout' => 1, - 'connect_timeout' => 1, - 'debug' => $this->client->isDebug(), - ]; - - try { - return RpcRequest::createClient()->request('GET', $url, $options); - } catch (GuzzleException $exception) { - if (Stringy::contains($exception->getMessage(), 'timed')) { - $message = 'Timeout or instance does not belong to Alibaba Cloud'; - } else { - $message = $exception->getMessage(); - } - - throw new ClientException( - $message, - SDK::SERVER_UNREACHABLE, - $exception - ); - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php deleted file mode 100644 index b64dab87..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php +++ /dev/null @@ -1,88 +0,0 @@ -client = $client; - } - - /** - * Get the credentials from the cache in the validity period. - * - * @return array|null - */ - public function getCredentialsInCache() - { - if (isset(self::$credentialsCache[$this->key()])) { - $result = self::$credentialsCache[$this->key()]; - if (\strtotime($result['Expiration']) - \time() >= $this->expirationSlot) { - return $result; - } - unset(self::$credentialsCache[$this->key()]); - } - - return null; - } - - /** - * Get the toString of the credentials as the key. - * - * @return string - */ - protected function key() - { - return (string)$this->client->getCredential(); - } - - /** - * Cache credentials. - * - * @param array $credential - */ - protected function cache(array $credential) - { - self::$credentialsCache[$this->key()] = $credential; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php deleted file mode 100644 index ce4de41c..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php +++ /dev/null @@ -1,84 +0,0 @@ -getCredentialsInCache(); - - if (null === $credential) { - $result = $this->request($timeout, $connectTimeout); - - if (!isset($result['Credentials']['AccessKeyId'], - $result['Credentials']['AccessKeySecret'], - $result['Credentials']['SecurityToken'])) { - throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); - } - - $credential = $result['Credentials']; - $this->cache($credential); - } - - return new StsCredential( - $credential['AccessKeyId'], - $credential['AccessKeySecret'], - $credential['SecurityToken'] - ); - } - - /** - * Get credentials by request. - * - * @param $timeout - * @param $connectTimeout - * - * @return Result - * @throws ClientException - * @throws ServerException - */ - private function request($timeout, $connectTimeout) - { - $clientName = __CLASS__ . \uniqid('ak', true); - $credential = $this->client->getCredential(); - - AlibabaCloud::accessKeyClient( - $credential->getAccessKeyId(), - $credential->getAccessKeySecret() - )->name($clientName); - - return (new AssumeRole($credential)) - ->client($clientName) - ->timeout($timeout) - ->connectTimeout($connectTimeout) - ->debug($this->client->isDebug()) - ->request(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php deleted file mode 100644 index e78fc1c1..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php +++ /dev/null @@ -1,86 +0,0 @@ -getCredentialsInCache(); - - if ($credential === null) { - $result = $this->request($timeout, $connectTimeout); - - if (!isset($result['SessionAccessKey']['SessionAccessKeyId'], - $result['SessionAccessKey']['SessionAccessKeySecret'])) { - throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); - } - - $credential = $result['SessionAccessKey']; - $this->cache($credential); - } - - return new StsCredential( - $credential['SessionAccessKeyId'], - $credential['SessionAccessKeySecret'] - ); - } - - /** - * Get credentials by request. - * - * @param $timeout - * @param $connectTimeout - * - * @return Result - * @throws ClientException - * @throws ServerException - */ - private function request($timeout, $connectTimeout) - { - $clientName = __CLASS__ . \uniqid('rsa', true); - $credential = $this->client->getCredential(); - - AlibabaCloud::client( - new AccessKeyCredential( - $credential->getPublicKeyId(), - $credential->getPrivateKey() - ), - new ShaHmac256WithRsaSignature() - )->name($clientName); - - return (new GenerateSessionAccessKey($credential->getPublicKeyId())) - ->client($clientName) - ->timeout($timeout) - ->connectTimeout($connectTimeout) - ->debug($this->client->isDebug()) - ->request(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php deleted file mode 100644 index 6bdf5be9..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php +++ /dev/null @@ -1,110 +0,0 @@ -accessKeyId = $accessKeyId; - $this->accessKeySecret = $accessKeySecret; - $this->roleArn = $roleArn; - $this->roleSessionName = $roleSessionName; - $this->policy = $policy; - } - - /** - * @return string - */ - public function getAccessKeyId() - { - return $this->accessKeyId; - } - - /** - * @return string - */ - public function getAccessKeySecret() - { - return $this->accessKeySecret; - } - - /** - * @return string - */ - public function getRoleArn() - { - return $this->roleArn; - } - - /** - * @return string - */ - public function getRoleSessionName() - { - return $this->roleSessionName; - } - - /** - * @return string - */ - public function getPolicy() - { - return $this->policy; - } - - /** - * @return string - */ - public function __toString() - { - return "$this->accessKeyId#$this->accessKeySecret#$this->roleArn#$this->roleSessionName"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php deleted file mode 100644 index a3935aaf..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php +++ /dev/null @@ -1,47 +0,0 @@ -product('Sts'); - $this->version('2015-04-01'); - $this->action('AssumeRole'); - $this->host('sts.aliyuncs.com'); - $this->scheme('https'); - $this->regionId('cn-hangzhou'); - $this->options['verify'] = false; - $this->options['query']['RoleArn'] = $arnCredential->getRoleArn(); - $this->options['query']['RoleSessionName'] = $arnCredential->getRoleSessionName(); - $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS; - if ($arnCredential->getPolicy()) { - if (is_array($arnCredential->getPolicy())) { - $this->options['query']['Policy'] = json_encode($arnCredential->getPolicy()); - } - if (is_string($arnCredential->getPolicy())) { - $this->options['query']['Policy'] = $arnCredential->getPolicy(); - } - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php b/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php deleted file mode 100644 index 4ac1ee1a..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php +++ /dev/null @@ -1,37 +0,0 @@ -product('Sts'); - $this->version('2015-04-01'); - $this->action('GenerateSessionAccessKey'); - $this->host('sts.ap-northeast-1.aliyuncs.com'); - $this->scheme('https'); - $this->regionId('cn-hangzhou'); - $this->options['verify'] = false; - $this->options['query']['PublicKeyId'] = $publicKeyId; - $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php deleted file mode 100644 index 876909e2..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php +++ /dev/null @@ -1,75 +0,0 @@ -publicKeyId = $publicKeyId; - try { - $this->privateKey = file_get_contents($privateKeyFile); - } catch (Exception $exception) { - throw new ClientException( - $exception->getMessage(), - SDK::INVALID_CREDENTIAL - ); - } - } - - /** - * @return mixed - */ - public function getPrivateKey() - { - return $this->privateKey; - } - - /** - * @return string - */ - public function getPublicKeyId() - { - return $this->publicKeyId; - } - - /** - * @return string - */ - public function __toString() - { - return "publicKeyId#$this->publicKeyId"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Credentials/StsCredential.php b/niucloud/vendor/alibabacloud/client/src/Credentials/StsCredential.php deleted file mode 100644 index d333fa82..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Credentials/StsCredential.php +++ /dev/null @@ -1,80 +0,0 @@ -accessKeyId = $accessKeyId; - $this->accessKeySecret = $accessKeySecret; - $this->securityToken = $securityToken; - } - - /** - * @return string - */ - public function getAccessKeyId() - { - return $this->accessKeyId; - } - - /** - * @return string - */ - public function getAccessKeySecret() - { - return $this->accessKeySecret; - } - - /** - * @return string - */ - public function getSecurityToken() - { - return $this->securityToken; - } - - /** - * @return string - */ - public function __toString() - { - return "$this->accessKeyId#$this->accessKeySecret#$this->securityToken"; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/DefaultAcsClient.php b/niucloud/vendor/alibabacloud/client/src/DefaultAcsClient.php deleted file mode 100644 index ff5ecd73..00000000 --- a/niucloud/vendor/alibabacloud/client/src/DefaultAcsClient.php +++ /dev/null @@ -1,55 +0,0 @@ -randClientName = \uniqid('', true); - $client->name($this->randClientName); - } - - /** - * @param Request|Result $request - * - * @return Result|string - * @throws ClientException - * @throws ServerException - */ - public function getAcsResponse($request) - { - if ($request instanceof Result) { - return $request; - } - - return $request->client($this->randClientName)->request(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Encode.php b/niucloud/vendor/alibabacloud/client/src/Encode.php deleted file mode 100644 index 203ceb46..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Encode.php +++ /dev/null @@ -1,68 +0,0 @@ -data = $data; - } - - /** - * @return bool|string - */ - public function toString() - { - $string = ''; - foreach ($this->data as $key => $value) { - $encode = rawurlencode($value); - if ($encode === '') { - $string .= "$key&"; - } else { - $string .= "$key=$encode&"; - } - } - - if (0 < count($this->data)) { - $string = substr($string, 0, -1); - } - - return $string; - } - - /** - * @return $this - */ - public function ksort() - { - ksort($this->data); - - return $this; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php b/niucloud/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php deleted file mode 100644 index cee21d8a..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php +++ /dev/null @@ -1,70 +0,0 @@ -errorCode; - } - - /** - * @codeCoverageIgnore - * @deprecated - */ - public function setErrorCode() - { - throw new RuntimeException('deprecated since 2.0.'); - } - - /** - * @return string - */ - public function getErrorMessage() - { - return $this->errorMessage; - } - - /** - * @codeCoverageIgnore - * - * @param $errorMessage - * - * @deprecated - */ - public function setErrorMessage($errorMessage) - { - $this->errorMessage = $errorMessage; - } - - /** - * @codeCoverageIgnore - * @deprecated - */ - public function setErrorType() - { - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Exception/ClientException.php b/niucloud/vendor/alibabacloud/client/src/Exception/ClientException.php deleted file mode 100644 index 0877e877..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Exception/ClientException.php +++ /dev/null @@ -1,38 +0,0 @@ -errorMessage = $errorMessage; - $this->errorCode = $errorCode; - } - - /** - * @codeCoverageIgnore - * @deprecated - */ - public function getErrorType() - { - return 'Client'; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Exception/ServerException.php b/niucloud/vendor/alibabacloud/client/src/Exception/ServerException.php deleted file mode 100644 index 4be26e87..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Exception/ServerException.php +++ /dev/null @@ -1,158 +0,0 @@ -result = $result; - $this->errorMessage = $errorMessage; - $this->errorCode = $errorCode; - $this->resolvePropertiesByReturn(); - $this->distinguishSignatureErrors(); - $this->bodyAsErrorMessage(); - - parent::__construct( - $this->getMessageString(), - $this->result->getStatusCode() - ); - } - - /** - * Resolve the error message based on the return of the server. - * - * @return void - */ - private function resolvePropertiesByReturn() - { - if (isset($this->result['message'])) { - $this->errorMessage = $this->result['message']; - $this->errorCode = $this->result['code']; - } - if (isset($this->result['Message'])) { - $this->errorMessage = $this->result['Message']; - $this->errorCode = $this->result['Code']; - } - if (isset($this->result['errorMsg'])) { - $this->errorMessage = $this->result['errorMsg']; - $this->errorCode = $this->result['errorCode']; - } - if (isset($this->result['requestId'])) { - $this->requestId = $this->result['requestId']; - } - if (isset($this->result['RequestId'])) { - $this->requestId = $this->result['RequestId']; - } - } - - /** - * If the string to be signed are the same with server's, it is considered a credential error. - */ - private function distinguishSignatureErrors() - { - if ($this->result->getRequest() - && Stringy::contains($this->errorMessage, $this->result->getRequest()->stringToSign())) { - $this->errorCode = 'InvalidAccessKeySecret'; - $this->errorMessage = 'Specified Access Key Secret is not valid.'; - } - } - - /** - * If the error message matches the default message and - * the server has returned content, use the return content - */ - private function bodyAsErrorMessage() - { - $body = (string)$this->result->getBody(); - if ($this->errorMessage === SDK::RESPONSE_EMPTY && $body) { - $this->errorMessage = $body; - } - } - - /** - * Get standard exception message. - * - * @return string - */ - private function getMessageString() - { - $message = "$this->errorCode: $this->errorMessage RequestId: $this->requestId"; - - if ($this->getResult()->getRequest()) { - $method = $this->getResult()->getRequest()->method; - $uri = (string)$this->getResult()->getRequest()->uri; - $message .= " $method \"$uri\""; - if ($this->result) { - $message .= ' ' . $this->result->getStatusCode(); - } - } - - return $message; - } - - /** - * @return Result - */ - public function getResult() - { - return $this->result; - } - - /** - * @return string - */ - public function getRequestId() - { - return $this->requestId; - } - - /** - * @codeCoverageIgnore - * @deprecated - */ - public function getErrorType() - { - return 'Server'; - } - - /** - * @codeCoverageIgnore - * @deprecated - */ - public function getHttpStatus() - { - return $this->getResult()->getStatusCode(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Filter/ApiFilter.php b/niucloud/vendor/alibabacloud/client/src/Filter/ApiFilter.php deleted file mode 100644 index f6d26f2d..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Filter/ApiFilter.php +++ /dev/null @@ -1,259 +0,0 @@ -br(); - if ($flank !== null) { - cliMate()->backgroundRed()->flank($flank, $char, $length); - cliMate()->br(); - } - cliMate()->backgroundRed($string); - cliMate()->br(); -} - -/** - * @param string $string - * @param string|null $flank - * @param string|null $char - * @param int|null $length - * - * @return void - */ -function backgroundGreen($string, $flank = null, $char = null, $length = null) -{ - cliMate()->br(); - if ($flank !== null) { - cliMate()->backgroundGreen()->flank($flank, $char, $length); - } - cliMate()->backgroundGreen($string); - cliMate()->br(); -} - -/** - * @param string $string - * @param string|null $flank - * @param string|null $char - * @param int|null $length - * - * @return void - */ -function backgroundBlue($string, $flank = null, $char = null, $length = null) -{ - cliMate()->br(); - if ($flank !== null) { - cliMate()->backgroundBlue()->flank($flank, $char, $length); - } - cliMate()->backgroundBlue($string); - cliMate()->br(); -} - -/** - * @param string $string - * @param string|null $flank - * @param string|null $char - * @param int|null $length - * - * @return void - */ -function backgroundMagenta($string, $flank = null, $char = null, $length = null) -{ - cliMate()->br(); - if ($flank !== null) { - cliMate()->backgroundMagenta()->flank($flank, $char, $length); - } - cliMate()->backgroundMagenta($string); - cliMate()->br(); -} - -/** - * @param array $array - */ -function json(array $array) -{ - cliMate()->br(); - cliMate()->backgroundGreen()->json($array); - cliMate()->br(); -} - -/** - * @param array $array - * - * @return void - */ -function redTable($array) -{ - /** - * @noinspection PhpUndefinedMethodInspection - */ - cliMate()->redTable($array); -} - -/** - * @param mixed $result - * @param string $title - * - * @return void - */ -function block($result, $title) -{ - cliMate()->backgroundGreen()->flank($title, '--', 20); - dump($result); -} - -/** - * Gets the value of an environment variable. - * - * @param string $key - * @param mixed $default - * - * @return mixed - */ -function env($key, $default = null) -{ - $value = getenv($key); - - if ($value === false) { - return value($default); - } - - if (envSubstr($value)) { - return substr($value, 1, -1); - } - - return envConversion($value); -} - -/** - * @param $value - * - * @return bool|string|null - */ -function envConversion($value) -{ - $key = strtolower($value); - - if ($key === 'null' || $key === '(null)') { - return null; - } - - $list = [ - 'true' => true, - '(true)' => true, - 'false' => false, - '(false)' => false, - 'empty' => '', - '(empty)' => '', - ]; - - return isset($list[$key]) ? $list[$key] : $value; -} - -/** - * @param $key - * - * @return bool|mixed - * @throws ClientException - */ -function envNotEmpty($key) -{ - $value = env($key, false); - if ($value !== false && !$value) { - throw new ClientException( - "Environment variable '$key' cannot be empty", - SDK::INVALID_ARGUMENT - ); - } - if ($value) { - return $value; - } - - return false; -} - -/** - * @param $value - * - * @return bool - */ -function envSubstr($value) -{ - return ($valueLength = strlen($value)) > 1 && strpos($value, '"') === 0 && $value[$valueLength - 1] === '"'; -} - -/** - * Return the default value of the given value. - * - * @param mixed $value - * - * @return mixed - */ -function value($value) -{ - return $value instanceof Closure ? $value() : $value; -} diff --git a/niucloud/vendor/alibabacloud/client/src/Log/LogFormatter.php b/niucloud/vendor/alibabacloud/client/src/Log/LogFormatter.php deleted file mode 100644 index a33185bc..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Log/LogFormatter.php +++ /dev/null @@ -1,79 +0,0 @@ -template = $template; - $timezone = new DateTimeZone(date_default_timezone_get() ?: 'UTC'); - if (PHP_VERSION_ID < 70100) { - self::$ts = DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), $timezone); - } else { - self::$ts = new DateTime('now', $timezone); - } - } - - /** - * Returns a formatted message string. - * - * @param RequestInterface $request Request that was sent - * @param ResponseInterface $response Response that was received - * @param Exception $error Exception that was received - * - * @return string - */ - public function format( - RequestInterface $request, - ResponseInterface $response = null, - Exception $error = null - ) { - $this->template = str_replace('{pid}', getmypid(), $this->template); - $this->template = str_replace('{cost}', self::getCost(), $this->template); - $this->template = str_replace('{start_time}', self::$ts->format('Y-m-d H:i:s.u'), $this->template); - - return (new MessageFormatter($this->template))->format($request, $response, $error); - } - - /** - * @return float|mixed - */ - private static function getCost() - { - return microtime(true) - self::$logStartTime; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Profile/DefaultProfile.php b/niucloud/vendor/alibabacloud/client/src/Profile/DefaultProfile.php deleted file mode 100644 index b1b3707a..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Profile/DefaultProfile.php +++ /dev/null @@ -1,74 +0,0 @@ -regionId($regionId); - } - - /** - * @param string $regionId - * @param string $accessKeyId - * @param string $accessKeySecret - * @param string $roleArn - * @param string $roleSessionName - * - * @return Client - * @throws ClientException - */ - public static function getRamRoleArnProfile($regionId, $accessKeyId, $accessKeySecret, $roleArn, $roleSessionName) - { - return AlibabaCloud::ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName) - ->regionId($regionId); - } - - /** - * @param string $regionId - * @param string $roleName - * - * @return Client - * @throws ClientException - */ - public static function getEcsRamRoleProfile($regionId, $roleName) - { - return AlibabaCloud::ecsRamRoleClient($roleName) - ->regionId($regionId); - } - - /** - * @param string $regionId - * @param string $bearerToken - * - * @return Client - * @throws ClientException - */ - public static function getBearerTokenProfile($regionId, $bearerToken) - { - return AlibabaCloud::bearerTokenClient($bearerToken) - ->regionId($regionId); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Regions/EndpointProvider.php b/niucloud/vendor/alibabacloud/client/src/Regions/EndpointProvider.php deleted file mode 100644 index 5e8e555e..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Regions/EndpointProvider.php +++ /dev/null @@ -1,18 +0,0 @@ -request = $request; - } - - /** - * @param Request $request - * @param string $domain - * - * @return string - * @throws ClientException - * @throws ServerException - * @deprecated - * @codeCoverageIgnore - */ - public static function findProductDomain(Request $request, $domain = 'location.aliyuncs.com') - { - return self::resolveHost($request, $domain); - } - - /** - * @param $regionId - * @param $product - * @param $domain - * - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public static function addEndPoint($regionId, $product, $domain) - { - self::addHost($product, $domain, $regionId); - } - - - /** - * @param Request $request - * @param string $domain - * - * @return string - * @throws ClientException - * @throws ServerException - */ - public static function resolveHost(Request $request, $domain = 'location.aliyuncs.com') - { - $locationService = new static($request); - $product = $locationService->request->product; - $regionId = $locationService->request->realRegionId(); - - if (!isset(self::$hosts[$product][$regionId])) { - self::$hosts[$product][$regionId] = self::getResult($locationService, $domain); - } - - return self::$hosts[$product][$regionId]; - } - - /** - * @param static $locationService - * @param string $domain - * - * @return string - * @throws ClientException - * @throws ServerException - */ - private static function getResult($locationService, $domain) - { - $locationRequest = new LocationServiceRequest($locationService->request, $domain); - - $result = $locationRequest->request(); - - if (!isset($result['Endpoints']['Endpoint'][0]['Endpoint'])) { - throw new ClientException( - 'Not found Region ID in ' . $domain, - SDK::INVALID_REGION_ID - ); - } - - return $result['Endpoints']['Endpoint'][0]['Endpoint']; - } - - /** - * @param string $product - * @param string $host - * @param string $regionId - * - * @throws ClientException - */ - public static function addHost($product, $host, $regionId = self::GLOBAL_REGION) - { - ApiFilter::product($product); - - HttpFilter::host($host); - - ClientFilter::regionId($regionId); - - self::$hosts[$product][$regionId] = $host; - } - - /** - * Update endpoints from OSS. - * - * @codeCoverageIgnore - * @throws Exception - */ - public static function updateEndpoints() - { - $ossUrl = 'https://openapi-endpoints.oss-cn-hangzhou.aliyuncs.com/endpoints.json'; - $json = \file_get_contents($ossUrl); - $list = \json_decode($json, true); - - foreach ($list['endpoints'] as $endpoint) { - Config::set( - "endpoints.{$endpoint['service']}.{$endpoint['regionid']}", - \strtolower($endpoint['endpoint']) - ); - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php b/niucloud/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php deleted file mode 100644 index 94a267d6..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php +++ /dev/null @@ -1,46 +0,0 @@ -product('Location'); - $this->version('2015-06-12'); - $this->action('DescribeEndpoints'); - $this->regionId('cn-hangzhou'); - $this->format('JSON'); - $this->options['query']['Id'] = $request->realRegionId(); - $this->options['query']['ServiceCode'] = $request->serviceCode; - $this->options['query']['Type'] = $request->endpointType; - $this->client($request->client); - $this->host($domain); - if (isset($request->options['timeout'])) { - $this->timeout($request->options['timeout']); - } - - if (isset($request->options['connect_timeout'])) { - $this->connectTimeout($request->options['connect_timeout']); - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Release.php b/niucloud/vendor/alibabacloud/client/src/Release.php deleted file mode 100644 index 0be9c1bc..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Release.php +++ /dev/null @@ -1,112 +0,0 @@ -getArguments(); - if (count($arguments) <= 1) { - echo 'Missing ChangeLog'; - - return; - } - self::updateChangelogFile($arguments[0], $arguments[1]); - self::changeVersionInCode($arguments[0]); - } - - /** - * @param $version - * @param $changeLog - */ - private static function updateChangelogFile($version, $changeLog) - { - $content = preg_replace( - '/# CHANGELOG/', - '# CHANGELOG' - . "\n" - . "\n" - . "## $version - " . date('Y-m-d') - . self::log($changeLog), - self::getChangeLogContent() - ); - - file_put_contents(self::getChangeLogFile(), $content); - } - - /** - * @param $changeLog - * - * @return string - */ - private static function log($changeLog) - { - $logs = explode('|', $changeLog); - $string = "\n"; - foreach ($logs as $log) { - if ($log) { - $string .= "- $log." . "\n"; - } - } - - return $string; - } - - /** - * @return string - */ - private static function getChangeLogContent() - { - return file_get_contents(self::getChangeLogFile()); - } - - /** - * @return string - */ - private static function getChangeLogFile() - { - return __DIR__ . '/../CHANGELOG.md'; - } - - /** - * @param $version - */ - private static function changeVersionInCode($version) - { - $content = preg_replace( - "/const VERSION = \'(.*)\';/", - "const VERSION = '" . $version . "';", - self::getCodeContent() - ); - - file_put_contents(self::getCodeFile(), $content); - } - - /** - * @return string - */ - private static function getCodeContent() - { - return file_get_contents(self::getCodeFile()); - } - - /** - * @return string - */ - private static function getCodeFile() - { - return __DIR__ . '/AlibabaCloud.php'; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Request.php b/niucloud/vendor/alibabacloud/client/src/Request/Request.php deleted file mode 100644 index e18532ee..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Request.php +++ /dev/null @@ -1,451 +0,0 @@ -client = CredentialsProvider::getDefaultName(); - $this->uri = new Uri(); - $this->uri = $this->uri->withScheme($this->scheme); - $this->options['http_errors'] = false; - $this->options['connect_timeout'] = self::CONNECT_TIMEOUT; - $this->options['timeout'] = self::TIMEOUT; - - // Turn on debug mode based on environment variable. - if (null !== \AlibabaCloud\Client\env('DEBUG') && strtolower(\AlibabaCloud\Client\env('DEBUG')) === 'sdk') { - $this->options['debug'] = true; - } - - // Rewrite configuration if the user has a configuration. - if ($options !== []) { - $this->options($options); - } - } - - /** - * @param string $name - * @param string $value - * - * @return $this - * @throws ClientException - */ - public function appendUserAgent($name, $value) - { - $filter_name = Filter::name($name); - - if (!UserAgent::isGuarded($filter_name)) { - $this->userAgent[$filter_name] = Filter::value($value); - } - - return $this; - } - - /** - * @param array $userAgent - * - * @return $this - */ - public function withUserAgent(array $userAgent) - { - $this->userAgent = UserAgent::clean($userAgent); - - return $this; - } - - /** - * Set Accept format. - * - * @param string $format - * - * @return $this - * @throws ClientException - */ - public function format($format) - { - $this->format = ApiFilter::format($format); - - return $this; - } - - /** - * @param $contentType - * - * @return $this - * @throws ClientException - */ - public function contentType($contentType) - { - $this->options['headers']['Content-Type'] = HttpFilter::contentType($contentType); - - return $this; - } - - /** - * @param string $accept - * - * @return $this - * @throws ClientException - */ - public function accept($accept) - { - $this->options['headers']['Accept'] = HttpFilter::accept($accept); - - return $this; - } - - /** - * Set the request body. - * - * @param string $body - * - * @return $this - * @throws ClientException - */ - public function body($body) - { - $this->options['body'] = HttpFilter::body($body); - - return $this; - } - - /** - * Set the json as body. - * - * @param array|object $content - * - * @return $this - * @throws ClientException - */ - public function jsonBody($content) - { - if (!\is_array($content) && !\is_object($content)) { - throw new ClientException( - 'jsonBody only accepts an array or object', - SDK::INVALID_ARGUMENT - ); - } - - return $this->body(\json_encode($content)); - } - - /** - * Set the request scheme. - * - * @param string $scheme - * - * @return $this - * @throws ClientException - */ - public function scheme($scheme) - { - $this->scheme = HttpFilter::scheme($scheme); - $this->uri = $this->uri->withScheme($scheme); - - return $this; - } - - /** - * Set the request host. - * - * @param string $host - * - * @return $this - * @throws ClientException - */ - public function host($host) - { - $this->uri = $this->uri->withHost(HttpFilter::host($host)); - - return $this; - } - - /** - * @param string $method - * - * @return $this - * @throws ClientException - */ - public function method($method) - { - $this->method = HttpFilter::method($method); - - return $this; - } - - /** - * @param string $clientName - * - * @return $this - * @throws ClientException - */ - public function client($clientName) - { - $this->client = ClientFilter::clientName($clientName); - - return $this; - } - - /** - * @return bool - * @throws ClientException - */ - public function isDebug() - { - if (isset($this->options['debug'])) { - return $this->options['debug'] === true; - } - - if (isset($this->httpClient()->options['debug'])) { - return $this->httpClient()->options['debug'] === true; - } - - return false; - } - - /** - * @throws ClientException - * @throws ServerException - */ - public function resolveOption() - { - $this->options['headers']['User-Agent'] = UserAgent::toString($this->userAgent); - - $this->cleanQuery(); - $this->cleanFormParams(); - $this->resolveHost(); - $this->resolveParameter(); - - if (isset($this->options['form_params'])) { - if (function_exists('\GuzzleHttp\Psr7\parse_query')) { - $this->options['form_params'] = \GuzzleHttp\Psr7\parse_query( - Encode::create($this->options['form_params'])->toString() - ); - } else { - $this->options['form_params'] = \GuzzleHttp\Psr7\Query::parse( - Encode::create($this->options['form_params'])->toString() - ); - } - } - - $this->mergeOptionsIntoClient(); - } - - /** - * @return Result - * @throws ClientException - * @throws ServerException - */ - public function request() - { - $this->resolveOption(); - $result = $this->response(); - - if ($this->shouldServerRetry($result)) { - return $this->request(); - } - - if (!$result->isSuccess()) { - throw new ServerException($result); - } - - return $result; - } - - /*** - * @return PromiseInterface - * @throws Exception - */ - public function requestAsync() - { - $this->resolveOption(); - - return self::createClient($this)->requestAsync( - $this->method, - (string)$this->uri, - $this->options - ); - } - - /** - * @param Request $request - * - * @return Client - * @throws Exception - */ - public static function createClient(Request $request = null) - { - if (AlibabaCloud::hasMock()) { - $stack = HandlerStack::create(AlibabaCloud::getMock()); - } else { - $stack = HandlerStack::create(); - } - - if (AlibabaCloud::isRememberHistory()) { - $stack->push(Middleware::history(AlibabaCloud::referenceHistory())); - } - - if (AlibabaCloud::getLogger()) { - $stack->push(Middleware::log( - AlibabaCloud::getLogger(), - new MessageFormatter(AlibabaCloud::getLogFormat()) - )); - } - - $stack->push(Middleware::mapResponse(static function (ResponseInterface $response) use ($request) { - return new Result($response, $request); - })); - - self::$config['handler'] = $stack; - - return new Client(self::$config); - } - - /** - * @throws ClientException - * @throws Exception - */ - private function response() - { - try { - return self::createClient($this)->request( - $this->method, - (string)$this->uri, - $this->options - ); - } catch (GuzzleException $exception) { - if ($this->shouldClientRetry($exception)) { - return $this->response(); - } - throw new ClientException( - $exception->getMessage(), - SDK::SERVER_UNREACHABLE, - $exception - ); - } - } - - /** - * Remove redundant Query - * - * @codeCoverageIgnore - */ - private function cleanQuery() - { - if (isset($this->options['query']) && $this->options['query'] === []) { - unset($this->options['query']); - } - } - - /** - * Remove redundant Headers - * - * @codeCoverageIgnore - */ - private function cleanFormParams() - { - if (isset($this->options['form_params']) && $this->options['form_params'] === []) { - unset($this->options['form_params']); - } - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/RoaRequest.php b/niucloud/vendor/alibabacloud/client/src/Request/RoaRequest.php deleted file mode 100644 index 2993f141..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/RoaRequest.php +++ /dev/null @@ -1,333 +0,0 @@ -resolveQuery(); - $this->resolveHeaders(); - $this->resolveBody(); - $this->resolveUri(); - $this->resolveSignature(); - } - - private function resolveQuery() - { - if (!isset($this->options['query']['Version'])) { - $this->options['query']['Version'] = $this->version; - } - } - - private function resolveBody() - { - // If the body has already been specified, it will not be resolved. - if (isset($this->options['body'])) { - return; - } - - if (!isset($this->options['form_params'])) { - return; - } - - // Merge data, compatible with parameters set from constructor. - $params = Arrays::merge( - [ - $this->data, - $this->options['form_params'] - ] - ); - - $this->encodeBody($params); - - unset($this->options['form_params']); - } - - /** - * Determine the body format based on the Content-Type and calculate the MD5 value. - * - * @param array $params - */ - private function encodeBody(array $params) - { - if (Stringy::contains($this->options['headers']['Content-Type'], 'application/json', false)) { - $this->options['body'] = json_encode($params); - $this->options['headers']['Content-MD5'] = base64_encode(md5($this->options['body'], true)); - - return; - } - - $this->options['body'] = Encode::create($params)->ksort()->toString(); - $this->options['headers']['Content-MD5'] = base64_encode(md5($this->options['body'], true)); - $this->options['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; - } - - /** - * @throws ClientException - * @throws ServerException - * @throws Exception - */ - private function resolveHeaders() - { - $this->options['headers']['x-acs-version'] = $this->version; - $this->options['headers']['x-acs-region-id'] = $this->realRegionId(); - $this->options['headers']['Date'] = gmdate($this->dateTimeFormat); - - $signature = $this->httpClient()->getSignature(); - $this->options['headers']['x-acs-signature-method'] = $signature->getMethod(); - $this->options['headers']['x-acs-signature-nonce'] = Sign::uuid($this->product . $this->action); - $this->options['headers']['x-acs-signature-version'] = $signature->getVersion(); - if ($signature->getType()) { - $this->options['headers']['x-acs-signature-type'] = $signature->getType(); - } - - $this->resolveAccept(); - $this->resolveContentType(); - $this->resolveSecurityToken(); - $this->resolveBearerToken(); - } - - /** - * @throws ClientException - * @throws Exception - */ - private function resolveSignature() - { - $this->options['headers']['Authorization'] = $this->signature(); - } - - /** - * If accept is not specified, it is determined by format. - */ - private function resolveAccept() - { - if (!isset($this->options['headers']['Accept'])) { - $this->options['headers']['Accept'] = Accept::create($this->format)->toString(); - } - } - - /** - * If the Content-Type is not specified, it is determined according to accept. - */ - private function resolveContentType() - { - if (!isset($this->options['headers']['Content-Type'])) { - $this->options['headers']['Content-Type'] = "{$this->options['headers']['Accept']}; charset=utf-8"; - } - } - - /** - * @throws ClientException - * @throws ServerException - */ - private function resolveSecurityToken() - { - if (!$this->credential() instanceof StsCredential) { - return; - } - - if (!$this->credential()->getSecurityToken()) { - return; - } - - $this->options['headers']['x-acs-security-token'] = $this->credential()->getSecurityToken(); - } - - /** - * @throws ClientException - * @throws ServerException - */ - private function resolveBearerToken() - { - if ($this->credential() instanceof BearerTokenCredential) { - $this->options['headers']['x-acs-bearer-token'] = $this->credential()->getBearerToken(); - } - } - - /** - * Sign the request message. - * - * @return string - * @throws ClientException - * @throws ServerException - */ - private function signature() - { - /** - * @var AccessKeyCredential $credential - */ - $credential = $this->credential(); - $access_key_id = $credential->getAccessKeyId(); - $signature = $this->httpClient() - ->getSignature() - ->sign( - $this->stringToSign(), - $credential->getAccessKeySecret() - ); - - return "acs $access_key_id:$signature"; - } - - /** - * @return void - */ - private function resolveUri() - { - $path = Path::assign($this->pathPattern, $this->pathParameters); - - $this->uri = $this->uri->withPath($path) - ->withQuery( - $this->queryString() - ); - } - - /** - * @return string - */ - public function stringToSign() - { - $request = new \GuzzleHttp\Psr7\Request( - $this->method, - $this->uri, - $this->options['headers'] - ); - - return Sign::roaString($request); - } - - /** - * @return bool|string - */ - private function queryString() - { - $query = isset($this->options['query']) - ? $this->options['query'] - : []; - - return Encode::create($query)->ksort()->toString(); - } - - /** - * Set path parameter by name. - * - * @param string $name - * @param string $value - * - * @return RoaRequest - * @throws ClientException - */ - public function pathParameter($name, $value) - { - Filter::name($name); - - if ($value === '') { - throw new ClientException( - 'Value cannot be empty', - SDK::INVALID_ARGUMENT - ); - } - - $this->pathParameters[$name] = $value; - - return $this; - } - - /** - * Set path pattern. - * - * @param string $pattern - * - * @return self - * @throws ClientException - */ - public function pathPattern($pattern) - { - ApiFilter::pattern($pattern); - - $this->pathPattern = $pattern; - - return $this; - } - - /** - * Magic method for set or get request parameters. - * - * @param string $name - * @param mixed $arguments - * - * @return $this - */ - public function __call($name, $arguments) - { - if (strncmp($name, 'get', 3) === 0) { - $parameter_name = \mb_strcut($name, 3); - - return $this->__get($parameter_name); - } - - if (strncmp($name, 'with', 4) === 0) { - $parameter_name = \mb_strcut($name, 4); - $this->__set($parameter_name, $arguments[0]); - $this->pathParameters[$parameter_name] = $arguments[0]; - - return $this; - } - - if (strncmp($name, 'set', 3) === 0) { - $parameter_name = \mb_strcut($name, 3); - $with_method = "with$parameter_name"; - - throw new RuntimeException("Please use $with_method instead of $name"); - } - - throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/RpcRequest.php b/niucloud/vendor/alibabacloud/client/src/Request/RpcRequest.php deleted file mode 100644 index 389c9494..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/RpcRequest.php +++ /dev/null @@ -1,203 +0,0 @@ -resolveBoolInParameters(); - $this->resolveCommonParameters(); - $this->repositionParameters(); - } - - /** - * Convert a Boolean value to a string - */ - private function resolveBoolInParameters() - { - if (isset($this->options['query'])) { - $this->options['query'] = array_map( - static function ($value) { - return self::boolToString($value); - }, - $this->options['query'] - ); - } - } - - /** - * Convert a Boolean value to a string. - * - * @param bool|string $value - * - * @return string - */ - public static function boolToString($value) - { - if (is_bool($value)) { - return $value ? 'true' : 'false'; - } - - return $value; - } - - /** - * Resolve Common Parameters. - * - * @throws ClientException - * @throws Exception - */ - private function resolveCommonParameters() - { - $signature = $this->httpClient()->getSignature(); - $this->options['query']['RegionId'] = $this->realRegionId(); - $this->options['query']['Format'] = $this->format; - $this->options['query']['SignatureMethod'] = $signature->getMethod(); - $this->options['query']['SignatureVersion'] = $signature->getVersion(); - $this->options['query']['SignatureNonce'] = Sign::uuid($this->product . $this->action); - $this->options['query']['Timestamp'] = gmdate($this->dateTimeFormat); - $this->options['query']['Action'] = $this->action; - if ($this->credential()->getAccessKeyId()) { - $this->options['query']['AccessKeyId'] = $this->credential()->getAccessKeyId(); - } - if ($signature->getType()) { - $this->options['query']['SignatureType'] = $signature->getType(); - } - if (!isset($this->options['query']['Version'])) { - $this->options['query']['Version'] = $this->version; - } - $this->resolveSecurityToken(); - $this->resolveBearerToken(); - $this->options['query']['Signature'] = $this->signature(); - } - - /** - * @throws ClientException - * @throws ServerException - */ - private function resolveSecurityToken() - { - if (!$this->credential() instanceof StsCredential) { - return; - } - - if (!$this->credential()->getSecurityToken()) { - return; - } - - $this->options['query']['SecurityToken'] = $this->credential()->getSecurityToken(); - } - - /** - * @throws ClientException - * @throws ServerException - */ - private function resolveBearerToken() - { - if ($this->credential() instanceof BearerTokenCredential) { - $this->options['query']['BearerToken'] = $this->credential()->getBearerToken(); - } - } - - /** - * Sign the parameters. - * - * @return mixed - * @throws ClientException - * @throws ServerException - */ - private function signature() - { - return $this->httpClient() - ->getSignature() - ->sign( - $this->stringToSign(), - $this->credential()->getAccessKeySecret() . '&' - ); - } - - /** - * @return string - */ - public function stringToSign() - { - $query = isset($this->options['query']) ? $this->options['query'] : []; - $form_params = isset($this->options['form_params']) ? $this->options['form_params'] : []; - $parameters = Arrays::merge([$query, $form_params]); - - return Sign::rpcString($this->method, $parameters); - } - - /** - * Adjust parameter position - */ - private function repositionParameters() - { - if ($this->method === 'POST' || $this->method === 'PUT') { - foreach ($this->options['query'] as $api_key => $api_value) { - $this->options['form_params'][$api_key] = $api_value; - } - unset($this->options['query']); - } - } - - /** - * Magic method for set or get request parameters. - * - * @param string $name - * @param mixed $arguments - * - * @return $this - */ - public function __call($name, $arguments) - { - if (strncmp($name, 'get', 3) === 0) { - $parameter_name = \mb_strcut($name, 3); - - return $this->__get($parameter_name); - } - - if (strncmp($name, 'with', 4) === 0) { - $parameter_name = \mb_strcut($name, 4); - $this->__set($parameter_name, $arguments[0]); - $this->options['query'][$parameter_name] = $arguments[0]; - - return $this; - } - - if (strncmp($name, 'set', 3) === 0) { - $parameter_name = \mb_strcut($name, 3); - $with_method = "with$parameter_name"; - - throw new RuntimeException("Please use $with_method instead of $name"); - } - - throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php b/niucloud/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php deleted file mode 100644 index 5b2dd6bf..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php +++ /dev/null @@ -1,259 +0,0 @@ -action = ApiFilter::action($action); - - return $this; - } - - /** - * @codeCoverageIgnore - * - * @param string $endpointSuffix - * - * @return AcsTrait - * @throws ClientException - */ - public function endpointSuffix($endpointSuffix) - { - $this->endpointSuffix = ApiFilter::endpointSuffix($endpointSuffix); - - return $this; - } - - /** - * @param string $network - */ - public function network($network) - { - $this->network = ApiFilter::network($network); - - return $this; - } - - /** - * @param string $version - * - * @return $this - * @throws ClientException - */ - public function version($version) - { - $this->version = ApiFilter::version($version); - - return $this; - } - - /** - * @param string $product - * - * @return $this - * @throws ClientException - */ - public function product($product) - { - $this->product = ApiFilter::product($product); - - return $this; - } - - /** - * @param string $endpointType - * - * @return $this - * @throws ClientException - */ - public function endpointType($endpointType) - { - $this->endpointType = ApiFilter::endpointType($endpointType); - - return $this; - } - - /** - * @param string $serviceCode - * - * @return $this - * @throws ClientException - */ - public function serviceCode($serviceCode) - { - $this->serviceCode = ApiFilter::serviceCode($serviceCode); - - return $this; - } - - /** - * Resolve Host. - * - * @throws ClientException - * @throws ServerException - */ - public function resolveHost() - { - // Return if specified - if ($this->uri->getHost() !== 'localhost') { - return; - } - - $region_id = $this->realRegionId(); - $host = ''; - - $this->resolveHostWays($host, $region_id); - - if (!$host) { - throw new ClientException( - "No host found for {$this->product} in the {$region_id}, you can specify host by host() method. " . - 'Like $request->host(\'xxx.xxx.aliyuncs.com\')', - SDK::HOST_NOT_FOUND - ); - } - - $this->uri = $this->uri->withHost($host); - } - - /** - * @param string $host - * @param string $region_id - * - * @throws ClientException - * @throws ServerException - */ - private function resolveHostWays(&$host, $region_id) - { - $host = AlibabaCloud::resolveHostByStatic($this->product, $region_id); - - // 1. Find host by map. - if (!$host && $this->network === 'public' && isset($this->endpointMap[$region_id])) { - $host = $this->endpointMap[$region_id]; - } - - if (!$host) { - $this->hostResolver($host, $region_id); - } - } - - /** - * @codeCoverageIgnore - * - * @param string $host - * @param string $region_id - * - * @throws ClientException - * @throws ServerException - */ - private function hostResolver(&$host, $region_id) - { - // 2. Find host by rules. - if ($this->endpointRegional !== null) { - $host = AlibabaCloud::resolveHostByRule($this); - } - - // 3. Find in the local array file. - if (!$host) { - $host = AlibabaCloud::resolveHost($this->product, $region_id); - } - - // 4. Find in the Location service. - if (!$host && $this->serviceCode) { - $host = LocationService::resolveHost($this); - } - } - - /** - * @return string - * @throws ClientException - */ - public function realRegionId() - { - if ($this->regionId !== null) { - return $this->regionId; - } - - if ($this->httpClient()->regionId !== null) { - return $this->httpClient()->regionId; - } - - if (AlibabaCloud::getDefaultRegionId() !== null) { - return AlibabaCloud::getDefaultRegionId(); - } - - if ($this->product && AlibabaCloud::isGlobalProduct($this->product)) { - return 'global'; - } - - throw new ClientException("Missing required 'RegionId' for Request", SDK::INVALID_REGION_ID); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php b/niucloud/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php deleted file mode 100644 index 37a2d22e..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php +++ /dev/null @@ -1,98 +0,0 @@ -httpClient()->getCredential(); - } - - $timeout = isset($this->options['timeout']) - ? $this->options['timeout'] - : Request::TIMEOUT; - - $connectTimeout = isset($this->options['connect_timeout']) - ? $this->options['connect_timeout'] - : Request::CONNECT_TIMEOUT; - - return $this->httpClient()->getSessionCredential($timeout, $connectTimeout); - } - - /** - * Get the client based on the request's settings. - * - * @return Client - * @throws ClientException - */ - public function httpClient() - { - if (!AlibabaCloud::all()) { - if (CredentialsProvider::hasCustomChain()) { - CredentialsProvider::customProvider($this->client); - } else { - CredentialsProvider::defaultProvider($this->client); - } - } - - return AlibabaCloud::get($this->client); - } - - /** - * Merged with the client's options, the same name will be overwritten. - * - * @throws ClientException - */ - public function mergeOptionsIntoClient() - { - $this->options = Arrays::merge( - [ - $this->httpClient()->options, - $this->options - ] - ); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php b/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php deleted file mode 100644 index ee64e52e..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php +++ /dev/null @@ -1,55 +0,0 @@ -pathParameter($name, $value); - } - - /** - * @param $pathPattern - * - * @return $this - * @deprecated - * @codeCoverageIgnore - */ - public function setUriPattern($pathPattern) - { - return $this->pathPattern($pathPattern); - } - - /** - * @return string - * @deprecated - * @codeCoverageIgnore - */ - public function getUriPattern() - { - return $this->pathPattern; - } - - /** - * @return array - * @deprecated - * @codeCoverageIgnore - */ - public function getPathParameters() - { - return $this->pathParameters; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php b/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php deleted file mode 100644 index 406e6ed0..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php +++ /dev/null @@ -1,246 +0,0 @@ -body($content); - } - - /** - * @param $method - * - * @return $this - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function setMethod($method) - { - return $this->method($method); - } - - /** - * @param $scheme - * - * @return $this - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function setProtocol($scheme) - { - return $this->scheme($scheme); - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getProtocolType() - { - return $this->uri->getScheme(); - } - - /** - * @param $scheme - * - * @return $this - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function setProtocolType($scheme) - { - return $this->scheme($scheme); - } - - /** - * @param $actionName - * - * @return $this - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function setActionName($actionName) - { - return $this->action($actionName); - } - - /** - * @param $format - * - * @return $this - * @throws ClientException - * @deprecated - * @codeCoverageIgnore - */ - public function setAcceptFormat($format) - { - return $this->format($format); - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getProtocol() - { - return $this->uri->getScheme(); - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getContent() - { - return isset($this->options['body']) - ? $this->options['body'] - : null; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getMethod() - { - return $this->method; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getHeaders() - { - return isset($this->options['headers']) - ? $this->options['headers'] - : []; - } - - /** - * @param $headerKey - * @param $headerValue - * - * @return $this - * @deprecated - * @codeCoverageIgnore - */ - public function addHeader($headerKey, $headerValue) - { - $this->options['headers'][$headerKey] = $headerValue; - - return $this; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getQueryParameters() - { - return isset($this->options['query']) - ? $this->options['query'] - : []; - } - - /** - * @param $name - * @param $value - * - * @return $this - * @deprecated - * @codeCoverageIgnore - */ - public function setQueryParameters($name, $value) - { - $this->options['query'][$name] = $value; - - return $this; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getDomainParameter() - { - return isset($this->options['form_params']) - ? $this->options['form_params'] - : []; - } - - /** - * @param $name - * @param $value - * - * @return $this - * @deprecated - * @codeCoverageIgnore - */ - public function putDomainParameters($name, $value) - { - $this->options['form_params'][$name] = $value; - - return $this; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getActionName() - { - return $this->action; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getAcceptFormat() - { - return $this->format; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getLocationEndpointType() - { - return $this->endpointType; - } - - /** - * @deprecated - * @codeCoverageIgnore - */ - public function getLocationServiceCode() - { - return $this->serviceCode; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php b/niucloud/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php deleted file mode 100644 index be1d0026..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php +++ /dev/null @@ -1,149 +0,0 @@ -serverRetry = ClientFilter::retry($times); - $this->serverRetryStrings = $strings; - $this->serverRetryStatusCodes = $statusCodes; - - return $this; - } - - /** - * @param int $times - * @param array $strings - * @param array $codes - * - * @return $this - * @throws ClientException - */ - public function retryByClient($times, array $strings, array $codes = []) - { - $this->clientRetry = ClientFilter::retry($times); - $this->clientRetryStrings = $strings; - $this->clientRetryStatusCodes = $codes; - - return $this; - } - - /** - * @param Result $result - * - * @return bool - */ - private function shouldServerRetry(Result $result) - { - if ($this->serverRetry <= 0) { - return false; - } - - if (in_array($result->getStatusCode(), $this->serverRetryStatusCodes)) { - $this->serverRetry--; - - return true; - } - - foreach ($this->serverRetryStrings as $message) { - if (Stringy::contains($result->getBody(), $message)) { - $this->serverRetry--; - - return true; - } - } - - return false; - } - - /** - * @param Exception $exception - * - * @return bool - */ - private function shouldClientRetry(Exception $exception) - { - if ($this->clientRetry <= 0) { - return false; - } - - if (in_array($exception->getCode(), $this->clientRetryStatusCodes, true)) { - $this->clientRetry--; - - return true; - } - - foreach ($this->clientRetryStrings as $message) { - if (Stringy::contains($exception->getMessage(), $message)) { - $this->clientRetry--; - - return true; - } - } - - return false; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Request/UserAgent.php b/niucloud/vendor/alibabacloud/client/src/Request/UserAgent.php deleted file mode 100644 index beb32834..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Request/UserAgent.php +++ /dev/null @@ -1,142 +0,0 @@ - $value) { - if ($value === null) { - $newUserAgent[] = $key; - continue; - } - $newUserAgent[] = "$key/$value"; - } - - return $userAgent . \implode(' ', $newUserAgent); - } - - /** - * UserAgent constructor. - */ - private static function defaultFields() - { - if (self::$userAgent === []) { - self::$userAgent = [ - 'Client' => AlibabaCloud::VERSION, - 'PHP' => \PHP_VERSION, - ]; - } - } - - /** - * @param array $append - * - * @return array - */ - public static function clean(array $append) - { - foreach ($append as $key => $value) { - if (self::isGuarded($key)) { - unset($append[$key]); - continue; - } - } - - return $append; - } - - /** - * @param $name - * - * @return bool - */ - public static function isGuarded($name) - { - return in_array(strtolower($name), self::$guard, true); - } - - /** - * set User Agent of Alibaba Cloud. - * - * @param string $name - * @param string $value - * - * @throws ClientException - */ - public static function append($name, $value) - { - Filter::name($name); - Filter::value($value); - - self::defaultFields(); - - if (!self::isGuarded($name)) { - self::$userAgent[$name] = $value; - } - } - - /** - * @param array $userAgent - */ - public static function with(array $userAgent) - { - self::$userAgent = self::clean($userAgent); - } - - /** - * Clear all of the User Agent. - */ - public static function clear() - { - self::$userAgent = []; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php b/niucloud/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php deleted file mode 100644 index f375567a..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php +++ /dev/null @@ -1,50 +0,0 @@ -action) { - $array = explode('\\', get_class($this)); - $this->action = array_pop($array); - } - } - - /** - * Append SDK version into User-Agent - * - * @throws ClientException - * @throws ReflectionException - */ - private function appendSdkUA() - { - if (!(new ReflectionClass(AlibabaCloud::class))->hasMethod('appendUserAgent')) { - return; - } - - if (!class_exists('AlibabaCloud\Release')) { - return; - } - - AlibabaCloud::appendUserAgent('SDK', \AlibabaCloud\Release::VERSION); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/ApiResolver.php b/niucloud/vendor/alibabacloud/client/src/Resolver/ApiResolver.php deleted file mode 100644 index 7a2bc2b6..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/ApiResolver.php +++ /dev/null @@ -1,113 +0,0 @@ -__call($name, $arguments); - } - - /** - * @param $api - * @param $arguments - * - * @return mixed - * @throws ClientException - */ - public function __call($api, $arguments) - { - $product_name = $this->getProductName(); - $class = $this->getNamespace() . '\\' . \ucfirst($api); - - if (\class_exists($class)) { - if (isset($arguments[0])) { - return $this->warpEndpoint(new $class($arguments[0])); - } - - return $this->warpEndpoint(new $class()); - } - - throw new ClientException( - "{$product_name} contains no $api", - 'SDK.ApiNotFound' - ); - } - - /** - * @param Request $request - * - * @return Request - */ - public function warpEndpoint(Request $request) - { - $reflect = new ReflectionObject($request); - $product_dir = dirname(dirname($reflect->getFileName())); - $endpoints_json = "$product_dir/endpoints.json"; - if (file_exists($endpoints_json)) { - $endpoints = json_decode(file_get_contents($endpoints_json), true); - if (isset($endpoints['endpoint_map'])) { - $request->endpointMap = $endpoints['endpoint_map']; - } - if (isset($endpoints['endpoint_regional'])) { - $request->endpointRegional = $endpoints['endpoint_regional']; - } - } - - return $request; - } - - /** - * @return mixed - * @throws ClientException - */ - private function getProductName() - { - $array = \explode('\\', \get_class($this)); - if (isset($array[3])) { - return str_replace('ApiResolver', '', $array[3]); - } - throw new ClientException( - 'Service name not found.', - 'SDK.ServiceNotFound' - ); - } - - /** - * @return string - * @throws ClientException - */ - private function getNamespace() - { - $array = \explode('\\', \get_class($this)); - - if (!isset($array[3])) { - throw new ClientException( - 'Get namespace error.', - 'SDK.ParseError' - ); - } - - unset($array[3]); - - return \implode('\\', $array); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/CallTrait.php b/niucloud/vendor/alibabacloud/client/src/Resolver/CallTrait.php deleted file mode 100644 index 520c03b0..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/CallTrait.php +++ /dev/null @@ -1,66 +0,0 @@ -__get($parameter); - } - - if (strncmp($name, 'with', 4) === 0) { - $parameter = \mb_strcut($name, 4); - - $value = $this->getCallArguments($name, $arguments); - $this->data[$parameter] = $value; - $this->parameterPosition()[$parameter] = $value; - - return $this; - } - - if (strncmp($name, 'set', 3) === 0) { - $parameter = \mb_strcut($name, 3); - $with_method = "with$parameter"; - - return $this->$with_method($this->getCallArguments($name, $arguments)); - } - - throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); - } - - /** - * @param string $name - * @param array $arguments - * @param int $index - * - * @return mixed - */ - private function getCallArguments($name, array $arguments, $index = 0) - { - if (!isset($arguments[$index])) { - throw new \InvalidArgumentException("Missing arguments to method $name"); - } - - return $arguments[$index]; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/Roa.php b/niucloud/vendor/alibabacloud/client/src/Resolver/Roa.php deleted file mode 100644 index 719cb0a7..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/Roa.php +++ /dev/null @@ -1,43 +0,0 @@ -resolveActionName(); - $this->appendSdkUA(); - } - - /** - * @return mixed - */ - private function ¶meterPosition() - { - return $this->pathParameters; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/Rpc.php b/niucloud/vendor/alibabacloud/client/src/Resolver/Rpc.php deleted file mode 100644 index 0926ca4c..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/Rpc.php +++ /dev/null @@ -1,41 +0,0 @@ -resolveActionName(); - $this->appendSdkUA(); - } - - /** - * @return mixed - */ - private function ¶meterPosition() - { - return $this->options['query']; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Resolver/VersionResolver.php b/niucloud/vendor/alibabacloud/client/src/Resolver/VersionResolver.php deleted file mode 100644 index 56627180..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Resolver/VersionResolver.php +++ /dev/null @@ -1,74 +0,0 @@ -__call($name, $arguments); - } - - /** - * @param string $version - * @param array $arguments - * - * @return mixed - * @throws ClientException - */ - public function __call($version, $arguments) - { - $version = \ucfirst($version); - $product = $this->getProductName(); - - $position = strpos($product, 'Version'); - if ($position !== false && $position !== 0) { - $product = \str_replace('Version', '', $product); - } - - $class = "AlibabaCloud\\{$product}\\$version\\{$product}ApiResolver"; - - if (\class_exists($class)) { - return new $class(); - } - - throw new ClientException( - "$product Versions contains no {$version}", - 'SDK.VersionNotFound' - ); - } - - /** - * @return mixed - * @throws ClientException - */ - private function getProductName() - { - $array = \explode('\\', \get_class($this)); - - if (is_array($array) && isset($array[1])) { - return $array[1]; - } - - throw new ClientException( - 'Service name not found.', - 'SDK.ServiceNotFound' - ); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Result/Result.php b/niucloud/vendor/alibabacloud/client/src/Result/Result.php deleted file mode 100644 index 7c2910e7..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Result/Result.php +++ /dev/null @@ -1,151 +0,0 @@ -getStatusCode(), - $response->getHeaders(), - $response->getBody(), - $response->getProtocolVersion(), - $response->getReasonPhrase() - ); - - $this->request = $request; - - $this->resolveData(); - } - - private function resolveData() - { - $content = $this->getBody()->getContents(); - - switch ($this->getRequestFormat()) { - case 'JSON': - $result_data = $this->jsonToArray($content); - break; - case 'XML': - $result_data = $this->xmlToArray($content); - break; - case 'RAW': - $result_data = $this->jsonToArray($content); - break; - default: - $result_data = $this->jsonToArray($content); - } - - if (!$result_data) { - $result_data = []; - } - - $this->dot($result_data); - } - - /** - * @return string - */ - private function getRequestFormat() - { - return ($this->request instanceof Request) - ? \strtoupper($this->request->format) - : 'JSON'; - } - - /** - * @param string $response - * - * @return array - */ - private function jsonToArray($response) - { - try { - return \GuzzleHttp\json_decode($response, true); - } catch (InvalidArgumentException $exception) { - return []; - } - } - - /** - * @param string $string - * - * @return array - */ - private function xmlToArray($string) - { - try { - return json_decode(json_encode(simplexml_load_string($string)), true); - } catch (Exception $exception) { - return []; - } - } - - /** - * @return string - */ - public function __toString() - { - return (string)$this->getBody(); - } - - /** - * @return Request - */ - public function getRequest() - { - return $this->request; - } - - /** - * @codeCoverageIgnore - * @return Response - * @deprecated - */ - public function getResponse() - { - return $this; - } - - /** - * @return bool - */ - public function isSuccess() - { - return 200 <= $this->getStatusCode() - && 300 > $this->getStatusCode(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/SDK.php b/niucloud/vendor/alibabacloud/client/src/SDK.php deleted file mode 100644 index 8976cd0f..00000000 --- a/niucloud/vendor/alibabacloud/client/src/SDK.php +++ /dev/null @@ -1,57 +0,0 @@ -getMessage(), - SDK::INVALID_CREDENTIAL - ); - } - - return base64_encode($binarySignature); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Signature/Signature.php b/niucloud/vendor/alibabacloud/client/src/Signature/Signature.php deleted file mode 100644 index 3b01e692..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Signature/Signature.php +++ /dev/null @@ -1,49 +0,0 @@ -sign($string, $accessKeySecret); - - return "acs $accessKeyId:$signature"; - } - - /** - * @codeCoverageIgnore - * - * @param string $accessKeySecret - * @param string $method - * @param array $parameters - * - * @return string - */ - public function rpc($accessKeySecret, $method, array $parameters) - { - $string = Sign::rpcString($method, $parameters); - - return $this->sign($string, $accessKeySecret . '&'); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Signature/SignatureInterface.php b/niucloud/vendor/alibabacloud/client/src/Signature/SignatureInterface.php deleted file mode 100644 index afa82c8f..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Signature/SignatureInterface.php +++ /dev/null @@ -1,35 +0,0 @@ - $value) { - if (is_int($key)) { - $result[] = $value; - continue; - } - - if (isset($result[$key]) && is_array($result[$key])) { - $result[$key] = self::merge( - [$result[$key], $value] - ); - continue; - } - - $result[$key] = $value; - } - } - - return $result; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Support/Path.php b/niucloud/vendor/alibabacloud/client/src/Support/Path.php deleted file mode 100644 index e1a64647..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Support/Path.php +++ /dev/null @@ -1,28 +0,0 @@ - $value) { - $pattern = str_replace("[$key]", $value, $pattern); - } - - return $pattern; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Support/Sign.php b/niucloud/vendor/alibabacloud/client/src/Support/Sign.php deleted file mode 100644 index 1310d3d4..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Support/Sign.php +++ /dev/null @@ -1,143 +0,0 @@ - $headerValue) { - $key = strtolower($headerKey); - if (strncmp($key, 'x-acs-', 6) === 0) { - $array[$key] = $headerValue; - } - } - ksort($array); - $string = ''; - foreach ($array as $sortMapKey => $sortMapValue) { - $string .= $sortMapKey . ':' . $sortMapValue[0] . self::$headerSeparator; - } - - return $string; - } - - /** - * @param UriInterface $uri - * - * @return string - */ - private static function resourceString(UriInterface $uri) - { - return $uri->getPath() . '?' . rawurldecode($uri->getQuery()); - } - - /** - * @param string $method - * @param array $headers - * - * @return string - */ - private static function headerString($method, array $headers) - { - $string = $method . self::$headerSeparator; - if (isset($headers['Accept'][0])) { - $string .= $headers['Accept'][0]; - } - $string .= self::$headerSeparator; - - if (isset($headers['Content-MD5'][0])) { - $string .= $headers['Content-MD5'][0]; - } - $string .= self::$headerSeparator; - - if (isset($headers['Content-Type'][0])) { - $string .= $headers['Content-Type'][0]; - } - $string .= self::$headerSeparator; - - if (isset($headers['Date'][0])) { - $string .= $headers['Date'][0]; - } - $string .= self::$headerSeparator; - - $string .= self::acsHeaderString($headers); - - return $string; - } - - /** - * @param string $string - * - * @return null|string|string[] - */ - private static function percentEncode($string) - { - $result = urlencode($string); - $result = str_replace(['+', '*'], ['%20', '%2A'], $result); - $result = preg_replace('/%7E/', '~', $result); - - return $result; - } - - /** - * @param string $method - * @param array $parameters - * - * @return string - */ - public static function rpcString($method, array $parameters) - { - ksort($parameters); - $canonicalized = ''; - foreach ($parameters as $key => $value) { - if ($value === null || $value === '') { - continue; - } - $canonicalized .= '&' . self::percentEncode($key) . '=' . self::percentEncode($value); - } - - return $method . '&%2F&' . self::percentEncode(substr($canonicalized, 1)); - } - - /** - * @param Request $request - * - * @return string - */ - public static function roaString(Request $request) - { - return self::headerString($request->getMethod(), $request->getHeaders()) . - self::resourceString($request->getUri()); - } - - /** - * @param string $salt - * - * @return string - */ - public static function uuid($salt) - { - return md5($salt . uniqid(md5(microtime(true)), true)) . microtime(); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Support/Stringy.php b/niucloud/vendor/alibabacloud/client/src/Support/Stringy.php deleted file mode 100644 index f4c10995..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Support/Stringy.php +++ /dev/null @@ -1,47 +0,0 @@ -data[$offset])) { - return $this->data[$offset]; - } - - $value = null; - - return $value; - } - - /** - * @param string $offset - * @param string|mixed $value - */ - #[\ReturnTypeWillChange] - public function offsetSet($offset, $value) - { - $this->data[$offset] = $value; - } - - /** - * @param string $offset - * - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($offset) - { - return isset($this->data[$offset]); - } - - /** - * @param string $offset - */ - #[\ReturnTypeWillChange] - public function offsetUnset($offset) - { - unset($this->data[$offset]); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/ClientTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/ClientTrait.php deleted file mode 100644 index 2cb5309f..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/ClientTrait.php +++ /dev/null @@ -1,273 +0,0 @@ -load(); - } - $list = []; - foreach (\func_get_args() as $filename) { - $list[$filename] = (new IniCredential($filename))->load(); - } - - return $list; - } - - /** - * Custom Client. - * - * @param CredentialsInterface $credentials - * @param SignatureInterface $signature - * - * @return Client - */ - public static function client(CredentialsInterface $credentials, SignatureInterface $signature) - { - return new Client($credentials, $signature); - } - - /** - * Use the AccessKey to complete the authentication. - * - * @param string $accessKeyId - * @param string $accessKeySecret - * - * @return AccessKeyClient - * @throws ClientException - */ - public static function accessKeyClient($accessKeyId, $accessKeySecret) - { - if (null === $accessKeyId || strpos($accessKeyId, ' ') !== false) { - throw new ClientException( - 'AccessKey ID format is invalid', - SDK::INVALID_ARGUMENT - ); - } - - if (null === $accessKeySecret || strpos($accessKeySecret, ' ') !== false) { - throw new ClientException( - 'AccessKey Secret format is invalid', - SDK::INVALID_ARGUMENT - ); - } - - return new AccessKeyClient($accessKeyId, $accessKeySecret); - } - - /** - * Use the AssumeRole of the RAM account to complete the authentication. - * - * @param string $accessKeyId - * @param string $accessKeySecret - * @param string $roleArn - * @param string $roleSessionName - * @param string|array $policy - * - * @return RamRoleArnClient - * @throws ClientException - */ - public static function ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '') - { - return new RamRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy); - } - - /** - * Use the RAM role of an ECS instance to complete the authentication. - * - * @param string $roleName - * - * @return EcsRamRoleClient - * @throws ClientException - */ - public static function ecsRamRoleClient($roleName) - { - return new EcsRamRoleClient($roleName); - } - - /** - * Use the Bearer Token to complete the authentication. - * - * @param string $bearerToken - * - * @return BearerTokenClient - * @throws ClientException - */ - public static function bearerTokenClient($bearerToken) - { - return new BearerTokenClient($bearerToken); - } - - /** - * Use the STS Token to complete the authentication. - * - * @param string $accessKeyId Access key ID - * @param string $accessKeySecret Access Key Secret - * @param string $securityToken Security Token - * - * @return StsClient - * @throws ClientException - */ - public static function stsClient($accessKeyId, $accessKeySecret, $securityToken = '') - { - return new StsClient($accessKeyId, $accessKeySecret, $securityToken); - } - - /** - * Use the RSA key pair to complete the authentication (supported only on Japanese site) - * - * @param string $publicKeyId - * @param string $privateKeyFile - * - * @return RsaKeyPairClient - * @throws ClientException - */ - public static function rsaKeyPairClient($publicKeyId, $privateKeyFile) - { - return new RsaKeyPairClient($publicKeyId, $privateKeyFile); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php deleted file mode 100644 index 5d5c75a9..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php +++ /dev/null @@ -1,66 +0,0 @@ -network ?: 'public'; - $suffix = $request->endpointSuffix; - if ($network === 'public') { - $network = ''; - } - - if ($request->endpointRegional === 'regional') { - $regionId = $request->realRegionId(); - return "{$request->product}{$suffix}{$network}.{$regionId}.aliyuncs.com"; - } - - if ($request->endpointRegional === 'central') { - return "{$request->product}{$suffix}{$network}.aliyuncs.com"; - } - - throw new InvalidArgumentException('endpointRegional is invalid.'); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/HasDataTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/HasDataTrait.php deleted file mode 100644 index 03c4b9d6..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/HasDataTrait.php +++ /dev/null @@ -1,324 +0,0 @@ -dot->all()); - } - - /** - * Delete the contents of a given key or keys - * - * @param array|int|string|null $keys - */ - public function clear($keys = null) - { - $this->dot->clear($keys); - } - - /** - * Flatten an array with the given character as a key delimiter - * - * @param string $delimiter - * @param array|null $items - * @param string $prepend - * - * @return array - */ - public function flatten($delimiter = '.', $items = null, $prepend = '') - { - return $this->dot->flatten($delimiter, $items, $prepend); - } - - /** - * Return the value of a given key - * - * @param int|string|null $key - * @param mixed $default - * - * @return mixed - */ - public function get($key = null, $default = null) - { - return $this->dot->get($key, $default); - } - - /** - * Set a given key / value pair or pairs - * - * @param array|int|string $keys - * @param mixed $value - */ - public function set($keys, $value = null) - { - $this->dot->set($keys, $value); - } - - /** - * Check if a given key or keys are empty - * - * @param array|int|string|null $keys - * - * @return bool - */ - public function isEmpty($keys = null) - { - return $this->dot->isEmpty($keys); - } - - /** - * Replace all items with a given array as a reference - * - * @param array $items - */ - public function setReference(array &$items) - { - $this->dot->setReference($items); - } - - /** - * Return the value of a given key or all the values as JSON - * - * @param mixed $key - * @param int $options - * - * @return string - */ - public function toJson($key = null, $options = 0) - { - return $this->dot->toJson($key, $options); - } - - /** - * @return array - */ - public function toArray() - { - return $this->dot->all(); - } - - /** - * Check if a given key exists - * - * @param int|string $key - * - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($key) - { - return $this->dot->has($key); - } - - /** - * Return the value of a given key - * - * @param int|string $key - * - * @return mixed - */ - #[\ReturnTypeWillChange] - public function offsetGet($key) - { - return $this->dot->offsetGet($key); - } - - /** - * Set a given value to the given key - * - * @param int|string|null $key - * @param mixed $value - */ - #[\ReturnTypeWillChange] - public function offsetSet($key, $value) - { - $this->dot->offsetSet($key, $value); - } - - /** - * Delete the given key - * - * @param int|string $key - */ - #[\ReturnTypeWillChange] - public function offsetUnset($key) - { - $this->delete($key); - } - - /** - * Delete the given key or keys - * - * @param array|int|string $keys - */ - public function delete($keys) - { - $this->dot->delete($keys); - } - - /* - * -------------------------------------------------------------- - * ArrayAccess interface - * -------------------------------------------------------------- - */ - - /** - * Return the number of items in a given key - * - * @param int|string|null $key - * - * @return int - */ - #[\ReturnTypeWillChange] - public function count($key = null) - { - return $this->dot->count($key); - } - - /** - * Get an iterator for the stored items - * - * @return ArrayIterator - */ - #[\ReturnTypeWillChange] - public function getIterator() - { - return $this->dot->getIterator(); - } - - /** - * Return items for JSON serialization - * - * @return array - */ - #[\ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->dot->jsonSerialize(); - } - - /** - * @param string $name - * - * @return mixed|null - */ - public function __get($name) - { - if (!isset($this->all()[$name])) { - return null; - } - - return \json_decode(\json_encode($this->all()))->$name; - } - - /* - * -------------------------------------------------------------- - * Countable interface - * -------------------------------------------------------------- - */ - - /** - * Return all the stored items - * - * @return array - */ - public function all() - { - return $this->dot->all(); - } - - /** - * @param string $name - * @param mixed $value - */ - public function __set($name, $value) - { - $this->add($name, $value); - } - - /** - * Set a given key / value pair or pairs - * if the key doesn't exist already - * - * @param array|int|string $keys - * @param mixed $value - */ - public function add($keys, $value = null) - { - $this->dot->add($keys, $value); - } - - - /* - * -------------------------------------------------------------- - * ObjectAccess - * -------------------------------------------------------------- - */ - - /** - * @param string $name - * - * @return bool - */ - public function __isset($name) - { - return $this->has($name); - } - - /** - * Check if a given key or keys exists - * - * @param array|int|string $keys - * - * @return bool - */ - public function has($keys) - { - return $this->dot->has($keys); - } - - /** - * @param $name - * - * @return void - */ - public function __unset($name) - { - $this->delete($name); - } - - /** - * @param array $data - */ - protected function dot(array $data = []) - { - $this->dot = new Dot($data); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/HistoryTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/HistoryTrait.php deleted file mode 100644 index f70bb1d4..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/HistoryTrait.php +++ /dev/null @@ -1,68 +0,0 @@ -options['timeout'] = ClientFilter::timeout($seconds); - - return $this; - } - - /** - * @param int $milliseconds - * - * @return $this - * @throws ClientException - */ - public function timeoutMilliseconds($milliseconds) - { - ClientFilter::milliseconds($milliseconds); - $seconds = $milliseconds / 1000; - - return $this->timeout($seconds); - } - - /** - * @param int|float $seconds - * - * @return $this - * @throws ClientException - */ - public function connectTimeout($seconds) - { - $this->options['connect_timeout'] = ClientFilter::connectTimeout($seconds); - - return $this; - } - - /** - * @param int $milliseconds - * - * @return $this - * @throws ClientException - */ - public function connectTimeoutMilliseconds($milliseconds) - { - ClientFilter::milliseconds($milliseconds); - $seconds = $milliseconds / 1000; - - return $this->connectTimeout($seconds); - } - - /** - * @param bool $debug - * - * @return $this - */ - public function debug($debug) - { - $this->options['debug'] = $debug; - - return $this; - } - - /** - * @codeCoverageIgnore - * - * @param array $cert - * - * @return $this - */ - public function cert($cert) - { - $this->options['cert'] = $cert; - - return $this; - } - - /** - * @codeCoverageIgnore - * - * @param array|string $proxy - * - * @return $this - */ - public function proxy($proxy) - { - $this->options['proxy'] = $proxy; - - return $this; - } - - /** - * @param mixed $verify - * - * @return $this - */ - public function verify($verify) - { - $this->options['verify'] = $verify; - - return $this; - } - - /** - * @param array $options - * - * @return $this - */ - public function options(array $options) - { - if ($options !== []) { - $this->options = Arrays::merge([$this->options, $options]); - } - - return $this; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/LogTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/LogTrait.php deleted file mode 100644 index 0457602a..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/LogTrait.php +++ /dev/null @@ -1,97 +0,0 @@ -format('Y-m-d H:i:s.u')], - $template - ); - } - - /** - * Apache Common Log Format. - * - * @param string $formatter - * - * @link http://httpd.apache.org/docs/2.4/logs.html#common - * @see \GuzzleHttp\MessageFormatter - */ - public static function setLogFormat($formatter) - { - self::$logFormat = $formatter; - } - - /** - * @return float|mixed - */ - private static function getCost() - { - return microtime(true) - self::$logStartTime; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/MockTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/MockTrait.php deleted file mode 100644 index 28928d16..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/MockTrait.php +++ /dev/null @@ -1,97 +0,0 @@ -data[$name])) { - return null; - } - - return \json_decode(\json_encode($this->data))->$name; - } - - /** - * @param string $name - * @param mixed $value - */ - public function __set($name, $value) - { - $this->data[$name] = $value; - } - - /** - * @param string $name - * - * @return bool - */ - public function __isset($name) - { - return isset($this->data[$name]); - } - - /** - * @param $name - * - * @return void - */ - public function __unset($name) - { - unset($this->data[$name]); - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/RegionTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/RegionTrait.php deleted file mode 100644 index da6bee43..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/RegionTrait.php +++ /dev/null @@ -1,33 +0,0 @@ -regionId = ClientFilter::regionId($regionId); - - return $this; - } -} diff --git a/niucloud/vendor/alibabacloud/client/src/Traits/RequestTrait.php b/niucloud/vendor/alibabacloud/client/src/Traits/RequestTrait.php deleted file mode 100644 index afcb9a4e..00000000 --- a/niucloud/vendor/alibabacloud/client/src/Traits/RequestTrait.php +++ /dev/null @@ -1,90 +0,0 @@ -"; ; -$accessKeySecret = "<您从OSS获得的AccessKeySecret>"; -$endpoint = "<您选定的OSS数据中心访问域名,例如oss-cn-hangzhou.aliyuncs.com>"; -try { - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### 文件操作 - -文件(又称对象,Object)是OSS中最基本的数据单元,您可以把它简单地理解为文件,用下面代码可以实现一个Object的上传: - -```php -"; -$object = "<您使用的Object名字,注意命名规范>"; -$content = "Hello, OSS!"; // 上传的文件内容 -try { - $ossClient->putObject($bucket, $object, $content); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### 存储空间操作 - -存储空间(又称Bucket)是一个用户用来管理所存储Object的存储空间,对于用户来说是一个管理Object的单元,所有的Object都必须隶属于某个Bucket。您可以按照下面的代码新建一个Bucket: - -```php -"; -try { - $ossClient->createBucket($bucket); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### 返回结果处理 - -OssClient提供的接口返回返回数据分为两种: - -* Put,Delete类接口,接口返回null,如果没有OssException,即可认为操作成功 -* Get,List类接口,接口返回对应的数据,如果没有OssException,即可认为操作成功,举个例子: - -```php -listBuckets(); -$bucketList = $bucketListInfo->getBucketList(); -foreach($bucketList as $bucket) { - print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreateDate() . "\n"); -} -``` -上面代码中的$bucketListInfo的数据类型是 `OSS\Model\BucketListInfo` - - -### 运行Sample程序 - -1. 修改 `samples/Config.php`, 补充配置信息 -2. 执行 `cd samples/ && php RunAll.php` - -### 运行单元测试 - -1. 执行`composer install`下载依赖的库 -2. 设置环境变量 - - export OSS_ACCESS_KEY_ID=access-key-id - export OSS_ACCESS_KEY_SECRET=access-key-secret - export OSS_ENDPOINT=endpoint - export OSS_BUCKET=bucket-name - -3. 执行 `php vendor/bin/phpunit` - -## License - -- MIT - -## 联系我们 - -- [阿里云OSS官方网站](http://oss.aliyun.com) -- [阿里云OSS官方论坛](http://bbs.aliyun.com) -- [阿里云OSS官方文档中心](http://www.aliyun.com/product/oss#Docs) -- 阿里云官方技术支持:[提交工单](https://workorder.console.aliyun.com/#/ticket/createIndex) - -[releases-page]: https://github.com/aliyun/aliyun-oss-php-sdk/releases -[phar-composer]: https://github.com/clue/phar-composer diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/README.md b/niucloud/vendor/aliyuncs/oss-sdk-php/README.md deleted file mode 100644 index b77a3561..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/README.md +++ /dev/null @@ -1,150 +0,0 @@ -# Alibaba Cloud OSS SDK for PHP - -[![Latest Stable Version](https://poser.pugx.org/aliyuncs/oss-sdk-php/v/stable)](https://packagist.org/packages/aliyuncs/oss-sdk-php) -[![Build Status](https://travis-ci.org/aliyun/aliyun-oss-php-sdk.svg?branch=master)](https://travis-ci.org/aliyun/aliyun-oss-php-sdk) -[![Coverage Status](https://coveralls.io/repos/github/aliyun/aliyun-oss-php-sdk/badge.svg?branch=master)](https://coveralls.io/github/aliyun/aliyun-oss-php-sdk?branch=master) - -## [README of Chinese](https://github.com/aliyun/aliyun-oss-php-sdk/blob/master/README-CN.md) - -## Overview - -Alibaba Cloud Object Storage Service (OSS) is a cloud storage service provided by Alibaba Cloud, featuring a massive capacity, security, a low cost, and high reliability. You can upload and download data on any application anytime and anywhere by calling APIs, and perform simple management of data through the web console. The OSS can store any type of files and therefore applies to various websites, development enterprises and developers. - - -## Run environment -- PHP 5.3+. -- cURL extension. - -Tips: - -- In Ubuntu, you can use the ***apt-get*** package manager to install the *PHP cURL extension*: `sudo apt-get install php5-curl`. - -## Install OSS PHP SDK - -- If you use the ***composer*** to manage project dependencies, run the following command in your project's root directory: - - composer require aliyuncs/oss-sdk-php - - You can also declare the dependency on Alibaba Cloud OSS SDK for PHP in the `composer.json` file. - - "require": { - "aliyuncs/oss-sdk-php": "~2.0" - } - - Then run `composer install` to install the dependency. After the Composer Dependency Manager is installed, import the dependency in your PHP code: - - require_once __DIR__ . '/vendor/autoload.php'; - -- You can also directly download the packaged [PHAR File][releases-page], and - introduce the file to your code: - - require_once '/path/to/oss-sdk-php.phar'; - -- Download the SDK source code, and introduce the `autoload.php` file under the SDK directory to your code: - - require_once '/path/to/oss-sdk/autoload.php'; - -## Quick use - -### Common classes - -| Class | Explanation | -|:------------------|:------------------------------------| -|OSS\OssClient | OSS client class. An OssClient instance can be used to call the interface. | -|OSS\Core\OssException |OSS Exception class . You only need to pay attention to this exception when you use the OssClient. | - -### Initialize an OssClient - -The SDK's operations for the OSS are performed through the OssClient class. The code below creates an OssClient object: - -```php -"; -$accessKeySecret = ""; -$endpoint = ""; -try { - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### Operations on objects - -Objects are the most basic data units on the OSS. You can simply consider objects as files. The following code uploads an object: - -```php -"; -$object = ""; -$content = "Hello, OSS!"; // Content of the uploaded file -try { - $ossClient->putObject($bucket, $object, $content); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### Operations on buckets - -Buckets are the space that you use to manage the stored objects. It is an object management unit for users. Each object must belong to a bucket. You can create a bucket with the following code: - -```php -"; -try { - $ossClient->createBucket($bucket); -} catch (OssException $e) { - print $e->getMessage(); -} -``` - -### Handle returned results - -The OssClient provides the following two types of returned data from interfaces: - -- Put and Delete interfaces: The *PUT* and *DELETE* operations are deemed successful if *null* is returned by the interfaces without *OSSException*. -- Get and List interfaces: The *GET* and *LIST* operations are deemed successful if the desired data is returned by the interfaces without *OSSException*. For example, - - ```php - listBuckets(); - $bucketList = $bucketListInfo->getBucketList(); - foreach($bucketList as $bucket) { - print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreateDate() . "\n"); - } - ``` -In the above code, $bucketListInfo falls into the 'OSS\Model\BucketListInfo' data type. - - -### Run a sample project - -- Modify `samples/Config.php` to complete the configuration information. -- Run `cd samples/ && php RunAll.php`. - -### Run a unit test - -- Run `composer install` to download the dependent libraries. -- Set the environment variable. - - export OSS_ACCESS_KEY_ID=access-key-id - export OSS_ACCESS_KEY_SECRET=access-key-secret - export OSS_ENDPOINT=endpoint - export OSS_BUCKET=bucket-name - -- Run `php vendor/bin/phpunit` - -## License - -- MIT - -## Contact us - -- [Alibaba Cloud OSS official website](http://oss.aliyun.com). -- [Alibaba Cloud OSS official forum](http://bbs.aliyun.com). -- [Alibaba Cloud OSS official documentation center](http://www.aliyun.com/product/oss#Docs). -- Alibaba Cloud official technical support: [Submit a ticket](https://workorder.console.aliyun.com/#/ticket/createIndex). - -[releases-page]: https://github.com/aliyun/aliyun-oss-php-sdk/releases -[phar-composer]: https://github.com/clue/phar-composer - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/autoload.php b/niucloud/vendor/aliyuncs/oss-sdk-php/autoload.php deleted file mode 100644 index ec132011..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/autoload.php +++ /dev/null @@ -1,11 +0,0 @@ -=5.3" - }, - "require-dev" : { - "phpunit/phpunit": "*", - "satooshi/php-coveralls": "*" - }, - "minimum-stability": "stable", - "autoload": { - "psr-4": {"OSS\\": "src/OSS"} - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/example.jpg b/niucloud/vendor/aliyuncs/oss-sdk-php/example.jpg deleted file mode 100644 index ffd46a2f..00000000 Binary files a/niucloud/vendor/aliyuncs/oss-sdk-php/example.jpg and /dev/null differ diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/index.php b/niucloud/vendor/aliyuncs/oss-sdk-php/index.php deleted file mode 100644 index cdc28bc1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/index.php +++ /dev/null @@ -1,3 +0,0 @@ - - - - - - - ./src - - - - - - - - ./tests - ./tests/OSS/Tests/BucketCnameTest.php - - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php deleted file mode 100644 index a54b74e6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Bucket.php +++ /dev/null @@ -1,254 +0,0 @@ -createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); -Common::println("bucket $bucket created"); - -// Check whether a bucket exists -$doesExist = $ossClient->doesBucketExist($bucket); -Common::println("bucket $bucket exist? " . ($doesExist ? "yes" : "no")); - -// Get the region of bucket -$regions = $ossClient->getBucketLocation($bucket); -Common::println("bucket $bucket region: " .print_r($regions,true)); - -// Get the meta of a bucket -$metas = $ossClient->getBucketMeta($bucket); -Common::println("bucket $bucket meta: " .print_r($metas,true)); - -// Get the info of bucket -$info = $ossClient->getBucketInfo($bucket); -Common::println("bucket name:".$info->getName()."\n"); -Common::println("bucket location:". $info->getLocation()."\n"); -Common::println("bucket creation time:".$info->getCreateDate()."\n"); -Common::println("bucket storage class:".$info->getStorageClass()."\n"); -Common::println("bucket extranet endpoint:".$info->getExtranetEndpoint()."\n"); -Common::println("bucket intranet endpoint:".$info->getIntranetEndpoint()."\n"); - - -// Get the bucket list -$bucketListInfo = $ossClient->listBuckets(); - -// Set bucket ACL -$ossClient->putBucketAcl($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); -Common::println("bucket $bucket acl put"); -// Get bucket ACL -$acl = $ossClient->getBucketAcl($bucket); -Common::println("bucket $bucket acl get: " . $acl); - - -//******************************* For complete usage, see the following functions **************************************************** - -createBucket($ossClient, $bucket); -doesBucketExist($ossClient, $bucket); -getBucketLocation($ossClient, $bucket); -getBucketMeta($ossClient,$bucket); -getBucketInfo($ossClient, $bucket); -deleteBucket($ossClient, $bucket); -putBucketAcl($ossClient, $bucket); -getBucketAcl($ossClient, $bucket); -listBuckets($ossClient); - -/** - * Create a new bucket - * acl indicates the access permission of a bucket, including: private, public-read-only/private-read-write, and public read-write. - * Private indicates that only the bucket owner or authorized users can access the data.. - * The three permissions are separately defined by (OssClient::OSS_ACL_TYPE_PRIVATE,OssClient::OSS_ACL_TYPE_PUBLIC_READ, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE) - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function createBucket($ossClient, $bucket) -{ - try { - $ossClient->createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Check whether a bucket exists. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - */ -function doesBucketExist($ossClient, $bucket) -{ - try { - $res = $ossClient->doesBucketExist($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - if ($res === true) { - print(__FUNCTION__ . ": OK" . "\n"); - } else { - print(__FUNCTION__ . ": FAILED" . "\n"); - } -} - -/** - * Get the info of bucket - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - */ -function getBucketInfo($ossClient, $bucket) -{ - try { - $info = $ossClient->getBucketInfo($bucket); - printf("bucket name:%s\n", $info->getName()); - printf("bucket location:%s\n", $info->getLocation()); - printf("bucket creation time:%s\n", $info->getCreateDate()); - printf("bucket storage class:%s\n", $info->getStorageClass()); - printf("bucket extranet endpoint:%s\n", $info->getExtranetEndpoint()); - printf("bucket intranet endpoint:%s\n", $info->getIntranetEndpoint()); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Get the meta of a bucket - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - */ -function getBucketLocation($ossClient, $bucket) -{ - try { - $regions = $ossClient->getBucketLocation($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print("bucket $bucket region: " .print_r($regions,true)); - -} - - -/** - * Get the bucket's meta - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - */ -function getBucketMeta($ossClient, $bucket) -{ - try { - $metas = $ossClient->getBucketMeta($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print("bucket $bucket meta: " .print_r($metas,true)); -} - -/** - * Delete a bucket. If the bucket is not empty, the deletion fails. - * A bucket which is not empty indicates that it does not contain any objects or parts that are not completely uploaded during multipart upload - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to delete - * @return null - */ -function deleteBucket($ossClient, $bucket) -{ - try { - $ossClient->deleteBucket($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Set bucket ACL - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putBucketAcl($ossClient, $bucket) -{ - $acl = OssClient::OSS_ACL_TYPE_PRIVATE; - try { - $ossClient->putBucketAcl($bucket, $acl); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Get bucket ACL - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketAcl($ossClient, $bucket) -{ - try { - $res = $ossClient->getBucketAcl($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print('acl: ' . $res); -} - - -/** - * List all buckets - * - * @param OssClient $ossClient OssClient instance - * @return null - */ -function listBuckets($ossClient) -{ - $bucketList = null; - try { - $bucketListInfo = $ossClient->listBuckets(); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - $bucketList = $bucketListInfo->getBucketList(); - foreach ($bucketList as $bucket) { - print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n"); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCname.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCname.php deleted file mode 100644 index c39eb401..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCname.php +++ /dev/null @@ -1,91 +0,0 @@ -'; -$ossClient->addBucketCname($bucket, $myDomain); - -// View cname records -$cnameConfig = $ossClient->getBucketCname($bucket); -Common::println("bucket $bucket cname:" . $cnameConfig->serializeToXml()); - -// Delete bucket cname -$myDomain = ''; -$ossClient->deleteBucketCname($bucket,$myDomain); -Common::println("bucket $bucket cname deleted"); - -//******************************* For complete usage, see the following functions **************************************************** - -addBucketCname($ossClient, $bucket); -getBucketCname($ossClient, $bucket); -deleteBucketCname($ossClient, $bucket); - -/** - * Set bucket cname - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function addBucketCname($ossClient, $bucket) -{ - // Set up a custom domain name. - $myDomain = ''; - try { - $ossClient->addBucketCname($bucket, $myDomain); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get bucket cname - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketCname($ossClient, $bucket) -{ - try { - $cnameConfig = $ossClient->getBucketCname($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($cnameConfig->serializeToXml() . "\n"); -} - -/** - * Delete bucket cname - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketCname($ossClient, $bucket) -{ - $myDomain = ''; - try { - $ossClient->deleteBucketCname($bucket, $myDomain); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php deleted file mode 100644 index dfa42d32..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketCors.php +++ /dev/null @@ -1,108 +0,0 @@ -addAllowedHeader("x-oss-header"); -$rule->addAllowedOrigin("http://www.b.com"); -$rule->addAllowedMethod("POST"); -$rule->setMaxAgeSeconds(10); -$corsConfig->addRule($rule); -$ossClient->putBucketCors($bucket, $corsConfig); -Common::println("bucket $bucket corsConfig created:" . $corsConfig->serializeToXml()); - -// Get cors configuration -$corsConfig = $ossClient->getBucketCors($bucket); -Common::println("bucket $bucket corsConfig fetched:" . $corsConfig->serializeToXml()); - -// Delete cors configuration -$ossClient->deleteBucketCors($bucket); -Common::println("bucket $bucket corsConfig deleted"); - -//******************************* For complete usage, see the following functions ***************************************************** - -putBucketCors($ossClient, $bucket); -getBucketCors($ossClient, $bucket); -deleteBucketCors($ossClient, $bucket); -getBucketCors($ossClient, $bucket); - -/** - * Set bucket cores - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putBucketCors($ossClient, $bucket) -{ - $corsConfig = new CorsConfig(); - $rule = new CorsRule(); - $rule->addAllowedHeader("x-oss-header"); - $rule->addAllowedOrigin("http://www.b.com"); - $rule->addAllowedMethod("POST"); - $rule->setMaxAgeSeconds(10); - $corsConfig->addRule($rule); - - try { - $ossClient->putBucketCors($bucket, $corsConfig); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get and print the cors configuration of a bucket - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketCors($ossClient, $bucket) -{ - $corsConfig = null; - try { - $corsConfig = $ossClient->getBucketCors($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($corsConfig->serializeToXml() . "\n"); -} - -/** - * Delete all cors configuraiton of a bucket - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketCors($ossClient, $bucket) -{ - try { - $ossClient->deleteBucketCors($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketEncryption.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketEncryption.php deleted file mode 100644 index 0e61d5bf..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketEncryption.php +++ /dev/null @@ -1,98 +0,0 @@ -putBucketEncryption($bucket, $config); -Common::println("bucket $bucket encryoption created"); - -$config = $ossClient->getBucketEncryption($bucket); -Common::println("bucket $bucket encryoption:".$config->serializeToXml()); - -$config = $ossClient->deleteBucketEncryption($bucket); -Common::println("bucket $bucket encryoption has deleted"); - -//******************************* For complete usage, see the following functions **************************************************** -putBucketEncryption($ossClient, $bucket); -getBucketEncryption($ossClient, $bucket); -deleteBucketEncryption($ossClient, $bucket); - -/** - * Configure Bucket encryption - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ - -function putBucketEncryption($ossClient,$bucket){ - try { - // Set Bucket's default server-side encryption method to OSS fully managed encryption (SSE-OSS). - $config = new ServerSideEncryptionConfig("AES256"); - // Set Bucket's default server-side encryption method to KMS, and do not specify a CMK ID. - //$config = new ServerSideEncryptionConfig("KMS"); - // Set Bucket's default server-side encryption method to KMS, and specify the CMK ID. - //$config = new ServerSideEncryptionConfig("KMS", "your kms id"); - $ossClient->putBucketEncryption($bucket, $config); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get Bucket encryption - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ - -function getBucketEncryption($ossClient,$bucket){ - try { - $config = $ossClient->getBucketEncryption($bucket); - print($config->getSSEAlgorithm()); - print($config->getKMSMasterKeyID()); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Delete Bucket encryption - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ - -function deleteBucketEncryption($ossClient,$bucket){ - try { - $ossClient->deleteBucketEncryption($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php deleted file mode 100644 index 04d2edd6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLifecycle.php +++ /dev/null @@ -1,109 +0,0 @@ -addRule($lifecycleRule); -$ossClient->putBucketLifecycle($bucket, $lifecycleConfig); -Common::println("bucket $bucket lifecycleConfig created:" . $lifecycleConfig->serializeToXml()); - -// Get lifecycle configuration -$lifecycleConfig = $ossClient->getBucketLifecycle($bucket); -Common::println("bucket $bucket lifecycleConfig fetched:" . $lifecycleConfig->serializeToXml()); - -// Delete bucket lifecycle configuration -$ossClient->deleteBucketLifecycle($bucket); -Common::println("bucket $bucket lifecycleConfig deleted"); - - -//***************************** For complete usage, see the following functions *********************************************** - -putBucketLifecycle($ossClient, $bucket); -getBucketLifecycle($ossClient, $bucket); -deleteBucketLifecycle($ossClient, $bucket); -getBucketLifecycle($ossClient, $bucket); - -/** - * Set bucket lifecycle configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putBucketLifecycle($ossClient, $bucket) -{ - $lifecycleConfig = new LifecycleConfig(); - $actions = array(); - $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3); - $lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled", $actions); - $lifecycleConfig->addRule($lifecycleRule); - $actions = array(); - $actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z'); - $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled", $actions); - $lifecycleConfig->addRule($lifecycleRule); - try { - $ossClient->putBucketLifecycle($bucket, $lifecycleConfig); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get bucket lifecycle configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketLifecycle($ossClient, $bucket) -{ - $lifecycleConfig = null; - try { - $lifecycleConfig = $ossClient->getBucketLifecycle($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($lifecycleConfig->serializeToXml() . "\n"); -} - -/** - * Delete bucket lifecycle configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketLifecycle($ossClient, $bucket) -{ - try { - $ossClient->deleteBucketLifecycle($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php deleted file mode 100644 index eef71f22..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketLogging.php +++ /dev/null @@ -1,95 +0,0 @@ -putBucketLogging($bucket, $bucket, "access.log", array()); -Common::println("bucket $bucket lifecycleConfig created"); - -// Get bucket access logging rules -$loggingConfig = $ossClient->getBucketLogging($bucket, array()); -Common::println("bucket $bucket lifecycleConfig fetched:" . $loggingConfig->serializeToXml()); - -// Delete bucket access logging rules -$loggingConfig = $ossClient->getBucketLogging($bucket, array()); -Common::println("bucket $bucket lifecycleConfig deleted"); - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketLogging($ossClient, $bucket); -getBucketLogging($ossClient, $bucket); -deleteBucketLogging($ossClient, $bucket); -getBucketLogging($ossClient, $bucket); - -/** - * Set bucket logging configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putBucketLogging($ossClient, $bucket) -{ - $option = array(); - // Access logs are stored in the same bucket. - $targetBucket = $bucket; - $targetPrefix = "access.log"; - - try { - $ossClient->putBucketLogging($bucket, $targetBucket, $targetPrefix, $option); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get bucket logging configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketLogging($ossClient, $bucket) -{ - $loggingConfig = null; - $options = array(); - try { - $loggingConfig = $ossClient->getBucketLogging($bucket, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($loggingConfig->serializeToXml() . "\n"); -} - -/** - * Delete bucket logging configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketLogging($ossClient, $bucket) -{ - try { - $ossClient->deleteBucketLogging($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPayment.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPayment.php deleted file mode 100644 index ad045559..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPayment.php +++ /dev/null @@ -1,116 +0,0 @@ -putBucketRequestPayment($bucket, "Requester"); - -//Get requester payment mode configuration -$payer = $ossClient->getBucketRequestPayment($bucket); -Common::println("bucket $bucket Payer:".$payer.PHP_EOL); - -//Third-party paid access to Object -$options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - -$content = "hello"; -$object = "object"; - -//PutObject interface to specify the payer -$ossClient->putObject($bucket, $object, $content, $options); - -// GetObject interface to specify the payer -$ossClient->getObject($bucket, $object, $options); - -// DeleteObject interface to specify the payer -$ossClient->deleteObject($bucket, $object, $options); - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketRequestPayment($ossClient,$bucket); -getBucketRequestPayment($ossClient,$bucket); -setObjectPayment($ossClient,$bucket); - -/** - * Set requester payment mode - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function putBucketRequestPayment($ossClient, $bucket) -{ - try { - $ossClient->putBucketRequestPayment($bucket, "Requester"); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Get payment mode of bucket - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function getBucketRequestPayment($ossClient, $bucket) -{ - try { - $payer = $ossClient->getBucketRequestPayment($bucket); - print("bucket $bucket Payer:".$payer.PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Set payment mode of object - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function setObjectPayment($ossClient,$bucket){ - // Specify the payment model for the requester. - $options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - - try { - - $content = "hello"; - $object = "object"; - //PutObject interface to specify the payer - $ossClient->putObject($bucket, $object, $content, $options); - // GetObject interface to specify the payer - $ossClient->getObject($bucket, $object, $options); - // DeleteObject interface to specify the payer - $ossClient->deleteObject($bucket, $object, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPolicy.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPolicy.php deleted file mode 100644 index 333eface..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketPolicy.php +++ /dev/null @@ -1,123 +0,0 @@ -putBucketPolicy($bucket, $policy); - -// Get bucket pllicy -$policy = $ossClient->getBucketPolicy($bucket); -Common::println("bucket $bucket policy: " . $policy); - - -// Delete bucket pllicy -$policy = $ossClient->deleteBucketPolicy($bucket); - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketPolicy($ossClient, $bucket); -getBucketPolicy($ossClient, $bucket); -deleteBucketPolicy($ossClient, $bucket); - -/** - * Set Bucket Policy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function putBucketPolicy($ossClient, $bucket) -{ - $policy = <<< BBBB -{ - "Version":"1", - "Statement":[ - { - "Action":[ - "oss:PutObject", - "oss:GetObject" - ], - "Effect":"Allow", - "Resource":["acs:oss:*:*:*/user1/*"] - } - ] -} -BBBB; - - try { - $ossClient->putBucketPolicy($bucket, $policy); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Get Bucket Policy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function getBucketPolicy($ossClient, $bucket) -{ - try { - $policy = $ossClient->getBucketPolicy($bucket); - print($policy); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Delete Bucket Policy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function deleteBucketPolicy($ossClient, $bucket) -{ - try { - $ossClient->deleteBucketPolicy($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php deleted file mode 100644 index 628f7846..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketReferer.php +++ /dev/null @@ -1,101 +0,0 @@ -setAllowEmptyReferer(true); -$refererConfig->addReferer("www.aliiyun.com"); -$refererConfig->addReferer("www.aliiyuncs.com"); -$ossClient->putBucketReferer($bucket, $refererConfig); -Common::println("bucket $bucket refererConfig created:" . $refererConfig->serializeToXml()); -// Get referer whitelist -$refererConfig = $ossClient->getBucketReferer($bucket); -Common::println("bucket $bucket refererConfig fetched:" . $refererConfig->serializeToXml()); - -// Delete referrer whitelist -$refererConfig = new RefererConfig(); -$ossClient->putBucketReferer($bucket, $refererConfig); -Common::println("bucket $bucket refererConfig deleted"); - - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketReferer($ossClient, $bucket); -getBucketReferer($ossClient, $bucket); -deleteBucketReferer($ossClient, $bucket); -getBucketReferer($ossClient, $bucket); - -/** - * Set bucket referer configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putBucketReferer($ossClient, $bucket) -{ - $refererConfig = new RefererConfig(); - $refererConfig->setAllowEmptyReferer(true); - $refererConfig->addReferer("www.aliiyun.com"); - $refererConfig->addReferer("www.aliiyuncs.com"); - try { - $ossClient->putBucketReferer($bucket, $refererConfig); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get bucket referer configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketReferer($ossClient, $bucket) -{ - $refererConfig = null; - try { - $refererConfig = $ossClient->getBucketReferer($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($refererConfig->serializeToXml() . "\n"); -} - -/** - * Delete bucket referer configuration - * Referer whitelist cannot be directly deleted. So use a empty one to overwrite it. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketReferer($ossClient, $bucket) -{ - $refererConfig = new RefererConfig(); - try { - $ossClient->putBucketReferer($bucket, $refererConfig); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketStat.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketStat.php deleted file mode 100644 index 43c03e65..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketStat.php +++ /dev/null @@ -1,65 +0,0 @@ -getBucketStat($bucket); -Common::println("Bucket ".$bucket." current storage is:".$stat->getStorage().PHP_EOL); -Common::println("Bucket ".$bucket." object count is:".$stat->getObjectCount().PHP_EOL); -Common::println("Bucket ".$bucket." multipart upload count is:".$stat->getMultipartUploadCount().PHP_EOL); -Common::println("Bucket ".$bucket." live channel count is:".$stat->getLiveChannelCount().PHP_EOL); -Common::println("Bucket ".$bucket." last modified time is:".$stat->getLastModifiedTime().PHP_EOL); -Common::println("Bucket ".$bucket." standard storage is:".$stat->getStandardStorage().PHP_EOL); -Common::println("Bucket ".$bucket." standard object count is:".$stat->getStandardObjectCount().PHP_EOL); -Common::println("Bucket ".$bucket." infrequent access storage is:".$stat->getInfrequentAccessStorage().PHP_EOL); -Common::println("Bucket ".$bucket." infrequent access real storage is:".$stat->getInfrequentAccessRealStorage().PHP_EOL); -Common::println("Bucket ".$bucket." infrequent access object count is:".$stat->getInfrequentAccessObjectCount().PHP_EOL); -Common::println("Bucket ".$bucket." archive storage is:".$stat->getArchiveStorage().PHP_EOL); -Common::println("Bucket ".$bucket." archive real storage is:".$stat->getArchiveRealStorage().PHP_EOL); -Common::println("Bucket ".$bucket." archive object count is:".$stat->getArchiveObjectCount().PHP_EOL); -Common::println("Bucket ".$bucket." cold archive storage is:".$stat->getColdArchiveStorage().PHP_EOL); -Common::println("Bucket ".$bucket." cold archive real storage is:".$stat->getColdArchiveRealStorage().PHP_EOL); -Common::println("Bucket ".$bucket." cold archive object count is:".$stat->getColdArchiveObjectCount().PHP_EOL); - -//******************************* For complete usage, see the following functions **************************************************** -getBucketStat($ossClient,$bucket); -/** - * get bucket stat - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function getBucketStat($ossClient, $bucket) -{ - try { - $stat = $ossClient->getBucketStat($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - printf("Bucket ".$bucket." current storage is:".$stat->getStorage().PHP_EOL); - printf("Bucket ".$bucket." object count is:".$stat->getObjectCount().PHP_EOL); - printf("Bucket ".$bucket." multipart upload count is:".$stat->getMultipartUploadCount().PHP_EOL); - printf("Bucket ".$bucket." live channel count is:".$stat->getLiveChannelCount().PHP_EOL); - printf("Bucket ".$bucket." last modified time is:".$stat->getLastModifiedTime().PHP_EOL); - printf("Bucket ".$bucket." standard storage is:".$stat->getStandardStorage().PHP_EOL); - printf("Bucket ".$bucket." standard object count is:".$stat->getStandardObjectCount().PHP_EOL); - printf("Bucket ".$bucket." infrequent access storage is:".$stat->getInfrequentAccessStorage().PHP_EOL); - printf("Bucket ".$bucket." infrequent access real storage is:".$stat->getInfrequentAccessRealStorage().PHP_EOL); - printf("Bucket ".$bucket." infrequent access object count is:".$stat->getInfrequentAccessObjectCount().PHP_EOL); - printf("Bucket ".$bucket." archive storage is:".$stat->getArchiveStorage().PHP_EOL); - printf("Bucket ".$bucket." archive real storage is:".$stat->getArchiveRealStorage().PHP_EOL); - printf("Bucket ".$bucket." archive object count is:".$stat->getArchiveObjectCount().PHP_EOL); - printf("Bucket ".$bucket." cold archive storage is:".$stat->getColdArchiveStorage().PHP_EOL); - printf("Bucket ".$bucket." cold archive real storage is:".$stat->getColdArchiveRealStorage().PHP_EOL); - printf("Bucket ".$bucket." cold archive object count is:".$stat->getColdArchiveObjectCount().PHP_EOL); - print(__FUNCTION__ . ": OK" . "\n"); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTags.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTags.php deleted file mode 100644 index e361eaad..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTags.php +++ /dev/null @@ -1,112 +0,0 @@ -addTag(new Tag("key1", "value1")); -$config->addTag(new Tag("key2", "value2")); -$ossClient->putBucketTags($bucket, $config); - -// Get bucket tags -$config = $ossClient->getBucketTags($bucket); -Common::println("bucket $bucket tags: ".$config->serializeToXml()); - -// Delete bucket tags - -// Delete the specified tag of the bucket. -$tags = array(); -$tags[] = new Tag("key1", "value1"); -$tags[] = new Tag("key2", "value2"); -$ossClient->deleteBucketTags($bucket, $tags); - -// Delete all tags in the bucket. -$ossClient->deleteBucketTags($bucket); - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketTags($ossClient, $bucket); -getBucketTags($ossClient, $bucket); -deleteBucketTags($ossClient, $bucket); - - -/** - * Create bucket tag - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function putBucketTags($ossClient, $bucket) -{ - try { - // 设置Bucket标签。 - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $config->addTag(new Tag("key2", "value2")); - $ossClient->putBucketTags($bucket, $config); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * get bucket tag - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function getBucketTags($ossClient, $bucket) -{ - try { - $config = $ossClient->getBucketTags($bucket); - print_r($config->getTags()); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * delete bucket tag - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function deleteBucketTags($ossClient, $bucket) -{ - try { - // Delete the specified tag of the bucket. - $tags = array(); - $tags[] = new Tag("key1", "value1"); - $tags[] = new Tag("key2", "value2"); - $ossClient->deleteBucketTags($bucket, $tags); - - // Delete all tags in the bucket. - //$ossClient->deleteBucketTags($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTransferAcceleration.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTransferAcceleration.php deleted file mode 100644 index ee112dbc..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketTransferAcceleration.php +++ /dev/null @@ -1,61 +0,0 @@ -sfer acceleration -$enabled = true; // set true to enable transfer acceleration; set false to disalbe transfer acceleration -$ossClient->putBucketTransferAcceleration($bucket, $enabled); -printf('putBucketTransferAcceleration SUCCESS' . "\n"); - - -// get transfer acceleration -$result = $ossClient->getBucketTransferAcceleration($bucket); -printf('getBucketTransferAcceleration Status:%s'."\n",$result); - - -//******************************* For complete usage, see the following functions **************************************************** -putBucketTransferAcceleration($ossClient,$bucket); -getBucketTransferAcceleration($bucket); - -/** - * @param $ossClient OssClient - * @param $bucket bucket_name string - * @param $enabled string - */ -function putBucketTransferAcceleration($ossClient, $bucket, $enabled) -{ - try{ - $enabled = true; // set true to enable transfer acceleration; set false to disalbe transfer acceleration - $ossClient->putBucketTransferAcceleration($bucket,$enabled); - printf('putBucketTransferAcceleration SUCCESS' . "\n"); - } catch(OssException $e) { - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function getBucketTransferAcceleration($ossClient, $bucket) -{ - try{ - $result = $ossClient->getBucketTransferAcceleration($bucket); - printf('getBucketTransferAcceleration Status:%s'."\n",$result); - } catch(OssException $e) { - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketVersion.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketVersion.php deleted file mode 100644 index a1b4ed68..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketVersion.php +++ /dev/null @@ -1,235 +0,0 @@ -putBucketVersioning($bucket, "Enabled"); -Common::println("bucket $bucket version Enabled"); -// show all object list -$option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null -); -$bool = true; -while ($bool) { - $result = $ossClient->listObjectVersions($bucket, $option); - ## View the version information of the listed object. - foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); - } - - ## View the version information that lists the deletion flags. - foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); - } - - if ($result->getIsTruncated() === 'true') { - $option = array( - OssClient::OSS_KEY_MARKER => $result->getNextKeyMarker(), - OssClient::OSS_VERSION_ID_MARKER => $result->getNextVersionIdMarker() - ); - } else { - $bool = false; - } -} - -// show the prefix object - -$option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null, - OssClient::OSS_PREFIX => "test" -); -$bool = true; -while ($bool) { - $result = $ossClient->listObjectVersions($bucket, $option); - ## View the version information of the listed object. - foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); - } - - ## View the version information that lists the deletion flags. - foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); - } - - if ($result->getIsTruncated() === 'true') { - $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); - $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); - } else { - $bool = false; - } -} - -// list the number of objects - -$option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null, - OssClient::OSS_MAX_KEYS => 200 -); - -$result = $ossClient->listObjectVersions($bucket, $option); -## View the version information of the listed object. -foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); -} - -## View the version information that lists the deletion flags. -foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); -} - - -// show root folder list -$option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null, - OssClient::OSS_DELIMITER => "/", -); -$bool = true; -while ($bool) { - $result = $ossClient->listObjectVersions($bucket, $option); - ## View the version information of the listed object. - foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); - } - - ## View the version information that lists the deletion flags. - foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); - } - - if ($result->getIsTruncated() === 'true') { - $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); - $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); - } else { - $bool = false; - } -} - -// Show subfolder objects list -$option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null, - OssClient::OSS_DELIMITER => "/", - OssClient::OSS_PREFIX => "test/", -); -$bool = true; -while ($bool) { - $result = $ossClient->listObjectVersions($bucket, $option); - ## View the version information of the listed object. - foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); - } - - ## View the version information that lists the deletion flags. - foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); - } - - if ($result->getIsTruncated() === 'true') { - $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); - $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); - } else { - $bool = false; - } -} - - -//******************************* For complete usage, see the following functions **************************************************** - -listObjectVersions($ossClient, $bucket); -putBucketVersioning($ossClient, $bucket); -/** - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function listObjectVersions($ossClient, $bucket) -{ - try { - $option = array( - OssClient::OSS_KEY_MARKER => null, - OssClient::OSS_VERSION_ID_MARKER => null, - ); - $bool = true; - while ($bool) { - $result = $ossClient->listObjectVersions($bucket, $option); - ## View the version information of the listed object. - foreach ($result->getObjectVersionList() as $key => $info) { - Common::println("key name: " . $info->getKey()); - Common::println("versionid: " . $info->getVersionId()); - Common::println("Is latest: " . $info->getIsLatest()); - } - - ## View the version information that lists the deletion flags. - foreach ($result->getDeleteMarkerList() as $key => $info) { - Common::println("del_maker key name: " . $info->getKey()); - Common::println("del_maker versionid: " . $info->getVersionId()); - Common::println("del_maker Is latest: " . $info->getIsLatest()); - } - - if ($result->getIsTruncated() === 'true') { - $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker(); - $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker(); - } else { - $bool = false; - } - } - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Enabled or Suspended bucket version - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function putBucketVersioning($ossClient, $bucket) -{ - try { - //Set the storage space version control to enable version control (Enabled) or suspend version control (Suspended). - $ossClient->putBucketVersioning($bucket, "Enabled"); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php deleted file mode 100644 index 6c387e68..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWebsite.php +++ /dev/null @@ -1,92 +0,0 @@ -putBucketWebsite($bucket, $websiteConfig); -Common::println("bucket $bucket websiteConfig created:" . $websiteConfig->serializeToXml()); - -// Get bucket static website configuration -$websiteConfig = $ossClient->getBucketWebsite($bucket); -Common::println("bucket $bucket websiteConfig fetched:" . $websiteConfig->serializeToXml()); - -// Delete bucket static website configuration -$ossClient->deleteBucketWebsite($bucket); -Common::println("bucket $bucket websiteConfig deleted"); - -//******************************* For complete usage, see the following functions **************************************************** - -putBucketWebsite($ossClient, $bucket); -getBucketWebsite($ossClient, $bucket); -deleteBucketWebsite($ossClient, $bucket); -getBucketWebsite($ossClient, $bucket); - -/** - * Sets bucket static website configuration - * - * @param $ossClient OssClient - * @param $bucket string bucket name - * @return null - */ -function putBucketWebsite($ossClient, $bucket) -{ - $websiteConfig = new WebsiteConfig("index.html", "error.html"); - try { - $ossClient->putBucketWebsite($bucket, $websiteConfig); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get bucket static website configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getBucketWebsite($ossClient, $bucket) -{ - $websiteConfig = null; - try { - $websiteConfig = $ossClient->getBucketWebsite($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - print($websiteConfig->serializeToXml() . "\n"); -} - -/** - * Delete bucket static website configuration - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteBucketWebsite($ossClient, $bucket) -{ - try { - $ossClient->deleteBucketWebsite($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWorm.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWorm.php deleted file mode 100644 index c4b0fb92..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/BucketWorm.php +++ /dev/null @@ -1,145 +0,0 @@ -initiateBucketWorm($bucket, 30); -Common::println("bucket $bucket wormId: " . $wormId.PHP_EOL); - -// Cancel an unlocked compliance retention policy -$ossClient->abortBucketWorm($bucket); - -//Lock compliant retention policy -$wormId = $ossClient->initiateBucketWorm($bucket, 30); -$ossClient->completeBucketWorm($bucket, $wormId); - -// Get compliant retention policy -$config = $ossClient->getBucketWorm($bucket); -Common::println("WormId:".$config->getWormId().PHP_EOL); -Common::println("State:". $config->getState().PHP_EOL); -Common::println("Day:". $config->getDay().PHP_EOL); - -// Extend the retention days of objects -$wormId = ""; -// Extend the retention days of objects in the locked compliance retention policy to 120 days. -$ossClient->extendBucketWorm($bucket, $wormId, 120); - -//******************************* For complete usage, see the following functions **************************************************** - -initiateBucketWorm($ossClient, $bucket); -abortBucketWorm($ossClient, $bucket); -completeBucketWorm($ossClient, $bucket); -getBucketWorm($ossClient, $bucket); -extendBucketWorm($ossClient, $bucket); - -/** - * Set Bucket Worm Ploicy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function initiateBucketWorm($ossClient, $bucket) -{ - try { - $wormId = $ossClient->initiateBucketWorm($bucket,30); - print("bucket $bucket wormId: " . $wormId.PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Cancel an unlocked compliance retention policy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket Name of the bucket to create - * @return null - */ -function abortBucketWorm($ossClient, $bucket) -{ - try { - $ossClient->abortBucketWorm($bucket); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Complete Bucket Worm - * @param $ossClient $ossClient OssClient instance - * @param $bucket $bucket Name of the bucket to create - */ -function completeBucketWorm($ossClient, $bucket) -{ - try { - $wormId = $ossClient->initiateBucketWorm($bucket, 30); - $ossClient->completeBucketWorm($bucket, $wormId); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get Bucket Worm - * @param $ossClient $ossClient OssClient instance - * @param $bucket $bucket Name of the bucket to create - */ -function getBucketWorm($ossClient, $bucket) -{ - try { - $config = $ossClient->getBucketWorm($bucket); - - printf("WormId:%s\n", $config->getWormId()); - printf("State:%s\n", $config->getState()); - printf("Day:%d\n", $config->getDay()); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Extend the retention days of objects - * @param $ossClient $ossClient OssClient instance - * @param $bucket $bucket Name of the bucket to create - */ -function extendBucketWorm($ossClient, $bucket) -{ - $wormId = ""; - try { - $ossClient->ExtendBucketWorm($bucket, $wormId, 120); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Callback.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Callback.php deleted file mode 100644 index 4b7bc41c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Callback.php +++ /dev/null @@ -1,83 +0,0 @@ - $url, - OssClient::OSS_CALLBACK_VAR => $var - ); -$result = $ossClient->putObject($bucket, "b.file", "random content", $options); -Common::println($result['body']); -Common::println($result['info']['http_code']); - -/** - * completeMultipartUpload Upload content to an OSS file using callback. - * callbackurl specifies the server url for the request callback - * The callbackbodytype can be application/json or application/x-www-form-urlencoded,the optional parameters,the default for the application/x - WWW - form - urlencoded - * Users can choose not to set OSS_BACK_VAR. - */ -$object = "multipart-callback-test.txt"; -$copiedObject = "multipart-callback-test.txt.copied"; -$ossClient->putObject($bucket, $copiedObject, file_get_contents(__FILE__)); - -/** - * step 1. Initialize a block upload event, that is, a multipart upload process to get an upload id - */ -$upload_id = $ossClient->initiateMultipartUpload($bucket, $object); - -/** - * step 2. uploadPartCopy - */ -$copyId = 1; -$eTag = $ossClient->uploadPartCopy($bucket, $copiedObject, $bucket, $object, $copyId, $upload_id); -$upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); -$listPartsInfo = $ossClient->listParts($bucket, $object, $upload_id); - -/** - * step 3. - */ -$json = - '{ - "callbackUrl":"callback.oss-demo.com:23450", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", - "callbackBodyType":"application/json" - }'; -$var = - '{ - "x:var1":"value1", - "x:var2":"值2" - }'; -$options = array(OssClient::OSS_CALLBACK => $json, - OssClient::OSS_CALLBACK_VAR => $var); - -$result = $ossClient->completeMultipartUpload($bucket, $object, $upload_id, $upload_parts, $options); -Common::println($result['body']); -Common::println($result['info']['http_code']); diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Common.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Common.php deleted file mode 100644 index 49bd4931..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Common.php +++ /dev/null @@ -1,84 +0,0 @@ -getMessage() . "\n"); - return null; - } - return $ossClient; - } - - public static function getBucketName() - { - return self::bucket; - } - - /** - * A tool function which creates a bucket and exists the process if there are exceptions - */ - public static function createBucket() - { - $ossClient = self::getOssClient(); - if (is_null($ossClient)) exit(1); - $bucket = self::getBucketName(); - $acl = OssClient::OSS_ACL_TYPE_PUBLIC_READ; - try { - $ossClient->createBucket($bucket, $acl); - } catch (OssException $e) { - - $message = $e->getMessage(); - if (\OSS\Core\OssUtil::startsWith($message, 'http status: 403')) { - echo "Please Check your AccessKeyId and AccessKeySecret" . "\n"; - exit(0); - } elseif (strpos($message, "BucketAlreadyExists") !== false) { - echo "Bucket already exists. Please check whether the bucket belongs to you, or it was visited with correct endpoint. " . "\n"; - exit(0); - } - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - } - - public static function println($message) - { - if (!empty($message)) { - echo strval($message) . "\n"; - } - } -} - -# Common::createBucket(); diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Config.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Config.php deleted file mode 100644 index fc3a1673..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Config.php +++ /dev/null @@ -1,15 +0,0 @@ -warpper = $credential; - } - public function getCredentials(){ - $ak = $this->warpper->getAccessKeyId(); - $sk = $this->warpper->getAccessKeySecret(); - $token = $this->warpper->getSecurityToken(); - return new StaticCredentialsProvider($ak, $sk, $token); - } -} - -$bucket = Common::getBucketName(); - -//AccessKey Credentials demo -$credential = new Credential(array( - 'type' => 'access_key', - 'access_key_id' => '', - 'access_key_secret' => '', -)); -$providerWarpper = new AlibabaCloudCredentialsWrapper($credential); -$config = array( - 'provider' => $providerWarpper, - 'endpoint'=> '' -); -try { - $ossClient = new OssClient($config); - $ossClient->putObject($bucket,'c.file','hi oss,this is credentials test of access key'); - $result = $ossClient->getObject($bucket,'c.file'); - var_dump($result); -} catch (OssException $e) { - printf($e->getMessage() . "\n"); - return; -} - - -// EcsRamRole Credentials demo -$ecsRamRole = new Credential(array( - 'type' => 'ecs_ram_role', - 'role_name' => 'EcsRamRoleOssTest', -)); -$providerWarpper = new AlibabaCloudCredentialsWrapper($ecsRamRole); -$bucket = 'oss-bucket-cd-yp-test'; -$config = array( - 'provider' => $providerWarpper, - 'endpoint'=> '' -); -try { - $ossClient = new OssClient($config); - $ossClient->putObject($bucket,'c.file','hi oss,this is credentials test of EcsRamRole'); - $result = $ossClient->getObject($bucket,'c.file'); - var_dump($result); -} catch (OssException $e) { - printf($e->getMessage() . "\n"); - return; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/CredentialsProvider.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/CredentialsProvider.php deleted file mode 100644 index b38f54da..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/CredentialsProvider.php +++ /dev/null @@ -1,45 +0,0 @@ -'; -$secret = ''; -$provider = new StaticCredentialsProvider($id,$secret); -$config = array( - 'provider' => $provider, - 'endpoint'=>'' -); -try { - $ossClient = new OssClient($config); - $ossClient->putObject($bucket,'c.file','hi oss,this is credentials test of access key provider'); - $result = $ossClient->getObject($bucket,'c.file'); - var_dump($result); -} catch (OssException $e) { - printf($e->getMessage() . "\n"); - return; -} - -// Sts provider demo -$id = ''; -$secret = ''; -$token = ''; -$provider = new StaticCredentialsProvider($id,$secret,$token); -$config = array( - 'provider' => $provider, - 'endpoint'=> "" -); - -try { - $ossClient = new OssClient($config); - $ossClient->putObject($bucket,'c.file','hi oss,this is credentials test of sts provider'); - $result = $ossClient->getObject($bucket,'c.file'); - var_dump($result); -} catch (OssException $e) { - printf($e->getMessage() . "\n"); - return; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Image.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Image.php deleted file mode 100644 index 85317339..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Image.php +++ /dev/null @@ -1,87 +0,0 @@ -uploadFile($bucketName, $object, "example.jpg"); - -// Image resize -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageResize",$download_file); - -// Image crop -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/crop,w_100,h_100,x_100,y_100,r_1", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("iamgeCrop", $download_file); - -// Image rotate -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/rotate,90", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageRotate", $download_file); - -// Image sharpen -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/sharpen,100", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageSharpen", $download_file); - -// Add watermark into a image -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageWatermark", $download_file); - -// Image format convertion -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/format,png", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageFormat", $download_file); - -// Get image information -$options = array( - OssClient::OSS_FILE_DOWNLOAD => $download_file, - OssClient::OSS_PROCESS => "image/info", ); -$ossClient->getObject($bucketName, $object, $options); -printImage("imageInfo", $download_file); - - -/** - * Generate a signed url which could be used in browser to access the object. The expiration time is 1 hour. - */ - $timeout = 3600; -$options = array( - OssClient::OSS_PROCESS => "image/resize,m_lfit,h_100,w_100", - ); -$signedUrl = $ossClient->signUrl($bucketName, $object, $timeout, "GET", $options); -Common::println("rtmp url: \n" . $signedUrl); - -// Finally delete the $object uploaded. -$ossClient->deleteObject($bucketName, $object); - -function printImage($func, $imageFile) -{ - $array = getimagesize($imageFile); - Common::println("$func, image width: " . $array[0]); - Common::println("$func, image height: " . $array[1]); - Common::println("$func, image type: " . ($array[2] === 2 ? 'jpg' : 'png')); - Common::println("$func, image size: " . ceil(sprintf('%u',filesize($imageFile)))); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php deleted file mode 100644 index 67bb5415..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/LiveChannel.php +++ /dev/null @@ -1,131 +0,0 @@ - 'live channel test', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); -$info = $ossClient->putBucketLiveChannel($bucket, 'test_rtmp_live', $config); -Common::println("bucket $bucket liveChannel created:\n" . -"live channel name: ". $info->getName() . "\n" . -"live channel description: ". $info->getDescription() . "\n" . -"publishurls: ". $info->getPublishUrls()[0] . "\n" . -"playurls: ". $info->getPlayUrls()[0] . "\n"); - -/** - * You can use listBucketLiveChannels to list and manage all existing live channels. - * Prefix can be used to filter listed live channels by prefix. - * Max_keys indicates the maximum numbers of live channels that can be listed in an iterator at one time. Its value is 1000 in maximum and 100 by default. - */ -$list = $ossClient->listBucketLiveChannels($bucket); -Common::println("bucket $bucket listLiveChannel:\n" . -"list live channel prefix: ". $list->getPrefix() . "\n" . -"list live channel marker: ". $list->getMarker() . "\n" . -"list live channel maxkey: ". $list->getMaxKeys() . "\n" . -"list live channel IsTruncated: ". $list->getIsTruncated() . "\n" . -"list live channel getNextMarker: ". $list->getNextMarker() . "\n"); - -foreach($list->getChannelList() as $list) -{ - Common::println("bucket $bucket listLiveChannel:\n" . - "list live channel IsTruncated: ". $list->getName() . "\n" . - "list live channel Description: ". $list->getDescription() . "\n" . - "list live channel Status: ". $list->getStatus() . "\n" . - "list live channel getNextMarker: ". $list->getLastModified() . "\n"); -} -/** - * Obtain the play_url (url used for rtmp stream pushing. - * If the the bucket is not globally readable and writable, - * the url must be signed as shown in the following.) and pulish_url (the url included in the m3u8 file generated in stream pushing) used to push streams. - */ -$play_url = $ossClient->signRtmpUrl($bucket, "test_rtmp_live", 3600, array('params' => array('playlistName' => 'playlist.m3u8'))); -Common::println("bucket $bucket rtmp url: \n" . $play_url); -$play_url = $ossClient->signRtmpUrl($bucket, "test_rtmp_live", 3600); -Common::println("bucket $bucket rtmp url: \n" . $play_url); - -/** - * If you want to disable a created live channel (disable the pushing streaming or do not allow stream pushing to an IP address), call putLiveChannelStatus to change the channel status to "Disabled". - * If you want to enable a disabled live channel, call PutLiveChannelStatus to chanage the channel status to "Enabled". - */ -$resp = $ossClient->putLiveChannelStatus($bucket, "test_rtmp_live", "enabled"); - -/** - * You can callLiveChannelInfo to get the information about a live channel. - */ -$info = $ossClient->getLiveChannelInfo($bucket, 'test_rtmp_live'); -Common::println("bucket $bucket LiveChannelInfo:\n" . -"live channel info description: ". $info->getDescription() . "\n" . -"live channel info status: ". $info->getStatus() . "\n" . -"live channel info type: ". $info->getType() . "\n" . -"live channel info fragDuration: ". $info->getFragDuration() . "\n" . -"live channel info fragCount: ". $info->getFragCount() . "\n" . -"live channel info playListName: ". $info->getPlayListName() . "\n"); - -/** - * Gets the historical pushing streaming records by calling getLiveChannelHistory. Now the max records to return is 10. - */ -$history = $ossClient->getLiveChannelHistory($bucket, "test_rtmp_live"); -if (count($history->getLiveRecordList()) != 0) -{ - foreach($history->getLiveRecordList() as $recordList) - { - Common::println("bucket $bucket liveChannelHistory:\n" . - "live channel history startTime: ". $recordList->getStartTime() . "\n" . - "live channel history endTime: ". $recordList->getEndTime() . "\n" . - "live channel history remoteAddr: ". $recordList->getRemoteAddr() . "\n"); - } -} - -/** - * Get the live channel's status by calling getLiveChannelStatus. - * If the live channel is receiving the pushing stream, all attributes in stat_result are valid. - * If the live channel is idle or disabled, then the status is idle or Disabled and other attributes have no meaning. - */ -$status = $ossClient->getLiveChannelStatus($bucket, "test_rtmp_live"); -Common::println("bucket $bucket listLiveChannel:\n" . -"live channel status status: ". $status->getStatus() . "\n" . -"live channel status ConnectedTime: ". $status->getConnectedTime() . "\n" . -"live channel status VideoWidth: ". $status->getVideoWidth() . "\n" . -"live channel status VideoHeight: ". $status->getVideoHeight() . "\n" . -"live channel status VideoFrameRate: ". $status->getVideoFrameRate() . "\n" . -"live channel status VideoBandwidth: ". $status->getVideoBandwidth() . "\n" . -"live channel status VideoCodec: ". $status->getVideoCodec() . "\n" . -"live channel status AudioBandwidth: ". $status->getAudioBandwidth() . "\n" . -"live channel status AudioSampleRate: ". $status->getAudioSampleRate() . "\n" . -"live channel status AdioCodec: ". $status->getAudioCodec() . "\n"); - -/** - * If you want to generate a play url from the ts files generated from pushing streaming, call postVodPlayList. - * Specify the start time to 60 seconds before the current time and the end time to the current time, which means that a video of 60 seconds is generated. - * The playlist file is specified to “vod_playlist.m3u8”, which means that a palylist file named vod_playlist.m3u8 is created after the interface is called. - */ -$current_time = time(); -$ossClient->postVodPlaylist($bucket, - "test_rtmp_live", "vod_playlist.m3u8", - array('StartTime' => $current_time - 60, - 'EndTime' => $current_time) -); - -/** - * Call delete_live_channel to delete a live channel if it will no longer be in used. - */ -$ossClient->deleteBucketLiveChannel($bucket, "test_rtmp_live"); diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php deleted file mode 100644 index dd4b7fde..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/MultipartUpload.php +++ /dev/null @@ -1,182 +0,0 @@ -multiuploadFile($bucket, "file.php", __FILE__, array()); -Common::println("local file " . __FILE__ . " is uploaded to the bucket $bucket, file.php"); - - -// Upload local directory's data into target dir -$ossClient->uploadDir($bucket, "targetdir", __DIR__); -Common::println("local dir " . __DIR__ . " is uploaded to the bucket $bucket, targetdir/"); - - -// List the incomplete multipart uploads -$listMultipartUploadInfo = $ossClient->listMultipartUploads($bucket, array()); - - -//******************************* For complete usage, see the following functions **************************************************** - -multiuploadFile($ossClient, $bucket); -putObjectByRawApis($ossClient, $bucket); -uploadDir($ossClient, $bucket); -listMultipartUploads($ossClient, $bucket); - -/** - * Upload files using multipart upload - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function multiuploadFile($ossClient, $bucket) -{ - $object = "test/multipart-test.txt"; - $file = __FILE__; - $options = array(); - - try { - $ossClient->multiuploadFile($bucket, $object, $file, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Use basic multipart upload for file upload. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @throws OssException - */ -function putObjectByRawApis($ossClient, $bucket) -{ - $object = "test/multipart-test.txt"; - /** - * step 1. Initialize a block upload event, that is, a multipart upload process to get an upload id - */ - try { - $uploadId = $ossClient->initiateMultipartUpload($bucket, $object); - } catch (OssException $e) { - printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": initiateMultipartUpload OK" . "\n"); - /* - * step 2. Upload parts - */ - $partSize = 10 * 1024 * 1024; - $uploadFile = __FILE__; - $uploadFileSize = sprintf('%u',filesize($uploadFile)); - $pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize); - $responseUploadPart = array(); - $uploadPosition = 0; - $isCheckMd5 = true; - foreach ($pieces as $i => $piece) { - $fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO]; - $toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1; - $upOptions = array( - $ossClient::OSS_FILE_UPLOAD => $uploadFile, - $ossClient::OSS_PART_NUM => ($i + 1), - $ossClient::OSS_SEEK_TO => $fromPos, - $ossClient::OSS_LENGTH => $toPos - $fromPos + 1, - $ossClient::OSS_CHECK_MD5 => $isCheckMd5, - ); - if ($isCheckMd5) { - $contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos); - $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5; - } - //2. Upload each part to OSS - try { - $responseUploadPart[] = $ossClient->uploadPart($bucket, $object, $uploadId, $upOptions); - } catch (OssException $e) { - printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} OK\n"); - } - $uploadParts = array(); - foreach ($responseUploadPart as $i => $eTag) { - $uploadParts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $eTag, - ); - } - /** - * step 3. Complete the upload - */ - try { - $ossClient->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts); - } catch (OssException $e) { - printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - printf(__FUNCTION__ . ": completeMultipartUpload OK\n"); -} - -/** - * Upload by directories - * - * @param OssClient $ossClient OssClient - * @param string $bucket bucket name - * - */ -function uploadDir($ossClient, $bucket) -{ - $localDirectory = "."; - $prefix = "samples/codes"; - try { - $ossClient->uploadDir($bucket, $prefix, $localDirectory); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - printf(__FUNCTION__ . ": completeMultipartUpload OK\n"); -} - -/** - * Get ongoing multipart uploads - * - * @param $ossClient OssClient - * @param $bucket string - */ -function listMultipartUploads($ossClient, $bucket) -{ - $options = array( - 'max-uploads' => 100, - 'key-marker' => '', - 'prefix' => '', - 'upload-id-marker' => '' - ); - try { - $listMultipartUploadInfo = $ossClient->listMultipartUploads($bucket, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": listMultipartUploads FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - printf(__FUNCTION__ . ": listMultipartUploads OK\n"); - $listUploadInfo = $listMultipartUploadInfo->getUploads(); - var_dump($listUploadInfo); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Object.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Object.php deleted file mode 100644 index bf6e86b0..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/Object.php +++ /dev/null @@ -1,729 +0,0 @@ -putObject($bucket, "b.file", "hi, oss"); -Common::println("b.file is created"); -Common::println($result['x-oss-request-id']); -Common::println($result['etag']); -Common::println($result['content-md5']); -Common::println($result['body']); - -// Uploads a local file to an OSS file -$result = $ossClient->uploadFile($bucket, "c.file", __FILE__); -Common::println("c.file is created"); -Common::println("b.file is created"); -Common::println($result['x-oss-request-id']); -Common::println($result['etag']); -Common::println($result['content-md5']); -Common::println($result['body']); - -// Download an oss object as an in-memory variable -$content = $ossClient->getObject($bucket, "b.file"); -Common::println("b.file is fetched, the content is: " . $content); - -// Add a symlink to an object -$content = $ossClient->putSymlink($bucket, "test-symlink", "b.file"); -Common::println("test-symlink is created"); -Common::println($result['x-oss-request-id']); -Common::println($result['etag']); - -// Get a symlink -$content = $ossClient->getSymlink($bucket, "test-symlink"); -Common::println("test-symlink refer to : " . $content[OssClient::OSS_SYMLINK_TARGET]); - -// Download an object to a local file. -$options = array( - OssClient::OSS_FILE_DOWNLOAD => "./c.file.localcopy", -); -$ossClient->getObject($bucket, "c.file", $options); -Common::println("b.file is fetched to the local file: c.file.localcopy"); -Common::println("b.file is created"); - - -// Restore Object -$day = 3; -$tier = 'Expedited'; -$config = new RestoreConfig($day,$tier); -$options = array( - OssClient::OSS_RESTORE_CONFIG => $config -); -$ossClient->restoreObject($bucket, 'b.file',$options); - - -// Copy an object -$result = $ossClient->copyObject($bucket, "c.file", $bucket, "c.file.copy"); -Common::println("lastModifiedTime: " . $result[0]); -Common::println("ETag: " . $result[1]); - -// Check whether an object exists -$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); -Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); - -// Delete an object -$result = $ossClient->deleteObject($bucket, "c.file.copy"); -Common::println("c.file.copy is deleted"); -Common::println("b.file is created"); -Common::println($result['x-oss-request-id']); - -// Check whether an object exists -$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); -Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); - -// Delete multiple objects in batch -$result = $ossClient->deleteObjects($bucket, array("b.file", "c.file")); -foreach($result as $object) - Common::println($object); - -sleep(2); -unlink("c.file.localcopy"); - -// Normal upload and download speed limit -$object= "b.file"; -$content = "hello world"; - -// The speed limit is 100 KB/s, which is 819200 bit/s. -$options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - )); -// Speed limit upload. -$ossClient->putObject($bucket, $object, $content, $options); - -// Speed limit download. -$ossClient->getObject($bucket, $object, $options); - -// Signed URL upload and download speed limit - -// Create a URL for uploading with a limited rate, and the validity period is 60s. -$timeout = 60; -$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); -Common::println("b.file speed limit upload url:".$signedUrl.PHP_EOL); - -// Create a URL for speed-limited downloads, with a validity period of 120s. -$timeout = 120; -$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options); -Common::println("b.file speed limit download url:".$signedUrl.PHP_EOL); - -//******************************* For complete usage, see the following functions **************************************************** - -listObjects($ossClient, $bucket); -listObjectsV2($ossClient, $bucket); -listAllObjects($ossClient, $bucket); -createObjectDir($ossClient, $bucket); -putObject($ossClient, $bucket); -uploadFile($ossClient, $bucket); -getObject($ossClient, $bucket); -getObjectToLocalFile($ossClient, $bucket); -copyObject($ossClient, $bucket); -modifyMetaForObject($ossClient, $bucket); -getObjectMeta($ossClient, $bucket); -deleteObject($ossClient, $bucket); -deleteObjects($ossClient, $bucket); -doesObjectExist($ossClient, $bucket); -getSymlink($ossClient, $bucket); -putSymlink($ossClient, $bucket); -putObjectSpeed($ossClient, $bucket); -getObjectSpeed($ossClient, $bucket); -signUrlSpeedUpload($ossClient, $bucket); -signUrlSpeedDownload($ossClient, $bucket); -restoreObject($ossClient,$bucket); -/** - * Create a 'virtual' folder - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function createObjectDir($ossClient, $bucket) -{ - try { - $ossClient->createObjectDir($bucket, "dir"); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Upload in-memory data to oss - * - * Simple upload---upload specified in-memory data to an OSS object - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putObject($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $content = file_get_contents(__FILE__); - $options = array(); - try { - $ossClient->putObject($bucket, $object, $content, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Uploads a local file to OSS - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function uploadFile($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $filePath = __FILE__; - $options = array(); - - try { - $ossClient->uploadFile($bucket, $object, $filePath, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Lists all files and folders in the bucket. - * Note if there's more items than the max-keys specified, the caller needs to use the nextMarker returned as the value for the next call's maker paramter. - * Loop through all the items returned from ListObjects. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function listObjects($ossClient, $bucket) -{ - $prefix = 'oss-php-sdk-test/'; - $delimiter = '/'; - $nextMarker = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'marker' => $nextMarker, - ); - try { - $listObjectInfo = $ossClient->listObjects($bucket, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - $objectList = $listObjectInfo->getObjectList(); // object list - $prefixList = $listObjectInfo->getPrefixList(); // directory list - if (!empty($objectList)) { - print("objectList:\n"); - foreach ($objectList as $objectInfo) { - print($objectInfo->getKey() . "\n"); - if($objectInfo->getOwner() != null){ - printf("owner id:".$objectInfo->getOwner()->getId() . "\n"); - printf("owner name:".$objectInfo->getOwner()->getDisplayName() . "\n"); - } - } - } - if (!empty($prefixList)) { - print("prefixList: \n"); - foreach ($prefixList as $prefixInfo) { - print($prefixInfo->getPrefix() . "\n"); - } - } -} - -/** - * Lists all files and folders in the bucket. - * Note if there's more items than the max-keys specified, the caller needs to use the nextMarker returned as the value for the next call's maker paramter. - * Loop through all the items returned from ListObjects. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function listObjectsV2($ossClient, $bucket) -{ - $prefix = 'oss-php-sdk-test/'; - $delimiter = '/'; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'start-after' =>'test-object', - 'fetch-owner' =>'true', - ); - try { - $listObjectInfo = $ossClient->listObjectsV2($bucket, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - $objectList = $listObjectInfo->getObjectList(); // object list - $prefixList = $listObjectInfo->getPrefixList(); // directory list - if (!empty($objectList)) { - print("objectList:\n"); - foreach ($objectList as $objectInfo) { - print($objectInfo->getKey() . "\n"); - if($objectInfo->getOwner() != null){ - printf("owner id:".$objectInfo->getOwner()->getId() . "\n"); - printf("owner name:".$objectInfo->getOwner()->getDisplayName() . "\n"); - } - } - } - if (!empty($prefixList)) { - print("prefixList: \n"); - foreach ($prefixList as $prefixInfo) { - print($prefixInfo->getPrefix() . "\n"); - } - } -} - -/** - * Lists all folders and files under the bucket. Use nextMarker repeatedly to get all objects. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function listAllObjects($ossClient, $bucket) -{ - // Create dir/obj 'folder' and put some files into it. - for ($i = 0; $i < 100; $i += 1) { - $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi"); - $ossClient->createObjectDir($bucket, "dir/obj" . strval($i)); - } - - $prefix = 'dir/'; - $delimiter = '/'; - $nextMarker = ''; - $maxkeys = 30; - - while (true) { - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'marker' => $nextMarker, - ); - var_dump($options); - try { - $listObjectInfo = $ossClient->listObjects($bucket, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - // Get the nextMarker, and it would be used as the next call's marker parameter to resume from the last call - $nextMarker = $listObjectInfo->getNextMarker(); - $listObject = $listObjectInfo->getObjectList(); - $listPrefix = $listObjectInfo->getPrefixList(); - var_dump(count($listObject)); - var_dump(count($listPrefix)); - if ($nextMarker === '') { - break; - } - } -} - -/** - * Get the content of an object. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getObject($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $options = array(); - try { - $content = $ossClient->getObject($bucket, $object, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - if (file_get_contents(__FILE__) === $content) { - print(__FUNCTION__ . ": FileContent checked OK" . "\n"); - } else { - print(__FUNCTION__ . ": FileContent checked FAILED" . "\n"); - } -} - -/** - * Put symlink - * - * @param OssClient $ossClient The Instance of OssClient - * @param string $bucket bucket name - * @return null - */ -function putSymlink($ossClient, $bucket) -{ - $symlink = "test-samples-symlink"; - $object = "test-samples-object"; - try { - $ossClient->putObject($bucket, $object, 'test-content'); - $ossClient->putSymlink($bucket, $symlink, $object); - $content = $ossClient->getObject($bucket, $symlink); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - if ($content == 'test-content') { - print(__FUNCTION__ . ": putSymlink checked OK" . "\n"); - } else { - print(__FUNCTION__ . ": putSymlink checked FAILED" . "\n"); - } -} - -/** - * Get symlink - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getSymlink($ossClient, $bucket) -{ - $symlink = "test-samples-symlink"; - $object = "test-samples-object"; - try { - $ossClient->putObject($bucket, $object, 'test-content'); - $ossClient->putSymlink($bucket, $symlink, $object); - $content = $ossClient->getSymlink($bucket, $symlink); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - if ($content[OssClient::OSS_SYMLINK_TARGET]) { - print(__FUNCTION__ . ": getSymlink checked OK" . "\n"); - } else { - print(__FUNCTION__ . ": getSymlink checked FAILED" . "\n"); - } -} - -/** - * Get_object_to_local_file - * - * Get object - * Download object to a specified file. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getObjectToLocalFile($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $localfile = "upload-test-object-name.txt"; - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $localfile, - ); - - try { - $ossClient->getObject($bucket, $object, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK, please check localfile: 'upload-test-object-name.txt'" . "\n"); - if (file_get_contents($localfile) === file_get_contents(__FILE__)) { - print(__FUNCTION__ . ": FileContent checked OK" . "\n"); - } else { - print(__FUNCTION__ . ": FileContent checked FAILED" . "\n"); - } - if (file_exists($localfile)) { - unlink($localfile); - } -} - -/** - * Copy object - * When the source object is same as the target one, copy operation will just update the metadata. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function copyObject($ossClient, $bucket) -{ - $fromBucket = $bucket; - $fromObject = "oss-php-sdk-test/upload-test-object-name.txt"; - $toBucket = $bucket; - $toObject = $fromObject . '.copy'; - $options = array(); - - try { - $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Update Object Meta - * it leverages the feature of copyObject: when the source object is just the target object, the metadata could be updated via copy - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function modifyMetaForObject($ossClient, $bucket) -{ - $fromBucket = $bucket; - $fromObject = "oss-php-sdk-test/upload-test-object-name.txt"; - $toBucket = $bucket; - $toObject = $fromObject; - $copyOptions = array( - OssClient::OSS_HEADERS => array( - 'Cache-Control' => 'max-age=60', - 'Content-Disposition' => 'attachment; filename="xxxxxx"', - ), - ); - try { - $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $copyOptions); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Get object meta, that is, getObjectMeta - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getObjectMeta($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $objectMeta = $ossClient->getObjectMeta($bucket, $object); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - if (isset($objectMeta[strtolower('Content-Disposition')]) && - 'attachment; filename="xxxxxx"' === $objectMeta[strtolower('Content-Disposition')] - ) { - print(__FUNCTION__ . ": ObjectMeta checked OK" . "\n"); - } else { - print(__FUNCTION__ . ": ObjectMeta checked FAILED" . "\n"); - } -} - -/** - * Delete an object - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteObject($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $ossClient->deleteObject($bucket, $object); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * Delete multiple objects in batch - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function deleteObjects($ossClient, $bucket) -{ - $objects = array(); - $objects[] = "oss-php-sdk-test/upload-test-object-name.txt"; - $objects[] = "oss-php-sdk-test/upload-test-object-name.txt.copy"; - try { - $ossClient->deleteObjects($bucket, $objects); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Check whether an object exists - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function doesObjectExist($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $exist = $ossClient->doesObjectExist($bucket, $object); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - var_dump($exist); -} - -/** - * Speed limit upload. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function putObjectSpeed($ossClient, $bucket) -{ - $object = "upload-test-object-name.txt"; - $content = file_get_contents(__FILE__); - $options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - )); - try { - $ossClient->putObject($bucket, $object, $content, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Speed limit download. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function getObjectSpeed($ossClient, $bucket) -{ - $object = "upload-test-object-name.txt"; - $options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - )); - try { - $ossClient->getObject($bucket, $object, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Speed limit download. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function signUrlSpeedUpload($ossClient, $bucket) -{ - $object = "upload-test-object-name.txt"; - $timeout = 120; - $options = array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - ); - $timeout = 60; - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); - print($signedUrl); -} - - -/** - * Speed limit download. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function signUrlSpeedDownload($ossClient, $bucket) -{ - $object = "upload-test-object-name.txt"; - $timeout = 120; - $options = array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - ); - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options); - print($signedUrl); - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Restore object - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - */ -function restoreObject($ossClient, $bucket) -{ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $day = 3; - $tier = 'Expedited'; - $config = new RestoreConfig($day,$tier); - $options = array( - OssClient::OSS_RESTORE_CONFIG => $config - ); - try { - $ossClient->restoreObject($bucket, $object,$options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/ObjectTagging.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/ObjectTagging.php deleted file mode 100644 index adc283b0..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/ObjectTagging.php +++ /dev/null @@ -1,366 +0,0 @@ - array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - ) -); -$result = $ossClient->putObject($bucket, $object, __FILE__,$options); -Common::println("b.file is created"); -Common::println("tag is:".$result['oss-requestheaders']['x-oss-tagging']); - -// Add object tags when uploading parts - -$object = "b.file"; -$file = __FILE__; -$options = array( - OssClient::OSS_CHECK_MD5 => true, - OssClient::OSS_PART_SIZE => 1, - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - ), -); -$result = $ossClient->multiuploadFile($bucket, $object, $file, $options); -Common::println("b.file is created"); -Common::println("tag is:".$result['oss-requestheaders']['x-oss-tagging']); - -// get tags from object - -$object = "a.txt"; -$result = $ossClient->getObjectTagging($bucket,$object); -printf($object.'tags is: '.$result->serializeToXml().PHP_EOL); - - -// Add or change object tags to uploaded objects -$config = new TaggingConfig(); -$config->addTag(new Tag("key1", "value1")); -$config->addTag(new Tag("key2", "value2")); - -$ossClient->putObjectTagging($bucket, $object, $config); -// Add object tags when uploading -$object = "a.txt"; -$filePath = "D:\\localpath\\b.txt"; -$filePath1 = "D:\\localpath\\c.txt"; -$options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2', - ) -); -$position = $ossClient->appendObject($bucket, $object,'content one',0,$options); -printf('Content one append object Success'.PHP_EOL); -$position = $ossClient->appendObject($bucket, $object, 'content two',$position,$options); -printf('Content two append object Success'.PHP_EOL); - -// delete tags -$object = "g.file"; -$ossClient->deleteObjectTagging($bucket, $object); -printf($object.' tags has deleted'.PHP_EOL); - -// Copy a small file -$fromBucket = $bucket; -$fromObject = "a.file"; -$toBucket = $bucket; -$toObject = $fromObject . '.copy'; -$options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging-directive' => 'Replace', - 'x-oss-tagging'=>'key1=value1&key2=value2&key3=value3', - )); -$ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options); -$config = $ossClient->getObjectTagging($bucket, $toObject); -Common::println('object tags is:'.$config->serializeToXml()); - -// Copy a large file -$fromBucket = $bucket; -$fromObject = "a.file"; -$toBucket = $bucket; -$toObject = $fromObject . '.copy'; -$options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging'=>'key1=value1&key2=value2&key3=value3', - )); - -$part_size = 256*1024*1024; -$objectMeta = $ossClient->getObjectMeta($fromBucket, $fromObject); -$length = $objectMeta['content-length']; -$upload_id = $ossClient->initiateMultipartUpload($toBucket, $toObject,$options); -$pieces = $ossClient->generateMultiuploadParts($length, $part_size); -$response_upload_part = array(); -$copyId = 1; -$upload_position = 0; -foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece['seekTo']; - $to_pos = (integer)$piece['length'] + $from_pos - 1; - $up_options = array( - 'start' => $from_pos, - 'end' => $to_pos, - ); - $response_upload_part[] = $ossClient->uploadPartCopy( $fromBucket, $fromObject, $toBucket, $toObject, $copyId, $upload_id, $up_options); - printf("initiateMultipartUpload, uploadPartCopy - part#{$copyId} OK\n"); - $copyId = $copyId + 1; -} -$upload_parts = array(); -foreach ($response_upload_part as $i => $etag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $etag, - ); -} -$result = $ossClient->completeMultipartUpload($toBucket, $toObject, $upload_id, $upload_parts); -$config = $ossClient->getObjectTagging($bucket, $toObject); -Common::println($toObject.' tags is:'.$config->serializeToXml()); - - - -//******************************* For complete usage, see the following functions **************************************************** - -putObject($ossClient,$bucket); -multiuploadFile($ossClient,$bucket); -appendObject($ossClient,$bucket); -putObjectTagging($ossClient,$bucket); -getObjectTagging($ossClient,$bucket); -deleteObjectTagging($ossClient,$bucket); -copyObjectSmall($ossClient,$bucket); -copyObjectLarge($ossClient,$bucket); -/** - * Upload Object add tag - * @param $ossClient OssClient - * @param $bucket bucket_name - */ -function putObject($ossClient,$bucket){ - $object = "b.file"; - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - )); - try { - // 通过简单上传的方式上传Object。 - $result = $ossClient->putObject($bucket, $object, __FILE__,$options); - Common::println("b.file is created".PHP_EOL); - Common::println("tag is:".$result['oss-requestheaders']['x-oss-tagging'].PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Add object tags when uploading parts - * @param $ossClient OssClient - * @param $bucket bucket_name - */ -function multiuploadFile($ossClient,$bucket){ - $object = "b.file"; - $file = __FILE__; - $options = array( - OssClient::OSS_CHECK_MD5 => true, - OssClient::OSS_PART_SIZE => 1, - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - ), - ); - - try { - $result = $ossClient->multiuploadFile($bucket, $object, $file, $options); - Common::println("b.file is created".PHP_EOL); - Common::println("tag is:".$result['oss-requestheaders']['x-oss-tagging'].PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Add object tags when uploading - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function appendObject($ossClient,$bucket){ - $object = "g.file"; - $content_array = array('Hello OSS', 'Hi OSS'); - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2', - )); - - try { - $position = $ossClient->appendObject($bucket, $object, $content_array[0], 0, $options); - printf($content_array[0].' append object Success'.PHP_EOL); - $position = $ossClient->appendObject($bucket, $object, $content_array[1], $position); - printf($content_array[1].' append object Success'.PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * @param $ossClient OssClient - * @param $bucket bucket_name string - * @throws OssException - */ -function putObjectTagging($ossClient,$bucket){ - $object = "g.file"; - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $config->addTag(new Tag("key2", "value2")); - - try { - $ossClient->putObjectTagging($bucket, $object, $config); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * get object tags - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function getObjectTagging($ossClient,$bucket){ - $object = "g.file"; - try { - $config = $ossClient->getObjectTagging($bucket, $object); - printf($object." tags is:".$config->serializeToXml().PHP_EOL); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - - -/** - * get object tags - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function deleteObjectTagging($ossClient,$bucket){ - $object = "g.file"; - try { - $ossClient->deleteObjectTagging($bucket, $object); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Copy small files - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function copyObjectSmall($ossClient,$bucket){ - $fromBucket = $bucket; - $fromObject = "a.file"; - $toBucket = $bucket; - $toObject = $fromObject . '.copy'; - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging-directive' => 'Replace', - 'x-oss-tagging'=>'key1=value1&key2=value2&key3=value3', - )); - - try { - $ossClient->copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - - $config = $ossClient->getObjectTagging($bucket, $toObject); - Common::println('object tags is:'.$config->serializeToXml()); - print(__FUNCTION__ . ": OK" . "\n"); -} - -/** - * Copy a large file - * @param $ossClient OssClient - * @param $bucket bucket_name string - */ -function copyObjectLarge($ossClient,$bucket){ - $fromBucket = $bucket; - $fromObject = "a.file"; - $toBucket = $bucket; - $toObject = $fromObject . '.copy'; - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging'=>'key1=value1&key2=value2&key3=value3', - )); - - $part_size = 256*1024*1024; - try{ - $objectMeta = $ossClient->getObjectMeta($fromBucket, $fromObject); - $length = $objectMeta['content-length']; - $upload_id = $ossClient->initiateMultipartUpload($toBucket, $toObject,$options); - $pieces = $ossClient->generateMultiuploadParts($length, $part_size); - $response_upload_part = array(); - $copyId = 1; - $upload_position = 0; - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece['seekTo']; - $to_pos = (integer)$piece['length'] + $from_pos - 1; - $up_options = array( - 'start' => $from_pos, - 'end' => $to_pos, - ); - $response_upload_part[] = $ossClient->uploadPartCopy( $fromBucket, $fromObject, $toBucket, $toObject, $copyId, $upload_id, $up_options); - printf("initiateMultipartUpload, uploadPartCopy - part#{$copyId} OK\n"); - $copyId = $copyId + 1; - } - $upload_parts = array(); - foreach ($response_upload_part as $i => $etag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $etag, - ); - } - $result = $ossClient->completeMultipartUpload($toBucket, $toObject, $upload_id, $upload_parts); - printf('copy success'. "\n"); - } catch(OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - - - } - $config = $ossClient->getObjectTagging($bucket, $toObject); - Common::println($toObject.' tags is:'.$config->serializeToXml()); - print(__FUNCTION__ . ": OK" . "\n"); -} - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php b/niucloud/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php deleted file mode 100644 index 0cd7ec16..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/samples/RunAll.php +++ /dev/null @@ -1,13 +0,0 @@ -uploadFile($bucket, "a.file", __FILE__); - -// Generate a signed url for getting an object. The URL can be used in browser directly to download the file. -$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600); -Common::println($signedUrl); - -// Generate the signed url for putting an object. User can use put method with this url to upload a file to "a.file". -$signedUrl = $ossClient->signUrl($bucket, "a.file", "3600", "PUT"); -Common::println($signedUrl); - -// Generate the signed url for putting an object from local file. The url can be used directly to upload the file to "a.file". -$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600, "PUT", array('Content-Type' => 'txt')); -Common::println($signedUrl); - -//******************************* For complete usage, see the following functions **************************************************** - -getSignedUrlForPuttingObject($ossClient, $bucket); -getSignedUrlForPuttingObjectFromFile($ossClient, $bucket); -getSignedUrlForGettingObject($ossClient, $bucket); - -/** - * Generate the signed url for getObject() to control read accesses under private privilege - * - * @param $ossClient OssClient OssClient instance - * @param $bucket string bucket name - * @return null - */ -function getSignedUrlForGettingObject($ossClient, $bucket) -{ - $object = "test/test-signature-test-upload-and-download.txt"; - $timeout = 3600; - try { - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n"); - /** - * Use similar code to access the object by url, or use browser to access the object. - */ - $request = new RequestCore($signedUrl); - $request->set_method('GET'); - $request->add_header('Content-Type', ''); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); - if ($res->isOK()) { - print(__FUNCTION__ . ": OK" . "\n"); - } else { - print(__FUNCTION__ . ": FAILED" . "\n"); - }; -} - -/** - * Generate the signed url for PutObject to control write accesses under private privilege. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @return null - * @throws OssException - */ -function getSignedUrlForPuttingObject($ossClient, $bucket) -{ - $object = "test/test-signature-test-upload-and-download.txt"; - $timeout = 3600; - $options = NULL; - try { - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT"); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n"); - $content = file_get_contents(__FILE__); - - $request = new RequestCore($signedUrl); - $request->set_method('PUT'); - $request->add_header('Content-Type', ''); - $request->add_header('Content-Length', strlen($content)); - $request->set_body($content); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), - $request->get_response_body(), $request->get_response_code()); - if ($res->isOK()) { - print(__FUNCTION__ . ": OK" . "\n"); - } else { - print(__FUNCTION__ . ": FAILED" . "\n"); - }; -} - -/** - * Generate the signed url for PutObject's signed url. User could use the signed url to upload file directly. - * - * @param OssClient $ossClient OssClient instance - * @param string $bucket bucket name - * @throws OssException - */ -function getSignedUrlForPuttingObjectFromFile($ossClient, $bucket) -{ - $file = __FILE__; - $object = "test/test-signature-test-upload-and-download.txt"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - try { - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": signedUrl: " . $signedUrl . "\n"); - - $request = new RequestCore($signedUrl); - $request->set_method('PUT'); - $request->add_header('Content-Type', 'txt'); - $request->set_read_file($file); - $request->set_read_stream_size(sprintf('%u',filesize($file))); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), - $request->get_response_body(), $request->get_response_code()); - if ($res->isOK()) { - print(__FUNCTION__ . ": OK" . "\n"); - } else { - print(__FUNCTION__ . ": FAILED" . "\n"); - }; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php deleted file mode 100644 index 17685c31..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/MimeTypes.php +++ /dev/null @@ -1,263 +0,0 @@ - 1) { - $ext = strtolower(end($parts)); - if (isset(self::$mime_types[$ext])) { - return self::$mime_types[$ext]; - } - } - - return null; - } - - private static $mime_types = array( - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'apk' => 'application/vnd.android.package-archive', - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'doc' => 'application/msword', - 'ogg' => 'audio/ogg', - 'pdf' => 'application/pdf', - 'rtf' => 'text/rtf', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'ppt' => 'application/vnd.ms-powerpoint', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'oth' => 'application/vnd.oasis.opendocument.text-web', - 'sxw' => 'application/vnd.sun.xml.writer', - 'stw' => 'application/vnd.sun.xml.writer.template', - 'sxc' => 'application/vnd.sun.xml.calc', - 'stc' => 'application/vnd.sun.xml.calc.template', - 'sxd' => 'application/vnd.sun.xml.draw', - 'std' => 'application/vnd.sun.xml.draw.template', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sti' => 'application/vnd.sun.xml.impress.template', - 'sxg' => 'application/vnd.sun.xml.writer.global', - 'sxm' => 'application/vnd.sun.xml.math', - 'sis' => 'application/vnd.symbian.install', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'bcpio' => 'application/x-bcpio', - 'torrent' => 'application/x-bittorrent', - 'bz2' => 'application/x-bzip2', - 'vcd' => 'application/x-cdlink', - 'pgn' => 'application/x-chess-pgn', - 'cpio' => 'application/x-cpio', - 'csh' => 'application/x-csh', - 'dvi' => 'application/x-dvi', - 'spl' => 'application/x-futuresplash', - 'gtar' => 'application/x-gtar', - 'hdf' => 'application/x-hdf', - 'jar' => 'application/java-archive', - 'jnlp' => 'application/x-java-jnlp-file', - 'js' => 'application/javascript', - 'json' => 'application/json', - 'ksp' => 'application/x-kspread', - 'chrt' => 'application/x-kchart', - 'kil' => 'application/x-killustrator', - 'latex' => 'application/x-latex', - 'rpm' => 'application/x-rpm', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'tar' => 'application/x-tar', - 'tcl' => 'application/x-tcl', - 'tex' => 'application/x-tex', - 'man' => 'application/x-troff-man', - 'me' => 'application/x-troff-me', - 'ms' => 'application/x-troff-ms', - 'ustar' => 'application/x-ustar', - 'src' => 'application/x-wais-source', - 'zip' => 'application/zip', - 'm3u' => 'audio/x-mpegurl', - 'ra' => 'audio/x-pn-realaudio', - 'wav' => 'audio/x-wav', - 'wma' => 'audio/x-ms-wma', - 'wax' => 'audio/x-ms-wax', - 'pdb' => 'chemical/x-pdb', - 'xyz' => 'chemical/x-xyz', - 'bmp' => 'image/bmp', - 'gif' => 'image/gif', - 'ief' => 'image/ief', - 'png' => 'image/png', - 'wbmp' => 'image/vnd.wap.wbmp', - 'ras' => 'image/x-cmu-raster', - 'pnm' => 'image/x-portable-anymap', - 'pbm' => 'image/x-portable-bitmap', - 'pgm' => 'image/x-portable-graymap', - 'ppm' => 'image/x-portable-pixmap', - 'rgb' => 'image/x-rgb', - 'xbm' => 'image/x-xbitmap', - 'xpm' => 'image/x-xpixmap', - 'xwd' => 'image/x-xwindowdump', - 'css' => 'text/css', - 'rtx' => 'text/richtext', - 'tsv' => 'text/tab-separated-values', - 'jad' => 'text/vnd.sun.j2me.app-descriptor', - 'wml' => 'text/vnd.wap.wml', - 'wmls' => 'text/vnd.wap.wmlscript', - 'etx' => 'text/x-setext', - 'mxu' => 'video/vnd.mpegurl', - 'flv' => 'video/x-flv', - 'wm' => 'video/x-ms-wm', - 'wmv' => 'video/x-ms-wmv', - 'wmx' => 'video/x-ms-wmx', - 'wvx' => 'video/x-ms-wvx', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'ice' => 'x-conference/x-cooltalk', - '3gp' => 'video/3gpp', - 'ai' => 'application/postscript', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'asc' => 'text/plain', - 'atom' => 'application/atom+xml', - 'au' => 'audio/basic', - 'bin' => 'application/octet-stream', - 'cdf' => 'application/x-netcdf', - 'cgm' => 'image/cgm', - 'class' => 'application/octet-stream', - 'dcr' => 'application/x-director', - 'dif' => 'video/x-dv', - 'dir' => 'application/x-director', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'dll' => 'application/octet-stream', - 'dmg' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'dtd' => 'application/xml-dtd', - 'dv' => 'video/x-dv', - 'dxr' => 'application/x-director', - 'eps' => 'application/postscript', - 'exe' => 'application/octet-stream', - 'ez' => 'application/andrew-inset', - 'gram' => 'application/srgs', - 'grxml' => 'application/srgs+xml', - 'gz' => 'application/x-gzip', - 'htm' => 'text/html', - 'html' => 'text/html', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ifb' => 'text/calendar', - 'iges' => 'model/iges', - 'igs' => 'model/iges', - 'jp2' => 'image/jp2', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'kar' => 'audio/midi', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'm4a' => 'audio/mp4a-latm', - 'm4p' => 'audio/mp4a-latm', - 'm4u' => 'video/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'mac' => 'image/x-macpaint', - 'mathml' => 'application/mathml+xml', - 'mesh' => 'model/mesh', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mov' => 'video/quicktime', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpga' => 'audio/mpeg', - 'msh' => 'model/mesh', - 'nc' => 'application/x-netcdf', - 'oda' => 'application/oda', - 'ogv' => 'video/ogv', - 'pct' => 'image/pict', - 'pic' => 'image/pict', - 'pict' => 'image/pict', - 'pnt' => 'image/x-macpaint', - 'pntg' => 'image/x-macpaint', - 'ps' => 'application/postscript', - 'qt' => 'video/quicktime', - 'qti' => 'image/x-quicktime', - 'qtif' => 'image/x-quicktime', - 'ram' => 'audio/x-pn-realaudio', - 'rdf' => 'application/rdf+xml', - 'rm' => 'application/vnd.rn-realmedia', - 'roff' => 'application/x-troff', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'silo' => 'model/mesh', - 'skd' => 'application/x-koan', - 'skm' => 'application/x-koan', - 'skp' => 'application/x-koan', - 'skt' => 'application/x-koan', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'snd' => 'audio/basic', - 'so' => 'application/octet-stream', - 'svg' => 'image/svg+xml', - 't' => 'application/x-troff', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tr' => 'application/x-troff', - 'txt' => 'text/plain', - 'vrml' => 'model/vrml', - 'vxml' => 'application/voicexml+xml', - 'webm' => 'video/webm', - 'webp' => 'image/webp', - 'wrl' => 'model/vrml', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'xml' => 'application/xml', - 'xsl' => 'application/xml', - 'xslt' => 'application/xslt+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - ); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php deleted file mode 100644 index 2320c9e8..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssException.php +++ /dev/null @@ -1,54 +0,0 @@ -details = $details; - } else { - $message = $details; - parent::__construct($message); - } - } - - public function getHTTPStatus() - { - return isset($this->details['status']) ? $this->details['status'] : ''; - } - - public function getRequestId() - { - return isset($this->details['request-id']) ? $this->details['request-id'] : ''; - } - - public function getErrorCode() - { - return isset($this->details['code']) ? $this->details['code'] : ''; - } - - public function getErrorMessage() - { - return isset($this->details['message']) ? $this->details['message'] : ''; - } - - public function getDetails() - { - return isset($this->details['body']) ? $this->details['body'] : ''; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php deleted file mode 100644 index 66b46762..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Core/OssUtil.php +++ /dev/null @@ -1,534 +0,0 @@ - $value) { - if (is_string($key) && !is_array($value)) { - if (strlen($value) > 0) { - $temp[] = rawurlencode($key) . '=' . rawurlencode($value); - } else { - $temp[] = rawurlencode($key); - } - } - } - return implode('&', $temp); - } - - /** - * Html encoding '<', '>', '&', '\', '"' in subject parameter. - * - * @param string $subject - * @return string - */ - public static function sReplace($subject) - { - $search = array('<', '>', '&', '\'', '"'); - $replace = array('<', '>', '&', ''', '"'); - return str_replace($search, $replace, $subject); - } - - /** - * Check whether the string includes any chinese character - * - * @param $str - * @return int - */ - public static function chkChinese($str) - { - return preg_match('/[\x80-\xff]./', $str); - } - - /** - * Checks if the string is encoded by GB2312. - * - * @param string $str - * @return boolean false UTF-8 encoding TRUE GB2312 encoding - */ - public static function isGb2312($str) - { - for ($i = 0; $i < strlen($str); $i++) { - $v = ord($str[$i]); - if ($v > 127) { - if (($v >= 228) && ($v <= 233)) { - if (($i + 2) >= (strlen($str) - 1)) return true; // not enough characters - $v1 = ord($str[$i + 1]); - $v2 = ord($str[$i + 2]); - if (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) - return false; - else - return true; - } - } - } - return false; - } - - /** - * Checks if the string is encoded by GBK - * - * @param string $str - * @param boolean $gbk - * @return boolean - */ - public static function checkChar($str, $gbk = true) - { - for ($i = 0; $i < strlen($str); $i++) { - $v = ord($str[$i]); - if ($v > 127) { - if (($v >= 228) && ($v <= 233)) { - if (($i + 2) >= (strlen($str) - 1)) return $gbk ? true : FALSE; // not enough characters - $v1 = ord($str[$i + 1]); - $v2 = ord($str[$i + 2]); - if ($gbk) { - return (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) ? FALSE : TRUE;//GBK - } else { - return (($v1 >= 128) && ($v1 <= 191) && ($v2 >= 128) && ($v2 <= 191)) ? TRUE : FALSE; - } - } - } - } - return $gbk ? TRUE : FALSE; - } - - /** - * Checks if the bucket name is valid - * bucket naming rules - * 1. Can only include lowercase letters, numbers, or dashes - * 2. Must start and end with lowercase letters or numbers - * 3. Must be within a length from 3 to 63 bytes. - * - * @param string $bucket Bucket name - * @return boolean - */ - public static function validateBucket($bucket) - { - $pattern = '/^[a-z0-9][a-z0-9-]{2,62}$/'; - if (!preg_match($pattern, $bucket)) { - return false; - } - return true; - } - - /** - * Checks if object name is valid - * object naming rules: - * 1. Must be within a length from 1 to 1023 bytes - * 2. Cannot start with '/' or '\\'. - * 3. Must be encoded in UTF-8. - * - * @param string $object Object名称 - * @return boolean - */ - public static function validateObject($object) - { - $pattern = '/^.{1,1023}$/'; - if (!preg_match($pattern, $object) || - self::startsWith($object, '/') || self::startsWith($object, '\\') - ) { - return false; - } - return true; - } - - - /** - * Checks if $str starts with $findMe - * - * @param string $str - * @param string $findMe - * @return bool - */ - public static function startsWith($str, $findMe) - { - if (strpos($str, $findMe) === 0) { - return true; - } else { - return false; - } - } - - - /** - * Generate the xml message of createBucketXmlBody. - * - * @param string $storageClass - * @return string - */ - public static function createBucketXmlBody($storageClass) - { - $xml = new \SimpleXMLElement(''); - $xml->addChild('StorageClass', $storageClass); - return $xml->asXML(); - } - - /** - * validate $options - * - * @param array $options - * @throws OssException - * @return boolean - */ - public static function validateOptions($options) - { - //$options - if ($options != NULL && !is_array($options)) { - throw new OssException ($options . ':' . 'option must be array'); - } - } - - /** - * check whether the Content is valid. - * - * @param $content string - * @throws OssException - */ - public static function validateContent($content) - { - if (empty($content)) { - throw new OssException("http body content is invalid"); - } - } - - /** - * Check if BUCKET/OBJECT/OBJECT GROUP is empty. - * - * @param string $name - * @param string $errMsg - * @throws OssException - * @return void - */ - public static function throwOssExceptionWithMessageIfEmpty($name, $errMsg) - { - if (empty($name)) { - if (is_string($name) && $name == '0') - return; - throw new OssException($errMsg); - } - } - - /** - * This is a method for test only. DO NOT USE. - * - * @param $filename - * @param $size - */ - public static function generateFile($filename, $size) - { - if (file_exists($filename) && $size == sprintf('%u',filesize($filename))) { - echo $filename . " already exists, no need to create again. "; - return; - } - $part_size = 1 * 1024 * 1024; - $fp = fopen($filename, "w"); - $characters = << 0) { - if ($size < $part_size) { - $write_size = $size; - } else { - $write_size = $part_size; - } - $size -= $write_size; - $a = $characters[rand(0, $charactersLength - 1)]; - $content = str_repeat($a, $write_size); - $flag = fwrite($fp, $content); - if (!$flag) { - echo "write to " . $filename . " failed.
"; - break; - } - } - } else { - echo "open " . $filename . " failed.
"; - } - fclose($fp); - } - - /** - * Get MD5 of the file. - * - * @param $filename - * @param $from_pos - * @param $to_pos - * @return string - */ - public static function getMd5SumForFile($filename, $from_pos, $to_pos) - { - $content_md5 = ""; - if (($to_pos - $from_pos) > self::OSS_MAX_PART_SIZE) { - return $content_md5; - } - $filesize = sprintf('%u',filesize($filename)); - if ($from_pos >= $filesize || $to_pos >= $filesize || $from_pos < 0 || $to_pos < 0) { - return $content_md5; - } - - $total_length = $to_pos - $from_pos + 1; - $buffer = 8192; - $left_length = $total_length; - if (!file_exists($filename)) { - return $content_md5; - } - - if (false === $fh = fopen($filename, 'rb')) { - return $content_md5; - } - - fseek($fh, $from_pos); - $data = ''; - while (!feof($fh)) { - if ($left_length >= $buffer) { - $read_length = $buffer; - } else { - $read_length = $left_length; - } - if ($read_length <= 0) { - break; - } else { - $data .= fread($fh, $read_length); - $left_length = $left_length - $read_length; - } - } - fclose($fh); - $content_md5 = base64_encode(md5($data, true)); - return $content_md5; - } - - /** - * Check if the OS is Windows. The default encoding in Windows is GBK. - * - * @return bool - */ - public static function isWin() - { - return strtoupper(substr(PHP_OS, 0, 3)) == "WIN"; - } - - /** - * Encodes the file path from GBK to UTF-8. - * The default encoding in Windows is GBK. - * And if the file path is in Chinese, the file would not be found without the transcoding to UTF-8. - * - * @param $file_path - * @return string - */ - public static function encodePath($file_path) - { - if (self::chkChinese($file_path) && self::isWin()) { - $file_path = iconv('utf-8', 'gbk', $file_path); - } - return $file_path; - } - - /** - * Check if the endpoint is in the IPv4 format, such as xxx.xxx.xxx.xxx:port or xxx.xxx.xxx.xxx. - * - * @param string $endpoint The endpoint to check. - * @return boolean - */ - public static function isIPFormat($endpoint) - { - $ip_array = explode(":", $endpoint); - $hostname = $ip_array[0]; - $ret = filter_var($hostname, FILTER_VALIDATE_IP); - if (!$ret) { - return false; - } else { - return true; - } - } - - /** - * Get the host:port from endpoint. - * - * @param string $endpoint the endpoint. - * @return boolean - */ - public static function getHostPortFromEndpoint($endpoint) - { - $str = $endpoint; - $pos = strpos($str, "://"); - if ($pos !== false) { - $str = substr($str, $pos+3); - } - - $pos = strpos($str, '#'); - if ($pos !== false) { - $str = substr($str, 0, $pos); - } - - $pos = strpos($str, '?'); - if ($pos !== false) { - $str = substr($str, 0, $pos); - } - - $pos = strpos($str, '/'); - if ($pos !== false) { - $str = substr($str, 0, $pos); - } - - $pos = strpos($str, '@'); - if ($pos !== false) { - $str = substr($str, $pos+1); - } - - if (!preg_match('/^[\w.-]+(:[0-9]+)?$/', $str)) { - throw new OssException("endpoint is invalid:" . $endpoint); - } - - return $str; - } - - /** - * Generate the xml message of DeleteMultiObjects. - * - * @param string[] $objects - * @param bool $quiet - * @return string - */ - public static function createDeleteObjectsXmlBody($objects, $quiet) - { - $xml = new \SimpleXMLElement(''); - $xml->addChild('Quiet', $quiet); - foreach ($objects as $object) { - $sub_object = $xml->addChild('Object'); - $object = OssUtil::sReplace($object); - $sub_object->addChild('Key', $object); - } - return $xml->asXML(); - } - - /** - * Generate the xml message of DeleteMultiObjects. - * - * @param DeleteObjectInfo[] $objects - * @param bool $quiet - * @return string - */ - public static function createDeleteObjectVersionsXmlBody($objects, $quiet) - { - $xml = new \SimpleXMLElement(''); - $xml->addChild('Quiet', $quiet); - foreach ($objects as $object) { - $sub_object = $xml->addChild('Object'); - $key = OssUtil::sReplace($object->getKey()); - $sub_object->addChild('Key', $key); - $versionId = $object->getVersionId(); - if (!empty($versionId)) { - $sub_object->addChild('VersionId', $object->getVersionId()); - } - } - return $xml->asXML(); - } - - /** - * Generate the xml message of CompleteMultipartUpload. - * - * @param array[] $listParts - * @return string - */ - public static function createCompleteMultipartUploadXmlBody($listParts) - { - $xml = new \SimpleXMLElement(''); - foreach ($listParts as $node) { - $part = $xml->addChild('Part'); - $part->addChild('PartNumber', $node['PartNumber']); - $part->addChild('ETag', $node['ETag']); - } - return $xml->asXML(); - } - - /** - * Read the directory, return a associative array in which the MD5 is the named key and the is the value. - * - * @param string $dir - * @param string $exclude - * @param bool $recursive - * @return string[] - */ - public static function readDir($dir, $exclude = ".|..|.svn|.git", $recursive = false) - { - $file_list_array = array(); - $base_path = $dir; - $exclude_array = explode("|", $exclude); - $exclude_array = array_unique(array_merge($exclude_array, array('.', '..'))); - - if ($recursive) { - foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir)) as $new_file) { - if ($new_file->isDir()) continue; - $object = str_replace($base_path, '', $new_file); - if (!in_array(strtolower($object), $exclude_array)) { - $object = ltrim($object, '/'); - if (is_file($new_file)) { - $key = md5($new_file . $object, false); - $file_list_array[$key] = array('path' => $new_file, 'file' => $object,); - } - } - } - } else if ($handle = opendir($dir)) { - while (false !== ($file = readdir($handle))) { - if (!in_array(strtolower($file), $exclude_array)) { - $new_file = $dir . '/' . $file; - $object = $file; - $object = ltrim($object, '/'); - if (is_file($new_file)) { - $key = md5($new_file . $object, false); - $file_list_array[$key] = array('path' => $new_file, 'file' => $object,); - } - } - } - closedir($handle); - } - return $file_list_array; - } - - /** - * Decode key based on the encoding type - * - * @param string $key - * @param string $encoding - * @return string - */ - public static function decodeKey($key, $encoding) - { - if ($encoding == "") { - return $key; - } - - if ($encoding == "url") { - return rawurldecode($key); - } else { - throw new OssException("Unrecognized encoding type: " . $encoding); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/Credentials.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/Credentials.php deleted file mode 100644 index 2a8ffb51..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/Credentials.php +++ /dev/null @@ -1,63 +0,0 @@ -key = trim($key); - $this->secret = trim($secret); - $this->token = $token; - } - - - /** - * @return string - */ - public function getAccessKeyId() - { - return $this->key; - } - - /** - * @return string - */ - public function getAccessKeySecret() - { - return $this->secret; - } - - /** - * @return string|null - */ - public function getSecurityToken() - { - return $this->token; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/CredentialsProvider.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/CredentialsProvider.php deleted file mode 100644 index b2fde836..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Credentials/CredentialsProvider.php +++ /dev/null @@ -1,11 +0,0 @@ -credentials = new Credentials($key, $secret, $token); - } - - /** - * @return Credentials - */ - public function getCredentials() - { - return $this->credentials; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/LICENSE b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/LICENSE deleted file mode 100644 index 49b38bd6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/LICENSE +++ /dev/null @@ -1,25 +0,0 @@ -Copyright (c) 2006-2010 Ryan Parman, Foleeo Inc., and contributors. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this list of - conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, this list - of conditions and the following disclaimer in the documentation and/or other materials - provided with the distribution. - - * Neither the name of Ryan Parman, Foleeo Inc. nor the names of its contributors may be used to - endorse or promote products derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS -AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php deleted file mode 100644 index 260e2174..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore.php +++ /dev/null @@ -1,898 +0,0 @@ -). - */ - public $request_class = 'OSS\Http\RequestCore'; - - /** - * The default class to use for HTTP Responses (defaults to ). - */ - public $response_class = 'OSS\Http\ResponseCore'; - - /** - * Default useragent string to use. - */ - public $useragent = 'RequestCore/1.4.3'; - - /** - * File to read from while streaming up. - */ - public $read_file = null; - - /** - * The resource to read from while streaming up. - */ - public $read_stream = null; - - /** - * The size of the stream to read from. - */ - public $read_stream_size = null; - - /** - * The length already read from the stream. - */ - public $read_stream_read = 0; - - /** - * File to write to while streaming down. - */ - public $write_file = null; - - /** - * The resource to write to while streaming down. - */ - public $write_stream = null; - - /** - * Stores the intended starting seek position. - */ - public $seek_position = null; - - /** - * The location of the cacert.pem file to use. - */ - public $cacert_location = false; - - /** - * The state of SSL certificate verification. - */ - public $ssl_verification = true; - - /** - * The user-defined callback function to call when a stream is read from. - */ - public $registered_streaming_read_callback = null; - - /** - * The user-defined callback function to call when a stream is written to. - */ - public $registered_streaming_write_callback = null; - - /** - * The request timeout time, which is 5,184,000 seconds,that is, 6 days by default - * - * @var int - */ - public $timeout = 5184000; - - /** - * The connection timeout time, which is 10 seconds by default - * - * @var int - */ - public $connect_timeout = 10; - - /*%******************************************************************************************%*/ - // CONSTANTS - - /** - * GET HTTP Method - */ - const HTTP_GET = 'GET'; - - /** - * POST HTTP Method - */ - const HTTP_POST = 'POST'; - - /** - * PUT HTTP Method - */ - const HTTP_PUT = 'PUT'; - - /** - * DELETE HTTP Method - */ - const HTTP_DELETE = 'DELETE'; - - /** - * HEAD HTTP Method - */ - const HTTP_HEAD = 'HEAD'; - - - /*%******************************************************************************************%*/ - // CONSTRUCTOR/DESTRUCTOR - - /** - * Construct a new instance of this class. - * - * @param string $url (Optional) The URL to request or service endpoint to query. - * @param string $proxy (Optional) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` - * @param array $helpers (Optional) An associative array of classnames to use for request, and response functionality. Gets passed in automatically by the calling class. - * @return $this A reference to the current instance. - */ - public function __construct($url = null, $proxy = null, $helpers = null) - { - // Set some default values. - $this->request_url = $url; - $this->method = self::HTTP_GET; - $this->request_headers = array(); - $this->request_body = ''; - - // Set a new Request class if one was set. - if (isset($helpers['request']) && !empty($helpers['request'])) { - $this->request_class = $helpers['request']; - } - - // Set a new Request class if one was set. - if (isset($helpers['response']) && !empty($helpers['response'])) { - $this->response_class = $helpers['response']; - } - - if ($proxy) { - $this->set_proxy($proxy); - } - - return $this; - } - - /** - * Destruct the instance. Closes opened file handles. - * - * @return $this A reference to the current instance. - */ - public function __destruct() - { - if (isset($this->read_file) && isset($this->read_stream)) { - fclose($this->read_stream); - } - - if (isset($this->write_file) && isset($this->write_stream)) { - fclose($this->write_stream); - } - - return $this; - } - - - /*%******************************************************************************************%*/ - // REQUEST METHODS - - /** - * Set the credentials to use for authentication. - * - * @param string $user (Required) The username to authenticate with. - * @param string $pass (Required) The password to authenticate with. - * @return $this A reference to the current instance. - */ - public function set_credentials($user, $pass) - { - $this->username = $user; - $this->password = $pass; - return $this; - } - - /** - * Add a custom HTTP header to the cURL request. - * - * @param string $key (Required) The custom HTTP header to set. - * @param mixed $value (Required) The value to assign to the custom HTTP header. - * @return $this A reference to the current instance. - */ - public function add_header($key, $value) - { - $this->request_headers[$key] = $value; - return $this; - } - - /** - * Remove an HTTP header from the cURL request. - * - * @param string $key (Required) The custom HTTP header to set. - * @return $this A reference to the current instance. - */ - public function remove_header($key) - { - if (isset($this->request_headers[$key])) { - unset($this->request_headers[$key]); - } - return $this; - } - - /** - * Set the method type for the request. - * - * @param string $method (Required) One of the following constants: , , , , . - * @return $this A reference to the current instance. - */ - public function set_method($method) - { - $this->method = strtoupper($method); - return $this; - } - - /** - * Set a custom useragent string for the class. - * - * @param string $ua (Required) The useragent string to use. - * @return $this A reference to the current instance. - */ - public function set_useragent($ua) - { - $this->useragent = $ua; - return $this; - } - - /** - * Set the body to send in the request. - * - * @param string $body (Required) The textual content to send along in the body of the request. - * @return $this A reference to the current instance. - */ - public function set_body($body) - { - $this->request_body = $body; - return $this; - } - - /** - * Set the URL to make the request to. - * - * @param string $url (Required) The URL to make the request to. - * @return $this A reference to the current instance. - */ - public function set_request_url($url) - { - $this->request_url = $url; - return $this; - } - - /** - * Set additional CURLOPT settings. These will merge with the default settings, and override if - * there is a duplicate. - * - * @param array $curlopts (Optional) A set of key-value pairs that set `CURLOPT` options. These will merge with the existing CURLOPTs, and ones passed here will override the defaults. Keys should be the `CURLOPT_*` constants, not strings. - * @return $this A reference to the current instance. - */ - public function set_curlopts($curlopts) - { - $this->curlopts = $curlopts; - return $this; - } - - /** - * Set the length in bytes to read from the stream while streaming up. - * - * @param integer $size (Required) The length in bytes to read from the stream. - * @return $this A reference to the current instance. - */ - public function set_read_stream_size($size) - { - $this->read_stream_size = $size; - - return $this; - } - - /** - * Set the resource to read from while streaming up. Reads the stream from its current position until - * EOF or `$size` bytes have been read. If `$size` is not given it will be determined by and - * . - * - * @param resource $resource (Required) The readable resource to read from. - * @param integer $size (Optional) The size of the stream to read. - * @return $this A reference to the current instance. - */ - public function set_read_stream($resource, $size = null) - { - if (!isset($size) || $size < 0) { - $stats = fstat($resource); - - if ($stats && $stats['size'] >= 0) { - $position = ftell($resource); - - if ($position !== false && $position >= 0) { - $size = $stats['size'] - $position; - } - } - } - - $this->read_stream = $resource; - - return $this->set_read_stream_size($size); - } - - /** - * Set the file to read from while streaming up. - * - * @param string $location (Required) The readable location to read from. - * @return $this A reference to the current instance. - */ - public function set_read_file($location) - { - $this->read_file = $location; - $read_file_handle = fopen($location, 'r'); - - return $this->set_read_stream($read_file_handle); - } - - /** - * Set the resource to write to while streaming down. - * - * @param resource $resource (Required) The writeable resource to write to. - * @return $this A reference to the current instance. - */ - public function set_write_stream($resource) - { - $this->write_stream = $resource; - - return $this; - } - - /** - * Set the file to write to while streaming down. - * - * @param string $location (Required) The writeable location to write to. - * @return $this A reference to the current instance. - */ - public function set_write_file($location) - { - $this->write_file = $location; - } - - /** - * Set the proxy to use for making requests. - * - * @param string $proxy (Required) The faux-url to use for proxy settings. Takes the following format: `proxy://user:pass@hostname:port` - * @return $this A reference to the current instance. - */ - public function set_proxy($proxy) - { - $proxy = parse_url($proxy); - $proxy['user'] = isset($proxy['user']) ? $proxy['user'] : null; - $proxy['pass'] = isset($proxy['pass']) ? $proxy['pass'] : null; - $proxy['port'] = isset($proxy['port']) ? $proxy['port'] : null; - $this->proxy = $proxy; - return $this; - } - - /** - * Set the intended starting seek position. - * - * @param integer $position (Required) The byte-position of the stream to begin reading from. - * @return $this A reference to the current instance. - */ - public function set_seek_position($position) - { - $this->seek_position = isset($position) ? (integer)$position : null; - - return $this; - } - - /** - * A callback function that is invoked by cURL for streaming up. - * - * @param resource $curl_handle (Required) The cURL handle for the request. - * @param resource $header_content (Required) The header callback result. - * @return headers from a stream. - */ - public function streaming_header_callback($curl_handle, $header_content) - { - $code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); - - if (isset($this->write_file) && intval($code) / 100 == 2 && !isset($this->write_file_handle)) - { - $this->write_file_handle = fopen($this->write_file, 'w'); - $this->set_write_stream($this->write_file_handle); - } - - $this->response_raw_headers .= $header_content; - return strlen($header_content); - } - - - /** - * Register a callback function to execute whenever a data stream is read from using - * . - * - * The user-defined callback function should accept three arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $file_handle - resource - Required - The file handle resource that represents the file on the local file system.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_read_callback($callback) - { - $this->registered_streaming_read_callback = $callback; - - return $this; - } - - /** - * Register a callback function to execute whenever a data stream is written to using - * . - * - * The user-defined callback function should accept two arguments: - * - *
    - *
  • $curl_handle - resource - Required - The cURL handle resource that represents the in-progress transfer.
  • - *
  • $length - integer - Required - The length in kilobytes of the data chunk that was transferred.
  • - *
- * - * @param string|array|function $callback (Required) The callback function is called by , so you can pass the following values:
    - *
  • The name of a global function to execute, passed as a string.
  • - *
  • A method to execute, passed as array('ClassName', 'MethodName').
  • - *
  • An anonymous function (PHP 5.3+).
- * @return $this A reference to the current instance. - */ - public function register_streaming_write_callback($callback) - { - $this->registered_streaming_write_callback = $callback; - - return $this; - } - - - /*%******************************************************************************************%*/ - // PREPARE, SEND, AND PROCESS REQUEST - - /** - * A callback function that is invoked by cURL for streaming up. - * - * @param resource $curl_handle (Required) The cURL handle for the request. - * @param resource $file_handle (Required) The open file handle resource. - * @param integer $length (Required) The maximum number of bytes to read. - * @return binary Binary data from a stream. - */ - public function streaming_read_callback($curl_handle, $file_handle, $length) - { - // Once we've sent as much as we're supposed to send... - if ($this->read_stream_read >= $this->read_stream_size) { - // Send EOF - return ''; - } - - // If we're at the beginning of an upload and need to seek... - if ($this->read_stream_read == 0 && isset($this->seek_position) && $this->seek_position !== ftell($this->read_stream)) { - if (fseek($this->read_stream, $this->seek_position) !== 0) { - throw new RequestCore_Exception('The stream does not support seeking and is either not at the requested position or the position is unknown.'); - } - } - - $read = fread($this->read_stream, min($this->read_stream_size - $this->read_stream_read, $length)); // Remaining upload data or cURL's requested chunk size - $this->read_stream_read += strlen($read); - - $out = $read === false ? '' : $read; - - // Execute callback function - if ($this->registered_streaming_read_callback) { - call_user_func($this->registered_streaming_read_callback, $curl_handle, $file_handle, $out); - } - - return $out; - } - - /** - * A callback function that is invoked by cURL for streaming down. - * - * @param resource $curl_handle (Required) The cURL handle for the request. - * @param binary $data (Required) The data to write. - * @return integer The number of bytes written. - */ - public function streaming_write_callback($curl_handle, $data) - { - $code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); - - if (intval($code) / 100 != 2) - { - $this->response_error_body .= $data; - return strlen($data); - } - - $length = strlen($data); - $written_total = 0; - $written_last = 0; - - while ($written_total < $length) { - $written_last = fwrite($this->write_stream, substr($data, $written_total)); - - if ($written_last === false) { - return $written_total; - } - - $written_total += $written_last; - } - - // Execute callback function - if ($this->registered_streaming_write_callback) { - call_user_func($this->registered_streaming_write_callback, $curl_handle, $written_total); - } - - return $written_total; - } - - /** - * Prepare and adds the details of the cURL request. This can be passed along to a - * function. - * - * @return resource The handle for the cURL object. - * - */ - public function prep_request() - { - $curl_handle = curl_init(); - - // Set default options. - curl_setopt($curl_handle, CURLOPT_URL, $this->request_url); - curl_setopt($curl_handle, CURLOPT_FILETIME, true); - curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, false); -// curl_setopt($curl_handle, CURLOPT_CLOSEPOLICY, CURLCLOSEPOLICY_LEAST_RECENTLY_USED); - curl_setopt($curl_handle, CURLOPT_MAXREDIRS, 5); - curl_setopt($curl_handle, CURLOPT_HEADER, true); - curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curl_handle, CURLOPT_TIMEOUT, $this->timeout); - curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, $this->connect_timeout); - curl_setopt($curl_handle, CURLOPT_NOSIGNAL, true); - curl_setopt($curl_handle, CURLOPT_REFERER, $this->request_url); - curl_setopt($curl_handle, CURLOPT_USERAGENT, $this->useragent); - curl_setopt($curl_handle, CURLOPT_HEADERFUNCTION, array($this, 'streaming_header_callback')); - curl_setopt($curl_handle, CURLOPT_READFUNCTION, array($this, 'streaming_read_callback')); - - // Verification of the SSL cert - if ($this->ssl_verification) { - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, 2); - } else { - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false); - } - - // chmod the file as 0755 - if ($this->cacert_location === true) { - curl_setopt($curl_handle, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); - } elseif (is_string($this->cacert_location)) { - curl_setopt($curl_handle, CURLOPT_CAINFO, $this->cacert_location); - } - - // Debug mode - if ($this->debug_mode) { - curl_setopt($curl_handle, CURLOPT_VERBOSE, true); - } - - // Handle open_basedir & safe mode - if (!ini_get('safe_mode') && !ini_get('open_basedir')) { - curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); - } - - // Enable a proxy connection if requested. - if ($this->proxy) { - $host = $this->proxy['host']; - $host .= ($this->proxy['port']) ? ':' . $this->proxy['port'] : ''; - curl_setopt($curl_handle, CURLOPT_PROXY, $host); - - if (isset($this->proxy['user']) && isset($this->proxy['pass'])) { - curl_setopt($curl_handle, CURLOPT_PROXYUSERPWD, $this->proxy['user'] . ':' . $this->proxy['pass']); - } - } - - // Set credentials for HTTP Basic/Digest Authentication. - if ($this->username && $this->password) { - curl_setopt($curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); - curl_setopt($curl_handle, CURLOPT_USERPWD, $this->username . ':' . $this->password); - } - - // Handle the encoding if we can. - if (extension_loaded('zlib')) { - curl_setopt($curl_handle, CURLOPT_ENCODING, ''); - } - - // Process custom headers - if (isset($this->request_headers) && count($this->request_headers)) { - $temp_headers = array(); - - foreach ($this->request_headers as $k => $v) { - $temp_headers[] = $k . ': ' . $v; - } - - // fix "Expect: 100-continue" - $temp_headers[] = 'Expect:'; - curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $temp_headers); - } - - switch ($this->method) { - case self::HTTP_PUT: - //unset($this->read_stream); - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT'); - if (isset($this->read_stream)) { - if (!isset($this->read_stream_size) || $this->read_stream_size < 0) { - throw new RequestCore_Exception('The stream size for the streaming upload cannot be determined.'); - } - curl_setopt($curl_handle, CURLOPT_INFILESIZE, $this->read_stream_size); - curl_setopt($curl_handle, CURLOPT_UPLOAD, true); - } else { - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - } - break; - - case self::HTTP_POST: - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'POST'); - if (isset($this->read_stream)) { - if (!isset($this->read_stream_size) || $this->read_stream_size < 0) { - throw new RequestCore_Exception('The stream size for the streaming upload cannot be determined.'); - } - curl_setopt($curl_handle, CURLOPT_INFILESIZE, $this->read_stream_size); - curl_setopt($curl_handle, CURLOPT_UPLOAD, true); - } else { - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - } - break; - - case self::HTTP_HEAD: - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, self::HTTP_HEAD); - curl_setopt($curl_handle, CURLOPT_NOBODY, 1); - break; - - default: // Assumed GET - curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, $this->method); - if (isset($this->write_stream) || isset($this->write_file)) { - curl_setopt($curl_handle, CURLOPT_WRITEFUNCTION, array($this, 'streaming_write_callback')); - curl_setopt($curl_handle, CURLOPT_HEADER, false); - } else { - curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $this->request_body); - } - break; - } - - // Merge in the CURLOPTs - if (isset($this->curlopts) && sizeof($this->curlopts) > 0) { - foreach ($this->curlopts as $k => $v) { - curl_setopt($curl_handle, $k, $v); - } - } - - return $curl_handle; - } - - /** - * Take the post-processed cURL data and break it down into useful header/body/info chunks. Uses the - * data stored in the `curl_handle` and `response` properties unless replacement data is passed in via - * parameters. - * - * @param resource|\CurlHandle|null|false $curl_handle (Optional) The reference to the already executed cURL request. Receive CurlHandle instance from PHP8.0 - * @param string $response (Optional) The actual response content itself that needs to be parsed. - * @return ResponseCore A object containing a parsed HTTP response. - */ - public function process_response($curl_handle = null, $response = null) - { - // Accept a custom one if it's passed. - if ($curl_handle && $response) { - $this->response = $response; - } - - // As long as this came back as a valid resource or CurlHandle instance... - if (is_resource($curl_handle) || (is_object($curl_handle) && in_array(get_class($curl_handle),array('CurlHandle','Swoole\Curl\Handler', 'Swoole\Coroutine\Curl\Handle'),true))) { - // Determine what's what. - $header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE); - $this->response_headers = substr($this->response, 0, $header_size); - $this->response_body = substr($this->response, $header_size); - $this->response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE); - $this->response_info = curl_getinfo($curl_handle); - - if (intval($this->response_code) / 100 != 2 && isset($this->write_file)) - { - $this->response_headers = $this->response_raw_headers; - $this->response_body = $this->response_error_body; - } - - // Parse out the headers - $this->response_headers = explode("\r\n\r\n", trim($this->response_headers)); - $this->response_headers = array_pop($this->response_headers); - $this->response_headers = explode("\r\n", $this->response_headers); - array_shift($this->response_headers); - - // Loop through and split up the headers. - $header_assoc = array(); - foreach ($this->response_headers as $header) { - $kv = explode(': ', $header); - $header_assoc[strtolower($kv[0])] = isset($kv[1]) ? $kv[1] : ''; - } - - // Reset the headers to the appropriate property. - $this->response_headers = $header_assoc; - $this->response_headers['info'] = $this->response_info; - $this->response_headers['info']['method'] = $this->method; - - if ($curl_handle && $response) { - return new ResponseCore($this->response_headers, $this->response_body, $this->response_code); - } - } - - // Return false - return false; - } - - /** - * Send the request, calling necessary utility functions to update built-in properties. - * - * @param boolean $parse (Optional) Whether to parse the response with ResponseCore or not. - * @return string The resulting unparsed data from the request. - */ - public function send_request($parse = false) - { - set_time_limit(0); - - $curl_handle = $this->prep_request(); - $this->response = curl_exec($curl_handle); - - if ($this->response === false) { - throw new RequestCore_Exception('cURL error: ' . curl_error($curl_handle) . ' (' . curl_errno($curl_handle) . ')'); - } - - $parsed_response = $this->process_response($curl_handle, $this->response); - - curl_close($curl_handle); - unset($curl_handle); - - if ($parse) { - return $parsed_response; - } - - return $this->response; - } - - /*%******************************************************************************************%*/ - // RESPONSE METHODS - - /** - * Get the HTTP response headers from the request. - * - * @param string $header (Optional) A specific header value to return. Defaults to all headers. - * @return string|array All or selected header values. - */ - public function get_response_header($header = null) - { - if ($header) { - return $this->response_headers[strtolower($header)]; - } - return $this->response_headers; - } - - /** - * Get the HTTP response body from the request. - * - * @return string The response body. - */ - public function get_response_body() - { - return $this->response_body; - } - - /** - * Get the HTTP response code from the request. - * - * @return string The HTTP response code. - */ - public function get_response_code() - { - return $this->response_code; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore_Exception.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore_Exception.php deleted file mode 100644 index cb4e83c6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Http/RequestCore_Exception.php +++ /dev/null @@ -1,8 +0,0 @@ -). - * @param string $body (Required) XML-formatted response from OSS. - * @param integer $status (Optional) HTTP response status code from the request. - * @return Mixed Contains an `header` property (HTTP headers as an associative array), a or `body` property, and an `status` code. - */ - public function __construct($header, $body, $status = null) - { - $this->header = $header; - $this->body = $body; - $this->status = $status; - - return $this; - } - - /** - * Did we receive the status code we expected? - * - * @param integer|array $codes (Optional) The status code(s) to expect. Pass an for a single acceptable value, or an of integers for multiple acceptable values. - * @return boolean Whether we received the expected status code or not. - */ - public function isOK($codes = array(200, 201, 204, 206)) - { - if (is_array($codes)) { - return in_array($this->status, $codes); - } - - return $this->status === $codes; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php deleted file mode 100644 index e211eed6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketInfo.php +++ /dev/null @@ -1,181 +0,0 @@ -location = $location; - $this->createDate = $createDate; - $this->name = $name; - } - - /** - * Get bucket location - * - * @return string - */ - public function getLocation() - { - return $this->location; - } - - /** - * Get bucket name - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Get bucket creation time. - * - * @return string - */ - public function getCreateDate() - { - return $this->createDate; - } - - /** - * Get bucket storage class. - * - * @return string - */ - public function getStorageClass() - { - return $this->storageClass; - } - - /** - * Get bucket extranet endpoint. - * - * @return string - */ - public function getExtranetEndpoint() - { - return $this->extranetEndpoint; - } - - /** - * Get bucket intranet endpoint. - * - * @return string - */ - public function getIntranetEndpoint() - { - return $this->intranetEndpoint; - } - - /** - * Get bucket intranet endpoint. - * - * @return string - */ - public function getRegion() - { - return $this->region; - } - - - /** - * Parse bucket information from node. - * - * @param xml $xml - * @throws OssException - * @return null - */ - public function parseFromXmlNode($xml) - { - if (isset($xml->Location)) { - $this->location = strval($xml->Location); - } - if (isset($xml->Name)) { - $this->name = strval($xml->Name); - } - if (isset($xml->CreationDate)) { - $this->createDate = strval($xml->CreationDate); - } - if (isset($xml->StorageClass)) { - $this->storageClass = strval($xml->StorageClass); - } - if (isset($xml->ExtranetEndpoint)) { - $this->extranetEndpoint = strval($xml->ExtranetEndpoint); - } - if (isset($xml->IntranetEndpoint)) { - $this->intranetEndpoint = strval($xml->IntranetEndpoint); - } - if (isset($xml->IntranetEndpoint)) { - $this->intranetEndpoint = strval($xml->IntranetEndpoint); - } - if (isset($xml->Region)) { - $this->region = strval($xml->Region); - } - } - - /** - * bucket region - * - * @var string - */ - private $location; - /** - * bucket name - * - * @var string - */ - private $name; - - /** - * bucket creation time - * - * @var string - */ - private $createDate; - - /** - * bucket storage class - * - * @var string - */ - private $storageClass; - - /** - * bucket extranet endpoint - * - * @var string - */ - private $extranetEndpoint; - - /** - * bucket intranet endpoint - * - * @var string - */ - private $intranetEndpoint; - - /** - * bucket region - * - * @var string - */ - private $region; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php deleted file mode 100644 index ce03a0d7..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketListInfo.php +++ /dev/null @@ -1,39 +0,0 @@ -bucketList = $bucketList; - } - - /** - * Get the BucketInfo list - * - * @return BucketInfo[] - */ - public function getBucketList() - { - return $this->bucketList; - } - - /** - * BucketInfo list - * - * @var array - */ - private $bucketList = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketStat.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketStat.php deleted file mode 100644 index 60c7e55c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/BucketStat.php +++ /dev/null @@ -1,331 +0,0 @@ -storage; - } - - /** - * Get object count - * - * @return int - */ - public function getObjectCount() - { - return $this->objectCount; - } - - /** - * Get multipart upload count. - * - * @return int - */ - public function getMultipartUploadCount() - { - return $this->multipartUploadCount; - } - - /** - * Get live channel count - * - * @return int - */ - public function getLiveChannelCount() - { - return $this->liveChannelCount; - } - - /** - * Get last modified time - * - * @return int - */ - public function getLastModifiedTime() - { - return $this->lastModifiedTime; - } - - /** - * Get standard storage - * - * @return int - */ - public function getStandardStorage() - { - return $this->standardStorage; - } - - /** - * Get standard object count - * - * @return int - */ - public function getStandardObjectCount() - { - return $this->standardObjectCount; - } - - /** - * Get infrequent access storage - * - * @return int - */ - public function getInfrequentAccessStorage() - { - return $this->infrequentAccessStorage; - } - - /** - * Get infrequent access real storage - * - * @return int - */ - public function getInfrequentAccessRealStorage() - { - return $this->infrequentAccessRealStorage; - } - - /** - * Get infrequent access object count - * - * @return int - */ - public function getInfrequentAccessObjectCount() - { - return $this->infrequentAccessObjectCount; - } - - /** - * Get archive storage - * - * @return int - */ - public function getArchiveStorage() - { - return $this->archiveStorage; - } - - /** - * Get archive real storage - * - * @return int - */ - public function getArchiveRealStorage() - { - return $this->archiveRealStorage; - } - /** - * Get archive object count - * - * @return int - */ - public function getArchiveObjectCount() - { - return $this->archiveObjectCount; - } - - /** - * Get cold archive storage - * - * @return int - */ - public function getColdArchiveStorage() - { - return $this->coldArchiveStorage; - } - - /** - * Get cold archive real storage - * - * @return int - */ - public function getColdArchiveRealStorage() - { - return $this->coldArchiveRealStorage; - } - - /** - * Get cold archive object count - * - * @return int - */ - public function getColdArchiveObjectCount() - { - return $this->coldArchiveObjectCount; - } - - /** - * Parse stat from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (isset($xml->Storage) ) { - $this->storage = intval($xml->Storage); - } - if (isset($xml->ObjectCount) ) { - $this->objectCount = intval($xml->ObjectCount); - } - if (isset($xml->MultipartUploadCount) ) { - $this->multipartUploadCount = intval($xml->MultipartUploadCount); - } - if (isset($xml->LiveChannelCount) ) { - $this->liveChannelCount = intval($xml->LiveChannelCount); - } - if (isset($xml->LastModifiedTime) ) { - $this->lastModifiedTime = intval($xml->LastModifiedTime); - } - if (isset($xml->StandardStorage) ) { - $this->standardStorage = intval($xml->StandardStorage); - } - if (isset($xml->StandardObjectCount) ) { - $this->standardObjectCount = intval($xml->StandardObjectCount); - } - if (isset($xml->InfrequentAccessStorage) ) { - $this->infrequentAccessStorage = intval($xml->InfrequentAccessStorage); - } - if (isset($xml->InfrequentAccessRealStorage) ) { - $this->infrequentAccessRealStorage = intval($xml->InfrequentAccessRealStorage); - } - if (isset($xml->InfrequentAccessObjectCount) ) { - $this->infrequentAccessObjectCount = intval($xml->InfrequentAccessObjectCount); - } - if (isset($xml->ArchiveStorage) ) { - $this->archiveStorage = intval($xml->ArchiveStorage); - } - if (isset($xml->ArchiveRealStorage) ) { - $this->archiveRealStorage = intval($xml->ArchiveRealStorage); - } - if (isset($xml->ArchiveObjectCount) ) { - $this->archiveObjectCount = intval($xml->ArchiveObjectCount); - } - if (isset($xml->ColdArchiveStorage) ) { - $this->coldArchiveStorage = intval($xml->ColdArchiveStorage); - } - if (isset($xml->ColdArchiveRealStorage) ) { - $this->coldArchiveRealStorage = intval($xml->ColdArchiveRealStorage); - } - if (isset($xml->ColdArchiveObjectCount) ) { - $this->coldArchiveObjectCount = intval($xml->ColdArchiveObjectCount); - } - } - - /** - * current storage - * - * @var int - */ - private $storage; - /** - * object count - * - * @var int - */ - private $objectCount; - - /** - * multipart upload count - * - * @var int - */ - private $multipartUploadCount; - - /** - * live channel count - * @var int - */ - private $liveChannelCount; - - /** - * last modified time - * @var int - */ - private $lastModifiedTime; - - /** - * standard storage - * @var int - */ - private $standardStorage; - - /** - * standard object count - * @var int - */ - private $standardObjectCount; - - /** - * infrequent access storage - * @var int - */ - private $infrequentAccessStorage; - - /** - * infrequent access real storage - * @var int - */ - private $infrequentAccessRealStorage; - - /** - * infrequent access object Count - * @var int - */ - private $infrequentAccessObjectCount; - - /** - * archive storage - * @var int - */ - private $archiveStorage; - - /** - * archive real storage - * @var int - */ - private $archiveRealStorage; - - /** - * archive object count - * @var int - */ - private $archiveObjectCount; - - /** - * cold archive storage - * @var int - */ - private $coldArchiveStorage; - - /** - * cold archive real storage - * @var int - */ - private $coldArchiveRealStorage; - - /** - * cold archive object count - * @var int - */ - private $coldArchiveObjectCount; - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameConfig.php deleted file mode 100644 index f3597d2f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameConfig.php +++ /dev/null @@ -1,99 +0,0 @@ -cnameList = array(); - } - - /** - * @return array - * @example - * array(2) { - * [0]=> - * array(3) { - * ["Domain"]=> - * string(11) "www.foo.com" - * ["Status"]=> - * string(7) "enabled" - * ["LastModified"]=> - * string(8) "20150101" - * } - * [1]=> - * array(3) { - * ["Domain"]=> - * string(7) "bar.com" - * ["Status"]=> - * string(8) "disabled" - * ["LastModified"]=> - * string(8) "20160101" - * } - * } - */ - public function getCnames() - { - return $this->cnameList; - } - - - public function addCname($cname) - { - if (count($this->cnameList) >= self::OSS_MAX_RULES) { - throw new OssException( - "num of cname in the config exceeds self::OSS_MAX_RULES: " . strval(self::OSS_MAX_RULES)); - } - $this->cnameList[] = array('Domain' => $cname); - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (!isset($xml->Cname)) return; - foreach ($xml->Cname as $entry) { - $cname = array(); - foreach ($entry as $key => $value) { - $cname[strval($key)] = strval($value); - } - $this->cnameList[] = $cname; - } - } - - public function serializeToXml() - { - $strXml = << - - -EOF; - $xml = new \SimpleXMLElement($strXml); - foreach ($this->cnameList as $cname) { - $node = $xml->addChild('Cname'); - foreach ($cname as $key => $value) { - $node->addChild($key, $value); - } - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - const OSS_MAX_RULES = 10; - - private $cnameList = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameTokenInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameTokenInfo.php deleted file mode 100644 index 295cfbdd..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CnameTokenInfo.php +++ /dev/null @@ -1,105 +0,0 @@ -bucket; - } - - /** - * Get cname - * - * @return string - */ - public function getCname() - { - return $this->cname; - } - - /** - * Get token. - * - * @return string - */ - public function getToken() - { - return $this->token; - } - - /** - * Get expireTime. - * - * @return string - */ - public function getExpireTime() - { - return $this->expireTime; - } - - /** - * Parse cname token from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (isset($xml->Bucket) ) { - $this->bucket = strval($xml->Bucket); - } - if (isset($xml->Cname) ) { - $this->cname = strval($xml->Cname); - } - if (isset($xml->Token) ) { - $this->token = strval($xml->Token); - } - if (isset($xml->ExpireTime) ) { - $this->expireTime = strval($xml->ExpireTime); - } - } - - /** - * bucket name - * - * @var string - */ - private $bucket; - /** - * cname - * - * @var string - */ - private $cname; - - /** - * token - * - * @var string - */ - private $token; - - /** - * expire time - * - * @var string - */ - private $expireTime; - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php deleted file mode 100644 index 62a0d710..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsConfig.php +++ /dev/null @@ -1,113 +0,0 @@ -rules = array(); - } - - /** - * Get CorsRule list - * - * @return CorsRule[] - */ - public function getRules() - { - return $this->rules; - } - - - /** - * Add a new CorsRule - * - * @param CorsRule $rule - * @throws OssException - */ - public function addRule($rule) - { - if (count($this->rules) >= self::OSS_MAX_RULES) { - throw new OssException("num of rules in the config exceeds self::OSS_MAX_RULES: " . strval(self::OSS_MAX_RULES)); - } - $this->rules[] = $rule; - } - - /** - * Parse CorsConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (!isset($xml->CORSRule)) return; - foreach ($xml->CORSRule as $rule) { - $corsRule = new CorsRule(); - foreach ($rule as $key => $value) { - if ($key === self::OSS_CORS_ALLOWED_HEADER) { - $corsRule->addAllowedHeader(strval($value)); - } elseif ($key === self::OSS_CORS_ALLOWED_METHOD) { - $corsRule->addAllowedMethod(strval($value)); - } elseif ($key === self::OSS_CORS_ALLOWED_ORIGIN) { - $corsRule->addAllowedOrigin(strval($value)); - } elseif ($key === self::OSS_CORS_EXPOSE_HEADER) { - $corsRule->addExposeHeader(strval($value)); - } elseif ($key === self::OSS_CORS_MAX_AGE_SECONDS) { - $corsRule->setMaxAgeSeconds(strval($value)); - } - } - $this->addRule($corsRule); - } - return; - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - foreach ($this->rules as $rule) { - $xmlRule = $xml->addChild('CORSRule'); - $rule->appendToXml($xmlRule); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - const OSS_CORS_ALLOWED_ORIGIN = 'AllowedOrigin'; - const OSS_CORS_ALLOWED_METHOD = 'AllowedMethod'; - const OSS_CORS_ALLOWED_HEADER = 'AllowedHeader'; - const OSS_CORS_EXPOSE_HEADER = 'ExposeHeader'; - const OSS_CORS_MAX_AGE_SECONDS = 'MaxAgeSeconds'; - const OSS_MAX_RULES = 10; - - /** - * CorsRule list - * - * @var CorsRule[] - */ - private $rules = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php deleted file mode 100644 index 08353a0c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/CorsRule.php +++ /dev/null @@ -1,150 +0,0 @@ -allowedOrigins[] = $allowedOrigin; - } - } - - /** - * Add an allowedMethod rule - * - * @param string $allowedMethod - */ - public function addAllowedMethod($allowedMethod) - { - if (!empty($allowedMethod)) { - $this->allowedMethods[] = $allowedMethod; - } - } - - /** - * Add an allowedHeader rule - * - * @param string $allowedHeader - */ - public function addAllowedHeader($allowedHeader) - { - if (!empty($allowedHeader)) { - $this->allowedHeaders[] = $allowedHeader; - } - } - - /** - * Add an exposeHeader rule - * - * @param string $exposeHeader - */ - public function addExposeHeader($exposeHeader) - { - if (!empty($exposeHeader)) { - $this->exposeHeaders[] = $exposeHeader; - } - } - - /** - * @return int - */ - public function getMaxAgeSeconds() - { - return $this->maxAgeSeconds; - } - - /** - * @param int $maxAgeSeconds - */ - public function setMaxAgeSeconds($maxAgeSeconds) - { - $this->maxAgeSeconds = $maxAgeSeconds; - } - - /** - * Get the AllowedHeaders list - * - * @return string[] - */ - public function getAllowedHeaders() - { - return $this->allowedHeaders; - } - - /** - * Get the AllowedOrigins list - * - * @return string[] - */ - public function getAllowedOrigins() - { - return $this->allowedOrigins; - } - - /** - * Get the AllowedMethods list - * - * @return string[] - */ - public function getAllowedMethods() - { - return $this->allowedMethods; - } - - /** - * Get the ExposeHeaders list - * - * @return string[] - */ - public function getExposeHeaders() - { - return $this->exposeHeaders; - } - - /** - * Serialize all the rules into the xml represented by parameter $xmlRule - * - * @param \SimpleXMLElement $xmlRule - * @throws OssException - */ - public function appendToXml(&$xmlRule) - { - if (!isset($this->maxAgeSeconds)) { - throw new OssException("maxAgeSeconds is not set in the Rule"); - } - foreach ($this->allowedOrigins as $allowedOrigin) { - $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_ORIGIN, $allowedOrigin); - } - foreach ($this->allowedMethods as $allowedMethod) { - $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_METHOD, $allowedMethod); - } - foreach ($this->allowedHeaders as $allowedHeader) { - $xmlRule->addChild(CorsConfig::OSS_CORS_ALLOWED_HEADER, $allowedHeader); - } - foreach ($this->exposeHeaders as $exposeHeader) { - $xmlRule->addChild(CorsConfig::OSS_CORS_EXPOSE_HEADER, $exposeHeader); - } - $xmlRule->addChild(CorsConfig::OSS_CORS_MAX_AGE_SECONDS, strval($this->maxAgeSeconds)); - } - - private $allowedHeaders = array(); - private $allowedOrigins = array(); - private $allowedMethods = array(); - private $exposeHeaders = array(); - private $maxAgeSeconds = null; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteMarkerInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteMarkerInfo.php deleted file mode 100644 index c129e99f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteMarkerInfo.php +++ /dev/null @@ -1,65 +0,0 @@ -key = $key; - $this->versionId = $versionId; - $this->lastModified = $lastModified; - $this->isLatest = $isLatest; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getVersionId() - { - return $this->versionId; - } - - /** - * @return string - */ - public function getLastModified() - { - return $this->lastModified; - } - - /** - * @return string - */ - public function getIsLatest() - { - return $this->isLatest; - } - - private $key = ""; - private $versionId = ""; - private $lastModified = ""; - private $isLatest = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteObjectInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteObjectInfo.php deleted file mode 100644 index 806eafbe..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeleteObjectInfo.php +++ /dev/null @@ -1,41 +0,0 @@ -key = $key; - $this->versionId = $versionId; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getVersionId() - { - return $this->versionId; - } - - private $key = ""; - private $versionId = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeletedObjectInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeletedObjectInfo.php deleted file mode 100644 index 6bba39a4..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/DeletedObjectInfo.php +++ /dev/null @@ -1,63 +0,0 @@ -key = $key; - $this->versionId = $versionId; - $this->deleteMarker = $deleteMarker; - $this->deleteMarkerVersionId = $deleteMarkerVersionId; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getVersionId() - { - return $this->versionId; - } - - /** - * @return string - */ - public function getDeleteMarker() - { - return $this->deleteMarker; - } - - /** - * @return string - */ - public function getDeleteMarkerVersionId() - { - return $this->deleteMarkerVersionId; - } - - private $key = ""; - private $versionId = ""; - private $deleteMarker = ""; - private $deleteMarkerVersionId = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ExtendWormConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ExtendWormConfig.php deleted file mode 100644 index 5e62287f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ExtendWormConfig.php +++ /dev/null @@ -1,64 +0,0 @@ -day = $day; - } - - /** - * Parse ExtendWormConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - throw new OssException("Not implemented."); - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->day)) { - $xml->addChild('RetentionPeriodInDays', $this->day); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return int - */ - public function getDay() - { - return $this->day; - } - - private $day = 0; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelHistory.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelHistory.php deleted file mode 100644 index e6d518a9..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelHistory.php +++ /dev/null @@ -1,37 +0,0 @@ -liveRecordList; - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - - if (isset($xml->LiveRecord)) { - foreach ($xml->LiveRecord as $record) { - $liveRecord = new LiveChannelHistory(); - $liveRecord->parseFromXmlNode($record); - $this->liveRecordList[] = $liveRecord; - } - } - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $liveRecordList = array(); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelInfo.php deleted file mode 100644 index 0b5edfc4..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelInfo.php +++ /dev/null @@ -1,68 +0,0 @@ -description; - } - - public function getStatus() - { - return $this->status; - } - - public function getType() - { - return $this->type; - } - - public function getFragDuration() - { - return $this->fragDuration; - } - - public function getFragCount() - { - return $this->fragCount; - } - - public function getPlayListName() - { - return $this->playlistName; - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - - $this->description = strval($xml->Description); - $this->status = strval($xml->Status); - - if (isset($xml->Target)) { - foreach ($xml->Target as $target) { - $this->type = strval($target->Type); - $this->fragDuration = strval($target->FragDuration); - $this->fragCount = strval($target->FragCount); - $this->playlistName = strval($target->PlaylistName); - } - } - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $description; - private $status; - private $type; - private $fragDuration; - private $fragCount; - private $playlistName; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelStatus.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelStatus.php deleted file mode 100644 index 2ee7a68b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/GetLiveChannelStatus.php +++ /dev/null @@ -1,107 +0,0 @@ -status; - } - - public function getConnectedTime() - { - return $this->connectedTime; - } - - public function getRemoteAddr() - { - return $this->remoteAddr; - } - - public function getVideoWidth() - { - return $this->videoWidth; - } - public function getVideoHeight() - { - return $this->videoHeight; - } - public function getVideoFrameRate() - { - return $this->videoFrameRate; - } - public function getVideoBandwidth() - { - return $this->videoBandwidth; - } - public function getVideoCodec() - { - return $this->videoCodec; - } - - public function getAudioBandwidth() - { - return $this->audioBandwidth; - } - public function getAudioSampleRate() - { - return $this->audioSampleRate; - } - public function getAudioCodec() - { - return $this->audioCodec; - } - - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - $this->status = strval($xml->Status); - $this->connectedTime = strval($xml->ConnectedTime); - $this->remoteAddr = strval($xml->RemoteAddr); - - if (isset($xml->Video)) { - foreach ($xml->Video as $video) { - $this->videoWidth = intval($video->Width); - $this->videoHeight = intval($video->Height); - $this->videoFrameRate = intval($video->FrameRate); - $this->videoBandwidth = intval($video->Bandwidth); - $this->videoCodec = strval($video->Codec); - } - } - - if (isset($xml->Video)) { - foreach ($xml->Audio as $audio) { - $this->audioBandwidth = intval($audio->Bandwidth); - $this->audioSampleRate = intval($audio->SampleRate); - $this->audioCodec = strval($audio->Codec); - } - } - - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $status; - private $connectedTime; - private $remoteAddr; - - private $videoWidth; - private $videoHeight; - private $videoFrameRate; - private $videoBandwidth; - private $videoCodec; - - private $audioBandwidth; - private $audioSampleRate; - private $audioCodec; - - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/InitiateWormConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/InitiateWormConfig.php deleted file mode 100644 index 572ceed0..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/InitiateWormConfig.php +++ /dev/null @@ -1,64 +0,0 @@ -day = $day; - } - - /** - * Parse InitiateWormConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - throw new OssException("Not implemented."); - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->day)) { - $xml->addChild('RetentionPeriodInDays', $this->day); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return int - */ - public function getDay() - { - return $this->day; - } - - private $day = 0; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php deleted file mode 100644 index a0e21269..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleAction.php +++ /dev/null @@ -1,88 +0,0 @@ -action = $action; - $this->timeSpec = $timeSpec; - $this->timeValue = $timeValue; - } - - /** - * @return LifecycleAction - */ - public function getAction() - { - return $this->action; - } - - /** - * @param string $action - */ - public function setAction($action) - { - $this->action = $action; - } - - /** - * @return string - */ - public function getTimeSpec() - { - return $this->timeSpec; - } - - /** - * @param string $timeSpec - */ - public function setTimeSpec($timeSpec) - { - $this->timeSpec = $timeSpec; - } - - /** - * @return string - */ - public function getTimeValue() - { - return $this->timeValue; - } - - /** - * @param string $timeValue - */ - public function setTimeValue($timeValue) - { - $this->timeValue = $timeValue; - } - - /** - * Use appendToXml to insert actions into xml. - * - * @param \SimpleXMLElement $xmlRule - */ - public function appendToXml(&$xmlRule) - { - $xmlAction = $xmlRule->addChild($this->action); - $xmlAction->addChild($this->timeSpec, $this->timeValue); - } - - private $action; - private $timeSpec; - private $timeValue; - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php deleted file mode 100644 index f2d2dc33..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleConfig.php +++ /dev/null @@ -1,107 +0,0 @@ -rules = array(); - $xml = simplexml_load_string($strXml); - if (!isset($xml->Rule)) return; - $this->rules = array(); - foreach ($xml->Rule as $rule) { - $id = strval($rule->ID); - $prefix = strval($rule->Prefix); - $status = strval($rule->Status); - $actions = array(); - foreach ($rule as $key => $value) { - if ($key === 'ID' || $key === 'Prefix' || $key === 'Status') continue; - $action = $key; - $timeSpec = null; - $timeValue = null; - foreach ($value as $timeSpecKey => $timeValueValue) { - $timeSpec = $timeSpecKey; - $timeValue = strval($timeValueValue); - } - $actions[] = new LifecycleAction($action, $timeSpec, $timeValue); - } - $this->rules[] = new LifecycleRule($id, $prefix, $status, $actions); - } - return; - } - - - /** - * Serialize the object to xml - * - * @return string - */ - public function serializeToXml() - { - - $xml = new \SimpleXMLElement(''); - foreach ($this->rules as $rule) { - $xmlRule = $xml->addChild('Rule'); - $rule->appendToXml($xmlRule); - } - return $xml->asXML(); - } - - /** - * - * Add a LifecycleRule - * - * @param LifecycleRule $lifecycleRule - * @throws OssException - */ - public function addRule($lifecycleRule) - { - if (!isset($lifecycleRule)) { - throw new OssException("lifecycleRule is null"); - } - $this->rules[] = $lifecycleRule; - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * Get all lifecycle rules. - * - * @return LifecycleRule[] - */ - public function getRules() - { - return $this->rules; - } - - /** - * @var LifecycleRule[] - */ - private $rules; -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php deleted file mode 100644 index 73c6cc35..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LifecycleRule.php +++ /dev/null @@ -1,126 +0,0 @@ -id; - } - - /** - * @param string $id Rule Id - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * Get a file prefix - * - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * Set a file prefix - * - * @param string $prefix The file prefix - */ - public function setPrefix($prefix) - { - $this->prefix = $prefix; - } - - /** - * Get Lifecycle status - * - * @return string - */ - public function getStatus() - { - return $this->status; - } - - /** - * Set Lifecycle status - * - * @param string $status - */ - public function setStatus($status) - { - $this->status = $status; - } - - /** - * - * @return LifecycleAction[] - */ - public function getActions() - { - return $this->actions; - } - - /** - * @param LifecycleAction[] $actions - */ - public function setActions($actions) - { - $this->actions = $actions; - } - - - /** - * LifecycleRule constructor. - * - * @param string $id rule Id - * @param string $prefix File prefix - * @param string $status Rule status, which has the following valid values: [self::LIFECYCLE_STATUS_ENABLED, self::LIFECYCLE_STATUS_DISABLED] - * @param LifecycleAction[] $actions - */ - public function __construct($id, $prefix, $status, $actions) - { - $this->id = $id; - $this->prefix = $prefix; - $this->status = $status; - $this->actions = $actions; - } - - /** - * @param \SimpleXMLElement $xmlRule - */ - public function appendToXml(&$xmlRule) - { - $xmlRule->addChild('ID', $this->id); - $xmlRule->addChild('Prefix', $this->prefix); - $xmlRule->addChild('Status', $this->status); - foreach ($this->actions as $action) { - $action->appendToXml($xmlRule); - } - } - - private $id; - private $prefix; - private $status; - private $actions = array(); - - const LIFECYCLE_STATUS_ENABLED = 'Enabled'; - const LIFECYCLE_STATUS_DISABLED = 'Disabled'; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListMultipartUploadInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListMultipartUploadInfo.php deleted file mode 100644 index 105d005b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListMultipartUploadInfo.php +++ /dev/null @@ -1,134 +0,0 @@ -bucket = $bucket; - $this->keyMarker = $keyMarker; - $this->uploadIdMarker = $uploadIdMarker; - $this->nextKeyMarker = $nextKeyMarker; - $this->nextUploadIdMarker = $nextUploadIdMarker; - $this->delimiter = $delimiter; - $this->prefix = $prefix; - $this->maxUploads = $maxUploads; - $this->isTruncated = $isTruncated; - $this->uploads = $uploads; - } - - /** - * 得到bucket名称 - * - * @return string - */ - public function getBucket() - { - return $this->bucket; - } - - /** - * @return string - */ - public function getKeyMarker() - { - return $this->keyMarker; - } - - /** - * - * @return string - */ - public function getUploadIdMarker() - { - return $this->uploadIdMarker; - } - - /** - * @return string - */ - public function getNextKeyMarker() - { - return $this->nextKeyMarker; - } - - /** - * @return string - */ - public function getNextUploadIdMarker() - { - return $this->nextUploadIdMarker; - } - - /** - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * @return int - */ - public function getMaxUploads() - { - return $this->maxUploads; - } - - /** - * @return string - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * @return UploadInfo[] - */ - public function getUploads() - { - return $this->uploads; - } - - private $bucket = ""; - private $keyMarker = ""; - private $uploadIdMarker = ""; - private $nextKeyMarker = ""; - private $nextUploadIdMarker = ""; - private $delimiter = ""; - private $prefix = ""; - private $maxUploads = 0; - private $isTruncated = "false"; - private $uploads = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListPartsInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListPartsInfo.php deleted file mode 100644 index f1d10ee9..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ListPartsInfo.php +++ /dev/null @@ -1,97 +0,0 @@ -bucket = $bucket; - $this->key = $key; - $this->uploadId = $uploadId; - $this->nextPartNumberMarker = $nextPartNumberMarker; - $this->maxParts = $maxParts; - $this->isTruncated = $isTruncated; - $this->listPart = $listPart; - } - - /** - * @return string - */ - public function getBucket() - { - return $this->bucket; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getUploadId() - { - return $this->uploadId; - } - - /** - * @return int - */ - public function getNextPartNumberMarker() - { - return $this->nextPartNumberMarker; - } - - /** - * @return int - */ - public function getMaxParts() - { - return $this->maxParts; - } - - /** - * @return string - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * @return array - */ - public function getListPart() - { - return $this->listPart; - } - - private $bucket = ""; - private $key = ""; - private $uploadId = ""; - private $nextPartNumberMarker = 0; - private $maxParts = 0; - private $isTruncated = ""; - private $listPart = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelConfig.php deleted file mode 100644 index dadedc91..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelConfig.php +++ /dev/null @@ -1,121 +0,0 @@ -description = $option['description']; - } - if (isset($option['status'])) { - $this->status = $option['status']; - } - if (isset($option['type'])) { - $this->type = $option['type']; - } - if (isset($option['fragDuration'])) { - $this->fragDuration = $option['fragDuration']; - } - if (isset($option['fragCount'])) { - $this->fragCount = $option['fragCount']; - } - if (isset($option['playListName'])) { - $this->playListName = $option['playListName']; - } - } - - public function getDescription() - { - return $this->description; - } - - public function getStatus() - { - return $this->status; - } - - public function getType() - { - return $this->type; - } - - public function getFragDuration() - { - return $this->fragDuration; - } - - public function getFragCount() - { - return $this->fragCount; - } - - public function getPlayListName() - { - return $this->playListName; - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - $this->description = strval($xml->Description); - $this->status = strval($xml->Status); - $target = $xml->Target; - $this->type = strval($target->Type); - $this->fragDuration = intval($target->FragDuration); - $this->fragCount = intval($target->FragCount); - $this->playListName = strval($target->PlayListName); - } - - public function serializeToXml() - { - $strXml = << - - -EOF; - $xml = new \SimpleXMLElement($strXml); - if (isset($this->description)) { - $xml->addChild('Description', $this->description); - } - - if (isset($this->status)) { - $xml->addChild('Status', $this->status); - } - - $node = $xml->addChild('Target'); - $node->addChild('Type', $this->type); - - if (isset($this->fragDuration)) { - $node->addChild('FragDuration', $this->fragDuration); - } - - if (isset($this->fragCount)) { - $node->addChild('FragCount', $this->fragCount); - } - - if (isset($this->playListName)) { - $node->addChild('PlayListName', $this->playListName); - } - - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - private $description; - private $status = "enabled"; - private $type; - private $fragDuration = 5; - private $fragCount = 3; - private $playListName = "playlist.m3u8"; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelHistory.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelHistory.php deleted file mode 100644 index 1c1fd4db..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelHistory.php +++ /dev/null @@ -1,59 +0,0 @@ -startTime; - } - - public function getEndTime() - { - return $this->endTime; - } - - public function getRemoteAddr() - { - return $this->remoteAddr; - } - - public function parseFromXmlNode($xml) - { - if (isset($xml->StartTime)) { - $this->startTime = strval($xml->StartTime); - } - - if (isset($xml->EndTime)) { - $this->endTime = strval($xml->EndTime); - } - - if (isset($xml->RemoteAddr)) { - $this->remoteAddr = strval($xml->RemoteAddr); - } - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - $this->parseFromXmlNode($xml); - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $startTime; - private $endTime; - private $remoteAddr; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelInfo.php deleted file mode 100644 index c63ec54d..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelInfo.php +++ /dev/null @@ -1,107 +0,0 @@ -name = $name; - $this->description = $description; - $this->publishUrls = array(); - $this->playUrls = array(); - } - - public function getName() - { - return $this->name; - } - - public function setName($name) - { - $this->name = $name; - } - - public function getPublishUrls() - { - return $this->publishUrls; - } - - public function getPlayUrls() - { - return $this->playUrls; - } - - public function getStatus() - { - return $this->status; - } - - public function getLastModified() - { - return $this->lastModified; - } - - public function getDescription() - { - return $this->description; - } - - public function setDescription($description) - { - $this->description = $description; - } - - public function parseFromXmlNode($xml) - { - if (isset($xml->Name)) { - $this->name = strval($xml->Name); - } - - if (isset($xml->Description)) { - $this->description = strval($xml->Description); - } - - if (isset($xml->Status)) { - $this->status = strval($xml->Status); - } - - if (isset($xml->LastModified)) { - $this->lastModified = strval($xml->LastModified); - } - - if (isset($xml->PublishUrls)) { - foreach ($xml->PublishUrls as $url) { - $this->publishUrls[] = strval($url->Url); - } - } - - if (isset($xml->PlayUrls)) { - foreach ($xml->PlayUrls as $url) { - $this->playUrls[] = strval($url->Url); - } - } - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - $this->parseFromXmlNode($xml); - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $name; - private $description; - private $publishUrls; - private $playUrls; - private $status; - private $lastModified; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php deleted file mode 100644 index f4ee02f6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LiveChannelListInfo.php +++ /dev/null @@ -1,107 +0,0 @@ -bucket; - } - - public function setBucketName($name) - { - $this->bucket = $name; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * @return string - */ - public function getMarker() - { - return $this->marker; - } - - /** - * @return int - */ - public function getMaxKeys() - { - return $this->maxKeys; - } - - /** - * @return mixed - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * @return LiveChannelInfo[] - */ - public function getChannelList() - { - return $this->channelList; - } - - /** - * @return string - */ - public function getNextMarker() - { - return $this->nextMarker; - } - - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - - $this->prefix = strval($xml->Prefix); - $this->marker = strval($xml->Marker); - $this->maxKeys = intval($xml->MaxKeys); - $this->isTruncated = (strval($xml->IsTruncated) == 'true'); - $this->nextMarker = strval($xml->NextMarker); - - if (isset($xml->LiveChannel)) { - foreach ($xml->LiveChannel as $chan) { - $channel = new LiveChannelInfo(); - $channel->parseFromXmlNode($chan); - $this->channelList[] = $channel; - } - } - } - - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - private $bucket = ''; - private $prefix = ''; - private $marker = ''; - private $nextMarker = ''; - private $maxKeys = 100; - private $isTruncated = 'false'; - private $channelList = array(); -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php deleted file mode 100644 index ed9fb1db..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/LoggingConfig.php +++ /dev/null @@ -1,86 +0,0 @@ -targetBucket = $targetBucket; - $this->targetPrefix = $targetPrefix; - } - - /** - * @param $strXml - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (!isset($xml->LoggingEnabled)) return; - foreach ($xml->LoggingEnabled as $status) { - foreach ($status as $key => $value) { - if ($key === 'TargetBucket') { - $this->targetBucket = strval($value); - } elseif ($key === 'TargetPrefix') { - $this->targetPrefix = strval($value); - } - } - break; - } - } - - /** - * Serialize to xml string - * - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->targetBucket) && isset($this->targetPrefix)) { - $loggingEnabled = $xml->addChild('LoggingEnabled'); - $loggingEnabled->addChild('TargetBucket', $this->targetBucket); - $loggingEnabled->addChild('TargetPrefix', $this->targetPrefix); - } - return $xml->asXML(); - } - - /** - * @return string - */ - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return string - */ - public function getTargetBucket() - { - return $this->targetBucket; - } - - /** - * @return string - */ - public function getTargetPrefix() - { - return $this->targetPrefix; - } - - private $targetBucket = ""; - private $targetPrefix = ""; - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php deleted file mode 100644 index 5b412240..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectInfo.php +++ /dev/null @@ -1,103 +0,0 @@ -key = $key; - $this->lastModified = $lastModified; - $this->eTag = $eTag; - $this->type = $type; - $this->size = $size; - $this->storageClass = $storageClass; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getLastModified() - { - return $this->lastModified; - } - - /** - * @return string - */ - public function getETag() - { - return $this->eTag; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * php7 && 64bit can use it - * @return int - */ - public function getSize() - { - return (int)$this->size; - } - - - /** - * php5.x or 32bit must use it - * @return string - */ - public function getSizeStr() - { - return $this->size; - } - - /** - * @return string - */ - public function getStorageClass() - { - return $this->storageClass; - } - - private $key = ""; - private $lastModified = ""; - private $eTag = ""; - private $type = ""; - private $size = "0"; - private $storageClass = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php deleted file mode 100644 index 81c5d27b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfo.php +++ /dev/null @@ -1,126 +0,0 @@ -bucketName = $bucketName; - $this->prefix = $prefix; - $this->marker = $marker; - $this->nextMarker = $nextMarker; - $this->maxKeys = $maxKeys; - $this->delimiter = $delimiter; - $this->isTruncated = $isTruncated; - $this->objectList = $objectList; - $this->prefixList = $prefixList; - } - - /** - * @return string - */ - public function getBucketName() - { - return $this->bucketName; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * @return string - */ - public function getMarker() - { - return $this->marker; - } - - /** - * @return int - */ - public function getMaxKeys() - { - return $this->maxKeys; - } - - /** - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * @return mixed - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * Get the ObjectInfo list. - * - * @return ObjectInfo[] - */ - public function getObjectList() - { - return $this->objectList; - } - - /** - * Get the PrefixInfo list - * - * @return PrefixInfo[] - */ - public function getPrefixList() - { - return $this->prefixList; - } - - /** - * @return string - */ - public function getNextMarker() - { - return $this->nextMarker; - } - - private $bucketName = ""; - private $prefix = ""; - private $marker = ""; - private $nextMarker = ""; - private $maxKeys = 0; - private $delimiter = ""; - private $isTruncated = null; - private $objectList = array(); - private $prefixList = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfoV2.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfoV2.php deleted file mode 100644 index c1fef22c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectListInfoV2.php +++ /dev/null @@ -1,147 +0,0 @@ -bucketName = $bucketName; - $this->prefix = $prefix; - $this->maxKeys = $maxKeys; - $this->delimiter = $delimiter; - $this->isTruncated = $isTruncated; - $this->objectList = $objectList; - $this->prefixList = $prefixList; - $this->continuationToken = $continuationToken; - $this->nextContinuationToken = $nextContinuationToken; - $this->startAfter = $startAfter; - $this->keyCount = $keyCount; - } - - /** - * @return string - */ - public function getBucketName() - { - return $this->bucketName; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * @return int - */ - public function getMaxKeys() - { - return $this->maxKeys; - } - - /** - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * @return mixed - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * Get the ObjectInfo list. - * - * @return ObjectInfo[] - */ - public function getObjectList() - { - return $this->objectList; - } - - /** - * Get the PrefixInfo list - * - * @return PrefixInfo[] - */ - public function getPrefixList() - { - return $this->prefixList; - } - - /** - * @return string - */ - public function getContinuationToken() - { - return $this->continuationToken; - } - - /** - * @return string - */ - public function getNextContinuationToken() - { - return $this->nextContinuationToken; - } - - /** - * @return string - */ - public function getStartAfter() - { - return $this->startAfter; - } - - /** - * @return int - */ - public function getKeyCount() - { - return $this->keyCount; - } - - private $bucketName = ""; - private $prefix = ""; - private $maxKeys = 0; - private $delimiter = ""; - private $isTruncated = null; - private $objectList = array(); - private $prefixList = array(); - private $nextContinuationToken = ""; - private $continuationToken = ""; - private $startAfter = ""; - private $keyCount = 0; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php deleted file mode 100644 index 663bd0b3..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionInfo.php +++ /dev/null @@ -1,125 +0,0 @@ -key = $key; - $this->versionId = $versionId; - $this->lastModified = $lastModified; - $this->eTag = $eTag; - $this->type = $type; - $this->size = $size; - $this->storageClass = $storageClass; - $this->isLatest = $isLatest; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getVersionId() - { - return $this->versionId; - } - - /** - * @return string - */ - public function getLastModified() - { - return $this->lastModified; - } - - /** - * @return string - */ - public function getETag() - { - return $this->eTag; - } - - /** - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * php7 && 64bit can use it - * @return int - */ - public function getSize() - { - return (int)$this->size; - } - - - /** - * php5.x or 32bit must use it - * @return string - */ - public function getSizeStr() - { - return $this->size; - } - - /** - * @return string - */ - public function getStorageClass() - { - return $this->storageClass; - } - - /** - * @return string - */ - public function getIsLatest() - { - return $this->isLatest; - } - - private $key = ""; - private $versionId = ""; - private $lastModified = ""; - private $eTag = ""; - private $type = ""; - private $size = "0"; - private $storageClass = ""; - private $isLatest = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionListInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionListInfo.php deleted file mode 100644 index c94210d0..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ObjectVersionListInfo.php +++ /dev/null @@ -1,162 +0,0 @@ -bucketName = $bucketName; - $this->prefix = $prefix; - $this->keyMarker = $keyMarker; - $this->nextKeyMarker = $nextKeyMarker; - $this->versionIdMarker = $versionIdMarker; - $this->nextVersionIdMarker = $nextVersionIdMarker; - $this->maxKeys = $maxKeys; - $this->delimiter = $delimiter; - $this->isTruncated = $isTruncated; - $this->objectVersionList = $objectversionList; - $this->deleteMarkerList = $deleteMarkerList; - $this->prefixList = $prefixList; - } - - /** - * @return string - */ - public function getBucketName() - { - return $this->bucketName; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - /** - * @return string - */ - public function getKeyMarker() - { - return $this->keyMarker; - } - - /** - * @return string - */ - public function getNextKeyMarker() - { - return $this->nextKeyMarker; - } - - /** - * @return string - */ - public function getVersionIdMarker() - { - return $this->versionIdMarker; - } - - /** - * @return string - */ - public function getNextVersionIdMarker() - { - return $this->nextVersionIdMarker; - } - - /** - * @return int - */ - public function getMaxKeys() - { - return $this->maxKeys; - } - - /** - * @return string - */ - public function getDelimiter() - { - return $this->delimiter; - } - - /** - * @return mixed - */ - public function getIsTruncated() - { - return $this->isTruncated; - } - - /** - * Get the ObjectVersionInfo list. - * - * @return ObjectVersionInfo[] - */ - public function getObjectVersionList() - { - return $this->objectVersionList; - } - - /** - * Get the DeleteMarkerInfo list. - * - * @return DeleteMarkerInfo[] - */ - public function getDeleteMarkerList() - { - return $this->deleteMarkerList; - } - - /** - * Get the PrefixInfo list - * - * @return PrefixInfo[] - */ - public function getPrefixList() - { - return $this->prefixList; - } - - private $bucketName = ""; - private $prefix = ""; - private $keyMarker = ""; - private $nextKeyMarker = ""; - private $versionIdmarker = ""; - private $nextVersionIdMarker = ""; - private $maxKeys = 0; - private $delimiter = ""; - private $isTruncated = null; - private $objectVersionList = array(); - private $deleteMarkerList = array(); - private $prefixList = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php deleted file mode 100644 index 07df5768..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PartInfo.php +++ /dev/null @@ -1,74 +0,0 @@ -partNumber = $partNumber; - $this->lastModified = $lastModified; - $this->eTag = $eTag; - $this->size = $size; - } - - /** - * @return int - */ - public function getPartNumber() - { - return $this->partNumber; - } - - /** - * @return string - */ - public function getLastModified() - { - return $this->lastModified; - } - - /** - * @return string - */ - public function getETag() - { - return $this->eTag; - } - - /** - * php7 && 64bit can use it - * @return int - */ - public function getSize() - { - return (int)$this->size; - } - - - /** - * php5.x or 32bit must use it - * @return string - */ - public function getSizeStr() - { - return $this->size; - } - - private $partNumber = 0; - private $lastModified = ""; - private $eTag = ""; - private $size = "0"; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php deleted file mode 100644 index 27920b9f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/PrefixInfo.php +++ /dev/null @@ -1,36 +0,0 @@ -prefix = $prefix; - } - - /** - * @return string - */ - public function getPrefix() - { - return $this->prefix; - } - - private $prefix; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php deleted file mode 100644 index 08301439..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RefererConfig.php +++ /dev/null @@ -1,93 +0,0 @@ -AllowEmptyReferer)) return; - if (!isset($xml->RefererList)) return; - $this->allowEmptyReferer = - (strval($xml->AllowEmptyReferer) === 'TRUE' || strval($xml->AllowEmptyReferer) === 'true') ? true : false; - - foreach ($xml->RefererList->Referer as $key => $refer) { - $this->refererList[] = strval($refer); - } - } - - - /** - * serialize the RefererConfig object into xml string - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if ($this->allowEmptyReferer) { - $xml->addChild('AllowEmptyReferer', 'true'); - } else { - $xml->addChild('AllowEmptyReferer', 'false'); - } - $refererList = $xml->addChild('RefererList'); - foreach ($this->refererList as $referer) { - $refererList->addChild('Referer', $referer); - } - return $xml->asXML(); - } - - /** - * @return string - */ - function __toString() - { - return $this->serializeToXml(); - } - - /** - * @param boolean $allowEmptyReferer - */ - public function setAllowEmptyReferer($allowEmptyReferer) - { - $this->allowEmptyReferer = $allowEmptyReferer; - } - - /** - * @param string $referer - */ - public function addReferer($referer) - { - $this->refererList[] = $referer; - } - - /** - * @return boolean - */ - public function isAllowEmptyReferer() - { - return $this->allowEmptyReferer; - } - - /** - * @return array - */ - public function getRefererList() - { - return $this->refererList; - } - - private $allowEmptyReferer = true; - private $refererList = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RequestPaymentConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RequestPaymentConfig.php deleted file mode 100644 index 6b32060d..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RequestPaymentConfig.php +++ /dev/null @@ -1,68 +0,0 @@ -payer = $payer; - } - - /** - * Parse ServerSideEncryptionConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (isset($xml->Payer)) { - $this->payer = strval($xml->Payer); - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->payer)) { - $xml->addChild('Payer', $this->payer); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return string - */ - public function getPayer() - { - return $this->payer; - } - - private $payer = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RestoreConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RestoreConfig.php deleted file mode 100644 index 156852a4..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/RestoreConfig.php +++ /dev/null @@ -1,77 +0,0 @@ -day = $day; - $this->tier = $tier; - } - - /** - * Parse RestoreConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - throw new OssException("Not implemented."); - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - $xml->addChild('Days', strval($this->day)); - if (isset($this->tier)) { - $xml_param = $xml->addChild('JobParameters'); - $xml_param->addChild('Tier', $this->tier); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return int - */ - public function getDay() - { - return $this->day; - } - - /** - * @return string - */ - public function getTier() - { - return $this->tier; - } - - private $day = 1; - private $tier = 'Standard'; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ServerSideEncryptionConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ServerSideEncryptionConfig.php deleted file mode 100644 index e3a190b8..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/ServerSideEncryptionConfig.php +++ /dev/null @@ -1,91 +0,0 @@ -sseAlgorithm = $sseAlgorithm; - $this->kmsMasterKeyID = $kmsMasterKeyID; - } - - /** - * Parse ServerSideEncryptionConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (!isset($xml->ApplyServerSideEncryptionByDefault)) return; - foreach ($xml->ApplyServerSideEncryptionByDefault as $default) { - foreach ($default as $key => $value) { - if ($key === 'SSEAlgorithm') { - $this->sseAlgorithm = strval($value); - } elseif ($key === 'KMSMasterKeyID') { - $this->kmsMasterKeyID = strval($value); - } - } - break; - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - $default = $xml->addChild('ApplyServerSideEncryptionByDefault'); - if (isset($this->sseAlgorithm)) { - $default->addChild('SSEAlgorithm', $this->sseAlgorithm); - } - if (isset($this->kmsMasterKeyID)) { - $default->addChild('KMSMasterKeyID', $this->kmsMasterKeyID); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return string - */ - public function getSSEAlgorithm() - { - return $this->sseAlgorithm; - } - - /** - * @return string - */ - public function getKMSMasterKeyID() - { - return $this->kmsMasterKeyID; - } - - private $sseAlgorithm = ""; - private $kmsMasterKeyID = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php deleted file mode 100644 index 39a9e72b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/StorageCapacityConfig.php +++ /dev/null @@ -1,76 +0,0 @@ -storageCapacity = $storageCapacity; - } - - /** - * Not implemented - */ - public function parseFromXml($strXml) - { - throw new OssException("Not implemented."); - } - - /** - * Serialize StorageCapacityConfig into xml - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - $xml->addChild('StorageCapacity', strval($this->storageCapacity)); - return $xml->asXML(); - } - - /** - * To string - * - * @return string - */ - function __toString() - { - return $this->serializeToXml(); - } - - /** - * Set storage capacity - * - * @param int $storageCapacity - */ - public function setStorageCapacity($storageCapacity) - { - $this->storageCapacity = $storageCapacity; - } - - /** - * Get storage capacity - * - * @return int - */ - public function getStorageCapacity() - { - return $this->storageCapacity; - } - - private $storageCapacity = 0; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/Tag.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/Tag.php deleted file mode 100644 index 509bd6e7..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/Tag.php +++ /dev/null @@ -1,41 +0,0 @@ -key = $key; - $this->value = $value; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getValue() - { - return $this->value; - } - - private $key = ""; - private $value = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TaggingConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TaggingConfig.php deleted file mode 100644 index 09fa3230..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TaggingConfig.php +++ /dev/null @@ -1,89 +0,0 @@ -tags = array(); - } - - /** - * Get Tag list - * - * @return Tag[] - */ - public function getTags() - { - return $this->tags; - } - - - /** - * Add a new Tag - * - * @param Tag $tag - * @throws OssException - */ - public function addTag($tag) - { - $this->tags[] = $tag; - } - - /** - * Parse TaggingConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (!isset($xml->TagSet) || !isset($xml->TagSet->Tag)) return; - foreach ($xml->TagSet->Tag as $tag) { - $this->addTag(new Tag($tag->Key, $tag->Value)); - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - $xmlTagSet = $xml->addChild('TagSet'); - foreach ($this->tags as $tag) { - $xmlTag = $xmlTagSet->addChild('Tag'); - $xmlTag->addChild('Key', strval($tag->getKey())); - $xmlTag->addChild('Value', strval($tag->getValue())); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * Tag list - * - * @var Tag[] - */ - private $tags = array(); -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TransferAccelerationConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TransferAccelerationConfig.php deleted file mode 100644 index 187fb242..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/TransferAccelerationConfig.php +++ /dev/null @@ -1,73 +0,0 @@ -Enabled)) { - $this->enabled = (strval($xml->Enabled) === 'TRUE' || strval($xml->Enabled) === 'true') ? true : false; - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->enabled)) { - if($this->enabled === true){ - $xml->addChild('Enabled','true'); - } else { - $xml->addChild('Enabled','false'); - } - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - - /** - * @return bool - */ - public function getEnabled() - { - return $this->enabled; - } - - /** - * @param boolean enabled - */ - public function setEnabled($enabled) - { - $this->enabled = $enabled; - } - - /** - * @var $enabled boolean - */ - private $enabled = false; -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php deleted file mode 100644 index 49aa414e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/UploadInfo.php +++ /dev/null @@ -1,55 +0,0 @@ -key = $key; - $this->uploadId = $uploadId; - $this->initiated = $initiated; - } - - /** - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * @return string - */ - public function getUploadId() - { - return $this->uploadId; - } - - /** - * @return string - */ - public function getInitiated() - { - return $this->initiated; - } - - private $key = ""; - private $uploadId = ""; - private $initiated = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/VersioningConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/VersioningConfig.php deleted file mode 100644 index 992a80fe..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/VersioningConfig.php +++ /dev/null @@ -1,67 +0,0 @@ -status = $status; - } - - /** - * Parse VersioningConfig from the xml. - * - * @param string $strXml - * @throws OssException - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (isset($xml->Status)) { - $this->status = strval($xml->Status); - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - if (isset($this->status)) { - $xml->addChild('Status', $this->status); - } - return $xml->asXML(); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return string - */ - public function getStatus() - { - return $this->status; - } - - private $status = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php deleted file mode 100644 index e298eb46..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WebsiteConfig.php +++ /dev/null @@ -1,76 +0,0 @@ -indexDocument = $indexDocument; - $this->errorDocument = $errorDocument; - } - - /** - * @param string $strXml - * @return null - */ - public function parseFromXml($strXml) - { - $xml = simplexml_load_string($strXml); - if (isset($xml->IndexDocument) && isset($xml->IndexDocument->Suffix)) { - $this->indexDocument = strval($xml->IndexDocument->Suffix); - } - if (isset($xml->ErrorDocument) && isset($xml->ErrorDocument->Key)) { - $this->errorDocument = strval($xml->ErrorDocument->Key); - } - } - - /** - * Serialize the WebsiteConfig object into xml string. - * - * @return string - * @throws OssException - */ - public function serializeToXml() - { - $xml = new \SimpleXMLElement(''); - $index_document_part = $xml->addChild('IndexDocument'); - $error_document_part = $xml->addChild('ErrorDocument'); - $index_document_part->addChild('Suffix', $this->indexDocument); - $error_document_part->addChild('Key', $this->errorDocument); - return $xml->asXML(); - } - - /** - * @return string - */ - public function getIndexDocument() - { - return $this->indexDocument; - } - - /** - * @return string - */ - public function getErrorDocument() - { - return $this->errorDocument; - } - - private $indexDocument = ""; - private $errorDocument = ""; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WormConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WormConfig.php deleted file mode 100644 index 6a489560..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/WormConfig.php +++ /dev/null @@ -1,90 +0,0 @@ -WormId)) { - $this->wormId = strval($xml->WormId); - } - if (isset($xml->State)) { - $this->state = strval($xml->State); - } - if (isset($xml->RetentionPeriodInDays)) { - $this->day = intval($xml->RetentionPeriodInDays); - } - if (isset($xml->CreationDate)) { - $this->creationDate = strval($xml->CreationDate); - } - } - - /** - * Serialize the object into xml string. - * - * @return string - */ - public function serializeToXml() - { - throw new OssException("Not implemented."); - } - - public function __toString() - { - return $this->serializeToXml(); - } - - /** - * @return string - */ - public function getWormId() - { - return $this->wormId; - } - - /** - * @return string - */ - public function getState() - { - return $this->state; - } - - /** - * @return int - */ - public function getDay() - { - return $this->day; - } - - /** - * @return string - */ - public function getCreationDate() - { - return $this->creationDate; - } - - private $wormId = ''; - private $state = ''; - private $creationDate = ''; - private $day = 0; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php deleted file mode 100644 index 8c0a0db1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Model/XmlConfig.php +++ /dev/null @@ -1,27 +0,0 @@ - $endpoint, - 'cname' => $isCName, - 'request_proxy' => $requestProxy, - 'provider' => $provider - ); - $this->__initNewClient($config); - } - - /** - * @param array $config - * @throws OssException - */ - private function __initNewClient($config=array()){ - $isCName = isset($config['cname']) ? $config['cname']: false; - $endpoint = isset($config['endpoint']) ? $config['endpoint'] : ''; - $requestProxy = isset($config['request_proxy']) ? $config['request_proxy']: null; - $provider = isset($config['provider']) ? $config['provider'] : ''; - if (empty($endpoint)) { - throw new OssException("endpoint is empty"); - } - $this->hostname = $this->checkEndpoint($endpoint, $isCName); - $this->requestProxy = $requestProxy; - if(!$provider instanceof CredentialsProvider){ - throw new OssException("provider must be an instance of CredentialsProvider"); - } - $this->provider = $provider; - self::checkEnv(); - } - /** - * Lists the Bucket [GetService]. Not applicable if the endpoint is CName (because CName must be binded to a specific bucket). - * - * @param array $options - * @throws OssException - * @return BucketListInfo - */ - public function listBuckets($options = NULL) - { - if ($this->hostType === self::OSS_HOST_TYPE_CNAME) { - throw new OssException("operation is not permitted with CName host"); - } - $this->precheckOptions($options); - $options[self::OSS_BUCKET] = ''; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $response = $this->auth($options); - $result = new ListBucketsResult($response); - return $result->getData(); - } - - /** - * Creates bucket,The ACL of the bucket created by default is OssClient::OSS_ACL_TYPE_PRIVATE - * - * @param string $bucket - * @param string $acl - * @param array $options - * @param string $storageType - * @return null - */ - public function createBucket($bucket, $acl = self::OSS_ACL_TYPE_PRIVATE, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_HEADERS] = array(self::OSS_ACL => $acl); - if (isset($options[self::OSS_STORAGE])) { - $this->precheckStorage($options[self::OSS_STORAGE]); - $options[self::OSS_CONTENT] = OssUtil::createBucketXmlBody($options[self::OSS_STORAGE]); - unset($options[self::OSS_STORAGE]); - } - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Deletes bucket - * The deletion will not succeed if the bucket is not empty (either has objects or parts) - * To delete a bucket, all its objects and parts must be deleted first. - * - * @param string $bucket - * @param array $options - * @return null - */ - public function deleteBucket($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Checks if a bucket exists - * - * @param string $bucket - * @return bool - * @throws OssException - */ - public function doesBucketExist($bucket) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'acl'; - $response = $this->auth($options); - $result = new ExistResult($response); - return $result->getData(); - } - - /** - * Get the data center location information for the bucket - * - * @param string $bucket - * @param array $options - * @throws OssException - * @return string - */ - public function getBucketLocation($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'location'; - $response = $this->auth($options); - $result = new GetLocationResult($response); - return $result->getData(); - } - - /** - * Get the Meta information for the Bucket - * - * @param string $bucket - * @param array $options Refer to the SDK documentation - * @return array - */ - public function getBucketMeta($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; - $options[self::OSS_OBJECT] = '/'; - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); - } - - /** - * Gets the bucket ACL - * - * @param string $bucket - * @param array $options - * @throws OssException - * @return string - */ - public function getBucketAcl($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'acl'; - $response = $this->auth($options); - $result = new AclResult($response); - return $result->getData(); - } - - /** - * Sets the bucket ACL - * - * @param string $bucket bucket name - * @param string $acl access permissions, valid values are ['private', 'public-read', 'public-read-write'] - * @param array $options by default is empty - * @throws OssException - * @return null - */ - public function putBucketAcl($bucket, $acl, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_HEADERS] = array(self::OSS_ACL => $acl); - $options[self::OSS_SUB_RESOURCE] = 'acl'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets object ACL - * - * @param string $bucket - * @param string $object - * @param array $options - * @throws OssException - * @return string - */ - public function getObjectAcl($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options, true); - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = 'acl'; - $response = $this->auth($options); - $result = new AclResult($response); - return $result->getData(); - } - - /** - * Sets the object ACL - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $acl access permissions, valid values are ['default', 'private', 'public-read', 'public-read-write'] - * @param array $options - * @throws OssException - * @return null - */ - public function putObjectAcl($bucket, $object, $acl, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options, true); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_HEADERS] = array(self::OSS_OBJECT_ACL => $acl); - $options[self::OSS_SUB_RESOURCE] = 'acl'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the bucket logging config - * - * @param string $bucket bucket name - * @param array $options by default is empty - * @throws OssException - * @return LoggingConfig - */ - public function getBucketLogging($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'logging'; - $response = $this->auth($options); - $result = new GetLoggingResult($response); - return $result->getData(); - } - - /** - * Sets the bycket logging config. Only owner can call this API. - * - * @param string $bucket bucket name - * @param string $targetBucket The logging file's bucket - * @param string $targetPrefix The logging file's prefix - * @param array $options By default is empty. - * @throws OssException - * @return null - */ - public function putBucketLogging($bucket, $targetBucket, $targetPrefix, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $this->precheckBucket($targetBucket, 'targetbucket is not allowed empty'); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'logging'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - - $loggingConfig = new LoggingConfig($targetBucket, $targetPrefix); - $options[self::OSS_CONTENT] = $loggingConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Deletes the bucket logging config - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketLogging($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'logging'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Sets the website config in bucket---that is could make the bucket as a static website once the CName is binded. - * - * @param string $bucket bucket name - * @param WebsiteConfig $websiteConfig - * @param array $options - * @throws OssException - * @return null - */ - public function putBucketWebsite($bucket, $websiteConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'website'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $websiteConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the website config in the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return WebsiteConfig - */ - public function getBucketWebsite($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'website'; - $response = $this->auth($options); - $result = new GetWebsiteResult($response); - return $result->getData(); - } - - /** - * Deletes the website config in the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketWebsite($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'website'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Sets the cross-origin-resource-sharing (CORS) rule. It would overwrite the originl one. - * - * @param string $bucket bucket name - * @param CorsConfig $corsConfig CORS config. Check out the details from OSS API document - * @param array $options array - * @throws OssException - * @return null - */ - public function putBucketCors($bucket, $corsConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'cors'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $corsConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the bucket CORS config - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return CorsConfig - */ - public function getBucketCors($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'cors'; - $response = $this->auth($options); - $result = new GetCorsResult($response, __FUNCTION__); - return $result->getData(); - } - - /** - * Deletes the bucket's CORS config and disable the CORS on the bucket. - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketCors($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'cors'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Bind a CName for the bucket - * - * @param string $bucket bucket name - * @param string $cname - * @param array $options - * @throws OssException - * @return null - */ - public function addBucketCname($bucket, $cname, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $cnameConfig = new CnameConfig(); - $cnameConfig->addCname($cname); - $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); - $options[self::OSS_COMP] = 'add'; - $options[self::OSS_CNAME] = ''; - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the binded CName list of the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return CnameConfig - */ - public function getBucketCname($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_CNAME] = ''; - $response = $this->auth($options); - $result = new GetCnameResult($response); - return $result->getData(); - } - - /** - * Remove a CName binding from the bucket - * - * @param string $bucket bucket name - * @param CnameConfig $cnameConfig - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketCname($bucket, $cname, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $cnameConfig = new CnameConfig(); - $cnameConfig->addCname($cname); - $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); - $options[self::OSS_COMP] = 'delete'; - $options[self::OSS_CNAME] = ''; - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * create a cname token for a bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return CnameToken - */ - public function createBucketCnameToken($bucket, $cname, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $cnameConfig = new CnameConfig(); - $cnameConfig->addCname($cname); - $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); - $options[self::OSS_COMP] = 'token'; - $options[self::OSS_CNAME] = ''; - $response = $this->auth($options); - $result = new CreateBucketCnameTokenResult($response); - return $result->getData(); - } - - /** - * get a cname token for a bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return CnameToken - */ - public function getBucketCnameToken($bucket, $cname, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_COMP] = 'token'; - $options[self::OSS_CNAME] = $cname; - $response = $this->auth($options); - $result = new GetBucketCnameTokenResult($response); - return $result->getData(); - } - - /** - * Creates a Live Channel under a bucket - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param LiveChannelConfig $channelConfig - * @param array $options - * @throws OssException - * @return LiveChannelInfo - */ - public function putBucketLiveChannel($bucket, $channelName, $channelConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $channelConfig->serializeToXml(); - - $response = $this->auth($options); - $result = new PutLiveChannelResult($response); - $info = $result->getData(); - $info->setName($channelName); - $info->setDescription($channelConfig->getDescription()); - - return $info; - } - - /** - * Sets the LiveChannel status - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param string channelStatus $channelStatus enabled or disabled - * @param array $options - * @throws OssException - * @return null - */ - public function putLiveChannelStatus($bucket, $channelName, $channelStatus, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - $options[self::OSS_LIVE_CHANNEL_STATUS] = $channelStatus; - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the LiveChannel information by the channel name - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param array $options - * @throws OssException - * @return GetLiveChannelInfo - */ - public function getLiveChannelInfo($bucket, $channelName, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - - $response = $this->auth($options); - $result = new GetLiveChannelInfoResult($response); - return $result->getData(); - } - - /** - * Gets the status of LiveChannel - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param array $options - * @throws OssException - * @return GetLiveChannelStatus - */ - public function getLiveChannelStatus($bucket, $channelName, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - $options[self::OSS_COMP] = 'stat'; - - $response = $this->auth($options); - $result = new GetLiveChannelStatusResult($response); - return $result->getData(); - } - - /** - * Gets the LiveChannel pushing streaming record - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param array $options - * @throws OssException - * @return GetLiveChannelHistory - */ - public function getLiveChannelHistory($bucket, $channelName, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - $options[self::OSS_COMP] = 'history'; - - $response = $this->auth($options); - $result = new GetLiveChannelHistoryResult($response); - return $result->getData(); - } - - /** - *Gets the live channel list under a bucket. - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return LiveChannelListInfo - */ - public function listBucketLiveChannels($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'live'; - $options[self::OSS_QUERY_STRING] = array( - 'prefix' => isset($options['prefix']) ? $options['prefix'] : '', - 'marker' => isset($options['marker']) ? $options['marker'] : '', - 'max-keys' => isset($options['max-keys']) ? $options['max-keys'] : '', - ); - $response = $this->auth($options); - $result = new ListLiveChannelResult($response); - $list = $result->getData(); - $list->setBucketName($bucket); - - return $list; - } - - /** - * Creates a play list file for the LiveChannel - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param string $playlistName The playlist name, must end with ".m3u8". - * @param array $setTime startTime and EndTime in unix time. No more than 1 day. - * @throws OssException - * @return null - */ - public function postVodPlaylist($bucket, $channelName, $playlistName, $setTime) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = $channelName . '/' . $playlistName; - $options[self::OSS_SUB_RESOURCE] = 'vod'; - $options[self::OSS_LIVE_CHANNEL_END_TIME] = $setTime['EndTime']; - $options[self::OSS_LIVE_CHANNEL_START_TIME] = $setTime['StartTime']; - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Deletes the Bucket LiveChannel - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketLiveChannel($bucket, $channelName, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = $channelName; - $options[self::OSS_SUB_RESOURCE] = 'live'; - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Generates the signed pushing streaming url - * - * @param string $bucket bucket name - * @param string channelName $channelName - * @param int timeout timeout value in seconds - * @param array $options - * @throws OssException - * @return The signed pushing streaming url - */ - public function signRtmpUrl($bucket, $channelName, $timeout = 60, $options = NULL) - { - $this->precheckCommon($bucket, $channelName, $options, false); - $expires = time() + $timeout; - $proto = 'rtmp://'; - $hostname = $this->generateHostname($bucket); - $cano_params = ''; - $query_items = array(); - $params = isset($options['params']) ? $options['params'] : array(); - uksort($params, 'strnatcasecmp'); - foreach ($params as $key => $value) { - $cano_params = $cano_params . $key . ':' . $value . "\n"; - $query_items[] = rawurlencode($key) . '=' . rawurlencode($value); - } - $resource = '/' . $bucket . '/' . $channelName; - - $string_to_sign = $expires . "\n" . $cano_params . $resource; - $cred = $this->provider->getCredentials(); - $this->checkCredentials($cred); - - $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $cred->getAccessKeySecret(), true)); - - $query_items[] = 'OSSAccessKeyId=' . rawurlencode($cred->getAccessKeyId()); - $query_items[] = 'Expires=' . rawurlencode($expires); - $query_items[] = 'Signature=' . rawurlencode($signature); - - return $proto . $hostname . '/live/' . $channelName . '?' . implode('&', $query_items); - } - - /** - * Generates the signed pushing streaming url - * - * @param string $bucket bucket name - * @param string $channelName channel name - * @param int $expiration expiration time of the Url, unix epoch, since 1970.1.1 00.00.00 UTC - * @param array $options - * @throws OssException - * @return The signed pushing streaming url - */ - public function generatePresignedRtmpUrl($bucket, $channelName, $expiration, $options = NULL) - { - $this->precheckCommon($bucket, $channelName, $options, false); - $proto = 'rtmp://'; - $hostname = $this->generateHostname($bucket); - $cano_params = ''; - $query_items = array(); - $params = isset($options['params']) ? $options['params'] : array(); - uksort($params, 'strnatcasecmp'); - foreach ($params as $key => $value) { - $cano_params = $cano_params . $key . ':' . $value . "\n"; - $query_items[] = rawurlencode($key) . '=' . rawurlencode($value); - } - $resource = '/' . $bucket . '/' . $channelName; - - $string_to_sign = $expiration . "\n" . $cano_params . $resource; - $cred = $this->provider->getCredentials(); - $this->checkCredentials($cred); - - $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $cred->getAccessKeySecret(), true)); - - $query_items[] = 'OSSAccessKeyId=' . rawurlencode($cred->getAccessKeyId()); - $query_items[] = 'Expires=' . rawurlencode($expiration); - $query_items[] = 'Signature=' . rawurlencode($signature); - - return $proto . $hostname . '/live/' . $channelName . '?' . implode('&', $query_items); - } - - /** - * Precheck the CORS request. Before sending a CORS request, a preflight request (OPTIONS) is sent with the specific origin. - * HTTP METHOD and headers information are sent to OSS as well for evaluating if the CORS request is allowed. - * - * Note: OSS could enable the CORS on the bucket by calling putBucketCors. Once CORS is enabled, the OSS could evaluate accordingto the preflight request. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $origin the origin of the request - * @param string $request_method The actual HTTP method which will be used in CORS request - * @param string $request_headers The actual HTTP headers which will be used in CORS request - * @param array $options - * @return array - * @throws OssException - * @link http://help.aliyun.com/document_detail/oss/api-reference/cors/OptionObject.html - */ - public function optionsObject($bucket, $object, $origin, $request_method, $request_headers, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_OPTIONS; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_HEADERS] = array( - self::OSS_OPTIONS_ORIGIN => $origin, - self::OSS_OPTIONS_REQUEST_HEADERS => $request_headers, - self::OSS_OPTIONS_REQUEST_METHOD => $request_method - ); - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); - } - - /** - * Sets the bucket's lifecycle config - * - * @param string $bucket bucket name - * @param LifecycleConfig $lifecycleConfig LifecycleConfig instance - * @param array $options - * @throws OssException - * @return null - */ - public function putBucketLifecycle($bucket, $lifecycleConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $lifecycleConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets bucket's lifecycle config - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return LifecycleConfig - */ - public function getBucketLifecycle($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; - $response = $this->auth($options); - $result = new GetLifecycleResult($response); - return $result->getData(); - } - - /** - * Deletes the bucket's lifecycle config - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketLifecycle($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'lifecycle'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Sets a bucket's referer, which has a whitelist of referrer and specifies if empty referer is allowed. - * Checks out API document for more details about "Bucket Referer" - * - * @param string $bucket bucket name - * @param RefererConfig $refererConfig - * @param array $options - * @return ResponseCore - * @throws null - */ - public function putBucketReferer($bucket, $refererConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'referer'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $refererConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the bucket's Referer - * Checks out API document for more details about "Bucket Referer" - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return RefererConfig - */ - public function getBucketReferer($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'referer'; - $response = $this->auth($options); - $result = new GetRefererResult($response); - return $result->getData(); - } - - /** - * Set the size of the bucket,the unit is GB - * When the capacity of the bucket is bigger than the set, it's forbidden to continue writing - * - * @param string $bucket bucket name - * @param int $storageCapacity - * @param array $options - * @return ResponseCore - * @throws null - */ - public function putBucketStorageCapacity($bucket, $storageCapacity, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'qos'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $storageCapacityConfig = new StorageCapacityConfig($storageCapacity); - $options[self::OSS_CONTENT] = $storageCapacityConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Get the capacity of the bucket, the unit is GB - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return int - */ - public function getBucketStorageCapacity($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'qos'; - $response = $this->auth($options); - $result = new GetStorageCapacityResult($response); - return $result->getData(); - } - - /** - * Get the information of the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return BucketInfo - */ - public function getBucketInfo($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'bucketInfo'; - $response = $this->auth($options); - $result = new GetBucketInfoResult($response); - return $result->getData(); - } - - /** - * Get the stat of the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return BucketStat - */ - public function getBucketStat($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'stat'; - $response = $this->auth($options); - $result = new GetBucketStatResult($response); - return $result->getData(); - } - - /** - * Sets the bucket's policy - * - * @param string $bucket bucket name - * @param string $policy policy json format content - * @param array $options - * @throws OssException - * @return null - */ - public function putBucketPolicy($bucket, $policy, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'policy'; - $options[self::OSS_CONTENT_TYPE] = 'application/json'; - $options[self::OSS_CONTENT] = $policy; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets bucket's policy - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return string policy json content - */ - public function getBucketPolicy($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'policy'; - $response = $this->auth($options); - $result = new BodyResult($response); - return $result->getData(); - } - - /** - * Deletes the bucket's policy - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketPolicy($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'policy'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Sets the bucket's encryption - * - * @param string $bucket bucket name - * @param ServerSideEncryptionConfig $sseConfig - * @param array $options - * @throws OssException - * @return null - */ - public function putBucketEncryption($bucket, $sseConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'encryption'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $sseConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets bucket's encryption - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return ServerSideEncryptionConfig - */ - public function getBucketEncryption($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'encryption'; - $response = $this->auth($options); - $result = new GetBucketEncryptionResult($response); - return $result->getData(); - } - - /** - * Deletes the bucket's encryption - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketEncryption($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'encryption'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Set the request playment of the bucket, Can be BucketOwner and Requester - * - * @param string $bucket bucket name - * @param string $payer - * @param array $options - * @return ResponseCore - * @throws null - */ - public function putBucketRequestPayment($bucket, $payer, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'requestPayment'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $config = new RequestPaymentConfig($payer); - $options[self::OSS_CONTENT] = $config->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Get the request playment of the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return string - */ - public function getBucketRequestPayment($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'requestPayment'; - $response = $this->auth($options); - $result = new GetBucketRequestPaymentResult($response); - return $result->getData(); - } - - /** - * Sets the bucket's tags - * - * @param string $bucket bucket name - * @param TaggingConfig $taggingConfig - * @param array $options - * @throws OssException - * @return null - */ - public function putBucketTags($bucket, $taggingConfig, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $taggingConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets bucket's tags - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return TaggingConfig - */ - public function getBucketTags($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - $response = $this->auth($options); - $result = new GetBucketTagsResult($response); - return $result->getData(); - } - - /** - * Deletes the bucket's tags - * If want to delete specified tags for a bucket, please set the $tags - * - * @param string $bucket bucket name - * @param tag[] $tags (optional) - * @param array $options - * @throws OssException - * @return null - */ - public function deleteBucketTags($bucket, $tags = NULL, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - if (empty($tags)) { - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - } else { - $value = ''; - foreach ($tags as $tag ) { - $value .= $tag->getKey().','; - } - $value = rtrim($value, ','); - $options[self::OSS_TAGGING] = $value; - } - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Set the versioning of the bucket, Can be BucketOwner and Requester - * - * @param string $bucket bucket name - * @param string $status - * @param array $options - * @return ResponseCore - * @throws null - */ - public function putBucketVersioning($bucket, $status, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'versioning'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $config = new VersioningConfig($status); - $options[self::OSS_CONTENT] = $config->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Get the versioning of the bucket - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return string - */ - public function getBucketVersioning($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'versioning'; - $response = $this->auth($options); - $result = new GetBucketVersioningResult($response); - return $result->getData(); - } - - /** - * Initialize a bucket's worm - * - * @param string $bucket bucket name - * @param int $day - * @param array $options - * @throws OssException - * @return string returns uploadid - */ - public function initiateBucketWorm($bucket, $day, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'worm'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $config = new InitiateWormConfig($day); - $options[self::OSS_CONTENT] = $config->serializeToXml(); - $response = $this->auth($options); - $result = new InitiateBucketWormResult($response); - return $result->getData(); - } - - /** - * Aborts the bucket's worm - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return null - */ - public function abortBucketWorm($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'worm'; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Complete a bucket's worm - * - * @param string $bucket bucket name - * @param string $wormId - * @param array $options - * @throws OssException - * @return string returns uploadid - */ - public function completeBucketWorm($bucket, $wormId, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_WORM_ID] = $wormId; - $options[self::OSS_CONTENT] = ''; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Extend a bucket's worm - * - * @param string $bucket bucket name - * @param string $wormId - * @param int $day - * @param array $options - * @throws OssException - * @return string returns uploadid - */ - public function extendBucketWorm($bucket, $wormId, $day, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_WORM_ID] = $wormId; - $options[self::OSS_SUB_RESOURCE] = 'wormExtend'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $config = new ExtendWormConfig($day); - $options[self::OSS_CONTENT] = $config->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Get a bucket's worm - * - * @param string $bucket bucket name - * @param array $options - * @throws OssException - * @return string - */ - public function getBucketWorm($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'worm'; - $response = $this->auth($options); - $result = new GetBucketWormResult($response); - return $result->getData(); - } - - - /** - * Put Bucket TransferAcceleration - * @param $bucket - * @param $enabled boolean - * @param null $options - * @return null - * @throws OssException - */ - - public function putBucketTransferAcceleration($bucket,$enabled,$options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'transferAcceleration'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $config = new TransferAccelerationConfig(); - $config->setEnabled($enabled); - $options[self::OSS_CONTENT] = $config->serializeToXml(); - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); - } - - /** - * Put Bucket TransferAcceleration - * @param $bucket - * @param null $options - * @return enabled boolean - * @throws OssException - */ - public function getBucketTransferAcceleration($bucket,$options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'transferAcceleration'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $response = $this->auth($options); - $result = new GetBucketTransferAccelerationResult($response); - return $result->getData(); - } - - /** - * Lists the bucket's object list (in ObjectListInfo) - * - * @param string $bucket - * @param array $options are defined below: - * $options = array( - * 'max-keys' => specifies max object count to return. By default is 100 and max value could be 1000. - * 'prefix' => specifies the key prefix the returned objects must have. Note that the returned keys still contain the prefix. - * 'delimiter' => The delimiter of object name for grouping object. When it's specified, listObjects will differeniate the object and folder. And it will return subfolder's objects. - * 'marker' => The key of returned object must be greater than the 'marker'. - *) - * Prefix and marker are for filtering and paging. Their length must be less than 256 bytes - * @throws OssException - * @return ObjectListInfo - */ - public function listObjects($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); - $options[self::OSS_QUERY_STRING] = array_merge( - $query, - array(self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL, - self::OSS_DELIMITER => isset($options[self::OSS_DELIMITER]) ? $options[self::OSS_DELIMITER] : '/', - self::OSS_PREFIX => isset($options[self::OSS_PREFIX]) ? $options[self::OSS_PREFIX] : '', - self::OSS_MAX_KEYS => isset($options[self::OSS_MAX_KEYS]) ? $options[self::OSS_MAX_KEYS] : self::OSS_MAX_KEYS_VALUE, - self::OSS_MARKER => isset($options[self::OSS_MARKER]) ? $options[self::OSS_MARKER] : '') - ); - - $response = $this->auth($options); - $result = new ListObjectsResult($response); - return $result->getData(); - } - - - /** - * Lists the bucket's object list v2 (in ObjectListInfoV2) - * - * @param string $bucket - * @param array $options are defined below: - * $options = array( - * 'max-keys' => specifies max object count to return. By default is 100 and max value could be 1000. - * 'prefix' => specifies the key prefix the returned objects must have. Note that the returned keys still contain the prefix. - * 'delimiter' => The delimiter of object name for grouping object. When it's specified, listObjects will differeniate the object and folder. And it will return subfolder's objects. - * 'start-after' => The key of returned object must be greater than the 'start-after'. - * 'continuation-token' => The token from which the list operation must start. - *) - * Prefix, start-after and continuation-token are for filtering and paging. Their length must be less than 256 bytes - * @throws OssException - * @return ObjectListInfoV2 - */ - public function listObjectsV2($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); - $temp = array( - self::OSS_LIST_TYPE=>2, - self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL, - self::OSS_DELIMITER => isset($options[self::OSS_DELIMITER]) ? $options[self::OSS_DELIMITER] : '/', - self::OSS_PREFIX => isset($options[self::OSS_PREFIX]) ? $options[self::OSS_PREFIX] : '', - self::OSS_MAX_KEYS => isset($options[self::OSS_MAX_KEYS]) ? $options[self::OSS_MAX_KEYS] : self::OSS_MAX_KEYS_VALUE, - self::OSS_START_AFTER => isset($options[self::OSS_START_AFTER]) ? $options[self::OSS_START_AFTER] : '', - ); - if(isset($options[self::OSS_CONTINUATION_TOKEN])){ - $temp[self::OSS_CONTINUATION_TOKEN] = $options[self::OSS_CONTINUATION_TOKEN]; - } - $options[self::OSS_QUERY_STRING] = array_merge( - $query,$temp - ); - $response = $this->auth($options); - $result = new ListObjectsV2Result($response); - return $result->getData(); - } - - - - - /** - * Lists the bucket's object with version information (in ObjectListInfo) - * - * @param string $bucket - * @param array $options are defined below: - * $options = array( - * 'max-keys' => specifies max object count to return. By default is 100 and max value could be 1000. - * 'prefix' => specifies the key prefix the returned objects must have. Note that the returned keys still contain the prefix. - * 'delimiter' => The delimiter of object name for grouping object. When it's specified, listObjectVersions will differeniate the object and folder. And it will return subfolder's objects. - * 'key-marker' => The key of returned object must be greater than the 'key-marker'. - * 'version-id-marker' => The version id of returned object must be greater than the 'version-id-marker'. - *) - * Prefix and marker are for filtering and paging. Their length must be less than 256 bytes - * @throws OssException - * @return ObjectListInfo - */ - public function listObjectVersions($bucket, $options = NULL) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'versions'; - $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); - $options[self::OSS_QUERY_STRING] = array_merge( - $query, - array(self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL, - self::OSS_DELIMITER => isset($options[self::OSS_DELIMITER]) ? $options[self::OSS_DELIMITER] : '/', - self::OSS_PREFIX => isset($options[self::OSS_PREFIX]) ? $options[self::OSS_PREFIX] : '', - self::OSS_MAX_KEYS => isset($options[self::OSS_MAX_KEYS]) ? $options[self::OSS_MAX_KEYS] : self::OSS_MAX_KEYS_VALUE, - self::OSS_KEY_MARKER => isset($options[self::OSS_KEY_MARKER]) ? $options[self::OSS_KEY_MARKER] : '', - self::OSS_VERSION_ID_MARKER => isset($options[self::OSS_VERSION_ID_MARKER]) ? $options[self::OSS_VERSION_ID_MARKER] : '') - ); - - $response = $this->auth($options); - $result = new ListObjectVersionsResult($response); - return $result->getData(); - } - - /** - * Creates a virtual 'folder' in OSS. The name should not end with '/' because the method will append the name with a '/' anyway. - * - * Internal use only. - * - * @param string $bucket bucket name - * @param string $object object name - * @param array $options - * @return null - */ - public function createObjectDir($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $object . '/'; - $options[self::OSS_CONTENT_LENGTH] = array(self::OSS_CONTENT_LENGTH => 0); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Uploads the $content object to OSS. - * - * @param string $bucket bucket name - * @param string $object objcet name - * @param string $content The content object - * @param array $options - * @return null - */ - public function putObject($bucket, $object, $content, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - - $options[self::OSS_CONTENT] = $content; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $object; - - if (!isset($options[self::OSS_LENGTH])) { - $options[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); - } else { - $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; - } - - $is_check_md5 = $this->isCheckMD5($options); - if ($is_check_md5) { - $content_md5 = base64_encode(md5($content, true)); - $options[self::OSS_CONTENT_MD5] = $content_md5; - } - - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); - } - $response = $this->auth($options); - - if (isset($options[self::OSS_CALLBACK]) && !empty($options[self::OSS_CALLBACK])) { - $result = new CallbackResult($response); - } else { - $result = new PutSetDeleteResult($response); - } - - return $result->getData(); - } - - - /** - * creates symlink - * @param string $bucket bucket name - * @param string $symlink symlink name - * @param string $targetObject targetObject name - * @param array $options - * @return null - */ - public function putSymlink($bucket, $symlink ,$targetObject, $options = NULL) - { - $this->precheckCommon($bucket, $symlink, $options); - - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $symlink; - $options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK; - $options[self::OSS_HEADERS][self::OSS_SYMLINK_TARGET] = rawurlencode($targetObject); - - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * gets symlink - * @param string $bucket bucket name - * @param string $symlink symlink name - * @param array $options - * @return null - */ - public function getSymlink($bucket, $symlink, $options = NULL) - { - $this->precheckCommon($bucket, $symlink, $options); - - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = $symlink; - $options[self::OSS_SUB_RESOURCE] = self::OSS_SYMLINK; - - $response = $this->auth($options); - $result = new SymlinkResult($response); - return $result->getData(); - } - - /** - * Uploads a local file - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $file local file path - * @param array $options - * @return null - * @throws OssException - */ - public function uploadFile($bucket, $object, $file, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - OssUtil::throwOssExceptionWithMessageIfEmpty($file, "file path is invalid"); - $file = OssUtil::encodePath($file); - if (!file_exists($file)) { - throw new OssException($file . " file does not exist"); - } - $options[self::OSS_FILE_UPLOAD] = $file; - $file_size = sprintf('%u',filesize($options[self::OSS_FILE_UPLOAD])); - $is_check_md5 = $this->isCheckMD5($options); - if ($is_check_md5) { - $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); - $options[self::OSS_CONTENT_MD5] = $content_md5; - } - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $file); - } - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_CONTENT_LENGTH] = $file_size; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Uploads object from file handle - * - * @param string $bucket bucket name - * @param string $object object name - * @param resource $handle file handle - * @param array $options - * @return null - * @throws OssException - */ - public function uploadStream($bucket, $object, $handle, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - if (!is_resource($handle)) { - throw new OssException("The handle must be an opened stream"); - } - $options[self::OSS_FILE_UPLOAD] = $handle; - if ($this->isCheckMD5($options)) { - rewind($handle); - $ctx = hash_init('md5'); - hash_update_stream($ctx, $handle); - $content_md5 = base64_encode(hash_final($ctx, true)); - rewind($handle); - $options[self::OSS_CONTENT_MD5] = $content_md5; - } - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); - } - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - if (!isset($options[self::OSS_CONTENT_LENGTH])) { - $options[self::OSS_CONTENT_LENGTH] = fstat($handle)[self::OSS_SIZE]; - } - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Append the object with the content at the specified position. - * The specified position is typically the lengh of the current file. - * @param string $bucket bucket name - * @param string $object objcet name - * @param string $content content to append - * @param array $options - * @return int next append position - * @throws OssException - */ - public function appendObject($bucket, $object, $content, $position, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - - $options[self::OSS_CONTENT] = $content; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = 'append'; - $options[self::OSS_POSITION] = strval($position); - - if (!isset($options[self::OSS_LENGTH])) { - $options[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); - } else { - $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; - } - - $is_check_md5 = $this->isCheckMD5($options); - if ($is_check_md5) { - $content_md5 = base64_encode(md5($content, true)); - $options[self::OSS_CONTENT_MD5] = $content_md5; - } - - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); - } - $response = $this->auth($options); - $result = new AppendResult($response); - return $result->getData(); - } - - /** - * Append the object with a local file - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $file The local file path to append with - * @param array $options - * @return int next append position - * @throws OssException - */ - public function appendFile($bucket, $object, $file, $position, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - - OssUtil::throwOssExceptionWithMessageIfEmpty($file, "file path is invalid"); - $file = OssUtil::encodePath($file); - if (!file_exists($file)) { - throw new OssException($file . " file does not exist"); - } - $options[self::OSS_FILE_UPLOAD] = $file; - $file_size = sprintf('%u',filesize($options[self::OSS_FILE_UPLOAD])); - $is_check_md5 = $this->isCheckMD5($options); - if ($is_check_md5) { - $content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true)); - $options[self::OSS_CONTENT_MD5] = $content_md5; - } - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $file); - } - - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_CONTENT_LENGTH] = $file_size; - $options[self::OSS_SUB_RESOURCE] = 'append'; - $options[self::OSS_POSITION] = strval($position); - - $response = $this->auth($options); - $result = new AppendResult($response); - return $result->getData(); - } - - /** - * Copy from an existing OSS object to another OSS object. If the target object exists already, it will be overwritten. - * - * @param string $fromBucket Source bucket name - * @param string $fromObject Source object name - * @param string $toBucket Target bucket name - * @param string $toObject Target object name - * @param array $options - * @return null - * @throws OssException - */ - public function copyObject($fromBucket, $fromObject, $toBucket, $toObject, $options = NULL) - { - $this->precheckCommon($fromBucket, $fromObject, $options); - $this->precheckCommon($toBucket, $toObject, $options); - $options[self::OSS_BUCKET] = $toBucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $toObject; - $param = '/' . $fromBucket . '/' . rawurlencode($fromObject); - if (isset($options[self::OSS_VERSION_ID])) { - $param = $param . '?versionId='.$options[self::OSS_VERSION_ID]; - unset($options[self::OSS_VERSION_ID]); - } - if (isset($options[self::OSS_HEADERS])) { - $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = $param; - } else { - $options[self::OSS_HEADERS] = array(self::OSS_OBJECT_COPY_SOURCE => $param); - } - $response = $this->auth($options); - $result = new CopyObjectResult($response); - return $result->getData(); - } - - /** - * Gets Object metadata - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $options Checks out the SDK document for the detail - * @return array - */ - public function getObjectMeta($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; - $options[self::OSS_OBJECT] = $object; - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); - } - - /** - * Gets the simplified metadata of a object. - * Simplified metadata includes ETag, Size, LastModified. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $options Checks out the SDK document for the detail - * @return array - */ - public function getSimplifiedObjectMeta($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = 'objectMeta'; - $response = $this->auth($options); - $result = new HeaderResult($response); - return $result->getData(); - } - - /** - * Deletes a object - * - * @param string $bucket bucket name - * @param string $object object name - * @param array $options - * @return null - */ - public function deleteObject($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_OBJECT] = $object; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Deletes multiple objects in a bucket - * - * @param string $bucket bucket name - * @param array $objects object list - * @param array $options - * @return ResponseCore - * @throws null - */ - public function deleteObjects($bucket, $objects, $options = null) - { - $this->precheckCommon($bucket, NULL, $options, false); - if (!is_array($objects) || !$objects) { - throw new OssException('objects must be array'); - } - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'delete'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $quiet = 'false'; - if (isset($options['quiet'])) { - if (is_bool($options['quiet'])) { //Boolean - $quiet = $options['quiet'] ? 'true' : 'false'; - } elseif (is_string($options['quiet'])) { // string - $quiet = ($options['quiet'] === 'true') ? 'true' : 'false'; - } - } - $xmlBody = OssUtil::createDeleteObjectsXmlBody($objects, $quiet); - $options[self::OSS_CONTENT] = $xmlBody; - $response = $this->auth($options); - $result = new DeleteObjectsResult($response); - return $result->getData(); - } - - /** - * Deletes multiple objects with version id in a bucket - * - * @param string $bucket bucket name - * @param array $objects DeleteObjectInfo list - * @param array $options - * @return ResponseCore - * @throws null - */ - public function deleteObjectVersions($bucket, $objects, $options = null) - { - $this->precheckCommon($bucket, NULL, $options, false); - if (!is_array($objects) || !$objects) { - throw new OssException('objects must be array'); - } - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'delete'; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $quiet = 'false'; - if (isset($options['quiet'])) { - if (is_bool($options['quiet'])) { //Boolean - $quiet = $options['quiet'] ? 'true' : 'false'; - } elseif (is_string($options['quiet'])) { // string - $quiet = ($options['quiet'] === 'true') ? 'true' : 'false'; - } - } - $xmlBody = OssUtil::createDeleteObjectVersionsXmlBody($objects, $quiet); - $options[self::OSS_CONTENT] = $xmlBody; - $response = $this->auth($options); - $result = new DeleteObjectVersionsResult($response); - return $result->getData(); - } - - /** - * Gets Object content - * - * @param string $bucket bucket name - * @param string $object object name - * @param array $options It must contain ALIOSS::OSS_FILE_DOWNLOAD. And ALIOSS::OSS_RANGE is optional and empty means to download the whole file. - * @return string - */ - public function getObject($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_OBJECT] = $object; - if (isset($options[self::OSS_LAST_MODIFIED])) { - $options[self::OSS_HEADERS][self::OSS_IF_MODIFIED_SINCE] = $options[self::OSS_LAST_MODIFIED]; - unset($options[self::OSS_LAST_MODIFIED]); - } - if (isset($options[self::OSS_ETAG])) { - $options[self::OSS_HEADERS][self::OSS_IF_NONE_MATCH] = $options[self::OSS_ETAG]; - unset($options[self::OSS_ETAG]); - } - if (isset($options[self::OSS_RANGE])) { - $range = $options[self::OSS_RANGE]; - $options[self::OSS_HEADERS][self::OSS_RANGE] = "bytes=$range"; - unset($options[self::OSS_RANGE]); - } - $response = $this->auth($options); - $result = new BodyResult($response); - return $result->getData(); - } - - /** - * Checks if the object exists - * It's implemented by getObjectMeta(). - * - * @param string $bucket bucket name - * @param string $object object name - * @param array $options - * @return bool True:object exists; False:object does not exist - */ - public function doesObjectExist($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_HEAD; - $options[self::OSS_OBJECT] = $object; - $response = $this->auth($options); - $result = new ExistResult($response); - return $result->getData(); - } - - /** - * Object reading for Archive type - * Use Restore to enable the server to perform the thawing task - * - * @param string $bucket bucket name - * @param string $object object name - * @return null - * @throws OssException - */ - public function restoreObject($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = self::OSS_RESTORE; - if (isset($options[self::OSS_RESTORE_CONFIG])) { - $config = $options[self::OSS_RESTORE_CONFIG]; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $config->serializeToXml(); - } - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Sets the object tagging - * - * @param string $bucket bucket name - * @param string $object object name - * @param TaggingConfig $taggingConfig - * @throws OssException - * @return null - */ - public function putObjectTagging($bucket, $object, $taggingConfig, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options, true); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - $options[self::OSS_CONTENT] = $taggingConfig->serializeToXml(); - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Gets the object tagging - * - * @param string $bucket - * @param string $object - * @throws OssException - * @return TaggingConfig - */ - public function getObjectTagging($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options, true); - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - $response = $this->auth($options); - $result = new GetBucketTagsResult($response); - return $result->getData(); - } - - /** - * Deletes the object tagging - * - * @param string $bucket - * @param string $object - * @throws OssException - * @return TaggingConfig - */ - public function deleteObjectTagging($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options, true); - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = self::OSS_TAGGING; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Processes the object - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $process process script - * @return string process result, json format - */ - public function processObject($bucket, $object, $process, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = 'x-oss-process'; - $options[self::OSS_CONTENT_TYPE] = 'application/octet-stream'; - $options[self::OSS_CONTENT] = 'x-oss-process='.$process; - $response = $this->auth($options); - $result = new BodyResult($response); - return $result->getData(); - } - - /** - * Gets the part size according to the preferred part size. - * If the specified part size is too small or too big, it will return a min part or max part size instead. - * Otherwise returns the specified part size. - * @param int $partSize - * @return int - */ - private function computePartSize($partSize) - { - $partSize = (integer)$partSize; - if ($partSize <= self::OSS_MIN_PART_SIZE) { - $partSize = self::OSS_MIN_PART_SIZE; - } elseif ($partSize > self::OSS_MAX_PART_SIZE) { - $partSize = self::OSS_MAX_PART_SIZE; - } - return $partSize; - } - - /** - * Computes the parts count, size and start position according to the file size and the part size. - * It must be only called by upload_Part(). - * - * @param integer $file_size File size - * @param integer $partSize part大小,part size. Default is 5MB - * @return array An array contains key-value pairs--the key is `seekTo`and value is `length`. - */ - public function generateMultiuploadParts($file_size, $partSize = 5242880) - { - $i = 0; - $size_count = $file_size; - $values = array(); - $partSize = $this->computePartSize($partSize); - while ($size_count > 0) { - $size_count -= $partSize; - $values[] = array( - self::OSS_SEEK_TO => ($partSize * $i), - self::OSS_LENGTH => (($size_count > 0) ? $partSize : ($size_count + $partSize)), - ); - $i++; - } - return $values; - } - - /** - * Initialize a multi-part upload - * - * @param string $bucket bucket name - * @param string $object object name - * @param array $options Key-Value array - * @throws OssException - * @return string returns uploadid - */ - public function initiateMultipartUpload($bucket, $object, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_SUB_RESOURCE] = 'uploads'; - $options[self::OSS_CONTENT] = ''; - - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object); - } - if (!isset($options[self::OSS_HEADERS])) { - $options[self::OSS_HEADERS] = array(); - } - $response = $this->auth($options); - $result = new InitiateMultipartUploadResult($response); - return $result->getData(); - } - - /** - * Upload a part in a multiparts upload. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $uploadId - * @param array $options Key-Value array - * @return string eTag - * @throws OssException - */ - public function uploadPart($bucket, $object, $uploadId, $options = null) - { - $this->precheckCommon($bucket, $object, $options); - $this->precheckParam($options, self::OSS_FILE_UPLOAD, __FUNCTION__); - $this->precheckParam($options, self::OSS_PART_NUM, __FUNCTION__); - - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_UPLOAD_ID] = $uploadId; - - if (isset($options[self::OSS_LENGTH])) { - $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; - } - $response = $this->auth($options); - $result = new UploadPartResult($response); - return $result->getData(); - } - - /** - * Gets the uploaded parts. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $uploadId uploadId - * @param array $options Key-Value array - * @return ListPartsInfo - * @throws OssException - */ - public function listParts($bucket, $object, $uploadId, $options = null) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_UPLOAD_ID] = $uploadId; - $options[self::OSS_QUERY_STRING] = array(); - foreach (array('max-parts', 'part-number-marker') as $param) { - if (isset($options[$param])) { - $options[self::OSS_QUERY_STRING][$param] = $options[$param]; - unset($options[$param]); - } - } - $response = $this->auth($options); - $result = new ListPartsResult($response); - return $result->getData(); - } - - /** - * Abort a multiparts upload - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $uploadId uploadId - * @param array $options Key-Value name - * @return null - * @throws OssException - */ - public function abortMultipartUpload($bucket, $object, $uploadId, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_METHOD] = self::OSS_HTTP_DELETE; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_UPLOAD_ID] = $uploadId; - $response = $this->auth($options); - $result = new PutSetDeleteResult($response); - return $result->getData(); - } - - /** - * Completes a multiparts upload, after all parts are uploaded. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $uploadId uploadId - * @param array $listParts array( array("PartNumber"=> int, "ETag"=>string)) - * @param array $options Key-Value array - * @throws OssException - * @return null - */ - public function completeMultipartUpload($bucket, $object, $uploadId, $listParts, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - $options[self::OSS_METHOD] = self::OSS_HTTP_POST; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_UPLOAD_ID] = $uploadId; - $options[self::OSS_CONTENT_TYPE] = 'application/xml'; - if (is_array($listParts)) { - $options[self::OSS_CONTENT] = OssUtil::createCompleteMultipartUploadXmlBody($listParts); - } else { - $options[self::OSS_CONTENT] = ""; - } - - $response = $this->auth($options); - if (isset($options[self::OSS_CALLBACK]) && !empty($options[self::OSS_CALLBACK])) { - $result = new CallbackResult($response); - } else { - $result = new PutSetDeleteResult($response); - } - return $result->getData(); - } - - /** - * Lists all ongoing multipart upload events, which means all initialized but not completed or aborted multipart uploads. - * - * @param string $bucket bucket - * @param array $options key-value array--expected keys are 'delimiter', 'key-marker', 'max-uploads', 'prefix', 'upload-id-marker' - * @throws OssException - * @return ListMultipartUploadInfo - */ - public function listMultipartUploads($bucket, $options = null) - { - $this->precheckCommon($bucket, NULL, $options, false); - $options[self::OSS_METHOD] = self::OSS_HTTP_GET; - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = '/'; - $options[self::OSS_SUB_RESOURCE] = 'uploads'; - - foreach (array('delimiter', 'key-marker', 'max-uploads', 'prefix', 'upload-id-marker') as $param) { - if (isset($options[$param])) { - $options[self::OSS_QUERY_STRING][$param] = $options[$param]; - unset($options[$param]); - } - } - $query = isset($options[self::OSS_QUERY_STRING]) ? $options[self::OSS_QUERY_STRING] : array(); - $options[self::OSS_QUERY_STRING] = array_merge( - $query, - array(self::OSS_ENCODING_TYPE => self::OSS_ENCODING_TYPE_URL) - ); - - $response = $this->auth($options); - $result = new ListMultipartUploadResult($response); - return $result->getData(); - } - - /** - * Copy an existing file as a part - * - * @param string $fromBucket source bucket name - * @param string $fromObject source object name - * @param string $toBucket target bucket name - * @param string $toObject target object name - * @param int $partNumber Part number - * @param string $uploadId Upload Id - * @param array $options Key-Value array---it should have 'start' or 'end' key to specify the range of the source object to copy. If it's not specifed, the whole object is copied. - * @return null - * @throws OssException - */ - public function uploadPartCopy($fromBucket, $fromObject, $toBucket, $toObject, $partNumber, $uploadId, $options = NULL) - { - $this->precheckCommon($fromBucket, $fromObject, $options); - $this->precheckCommon($toBucket, $toObject, $options); - - //If $options['isFullCopy'] is not set, copy from the beginning - $start_range = "0"; - if (isset($options['start'])) { - $start_range = $options['start']; - } - $end_range = ""; - if (isset($options['end'])) { - $end_range = $options['end']; - } - $options[self::OSS_METHOD] = self::OSS_HTTP_PUT; - $options[self::OSS_BUCKET] = $toBucket; - $options[self::OSS_OBJECT] = $toObject; - $options[self::OSS_PART_NUM] = $partNumber; - $options[self::OSS_UPLOAD_ID] = $uploadId; - - if (!isset($options[self::OSS_HEADERS])) { - $options[self::OSS_HEADERS] = array(); - } - - $param = '/' . $fromBucket . '/' . rawurlencode($fromObject); - if (isset($options[self::OSS_VERSION_ID])) { - $param = $param . '?versionId='.$options[self::OSS_VERSION_ID]; - unset($options[self::OSS_VERSION_ID]); - } - - $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = $param; - $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE_RANGE] = "bytes=" . $start_range . "-" . $end_range; - $response = $this->auth($options); - $result = new UploadPartResult($response); - return $result->getData(); - } - - /** - * A higher level API for uploading a file with multipart upload. It consists of initialization, parts upload and completion. - * - * @param string $bucket bucket name - * @param string $object object name - * @param string $file The local file to upload - * @param array $options Key-Value array - * @return null - * @throws OssException - */ - public function multiuploadFile($bucket, $object, $file, $options = null) - { - $this->precheckCommon($bucket, $object, $options); - if (isset($options[self::OSS_LENGTH])) { - $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH]; - unset($options[self::OSS_LENGTH]); - } - if (empty($file)) { - throw new OssException("parameter invalid, file is empty"); - } - $uploadFile = OssUtil::encodePath($file); - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $uploadFile); - } - - $upload_position = isset($options[self::OSS_SEEK_TO]) ? (integer)$options[self::OSS_SEEK_TO] : 0; - - if (isset($options[self::OSS_CONTENT_LENGTH])) { - $upload_file_size = (integer)$options[self::OSS_CONTENT_LENGTH]; - } else { - $upload_file_size = sprintf('%u',filesize($uploadFile)); - - if ($upload_file_size !== false) { - $upload_file_size -= $upload_position; - } - } - - if ($upload_position === false || !isset($upload_file_size) || $upload_file_size === false || $upload_file_size < 0) { - throw new OssException('The size of `fileUpload` cannot be determined in ' . __FUNCTION__ . '().'); - } - // Computes the part size and assign it to options. - if (isset($options[self::OSS_PART_SIZE])) { - $options[self::OSS_PART_SIZE] = $this->computePartSize($options[self::OSS_PART_SIZE]); - } else { - $options[self::OSS_PART_SIZE] = self::OSS_MID_PART_SIZE; - } - - $is_check_md5 = $this->isCheckMD5($options); - // if the file size is less than part size, use simple file upload. - if ($upload_file_size < $options[self::OSS_PART_SIZE] && !isset($options[self::OSS_UPLOAD_ID])) { - return $this->uploadFile($bucket, $object, $uploadFile, $options); - } - - // Using multipart upload, initialize if no OSS_UPLOAD_ID is specified in options. - if (isset($options[self::OSS_UPLOAD_ID])) { - $uploadId = $options[self::OSS_UPLOAD_ID]; - } else { - // initialize - $uploadId = $this->initiateMultipartUpload($bucket, $object, $options); - } - - // generates the parts information and upload them one by one - $pieces = $this->generateMultiuploadParts($upload_file_size, (integer)$options[self::OSS_PART_SIZE]); - $response_upload_part = array(); - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece[self::OSS_SEEK_TO]; - $to_pos = (integer)$piece[self::OSS_LENGTH] + $from_pos - 1; - $up_options = array( - self::OSS_FILE_UPLOAD => $uploadFile, - self::OSS_PART_NUM => ($i + 1), - self::OSS_SEEK_TO => $from_pos, - self::OSS_LENGTH => $to_pos - $from_pos + 1, - self::OSS_CHECK_MD5 => $is_check_md5, - ); - if ($is_check_md5) { - $content_md5 = OssUtil::getMd5SumForFile($uploadFile, $from_pos, $to_pos); - $up_options[self::OSS_CONTENT_MD5] = $content_md5; - } - $response_upload_part[] = $this->uploadPart($bucket, $object, $uploadId, $up_options); - } - - $uploadParts = array(); - foreach ($response_upload_part as $i => $etag) { - $uploadParts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $etag, - ); - } - - //build complete options - $cmp_options = null; - if (isset($options[self::OSS_HEADERS]) && isset($options[self::OSS_HEADERS][self::OSS_REQUEST_PAYER])) { - $cmp_options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => $options[self::OSS_HEADERS][self::OSS_REQUEST_PAYER], - )); - } - return $this->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts, $cmp_options); - } - - /** - * Uploads the local directory to the specified bucket into specified folder (prefix) - * - * @param string $bucket bucket name - * @param string $prefix The object key prefix. Typically it's folder name. The name should not end with '/' as the API appends it automatically. - * @param string $localDirectory The local directory to upload - * @param string $exclude To excluded directories - * @param bool $recursive Recursive flag. True: Recursively upload all datas under the local directory; False: only upload first layer's files. - * @param bool $checkMd5 - * @return array Returns two list: array("succeededList" => array("object"), "failedList" => array("object"=>"errorMessage")) - * @throws OssException - */ - public function uploadDir($bucket, $prefix, $localDirectory, $exclude = '.|..|.svn|.git', $recursive = false, $checkMd5 = true) - { - $retArray = array("succeededList" => array(), "failedList" => array()); - if (empty($bucket)) throw new OssException("parameter error, bucket is empty"); - if (!is_string($prefix)) throw new OssException("parameter error, prefix is not string"); - if (empty($localDirectory)) throw new OssException("parameter error, localDirectory is empty"); - $directory = $localDirectory; - $directory = OssUtil::encodePath($directory); - //If it's not the local directory, throw OSSException. - if (!is_dir($directory)) { - throw new OssException('parameter error: ' . $directory . ' is not a directory, please check it'); - } - //read directory - $file_list_array = OssUtil::readDir($directory, $exclude, $recursive); - if (!$file_list_array) { - throw new OssException($directory . ' is empty...'); - } - foreach ($file_list_array as $k => $item) { - if (is_dir($item['path'])) { - continue; - } - $options = array( - self::OSS_PART_SIZE => self::OSS_MIN_PART_SIZE, - self::OSS_CHECK_MD5 => $checkMd5, - ); - $realObject = (!empty($prefix) ? $prefix . '/' : '') . $item['file']; - - try { - $this->multiuploadFile($bucket, $realObject, $item['path'], $options); - $retArray["succeededList"][] = $realObject; - } catch (OssException $e) { - $retArray["failedList"][$realObject] = $e->getMessage(); - } - } - return $retArray; - } - - /** - * Sign URL with specified expiration time in seconds (timeout) and HTTP method. - * The signed URL could be used to access the object directly. - * - * @param string $bucket - * @param string $object - * @param int $timeout expiration time in seconds. - * @param string $method - * @param array $options Key-Value array - * @return string - * @throws OssException - */ - public function signUrl($bucket, $object, $timeout = 60, $method = self::OSS_HTTP_GET, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - //method - if (self::OSS_HTTP_GET !== $method && self::OSS_HTTP_PUT !== $method) { - throw new OssException("method is invalid"); - } - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_METHOD] = $method; - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = ''; - } - $timeout = time() + $timeout; - $options[self::OSS_PREAUTH] = $timeout; - $options[self::OSS_DATE] = $timeout; - $this->setSignStsInUrl(true); - return $this->auth($options); - } - - /** - * Sign URL with specified expiration time in seconds and HTTP method. - * The signed URL could be used to access the object directly. - * - * @param string $bucket - * @param string $object - * @param int $expiration expiration time of the Url, unix epoch, since 1970.1.1 00.00.00 UTC - * @param string $method - * @param array $options Key-Value array - * @return string - * @throws OssException - */ - public function generatePresignedUrl($bucket, $object, $expiration, $method = self::OSS_HTTP_GET, $options = NULL) - { - $this->precheckCommon($bucket, $object, $options); - //method - if (self::OSS_HTTP_GET !== $method && self::OSS_HTTP_PUT !== $method) { - throw new OssException("method is invalid"); - } - $options[self::OSS_BUCKET] = $bucket; - $options[self::OSS_OBJECT] = $object; - $options[self::OSS_METHOD] = $method; - if (!isset($options[self::OSS_CONTENT_TYPE])) { - $options[self::OSS_CONTENT_TYPE] = ''; - } - $options[self::OSS_PREAUTH] = $expiration; - $options[self::OSS_DATE] = $expiration; - $this->setSignStsInUrl(true); - return $this->auth($options); - } - - /** - * validates options. Create a empty array if it's NULL. - * - * @param array $options - * @throws OssException - */ - private function precheckOptions(&$options) - { - OssUtil::validateOptions($options); - if (!$options) { - $options = array(); - } - } - - /** - * Validates bucket parameter - * - * @param string $bucket - * @param string $errMsg - * @throws OssException - */ - private function precheckBucket($bucket, $errMsg = 'bucket is not allowed empty') - { - OssUtil::throwOssExceptionWithMessageIfEmpty($bucket, $errMsg); - } - - /** - * validates object parameter - * - * @param string $object - * @throws OssException - */ - private function precheckObject($object) - { - OssUtil::throwOssExceptionWithMessageIfEmpty($object, "object name is empty"); - } - - /** - * 校验option restore - * - * @param string $restore - * @throws OssException - */ - private function precheckStorage($storage) - { - if (is_string($storage)) { - switch ($storage) { - case self::OSS_STORAGE_ARCHIVE: - return; - case self::OSS_STORAGE_IA: - return; - case self::OSS_STORAGE_STANDARD: - return; - case self::OSS_STORAGE_COLDARCHIVE: - return; - default: - break; - } - } - throw new OssException('storage name is invalid'); - } - - /** - * Validates bucket,options parameters and optionally validate object parameter. - * - * @param string $bucket - * @param string $object - * @param array $options - * @param bool $isCheckObject - */ - private function precheckCommon($bucket, $object, &$options, $isCheckObject = true) - { - if ($isCheckObject) { - $this->precheckObject($object); - } - $this->precheckOptions($options); - $this->precheckBucket($bucket); - } - - /** - * checks parameters - * - * @param array $options - * @param string $param - * @param string $funcName - * @throws OssException - */ - private function precheckParam($options, $param, $funcName) - { - if (!isset($options[$param])) { - throw new OssException('The `' . $param . '` options is required in ' . $funcName . '().'); - } - } - - /** - * Checks md5 - * - * @param array $options - * @return bool|null - */ - private function isCheckMD5($options) - { - return $this->getValue($options, self::OSS_CHECK_MD5, false, true, true); - } - - /** - * Gets value of the specified key from the options - * - * @param array $options - * @param string $key - * @param string $default - * @param bool $isCheckEmpty - * @param bool $isCheckBool - * @return bool|null - */ - private function getValue($options, $key, $default = NULL, $isCheckEmpty = false, $isCheckBool = false) - { - $value = $default; - if (isset($options[$key])) { - if ($isCheckEmpty) { - if (!empty($options[$key])) { - $value = $options[$key]; - } - } else { - $value = $options[$key]; - } - unset($options[$key]); - } - if ($isCheckBool) { - if ($value !== true && $value !== false) { - $value = false; - } - } - return $value; - } - - /** - * Gets mimetype - * - * @param string $object - * @return string - */ - private function getMimeType($object, $file = null) - { - if (!is_null($file)) { - $type = MimeTypes::getMimetype($file); - if (!is_null($type)) { - return $type; - } - } - - $type = MimeTypes::getMimetype($object); - if (!is_null($type)) { - return $type; - } - - return self::DEFAULT_CONTENT_TYPE; - } - - /** - * Validates and executes the request according to OSS API protocol. - * - * @param array $options - * @return ResponseCore - * @throws OssException - * @throws RequestCore_Exception - */ - private function auth($options) - { - OssUtil::validateOptions($options); - //Validates bucket, not required for list_bucket - $this->authPrecheckBucket($options); - //Validates object - $this->authPrecheckObject($options); - //object name encoding must be UTF-8 - $this->authPrecheckObjectEncoding($options); - //Validates ACL - $this->authPrecheckAcl($options); - $cred = $this->provider->getCredentials(); - $this->checkCredentials($cred); - - // Should https or http be used? - $scheme = $this->useSSL ? 'https://' : 'http://'; - // gets the host name. If the host name is public domain or private domain, form a third level domain by prefixing the bucket name on the domain name. - $hostname = $this->generateHostname($options[self::OSS_BUCKET]); - $string_to_sign = ''; - $headers = $this->generateHeaders($options, $hostname,$cred); - $signable_query_string_params = $this->generateSignableQueryStringParam($options,$cred); - $signable_query_string = OssUtil::toQueryString($signable_query_string_params); - $resource_uri = $this->generateResourceUri($options); - //Generates the URL (add query parameters) - $conjunction = '?'; - $non_signable_resource = ''; - if (isset($options[self::OSS_SUB_RESOURCE])) { - $conjunction = '&'; - } - if ($signable_query_string !== '') { - $signable_query_string = $conjunction . $signable_query_string; - $conjunction = '&'; - } - $query_string = $this->generateQueryString($options); - if ($query_string !== '') { - $non_signable_resource .= $conjunction . $query_string; - $conjunction = '&'; - } - $requestUrl = $scheme . $hostname . $resource_uri . $signable_query_string . $non_signable_resource; - - //Creates the request - $request = new RequestCore($requestUrl, $this->requestProxy); - $request->set_useragent($this->generateUserAgent()); - // Streaming uploads - if (isset($options[self::OSS_FILE_UPLOAD])) { - if (is_resource($options[self::OSS_FILE_UPLOAD])) { - $length = null; - - if (isset($options[self::OSS_CONTENT_LENGTH])) { - $length = $options[self::OSS_CONTENT_LENGTH]; - } elseif (isset($options[self::OSS_SEEK_TO])) { - $stats = fstat($options[self::OSS_FILE_UPLOAD]); - if ($stats && $stats[self::OSS_SIZE] >= 0) { - $length = $stats[self::OSS_SIZE] - (integer)$options[self::OSS_SEEK_TO]; - } - } - $request->set_read_stream($options[self::OSS_FILE_UPLOAD], $length); - } else { - $request->set_read_file($options[self::OSS_FILE_UPLOAD]); - $length = $request->read_stream_size; - if (isset($options[self::OSS_CONTENT_LENGTH])) { - $length = $options[self::OSS_CONTENT_LENGTH]; - } elseif (isset($options[self::OSS_SEEK_TO]) && isset($length)) { - $length -= (integer)$options[self::OSS_SEEK_TO]; - } - $request->set_read_stream_size($length); - } - } - if (isset($options[self::OSS_SEEK_TO])) { - $request->set_seek_position((integer)$options[self::OSS_SEEK_TO]); - } - if (isset($options[self::OSS_FILE_DOWNLOAD])) { - if (is_resource($options[self::OSS_FILE_DOWNLOAD])) { - $request->set_write_stream($options[self::OSS_FILE_DOWNLOAD]); - } else { - $request->set_write_file($options[self::OSS_FILE_DOWNLOAD]); - } - } - - if (isset($options[self::OSS_METHOD])) { - $request->set_method($options[self::OSS_METHOD]); - $string_to_sign .= $options[self::OSS_METHOD] . "\n"; - } - - if (isset($options[self::OSS_CONTENT])) { - $request->set_body($options[self::OSS_CONTENT]); - if ($headers[self::OSS_CONTENT_TYPE] === 'application/x-www-form-urlencoded') { - $headers[self::OSS_CONTENT_TYPE] = 'application/octet-stream'; - } - - $headers[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]); - $headers[self::OSS_CONTENT_MD5] = base64_encode(md5($options[self::OSS_CONTENT], true)); - } - - if (isset($options[self::OSS_CALLBACK])) { - $headers[self::OSS_CALLBACK] = base64_encode($options[self::OSS_CALLBACK]); - } - if (isset($options[self::OSS_CALLBACK_VAR])) { - $headers[self::OSS_CALLBACK_VAR] = base64_encode($options[self::OSS_CALLBACK_VAR]); - } - - if (!isset($headers[self::OSS_ACCEPT_ENCODING])) { - $headers[self::OSS_ACCEPT_ENCODING] = ''; - } - - uksort($headers, 'strnatcasecmp'); - - foreach ($headers as $header_key => $header_value) { - $header_value = str_replace(array("\r", "\n"), '', $header_value); - if ($header_value !== '' || $header_key === self::OSS_ACCEPT_ENCODING) { - $request->add_header($header_key, $header_value); - } - - if ( - strtolower($header_key) === 'content-md5' || - strtolower($header_key) === 'content-type' || - strtolower($header_key) === 'date' || - (isset($options['self::OSS_PREAUTH']) && (integer)$options['self::OSS_PREAUTH'] > 0) - ) { - $string_to_sign .= $header_value . "\n"; - } elseif (substr(strtolower($header_key), 0, 6) === self::OSS_DEFAULT_PREFIX) { - $string_to_sign .= strtolower($header_key) . ':' . $header_value . "\n"; - } - } - // Generates the signable_resource - $signable_resource = $this->generateSignableResource($options); - $signable_resource = rawurldecode($signable_resource) . urldecode($signable_query_string); - $string_to_sign_ordered = $string_to_sign; - $string_to_sign .= $signable_resource; - - // Sort the strings to be signed. - $string_to_sign_ordered .= $this->stringToSignSorted($signable_resource); - - $signature = base64_encode(hash_hmac('sha1', $string_to_sign_ordered,$cred->getAccessKeySecret(), true)); - $request->add_header('Authorization', 'OSS ' . $cred->getAccessKeyId() . ':' . $signature); - - if (isset($options[self::OSS_PREAUTH]) && (integer)$options[self::OSS_PREAUTH] > 0) { - $signed_url = $requestUrl . $conjunction . self::OSS_URL_ACCESS_KEY_ID . '=' . rawurlencode($cred->getAccessKeyId()) . '&' . self::OSS_URL_EXPIRES . '=' . $options[self::OSS_PREAUTH] . '&' . self::OSS_URL_SIGNATURE . '=' . rawurlencode($signature); - return $signed_url; - } elseif (isset($options[self::OSS_PREAUTH])) { - return $requestUrl; - } - - if ($this->timeout !== 0) { - $request->timeout = $this->timeout; - } - if ($this->connectTimeout !== 0) { - $request->connect_timeout = $this->connectTimeout; - } - - try { - $request->send_request(); - } catch (RequestCore_Exception $e) { - throw(new OssException('RequestCoreException: ' . $e->getMessage())); - } - $response_header = $request->get_response_header(); - $response_header['oss-request-url'] = $requestUrl; - $response_header['oss-redirects'] = $this->redirects; - $response_header['oss-stringtosign'] = $string_to_sign; - $response_header['oss-requestheaders'] = $request->request_headers; - - $data = new ResponseCore($response_header, $request->get_response_body(), $request->get_response_code()); - //retry if OSS Internal Error - if ((integer)$request->get_response_code() === 500) { - if ($this->redirects <= $this->maxRetries) { - //Sets the sleep time betwen each retry. - $delay = (integer)(pow(4, $this->redirects) * 100000); - usleep($delay); - $this->redirects++; - $data = $this->auth($options); - } - } - - $this->redirects = 0; - return $data; - } - - /** - * Sets the max retry count - * - * @param int $maxRetries - * @return void - */ - public function setMaxTries($maxRetries = 3) - { - $this->maxRetries = $maxRetries; - } - - /** - * Gets the max retry count - * - * @return int - */ - public function getMaxRetries() - { - return $this->maxRetries; - } - - /** - * Enaable/disable STS in the URL. This is to determine the $sts value passed from constructor take effect or not. - * - * @param boolean $enable - */ - public function setSignStsInUrl($enable) - { - $this->enableStsInUrl = $enable; - } - - /** - * @return boolean - */ - public function isUseSSL() - { - return $this->useSSL; - } - - /** - * @param boolean $useSSL - */ - public function setUseSSL($useSSL) - { - $this->useSSL = $useSSL; - } - - /** - * Validates bucket name--throw OssException if it's invalid - * - * @param $options - * @throws OssException - */ - private function authPrecheckBucket($options) - { - if (!(('/' == $options[self::OSS_OBJECT]) && ('' == $options[self::OSS_BUCKET]) && ('GET' == $options[self::OSS_METHOD])) && !OssUtil::validateBucket($options[self::OSS_BUCKET])) { - throw new OssException('"' . $options[self::OSS_BUCKET] . '"' . 'bucket name is invalid'); - } - } - - /** - * - * Validates the object name--throw OssException if it's invalid. - * - * @param $options - * @throws OssException - */ - private function authPrecheckObject($options) - { - if (isset($options[self::OSS_OBJECT]) && $options[self::OSS_OBJECT] === '/') { - return; - } - - if (isset($options[self::OSS_OBJECT]) && !OssUtil::validateObject($options[self::OSS_OBJECT])) { - throw new OssException('"' . $options[self::OSS_OBJECT] . '"' . ' object name is invalid'); - } - } - - /** - * Checks the object's encoding. Convert it to UTF8 if it's in GBK or GB2312 - * - * @param mixed $options parameter - */ - private function authPrecheckObjectEncoding(&$options) - { - $tmp_object = $options[self::OSS_OBJECT]; - try { - if (OssUtil::isGb2312($options[self::OSS_OBJECT])) { - $options[self::OSS_OBJECT] = iconv('GB2312', "UTF-8//IGNORE", $options[self::OSS_OBJECT]); - } elseif (OssUtil::checkChar($options[self::OSS_OBJECT], true)) { - $options[self::OSS_OBJECT] = iconv('GBK', "UTF-8//IGNORE", $options[self::OSS_OBJECT]); - } - } catch (\Exception $e) { - try { - $tmp_object = iconv(mb_detect_encoding($tmp_object), "UTF-8", $tmp_object); - } catch (\Exception $e) { - } - } - $options[self::OSS_OBJECT] = $tmp_object; - } - - /** - * Checks if the ACL is one of the 3 predefined one. Throw OSSException if not. - * - * @param $options - * @throws OssException - */ - private function authPrecheckAcl($options) - { - if (isset($options[self::OSS_HEADERS][self::OSS_ACL]) && !empty($options[self::OSS_HEADERS][self::OSS_ACL])) { - if (!in_array(strtolower($options[self::OSS_HEADERS][self::OSS_ACL]), self::$OSS_ACL_TYPES)) { - throw new OssException($options[self::OSS_HEADERS][self::OSS_ACL] . ':' . 'acl is invalid(private,public-read,public-read-write)'); - } - } - } - - /** - * Gets the host name for the current request. - * It could be either a third level domain (prefixed by bucket name) or second level domain if it's CName or IP - * - * @param $bucket - * @return string The host name without the protocol scheem (e.g. https://) - */ - private function generateHostname($bucket) - { - if ($this->hostType === self::OSS_HOST_TYPE_IP) { - $hostname = $this->hostname; - } elseif ($this->hostType === self::OSS_HOST_TYPE_CNAME) { - $hostname = $this->hostname; - } else { - // Private domain or public domain - $hostname = ($bucket == '') ? $this->hostname : ($bucket . '.') . $this->hostname; - } - return $hostname; - } - - /** - * Gets the resource Uri in the current request - * - * @param $options - * @return string return the resource uri. - */ - private function generateResourceUri($options) - { - $resource_uri = ""; - - // resource_uri + bucket - if (isset($options[self::OSS_BUCKET]) && '' !== $options[self::OSS_BUCKET]) { - if ($this->hostType === self::OSS_HOST_TYPE_IP) { - $resource_uri = '/' . $options[self::OSS_BUCKET]; - } - } - - // resource_uri + object - if (isset($options[self::OSS_OBJECT]) && '/' !== $options[self::OSS_OBJECT]) { - $resource_uri .= '/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode($options[self::OSS_OBJECT])); - } - - // resource_uri + sub_resource - $conjunction = '?'; - if (isset($options[self::OSS_SUB_RESOURCE])) { - $resource_uri .= $conjunction . $options[self::OSS_SUB_RESOURCE]; - } - return $resource_uri; - } - - /** - * Generates the signalbe query string parameters in array type - * - * @param array $options - * @param Credentials $cred - * @return array - */ - private function generateSignableQueryStringParam($options,$cred) - { - $signableQueryStringParams = array(); - $signableList = array( - self::OSS_PART_NUM, - 'response-content-type', - 'response-content-language', - 'response-cache-control', - 'response-content-encoding', - 'response-expires', - 'response-content-disposition', - self::OSS_UPLOAD_ID, - self::OSS_COMP, - self::OSS_LIVE_CHANNEL_STATUS, - self::OSS_LIVE_CHANNEL_START_TIME, - self::OSS_LIVE_CHANNEL_END_TIME, - self::OSS_PROCESS, - self::OSS_POSITION, - self::OSS_SYMLINK, - self::OSS_RESTORE, - self::OSS_TAGGING, - self::OSS_WORM_ID, - self::OSS_TRAFFIC_LIMIT, - self::OSS_VERSION_ID, - self::OSS_CONTINUATION_TOKEN, - self::OSS_CNAME, - ); - - foreach ($signableList as $item) { - if (isset($options[$item])) { - $signableQueryStringParams[$item] = $options[$item]; - } - } - - if ($this->enableStsInUrl && (!empty($cred->getSecurityToken()))) { - $signableQueryStringParams["security-token"] = $cred->getSecurityToken(); - } - - return $signableQueryStringParams; - } - - /** - * Generates the resource uri for signing - * - * @param mixed $options - * @return string - */ - private function generateSignableResource($options) - { - $signableResource = ""; - $signableResource .= '/'; - if (isset($options[self::OSS_BUCKET]) && '' !== $options[self::OSS_BUCKET]) { - $signableResource .= $options[self::OSS_BUCKET]; - // if there's no object in options, adding a '/' if the host type is not IP.\ - if ($options[self::OSS_OBJECT] == '/') { - if ($this->hostType !== self::OSS_HOST_TYPE_IP) { - $signableResource .= "/"; - } - } - } - //signable_resource + object - if (isset($options[self::OSS_OBJECT]) && '/' !== $options[self::OSS_OBJECT]) { - $signableResource .= '/' . str_replace(array('%2F', '%25'), array('/', '%'), rawurlencode($options[self::OSS_OBJECT])); - } - if (isset($options[self::OSS_SUB_RESOURCE])) { - $signableResource .= '?' . $options[self::OSS_SUB_RESOURCE]; - } - return $signableResource; - } - - /** - * generates query string - * - * @param mixed $options - * @return string - */ - private function generateQueryString($options) - { - //query parameters - $queryStringParams = array(); - if (isset($options[self::OSS_QUERY_STRING])) { - $queryStringParams = array_merge($queryStringParams, $options[self::OSS_QUERY_STRING]); - } - return OssUtil::toQueryString($queryStringParams); - } - - private function stringToSignSorted($string_to_sign) - { - $queryStringSorted = ''; - $explodeResult = explode('?', $string_to_sign); - $index = count($explodeResult); - if ($index === 1) - return $string_to_sign; - - $queryStringParams = explode('&', $explodeResult[$index - 1]); - sort($queryStringParams); - - foreach($queryStringParams as $params) - { - $queryStringSorted .= $params . '&'; - } - - $queryStringSorted = substr($queryStringSorted, 0, -1); - - $result = ''; - for ($i = 0; $i < $index -1; $i++) - { - $result .= $explodeResult[$i] . '?'; - } - return $result . $queryStringSorted; - } - - /** - * Initialize headers - * - * @param mixed $options - * @param string $hostname hostname - * @param Credentials $cred - * @return array - */ - private function generateHeaders($options, $hostname,$cred) - { - $headers = array( - self::OSS_CONTENT_MD5 => '', - self::OSS_CONTENT_TYPE => isset($options[self::OSS_CONTENT_TYPE]) ? $options[self::OSS_CONTENT_TYPE] : self::DEFAULT_CONTENT_TYPE, - self::OSS_DATE => isset($options[self::OSS_DATE]) ? $options[self::OSS_DATE] : gmdate('D, d M Y H:i:s \G\M\T'), - self::OSS_HOST => $hostname, - ); - if (isset($options[self::OSS_CONTENT_MD5])) { - $headers[self::OSS_CONTENT_MD5] = $options[self::OSS_CONTENT_MD5]; - } - - //Add stsSecurityToken - if ((!empty($cred->getSecurityToken())) && (!$this->enableStsInUrl)) { - $headers[self::OSS_SECURITY_TOKEN] = $cred->getSecurityToken(); - } - //Merge HTTP headers - if (isset($options[self::OSS_HEADERS])) { - $headers = array_merge($headers, $options[self::OSS_HEADERS]); - } - return $headers; - } - - /** - * Generates UserAgent - * - * @return string - */ - private function generateUserAgent() - { - return self::OSS_NAME . "/" . self::OSS_VERSION . " (" . php_uname('s') . "/" . php_uname('r') . "/" . php_uname('m') . ";" . PHP_VERSION . ")"; - } - - /** - * Checks endpoint type and returns the endpoint without the protocol schema. - * Figures out the domain's type (ip, cname or private/public domain). - * - * @param string $endpoint - * @param boolean $isCName - * @return string The domain name without the protocol schema. - */ - private function checkEndpoint($endpoint, $isCName) - { - $ret_endpoint = null; - if (strpos($endpoint, 'http://') === 0) { - $ret_endpoint = substr($endpoint, strlen('http://')); - } elseif (strpos($endpoint, 'https://') === 0) { - $ret_endpoint = substr($endpoint, strlen('https://')); - $this->useSSL = true; - } else { - $ret_endpoint = $endpoint; - } - - $ret_endpoint = OssUtil::getHostPortFromEndpoint($ret_endpoint); - - if ($isCName) { - $this->hostType = self::OSS_HOST_TYPE_CNAME; - } elseif (OssUtil::isIPFormat($ret_endpoint)) { - $this->hostType = self::OSS_HOST_TYPE_IP; - } else { - $this->hostType = self::OSS_HOST_TYPE_NORMAL; - } - return $ret_endpoint; - } - - /** - * @param Credentials $credential - * @return OssException - */ - private function checkCredentials($credential) - { - if (empty($credential)) { - throw new OssException("credentials is empty."); - } - if (empty($credential->getAccessKeyId())) { - throw new OssException("access key id is empty"); - } - if (empty($credential->getAccessKeySecret())) { - throw new OssException("access key secret is empty"); - } - } - - /** - * Check if all dependent extensions are installed correctly. - * For now only "curl" is needed. - * @throws OssException - */ - public static function checkEnv() - { - if (function_exists('get_loaded_extensions')) { - //Test curl extension - $enabled_extension = array("curl"); - $extensions = get_loaded_extensions(); - if ($extensions) { - foreach ($enabled_extension as $item) { - if (!in_array($item, $extensions)) { - throw new OssException("Extension {" . $item . "} is not installed or not enabled, please check your php env."); - } - } - } else { - throw new OssException("function get_loaded_extensions not found."); - } - } else { - throw new OssException('Function get_loaded_extensions has been disabled, please check php config.'); - } - } - - /** - * Sets the http's timeout (in seconds) - * - * @param int $timeout - */ - public function setTimeout($timeout) - { - $this->timeout = $timeout; - } - - /** - * Sets the http's connection timeout (in seconds) - * - * @param int $connectTimeout - */ - public function setConnectTimeout($connectTimeout) - { - $this->connectTimeout = $connectTimeout; - } - - // Constants for Life cycle - const OSS_LIFECYCLE_EXPIRATION = "Expiration"; - const OSS_LIFECYCLE_TIMING_DAYS = "Days"; - const OSS_LIFECYCLE_TIMING_DATE = "Date"; - //OSS Internal constants - const OSS_BUCKET = 'bucket'; - const OSS_OBJECT = 'object'; - const OSS_HEADERS = OssUtil::OSS_HEADERS; - const OSS_METHOD = 'method'; - const OSS_QUERY = 'query'; - const OSS_BASENAME = 'basename'; - const OSS_MAX_KEYS = 'max-keys'; - const OSS_UPLOAD_ID = 'uploadId'; - const OSS_PART_NUM = 'partNumber'; - const OSS_COMP = 'comp'; - const OSS_LIVE_CHANNEL_STATUS = 'status'; - const OSS_LIVE_CHANNEL_START_TIME = 'startTime'; - const OSS_LIVE_CHANNEL_END_TIME = 'endTime'; - const OSS_POSITION = 'position'; - const OSS_MAX_KEYS_VALUE = 100; - const OSS_MAX_OBJECT_GROUP_VALUE = OssUtil::OSS_MAX_OBJECT_GROUP_VALUE; - const OSS_MAX_PART_SIZE = OssUtil::OSS_MAX_PART_SIZE; - const OSS_MID_PART_SIZE = OssUtil::OSS_MID_PART_SIZE; - const OSS_MIN_PART_SIZE = OssUtil::OSS_MIN_PART_SIZE; - const OSS_FILE_SLICE_SIZE = 8192; - const OSS_PREFIX = 'prefix'; - const OSS_DELIMITER = 'delimiter'; - const OSS_MARKER = 'marker'; - const OSS_FETCH_OWNER = 'fetch-owner'; - const OSS_START_AFTER = 'start-after'; - const OSS_CONTINUATION_TOKEN = 'continuation-token'; - const OSS_ACCEPT_ENCODING = 'Accept-Encoding'; - const OSS_CONTENT_MD5 = 'Content-Md5'; - const OSS_SELF_CONTENT_MD5 = 'x-oss-meta-md5'; - const OSS_CONTENT_TYPE = 'Content-Type'; - const OSS_CONTENT_LENGTH = 'Content-Length'; - const OSS_IF_MODIFIED_SINCE = 'If-Modified-Since'; - const OSS_IF_UNMODIFIED_SINCE = 'If-Unmodified-Since'; - const OSS_IF_MATCH = 'If-Match'; - const OSS_IF_NONE_MATCH = 'If-None-Match'; - const OSS_CACHE_CONTROL = 'Cache-Control'; - const OSS_EXPIRES = 'Expires'; - const OSS_PREAUTH = 'preauth'; - const OSS_CONTENT_COING = 'Content-Coding'; - const OSS_CONTENT_DISPOSTION = 'Content-Disposition'; - const OSS_RANGE = 'range'; - const OSS_ETAG = 'etag'; - const OSS_LAST_MODIFIED = 'lastmodified'; - const OS_CONTENT_RANGE = 'Content-Range'; - const OSS_CONTENT = OssUtil::OSS_CONTENT; - const OSS_BODY = 'body'; - const OSS_LENGTH = OssUtil::OSS_LENGTH; - const OSS_HOST = 'Host'; - const OSS_DATE = 'Date'; - const OSS_AUTHORIZATION = 'Authorization'; - const OSS_FILE_DOWNLOAD = 'fileDownload'; - const OSS_FILE_UPLOAD = 'fileUpload'; - const OSS_PART_SIZE = 'partSize'; - const OSS_SEEK_TO = 'seekTo'; - const OSS_SIZE = 'size'; - const OSS_QUERY_STRING = 'query_string'; - const OSS_SUB_RESOURCE = 'sub_resource'; - const OSS_DEFAULT_PREFIX = 'x-oss-'; - const OSS_CHECK_MD5 = 'checkmd5'; - const DEFAULT_CONTENT_TYPE = 'application/octet-stream'; - const OSS_SYMLINK_TARGET = 'x-oss-symlink-target'; - const OSS_SYMLINK = 'symlink'; - const OSS_HTTP_CODE = 'http_code'; - const OSS_REQUEST_ID = 'x-oss-request-id'; - const OSS_INFO = 'info'; - const OSS_STORAGE = 'storage'; - const OSS_RESTORE = 'restore'; - const OSS_STORAGE_STANDARD = 'Standard'; - const OSS_STORAGE_IA = 'IA'; - const OSS_STORAGE_ARCHIVE = 'Archive'; - const OSS_STORAGE_COLDARCHIVE = 'ColdArchive'; - const OSS_TAGGING = 'tagging'; - const OSS_WORM_ID = 'wormId'; - const OSS_RESTORE_CONFIG = 'restore-config'; - const OSS_KEY_MARKER = 'key-marker'; - const OSS_VERSION_ID_MARKER = 'version-id-marker'; - const OSS_VERSION_ID = 'versionId'; - const OSS_HEADER_VERSION_ID = 'x-oss-version-id'; - const OSS_CNAME = 'cname'; - - //private URLs - const OSS_URL_ACCESS_KEY_ID = 'OSSAccessKeyId'; - const OSS_URL_EXPIRES = 'Expires'; - const OSS_URL_SIGNATURE = 'Signature'; - //HTTP METHOD - const OSS_HTTP_GET = 'GET'; - const OSS_HTTP_PUT = 'PUT'; - const OSS_HTTP_HEAD = 'HEAD'; - const OSS_HTTP_POST = 'POST'; - const OSS_HTTP_DELETE = 'DELETE'; - const OSS_HTTP_OPTIONS = 'OPTIONS'; - //Others - const OSS_ACL = 'x-oss-acl'; - const OSS_OBJECT_ACL = 'x-oss-object-acl'; - const OSS_OBJECT_GROUP = 'x-oss-file-group'; - const OSS_MULTI_PART = 'uploads'; - const OSS_MULTI_DELETE = 'delete'; - const OSS_OBJECT_COPY_SOURCE = 'x-oss-copy-source'; - const OSS_OBJECT_COPY_SOURCE_RANGE = "x-oss-copy-source-range"; - const OSS_PROCESS = "x-oss-process"; - const OSS_CALLBACK = "x-oss-callback"; - const OSS_CALLBACK_VAR = "x-oss-callback-var"; - const OSS_REQUEST_PAYER = "x-oss-request-payer"; - const OSS_TRAFFIC_LIMIT = "x-oss-traffic-limit"; - //Constants for STS SecurityToken - const OSS_SECURITY_TOKEN = "x-oss-security-token"; - const OSS_ACL_TYPE_PRIVATE = 'private'; - const OSS_ACL_TYPE_PUBLIC_READ = 'public-read'; - const OSS_ACL_TYPE_PUBLIC_READ_WRITE = 'public-read-write'; - const OSS_ENCODING_TYPE = "encoding-type"; - const OSS_ENCODING_TYPE_URL = "url"; - - const OSS_LIST_TYPE = "list-type"; - - // Domain Types - const OSS_HOST_TYPE_NORMAL = "normal";//http://bucket.oss-cn-hangzhou.aliyuncs.com/object - const OSS_HOST_TYPE_IP = "ip"; //http://1.1.1.1/bucket/object - const OSS_HOST_TYPE_SPECIAL = 'special'; //http://bucket.guizhou.gov/object - const OSS_HOST_TYPE_CNAME = "cname"; //http://mydomain.com/object - //OSS ACL array - static $OSS_ACL_TYPES = array( - self::OSS_ACL_TYPE_PRIVATE, - self::OSS_ACL_TYPE_PUBLIC_READ, - self::OSS_ACL_TYPE_PUBLIC_READ_WRITE - ); - // OssClient version information - const OSS_NAME = "aliyun-sdk-php"; - const OSS_VERSION = "2.6.0"; - const OSS_BUILD = "20220803"; - const OSS_AUTHOR = ""; - const OSS_OPTIONS_ORIGIN = 'Origin'; - const OSS_OPTIONS_REQUEST_METHOD = 'Access-Control-Request-Method'; - const OSS_OPTIONS_REQUEST_HEADERS = 'Access-Control-Request-Headers'; - - //use ssl flag - private $useSSL = false; - private $maxRetries = 3; - private $redirects = 0; - - // user's domain type. It could be one of the four: OSS_HOST_TYPE_NORMAL, OSS_HOST_TYPE_IP, OSS_HOST_TYPE_SPECIAL, OSS_HOST_TYPE_CNAME - private $hostType = self::OSS_HOST_TYPE_NORMAL; - private $requestProxy = null; - /** - * @var CredentialsProvider - */ - private $provider; - private $hostname; - private $enableStsInUrl = false; - private $timeout = 0; - private $connectTimeout = 0; -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php deleted file mode 100644 index 7061ff09..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AclResult.php +++ /dev/null @@ -1,31 +0,0 @@ -rawResponse->body; - if (empty($content)) { - throw new OssException("body is null"); - } - $xml = simplexml_load_string($content); - if (isset($xml->AccessControlList->Grant)) { - return strval($xml->AccessControlList->Grant); - } else { - throw new OssException("xml format exception"); - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php deleted file mode 100644 index d898d585..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/AppendResult.php +++ /dev/null @@ -1,27 +0,0 @@ -rawResponse->header; - if (isset($header["x-oss-next-append-position"])) { - return intval($header["x-oss-next-append-position"]); - } - throw new OssException("cannot get next-append-position"); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/BodyResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/BodyResult.php deleted file mode 100644 index 44ba15ef..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/BodyResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body) ? "" : $this->rawResponse->body; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CallbackResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CallbackResult.php deleted file mode 100644 index 514e985c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CallbackResult.php +++ /dev/null @@ -1,21 +0,0 @@ -rawResponse->status; - if ((int)(intval($status) / 100) == 2 && (int)(intval($status)) !== 203) { - return true; - } - return false; - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CopyObjectResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CopyObjectResult.php deleted file mode 100644 index 6ed67c61..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CopyObjectResult.php +++ /dev/null @@ -1,30 +0,0 @@ -rawResponse->body; - $xml = simplexml_load_string($body); - $result = array(); - - if (isset($xml->LastModified)) { - $result[] = $xml->LastModified; - } - if (isset($xml->ETag)) { - $result[] = $xml->ETag; - } - - return array_merge($result, $this->rawResponse->header); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CreateBucketCnameTokenResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CreateBucketCnameTokenResult.php deleted file mode 100644 index 74bcb8dc..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/CreateBucketCnameTokenResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $info = new CnameTokenInfo(); - $info->parseFromXml($content); - return $info; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectVersionsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectVersionsResult.php deleted file mode 100644 index 69f52a73..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectVersionsResult.php +++ /dev/null @@ -1,39 +0,0 @@ -rawResponse->body); - $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; - return $this->parseDeletedList($xml, $encodingType); - } - - private function parseDeletedList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->Deleted)) { - foreach ($xml->Deleted as $content) { - $key = isset($content->Key) ? strval($content->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $versionId = isset($content->VersionId) ? strval($content->VersionId) : ""; - $deleteMarker = isset($content->DeleteMarker) ? strval($content->DeleteMarker) : ""; - $deleteMarkerVersionId = isset($content->DeleteMarkerVersionId) ? strval($content->DeleteMarkerVersionId) : ""; - $retList[] = new DeletedObjectInfo($key, $versionId, $deleteMarker, $deleteMarkerVersionId); - } - } - return $retList; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectsResult.php deleted file mode 100644 index dc373b85..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/DeleteObjectsResult.php +++ /dev/null @@ -1,27 +0,0 @@ -rawResponse->body; - $xml = simplexml_load_string($body); - $objects = array(); - - if (isset($xml->Deleted)) { - foreach($xml->Deleted as $deleteKey) - $objects[] = $deleteKey->Key; - } - return $objects; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php deleted file mode 100644 index e9522d4f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ExistResult.php +++ /dev/null @@ -1,34 +0,0 @@ -rawResponse->status) === 200 ? true : false; - } - - /** - * Check if the response status is OK according to the http status code. - * [200-299]: OK; [404]: Not found. It means the object or bucket is not found--it's a valid response too. - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketCnameTokenResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketCnameTokenResult.php deleted file mode 100644 index b524d3fb..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketCnameTokenResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $info = new CnameTokenInfo(); - $info->parseFromXml($content); - return $info; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketEncryptionResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketEncryptionResult.php deleted file mode 100644 index 3987cc92..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketEncryptionResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $config = new ServerSideEncryptionConfig(); - $config->parseFromXml($content); - return $config; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketInfoResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketInfoResult.php deleted file mode 100644 index ad55e95b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketInfoResult.php +++ /dev/null @@ -1,37 +0,0 @@ -rawResponse->body; - if (empty($content)) { - throw new OssException("body is null"); - } - $xml = simplexml_load_string($content); - if (isset($xml->Bucket)) { - $info = new BucketInfo(); - $info->parseFromXmlNode($xml->Bucket); - return $info; - } else { - throw new OssException("xml format exception"); - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketRequestPaymentResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketRequestPaymentResult.php deleted file mode 100644 index 5107de3f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketRequestPaymentResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $config = new RequestPaymentConfig(); - $config->parseFromXml($content); - return $config->getPayer(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketStatResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketStatResult.php deleted file mode 100644 index aa310cf1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketStatResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $stat = new BucketStat(); - $stat->parseFromXml($content); - return $stat; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTagsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTagsResult.php deleted file mode 100644 index 59b4dd79..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTagsResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $config = new TaggingConfig(); - $config->parseFromXml($content); - return $config; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTransferAccelerationResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTransferAccelerationResult.php deleted file mode 100644 index a300d625..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketTransferAccelerationResult.php +++ /dev/null @@ -1,22 +0,0 @@ -rawResponse->body; - $config = new TransferAccelerationConfig(); - $config->parseFromXml($content); - return $config->getEnabled(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketVersioningResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketVersioningResult.php deleted file mode 100644 index 225190c2..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketVersioningResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $config = new VersioningConfig(); - $config->parseFromXml($content); - return $config->getStatus(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketWormResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketWormResult.php deleted file mode 100644 index 95872041..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetBucketWormResult.php +++ /dev/null @@ -1,26 +0,0 @@ -rawResponse->body; - $config = new WormConfig(); - $config->parseFromXml($content); - return $config; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCnameResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCnameResult.php deleted file mode 100644 index eed01f90..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCnameResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $config = new CnameConfig(); - $config->parseFromXml($content); - return $config; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php deleted file mode 100644 index 8fb10ea3..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetCorsResult.php +++ /dev/null @@ -1,34 +0,0 @@ -rawResponse->body; - $config = new CorsConfig(); - $config->parseFromXml($content); - return $config; - } - - /** - * Check if the response is OK, according to the http status. [200-299]:OK, the Cors config could be got; [404]: not found--no Cors config. - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php deleted file mode 100644 index e0a9595f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLifecycleResult.php +++ /dev/null @@ -1,41 +0,0 @@ -rawResponse->body; - $config = new LifecycleConfig(); - $config->parseFromXml($content); - return $config; - } - - /** - * Check if the response is OK according to the http status. - * [200-299]: OK, and the LifecycleConfig could be got; [404] The Life cycle config is not found. - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelHistoryResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelHistoryResult.php deleted file mode 100644 index 202a6681..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelHistoryResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $channelList = new GetLiveChannelHistory(); - $channelList->parseFromXml($content); - return $channelList; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelInfoResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelInfoResult.php deleted file mode 100644 index d5a9005e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelInfoResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $channelList = new GetLiveChannelInfo(); - $channelList->parseFromXml($content); - return $channelList; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelStatusResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelStatusResult.php deleted file mode 100644 index 6b8a60f5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLiveChannelStatusResult.php +++ /dev/null @@ -1,19 +0,0 @@ -rawResponse->body; - $channelList = new GetLiveChannelStatus(); - $channelList->parseFromXml($content); - return $channelList; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php deleted file mode 100644 index a0c51295..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLocationResult.php +++ /dev/null @@ -1,30 +0,0 @@ -rawResponse->body; - if (empty($content)) { - throw new OssException("body is null"); - } - $xml = simplexml_load_string($content); - return $xml; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php deleted file mode 100644 index eab8c645..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetLoggingResult.php +++ /dev/null @@ -1,41 +0,0 @@ -rawResponse->body; - $config = new LoggingConfig(); - $config->parseFromXml($content); - return $config; - } - - /** - * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, - * 404 is also considered a valid response - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php deleted file mode 100644 index a8a649eb..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetRefererResult.php +++ /dev/null @@ -1,41 +0,0 @@ -rawResponse->body; - $config = new RefererConfig(); - $config->parseFromXml($content); - return $config; - } - - /** - * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, - * 404 is also considered a valid response - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php deleted file mode 100644 index 2f4127b1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetStorageCapacityResult.php +++ /dev/null @@ -1,34 +0,0 @@ -rawResponse->body; - if (empty($content)) { - throw new OssException("body is null"); - } - $xml = simplexml_load_string($content); - if (isset($xml->StorageCapacity)) { - return intval($xml->StorageCapacity); - } else { - throw new OssException("xml format exception"); - } - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php deleted file mode 100644 index 64d54fac..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/GetWebsiteResult.php +++ /dev/null @@ -1,40 +0,0 @@ -rawResponse->body; - $config = new WebsiteConfig(); - $config->parseFromXml($content); - return $config; - } - - /** - * Judged according to the return HTTP status code, [200-299] that is OK, get the bucket configuration interface, - * 404 is also considered a valid response - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2 || (int)(intval($status)) === 404) { - return true; - } - return false; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php deleted file mode 100644 index 1ca4d1a2..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/HeaderResult.php +++ /dev/null @@ -1,23 +0,0 @@ -rawResponse->header) ? array() : $this->rawResponse->header; - } - -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateBucketWormResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateBucketWormResult.php deleted file mode 100644 index 1cd7a020..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateBucketWormResult.php +++ /dev/null @@ -1,27 +0,0 @@ -rawResponse->header; - if (isset($header["x-oss-worm-id"])) { - return strval($header["x-oss-worm-id"]); - } - throw new OssException("cannot get worm-id"); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php deleted file mode 100644 index 53a15da8..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/InitiateMultipartUploadResult.php +++ /dev/null @@ -1,29 +0,0 @@ -rawResponse->body; - $xml = simplexml_load_string($content); - if (isset($xml->UploadId)) { - return strval($xml->UploadId); - } - throw new OssException("cannot get UploadId"); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListBucketsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListBucketsResult.php deleted file mode 100644 index 1dd037b7..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListBucketsResult.php +++ /dev/null @@ -1,32 +0,0 @@ -rawResponse->body; - $xml = new \SimpleXMLElement($content); - if (isset($xml->Buckets) && isset($xml->Buckets->Bucket)) { - foreach ($xml->Buckets->Bucket as $bucket) { - $bucketInfo = new BucketInfo(); - $bucketInfo->parseFromXmlNode($bucket); - $bucketList[] = $bucketInfo; - } - } - return new BucketListInfo($bucketList); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListLiveChannelResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListLiveChannelResult.php deleted file mode 100644 index 1a6e2a41..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListLiveChannelResult.php +++ /dev/null @@ -1,16 +0,0 @@ -rawResponse->body; - $channelList = new LiveChannelListInfo(); - $channelList->parseFromXml($content); - return $channelList; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php deleted file mode 100644 index 3220c861..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListMultipartUploadResult.php +++ /dev/null @@ -1,55 +0,0 @@ -rawResponse->body; - $xml = simplexml_load_string($content); - - $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; - $bucket = isset($xml->Bucket) ? strval($xml->Bucket) : ""; - $keyMarker = isset($xml->KeyMarker) ? strval($xml->KeyMarker) : ""; - $keyMarker = OssUtil::decodeKey($keyMarker, $encodingType); - $uploadIdMarker = isset($xml->UploadIdMarker) ? strval($xml->UploadIdMarker) : ""; - $nextKeyMarker = isset($xml->NextKeyMarker) ? strval($xml->NextKeyMarker) : ""; - $nextKeyMarker = OssUtil::decodeKey($nextKeyMarker, $encodingType); - $nextUploadIdMarker = isset($xml->NextUploadIdMarker) ? strval($xml->NextUploadIdMarker) : ""; - $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; - $delimiter = OssUtil::decodeKey($delimiter, $encodingType); - $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $maxUploads = isset($xml->MaxUploads) ? intval($xml->MaxUploads) : 0; - $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; - $listUpload = array(); - - if (isset($xml->Upload)) { - foreach ($xml->Upload as $upload) { - $key = isset($upload->Key) ? strval($upload->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $uploadId = isset($upload->UploadId) ? strval($upload->UploadId) : ""; - $initiated = isset($upload->Initiated) ? strval($upload->Initiated) : ""; - $listUpload[] = new UploadInfo($key, $uploadId, $initiated); - } - } - return new ListMultipartUploadInfo($bucket, $keyMarker, $uploadIdMarker, - $nextKeyMarker, $nextUploadIdMarker, - $delimiter, $prefix, $maxUploads, $isTruncated, $listUpload); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php deleted file mode 100644 index 849c21c2..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectVersionsResult.php +++ /dev/null @@ -1,96 +0,0 @@ -rawResponse->body); - $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; - $objectVersionList = $this->parseObjecVersionList($xml, $encodingType); - $deleteMarkerList = $this->parseDeleteMarkerList($xml, $encodingType); - $prefixList = $this->parsePrefixList($xml, $encodingType); - $bucketName = isset($xml->Name) ? strval($xml->Name) : ""; - $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $keyMarker = isset($xml->KeyMarker) ? strval($xml->KeyMarker) : ""; - $keyMarker = OssUtil::decodeKey($keyMarker, $encodingType); - $nextKeyMarker = isset($xml->NextKeyMarker) ? strval($xml->NextKeyMarker) : ""; - $nextKeyMarker = OssUtil::decodeKey($nextKeyMarker, $encodingType); - $versionIdMarker = isset($xml->VersionIdMarker) ? strval($xml->VersionIdMarker) : ""; - $nextVersionIdMarker = isset($xml->NextVersionIdMarker) ? strval($xml->NextVersionIdMarker) : ""; - $maxKeys = isset($xml->MaxKeys) ? intval($xml->MaxKeys) : 0; - $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; - $delimiter = OssUtil::decodeKey($delimiter, $encodingType); - $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; - - return new ObjectVersionListInfo($bucketName, $prefix, $keyMarker, $nextKeyMarker, - $versionIdMarker, $nextVersionIdMarker,$maxKeys, $delimiter, $isTruncated, - $objectVersionList, $deleteMarkerList, $prefixList); - } - - private function parseObjecVersionList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->Version)) { - foreach ($xml->Version as $content) { - $key = isset($content->Key) ? strval($content->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $versionId = isset($content->VersionId) ? strval($content->VersionId) : ""; - $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; - $eTag = isset($content->ETag) ? strval($content->ETag) : ""; - $type = isset($content->Type) ? strval($content->Type) : ""; - $size = isset($content->Size) ? strval($content->Size) : "0"; - $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; - $isLatest = isset($content->IsLatest) ? strval($content->IsLatest) : ""; - $retList[] = new ObjectVersionInfo($key, $versionId, $lastModified, $eTag, $type, $size, $storageClass, $isLatest); - } - } - return $retList; - } - - private function parseDeleteMarkerList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->DeleteMarker)) { - foreach ($xml->DeleteMarker as $content) { - $key = isset($content->Key) ? strval($content->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $versionId = isset($content->VersionId) ? strval($content->VersionId) : ""; - $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; - $isLatest = isset($content->IsLatest) ? strval($content->IsLatest) : ""; - $retList[] = new DeleteMarkerInfo($key, $versionId, $lastModified, $isLatest); - } - } - return $retList; - } - - private function parsePrefixList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->CommonPrefixes)) { - foreach ($xml->CommonPrefixes as $commonPrefix) { - $prefix = isset($commonPrefix->Prefix) ? strval($commonPrefix->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $retList[] = new PrefixInfo($prefix); - } - } - return $retList; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php deleted file mode 100644 index 39f1f292..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsResult.php +++ /dev/null @@ -1,71 +0,0 @@ -rawResponse->body); - $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; - $objectList = $this->parseObjectList($xml, $encodingType); - $prefixList = $this->parsePrefixList($xml, $encodingType); - $bucketName = isset($xml->Name) ? strval($xml->Name) : ""; - $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $marker = isset($xml->Marker) ? strval($xml->Marker) : ""; - $marker = OssUtil::decodeKey($marker, $encodingType); - $maxKeys = isset($xml->MaxKeys) ? intval($xml->MaxKeys) : 0; - $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; - $delimiter = OssUtil::decodeKey($delimiter, $encodingType); - $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; - $nextMarker = isset($xml->NextMarker) ? strval($xml->NextMarker) : ""; - $nextMarker = OssUtil::decodeKey($nextMarker, $encodingType); - return new ObjectListInfo($bucketName, $prefix, $marker, $nextMarker, $maxKeys, $delimiter, $isTruncated, $objectList, $prefixList); - } - - private function parseObjectList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->Contents)) { - foreach ($xml->Contents as $content) { - $key = isset($content->Key) ? strval($content->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; - $eTag = isset($content->ETag) ? strval($content->ETag) : ""; - $type = isset($content->Type) ? strval($content->Type) : ""; - $size = isset($content->Size) ? strval($content->Size) : "0"; - $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; - $retList[] = new ObjectInfo($key, $lastModified, $eTag, $type, $size, $storageClass); - } - } - return $retList; - } - - private function parsePrefixList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->CommonPrefixes)) { - foreach ($xml->CommonPrefixes as $commonPrefix) { - $prefix = isset($commonPrefix->Prefix) ? strval($commonPrefix->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $retList[] = new PrefixInfo($prefix); - } - } - return $retList; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsV2Result.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsV2Result.php deleted file mode 100644 index 882c3c0e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListObjectsV2Result.php +++ /dev/null @@ -1,72 +0,0 @@ -rawResponse->body); - $encodingType = isset($xml->EncodingType) ? strval($xml->EncodingType) : ""; - $objectList = $this->parseObjectList($xml, $encodingType); - $prefixList = $this->parsePrefixList($xml, $encodingType); - $bucketName = isset($xml->Name) ? strval($xml->Name) : ""; - $prefix = isset($xml->Prefix) ? strval($xml->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $maxKeys = isset($xml->MaxKeys) ? intval($xml->MaxKeys) : 0; - $delimiter = isset($xml->Delimiter) ? strval($xml->Delimiter) : ""; - $delimiter = OssUtil::decodeKey($delimiter, $encodingType); - $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; - $continuationToken = isset($xml->ContinuationToken) ? strval($xml->ContinuationToken) : ""; - $nextContinuationToken = isset($xml->NextContinuationToken) ? strval($xml->NextContinuationToken) : ""; - $startAfter = isset($xml->StartAfter) ? strval($xml->StartAfter) : ""; - $startAfter = OssUtil::decodeKey($startAfter, $encodingType); - $keyCount = isset($xml->KeyCount) ? intval($xml->KeyCount) : 0; - return new ObjectListInfoV2($bucketName, $prefix, $maxKeys, $delimiter, $isTruncated, $objectList, $prefixList, $continuationToken, $nextContinuationToken, $startAfter, $keyCount); - } - - private function parseObjectList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->Contents)) { - foreach ($xml->Contents as $content) { - $key = isset($content->Key) ? strval($content->Key) : ""; - $key = OssUtil::decodeKey($key, $encodingType); - $lastModified = isset($content->LastModified) ? strval($content->LastModified) : ""; - $eTag = isset($content->ETag) ? strval($content->ETag) : ""; - $type = isset($content->Type) ? strval($content->Type) : ""; - $size = isset($content->Size) ? strval($content->Size) : "0"; - $storageClass = isset($content->StorageClass) ? strval($content->StorageClass) : ""; - $retList[] = new ObjectInfo($key, $lastModified, $eTag, $type, $size, $storageClass); - } - } - return $retList; - } - - private function parsePrefixList($xml, $encodingType) - { - $retList = array(); - if (isset($xml->CommonPrefixes)) { - foreach ($xml->CommonPrefixes as $commonPrefix) { - $prefix = isset($commonPrefix->Prefix) ? strval($commonPrefix->Prefix) : ""; - $prefix = OssUtil::decodeKey($prefix, $encodingType); - $retList[] = new PrefixInfo($prefix); - } - } - return $retList; - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php deleted file mode 100644 index 6641b5bb..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/ListPartsResult.php +++ /dev/null @@ -1,42 +0,0 @@ -rawResponse->body; - $xml = simplexml_load_string($content); - $bucket = isset($xml->Bucket) ? strval($xml->Bucket) : ""; - $key = isset($xml->Key) ? strval($xml->Key) : ""; - $uploadId = isset($xml->UploadId) ? strval($xml->UploadId) : ""; - $nextPartNumberMarker = isset($xml->NextPartNumberMarker) ? intval($xml->NextPartNumberMarker) : ""; - $maxParts = isset($xml->MaxParts) ? intval($xml->MaxParts) : ""; - $isTruncated = isset($xml->IsTruncated) ? strval($xml->IsTruncated) : ""; - $partList = array(); - if (isset($xml->Part)) { - foreach ($xml->Part as $part) { - $partNumber = isset($part->PartNumber) ? intval($part->PartNumber) : ""; - $lastModified = isset($part->LastModified) ? strval($part->LastModified) : ""; - $eTag = isset($part->ETag) ? strval($part->ETag) : ""; - $size = isset($part->Size) ? strval($part->Size) : ""; - $partList[] = new PartInfo($partNumber, $lastModified, $eTag, $size); - } - } - return new ListPartsInfo($bucket, $key, $uploadId, $nextPartNumberMarker, $maxParts, $isTruncated, $partList); - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutLiveChannelResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutLiveChannelResult.php deleted file mode 100644 index dcac86b7..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutLiveChannelResult.php +++ /dev/null @@ -1,16 +0,0 @@ -rawResponse->body; - $channel = new LiveChannelInfo(); - $channel->parseFromXml($content); - return $channel; - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutSetDeleteResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutSetDeleteResult.php deleted file mode 100644 index 97af003b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/PutSetDeleteResult.php +++ /dev/null @@ -1,20 +0,0 @@ - $this->rawResponse->body); - return array_merge($this->rawResponse->header, $body); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php deleted file mode 100644 index e5d83d37..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/Result.php +++ /dev/null @@ -1,175 +0,0 @@ -rawResponse = $response; - $this->parseResponse(); - } - - /** - * Get requestId - * - * @return string - */ - public function getRequestId() - { - if (isset($this->rawResponse) && - isset($this->rawResponse->header) && - isset($this->rawResponse->header['x-oss-request-id']) - ) { - return $this->rawResponse->header['x-oss-request-id']; - } else { - return ''; - } - } - - /** - * Get the returned data, different request returns the data format is different - * - * $return mixed - */ - public function getData() - { - return $this->parsedData; - } - - /** - * Subclass implementation, different requests return data has different analytical logic, implemented by subclasses - * - * @return mixed - */ - abstract protected function parseDataFromResponse(); - - /** - * Whether the operation is successful - * - * @return mixed - */ - public function isOK() - { - return $this->isOk; - } - - /** - * @throws OssException - */ - public function parseResponse() - { - $this->isOk = $this->isResponseOk(); - if ($this->isOk) { - $this->parsedData = $this->parseDataFromResponse(); - } else { - $httpStatus = strval($this->rawResponse->status); - $requestId = strval($this->getRequestId()); - $code = $this->retrieveErrorCode($this->rawResponse->body); - $message = $this->retrieveErrorMessage($this->rawResponse->body); - $body = $this->rawResponse->body; - - $details = array( - 'status' => $httpStatus, - 'request-id' => $requestId, - 'code' => $code, - 'message' => $message, - 'body' => $body - ); - throw new OssException($details); - } - } - - /** - * Try to get the error message from body - * - * @param $body - * @return string - */ - private function retrieveErrorMessage($body) - { - if (empty($body) || false === strpos($body, 'Message)) { - return strval($xml->Message); - } - return ''; - } - - /** - * Try to get the error Code from body - * - * @param $body - * @return string - */ - private function retrieveErrorCode($body) - { - if (empty($body) || false === strpos($body, 'Code)) { - return strval($xml->Code); - } - return ''; - } - - /** - * Judging from the return http status code, [200-299] that is OK - * - * @return bool - */ - protected function isResponseOk() - { - $status = $this->rawResponse->status; - if ((int)(intval($status) / 100) == 2) { - return true; - } - return false; - } - - /** - * Return the original return data - * - * @return ResponseCore - */ - public function getRawResponse() - { - return $this->rawResponse; - } - - /** - * Indicate whether the request is successful - */ - protected $isOk = false; - /** - * Data parsed by subclasses - */ - protected $parsedData = null; - /** - * Store the original Response returned by the auth function - * - * @var ResponseCore - */ - protected $rawResponse; -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/SymlinkResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/SymlinkResult.php deleted file mode 100644 index 9c6d861a..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/SymlinkResult.php +++ /dev/null @@ -1,24 +0,0 @@ -rawResponse->header[OssClient::OSS_SYMLINK_TARGET] = rawurldecode($this->rawResponse->header[OssClient::OSS_SYMLINK_TARGET]); - return $this->rawResponse->header; - } -} - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/UploadPartResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/UploadPartResult.php deleted file mode 100644 index c6b66d45..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/src/OSS/Result/UploadPartResult.php +++ /dev/null @@ -1,28 +0,0 @@ -rawResponse->header; - if (isset($header["etag"])) { - return $header["etag"]; - } - throw new OssException("cannot get ETag"); - - } -} \ No newline at end of file diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/AclResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/AclResultTest.php deleted file mode 100644 index 82168d05..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/AclResultTest.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - 00220120222 - user_example - - - public-read - - -BBBB; - - private $invalidXml = << - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new AclResult($response); - $this->assertEquals("public-read", $result->getData()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - try { - new AclResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('body is null', $e->getMessage()); - } - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - try { - new AclResult($response); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals("xml format exception", $e->getMessage()); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BodyResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BodyResultTest.php deleted file mode 100644 index 290e61ab..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BodyResultTest.php +++ /dev/null @@ -1,26 +0,0 @@ -assertTrue($result->isOK()); - $this->assertEquals($result->getData(), "hi"); - } - - public function testParseInvalid404() - { - $response = new ResponseCore(array(), null, 200); - $result = new BodyResult($response); - $this->assertTrue($result->isOK()); - $this->assertEquals($result->getData(), ""); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketCnameTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketCnameTest.php deleted file mode 100644 index 03b016f4..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketCnameTest.php +++ /dev/null @@ -1,77 +0,0 @@ -client = Common::getOssClient(); - $this->bucketName = 'php-sdk-test-bucket-' . strval(rand(0, 10000)); - $this->client->createBucket($this->bucketName); - } - - protected function tearDown(): void - { - $this->client->deleteBucket($this->bucketName); - } - - public function testBucketWithoutCname() - { - $cnameConfig = $this->client->getBucketCname($this->bucketName); - $this->assertEquals(0, count($cnameConfig->getCnames())); - } - - public function testAddCname() - { - $this->client->addBucketCname($this->bucketName, 'www.baidu.com'); - $this->client->addBucketCname($this->bucketName, 'www.qq.com'); - - $ret = $this->client->getBucketCname($this->bucketName); - $this->assertEquals(2, count($ret->getCnames())); - - // add another 2 cnames - $this->client->addBucketCname($this->bucketName, 'www.sina.com.cn'); - $this->client->addBucketCname($this->bucketName, 'www.iqiyi.com'); - - $ret = $this->client->getBucketCname($this->bucketName); - $cnames = $ret->getCnames(); - $cnameList = array(); - - foreach ($cnames as $c) { - $cnameList[] = $c['Domain']; - } - $should = array( - 'www.baidu.com', - 'www.qq.com', - 'www.sina.com.cn', - 'www.iqiyi.com' - ); - $this->assertEquals(4, count($cnames)); - $this->assertEquals(sort($should), sort($cnameList)); - } - - public function testDeleteCname() - { - $this->client->addBucketCname($this->bucketName, 'www.baidu.com'); - $this->client->addBucketCname($this->bucketName, 'www.qq.com'); - - $ret = $this->client->getBucketCname($this->bucketName); - $this->assertEquals(2, count($ret->getCnames())); - - // delete one cname - $this->client->deleteBucketCname($this->bucketName, 'www.baidu.com'); - - $ret = $this->client->getBucketCname($this->bucketName); - $this->assertEquals(1, count($ret->getCnames())); - $cnames = $ret->getCnames(); - $this->assertEquals('www.qq.com', $cnames[0]['Domain']); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketInfoTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketInfoTest.php deleted file mode 100644 index f99bcee6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketInfoTest.php +++ /dev/null @@ -1,21 +0,0 @@ -assertNotNull($bucketInfo); - $this->assertEquals('cn-beijing', $bucketInfo->getLocation()); - $this->assertEquals('name', $bucketInfo->getName()); - $this->assertEquals('today', $bucketInfo->getCreateDate()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketLiveChannelTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketLiveChannelTest.php deleted file mode 100644 index cedf884d..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/BucketLiveChannelTest.php +++ /dev/null @@ -1,316 +0,0 @@ -client = Common::getOssClient(); - $this->bucketName = 'php-sdk-test-rtmp-bucket-name-' . strval(rand(0, 10000)); - $this->client->createBucket($this->bucketName); - Common::waitMetaSync(); - } - - protected function tearDown(): void - { - ////to delete created bucket - //1. delele live channel - $list = $this->client->listBucketLiveChannels($this->bucketName); - if (count($list->getChannelList()) != 0) - { - foreach($list->getChannelList() as $list) - { - $this->client->deleteBucketLiveChannel($this->bucketName, $list->getName()); - } - } - //2. delete exsited object - $prefix = 'live-test/'; - $delimiter = '/'; - $nextMarker = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'marker' => $nextMarker, - ); - - try { - $listObjectInfo = $this->client->listObjects($this->bucketName, $options); - } catch (OssException $e) { - printf($e->getMessage() . "\n"); - return; - } - - $objectList = $listObjectInfo->getObjectList(); // 文件列表 - if (!empty($objectList)) - { - foreach($objectList as $objectInfo) - $this->client->deleteObject($this->bucketName, $objectInfo->getKey()); - } - //3. delete the bucket - $this->client->deleteBucket($this->bucketName); - } - - public function testPutLiveChannel() - { - $config = new LiveChannelConfig(array( - 'description' => 'live channel 1', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $info = $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config); - $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1'); - - $this->assertEquals('live-1', $info->getName()); - $this->assertEquals('live channel 1', $info->getDescription()); - $this->assertEquals(1, count($info->getPublishUrls())); - $this->assertEquals(1, count($info->getPlayUrls())); - } - - public function testPutLiveChannelWithDefaultParams() - { - $config = new LiveChannelConfig(array( - 'description' => 'live channel 1', - 'type' => 'HLS', - )); - $info = $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config); - $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1'); - - $this->assertEquals('live-1', $info->getName()); - $this->assertEquals('live channel 1', $info->getDescription()); - $this->assertEquals(1, count($info->getPublishUrls())); - $this->assertEquals(1, count($info->getPlayUrls())); - } - - public function testListLiveChannels() - { - $config = new LiveChannelConfig(array( - 'description' => 'live channel 1', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, 'live-1', $config); - - $config = new LiveChannelConfig(array( - 'description' => 'live channel 2', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, 'live-2', $config); - - $list = $this->client->listBucketLiveChannels($this->bucketName); - - $this->assertEquals($this->bucketName, $list->getBucketName()); - $this->assertEquals(false, $list->getIsTruncated()); - $channels = $list->getChannelList(); - $this->assertEquals(2, count($channels)); - - $chan1 = $channels[0]; - $this->assertEquals('live-1', $chan1->getName()); - $this->assertEquals('live channel 1', $chan1->getDescription()); - $this->assertEquals(1, count($chan1->getPublishUrls())); - $this->assertEquals(1, count($chan1->getPlayUrls())); - - $chan2 = $channels[1]; - $this->assertEquals('live-2', $chan2->getName()); - $this->assertEquals('live channel 2', $chan2->getDescription()); - $this->assertEquals(1, count($chan2->getPublishUrls())); - $this->assertEquals(1, count($chan2->getPlayUrls())); - - $list = $this->client->listBucketLiveChannels($this->bucketName, array( - 'prefix' => 'live-', - 'marker' => 'live-1', - 'max-keys' => 10 - )); - $channels = $list->getChannelList(); - $this->assertEquals(1, count($channels)); - $chan2 = $channels[0]; - $this->assertEquals('live-2', $chan2->getName()); - $this->assertEquals('live channel 2', $chan2->getDescription()); - $this->assertEquals(1, count($chan2->getPublishUrls())); - $this->assertEquals(1, count($chan2->getPlayUrls())); - - $this->client->deleteBucketLiveChannel($this->bucketName, 'live-1'); - $this->client->deleteBucketLiveChannel($this->bucketName, 'live-2'); - $list = $this->client->listBucketLiveChannels($this->bucketName, array( - 'prefix' => 'live-' - )); - $this->assertEquals(0, count($list->getChannelList())); - } - - public function testDeleteLiveChannel() - { - $channelName = 'live-to-delete'; - $config = new LiveChannelConfig(array( - 'description' => 'live channel to delete', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config); - - $this->client->deleteBucketLiveChannel($this->bucketName, $channelName); - $list = $this->client->listBucketLiveChannels($this->bucketName, array( - 'prefix' => $channelName - )); - - $this->assertEquals(0, count($list->getChannelList())); - } - - public function testSignRtmpUrl() - { - $channelName = '90475'; - $bucket = 'douyu'; - $now = time(); - $url = $this->client->signRtmpUrl($bucket, $channelName, 900, array( - 'params' => array( - 'playlistName' => 'playlist.m3u8' - ) - )); - - $ret = parse_url($url); - $this->assertEquals('rtmp', $ret['scheme']); - parse_str($ret['query'], $query); - - $this->assertTrue(isset($query['OSSAccessKeyId'])); - $this->assertTrue(isset($query['Signature'])); - $this->assertTrue(intval($query['Expires']) - ($now + 900) < 3); - $this->assertEquals('playlist.m3u8', $query['playlistName']); - } - - public function testGetgenPreSignedRtmpUrlVsSignedRtmpUrl() - { - $channelName = '90475'; - $bucket = 'douyu'; - $url1 = '245'; - $url2 = '123'; - $expiration = 0; - - do { - $begin = time(); - $expiration = time() + 900; - $url1 = $this->client->generatePresignedRtmpUrl($bucket, $channelName, $expiration, array( - 'params' => array( - 'playlistName' => 'playlist.m3u8' - ) - )); - - $url2 = $this->client->signRtmpUrl($bucket, $channelName, 900, array( - 'params' => array( - 'playlistName' => 'playlist.m3u8' - ) - )); - - $end = time(); - - if ($begin == $end) - break; - usleep(500000); - } while (true); - $this->assertEquals($url1, $url1); - $this->assertTrue(strpos($url1, 'Expires='.$expiration) !== false); - } - - public function testLiveChannelInfo() - { - $channelName = 'live-to-put-status'; - $config = new LiveChannelConfig(array( - 'description' => 'test live channel info', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config); - - $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName); - $this->assertEquals('test live channel info', $info->getDescription()); - $this->assertEquals('enabled', $info->getStatus()); - $this->assertEquals('HLS', $info->getType()); - $this->assertEquals(10, $info->getFragDuration()); - $this->assertEquals(5, $info->getFragCount()); - $this->assertEquals('playlist.m3u8', $info->getPlayListName()); - - $this->client->deleteBucketLiveChannel($this->bucketName, $channelName); - $list = $this->client->listBucketLiveChannels($this->bucketName, array( - 'prefix' => $channelName - )); - $this->assertEquals(0, count($list->getChannelList())); - } - - public function testPutLiveChannelStatus() - { - $channelName = 'live-to-put-status'; - $config = new LiveChannelConfig(array( - 'description' => 'test live channel info', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config); - - $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName); - $this->assertEquals('test live channel info', $info->getDescription()); - $this->assertEquals('enabled', $info->getStatus()); - $this->assertEquals('HLS', $info->getType()); - $this->assertEquals(10, $info->getFragDuration()); - $this->assertEquals(5, $info->getFragCount()); - $this->assertEquals('playlist.m3u8', $info->getPlayListName()); - $status = $this->client->getLiveChannelStatus($this->bucketName, $channelName); - $this->assertEquals('Idle', $status->getStatus()); - - - $resp = $this->client->putLiveChannelStatus($this->bucketName, $channelName, "disabled"); - $info = $this->client->getLiveChannelInfo($this->bucketName, $channelName); - $this->assertEquals('test live channel info', $info->getDescription()); - $this->assertEquals('disabled', $info->getStatus()); - $this->assertEquals('HLS', $info->getType()); - $this->assertEquals(10, $info->getFragDuration()); - $this->assertEquals(5, $info->getFragCount()); - $this->assertEquals('playlist.m3u8', $info->getPlayListName()); - - $status = $this->client->getLiveChannelStatus($this->bucketName, $channelName); - //getLiveChannelInfo - $this->assertEquals('Disabled', $status->getStatus()); - - $this->client->deleteBucketLiveChannel($this->bucketName, $channelName); - $list = $this->client->listBucketLiveChannels($this->bucketName, array( - 'prefix' => $channelName - )); - $this->assertEquals(0, count($list->getChannelList())); - - } - public function testLiveChannelHistory() - { - $channelName = 'live-test-history'; - $config = new LiveChannelConfig(array( - 'description' => 'test live channel info', - 'type' => 'HLS', - 'fragDuration' => 10, - 'fragCount' => 5, - 'playListName' => 'hello.m3u8' - )); - $this->client->putBucketLiveChannel($this->bucketName, $channelName, $config); - - $history = $this->client->getLiveChannelHistory($this->bucketName, $channelName); - $this->assertEquals(0, count($history->getLiveRecordList())); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php deleted file mode 100644 index 31df548d..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CallbackTest.php +++ /dev/null @@ -1,296 +0,0 @@ -ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); - - /** - * step 1. Initialize a block upload event, which is initialized to upload Multipart, get the upload id - */ - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - /* - * step 2. uploadPartCopy - */ - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id); - $upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - /** - * step 3. - */ - $json = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", - "callbackBodyType":"application/json" - }'; - - $var = - '{ - "x:var1":"value1", - "x:var2":"值2" - }'; - $options = array(OssClient::OSS_CALLBACK => $json, - OssClient::OSS_CALLBACK_VAR => $var - ); - - try { - $result = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options); - $this->assertEquals("200", $result['info']['http_code']); - $this->assertEquals("{\"Status\":\"OK\"}", $result['body']); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testMultipartUploadCallbackFailed() - { - $object = "multipart-callback-test.txt"; - $copiedObject = "multipart-callback-test.txt.copied"; - $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); - - /** - * step 1. Initialize a block upload event, which is initialized to upload Multipart, get the upload id - */ - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - /* - * step 2. uploadPartCopy - */ - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id); - $upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - /** - * step 3. - */ - - $json = - '{ - "callbackUrl":"www.baidu.com", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", - "callbackBodyType":"application/json" - }'; - - $var = - '{ - "x:var1":"value1", - "x:var2":"值2" - }'; - $options = array(OssClient::OSS_CALLBACK => $json, - OssClient::OSS_CALLBACK_VAR => $var - ); - - try { - $result = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - $this->assertEquals("203", $e->getHTTPStatus()); - } - - } - - public function testPutObjectCallbackNormal() - { - //json - { - $json = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}", - "callbackBodyType":"application/json" - }'; - $options = array(OssClient::OSS_CALLBACK => $json); - $this->putObjectCallbackOk($options, "200"); - } - //url - { - $url = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}", - "callbackBodyType":"application/x-www-form-urlencoded" - }'; - $options = array(OssClient::OSS_CALLBACK => $url); - $this->putObjectCallbackOk($options, "200"); - } - // Unspecified typre - { - $url = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}" - }'; - $options = array(OssClient::OSS_CALLBACK => $url); - $this->putObjectCallbackOk($options, "200"); - } - //json and body is chinese - { - $json = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\" 春水碧于天,画船听雨眠。\":\"垆边人似月,皓腕凝霜雪。\"}", - "callbackBodyType":"application/json" - }'; - $options = array(OssClient::OSS_CALLBACK => $json); - $this->putObjectCallbackOk($options, "200"); - } - //url and body is chinese - { - $url = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"春水碧于天,画船听雨眠。垆边人似月,皓腕凝霜雪", - "callbackBodyType":"application/x-www-form-urlencoded" - }'; - $options = array(OssClient::OSS_CALLBACK => $url); - $this->putObjectCallbackOk($options, "200"); - } - //json and add callback_var - { - $json = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size},\"x:var1\":${x:var1},\"x:var2\":${x:var2}}", - "callbackBodyType":"application/json" - }'; - - $var = - '{ - "x:var1":"value1", - "x:var2":"aliyun.com" - }'; - $options = array(OssClient::OSS_CALLBACK => $json, - OssClient::OSS_CALLBACK_VAR => $var - ); - $this->putObjectCallbackOk($options, "200"); - } - //url and add callback_var - { - $url = - '{ - "callbackUrl":"'.Common::getCallbackUrl().'",'. - ' "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}", - "callbackBodyType":"application/x-www-form-urlencoded" - }'; - $var = - '{ - "x:var1":"value1凌波不过横塘路,但目送,芳", - "x:var2":"值2" - }'; - $options = array(OssClient::OSS_CALLBACK => $url, - OssClient::OSS_CALLBACK_VAR => $var - ); - $this->putObjectCallbackOk($options, "200"); - } - - } - - public function testPutCallbackWithCallbackFailed() - { - { - $json = - '{ - "callbackUrl":"http://www.baidu.com", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}", - "callbackBodyType":"application/json" - }'; - $options = array(OssClient::OSS_CALLBACK => $json); - $this->putObjectCallbackFailed($options, "203"); - } - - { - $url = - '{ - "callbackUrl":"http://www.baidu.com", - "callbackHost":"oss-cn-hangzhou.aliyuncs.com", - "callbackBody":"bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}&imageInfo.format=${imageInfo.format}&my_var1=${x:var1}&my_var2=${x:var2}", - "callbackBodyType":"application/x-www-form-urlencoded" - }'; - $options = array(OssClient::OSS_CALLBACK => $url); - $this->putObjectCallbackFailed($options, "203"); - } - - } - - private function putObjectCallbackOk($options, $status) - { - $object = "oss-php-sdk-callback-test.txt"; - $content = file_get_contents(__FILE__); - try { - $result = $this->ossClient->putObject($this->bucket, $object, $content, $options); - $this->assertEquals($status, $result['info']['http_code']); - $this->assertEquals("{\"Status\":\"OK\"}", $result['body']); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - private function putObjectCallbackFailed($options, $status) - { - $object = "oss-php-sdk-callback-test.txt"; - $content = file_get_contents(__FILE__); - try { - $result = $this->ossClient->putObject($this->bucket, $object, $content, $options); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals($status, $e->getHTTPStatus()); - $this->assertTrue(true); - } - } - - protected function setUp(): void - { - parent::setUp(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameConfigTest.php deleted file mode 100644 index 8f7529c9..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameConfigTest.php +++ /dev/null @@ -1,77 +0,0 @@ - - - - www.foo.com - enabled - 20150101 - - - bar.com - disabled - 20160101 - - -BBBB; - - public function testFromXml() - { - $cnameConfig = new CnameConfig(); - $cnameConfig->parseFromXml($this->xml1); - - $cnames = $cnameConfig->getCnames(); - $this->assertEquals(2, count($cnames)); - $this->assertEquals('www.foo.com', $cnames[0]['Domain']); - $this->assertEquals('enabled', $cnames[0]['Status']); - $this->assertEquals('20150101', $cnames[0]['LastModified']); - - $this->assertEquals('bar.com', $cnames[1]['Domain']); - $this->assertEquals('disabled', $cnames[1]['Status']); - $this->assertEquals('20160101', $cnames[1]['LastModified']); - } - - public function testToXml() - { - $cnameConfig = new CnameConfig(); - $cnameConfig->addCname('www.foo.com'); - $cnameConfig->addCname('bar.com'); - - $xml = $cnameConfig->serializeToXml(); - $comp = new CnameConfig(); - $comp->parseFromXml($xml); - - $cnames1 = $cnameConfig->getCnames(); - $cnames2 = $comp->getCnames(); - - $this->assertEquals(count($cnames1), count($cnames2)); - $this->assertEquals(count($cnames1[0]), count($cnames2[0])); - $this->assertEquals(1, count($cnames1[0])); - $this->assertEquals($cnames1[0]['Domain'], $cnames2[0]['Domain']); - } - - public function testCnameNumberLimit() - { - $cnameConfig = new CnameConfig(); - for ($i = 0; $i < CnameConfig::OSS_MAX_RULES; $i += 1) { - $cnameConfig->addCname(strval($i) . '.foo.com'); - } - try { - $cnameConfig->addCname('www.foo.com'); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals( - $e->getMessage(), - "num of cname in the config exceeds self::OSS_MAX_RULES: " . strval(CnameConfig::OSS_MAX_RULES)); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameTokenInfoTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameTokenInfoTest.php deleted file mode 100644 index 082118e2..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CnameTokenInfoTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - - bucket - www.foo.com - 1234 - 20150101 - -BBBB; - - public function testFromXml() - { - $info = new CnameTokenInfo(); - $info->parseFromXml($this->xml1); - - $this->assertEquals('bucket', $info->getBucket()); - $this->assertEquals('www.foo.com', $info->getCname()); - $this->assertEquals('1234', $info->getToken()); - $this->assertEquals('20150101', $info->getExpireTime()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php deleted file mode 100644 index 15289448..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/Common.php +++ /dev/null @@ -1,80 +0,0 @@ -getMessage() . "\n"); - return null; - } - return $ossClient; - } - - public static function getBucketName() - { - return getenv('OSS_BUCKET'); - } - - public static function getRegion() - { - return getenv('OSS_REGION'); - } - - public static function getCallbackUrl() - { - return getenv('OSS_CALLBACK_URL'); - } - - /** - * Tool method, create a bucket - */ - public static function createBucket() - { - $ossClient = self::getOssClient(); - if (is_null($ossClient)) exit(1); - $bucket = self::getBucketName(); - $acl = OssClient::OSS_ACL_TYPE_PUBLIC_READ; - try { - $ossClient->createBucket($bucket, $acl); - } catch (OssException $e) { - printf(__FUNCTION__ . ": FAILED\n"); - printf($e->getMessage() . "\n"); - return; - } - print(__FUNCTION__ . ": OK" . "\n"); - } - - /** - * Wait for bucket meta sync - */ - public static function waitMetaSync() - { - if (getenv('TRAVIS')) { - sleep(10); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ContentTypeTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ContentTypeTest.php deleted file mode 100644 index 66b40577..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ContentTypeTest.php +++ /dev/null @@ -1,133 +0,0 @@ -/dev/null', $output, $status); - - $this->assertEquals(0, $status); - } - - private function getContentType($bucket, $object) - { - $client = $this->ossClient; - $headers = $client->getObjectMeta($bucket, $object); - return $headers['content-type']; - } - - public function testByFileName() - { - $client = $this->ossClient; - $bucket = $this->bucket; - - $file = '/tmp/x.html'; - $object = 'test/x'; - $this->runCmd('touch ' . $file); - - $client->uploadFile($bucket, $object, $file); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('text/html', $type); - - $file = '/tmp/x.json'; - $object = 'test/y'; - $this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); - - $client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('application/json', $type); - } - - public function testByObjectKey() - { - $client = $this->ossClient; - $bucket = $this->bucket; - - $object = "test/x.txt"; - $client->putObject($bucket, $object, "hello world"); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('text/plain', $type); - - $file = '/tmp/x.html'; - $object = 'test/x.txt'; - $this->runCmd('touch ' . $file); - - $client->uploadFile($bucket, $object, $file); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('text/html', $type); - - $file = '/tmp/x.none'; - $object = 'test/x.txt'; - $this->runCmd('touch ' . $file); - - $client->uploadFile($bucket, $object, $file); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('text/plain', $type); - - $file = '/tmp/x.mp3'; - $object = 'test/y.json'; - $this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); - - $client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('audio/mpeg', $type); - - $file = '/tmp/x.none'; - $object = 'test/y.json'; - $this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); - - $client->multiuploadFile($bucket, $object, $file, array('partSize' => 100)); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('application/json', $type); - } - - public function testByUser() - { - $client = $this->ossClient; - $bucket = $this->bucket; - - $object = "test/x.txt"; - $client->putObject($bucket, $object, "hello world", array( - 'Content-Type' => 'text/html' - )); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('text/html', $type); - - $file = '/tmp/x.html'; - $object = 'test/x'; - $this->runCmd('touch ' . $file); - - $client->uploadFile($bucket, $object, $file, array( - 'Content-Type' => 'application/json' - )); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('application/json', $type); - - $file = '/tmp/x.json'; - $object = 'test/y'; - $this->runCmd('dd if=/dev/urandom of=' . $file . ' bs=1024 count=100'); - - $client->multiuploadFile($bucket, $object, $file, array( - 'partSize' => 100, - 'Content-Type' => 'audio/mpeg' - )); - $type = $this->getContentType($bucket, $object); - - $this->assertEquals('audio/mpeg', $type); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CopyObjectResult.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CopyObjectResult.php deleted file mode 100644 index 7d1b0fba..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CopyObjectResult.php +++ /dev/null @@ -1,52 +0,0 @@ - - - Fri, 24 Feb 2012 07:18:48 GMT - "5B3C1A2E053D763E1B002CC607C5A0FE" - -BBBB; - - public function testNullResponse() - { - $response = null; - try { - new CopyObjectResult($response); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('raw response is null', $e->getMessage()); - } - } - - public function testOkResponse() - { - $header= array(); - $response = new ResponseCore($header, $this->body, 200); - $result = new CopyObjectResult($response); - $data = $result->getData(); - $this->assertTrue($result->isOK()); - $this->assertEquals("Fri, 24 Feb 2012 07:18:48 GMT", $data[0]); - $this->assertEquals("\"5B3C1A2E053D763E1B002CC607C5A0FE\"", $data[1]); - } - - public function testFailResponse() - { - $response = new ResponseCore(array(), "", 404); - try { - new CopyObjectResult($response); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertFalse(false); - } - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CorsConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CorsConfigTest.php deleted file mode 100644 index 3329b1af..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/CorsConfigTest.php +++ /dev/null @@ -1,140 +0,0 @@ - - - -http://www.b.com -http://www.a.com -http://www.a.com -GET -PUT -POST -x-oss-test -x-oss-test2 -x-oss-test2 -x-oss-test3 -x-oss-test1 -x-oss-test1 -x-oss-test2 -10 - - -http://www.b.com -GET -x-oss-test -x-oss-test1 -110 - - -BBBB; - - private $validXml2 = << - - -http://www.b.com -http://www.a.com -http://www.a.com -GET -PUT -POST -x-oss-test -x-oss-test2 -x-oss-test2 -x-oss-test3 -x-oss-test1 -x-oss-test1 -x-oss-test2 -10 - - -BBBB; - - public function testParseValidXml() - { - $corsConfig = new CorsConfig(); - $corsConfig->parseFromXml($this->validXml); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($corsConfig->serializeToXml())); - $this->assertNotNull($corsConfig->getRules()); - $rules = $corsConfig->getRules(); - $this->assertNotNull($rules[0]->getAllowedHeaders()); - $this->assertNotNull($rules[0]->getAllowedMethods()); - $this->assertNotNull($rules[0]->getAllowedOrigins()); - $this->assertNotNull($rules[0]->getExposeHeaders()); - $this->assertNotNull($rules[0]->getMaxAgeSeconds()); - } - - public function testParseValidXml2() - { - $corsConfig = new CorsConfig(); - $corsConfig->parseFromXml($this->validXml2); - $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml($corsConfig->serializeToXml())); - } - - public function testCreateCorsConfigFromMoreThan10Rules() - { - $corsConfig = new CorsConfig(); - $rule = new CorsRule(); - for ($i = 0; $i < CorsConfig::OSS_MAX_RULES; $i += 1) { - $corsConfig->addRule($rule); - } - try { - $corsConfig->addRule($rule); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals($e->getMessage(), "num of rules in the config exceeds self::OSS_MAX_RULES: " . strval(CorsConfig::OSS_MAX_RULES)); - } - } - - public function testCreateCorsConfigParamAbsent() - { - $corsConfig = new CorsConfig(); - $rule = new CorsRule(); - $corsConfig->addRule($rule); - - try { - $xml = $corsConfig->serializeToXml(); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals($e->getMessage(), "maxAgeSeconds is not set in the Rule"); - } - } - - public function testCreateCorsConfigFromScratch() - { - $corsConfig = new CorsConfig(); - $rule = new CorsRule(); - $rule->addAllowedHeader("x-oss-test"); - $rule->addAllowedHeader("x-oss-test2"); - $rule->addAllowedHeader("x-oss-test2"); - $rule->addAllowedHeader("x-oss-test3"); - $rule->addAllowedOrigin("http://www.b.com"); - $rule->addAllowedOrigin("http://www.a.com"); - $rule->addAllowedOrigin("http://www.a.com"); - $rule->addAllowedMethod("GET"); - $rule->addAllowedMethod("PUT"); - $rule->addAllowedMethod("POST"); - $rule->addExposeHeader("x-oss-test1"); - $rule->addExposeHeader("x-oss-test1"); - $rule->addExposeHeader("x-oss-test2"); - $rule->setMaxAgeSeconds(10); - $corsConfig->addRule($rule); - $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml($corsConfig->serializeToXml())); - $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml(strval($corsConfig))); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/DeleteObjectVersionsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/DeleteObjectVersionsResultTest.php deleted file mode 100644 index 890b1a5d..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/DeleteObjectVersionsResultTest.php +++ /dev/null @@ -1,187 +0,0 @@ - - - - demo.jpg - CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk**** - true - 111111 - - - BBBB; - - private $validXml1 = << - - - multipart.data - CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4**** - - - BBBB; - - private $validXml2 = << - - - multipart.data - true - CAEQMhiBgIDXiaaB0BYiIGQzYmRkZGUxMTM1ZDRjOTZhNjk4YjRjMTAyZjhl**** - - - test.jpg - true - CAEQMhiBgIDB3aWB0BYiIGUzYTA3YzliMzVmNzRkZGM5NjllYTVlMjYyYWEy**** - - - BBBB; - - private $validXml3 = << - - - multipart.data - - - test.jpg - - - demo.jpg - - - BBBB; - - private $validXml4 = << - - url - - multipart%2F.data - - - test%2F.jpg - - - demo%2F.jpg - - - BBBB; - - private $invalidXml = << - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new DeleteObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(1, count($list)); - $this->assertEquals('demo.jpg', $list[0]->getKey()); - $this->assertEquals('CAEQNRiBgICEoPiC0BYiIGMxZWJmYmMzYjE0OTQ0ZmZhYjgzNzkzYjc2NjZk****', $list[0]->getVersionId()); - $this->assertEquals('true', $list[0]->getDeleteMarker()); - $this->assertEquals('111111', $list[0]->getDeleteMarkerVersionId()); - - - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new DeleteObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(1, count($list)); - $this->assertEquals('multipart.data', $list[0]->getKey()); - $this->assertEquals('CAEQNRiBgIDyz.6C0BYiIGQ2NWEwNmVhNTA3ZTQ3MzM5ODliYjM1ZTdjYjA4****', $list[0]->getVersionId()); - $this->assertEquals('', $list[0]->getDeleteMarker()); - $this->assertEquals('', $list[0]->getDeleteMarkerVersionId()); - - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new DeleteObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(2, count($list)); - $this->assertEquals('multipart.data', $list[0]->getKey()); - $this->assertEquals('', $list[0]->getVersionId()); - $this->assertEquals('true', $list[0]->getDeleteMarker()); - $this->assertEquals('CAEQMhiBgIDXiaaB0BYiIGQzYmRkZGUxMTM1ZDRjOTZhNjk4YjRjMTAyZjhl****', $list[0]->getDeleteMarkerVersionId()); - $this->assertEquals('test.jpg', $list[1]->getKey()); - $this->assertEquals('', $list[1]->getVersionId()); - $this->assertEquals('true', $list[1]->getDeleteMarker()); - $this->assertEquals('CAEQMhiBgIDB3aWB0BYiIGUzYTA3YzliMzVmNzRkZGM5NjllYTVlMjYyYWEy****', $list[1]->getDeleteMarkerVersionId()); - - - $response = new ResponseCore(array(), $this->validXml3, 200); - $result = new DeleteObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(3, count($list)); - $this->assertEquals('multipart.data', $list[0]->getKey()); - $this->assertEquals('', $list[0]->getVersionId()); - $this->assertEquals('', $list[0]->getDeleteMarker()); - $this->assertEquals('', $list[0]->getDeleteMarkerVersionId()); - $this->assertEquals('test.jpg', $list[1]->getKey()); - $this->assertEquals('', $list[1]->getVersionId()); - $this->assertEquals('', $list[1]->getDeleteMarker()); - $this->assertEquals('', $list[1]->getDeleteMarkerVersionId()); - $this->assertEquals('demo.jpg', $list[2]->getKey()); - $this->assertEquals('', $list[2]->getVersionId()); - $this->assertEquals('', $list[2]->getDeleteMarker()); - $this->assertEquals('', $list[2]->getDeleteMarkerVersionId()); - - $response = new ResponseCore(array(), $this->validXml4, 200); - $result = new DeleteObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(3, count($list)); - $this->assertEquals('multipart/.data', $list[0]->getKey()); - $this->assertEquals('', $list[0]->getVersionId()); - $this->assertEquals('', $list[0]->getDeleteMarker()); - $this->assertEquals('', $list[0]->getDeleteMarkerVersionId()); - $this->assertEquals('test/.jpg', $list[1]->getKey()); - $this->assertEquals('', $list[1]->getVersionId()); - $this->assertEquals('', $list[1]->getDeleteMarker()); - $this->assertEquals('', $list[1]->getDeleteMarkerVersionId()); - $this->assertEquals('demo/.jpg', $list[2]->getKey()); - $this->assertEquals('', $list[2]->getVersionId()); - $this->assertEquals('', $list[2]->getDeleteMarker()); - $this->assertEquals('', $list[2]->getDeleteMarkerVersionId()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new DeleteObjectVersionsResult($response); - $list = $result->getData(); - $this->assertEquals(0, count($list)); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new DeleteObjectVersionsResult($response); - $list = $result->getData(); - $this->assertEquals(0, count($list)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ExistResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ExistResultTest.php deleted file mode 100644 index f9c552e1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ExistResultTest.php +++ /dev/null @@ -1,38 +0,0 @@ -assertTrue($result->isOK()); - $this->assertEquals($result->getData(), true); - } - - public function testParseInvalid404() - { - $response = new ResponseCore(array(), "", 404); - $result = new ExistResult($response); - $this->assertTrue($result->isOK()); - $this->assertEquals($result->getData(), false); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), "", 300); - try { - new ExistResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketEncryptionResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketEncryptionResultTest.php deleted file mode 100644 index 6f0e0d27..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketEncryptionResultTest.php +++ /dev/null @@ -1,95 +0,0 @@ - - - - AES256 - - - - BBBB; - - private $validXml1 = << - - - KMS - kms-id - - - BBBB; - - private $validXml2 = << - - - KMS - - - BBBB; - - private $invalidXml = << - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketEncryptionResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals("AES256", $config->getSSEAlgorithm()); - $this->assertEquals("", $config->getKMSMasterKeyID()); - - - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new GetBucketEncryptionResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals("KMS", $config->getSSEAlgorithm()); - $this->assertEquals("kms-id", $config->getKMSMasterKeyID()); - - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new GetBucketEncryptionResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals("KMS", $config->getSSEAlgorithm()); - $this->assertEquals(null, $config->getKMSMasterKeyID()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new GetBucketEncryptionResult($response); - $config = $result->getData(); - $this->assertEquals(null, $config->getSSEAlgorithm()); - $this->assertEquals(null, $config->getKMSMasterKeyID()); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new GetBucketEncryptionResult($response); - $config = $result->getData(); - $this->assertEquals(null, $config->getSSEAlgorithm()); - $this->assertEquals(null, $config->getKMSMasterKeyID()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketRequestPaymentResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketRequestPaymentResultTest.php deleted file mode 100644 index 2de08be6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketRequestPaymentResultTest.php +++ /dev/null @@ -1,66 +0,0 @@ - - - Requester - - BBBB; - - private $validXml2 = << - - BucketOwner - - BBBB; - - private $invalidXml = << - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketRequestPaymentResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $payer = $result->getData(); - $this->assertEquals("Requester", $payer); - - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new GetBucketRequestPaymentResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $payer = $result->getData(); - $this->assertEquals("BucketOwner", $payer); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new GetBucketRequestPaymentResult($response); - $payer = $result->getData(); - $this->assertEquals(null, $payer); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new GetBucketRequestPaymentResult($response); - $payer = $result->getData(); - $this->assertEquals(null, $payer); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketStatResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketStatResultTest.php deleted file mode 100644 index 74cb04ab..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketStatResultTest.php +++ /dev/null @@ -1,85 +0,0 @@ - - - 1600 - 230 - 40 - 4 - 1643341269 - 430 - 66 - 2359296 - 360 - 54 - 2949120 - 450 - 74 - 2359296 - 360 - 36 - -BBBB; - -private $invalidXml = << - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketStatResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $stat = $result->getData(); - $this->assertEquals(1600, $stat->getStorage()); - $this->assertEquals(230, $stat->getObjectCount()); - $this->assertEquals(40, $stat->getMultipartUploadCount()); - $this->assertEquals(4, $stat->getLiveChannelCount()); - $this->assertEquals(1643341269, $stat->getLastModifiedTime()); - $this->assertEquals(430, $stat->getStandardStorage()); - $this->assertEquals(66, $stat->getStandardObjectCount()); - $this->assertEquals(2359296, $stat->getInfrequentAccessStorage()); - $this->assertEquals(360, $stat->getInfrequentAccessRealStorage()); - $this->assertEquals(54, $stat->getInfrequentAccessObjectCount()); - $this->assertEquals(2949120, $stat->getArchiveStorage()); - $this->assertEquals(450, $stat->getArchiveRealStorage()); - $this->assertEquals(74, $stat->getArchiveObjectCount()); - $this->assertEquals(2359296, $stat->getColdArchiveStorage()); - $this->assertEquals(360, $stat->getColdArchiveRealStorage()); - $this->assertEquals(36, $stat->getColdArchiveObjectCount()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new GetBucketStatResult($response); - $stat = $result->getData(); - $this->assertEquals(0, $stat->getStorage()); - $this->assertEquals(0, $stat->getObjectCount()); - $this->assertEquals(0, $stat->getMultipartUploadCount()); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new GetBucketStatResult($response); - $stat = $result->getData(); - $this->assertEquals(0, $stat->getStorage()); - $this->assertEquals(0, $stat->getObjectCount()); - $this->assertEquals(0, $stat->getMultipartUploadCount()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTagsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTagsResultTest.php deleted file mode 100644 index f4b2a889..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTagsResultTest.php +++ /dev/null @@ -1,77 +0,0 @@ - - - - - testa - value1-test - - - testb - value2-test - - - - BBBB; - - private $invalidXml = << - - - BBBB; - - private $invalidXml2 = << - - - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketTagsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals(2, count($config->getTags())); - $this->assertEquals("testa", $config->getTags()[0]->getKey()); - $this->assertEquals("value1-test", $config->getTags()[0]->getValue()); - $this->assertEquals("testb", $config->getTags()[1]->getKey()); - $this->assertEquals("value2-test", $config->getTags()[1]->getValue()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new GetBucketTagsResult($response); - $config = $result->getData(); - $this->assertEquals(0, count($config->getTags())); - - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new GetBucketTagsResult($response); - $config = $result->getData(); - $this->assertEquals(0, count($config->getTags())); - - $response = new ResponseCore(array(), $this->invalidXml2, 200); - $result = new GetBucketTagsResult($response); - $config = $result->getData(); - $this->assertEquals(0, count($config->getTags())); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTransferAccelerationResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTransferAccelerationResultTest.php deleted file mode 100644 index 56a3dd4c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketTransferAccelerationResultTest.php +++ /dev/null @@ -1,61 +0,0 @@ - -true - -BBBB; - private $validXml1 = << -false - -BBBB; - - private $invalidXml2 = << - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketTransferAccelerationResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $enabled = $result->getData(); - $this->assertEquals(true, $enabled); - } - - public function testParseValidXml1() - { - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new GetBucketTransferAccelerationResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $enabled = $result->getData(); - $this->assertEquals(false, $enabled); - } - - public function testParseInvalidXml2() - { - $response = new ResponseCore(array(), $this->invalidXml2, 200); - $result = new GetBucketTransferAccelerationResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $this->assertNotNull($result->getRawResponse()->body); - $enabled = $result->getData(); - $this->assertEquals(false, $enabled); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketWormResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketWormResultTest.php deleted file mode 100644 index 4d5d9129..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetBucketWormResultTest.php +++ /dev/null @@ -1,84 +0,0 @@ - - - ID1 - Locked - 1 - 2018-08-14T15:50:32 - - BBBB; - - private $validXml2 = << - - ID2 - InProgress - 10 - 2018-09-14T15:50:32 - - BBBB; - - private $invalidXml = << - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetBucketWormResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals("ID1", $config->getWormId()); - $this->assertEquals("Locked", $config->getState()); - $this->assertEquals(1, $config->getDay()); - $this->assertEquals("2018-08-14T15:50:32", $config->getCreationDate()); - - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new GetBucketWormResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $config = $result->getData(); - $this->assertEquals("ID2", $config->getWormId()); - $this->assertEquals("InProgress", $config->getState()); - $this->assertEquals(10, $config->getDay()); - $this->assertEquals("2018-09-14T15:50:32", $config->getCreationDate()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new GetBucketWormResult($response); - $config = $result->getData(); - $this->assertEquals("", $config->getWormId()); - $this->assertEquals("", $config->getState()); - $this->assertEquals(0, $config->getDay()); - $this->assertEquals("", $config->getCreationDate()); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new GetBucketWormResult($response); - $config = $result->getData(); - $this->assertEquals("", $config->getWormId()); - $this->assertEquals("", $config->getState()); - $this->assertEquals(0, $config->getDay()); - $this->assertEquals("", $config->getCreationDate()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetCorsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetCorsResultTest.php deleted file mode 100644 index 76d87dc2..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetCorsResultTest.php +++ /dev/null @@ -1,67 +0,0 @@ - - - -http://www.b.com -http://www.a.com -http://www.a.com -GET -PUT -POST -x-oss-test -x-oss-test2 -x-oss-test2 -x-oss-test3 -x-oss-test1 -x-oss-test1 -x-oss-test2 -10 - - -http://www.b.com -GET -x-oss-test -x-oss-test1 -110 - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetCorsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $corsConfig = $result->getData(); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($corsConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), $this->validXml, 300); - try { - $result = new GetCorsResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLifecycleResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLifecycleResultTest.php deleted file mode 100644 index e6d9a725..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLifecycleResultTest.php +++ /dev/null @@ -1,59 +0,0 @@ - - - -delete obsoleted files -obsoleted/ -Enabled -3 - - -delete temporary files -temporary/ -Enabled -2022-10-12T00:00:00.000Z -2022-10-12T00:00:00.000Z - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetLifecycleResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $lifecycleConfig = $result->getData(); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($lifecycleConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), $this->validXml, 300); - try { - $result = new GetLifecycleResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLoggingResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLoggingResultTest.php deleted file mode 100644 index 35f74366..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetLoggingResultTest.php +++ /dev/null @@ -1,51 +0,0 @@ - - - -TargetBucket -TargetPrefix - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetLoggingResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $loggingConfig = $result->getData(); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($loggingConfig->serializeToXml())); - $this->assertEquals("TargetBucket", $loggingConfig->getTargetBucket()); - $this->assertEquals("TargetPrefix", $loggingConfig->getTargetPrefix()); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), $this->validXml, 300); - try { - $result = new GetLoggingResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetRefererResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetRefererResultTest.php deleted file mode 100644 index 774aae95..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetRefererResultTest.php +++ /dev/null @@ -1,51 +0,0 @@ - - -true - -http://www.aliyun.com -https://www.aliyun.com -http://www.*.com -https://www.?.aliyuncs.com - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetRefererResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $refererConfig = $result->getData(); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($refererConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), $this->validXml, 300); - try { - $result = new GetRefererResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetWebsiteResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetWebsiteResultTest.php deleted file mode 100644 index d8533066..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/GetWebsiteResultTest.php +++ /dev/null @@ -1,50 +0,0 @@ - - - -index.html - - -errorDocument.html - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetWebsiteResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $websiteConfig = $result->getData(); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($websiteConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testInvalidResponse() - { - $response = new ResponseCore(array(), $this->validXml, 300); - try { - $result = new GetWebsiteResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HeaderResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HeaderResultTest.php deleted file mode 100644 index 9354422b..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HeaderResultTest.php +++ /dev/null @@ -1,23 +0,0 @@ - 'value'), "", 200); - $result = new HeaderResult($response); - $this->assertTrue($result->isOK()); - $this->assertTrue(is_array($result->getData())); - $data = $result->getData(); - $this->assertEquals($data['key'], 'value'); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HttpTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HttpTest.php deleted file mode 100644 index 989644cf..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/HttpTest.php +++ /dev/null @@ -1,77 +0,0 @@ -assertFalse($res->isOK()); - $this->assertTrue($res->isOK(500)); - } - - public function testGet() - { - $httpCore = new RequestCore("http://www.baidu.com"); - $httpResponse = $httpCore->send_request(); - $this->assertNotNull($httpResponse); - } - - public function testSetProxyAndTimeout() - { - $httpCore = new RequestCore("http://www.baidu.com"); - $httpCore->set_proxy("1.0.2.1:8888"); - $httpCore->connect_timeout = 1; - try { - $httpResponse = $httpCore->send_request(); - $this->assertTrue(false); - } catch (RequestCore_Exception $e) { - $this->assertTrue(true); - } - } - - public function testGetParseTrue() - { - $httpCore = new RequestCore("http://www.baidu.com"); - $httpCore->curlopts = array(CURLOPT_HEADER => true); - $url = $httpCore->send_request(true); - foreach ($httpCore->get_response_header() as $key => $value) { - $this->assertEquals($httpCore->get_response_header($key), $value); - } - $this->assertNotNull($url); - } - - public function testParseResponse() - { - $httpCore = new RequestCore("http://www.baidu.com"); - $response = $httpCore->send_request(); - $parsed = $httpCore->process_response(null, $response); - $this->assertNotNull($parsed); - } - - public function testExceptionGet() - { - $httpCore = null; - $exception = false; - try { - $httpCore = new RequestCore("http://www.notexistsitexx.com"); - $httpCore->set_body(""); - $httpCore->set_method("GET"); - $httpCore->connect_timeout = 10; - $httpCore->timeout = 10; - $res = $httpCore->send_request(); - } catch (RequestCore_Exception $e) { - $exception = true; - } - $this->assertTrue($exception); - } -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/InitiateMultipartUploadResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/InitiateMultipartUploadResultTest.php deleted file mode 100644 index 76b10a65..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/InitiateMultipartUploadResultTest.php +++ /dev/null @@ -1,47 +0,0 @@ - - - multipart_upload - multipart.data - 0004B9894A22E5B1888A1E29F8236E2D - -BBBB; - - private $invalidXml = << - - multipart_upload - multipart.data - -BBBB; - - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new InitiateMultipartUploadResult($response); - $this->assertEquals("0004B9894A22E5B1888A1E29F8236E2D", $result->getData()); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - try { - $result = new InitiateMultipartUploadResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LifecycleConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LifecycleConfigTest.php deleted file mode 100644 index 063e4364..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LifecycleConfigTest.php +++ /dev/null @@ -1,130 +0,0 @@ - - - -delete obsoleted files -obsoleted/ -Enabled -3 - - -delete temporary files -temporary/ -Enabled -2022-10-12T00:00:00.000Z -2022-10-12T00:00:00.000Z - - -BBBB; - - private $validLifecycle2 = << - -delete temporary files -temporary/ -Enabled -2022-10-12T00:00:00.000Z -2022-10-12T00:00:00.000Z - - -BBBB; - - private $nullLifecycle = << - -BBBB; - - public function testConstructValidConfig() - { - $lifecycleConfig = new LifecycleConfig(); - $actions = array(); - $actions[] = new LifecycleAction("Expiration", "Days", 3); - $lifecycleRule = new LifecycleRule("delete obsoleted files", "obsoleted/", "Enabled", $actions); - $lifecycleConfig->addRule($lifecycleRule); - $actions = array(); - $actions[] = new LifecycleAction("Expiration", "Date", '2022-10-12T00:00:00.000Z'); - $actions[] = new LifecycleAction("Expiration2", "Date", '2022-10-12T00:00:00.000Z'); - $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled", $actions); - $lifecycleConfig->addRule($lifecycleRule); - try { - $lifecycleConfig->addRule(null); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('lifecycleRule is null', $e->getMessage()); - } - $this->assertEquals($this->cleanXml(strval($lifecycleConfig)), $this->cleanXml($this->validLifecycle)); - } - - public function testParseValidXml() - { - $lifecycleConfig = new LifecycleConfig(); - $lifecycleConfig->parseFromXml($this->validLifecycle); - $this->assertEquals($this->cleanXml($lifecycleConfig->serializeToXml()), $this->cleanXml($this->validLifecycle)); - $this->assertEquals(2, count($lifecycleConfig->getRules())); - $rules = $lifecycleConfig->getRules(); - $this->assertEquals('delete temporary files', $rules[1]->getId()); - } - - public function testParseValidXml2() - { - $lifecycleConfig = new LifecycleConfig(); - $lifecycleConfig->parseFromXml($this->validLifecycle2); - $this->assertEquals($this->cleanXml($lifecycleConfig->serializeToXml()), $this->cleanXml($this->validLifecycle2)); - $this->assertEquals(1, count($lifecycleConfig->getRules())); - $rules = $lifecycleConfig->getRules(); - $this->assertEquals('delete temporary files', $rules[0]->getId()); - } - - public function testParseNullXml() - { - $lifecycleConfig = new LifecycleConfig(); - $lifecycleConfig->parseFromXml($this->nullLifecycle); - $this->assertEquals($this->cleanXml($lifecycleConfig->serializeToXml()), $this->cleanXml($this->nullLifecycle)); - $this->assertEquals(0, count($lifecycleConfig->getRules())); - } - - public function testLifecycleRule() - { - $lifecycleRule = new LifecycleRule("x", "x", "x", array('x')); - $lifecycleRule->setId("id"); - $lifecycleRule->setPrefix("prefix"); - $lifecycleRule->setStatus("Enabled"); - $lifecycleRule->setActions(array()); - - $this->assertEquals('id', $lifecycleRule->getId()); - $this->assertEquals('prefix', $lifecycleRule->getPrefix()); - $this->assertEquals('Enabled', $lifecycleRule->getStatus()); - $this->assertEmpty($lifecycleRule->getActions()); - } - - public function testLifecycleAction() - { - $action = new LifecycleAction('x', 'x', 'x'); - $this->assertEquals($action->getAction(), 'x'); - $this->assertEquals($action->getTimeSpec(), 'x'); - $this->assertEquals($action->getTimeValue(), 'x'); - $action->setAction('y'); - $action->setTimeSpec('y'); - $action->setTimeValue('y'); - $this->assertEquals($action->getAction(), 'y'); - $this->assertEquals($action->getTimeSpec(), 'y'); - $this->assertEquals($action->getTimeValue(), 'y'); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListBucketsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListBucketsResultTest.php deleted file mode 100644 index 634f97d3..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListBucketsResultTest.php +++ /dev/null @@ -1,167 +0,0 @@ - - - - ut_test_put_bucket - ut_test_put_bucket - - - - oss-cn-hangzhou-a - xz02tphky6fjfiuc0 - 2014-05-15T11:18:32.000Z - - - oss-cn-hangzhou-a - xz02tphky6fjfiuc1 - 2014-05-15T11:18:32.000Z - - - -BBBB; - - private $nullXml = << - - - ut_test_put_bucket - ut_test_put_bucket - - - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new ListBucketsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $bucketListInfo = $result->getData(); - $this->assertEquals(2, count($bucketListInfo->getBucketList())); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), $this->nullXml, 200); - $result = new ListBucketsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $bucketListInfo = $result->getData(); - $this->assertEquals(0, count($bucketListInfo->getBucketList())); - } - - public function test403() - { - $errorHeader = array( - 'x-oss-request-id' => '1a2b-3c4d' - ); - - $errorBody = <<< BBBB - - - NoSuchBucket - The specified bucket does not exist. - 566B870D207FB3044302EB0A - hello.oss-test.aliyun-inc.com - hello - - BBBB; - $response = new ResponseCore($errorHeader, $errorBody, 403); - try { - new ListBucketsResult($response); - } catch (OssException $e) { - $this->assertEquals( - $e->getMessage(), - 'NoSuchBucket: The specified bucket does not exist. RequestId: 1a2b-3c4d'); - $this->assertEquals($e->getHTTPStatus(), '403'); - $this->assertEquals($e->getRequestId(), '1a2b-3c4d'); - $this->assertEquals($e->getErrorCode(), 'NoSuchBucket'); - $this->assertEquals($e->getErrorMessage(), 'The specified bucket does not exist.'); - $this->assertEquals($e->getDetails(), $errorBody); - } - } - - public function testParseXml2() - { - $xml = << - - - ut_test_put_bucket - ut_test_put_bucket - - - - 2015-12-17T18:12:43.000Z - oss-cn-shanghai.aliyuncs.com - oss-cn-shanghai-internal.aliyuncs.com - oss-cn-shanghai - app-base-oss - cn-shanghai - Standard - - - 2014-12-25T11:21:04.000Z - oss-cn-hangzhou.aliyuncs.com - oss-cn-hangzhou-internal.aliyuncs.com - oss-cn-hangzhou - atestleo23 - cn-hangzhou - IA - - - 2014-12-25T11:21:04.000Z - oss-cn-hangzhou - atestleo23 - - - - BBBB; - - $response = new ResponseCore(array(), $xml, 200); - $result = new ListBucketsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $bucketListInfo = $result->getData(); - $this->assertEquals(3, count($bucketListInfo->getBucketList())); - $this->assertEquals("2015-12-17T18:12:43.000Z", $bucketListInfo->getBucketList()[0]->getCreateDate()); - $this->assertEquals("oss-cn-shanghai", $bucketListInfo->getBucketList()[0]->getLocation()); - $this->assertEquals("app-base-oss", $bucketListInfo->getBucketList()[0]->getName()); - $this->assertEquals("oss-cn-shanghai.aliyuncs.com", $bucketListInfo->getBucketList()[0]->getExtranetEndpoint()); - $this->assertEquals("oss-cn-shanghai-internal.aliyuncs.com", $bucketListInfo->getBucketList()[0]->getIntranetEndpoint()); - $this->assertEquals("cn-shanghai", $bucketListInfo->getBucketList()[0]->getRegion()); - $this->assertEquals("Standard", $bucketListInfo->getBucketList()[0]->getStorageClass()); - - $this->assertEquals("2014-12-25T11:21:04.000Z", $bucketListInfo->getBucketList()[1]->getCreateDate()); - $this->assertEquals("oss-cn-hangzhou", $bucketListInfo->getBucketList()[1]->getLocation()); - $this->assertEquals("atestleo23", $bucketListInfo->getBucketList()[1]->getName()); - $this->assertEquals("oss-cn-hangzhou.aliyuncs.com", $bucketListInfo->getBucketList()[1]->getExtranetEndpoint()); - $this->assertEquals("oss-cn-hangzhou-internal.aliyuncs.com", $bucketListInfo->getBucketList()[1]->getIntranetEndpoint()); - $this->assertEquals("cn-hangzhou", $bucketListInfo->getBucketList()[1]->getRegion()); - $this->assertEquals("IA", $bucketListInfo->getBucketList()[1]->getStorageClass()); - - $this->assertEquals("2014-12-25T11:21:04.000Z", $bucketListInfo->getBucketList()[2]->getCreateDate()); - $this->assertEquals("oss-cn-hangzhou", $bucketListInfo->getBucketList()[2]->getLocation()); - $this->assertEquals("atestleo23", $bucketListInfo->getBucketList()[2]->getName()); - $this->assertEquals(null, $bucketListInfo->getBucketList()[2]->getExtranetEndpoint()); - $this->assertEquals(null, $bucketListInfo->getBucketList()[2]->getIntranetEndpoint()); - $this->assertEquals(null, $bucketListInfo->getBucketList()[2]->getRegion()); - $this->assertEquals(null, $bucketListInfo->getBucketList()[2]->getStorageClass()); - - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListMultipartUploadResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListMultipartUploadResultTest.php deleted file mode 100644 index 88bd0a77..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListMultipartUploadResultTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - - oss-example - xx - 3 - oss.avi - 0004B99B8E707874FC2D692FA5D77D3F - x - xx - 1000 - false - - multipart.data - 0004B999EF518A1FE585B0C9360DC4C8 - 2012-02-23T04:18:23.000Z - - - multipart.data - 0004B999EF5A239BB9138C6227D69F95 - 2012-02-23T04:18:23.000Z - - - oss.avi - 0004B99B8E707874FC2D692FA5D77D3F - 2012-02-23T06:14:27.000Z - - -BBBB; - - private $validXmlWithEncodedKey = << - - oss-example - url - php%2Bkey-marker - 3 - php%2Bnext-key-marker - 0004B99B8E707874FC2D692FA5D77D3F - %2F - php%2Bprefix - 1000 - true - - php%2Bkey-1 - 0004B999EF518A1FE585B0C9360DC4C8 - 2012-02-23T04:18:23.000Z - - - php%2Bkey-2 - 0004B999EF5A239BB9138C6227D69F95 - 2012-02-23T04:18:23.000Z - - - php%2Bkey-3 - 0004B99B8E707874FC2D692FA5D77D3F - 2012-02-23T06:14:27.000Z - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new ListMultipartUploadResult($response); - $listMultipartUploadInfo = $result->getData(); - $this->assertEquals("oss-example", $listMultipartUploadInfo->getBucket()); - $this->assertEquals("xx", $listMultipartUploadInfo->getKeyMarker()); - $this->assertEquals(3, $listMultipartUploadInfo->getUploadIdMarker()); - $this->assertEquals("oss.avi", $listMultipartUploadInfo->getNextKeyMarker()); - $this->assertEquals("0004B99B8E707874FC2D692FA5D77D3F", $listMultipartUploadInfo->getNextUploadIdMarker()); - $this->assertEquals("x", $listMultipartUploadInfo->getDelimiter()); - $this->assertEquals("xx", $listMultipartUploadInfo->getPrefix()); - $this->assertEquals(1000, $listMultipartUploadInfo->getMaxUploads()); - $this->assertEquals("false", $listMultipartUploadInfo->getIsTruncated()); - $uploads = $listMultipartUploadInfo->getUploads(); - $this->assertEquals("multipart.data", $uploads[0]->getKey()); - $this->assertEquals("0004B999EF518A1FE585B0C9360DC4C8", $uploads[0]->getUploadId()); - $this->assertEquals("2012-02-23T04:18:23.000Z", $uploads[0]->getInitiated()); - } - - public function testParseValidXmlWithEncodedKey() - { - $response = new ResponseCore(array(), $this->validXmlWithEncodedKey, 200); - $result = new ListMultipartUploadResult($response); - $listMultipartUploadInfo = $result->getData(); - $this->assertEquals("oss-example", $listMultipartUploadInfo->getBucket()); - $this->assertEquals("php+key-marker", $listMultipartUploadInfo->getKeyMarker()); - $this->assertEquals("php+next-key-marker", $listMultipartUploadInfo->getNextKeyMarker()); - $this->assertEquals(3, $listMultipartUploadInfo->getUploadIdMarker()); - $this->assertEquals("0004B99B8E707874FC2D692FA5D77D3F", $listMultipartUploadInfo->getNextUploadIdMarker()); - $this->assertEquals("/", $listMultipartUploadInfo->getDelimiter()); - $this->assertEquals("php+prefix", $listMultipartUploadInfo->getPrefix()); - $this->assertEquals(1000, $listMultipartUploadInfo->getMaxUploads()); - $this->assertEquals("true", $listMultipartUploadInfo->getIsTruncated()); - $uploads = $listMultipartUploadInfo->getUploads(); - $this->assertEquals("php+key-1", $uploads[0]->getKey()); - $this->assertEquals("0004B999EF518A1FE585B0C9360DC4C8", $uploads[0]->getUploadId()); - $this->assertEquals("2012-02-23T04:18:23.000Z", $uploads[0]->getInitiated()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectVersionsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectVersionsResultTest.php deleted file mode 100644 index 8ddbdaa1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectVersionsResultTest.php +++ /dev/null @@ -1,215 +0,0 @@ - - - oss-example - - example - CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1**** - 100 - - false - - example - CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm**** - false - 2019-04-09T07:27:28.000Z - - 1234512528586**** - 12345125285864390 - - - - example - CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN**** - false - 2019-04-09T07:27:28.000Z - "250F8A0AE989679A22926A875F0A2****" - Normal - 93731 - Standard - - 1234512528586**** - 12345125285864390 - - - - pic.jpg - CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx**** - true - 2019-04-09T07:27:28.000Z - "3663F7B0B9D3153F884C821E7CF4****" - Normal - 574768 - IA - - 1234512528586**** - 12345125285864390 - - - - BBBB; - - private $validXml1 = << - - oss-example - - example - CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1**** - 100 - - false - - example - CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm**** - true - 2019-04-09T07:27:28.000Z - - 1234512528586**** - 12345125285864390 - - - - example-1 - CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm**** - 2019-04-09T07:27:28.000Z - - 1234512528586**** - 12345125285864390 - - - - example-2 - CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN**** - 2019-04-09T07:27:28.000Z - "250F8A0AE989679A22926A875F0A2****" - Normal - 93731 - Standard - - 1234512528586**** - 12345125285864390 - - - - BBBB; - - private $invalidXml = << - - - BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new ListObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(0, count($list->getPrefixList())); - $this->assertEquals(1, count($list->getDeleteMarkerList())); - $this->assertEquals(2, count($list->getObjectVersionList())); - - $this->assertEquals('oss-example', $list->getBucketName()); - $this->assertEquals('', $list->getPrefix()); - $this->assertEquals('example', $list->getKeyMarker()); - $this->assertEquals('CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1****', $list->getVersionIdMarker()); - $this->assertEquals(100, $list->getMaxKeys()); - $this->assertEquals('', $list->getDelimiter()); - $this->assertEquals('false', $list->getIsTruncated()); - - $deleteMarkerList = $list->getDeleteMarkerList(); - $this->assertEquals('example', $deleteMarkerList[0]->getKey()); - $this->assertEquals('CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****', $deleteMarkerList[0]->getVersionId()); - $this->assertEquals('false', $deleteMarkerList[0]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $deleteMarkerList[0]->getLastModified()); - - $objectVersionList = $list->getObjectVersionList(); - $this->assertEquals('example', $objectVersionList[0]->getKey()); - $this->assertEquals('CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN****', $objectVersionList[0]->getVersionId()); - $this->assertEquals('false', $objectVersionList[0]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $objectVersionList[0]->getLastModified()); - $this->assertEquals('"250F8A0AE989679A22926A875F0A2****"', $objectVersionList[0]->getETag()); - $this->assertEquals('Normal', $objectVersionList[0]->getType()); - $this->assertEquals(93731, $objectVersionList[0]->getSize()); - $this->assertEquals('Standard', $objectVersionList[0]->getStorageClass()); - - $this->assertEquals('pic.jpg', $objectVersionList[1]->getKey()); - $this->assertEquals('CAEQMxiBgMCZov2D0BYiIDY4MDllOTc2YmY5MjQxMzdiOGI3OTlhNTU0ODIx****', $objectVersionList[1]->getVersionId()); - $this->assertEquals('true', $objectVersionList[1]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $objectVersionList[1]->getLastModified()); - $this->assertEquals('"3663F7B0B9D3153F884C821E7CF4****"', $objectVersionList[1]->getETag()); - $this->assertEquals('Normal', $objectVersionList[1]->getType()); - $this->assertEquals(574768, $objectVersionList[1]->getSize()); - $this->assertEquals('IA', $objectVersionList[1]->getStorageClass()); - - - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new ListObjectVersionsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $list = $result->getData(); - $this->assertEquals(0, count($list->getPrefixList())); - $this->assertEquals(2, count($list->getDeleteMarkerList())); - $this->assertEquals(1, count($list->getObjectVersionList())); - - $this->assertEquals('oss-example', $list->getBucketName()); - $this->assertEquals('', $list->getPrefix()); - $this->assertEquals('example', $list->getKeyMarker()); - $this->assertEquals('CAEQMxiBgICbof2D0BYiIGRhZjgwMzJiMjA3MjQ0ODE5MWYxZDYwMzJlZjU1****', $list->getVersionIdMarker()); - $this->assertEquals(100, $list->getMaxKeys()); - $this->assertEquals('', $list->getDelimiter()); - $this->assertEquals('false', $list->getIsTruncated()); - - $deleteMarkerList = $list->getDeleteMarkerList(); - $this->assertEquals('example', $deleteMarkerList[0]->getKey()); - $this->assertEquals('CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****', $deleteMarkerList[0]->getVersionId()); - $this->assertEquals('true', $deleteMarkerList[0]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $deleteMarkerList[0]->getLastModified()); - - $this->assertEquals('example-1', $deleteMarkerList[1]->getKey()); - $this->assertEquals('CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****', $deleteMarkerList[1]->getVersionId()); - $this->assertEquals('', $deleteMarkerList[1]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $deleteMarkerList[1]->getLastModified()); - - $objectVersionList = $list->getObjectVersionList(); - $this->assertEquals('example-2', $objectVersionList[0]->getKey()); - $this->assertEquals('CAEQMxiBgMDNoP2D0BYiIDE3MWUxNzgxZDQxNTRiODI5OGYwZGMwNGY3MzZjN****', $objectVersionList[0]->getVersionId()); - $this->assertEquals('', $objectVersionList[0]->getIsLatest()); - $this->assertEquals('2019-04-09T07:27:28.000Z', $objectVersionList[0]->getLastModified()); - $this->assertEquals('"250F8A0AE989679A22926A875F0A2****"', $objectVersionList[0]->getETag()); - $this->assertEquals('Normal', $objectVersionList[0]->getType()); - $this->assertEquals(93731, $objectVersionList[0]->getSize()); - $this->assertEquals('Standard', $objectVersionList[0]->getStorageClass()); - } - - public function testParseNullXml() - { - $response = new ResponseCore(array(), "", 200); - $result = new ListObjectVersionsResult($response); - $list = $result->getData(); - $this->assertTrue(true); - } - - public function testParseInvalidXml() - { - $response = new ResponseCore(array(), $this->invalidXml, 200); - $result = new ListObjectVersionsResult($response); - $stat = $result->getData(); - $this->assertTrue(true); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsResultTest.php deleted file mode 100644 index c977ce71..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsResultTest.php +++ /dev/null @@ -1,151 +0,0 @@ - - - testbucket-hf - - - 1000 - / - false - - oss-php-sdk-test/ - - - test/ - - -BBBB; - - private $validXml2 = << - - testbucket-hf - oss-php-sdk-test/ - xx - 1000 - / - false - - oss-php-sdk-test/upload-test-object-name.txt - 2015-11-18T03:36:00.000Z - "89B9E567E7EB8815F2F7D41851F9A2CD" - Normal - 13115 - Standard - - cname_user - cname_user - - - -BBBB; - - private $validXmlWithEncodedKey = << - - testbucket-hf - url - php%2Fprefix - php%2Fmarker - php%2Fnext-marker - 1000 - %2F - true - - php/a%2Bb - 2015-11-18T03:36:00.000Z - "89B9E567E7EB8815F2F7D41851F9A2CD" - Normal - 13115 - Standard - - cname_user - cname_user - - - -BBBB; - - public function testParseValidXml1() - { - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new ListObjectsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(2, count($objectListInfo->getPrefixList())); - $this->assertEquals(0, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('', $objectListInfo->getPrefix()); - $this->assertEquals('', $objectListInfo->getMarker()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('false', $objectListInfo->getIsTruncated()); - $prefixes = $objectListInfo->getPrefixList(); - $this->assertEquals('oss-php-sdk-test/', $prefixes[0]->getPrefix()); - $this->assertEquals('test/', $prefixes[1]->getPrefix()); - } - - public function testParseValidXml2() - { - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new ListObjectsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(0, count($objectListInfo->getPrefixList())); - $this->assertEquals(1, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('oss-php-sdk-test/', $objectListInfo->getPrefix()); - $this->assertEquals('xx', $objectListInfo->getMarker()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('false', $objectListInfo->getIsTruncated()); - $objects = $objectListInfo->getObjectList(); - $this->assertEquals('oss-php-sdk-test/upload-test-object-name.txt', $objects[0]->getKey()); - $this->assertEquals('2015-11-18T03:36:00.000Z', $objects[0]->getLastModified()); - $this->assertEquals('"89B9E567E7EB8815F2F7D41851F9A2CD"', $objects[0]->getETag()); - $this->assertEquals('Normal', $objects[0]->getType()); - $this->assertEquals(13115, $objects[0]->getSize()); - $this->assertEquals('Standard', $objects[0]->getStorageClass()); - } - - public function testParseValidXmlWithEncodedKey() - { - $response = new ResponseCore(array(), $this->validXmlWithEncodedKey, 200); - $result = new ListObjectsResult($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(0, count($objectListInfo->getPrefixList())); - $this->assertEquals(1, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('php/prefix', $objectListInfo->getPrefix()); - $this->assertEquals('php/marker', $objectListInfo->getMarker()); - $this->assertEquals('php/next-marker', $objectListInfo->getNextMarker()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('true', $objectListInfo->getIsTruncated()); - $objects = $objectListInfo->getObjectList(); - $this->assertEquals('php/a+b', $objects[0]->getKey()); - $this->assertEquals('2015-11-18T03:36:00.000Z', $objects[0]->getLastModified()); - $this->assertEquals('"89B9E567E7EB8815F2F7D41851F9A2CD"', $objects[0]->getETag()); - $this->assertEquals('Normal', $objects[0]->getType()); - $this->assertEquals(13115, $objects[0]->getSize()); - $this->assertEquals('Standard', $objects[0]->getStorageClass()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsV2ResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsV2ResultTest.php deleted file mode 100644 index b072cd2e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListObjectsV2ResultTest.php +++ /dev/null @@ -1,154 +0,0 @@ - - - testbucket-hf - - - 1000 - / - false - - oss-php-sdk-test/ - - - test/ - - -BBBB; - - private $validXml2 = << - - testbucket-hf - oss-php-sdk-test/ - xx - 1000 - / - false - - oss-php-sdk-test/upload-test-object-name.txt - 2015-11-18T03:36:00.000Z - "89B9E567E7EB8815F2F7D41851F9A2CD" - Normal - 13115 - Standard - - 1 - -BBBB; - - private $validXmlWithEncodedKey = << - - testbucket-hf - url - php%2Fprefix - php%2Fmarker - 1gJiYw-- - CgJiYw-- - 1000 - %2F - true - - php/a%2Bb - 2015-11-18T03:36:00.000Z - "89B9E567E7EB8815F2F7D41851F9A2CD" - Normal - 13115 - Standard - - cname_user - cname_user - - - 1 - -BBBB; - - public function testParseValidXml1() - { - $response = new ResponseCore(array(), $this->validXml1, 200); - $result = new ListObjectsV2Result($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(2, count($objectListInfo->getPrefixList())); - $this->assertEquals(0, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('', $objectListInfo->getPrefix()); - $this->assertEquals('', $objectListInfo->getStartAfter()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('false', $objectListInfo->getIsTruncated()); - $this->assertEquals(0, $objectListInfo->getKeyCount()); - $prefixes = $objectListInfo->getPrefixList(); - $this->assertEquals('oss-php-sdk-test/', $prefixes[0]->getPrefix()); - $this->assertEquals('test/', $prefixes[1]->getPrefix()); - } - - public function testParseValidXml2() - { - $response = new ResponseCore(array(), $this->validXml2, 200); - $result = new ListObjectsV2Result($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(0, count($objectListInfo->getPrefixList())); - $this->assertEquals(1, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('oss-php-sdk-test/', $objectListInfo->getPrefix()); - $this->assertEquals('xx', $objectListInfo->getStartAfter()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('false', $objectListInfo->getIsTruncated()); - $this->assertEquals(1, $objectListInfo->getKeyCount()); - $objects = $objectListInfo->getObjectList(); - $this->assertEquals('oss-php-sdk-test/upload-test-object-name.txt', $objects[0]->getKey()); - $this->assertEquals('2015-11-18T03:36:00.000Z', $objects[0]->getLastModified()); - $this->assertEquals('"89B9E567E7EB8815F2F7D41851F9A2CD"', $objects[0]->getETag()); - $this->assertEquals('Normal', $objects[0]->getType()); - $this->assertEquals(13115, $objects[0]->getSize()); - $this->assertEquals('Standard', $objects[0]->getStorageClass()); - } - - public function testParseValidXmlWithEncodedKey() - { - $response = new ResponseCore(array(), $this->validXmlWithEncodedKey, 200); - $result = new ListObjectsV2Result($response); - $this->assertTrue($result->isOK()); - $this->assertNotNull($result->getData()); - $this->assertNotNull($result->getRawResponse()); - $objectListInfo = $result->getData(); - $this->assertEquals(0, count($objectListInfo->getPrefixList())); - $this->assertEquals(1, count($objectListInfo->getObjectList())); - $this->assertEquals('testbucket-hf', $objectListInfo->getBucketName()); - $this->assertEquals('php/prefix', $objectListInfo->getPrefix()); - $this->assertEquals('php/marker', $objectListInfo->getStartAfter()); - $this->assertEquals('CgJiYw--', $objectListInfo->getNextContinuationToken()); - $this->assertEquals('1gJiYw--', $objectListInfo->getContinuationToken()); - $this->assertEquals(1000, $objectListInfo->getMaxKeys()); - $this->assertEquals('/', $objectListInfo->getDelimiter()); - $this->assertEquals('true', $objectListInfo->getIsTruncated()); - $this->assertEquals(1, $objectListInfo->getKeyCount()); - $objects = $objectListInfo->getObjectList(); - $this->assertEquals('php/a+b', $objects[0]->getKey()); - $this->assertEquals('2015-11-18T03:36:00.000Z', $objects[0]->getLastModified()); - $this->assertEquals('"89B9E567E7EB8815F2F7D41851F9A2CD"', $objects[0]->getETag()); - $this->assertEquals('Normal', $objects[0]->getType()); - $this->assertEquals(13115, $objects[0]->getSize()); - $this->assertEquals('Standard', $objects[0]->getStorageClass()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListPartsResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListPartsResultTest.php deleted file mode 100644 index bdc61a29..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ListPartsResultTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - - multipart_upload - multipart.data - 0004B999EF5A239BB9138C6227D69F95 - 5 - 1000 - false - - 1 - 2012-02-23T07:01:34.000Z - "3349DC700140D7F86A078484278075A9" - 6291456 - - - 2 - 2012-02-23T07:01:12.000Z - "3349DC700140D7F86A078484278075A9" - 6291456 - - - 5 - 2012-02-23T07:02:03.000Z - "7265F4D211B56873A381D321F586E4A9" - 1024 - - -BBBB; - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new ListPartsResult($response); - $listPartsInfo = $result->getData(); - $this->assertEquals("multipart_upload", $listPartsInfo->getBucket()); - $this->assertEquals("multipart.data", $listPartsInfo->getKey()); - $this->assertEquals("0004B999EF5A239BB9138C6227D69F95", $listPartsInfo->getUploadId()); - $this->assertEquals(5, $listPartsInfo->getNextPartNumberMarker()); - $this->assertEquals(1000, $listPartsInfo->getMaxParts()); - $this->assertEquals("false", $listPartsInfo->getIsTruncated()); - $this->assertEquals(3, count($listPartsInfo->getListPart())); - $parts = $listPartsInfo->getListPart(); - $this->assertEquals(1, $parts[0]->getPartNumber()); - $this->assertEquals('2012-02-23T07:01:34.000Z', $parts[0]->getLastModified()); - $this->assertEquals('"3349DC700140D7F86A078484278075A9"', $parts[0]->getETag()); - $this->assertEquals(6291456, $parts[0]->getSize()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LiveChannelXmlTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LiveChannelXmlTest.php deleted file mode 100644 index b69ef7cb..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LiveChannelXmlTest.php +++ /dev/null @@ -1,277 +0,0 @@ - - - xxx - enabled - - hls - 1000 - 5 - hello.m3u8 - - -BBBB; - - private $info = << - - live-1 - xxx - - rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/213443245345 - - - http://bucket.oss-cn-hangzhou.aliyuncs.com/213443245345/播放列表.m3u8 - - enabled - 2015-11-24T14:25:31.000Z - -BBBB; - - private $list = << - -xxx - yyy - 100 - false - 121312132 - - 12123214323431 - xxx - - rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/1 - - - http://bucket.oss-cn-hangzhou.aliyuncs.com/1/播放列表.m3u8 - - enabled - 2015-11-24T14:25:31.000Z - - - 432423432423 - yyy - - rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/2 - - - http://bucket.oss-cn-hangzhou.aliyuncs.com/2/播放列表.m3u8 - - enabled - 2016-11-24T14:25:31.000Z - - -BBBB; - - private $status = << - - Live - 2016-10-20T14:25:31.000Z - 10.1.2.4:47745 - - - -BBBB; - - private $history = << - - - 2013-11-24T14:25:31.000Z - 2013-11-24T15:25:31.000Z - 10.101.194.148:56861 - - - 2014-11-24T14:25:31.000Z - 2014-11-24T15:25:31.000Z - 10.101.194.148:56862 - - - 2015-11-24T14:25:31.000Z - 2015-11-24T15:25:31.000Z - 10.101.194.148:56863 - - -BBBB; - - public function testLiveChannelStatus() - { - $stat = new GetLiveChannelStatus(); - $stat->parseFromXml($this->status); - - $this->assertEquals('Live', $stat->getStatus()); - $this->assertEquals('2016-10-20T14:25:31.000Z', $stat->getConnectedTime()); - $this->assertEquals('10.1.2.4:47745', $stat->getRemoteAddr()); - - $this->assertEquals(1280, $stat->getVideoWidth()); - $this->assertEquals(536, $stat->getVideoHeight()); - $this->assertEquals(24, $stat->getVideoFrameRate()); - $this->assertEquals(72513, $stat->getVideoBandwidth()); - $this->assertEquals('H264', $stat->getVideoCodec()); - $this->assertEquals(6519, $stat->getAudioBandwidth()); - $this->assertEquals(44100, $stat->getAudioSampleRate()); - $this->assertEquals('AAC', $stat->getAudioCodec()); - - } - - public function testGetLiveChannelHistory() - { - $history = new GetLiveChannelHistory(); - $history->parseFromXml($this->history); - - $recordList = $history->getLiveRecordList(); - $this->assertEquals(3, count($recordList)); - - $list0 = $recordList[0]; - $this->assertEquals('2013-11-24T14:25:31.000Z', $list0->getStartTime()); - $this->assertEquals('2013-11-24T15:25:31.000Z', $list0->getEndTime()); - $this->assertEquals('10.101.194.148:56861', $list0->getRemoteAddr()); - - $list1 = $recordList[1]; - $this->assertEquals('2014-11-24T14:25:31.000Z', $list1->getStartTime()); - $this->assertEquals('2014-11-24T15:25:31.000Z', $list1->getEndTime()); - $this->assertEquals('10.101.194.148:56862', $list1->getRemoteAddr()); - - $list2 = $recordList[2]; - $this->assertEquals('2015-11-24T14:25:31.000Z', $list2->getStartTime()); - $this->assertEquals('2015-11-24T15:25:31.000Z', $list2->getEndTime()); - $this->assertEquals('10.101.194.148:56863', $list2->getRemoteAddr()); - - } - - public function testLiveChannelConfig() - { - $config = new LiveChannelConfig(array('name' => 'live-1')); - $config->parseFromXml($this->config); - - $this->assertEquals('xxx', $config->getDescription()); - $this->assertEquals('enabled', $config->getStatus()); - $this->assertEquals('hls', $config->getType()); - $this->assertEquals(1000, $config->getFragDuration()); - $this->assertEquals(5, $config->getFragCount()); - $this->assertEquals('hello.m3u8', $config->getPlayListName()); - - $xml = $config->serializeToXml(); - $config2 = new LiveChannelConfig(array('name' => 'live-2')); - $config2->parseFromXml($xml); - $this->assertEquals('xxx', $config2->getDescription()); - $this->assertEquals('enabled', $config2->getStatus()); - $this->assertEquals('hls', $config2->getType()); - $this->assertEquals(1000, $config2->getFragDuration()); - $this->assertEquals(5, $config2->getFragCount()); - $this->assertEquals('hello.m3u8', $config2->getPlayListName()); - } - - public function testLiveChannelInfo() - { - $info = new LiveChannelInfo(array('name' => 'live-1')); - $info->parseFromXml($this->info); - - $this->assertEquals('live-1', $info->getName()); - $this->assertEquals('xxx', $info->getDescription()); - $this->assertEquals('enabled', $info->getStatus()); - $this->assertEquals('2015-11-24T14:25:31.000Z', $info->getLastModified()); - $pubs = $info->getPublishUrls(); - $this->assertEquals(1, count($pubs)); - $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/213443245345', $pubs[0]); - - $plays = $info->getPlayUrls(); - $this->assertEquals(1, count($plays)); - $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/213443245345/播放列表.m3u8', $plays[0]); - } - - public function testLiveChannelList() - { - $list = new LiveChannelListInfo(); - $list->parseFromXml($this->list); - - $this->assertEquals('xxx', $list->getPrefix()); - $this->assertEquals('yyy', $list->getMarker()); - $this->assertEquals(100, $list->getMaxKeys()); - $this->assertEquals(false, $list->getIsTruncated()); - $this->assertEquals('121312132', $list->getNextMarker()); - - $channels = $list->getChannelList(); - $this->assertEquals(2, count($channels)); - - $chan1 = $channels[0]; - $this->assertEquals('12123214323431', $chan1->getName()); - $this->assertEquals('xxx', $chan1->getDescription()); - $this->assertEquals('enabled', $chan1->getStatus()); - $this->assertEquals('2015-11-24T14:25:31.000Z', $chan1->getLastModified()); - $pubs = $chan1->getPublishUrls(); - $this->assertEquals(1, count($pubs)); - $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/1', $pubs[0]); - - $plays = $chan1->getPlayUrls(); - $this->assertEquals(1, count($plays)); - $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/1/播放列表.m3u8', $plays[0]); - - $chan2 = $channels[1]; - $this->assertEquals('432423432423', $chan2->getName()); - $this->assertEquals('yyy', $chan2->getDescription()); - $this->assertEquals('enabled', $chan2->getStatus()); - $this->assertEquals('2016-11-24T14:25:31.000Z', $chan2->getLastModified()); - $pubs = $chan2->getPublishUrls(); - $this->assertEquals(1, count($pubs)); - $this->assertEquals('rtmp://bucket.oss-cn-hangzhou.aliyuncs.com/live/2', $pubs[0]); - - $plays = $chan2->getPlayUrls(); - $this->assertEquals(1, count($plays)); - $this->assertEquals('http://bucket.oss-cn-hangzhou.aliyuncs.com/2/播放列表.m3u8', $plays[0]); - } - - public function testLiveChannelHistory() - { - $xml = "2013-11-24T14:25:31.000Z2013-11-24T15:25:31.000Z10.101.194.148:56861"; - $history = new LiveChannelHistory(); - $history->parseFromXml($xml); - - $this->assertEquals('2013-11-24T14:25:31.000Z', $history->getStartTime()); - $this->assertEquals('2013-11-24T15:25:31.000Z', $history->getEndTime()); - $this->assertEquals('10.101.194.148:56861', $history->getRemoteAddr()); - } - - public function testGetLiveChannelHistorySerializeToXml() - { - try { - $history = new GetLiveChannelHistory (); - $history->serializeToXml(); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "Not implemented.") == false) - { - $this->assertTrue(false); - } - } - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LoggingConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LoggingConfigTest.php deleted file mode 100644 index 05336c81..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/LoggingConfigTest.php +++ /dev/null @@ -1,47 +0,0 @@ - - - -TargetBucket -TargetPrefix - - -BBBB; - - private $nullXml = << - -BBBB; - - public function testParseValidXml() - { - $loggingConfig = new LoggingConfig(); - $loggingConfig->parseFromXml($this->validXml); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml(strval($loggingConfig))); - } - - public function testConstruct() - { - $loggingConfig = new LoggingConfig('TargetBucket', 'TargetPrefix'); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($loggingConfig->serializeToXml())); - } - - public function testFailedConstruct() - { - $loggingConfig = new LoggingConfig('TargetBucket', null); - $this->assertEquals($this->cleanXml($this->nullXml), $this->cleanXml($loggingConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/MimeTypesTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/MimeTypesTest.php deleted file mode 100644 index 1403d09a..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/MimeTypesTest.php +++ /dev/null @@ -1,13 +0,0 @@ -assertEquals('application/xml', MimeTypes::getMimetype('file.xml')); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ObjectAclTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ObjectAclTest.php deleted file mode 100644 index 9260a6a5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/ObjectAclTest.php +++ /dev/null @@ -1,28 +0,0 @@ -ossClient; - $bucket = $this->bucket; - - $object = 'test/object-acl'; - $client->deleteObject($bucket, $object); - $client->putObject($bucket, $object, "hello world"); - - $acl = $client->getObjectAcl($bucket, $object); - $this->assertEquals('default', $acl); - - $client->putObjectAcl($bucket, $object, 'public-read'); - $acl = $client->getObjectAcl($bucket, $object); - $this->assertEquals('public-read', $acl); - - $content = $client->getObject($bucket, $object); - $this->assertEquals('hello world', $content); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCnameTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCnameTest.php deleted file mode 100644 index dabe93f8..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCnameTest.php +++ /dev/null @@ -1,61 +0,0 @@ -bucket . '-cname'; - $client = new OssClient( - getenv('OSS_ACCESS_KEY_ID'), - getenv('OSS_ACCESS_KEY_SECRET'), - "oss-ap-southeast-2.aliyuncs.com", false); - - $client->createBucket($bucketName); - - try { - $info1 = $client->createBucketCnameToken($bucketName, "www.example.com"); - $this->assertEquals("www.example.com", $info1->getCname()); - $this->assertEquals($bucketName, $info1->getBucket()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $info2 = $client->getBucketCnameToken($bucketName, "www.example.com"); - $this->assertEquals("www.example.com", $info2->getCname()); - $this->assertEquals($bucketName, $info2->getBucket()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $result = $client->addBucketCname($bucketName, "www.example.com"); - } catch (OssException $e) { - $this->assertEquals('NeedVerifyDomainOwnership', $e->getErrorCode()); - } - - try { - $config = $client->getBucketCname($bucketName); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $result = $client->deleteBucketCname($bucketName, "www.example.com"); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $client->deleteBucket($bucketName); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCorsTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCorsTest.php deleted file mode 100644 index a32154b5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketCorsTest.php +++ /dev/null @@ -1,84 +0,0 @@ -addAllowedHeader("x-oss-test"); - $rule->addAllowedHeader("x-oss-test2"); - $rule->addAllowedHeader("x-oss-test2"); - $rule->addAllowedHeader("x-oss-test3"); - $rule->addAllowedOrigin("http://www.b.com"); - $rule->addAllowedOrigin("http://www.a.com"); - $rule->addAllowedOrigin("http://www.a.com"); - $rule->addAllowedMethod("GET"); - $rule->addAllowedMethod("PUT"); - $rule->addAllowedMethod("POST"); - $rule->addExposeHeader("x-oss-test1"); - $rule->addExposeHeader("x-oss-test1"); - $rule->addExposeHeader("x-oss-test2"); - $rule->setMaxAgeSeconds(10); - $corsConfig->addRule($rule); - $rule = new CorsRule(); - $rule->addAllowedHeader("x-oss-test"); - $rule->addAllowedMethod("GET"); - $rule->addAllowedOrigin("http://www.b.com"); - $rule->addExposeHeader("x-oss-test1"); - $rule->setMaxAgeSeconds(110); - $corsConfig->addRule($rule); - - try { - $this->ossClient->putBucketCors($this->bucket, $corsConfig); - } catch (OssException $e) { - $this->assertFalse(True); - } - - try { - Common::waitMetaSync(); - $object = "cors/test.txt"; - $this->ossClient->putObject($this->bucket, $object, file_get_contents(__FILE__)); - $headers = $this->ossClient->optionsObject($this->bucket, $object, "http://www.a.com", "GET", "", null); - $this->assertNotEmpty($headers); - } catch (OssException $e) { - var_dump($e->getMessage()); - } - - try { - Common::waitMetaSync(); - $corsConfig2 = $this->ossClient->getBucketCors($this->bucket); - $this->assertNotNull($corsConfig2); - $this->assertEquals($corsConfig->serializeToXml(), $corsConfig2->serializeToXml()); - } catch (OssException $e) { - $this->assertFalse(True); - } - - try { - Common::waitMetaSync(); - $this->ossClient->deleteBucketCors($this->bucket); - } catch (OssException $e) { - $this->assertFalse(True); - } - - try { - Common::waitMetaSync(); - $corsConfig3 = $this->ossClient->getBucketCors($this->bucket); - $this->assertNotNull($corsConfig3); - $this->assertNotEquals($corsConfig->serializeToXml(), $corsConfig3->serializeToXml()); - } catch (OssException $e) { - $this->assertFalse(True); - } - - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketEncryptionTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketEncryptionTest.php deleted file mode 100644 index 42c51b29..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketEncryptionTest.php +++ /dev/null @@ -1,63 +0,0 @@ -ossClient->putBucketEncryption($this->bucket, $config); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $config2 = $this->ossClient->getBucketEncryption($this->bucket); - $this->assertEquals($config->serializeToXml(), $config2->serializeToXml()); - $this->assertEquals("AES256", $config2->getSSEAlgorithm()); - $this->assertEquals(null, $config2->getKMSMasterKeyID()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $config = new ServerSideEncryptionConfig("KMS", "kms-id"); - try { - $this->ossClient->putBucketEncryption($this->bucket, $config); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $config2 = $this->ossClient->getBucketEncryption($this->bucket); - $this->assertEquals($config->serializeToXml(), $config2->serializeToXml()); - $this->assertEquals("KMS", $config2->getSSEAlgorithm()); - $this->assertEquals("kms-id", $config2->getKMSMasterKeyID()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $this->ossClient->deleteBucketEncryption($this->bucket); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $config2 = $this->ossClient->getBucketEncryption($this->bucket); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals("NoSuchServerSideEncryptionRule", $e->getErrorCode()); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketInfoTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketInfoTest.php deleted file mode 100644 index 759e536c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketInfoTest.php +++ /dev/null @@ -1,20 +0,0 @@ -ossClient->getBucketInfo($this->bucket); - $this->assertEquals($this->bucket, $info->getName()); - $this->assertEquals("Standard", $info->getStorageClass()); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLifecycleTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLifecycleTest.php deleted file mode 100644 index 46da1f06..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLifecycleTest.php +++ /dev/null @@ -1,57 +0,0 @@ -addRule($lifecycleRule); - $actions = array(); - $actions[] = new LifecycleAction("Expiration", "Date", '2022-10-12T00:00:00.000Z'); - $lifecycleRule = new LifecycleRule("delete temporary files", "temporary/", "Enabled", $actions); - $lifecycleConfig->addRule($lifecycleRule); - - try { - $this->ossClient->putBucketLifecycle($this->bucket, $lifecycleConfig); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $lifecycleConfig2 = $this->ossClient->getBucketLifecycle($this->bucket); - $this->assertEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig2->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $this->ossClient->deleteBucketLifecycle($this->bucket); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $lifecycleConfig3 = $this->ossClient->getBucketLifecycle($this->bucket); - $this->assertNotEquals($lifecycleConfig->serializeToXml(), $lifecycleConfig3->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLoggingTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLoggingTest.php deleted file mode 100644 index 16a10ebf..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketLoggingTest.php +++ /dev/null @@ -1,43 +0,0 @@ -bucket, 'prefix'); - try { - $this->ossClient->putBucketLogging($this->bucket, $this->bucket, 'prefix'); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $loggingConfig2 = $this->ossClient->getBucketLogging($this->bucket); - $this->assertEquals($loggingConfig->serializeToXml(), $loggingConfig2->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $this->ossClient->deleteBucketLogging($this->bucket); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $loggingConfig3 = $this->ossClient->getBucketLogging($this->bucket); - $this->assertNotEquals($loggingConfig->serializeToXml(), $loggingConfig3->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketPolicyTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketPolicyTest.php deleted file mode 100644 index 4f0c5ee6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketPolicyTest.php +++ /dev/null @@ -1,47 +0,0 @@ -ossClient->deleteBucketPolicy($this->bucket); - $policy = $this->ossClient->getBucketPolicy($this->bucket); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - $this->assertEquals("NoSuchBucketPolicy", $e->getErrorCode()); - } - - try { - $this->ossClient->putBucketPolicy($this->bucket, $policy_str); - $policy = $this->ossClient->getBucketPolicy($this->bucket); - $this->assertEquals($policy_str, $policy); - $this->ossClient->deleteBucketPolicy($this->bucket); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRefererTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRefererTest.php deleted file mode 100644 index ba7d14f5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRefererTest.php +++ /dev/null @@ -1,48 +0,0 @@ -addReferer('http://www.aliyun.com'); - - try { - $this->ossClient->putBucketReferer($this->bucket, $refererConfig); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $refererConfig2 = $this->ossClient->getBucketReferer($this->bucket); - $this->assertEquals($refererConfig->serializeToXml(), $refererConfig2->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $nullRefererConfig = new RefererConfig(); - $nullRefererConfig->setAllowEmptyReferer(false); - $this->ossClient->putBucketReferer($this->bucket, $nullRefererConfig); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $refererConfig3 = $this->ossClient->getBucketLogging($this->bucket); - $this->assertNotEquals($refererConfig->serializeToXml(), $refererConfig3->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRequestPaymentTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRequestPaymentTest.php deleted file mode 100644 index 9a4b412e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketRequestPaymentTest.php +++ /dev/null @@ -1,51 +0,0 @@ -ossClient->getBucketRequestPayment($this->bucket); - $this->assertEquals("BucketOwner", $payer); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketRequestPayment($this->bucket, "Requester"); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $payer = $this->ossClient->getBucketRequestPayment($this->bucket); - $this->assertEquals("Requester", $payer); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketRequestPayment($this->bucket, "BucketOwner"); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $payer = $this->ossClient->getBucketRequestPayment($this->bucket); - $this->assertEquals("BucketOwner", $payer); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStatTestTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStatTestTest.php deleted file mode 100644 index 7f847d8e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStatTestTest.php +++ /dev/null @@ -1,34 +0,0 @@ -ossClient->putObject($this->bucket, "name-1.txt", $content); - $this->ossClient->putObject($this->bucket, "name-2.txt", $content); - $this->ossClient->putObject($this->bucket, "name-3.txt", $content); - - $object = "multipart-test.txt"; - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - - Common::waitMetaSync(); - Common::waitMetaSync(); - Common::waitMetaSync(); - $stat = $this->ossClient->getBucketStat($this->bucket); - $this->assertEquals(3, $stat->getObjectCount()); - $this->assertEquals(15, $stat->getStorage()); - $this->assertEquals(1, $stat->getMultipartUploadCount()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStorageCapacityTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStorageCapacityTest.php deleted file mode 100644 index 87548f97..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketStorageCapacityTest.php +++ /dev/null @@ -1,56 +0,0 @@ -ossClient->getBucketStorageCapacity($this->bucket); - $this->assertEquals($storageCapacity, -1); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketStorageCapacity($this->bucket, 1000); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $storageCapacity = $this->ossClient->getBucketStorageCapacity($this->bucket); - $this->assertEquals($storageCapacity, 1000); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketStorageCapacity($this->bucket, 0); - - Common::waitMetaSync(); - - $storageCapacity = $this->ossClient->getBucketStorageCapacity($this->bucket); - $this->assertEquals($storageCapacity, 0); - - $this->ossClient->putObject($this->bucket, 'test-storage-capacity','test-content'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('Bucket storage exceed max storage capacity.',$e->getErrorMessage()); - } - - try { - $this->ossClient->putBucketStorageCapacity($this->bucket, -2); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals(400, $e->getHTTPStatus()); - $this->assertEquals('InvalidArgument', $e->getErrorCode()); - } - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTagsTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTagsTest.php deleted file mode 100644 index bafa64b5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTagsTest.php +++ /dev/null @@ -1,76 +0,0 @@ -ossClient->getBucketTags($this->bucket); - $this->assertEquals(0, count($config->getTags())); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $config->addTag(new Tag("key2", "value2")); - $config->addTag(new Tag("key3", "value3")); - $this->ossClient->putBucketTags($this->bucket, $config); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $config2 = $this->ossClient->getBucketTags($this->bucket); - $this->assertEquals(3, count($config2->getTags())); - $this->assertEquals("key1", $config2->getTags()[0]->getKey()); - $this->assertEquals("value1", $config2->getTags()[0]->getValue()); - $this->assertEquals("key2", $config2->getTags()[1]->getKey()); - $this->assertEquals("value2", $config2->getTags()[1]->getValue()); - $this->assertEquals("key3", $config2->getTags()[2]->getKey()); - $this->assertEquals("value3", $config2->getTags()[2]->getValue()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - - try { - Common::waitMetaSync(); - //del key1, key3 - $tags = array(); - $tags[] = new Tag("key1", "value1"); - $tags[] = new Tag("key3", "value3"); - - $this->ossClient->deleteBucketTags($this->bucket, $tags); - $config2 = $this->ossClient->getBucketTags($this->bucket); - $this->assertEquals(1, count($config2->getTags())); - $this->assertEquals("key2", $config2->getTags()[0]->getKey()); - $this->assertEquals("value2", $config2->getTags()[0]->getValue()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - - try { - Common::waitMetaSync(); - //del all - $this->ossClient->deleteBucketTags($this->bucket); - $config2 = $this->ossClient->getBucketTags($this->bucket); - $this->assertEquals(0, count($config2->getTags())); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php deleted file mode 100644 index 6bac445e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTest.php +++ /dev/null @@ -1,140 +0,0 @@ -ossClient->createBucket("s"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('"s"bucket name is invalid', $e->getMessage()); - } - } - - public function testBucketWithInvalidACL() - { - try { - $this->ossClient->createBucket($this->bucket, "invalid"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('invalid:acl is invalid(private,public-read,public-read-write)', $e->getMessage()); - } - } - - public function testBucket() - { - $this->ossClient->createBucket($this->bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); - - $bucketListInfo = $this->ossClient->listBuckets(); - $this->assertNotNull($bucketListInfo); - - $bucketList = $bucketListInfo->getBucketList(); - $this->assertTrue(is_array($bucketList)); - $this->assertGreaterThan(0, count($bucketList)); - - $this->ossClient->putBucketAcl($this->bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); - Common::waitMetaSync(); - $this->assertEquals($this->ossClient->getBucketAcl($this->bucket), OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); - - $this->assertTrue($this->ossClient->doesBucketExist($this->bucket)); - $this->assertFalse($this->ossClient->doesBucketExist($this->bucket . '-notexist')); - - $this->assertEquals($this->ossClient->getBucketLocation($this->bucket), Common::getRegion()); - - $res = $this->ossClient->getBucketMeta($this->bucket); - $this->assertEquals('200', $res['info']['http_code']); - $this->assertEquals(Common::getRegion(), $res['x-oss-bucket-region']); - } - - public function testCreateBucketWithStorageType() - { - $object = 'storage-object'; - - $this->ossClient->putObject($this->archiveBucket, $object,'testcontent'); - try { - $this->ossClient->getObject($this->archiveBucket, $object); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('403', $e->getHTTPStatus()); - $this->assertEquals('InvalidObjectState', $e->getErrorCode()); - } - - $this->ossClient->putObject($this->iaBucket, $object,'testcontent'); - $result = $this->ossClient->getObject($this->iaBucket, $object); - $this->assertEquals($result, 'testcontent'); - - $this->ossClient->putObject($this->bucket, $object,'testcontent'); - $result = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($result, 'testcontent'); - } - - public function testCreateBucketWithInvalidStorageType() - { - try { - $options = array( - OssClient::OSS_STORAGE => 'unknown' - ); - $this->ossClient->createBucket('bucket-name', OssClient::OSS_ACL_TYPE_PRIVATE, $options); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "storage name is invalid") == false) - { - $this->assertTrue(false); - } - } - } - - protected function setUp(): void - { - parent::setUp(); - - $this->iaBucket = 'ia-' . $this->bucket; - $this->archiveBucket = 'archive-' . $this->bucket; - $this->standardBucket = 'standard-' . $this->bucket; - - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA - ); - - $this->ossClient->createBucket($this->iaBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_ARCHIVE - ); - - $this->ossClient->createBucket($this->archiveBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_STANDARD - ); - - $this->ossClient->createBucket($this->standardBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - } - - protected function tearDown(): void - { - parent::tearDown(); - - $object = 'storage-object'; - - $this->ossClient->deleteObject($this->iaBucket, $object); - $this->ossClient->deleteObject($this->archiveBucket, $object); - $this->ossClient->deleteBucket($this->iaBucket); - $this->ossClient->deleteBucket($this->archiveBucket); - $this->ossClient->deleteBucket($this->standardBucket); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTransferAccelerationTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTransferAccelerationTest.php deleted file mode 100644 index 24c8b515..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketTransferAccelerationTest.php +++ /dev/null @@ -1,40 +0,0 @@ -ossClient->getBucketTransferAcceleration($this->bucket); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals("NoSuchTransferAccelerationConfiguration", $e->getErrorCode()); - } - - try { - $this->ossClient->putBucketTransferAcceleration($this->bucket, true); - Common::waitMetaSync(); - $status = $this->ossClient->getBucketTransferAcceleration($this->bucket); - $this->assertEquals(true, $status); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketTransferAcceleration($this->bucket, false); - Common::waitMetaSync(); - $status = $this->ossClient->getBucketTransferAcceleration($this->bucket); - $this->assertEquals(false, $status); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketVersioningTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketVersioningTest.php deleted file mode 100644 index d9aa5a4a..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketVersioningTest.php +++ /dev/null @@ -1,40 +0,0 @@ -ossClient->getBucketVersioning($this->bucket); - $this->assertEquals(null, $status); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketVersioning($this->bucket, "Enabled"); - Common::waitMetaSync(); - $status = $this->ossClient->getBucketVersioning($this->bucket); - $this->assertEquals("Enabled", $status); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->putBucketVersioning($this->bucket, "Suspended"); - Common::waitMetaSync(); - $status = $this->ossClient->getBucketVersioning($this->bucket); - $this->assertEquals("Suspended", $status); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWebsiteTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWebsiteTest.php deleted file mode 100644 index dfa9cc17..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWebsiteTest.php +++ /dev/null @@ -1,46 +0,0 @@ -ossClient->putBucketWebsite($this->bucket, $websiteConfig); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - - try { - Common::waitMetaSync(); - $websiteConfig2 = $this->ossClient->getBucketWebsite($this->bucket); - $this->assertEquals($websiteConfig->serializeToXml(), $websiteConfig2->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $this->ossClient->deleteBucketWebsite($this->bucket); - } catch (OssException $e) { - $this->assertTrue(false); - } - try { - Common::waitMetaSync(); - $websiteConfig3 = $this->ossClient->getBucketLogging($this->bucket); - $this->assertNotEquals($websiteConfig->serializeToXml(), $websiteConfig3->serializeToXml()); - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWormTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWormTest.php deleted file mode 100644 index 85df4174..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientBucketWormTest.php +++ /dev/null @@ -1,36 +0,0 @@ -ossClient->initiateBucketWorm($this->bucket, 30); - $config = $this->ossClient->getBucketWorm($this->bucket); - $this->assertEquals($wormId, $config->getWormId()); - $this->assertEquals("InProgress", $config->getState()); - $this->assertEquals(30, $config->getDay()); - $this->ossClient->abortBucketWorm($this->bucket); - - $wormId = $this->ossClient->initiateBucketWorm($this->bucket, 60); - $this->ossClient->completeBucketWorm($this->bucket, $wormId); - $config = $this->ossClient->getBucketWorm($this->bucket); - - $this->ossClient->ExtendBucketWorm($this->bucket, $wormId, 120); - $config = $this->ossClient->getBucketWorm($this->bucket); - $this->assertEquals($wormId, $config->getWormId()); - $this->assertEquals("Locked", $config->getState()); - $this->assertEquals(120, $config->getDay()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientImageTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientImageTest.php deleted file mode 100644 index 6def9f97..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientImageTest.php +++ /dev/null @@ -1,147 +0,0 @@ -client = $this->ossClient; - $this->bucketName = $this->bucket; - $this->local_file = "example.jpg"; - $this->object = "oss-example.jpg"; - $this->download_file = "image.jpg"; - - Common::waitMetaSync(); - $this->client->uploadFile($this->bucketName, $this->object, $this->local_file); - } - - protected function tearDown(): void - { - parent::tearDown(); - unlink($this->download_file); - } - - public function testImageResize() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100", ); - $this->check($options, 100, 100, 3267, 'jpg'); - } - - public function testImageCrop() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/crop,w_100,h_100,x_100,y_100,r_1", ); - $this->check($options, 100, 100, 1969, 'jpg'); - } - - public function testImageRotate() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/rotate,90", ); - $this->check($options, 267, 400, 20998, 'jpg'); - } - - public function testImageSharpen() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/sharpen,100", ); - $this->check($options, 400, 267, 23015, 'jpg'); - } - - public function testImageWatermark() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ", ); - $this->check($options, 400, 267, 26369, 'jpg'); - } - - public function testImageFormat() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/format,png", ); - $this->check($options, 400, 267, 160733, 'png'); - } - - public function testImageTofile() - { - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - OssClient::OSS_PROCESS => "image/resize,m_fixed,w_100,h_100", ); - $this->check($options, 100, 100, 3267, 'jpg'); - } - - public function testProcesObject() - { - $object = 'process-object.jpg'; - $process = 'image/resize,m_fixed,w_100,h_100'. - '|sys/saveas'. - ',o_'.$this->base64url_encode($object). - ',b_'.$this->base64url_encode($this->bucketName); - $result = $this->client->processObject($this->bucketName, $this->object, $process); - $this->assertTrue(stripos($result, '"object": "process-object.jpg",') > 0); - $this->assertTrue(stripos($result, '"status": "OK"') > 0); - - - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - ); - $this->client->getObject($this->bucketName, $object, $options); - $array = getimagesize($this->download_file); - $this->assertEquals(100, $array[0]); - $this->assertEquals(100, $array[1]); - $this->assertEquals(2, $array[2]); - - //without bucket - $object = 'process-object-1.jpg'; - $process = 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'. - '|sys/saveas'. - ',o_'.$this->base64url_encode($object); - $result = $this->client->processObject($this->bucketName, $this->object, $process); - $this->assertTrue(stripos($result, '"object": "process-object-1.jpg",') > 0); - $this->assertTrue(stripos($result, '"status": "OK"') > 0); - - - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $this->download_file, - ); - $this->client->getObject($this->bucketName, $object, $options); - $array = getimagesize($this->download_file); - $this->assertEquals(400, $array[0]); - $this->assertEquals(267, $array[1]); - $this->assertEquals(2, $array[2]); - } - - private function check($options, $width, $height, $size, $type) - { - $this->client->getObject($this->bucketName, $this->object, $options); - $array = getimagesize($this->download_file); - $this->assertEquals($width, $array[0]); - $this->assertEquals($height, $array[1]); - $this->assertEquals($type === 'jpg' ? 2 : 3, $array[2]);//2 <=> jpg - } - - private function base64url_encode($data) - { - return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsTest.php deleted file mode 100644 index 8ee47a2e..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsTest.php +++ /dev/null @@ -1,184 +0,0 @@ -ossClient->listObjects($this->bucket); - $objectList = $listObjectInfo->getObjectList(); - $prefixList = $listObjectInfo->getPrefixList(); - $this->assertNotNull($objectList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($objectList)); - $this->assertTrue(is_array($prefixList)); - $this->assertEquals((2), count($objectList)); - $this->assertEquals(4, count($prefixList)); - - $this->assertEquals('file++00', $objectList[0]->getKey()); - $this->assertEquals('file++01', $objectList[1]->getKey()); - - $this->assertEquals('folder/', $prefixList[0]->getPrefix()); - $this->assertEquals('sub++/', $prefixList[1]->getPrefix()); - $this->assertEquals('test/', $prefixList[2]->getPrefix()); - $this->assertEquals('work/', $prefixList[3]->getPrefix()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testListObjectsWithPrefix() - { - /** - * List the files in your bucket. - */ - $prefix = 'folder/'; - $delimiter = ''; - $next_marker = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'marker' => $next_marker, - ); - - try { - $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options); - $objectList = $listObjectInfo->getObjectList(); - $prefixList = $listObjectInfo->getPrefixList(); - $this->assertNotNull($objectList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($objectList)); - $this->assertTrue(is_array($prefixList)); - $this->assertEquals(12, count($objectList)); - $this->assertEquals(0, count($prefixList)); - - $this->assertEquals('folder/00', $objectList[0]->getKey()); - $this->assertEquals('folder/01', $objectList[1]->getKey()); - $this->assertEquals('folder/11', $objectList[11]->getKey()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testListObjectsWithMaxKeysAndMarker() - { - $count = 0; - $nextMarker = ''; - - while (true) { - try { - $options = array( - 'delimiter' => '', - 'marker' => $nextMarker, - 'max-keys' => 2, - ); - $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - $nextMarker = $listObjectInfo->getNextMarker(); - $listObject = $listObjectInfo->getObjectList(); - $count += count($listObject); - $this->assertEquals(2, count($listObject)); - if ($listObjectInfo->getIsTruncated() !== "true") { - break; - } - } - $this->assertEquals(12 + 8 + 5 + 3 + 2, $count); - } - - public function testListObjectsWithMarker() - { - $count = 0; - $nextMarker = 'h'; - - while (true) { - try { - $options = array( - 'delimiter' => '', - 'marker' => $nextMarker, - 'max-keys' => 1, - ); - $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - $nextMarker = $listObjectInfo->getNextMarker(); - $listObject = $listObjectInfo->getObjectList(); - $count += count($listObject); - $this->assertEquals(1, count($listObject)); - if ($listObjectInfo->getIsTruncated() !== "true") { - break; - } - } - $this->assertEquals(8 + 5 + 3, $count); - - - $nextMarker = 'h'; - - try { - $options = array( - 'delimiter' => '', - 'marker' => $nextMarker, - 'max-keys' => 5, - ); - $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - $nextMarker = $listObjectInfo->getNextMarker(); - $listObject = $listObjectInfo->getObjectList(); - $this->assertEquals('test/01', $nextMarker); - $this->assertEquals(5, count($listObject)); - $this->assertEquals("true", $listObjectInfo->getIsTruncated()); - } - - protected function setUp(): void - { - parent::setUp(); - //folder - for ($i = 0; $i < 12; $i++) { - $key = 'folder/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //test - for ($i = 0; $i < 8; $i++) { - $key = 'test/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //work - for ($i = 0; $i < 5; $i++) { - $key = 'work/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //sub++ - for ($i = 0; $i < 3; $i++) { - $key = 'sub++/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - - //file++ - for ($i = 0; $i < 2; $i++) { - $key = 'file++'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - - } - - protected function tearDown(): void - { - parent::tearDown(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsV2Test.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsV2Test.php deleted file mode 100644 index c913283f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientListObjectsV2Test.php +++ /dev/null @@ -1,175 +0,0 @@ -ossClient->putObject($this->bucket, $key, "content"); - } - //test - for ($i = 0; $i < 8; $i++) { - $key = 'test/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //work - for ($i = 0; $i < 5; $i++) { - $key = 'work/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //sub++ - for ($i = 0; $i < 3; $i++) { - $key = 'sub++/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - - //file++ - for ($i = 0; $i < 2; $i++) { - $key = 'file++'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - - } - - protected function tearDown(): void - { - parent::tearDown(); - } - public function testListObjectsDefault() - { - try { - $listObjectInfo = $this->ossClient->listObjectsV2($this->bucket); - $objectList = $listObjectInfo->getObjectList(); - $prefixList = $listObjectInfo->getPrefixList(); - $this->assertNotNull($objectList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($objectList)); - $this->assertTrue(is_array($prefixList)); - $this->assertEquals((2), count($objectList)); - $this->assertEquals(4, count($prefixList)); - - $this->assertEquals('file++00', $objectList[0]->getKey()); - $this->assertEquals('file++01', $objectList[1]->getKey()); - - $this->assertEquals('folder/', $prefixList[0]->getPrefix()); - $this->assertEquals('sub++/', $prefixList[1]->getPrefix()); - $this->assertEquals('test/', $prefixList[2]->getPrefix()); - $this->assertEquals('work/', $prefixList[3]->getPrefix()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - - public function testListObjectsWithPrefix() - { - /** - * List the files in your bucket. - */ - $prefix = 'folder/'; - $delimiter = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - ); - - try { - $listObjectInfo = $this->ossClient->listObjectsV2($this->bucket, $options); - $objectList = $listObjectInfo->getObjectList(); - $prefixList = $listObjectInfo->getPrefixList(); - $this->assertNotNull($objectList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($objectList)); - $this->assertTrue(is_array($prefixList)); - $this->assertEquals(12, count($objectList)); - $this->assertEquals(0, count($prefixList)); - - $this->assertEquals('folder/00', $objectList[0]->getKey()); - $this->assertEquals('folder/01', $objectList[1]->getKey()); - $this->assertEquals('folder/11', $objectList[11]->getKey()); - - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - - public function testListObjectsWithMaxKeysAndMarker() - { - $count = 0; - $options = array( - 'delimiter' => '', - 'max-keys' => 2, - ); - - while (true) { - try { - - $listObjectInfo = $this->ossClient->listObjectsV2($this->bucket, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - $options[OssClient::OSS_CONTINUATION_TOKEN] = $listObjectInfo->getNextContinuationToken(); - $listObject = $listObjectInfo->getObjectList(); - $count += count($listObject); - $this->assertEquals(2, count($listObject)); - if ($listObjectInfo->getIsTruncated() !== "true") { - break; - } - } - $this->assertEquals(12 + 8 + 5 + 3 + 2, $count); - } - - - public function testListObjectsWithStartAfter() - { - $count = 0; - $options = array( - 'delimiter' => '', - 'start-after' => 'folder/11', - 'max-keys' => 1, - ); - while (true) { - try { - $listObjectInfo = $this->ossClient->listObjectsV2($this->bucket, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - $options[OssClient::OSS_CONTINUATION_TOKEN] = $listObjectInfo->getNextContinuationToken(); - $listObject = $listObjectInfo->getObjectList(); - $count += count($listObject); - $this->assertEquals(1, count($listObject)); - if ($listObjectInfo->getIsTruncated() !== "true") { - break; - } - } - $this->assertEquals(8 + 5 + 3, $count); - $options2 = array( - 'delimiter' => '', - 'start-after' => 'folder/11', - 'max-keys' => 5, - ); - try { - $listObjectInfo = $this->ossClient->listObjectsV2($this->bucket, $options2); - } catch (OssException $e) { - $this->assertTrue(false); - } - $listObject = $listObjectInfo->getObjectList(); - $this->assertEquals(5, count($listObject)); - $this->assertEquals("true", $listObjectInfo->getIsTruncated()); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientMultipartUploadTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientMultipartUploadTest.php deleted file mode 100644 index 5a6c4584..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientMultipartUploadTest.php +++ /dev/null @@ -1,478 +0,0 @@ -ossClient->uploadDir($this->bucket, "", "abc/ds/s/s/notexitst"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals("parameter error: abc/ds/s/s/notexitst is not a directory, please check it", $e->getMessage()); - } - - } - - public function testMultipartUploadBigFile() - { - $bigFileName = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile.tmp"; - $localFilename = __DIR__ . DIRECTORY_SEPARATOR . "/localfile.tmp"; - OssUtil::generateFile($bigFileName, 6 * 1024 * 1024); - $object = 'mpu/multipart-bigfile-test.tmp'; - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, array(OssClient::OSS_PART_SIZE => 1)); - $options = array(OssClient::OSS_FILE_DOWNLOAD => $localFilename); - $this->ossClient->getObject($this->bucket, $object, $options); - $this->assertEquals(md5_file($bigFileName), md5_file($localFilename)); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertFalse(true); - } - unlink($bigFileName); - unlink($localFilename); - } - - public function testMultipartUploadBigFileWithMD5Check() - { - $bigFileName = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile.tmp"; - $localFilename = __DIR__ . DIRECTORY_SEPARATOR . "/localfile.tmp"; - OssUtil::generateFile($bigFileName, 6 * 1024 * 1024); - $object = 'mpu/multipart-bigfile-test.tmp'; - $options = array( - OssClient::OSS_CHECK_MD5 => true, - OssClient::OSS_PART_SIZE => 1, - ); - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, $options); - $options = array(OssClient::OSS_FILE_DOWNLOAD => $localFilename); - $this->ossClient->getObject($this->bucket, $object, $options); - $this->assertEquals(md5_file($bigFileName), md5_file($localFilename)); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertFalse(true); - } - unlink($bigFileName); - unlink($localFilename); - } - - public function testCopyPart() - { - $object = "mpu/multipart-test.txt"; - $copiedObject = "mpu/multipart-test.txt.copied"; - $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id); - $upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - - $this->assertEquals($this->ossClient->getObject($this->bucket, $object), file_get_contents(__FILE__)); - $this->assertEquals($this->ossClient->getObject($this->bucket, $copiedObject), file_get_contents(__FILE__)); - } - - public function testCopyPartWithRange() - { - $object = "mpu/multipart-test.txt"; - $copiedObject = "mpu/multipart-test.txt.range.copied"; - $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - /* - * step 2. uploadPartCopy - */ - $copyId = 1; - $options = array( - 'start' => 0, - 'end' => 3, - ); - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $copiedObject, $this->bucket, $object, $copyId, $upload_id, $options); - $upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertTrue(false); - } - - $this->assertEquals($this->ossClient->getObject($this->bucket, $copiedObject), file_get_contents(__FILE__)); - $this->assertEquals($this->ossClient->getObject($this->bucket, $object), 'ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - $part_size = 10 * 1024 * 1024; - $upload_file = __FILE__; - $upload_filesize = sprintf('%u',filesize($upload_file)); - $pieces = $this->ossClient->generateMultiuploadParts($upload_filesize, $part_size); - $response_upload_part = array(); - $upload_position = 0; - $is_check_md5 = true; - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece[OssClient::OSS_SEEK_TO]; - $to_pos = (integer)$piece[OssClient::OSS_LENGTH] + $from_pos - 1; - $up_options = array( - OssClient::OSS_FILE_UPLOAD => $upload_file, - OssClient::OSS_PART_NUM => ($i + 1), - OssClient::OSS_SEEK_TO => $from_pos, - OssClient::OSS_LENGTH => $to_pos - $from_pos + 1, - OssClient::OSS_CHECK_MD5 => $is_check_md5, - ); - if ($is_check_md5) { - $content_md5 = OssUtil::getMd5SumForFile($upload_file, $from_pos, $to_pos); - $up_options[OssClient::OSS_CONTENT_MD5] = $content_md5; - } - //2. 将每一分片上传到OSS - try { - $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - $upload_parts = array(); - foreach ($response_upload_part as $i => $eTag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $eTag, - ); - } - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id, array('max-parts' => 100)); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - $this->assertEquals(1, count($listPartsInfo->getListPart())); - - $numOfMultipartUpload1 = 0; - $options = null; - try { - $listMultipartUploadInfo = $listMultipartUploadInfo = $this->ossClient->listMultipartUploads($this->bucket, $options); - $this->assertNotNull($listMultipartUploadInfo); - $numOfMultipartUpload1 = count($listMultipartUploadInfo->getUploads()); - } catch (OssException $e) { - $this->assertFalse(true); - } - - try { - $this->ossClient->abortMultipartUpload($this->bucket, $object, $upload_id); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $numOfMultipartUpload2 = 0; - try { - $listMultipartUploadInfo = $listMultipartUploadInfo = $this->ossClient->listMultipartUploads($this->bucket, array('max-uploads' => 1000)); - $this->assertNotNull($listMultipartUploadInfo); - $numOfMultipartUpload2 = count($listMultipartUploadInfo->getUploads()); - } catch (OssException $e) { - $this->assertFalse(true); - } - $this->assertEquals($numOfMultipartUpload1 - 1, $numOfMultipartUpload2); - } - - public function testPutObjectByRawApis() - { - $object = "mpu/multipart-test.txt"; - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - $part_size = 10 * 1024 * 1024; - $upload_file = __FILE__; - $upload_filesize = sprintf('%u',filesize($upload_file)); - $pieces = $this->ossClient->generateMultiuploadParts($upload_filesize, $part_size); - $response_upload_part = array(); - $upload_position = 0; - $is_check_md5 = true; - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece[OssClient::OSS_SEEK_TO]; - $to_pos = (integer)$piece[OssClient::OSS_LENGTH] + $from_pos - 1; - $up_options = array( - OssClient::OSS_FILE_UPLOAD => $upload_file, - OssClient::OSS_PART_NUM => ($i + 1), - OssClient::OSS_SEEK_TO => $from_pos, - OssClient::OSS_LENGTH => $to_pos - $from_pos + 1, - OssClient::OSS_CHECK_MD5 => $is_check_md5, - ); - if ($is_check_md5) { - $content_md5 = OssUtil::getMd5SumForFile($upload_file, $from_pos, $to_pos); - $up_options[OssClient::OSS_CONTENT_MD5] = $content_md5; - } - //2. 将每一分片上传到OSS - try { - $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - $upload_parts = array(); - foreach ($response_upload_part as $i => $eTag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $eTag, - ); - } - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - /** - * step 3. - */ - try { - $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - function testPutObjectsByDir() - { - $localDirectory = dirname(__FILE__); - $prefix = "samples/codes"; - try { - $this->ossClient->uploadDir($this->bucket, $prefix, $localDirectory); - } catch (OssException $e) { - var_dump($e->getMessage()); - $this->assertFalse(true); - - } - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, 'samples/codes/' . "OssClientMultipartUploadTest.php")); - } - - public function testPutObjectByMultipartUpload() - { - $object = "mpu/multipart-test.txt"; - $file = __FILE__; - $options = array(); - - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); - $this->assertFalse(false); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testPutObjectByMultipartUploadWithMD5Check() - { - $object = "mpu/multipart-test.txt"; - $file = __FILE__; - $options = array(OssClient::OSS_CHECK_MD5 => true); - - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); - $this->assertFalse(false); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testPutObjectByMultipartUploadWithOSS_LENGTH() - { - $object = "mpu/multipart-test-length.txt"; - $file = __FILE__; - - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - $options = array(OssClient::OSS_LENGTH => 4, OssClient::OSS_UPLOAD_ID => $upload_id); - $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); - $this->assertEquals($this->ossClient->getObject($this->bucket, $object), 'assertFalse(true); - } - } - - public function testPutObjectByMultipartUploadWithOSS_CONTENT_LENGTH() - { - $object = "mpu/multipart-test-content-length.txt"; - $file = __FILE__; - - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - $options = array(OssClient::OSS_CONTENT_LENGTH => 4, OssClient::OSS_UPLOAD_ID => $upload_id); - $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); - $this->assertEquals($this->ossClient->getObject($this->bucket, $object), 'assertFalse(true); - } - } - - public function testPutObjectByMultipartUploadWithException() - { - $object = "mpu/multipart-test-exception.txt"; - $file = ""; - - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $file); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "parameter invalid, file is empty") == false) - { - $this->assertTrue(true); - } - } - } - - public function testListMultipartUploads() - { - $options = null; - try { - $listMultipartUploadInfo = $this->ossClient->listMultipartUploads($this->bucket, $options); - $this->assertNotNull($listMultipartUploadInfo); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testCompleteMultipartUploadWithException() - { - $object = "mpu/multipart-test-complete.txt"; - $uploadId = "uploadId"; - try { - $listMultipartUploadInfo = $this->ossClient->completeMultipartUpload($this->bucket, $object, $uploadId, null); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('NoSuchUpload', $e->getErrorCode()); - } - } - - public function testCompleteMultipartUploadWithEmptyArray(){ - $object = 'multipart-test-complete.txt'; - try { - $uploadId = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - $listMultipartUploadInfo = $this->ossClient->completeMultipartUpload($this->bucket, $object, $uploadId, array()); - var_dump($listMultipartUploadInfo); - $this->assertNotNull($listMultipartUploadInfo); - } catch (OssException $e) { - $this->assertFalse(true); - } - - } - - - public function testCompleteMultipartUploadWithNull(){ - $object = "mpu/multipart-test.txt"; - try { - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $part_size = 5 * 1024 * 1024; - $upload_file = __FILE__; - $upload_filesize = sprintf('%u',filesize($upload_file)); - $pieces = $this->ossClient->generateMultiuploadParts($upload_filesize, $part_size); - $response_upload_part = array(); - $upload_position = 0; - $is_check_md5 = true; - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece[OssClient::OSS_SEEK_TO]; - $to_pos = (integer)$piece[OssClient::OSS_LENGTH] + $from_pos - 1; - $up_options = array( - OssClient::OSS_FILE_UPLOAD => $upload_file, - OssClient::OSS_PART_NUM => ($i + 1), - OssClient::OSS_SEEK_TO => $from_pos, - OssClient::OSS_LENGTH => $to_pos - $from_pos + 1, - OssClient::OSS_CHECK_MD5 => $is_check_md5, - ); - if ($is_check_md5) { - $content_md5 = OssUtil::getMd5SumForFile($upload_file, $from_pos, $to_pos); - $up_options[OssClient::OSS_CONTENT_MD5] = $content_md5; - } - try { - $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - $upload_parts = array(); - foreach ($response_upload_part as $i => $eTag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $eTag, - ); - } - - try { - $listPartsInfo = $this->ossClient->listParts($this->bucket, $object, $upload_id); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $options['headers'] = array( - 'x-oss-forbid-overwrite' => 'false', - 'x-oss-complete-all'=> 'yes' - ); - - try { - $result = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, null,$options); - var_dump($result); - $this->assertNotNull($result); - } catch (OssException $e) { - $this->assertTrue(false); - } - - } - - - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectRequestPaymentTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectRequestPaymentTest.php deleted file mode 100644 index 66251880..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectRequestPaymentTest.php +++ /dev/null @@ -1,472 +0,0 @@ -payerClient->listObjects($this->bucket); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->createObjectDir($this->bucket, 'folder/'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->putObject($this->bucket, 'object', 'content'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->putSymlink($this->bucket, 'symlink', 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->getSymlink($this->bucket, 'default-symlink'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->uploadFile($this->bucket, 'file-object', __FILE__); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->appendObject($this->bucket, 'append-object', 'content', 0); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->appendObject($this->bucket, 'append-file', __FILE__, 0); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->copyObject($this->bucket, 'default-object', $this->bucket, 'copy-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->getObjectMeta($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $this->payerClient->getSimplifiedObjectMeta($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $this->payerClient->deleteObject($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->getObject($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->doesObjectExist($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $this->payerClient->restoreObject($this->bucket, 'default-ia-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $this->payerClient->putObjectTagging($this->bucket, 'default-object', $config); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->getObjectTagging($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->deleteObjectTagging($this->bucket, 'default-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->initiateMultipartUpload($this->bucket, 'mup-object'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - $uploadId= $this->ossClient->initiateMultipartUpload($this->bucket, 'mup-object'); - - try { - $this->payerClient->listParts($this->bucket, 'mup-object', $uploadId); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->abortMultipartUpload($this->bucket, 'mup-object', $uploadId); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->listMultipartUploads($this->bucket); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - - try { - $this->payerClient->multiuploadFile($this->bucket, 'mup-file', __FILE__); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('AccessDenied', $e->getErrorCode()); - } - } - - public function testObjectOperationsWithRequester() - { - $options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - - try { - $this->payerClient->listObjects($this->bucket, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->createObjectDir($this->bucket, 'folder/', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->putObject($this->bucket, 'object', 'content', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->putSymlink($this->bucket, 'symlink', 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->getSymlink($this->bucket, 'default-symlink', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->uploadFile($this->bucket, 'file-object', __FILE__, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->appendObject($this->bucket, 'append-object', 'content', 0, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->appendObject($this->bucket, 'append-file', __FILE__, 0, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->copyObject($this->bucket, 'default-object', $this->bucket, 'copy-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->getObjectMeta($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->getSimplifiedObjectMeta($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->getObject($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->putObject($this->bucket, 'test-object', 'content', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->deleteObject($this->bucket, 'test-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->doesObjectExist($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $ia_options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-storage-class' => 'Archive', - )); - $this->ossClient->putObject($this->bucket, 'default-Archive-object', 'content', $ia_options); - try { - $this->payerClient->restoreObject($this->bucket, 'default-Archive-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $this->payerClient->putObjectTagging($this->bucket, 'default-object', $config, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->getObjectTagging($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->payerClient->deleteObjectTagging($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testMultipartOperationsWithRequester() - { - $options = array( - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - - $object = "mpu/multipart-test.txt"; - /** - * step 1. 初始化一个分块上传事件, 也就是初始化上传Multipart, 获取upload id - */ - try { - $upload_id = $this->payerClient->initiateMultipartUpload($this->bucket, $object, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /* - * step 2. 上传分片 - */ - $part_size = 1 * 1024 * 1024; - $upload_file = __FILE__; - $upload_filesize = sprintf('%u',filesize($upload_file)); - $pieces = $this->payerClient->generateMultiuploadParts($upload_filesize, $part_size); - $response_upload_part = array(); - $upload_position = 0; - $is_check_md5 = false; - foreach ($pieces as $i => $piece) { - $from_pos = $upload_position + (integer)$piece[OssClient::OSS_SEEK_TO]; - $to_pos = (integer)$piece[OssClient::OSS_LENGTH] + $from_pos - 1; - $up_options = array( - OssClient::OSS_FILE_UPLOAD => $upload_file, - OssClient::OSS_PART_NUM => ($i + 1), - OssClient::OSS_SEEK_TO => $from_pos, - OssClient::OSS_LENGTH => $to_pos - $from_pos + 1, - OssClient::OSS_CHECK_MD5 => $is_check_md5, - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - ), - ); - - //2. 将每一分片上传到OSS - try { - $response_upload_part[] = $this->ossClient->uploadPart($this->bucket, $object, $upload_id, $up_options); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - $upload_parts = array(); - foreach ($response_upload_part as $i => $eTag) { - $upload_parts[] = array( - 'PartNumber' => ($i + 1), - 'ETag' => $eTag, - ); - } - - try { - $listPartsInfo = $this->payerClient->listParts($this->bucket, $object, $upload_id, $options); - $this->assertNotNull($listPartsInfo); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $uploads = $this->payerClient->listMultipartUploads($this->bucket, $options); - $this->assertNotNull($uploads); - } catch (OssException $e) { - $this->assertTrue(false); - } - - /** - * step 3. - */ - try { - $this->payerClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testMiscOperationsWithRequester() - { - //use multipart - $options = array( - OssClient::OSS_PART_SIZE => 1, - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - - $bigFileName = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile.tmp"; - OssUtil::generateFile($bigFileName, 256 * 1024); - $object = 'mpu/multipart-bigfile-test.tmp'; - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - - //use uploadfile - $options = array( - OssClient::OSS_PART_SIZE => 1024*1024, - OssClient::OSS_HEADERS => array( - OssClient::OSS_REQUEST_PAYER => 'requester', - )); - - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $bigFileName, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - unlink($bigFileName); - } - - protected function setUp(): void - { - parent::setUp(); - $this->payerClient = new OssClient( - getenv('OSS_PAYER_ACCESS_KEY_ID'), - getenv('OSS_PAYER_ACCESS_KEY_SECRET'), - getenv('OSS_ENDPOINT'), false); - - $policy = '{"Version":"1","Statement":[{"Action":["oss:*"],"Effect": "Allow",'. - '"Principal":["' . getenv('OSS_PAYER_UID') . '"],'. - '"Resource": ["acs:oss:*:*:' . $this->bucket . '","acs:oss:*:*:' . $this->bucket . '/*"]}]}'; - - $this->ossClient->putBucketPolicy($this->bucket, $policy); - $this->ossClient->putBucketRequestPayment($this->bucket, 'Requester'); - $this->ossClient->putObject($this->bucket, "default-object", ""); - $this->ossClient->putSymlink($this->bucket, "default-symlink", "default-object"); - } - - protected function tearDown(): void - { - parent::tearDown(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTaggingTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTaggingTest.php deleted file mode 100644 index 401d1b7c..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTaggingTest.php +++ /dev/null @@ -1,160 +0,0 @@ -ossClient->putObject($this->bucket, $object, $content); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $config = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(0, count($config->getTags())); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $config = new TaggingConfig(); - $config->addTag(new Tag("key1", "value1")); - $config->addTag(new Tag("key2", "value2")); - $config->addTag(new Tag("key3", "value3")); - $this->ossClient->putObjectTagging($this->bucket, $object, $config); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $config2 = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(3, count($config2->getTags())); - $this->assertEquals("key1", $config2->getTags()[0]->getKey()); - $this->assertEquals("value1", $config2->getTags()[0]->getValue()); - $this->assertEquals("key2", $config2->getTags()[1]->getKey()); - $this->assertEquals("value2", $config2->getTags()[1]->getValue()); - $this->assertEquals("key3", $config2->getTags()[2]->getKey()); - $this->assertEquals("value3", $config2->getTags()[2]->getValue()); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $this->ossClient->deleteObjectTagging($this->bucket, $object); - $config2 = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(0, count($config2->getTags())); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testPutObjectTaggingFromHeader() - { - $object = "object-tagging-header.txt"; - $content = "hello world"; - - try { - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - )); - - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - - $config2 = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(3, count($config2->getTags())); - $this->assertEquals("key1", $config2->getTags()[0]->getKey()); - $this->assertEquals("value1", $config2->getTags()[0]->getValue()); - $this->assertEquals("key2", $config2->getTags()[1]->getKey()); - $this->assertEquals("value2", $config2->getTags()[1]->getValue()); - $this->assertEquals("key3", $config2->getTags()[2]->getKey()); - $this->assertEquals("value3", $config2->getTags()[2]->getValue()); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testAppendObjectTaggingFromHeader() - { - $object = "append-object-tagging-header.txt"; - $content_array = array('Hello OSS', 'Hi OSS', 'OSS OK'); - - try { - $options = array( - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - )); - - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[0], 0, $options); - $this->assertEquals($position, strlen($content_array[0])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[1], $position); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[2], $position, array(OssClient::OSS_LENGTH => strlen($content_array[2]))); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1]) + strlen($content_array[2])); - - $config2 = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(3, count($config2->getTags())); - $this->assertEquals("key1", $config2->getTags()[0]->getKey()); - $this->assertEquals("value1", $config2->getTags()[0]->getValue()); - $this->assertEquals("key2", $config2->getTags()[1]->getKey()); - $this->assertEquals("value2", $config2->getTags()[1]->getValue()); - $this->assertEquals("key3", $config2->getTags()[2]->getKey()); - $this->assertEquals("value3", $config2->getTags()[2]->getValue()); - - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testMultipartUploadTaggingFromHeader() - { - $file = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile.tmp"; - OssUtil::generateFile($file, 110 * 1024); - - $object = "mpu-object-tagging-header.txt"; - $options = array( - OssClient::OSS_CHECK_MD5 => true, - OssClient::OSS_PART_SIZE => 1, - OssClient::OSS_HEADERS => array( - 'x-oss-tagging' => 'key1=value1&key2=value2&key3=value3', - ), - ); - try { - $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); - - $config2 = $this->ossClient->getObjectTagging($this->bucket, $object); - $this->assertEquals(3, count($config2->getTags())); - $this->assertEquals("key1", $config2->getTags()[0]->getKey()); - $this->assertEquals("value1", $config2->getTags()[0]->getValue()); - $this->assertEquals("key2", $config2->getTags()[1]->getKey()); - $this->assertEquals("value2", $config2->getTags()[1]->getValue()); - $this->assertEquals("key3", $config2->getTags()[2]->getKey()); - $this->assertEquals("value3", $config2->getTags()[2]->getValue()); - } catch (OssException $e) { - $this->assertFalse(true); - } - - unlink($file); - } - -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php deleted file mode 100644 index bb610188..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectTest.php +++ /dev/null @@ -1,781 +0,0 @@ -ossClient->getObjectMeta($this->bucket, $object); - $this->assertEquals('200', $res['info']['http_code']); - $this->assertEquals('text/plain', $res['content-type']); - $this->assertEquals('Accept-Encoding', $res['vary']); - $this->assertTrue(isset($res['content-length'])); - $this->assertFalse(isset($res['content-encoding'])); - } catch (OssException $e) { - $this->assertTrue(false); - } - - $options = array(OssClient::OSS_HEADERS => array(OssClient::OSS_ACCEPT_ENCODING => 'deflate, gzip')); - - try { - $res = $this->ossClient->getObjectMeta($this->bucket, $object, $options); - $this->assertEquals('200', $res['info']['http_code']); - $this->assertEquals('text/plain', $res['content-type']); - $this->assertEquals('Accept-Encoding', $res['vary']); - $this->assertFalse(isset($res['content-length'])); - $this->assertEquals('gzip', $res['content-encoding']); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testGetObjectWithAcceptEncoding() - { - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $options = array(OssClient::OSS_HEADERS => array(OssClient::OSS_ACCEPT_ENCODING => 'deflate, gzip')); - - try { - $res = $this->ossClient->getObject($this->bucket, $object, $options); - $this->assertEquals(file_get_contents(__FILE__), $res); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testGetObjectWithHeader() - { - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $res = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_LAST_MODIFIED => "xx")); - $this->assertEquals(file_get_contents(__FILE__), $res); - } catch (OssException $e) { - $this->assertEquals('"/ilegal.txt" object name is invalid', $e->getMessage()); - } - } - - public function testGetObjectWithIleggalEtag() - { - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $res = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_ETAG => "xx")); - $this->assertEquals(file_get_contents(__FILE__), $res); - } catch (OssException $e) { - $this->assertEquals('"/ilegal.txt" object name is invalid', $e->getMessage()); - } - } - - public function testObject() - { - /** - * Upload the local variable to bucket - */ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $content = file_get_contents(__FILE__); - $options = array( - OssClient::OSS_LENGTH => strlen($content), - OssClient::OSS_HEADERS => array( - 'Expires' => 'Fri, 28 Feb 2020 05:38:42 GMT', - 'Cache-Control' => 'no-cache', - 'Content-Disposition' => 'attachment;filename=oss_download.log', - 'Content-Language' => 'zh-CN', - 'x-oss-server-side-encryption' => 'AES256', - 'x-oss-meta-self-define-title' => 'user define meta info', - ), - ); - - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - try { - $result = $this->ossClient->deleteObjects($this->bucket, "stringtype", $options); - $this->assertEquals('stringtype', $result[0]); - } catch (OssException $e) { - $this->assertEquals('objects must be array', $e->getMessage()); - } - - try { - $result = $this->ossClient->deleteObjects($this->bucket, "stringtype", $options); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('objects must be array', $e->getMessage()); - } - - try { - $this->ossClient->uploadFile($this->bucket, $object, "notexist.txt", $options); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('notexist.txt file does not exist', $e->getMessage()); - } - - /** - * GetObject to the local variable and check for match - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * GetObject first five bytes - */ - try { - $options = array(OssClient::OSS_RANGE => '0-4'); - $content = $this->ossClient->getObject($this->bucket, $object, $options); - $this->assertEquals($content, 'assertFalse(true); - } - - - /** - * Upload the local file to object - */ - try { - $this->ossClient->uploadFile($this->bucket, $object, __FILE__); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Download the file to the local variable and check for match. - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Download the file to the local file - */ - $localfile = "upload-test-object-name.txt"; - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $localfile, - ); - - try { - $this->ossClient->getObject($this->bucket, $object, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - $this->assertTrue(file_get_contents($localfile) === file_get_contents(__FILE__)); - if (file_exists($localfile)) { - unlink($localfile); - } - - /** - * Download the file to the local file. no such key - */ - $localfile = "upload-test-object-name-no-such-key.txt"; - $options = array( - OssClient::OSS_FILE_DOWNLOAD => $localfile, - ); - - try { - $this->ossClient->getObject($this->bucket, $object . "no-such-key", $options); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - $this->assertFalse(file_exists($localfile)); - if (strpos($e, "The specified key does not exist") == false) - { - $this->assertTrue(true); - } - } - - /** - * Download the file to the content. no such key - */ - try { - $result = $this->ossClient->getObject($this->bucket, $object . "no-such-key"); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "The specified key does not exist") == false) - { - $this->assertTrue(true); - } - } - - /** - * Copy object - */ - $to_bucket = $this->bucket; - $to_object = $object . '.copy'; - $options = array(); - try { - $result = $this->ossClient->copyObject($this->bucket, $object, $to_bucket, $to_object, $options); - $this->assertFalse(empty($result)); - $this->assertEquals(strlen("2016-11-21T03:46:58.000Z"), strlen($result[0])); - $this->assertEquals(strlen("\"5B3C1A2E053D763E1B002CC607C5A0FE\""), strlen($result[1])); - } catch (OssException $e) { - $this->assertFalse(true); - var_dump($e->getMessage()); - - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $to_object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * List the files in your bucket. - */ - $prefix = ''; - $delimiter = '/'; - $next_marker = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'marker' => $next_marker, - ); - - try { - $listObjectInfo = $this->ossClient->listObjects($this->bucket, $options); - $objectList = $listObjectInfo->getObjectList(); - $prefixList = $listObjectInfo->getPrefixList(); - $this->assertNotNull($objectList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($objectList)); - $this->assertTrue(is_array($prefixList)); - - } catch (OssException $e) { - $this->assertTrue(false); - } - - /** - * Set the meta information for the file - */ - $from_bucket = $this->bucket; - $from_object = "oss-php-sdk-test/upload-test-object-name.txt"; - $to_bucket = $from_bucket; - $to_object = $from_object; - $copy_options = array( - OssClient::OSS_HEADERS => array( - 'Expires' => '2012-10-01 08:00:00', - 'Content-Disposition' => 'attachment; filename="xxxxxx"', - ), - ); - try { - $this->ossClient->copyObject($from_bucket, $from_object, $to_bucket, $to_object, $copy_options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Get the meta information for the file - */ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - try { - $objectMeta = $this->ossClient->getObjectMeta($this->bucket, $object); - $this->assertEquals('attachment; filename="xxxxxx"', $objectMeta[strtolower('Content-Disposition')]); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete single file - */ - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - - try { - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object)); - $this->ossClient->deleteObject($this->bucket, $object); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete multiple files - */ - $object1 = "oss-php-sdk-test/upload-test-object-name.txt"; - $object2 = "oss-php-sdk-test/upload-test-object-name.txt.copy"; - $list = array($object1, $object2); - try { - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object2)); - - $result = $this->ossClient->deleteObjects($this->bucket, $list); - $this->assertEquals($list[0], $result[0]); - $this->assertEquals($list[1], $result[1]); - - $result = $this->ossClient->deleteObjects($this->bucket, $list, array('quiet' => 'true')); - $this->assertEquals(array(), $result); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object2)); - - $this->ossClient->putObject($this->bucket, $object, $content); - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object)); - $result = $this->ossClient->deleteObjects($this->bucket, $list, array('quiet' => true)); - $this->assertEquals(array(), $result); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object)); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testAppendObject() - { - $object = "oss-php-sdk-test/append-test-object-name.txt"; - $content_array = array('Hello OSS', 'Hi OSS', 'OSS OK'); - - /** - * Append the upload string - */ - try { - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[0], 0); - $this->assertEquals($position, strlen($content_array[0])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[1], $position); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[2], $position, array(OssClient::OSS_LENGTH => strlen($content_array[2]))); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1]) + strlen($content_array[2])); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the content is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, implode($content_array)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - - /** - * Delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Append the upload of invalid local files - */ - try { - $position = $this->ossClient->appendFile($this->bucket, $object, "invalid-file-path", 0); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - /** - * Append the upload of local files - */ - try { - $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, 0); - $this->assertEquals($position, sprintf('%u',filesize(__FILE__))); - $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, $position); - $this->assertEquals($position, sprintf('%u',filesize(__FILE__)) * 2); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__) . file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - - $options = array( - OssClient::OSS_HEADERS => array( - 'Expires' => '2012-10-01 08:00:00', - 'Content-Disposition' => 'attachment; filename="xxxxxx"', - ), - ); - - /** - * Append upload with option - */ - try { - $position = $this->ossClient->appendObject($this->bucket, $object, "Hello OSS, ", 0, $options); - $position = $this->ossClient->appendObject($this->bucket, $object, "Hi OSS.", $position); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Get the meta information for the file - */ - try { - $objectMeta = $this->ossClient->getObjectMeta($this->bucket, $object); - $this->assertEquals('attachment; filename="xxxxxx"', $objectMeta[strtolower('Content-Disposition')]); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testPutIllelObject() - { - $object = "/ilegal.txt"; - try { - $this->ossClient->putObject($this->bucket, $object, "hi", null); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('"/ilegal.txt" object name is invalid', $e->getMessage()); - } - } - - public function testCheckMD5() - { - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - $content = file_get_contents(__FILE__); - $options = array(OssClient::OSS_CHECK_MD5 => true); - - /** - * Upload data to start MD5 - */ - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Upload file to start MD5 - */ - try { - $this->ossClient->uploadFile($this->bucket, $object, __FILE__, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $object = "oss-php-sdk-test/append-test-object-name.txt"; - $content_array = array('Hello OSS', 'Hi OSS', 'OSS OK'); - $options = array(OssClient::OSS_CHECK_MD5 => true); - - /** - * Append the upload string - */ - try { - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[0], 0, $options); - $this->assertEquals($position, strlen($content_array[0])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[1], $position, $options); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1])); - $position = $this->ossClient->appendObject($this->bucket, $object, $content_array[2], $position, $options); - $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1]) + strlen($content_array[1])); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the content is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, implode($content_array)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Append upload of local files - */ - try { - $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, 0, $options); - $this->assertEquals($position, sprintf('%u',filesize(__FILE__))); - $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, $position, $options); - $this->assertEquals($position, sprintf('%u',filesize(__FILE__)) * 2); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__) . file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * delete test object - */ - try { - $this->ossClient->deleteObject($this->bucket, $object); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testWithInvalidBucketName() - { - try { - $this->ossClient->createBucket("abcefc/", "test-key"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('"abcefc/"bucket name is invalid', $e->getMessage()); - } - } - - public function testGetSimplifiedObjectMeta() - { - $object = "oss-php-sdk-test/upload-test-object-name.txt"; - - try { - $objectMeta = $this->ossClient->getSimplifiedObjectMeta($this->bucket, $object); - $this->assertEquals(false, array_key_exists(strtolower('Content-Disposition'), $objectMeta)); - $this->assertEquals(strlen(file_get_contents(__FILE__)), $objectMeta[strtolower('Content-Length')]); - $this->assertEquals(true, array_key_exists(strtolower('ETag'), $objectMeta)); - $this->assertEquals(true, array_key_exists(strtolower('Last-Modified'), $objectMeta)); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testUploadStream() - { - $object = "oss-php-sdk-test/put-from-stream.txt"; - $options = array(OssClient::OSS_CHECK_MD5 => true); - $handle = fopen(__FILE__, 'rb'); - /** - * Upload data to start MD5 - */ - try { - $this->ossClient->uploadStream($this->bucket, $object, $handle, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $object = "oss-php-sdk-test/put-from-stream-without-md5.txt"; - $handle = fopen(__FILE__, 'rb'); - try { - $this->ossClient->uploadStream($this->bucket, $object, $handle); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - } - - public function testObjectKeyWithQuestionMark() - { - /** - * Upload the local variable to bucket - */ - $object = "oss-php-sdk-test/??/upload-test-object-name???123??123??.txt"; - $content = file_get_contents(__FILE__); - $options = array( - OssClient::OSS_LENGTH => strlen($content), - OssClient::OSS_HEADERS => array( - 'Expires' => 'Fri, 28 Feb 2020 05:38:42 GMT', - 'Cache-Control' => 'no-cache', - 'Content-Disposition' => 'attachment;filename=oss_download.log', - 'Content-Language' => 'zh-CN', - 'x-oss-server-side-encryption' => 'AES256', - 'x-oss-meta-self-define-title' => 'user define meta info', - ), - ); - - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * GetObject to the local variable and check for match - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * GetObject first five bytes - */ - try { - $options = array(OssClient::OSS_RANGE => '0-4'); - $content = $this->ossClient->getObject($this->bucket, $object, $options); - $this->assertEquals($content, 'assertFalse(true); - } - - - /** - * Upload the local file to object - */ - try { - $this->ossClient->uploadFile($this->bucket, $object, __FILE__); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Download the file to the local variable and check for match. - */ - try { - $content = $this->ossClient->getObject($this->bucket, $object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - /** - * Copy object - */ - $to_bucket = $this->bucket; - $to_object = $object . '.copy'; - $options = array(); - try { - $result = $this->ossClient->copyObject($this->bucket, $object, $to_bucket, $to_object, $options); - $this->assertFalse(empty($result)); - $this->assertEquals(strlen("2016-11-21T03:46:58.000Z"), strlen($result[0])); - $this->assertEquals(strlen("\"5B3C1A2E053D763E1B002CC607C5A0FE\""), strlen($result[1])); - } catch (OssException $e) { - $this->assertFalse(true); - var_dump($e->getMessage()); - - } - - /** - * Check if the replication is the same - */ - try { - $content = $this->ossClient->getObject($this->bucket, $to_object); - $this->assertEquals($content, file_get_contents(__FILE__)); - } catch (OssException $e) { - $this->assertFalse(true); - } - - - try { - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object)); - $this->ossClient->deleteObject($this->bucket, $object); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object)); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - protected function setUp(): void - { - parent::setUp(); - $this->ossClient->putObject($this->bucket, 'oss-php-sdk-test/upload-test-object-name.txt', file_get_contents(__FILE__)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectVersioningTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectVersioningTest.php deleted file mode 100644 index 66f204ac..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientObjectVersioningTest.php +++ /dev/null @@ -1,610 +0,0 @@ -ossClient->putObject($this->bucket, $object, $content1, array(OssClient::OSS_HEADERS => array('x-oss-object-acl' => 'public-read', 'x-oss-tagging' => 'key1=value1'))); - $ret2 = $this->ossClient->putObject($this->bucket, $object, $content2, array(OssClient::OSS_HEADERS => array('x-oss-object-acl' => 'private', 'x-oss-tagging' => 'key2=value2'))); - - $this->assertTrue(isset($ret1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($ret2[OssClient::OSS_HEADER_VERSION_ID])); - - $versionId1 = $ret1[OssClient::OSS_HEADER_VERSION_ID]; - $versionId2 = $ret2[OssClient::OSS_HEADER_VERSION_ID]; - - //get object - $res = $this->ossClient->getObject($this->bucket, $object); - $res1 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $res2 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2)); - $this->assertEquals($content1, $res1); - $this->assertEquals($content2, $res2); - $this->assertEquals($content2, $res); - - //meta - $headers = $this->ossClient->getObjectMeta($this->bucket, $object); - $headers1 = $this->ossClient->getObjectMeta($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $headers2 = $this->ossClient->getObjectMeta($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2)); - - $this->assertTrue(isset($headers[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($headers1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($headers2[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertEquals($versionId1, $headers1[OssClient::OSS_HEADER_VERSION_ID]); - $this->assertEquals($versionId2, $headers2[OssClient::OSS_HEADER_VERSION_ID]); - $this->assertEquals($versionId2, $headers[OssClient::OSS_HEADER_VERSION_ID]); - - - $sheaders = $this->ossClient->getSimplifiedObjectMeta($this->bucket, $object); - $sheaders1 = $this->ossClient->getSimplifiedObjectMeta($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $sheaders2 = $this->ossClient->getSimplifiedObjectMeta($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2)); - - $this->assertTrue(isset($sheaders[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($sheaders1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($sheaders2[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertEquals($versionId1, $sheaders1[OssClient::OSS_HEADER_VERSION_ID]); - $this->assertEquals($versionId2, $sheaders2[OssClient::OSS_HEADER_VERSION_ID]); - $this->assertEquals($versionId2, $sheaders[OssClient::OSS_HEADER_VERSION_ID]); - - //acl - $acl = $this->ossClient->getObjectAcl($this->bucket, $object); - $acl1 = $this->ossClient->getObjectAcl($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $acl2 = $this->ossClient->getObjectAcl($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2)); - - $this->assertEquals('public-read', $acl1); - $this->assertEquals('private', $acl2); - $this->assertEquals('private', $acl); - - $this->ossClient->putObjectAcl($this->bucket, $object, 'public-read-write', array(OssClient::OSS_VERSION_ID => $versionId1)); - $acl = $this->ossClient->getObjectAcl($this->bucket, $object); - $acl1 = $this->ossClient->getObjectAcl($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $this->assertEquals('public-read-write', $acl1); - $this->assertEquals('private', $acl); - - //tagging - $tag = $this->ossClient->getObjectTagging($this->bucket, $object); - $tag1 = $this->ossClient->getObjectTagging($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $tag2 = $this->ossClient->getObjectTagging($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2)); - $this->assertEquals(1, count($tag1->getTags())); - $this->assertEquals("key1", $tag1->getTags()[0]->getKey()); - $this->assertEquals("value1", $tag1->getTags()[0]->getValue()); - $this->assertEquals(1, count($tag2->getTags())); - $this->assertEquals("key2", $tag2->getTags()[0]->getKey()); - $this->assertEquals("value2", $tag2->getTags()[0]->getValue()); - $this->assertEquals(1, count($tag->getTags())); - $this->assertEquals("key2", $tag->getTags()[0]->getKey()); - $this->assertEquals("value2", $tag->getTags()[0]->getValue()); - - $config = new TaggingConfig(); - $config->addTag(new Tag("key11", "value11")); - $this->ossClient->putObjectTagging($this->bucket, $object, $config, array(OssClient::OSS_VERSION_ID => $versionId1)); - $tag = $this->ossClient->getObjectTagging($this->bucket, $object); - $tag1 = $this->ossClient->getObjectTagging($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $this->assertEquals(1, count($tag1->getTags())); - $this->assertEquals("key11", $tag1->getTags()[0]->getKey()); - $this->assertEquals("value11", $tag1->getTags()[0]->getValue()); - $this->assertEquals(1, count($tag->getTags())); - $this->assertEquals("key2", $tag->getTags()[0]->getKey()); - $this->assertEquals("value2", $tag->getTags()[0]->getValue()); - - $this->ossClient->deleteObjectTagging($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $tag = $this->ossClient->getObjectTagging($this->bucket, $object); - $tag1 = $this->ossClient->getObjectTagging($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $this->assertEquals(0, count($tag1->getTags())); - $this->assertEquals(1, count($tag->getTags())); - $this->assertEquals("key2", $tag->getTags()[0]->getKey()); - $this->assertEquals("value2", $tag->getTags()[0]->getValue()); - - //delete - $dret = $this->ossClient->deleteObject($this->bucket, $object); - $this->assertTrue(isset($dret['x-oss-delete-marker'])); - $this->assertTrue(isset($dret['x-oss-version-id'])); - $this->assertEquals("true", $dret['x-oss-delete-marker']); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object)); - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1))); - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId2))); - - $dret1 = $this->ossClient->deleteObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $this->assertFalse(isset($dret1['x-oss-delete-marker'])); - $this->assertTrue(isset($dret1['x-oss-version-id'])); - $this->assertEquals($versionId1, $dret1['x-oss-version-id']); - $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1))); - - - $dret_ = $this->ossClient->deleteObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $dret['x-oss-version-id'])); - $this->assertTrue(isset($dret_['x-oss-delete-marker'])); - $this->assertTrue(isset($dret_['x-oss-version-id'])); - $this->assertEquals($dret['x-oss-version-id'], $dret_['x-oss-version-id']); - $this->assertTrue($this->ossClient->doesObjectExist($this->bucket, $object)); - - } - - public function testObjectSymlink() - { - $object1 = 'object-target-1'; - $object2 = 'object-target-2'; - $symlink = 'object-symlink'; - $content1 = 'hello'; - $content2 = 'hello world'; - - - $ret1 = $this->ossClient->putObject($this->bucket, $object1, $content1); - $sym1 = $this->ossClient->putSymlink($this->bucket, $symlink, $object1); - - $ret2 = $this->ossClient->putObject($this->bucket, $object2, $content2); - $sym2 = $this->ossClient->putSymlink($this->bucket, $symlink, $object2); - - $this->assertTrue(isset($ret1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($ret2[OssClient::OSS_HEADER_VERSION_ID])); - - $this->assertTrue(isset($sym1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($sym2[OssClient::OSS_HEADER_VERSION_ID])); - - $versionId1 = $ret1[OssClient::OSS_HEADER_VERSION_ID]; - $versionId2 = $ret2[OssClient::OSS_HEADER_VERSION_ID]; - - $sym_versionId1 = $sym1[OssClient::OSS_HEADER_VERSION_ID]; - $sym_versionId2 = $sym2[OssClient::OSS_HEADER_VERSION_ID]; - - - $sym_ret = $this->ossClient->getSymlink($this->bucket, $symlink); - $sym_ret1 = $this->ossClient->getSymlink($this->bucket, $symlink, array(OssClient::OSS_VERSION_ID => $sym_versionId1)); - $sym_ret2 = $this->ossClient->getSymlink($this->bucket, $symlink, array(OssClient::OSS_VERSION_ID => $sym_versionId2)); - - $this->assertTrue(isset($sym_ret['x-oss-version-id'])); - $this->assertTrue(isset($sym_ret1['x-oss-version-id'])); - $this->assertTrue(isset($sym_ret2['x-oss-version-id'])); - - $this->assertEquals($sym_versionId1, $sym_ret1['x-oss-version-id']); - $this->assertEquals($sym_versionId2, $sym_ret2['x-oss-version-id']); - $this->assertEquals($sym_versionId2, $sym_ret['x-oss-version-id']); - - - $res = $this->ossClient->getObject($this->bucket, $symlink); - $res1 = $this->ossClient->getObject($this->bucket, $symlink, array(OssClient::OSS_VERSION_ID => $sym_versionId1)); - $res2 = $this->ossClient->getObject($this->bucket, $symlink, array(OssClient::OSS_VERSION_ID => $sym_versionId2)); - $this->assertEquals($content1, $res1); - $this->assertEquals($content2, $res2); - $this->assertEquals($content2, $res); - } - - public function testObjectCopy() - { - $object = 'copy-= +object'; - $content1 = 'hello'; - $content2 = 'hello world'; - $to_bucket = $this->bucket; - $to_object = $object . '.copy'; - $to_object1 = $object . '.copy1'; - $to_object2 = $object . '.copy2'; - - $ret1 = $this->ossClient->putObject($this->bucket, $object, $content1); - $ret2 = $this->ossClient->putObject($this->bucket, $object, $content2); - - $versionId1 = $ret1[OssClient::OSS_HEADER_VERSION_ID]; - $versionId2 = $ret2[OssClient::OSS_HEADER_VERSION_ID]; - - $cret = $this->ossClient->copyObject($this->bucket, $object, $to_bucket, $to_object); - $cret1 = $this->ossClient->copyObject($this->bucket, $object, $to_bucket, $to_object1, array(OssClient::OSS_VERSION_ID => $versionId1)); - $cret2 = $this->ossClient->copyObject($this->bucket, $object, $to_bucket, $to_object2, array(OssClient::OSS_VERSION_ID => $versionId2)); - $this->assertFalse(empty($cret1)); - $this->assertEquals(strlen("2016-11-21T03:46:58.000Z"), strlen($cret1[0])); - $this->assertEquals(trim($ret1['etag'], '"'), trim($cret1[1], '"')); - $this->assertTrue(isset($cret1['x-oss-version-id'])); - $this->assertEquals($versionId1, $cret1['x-oss-copy-source-version-id']); - - $this->assertFalse(empty($cret2)); - $this->assertEquals(strlen("2016-11-21T03:46:58.000Z"), strlen($cret2[0])); - $this->assertEquals(trim($ret2['etag'], '"'), trim($cret2[1], '"')); - $this->assertTrue(isset($cret2['x-oss-version-id'])); - $this->assertEquals($versionId2, $cret2['x-oss-copy-source-version-id']); - - $this->assertFalse(empty($cret)); - $this->assertEquals(strlen("2016-11-21T03:46:58.000Z"), strlen($cret[0])); - $this->assertEquals(trim($ret2['etag'], '"'), trim($cret[1], '"')); - $this->assertTrue(isset($cret2['x-oss-version-id'])); - $this->assertEquals($versionId2, $cret['x-oss-copy-source-version-id']); - - $res = $this->ossClient->getObject($this->bucket, $to_object); - $res1 = $this->ossClient->getObject($this->bucket, $to_object1); - $res2 = $this->ossClient->getObject($this->bucket, $to_object2); - $this->assertEquals($content1, $res1); - $this->assertEquals($content2, $res2); - $this->assertEquals($content2, $res); - } - - public function testObjectRestore() - { - $object = 'retore-object'; - $content1 = 'hello'; - $content2 = 'hello world'; - $ret1 = $this->ossClient->putObject($this->bucket, $object, $content1, array(OssClient::OSS_HEADERS => array('x-oss-storage-class' => 'Archive'))); - $ret2 = $this->ossClient->putObject($this->bucket, $object, $content2); - - $versionId1 = $ret1[OssClient::OSS_HEADER_VERSION_ID]; - $versionId2 = $ret2[OssClient::OSS_HEADER_VERSION_ID]; - - try{ - $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('403', $e->getHTTPStatus()); - $this->assertEquals('InvalidObjectState', $e->getErrorCode()); - } - - try{ - $this->ossClient->restoreObject($this->bucket, $object); - $this->assertTrue(false); - }catch(OssException $e){ - $this->assertEquals('400', $e->getHTTPStatus()); - $this->assertEquals('OperationNotSupported', $e->getErrorCode()); - } - - $result = $this->ossClient->restoreObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - common::waitMetaSync(); - $this->assertEquals('202', $result['info']['http_code']); - - try{ - $this->ossClient->restoreObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId1)); - }catch(OssException $e){ - $this->assertEquals('409', $e->getHTTPStatus()); - $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); - } - } - - public function testObjectMultiPart() - { - $object_src = 'multi-= +object.src'; - $content1 = 'hello'; - $content2 = 'hello world'; - $ret1 = $this->ossClient->putObject($this->bucket, $object_src, $content1); - $ret2 = $this->ossClient->putObject($this->bucket, $object_src, $content2); - - $this->assertTrue(isset($ret1[OssClient::OSS_HEADER_VERSION_ID])); - $this->assertTrue(isset($ret2[OssClient::OSS_HEADER_VERSION_ID])); - - $versionId1 = $ret1[OssClient::OSS_HEADER_VERSION_ID]; - $versionId2 = $ret2[OssClient::OSS_HEADER_VERSION_ID]; - - //object - $object = "multi-object"; - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $object_src, $this->bucket, $object, $copyId, $upload_id); - $upload_parts[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - $ret = $this->ossClient->completeMultipartUpload($this->bucket, $object, $upload_id, $upload_parts); - - //object-1 - $object1 = "multi-object-1"; - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object1); - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $object_src, $this->bucket, $object1, $copyId, $upload_id, array(OssClient::OSS_VERSION_ID => $versionId1)); - $upload_parts1[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - $ret1 = $this->ossClient->completeMultipartUpload($this->bucket, $object1, $upload_id, $upload_parts1); - - //object-2 - $object2 = "multi-object-2"; - $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object2); - $copyId = 1; - $eTag = $this->ossClient->uploadPartCopy($this->bucket, $object_src, $this->bucket, $object2, $copyId, $upload_id, array(OssClient::OSS_VERSION_ID => $versionId2)); - $upload_parts2[] = array( - 'PartNumber' => $copyId, - 'ETag' => $eTag, - ); - $ret2 = $this->ossClient->completeMultipartUpload($this->bucket, $object2, $upload_id, $upload_parts2); - - $res = $this->ossClient->getObject($this->bucket, $object); - $res1 = $this->ossClient->getObject($this->bucket, $object1); - $res2 = $this->ossClient->getObject($this->bucket, $object2); - - $this->assertEquals($content1, $res1); - $this->assertEquals($content2, $res2); - $this->assertEquals($content2, $res); - } - - public function testObjectMisc() - { - //use multipart - $options = array( - OssClient::OSS_PART_SIZE => 1, - ); - - $object = 'misc-object'; - - $smallFile1 = __DIR__ . DIRECTORY_SEPARATOR . "/smallfile1.tmp"; - $smallFile2 = __DIR__ . DIRECTORY_SEPARATOR . "/smallfile2.tmp"; - $bigFile1 = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile1.tmp"; - $bigFile2 = __DIR__ . DIRECTORY_SEPARATOR . "/bigfile2.tmp"; - - OssUtil::generateFile($smallFile1, 5); - OssUtil::generateFile($smallFile2, 10); - OssUtil::generateFile($bigFile1, 128 * 1024); - OssUtil::generateFile($bigFile2, 256 * 1024); - - $sret1 = $this->ossClient->multiuploadFile($this->bucket, $object, $smallFile1, $options); - $sret2 = $this->ossClient->multiuploadFile($this->bucket, $object, $smallFile2, $options); - $bret1 = $this->ossClient->multiuploadFile($this->bucket, $object, $bigFile1, $options); - $bret2 = $this->ossClient->multiuploadFile($this->bucket, $object, $bigFile2, $options); - - - $res = $this->ossClient->getObject($this->bucket, $object); - $sres1 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $sret1['x-oss-version-id'])); - $sres2 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $sret2['x-oss-version-id'])); - $bres1 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $bret1['x-oss-version-id'])); - $bres2 = $this->ossClient->getObject($this->bucket, $object, array(OssClient::OSS_VERSION_ID => $bret2['x-oss-version-id'])); - - - $this->assertEquals(file_get_contents($smallFile1), $sres1); - $this->assertEquals(file_get_contents($smallFile2), $sres2); - $this->assertEquals(file_get_contents($bigFile1), $bres1); - $this->assertEquals(file_get_contents($bigFile2), $bres2); - $this->assertEquals(file_get_contents($bigFile2), $res); - - - unlink($smallFile1); - unlink($smallFile2); - unlink($bigFile1); - unlink($bigFile2); - } - - public function testListObjects() - { - //folder - for ($i = 0; $i < 12; $i++) { - $key = 'folder/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->deleteObject($this->bucket, $key); - } - - //test - for ($i = 0; $i < 8; $i++) { - $key = 'test/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->deleteObject($this->bucket, $key); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //work - for ($i = 0; $i < 5; $i++) { - $key = 'work/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //sub++ - for ($i = 0; $i < 3; $i++) { - $key = 'sub++/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - //file++ - for ($i = 0; $i < 2; $i++) { - $key = 'file++'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->deleteObject($this->bucket, $key); - } - - //list default - $result = $this->ossClient->listObjectVersions($this->bucket); - $versionList = $result->getObjectVersionList(); - $deleteMarkerList = $result->getDeleteMarkerList(); - $prefixList = $result->getPrefixList(); - - $this->assertNotNull($versionList); - $this->assertNotNull($deleteMarkerList); - $this->assertNotNull($prefixList); - $this->assertTrue(is_array($versionList)); - $this->assertTrue(is_array($deleteMarkerList)); - $this->assertTrue(is_array($prefixList)); - $this->assertEquals(2, count($versionList)); - $this->assertEquals(2, count($deleteMarkerList)); - $this->assertEquals(4, count($prefixList)); - - $this->assertEquals('file++00', $versionList[0]->getKey()); - $this->assertEquals('false', $versionList[0]->getIsLatest()); - $this->assertEquals('file++01', $versionList[1]->getKey()); - $this->assertEquals('false', $versionList[1]->getIsLatest()); - - $this->assertEquals('file++00', $deleteMarkerList[0]->getKey()); - $this->assertEquals('true', $deleteMarkerList[0]->getIsLatest()); - $this->assertEquals('file++01', $deleteMarkerList[1]->getKey()); - $this->assertEquals('true', $deleteMarkerList[1]->getIsLatest()); - - - $this->assertEquals('folder/', $prefixList[0]->getPrefix()); - $this->assertEquals('sub++/', $prefixList[1]->getPrefix()); - $this->assertEquals('test/', $prefixList[2]->getPrefix()); - $this->assertEquals('work/', $prefixList[3]->getPrefix()); - - //list by prefix - $prefix = 'folder/'; - $delimiter = ''; - $next_marker = ''; - $maxkeys = 1000; - $options = array( - 'delimiter' => $delimiter, - 'prefix' => $prefix, - 'max-keys' => $maxkeys, - 'key-marker' => $next_marker, - ); - - $result = $this->ossClient->listObjectVersions($this->bucket, $options); - $versionList = $result->getObjectVersionList(); - $deleteMarkerList = $result->getDeleteMarkerList(); - $prefixList = $result->getPrefixList(); - - $this->assertEquals(24, count($versionList)); - $this->assertEquals(12, count($deleteMarkerList)); - $this->assertEquals(0, count($prefixList)); - - $this->assertEquals('folder/00', $versionList[0]->getKey()); - $this->assertEquals('folder/00', $versionList[1]->getKey()); - $this->assertEquals('folder/00', $deleteMarkerList[0]->getKey()); - $this->assertEquals('folder/01', $deleteMarkerList[1]->getKey()); - - - //max-key & key-marker & version-id-marker - $count = 0; - $markerCount = 0; - $nextMarker = ''; - $nextVersionIdMarker = ''; - - while (true) { - $options = array( - 'delimiter' => '', - 'key-marker' => $nextMarker, - 'max-keys' => 1, - 'version-id-marker' => $nextVersionIdMarker, - ); - $result = $this->ossClient->listObjectVersions($this->bucket, $options); - - $nextMarker = $result->getNextKeyMarker(); - $nextVersionIdMarker = $result->getNextVersionIdMarker(); - $count += count($result->getObjectVersionList()); - $markerCount += count($result->getDeleteMarkerList()); - $this->assertEquals(1, count($result->getObjectVersionList()) + count($result->getDeleteMarkerList())); - if ($result->getIsTruncated() !== "true") { - break; - } - } - $this->assertEquals(12*3 + 8*3 + 5 + 3*3 + 2*2, $count + $markerCount); - } - - public function testDeleteObjects() - { - //deletes - for ($i = 0; $i < 5; $i++) { - $key = 'deletes/'. sprintf("%02d",$i); - $this->ossClient->putObject($this->bucket, $key, "content"); - $this->ossClient->putObject($this->bucket, $key, "content"); - } - - $options = array( - 'delimiter' => '', - 'prefix' => 'deletes/', - 'max-keys' => 1000, - ); - $result = $this->ossClient->listObjects($this->bucket, $options); - $this->assertEquals(5, count($result->getObjectList())); - - //delete without version-id - $objects = array(); - for ($i = 0; $i < 5; $i++) { - $key = 'deletes/'. sprintf("%02d",$i); - $objects[] = new DeleteObjectInfo($key); - } - $dresult = $this->ossClient->deleteObjectVersions($this->bucket, $objects); - $this->assertEquals(5, count($dresult)); - $this->assertEquals('deletes/00', $dresult[0]->getKey()); - $this->assertEquals('true', $dresult[0]->getDeleteMarker()); - $this->assertEquals('', $dresult[0]->getVersionId()); - $this->assertFalse(empty($dresult[0]->getDeleteMarkerVersionId())); - - $result = $this->ossClient->listObjects($this->bucket, $options); - $this->assertEquals(0, count($result->getObjectList())); - - //delete by version-id - $vresult = $this->ossClient->listObjectVersions($this->bucket, $options); - $versions = $vresult->getObjectVersionList(); - $deleteMarkerList = $vresult->getDeleteMarkerList(); - $this->assertEquals(10, count($versions)); - $this->assertEquals(5, count($deleteMarkerList)); - - $objects = array(); - foreach ($versions as $obj) { - $objects[] = new DeleteObjectInfo($obj->getKey(), $obj->getVersionId()); - } - $dresult = $this->ossClient->deleteObjectVersions($this->bucket, $objects); - $this->assertEquals(10, count($dresult)); - $this->assertEquals('deletes/00', $dresult[0]->getKey()); - $this->assertEquals('', $dresult[0]->getDeleteMarker()); - $this->assertFalse(empty($dresult[0]->getVersionId())); - $this->assertTrue(empty($dresult[0]->getDeleteMarkerVersionId())); - $this->assertEquals('deletes/00', $dresult[1]->getKey()); - $this->assertEquals('', $dresult[1]->getDeleteMarker()); - $this->assertFalse(empty($dresult[1]->getVersionId())); - $this->assertTrue(empty($dresult[1]->getDeleteMarkerVersionId())); - - - $vresult = $this->ossClient->listObjectVersions($this->bucket, $options); - $versions = $vresult->getObjectVersionList(); - $deleteMarkerList = $vresult->getDeleteMarkerList(); - $this->assertEquals(0, count($versions)); - $this->assertEquals(5, count($deleteMarkerList)); - - $objects = array(); - foreach ($deleteMarkerList as $obj) { - $objects[] = new DeleteObjectInfo($obj->getKey(), $obj->getVersionId()); - } - $dresult = $this->ossClient->deleteObjectVersions($this->bucket, $objects); - $this->assertEquals(5, count($dresult)); - $this->assertEquals('deletes/00', $dresult[0]->getKey()); - $this->assertEquals('true', $dresult[0]->getDeleteMarker()); - $this->assertFalse(empty($dresult[1]->getVersionId())); - $this->assertFalse(empty($dresult[1]->getDeleteMarkerVersionId())); - - $vresult = $this->ossClient->listObjectVersions($this->bucket, $options); - $versions = $vresult->getObjectVersionList(); - $deleteMarkerList = $vresult->getDeleteMarkerList(); - $this->assertEquals(0, count($versions)); - $this->assertEquals(0, count($deleteMarkerList)); - } - - protected function setUp(): void - { - parent::setUp(); - - $this->ossClient->putBucketVersioning($this->bucket, "Enabled"); - - } - - protected function tearDown(): void - { - if (!$this->ossClient->doesBucketExist($this->bucket)) { - return; - } - - $this->ossClient->putBucketVersioning($this->bucket, "Suspended"); - - $result = $this->ossClient->listObjectVersions( - $this->bucket, array('max-keys' => 1000, 'delimiter' => '')); - - $versions = $result->getObjectVersionList(); - $deleteMarkers = $result->getDeleteMarkerList(); - - foreach ($versions as $obj) { - $options = array( - OssClient::OSS_VERSION_ID => $obj->getVersionId(), - ); - $this->ossClient->deleteObject($this->bucket, $obj->getKey(), $options); - } - - foreach ($deleteMarkers as $del) { - $options = array( - OssClient::OSS_VERSION_ID => $del->getVersionId(), - ); - $this->ossClient->deleteObject($this->bucket, $del->getKey(), $options); - } - - parent::tearDown(); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientRestoreObjectTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientRestoreObjectTest.php deleted file mode 100644 index 9aa0b9b7..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientRestoreObjectTest.php +++ /dev/null @@ -1,174 +0,0 @@ -ossClient->putObject($this->iaBucket, $object,'testcontent'); - try{ - $this->ossClient->restoreObject($this->iaBucket, $object); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('400', $e->getHTTPStatus()); - $this->assertEquals('OperationNotSupported', $e->getErrorCode()); - } - } - - public function testNullObjectRestoreObject() - { - $object = 'null-object'; - - try{ - $this->ossClient->restoreObject($this->bucket, $object); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('404', $e->getHTTPStatus()); - } - } - - public function testArchiveRestoreObject() - { - $object = 'storage-object'; - - $this->ossClient->putObject($this->archiveBucket, $object,'testcontent'); - try{ - $this->ossClient->getObject($this->archiveBucket, $object); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('403', $e->getHTTPStatus()); - $this->assertEquals('InvalidObjectState', $e->getErrorCode()); - } - $result = $this->ossClient->restoreObject($this->archiveBucket, $object); - common::waitMetaSync(); - $this->assertEquals('202', $result['info']['http_code']); - - try{ - $this->ossClient->restoreObject($this->archiveBucket, $object); - }catch(OssException $e){ - $this->assertEquals('409', $e->getHTTPStatus()); - $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); - } - } - - public function testColdArchiveRestoreObject() - { - $client = new OssClient( - getenv('OSS_ACCESS_KEY_ID'), - getenv('OSS_ACCESS_KEY_SECRET'), - 'oss-ap-southeast-1.aliyuncs.com', false); - - $bucket = $this->bucket . 'cold-archive'; - $object = 'storage-object'; - - //create bucket - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_COLDARCHIVE - ); - $client->createBucket($bucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - - //test with days - $client->putObject($bucket, $object,'testcontent'); - - try{ - $client->getObject($bucket, $object); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('403', $e->getHTTPStatus()); - $this->assertEquals('InvalidObjectState', $e->getErrorCode()); - } - - $config = new RestoreConfig(5); - $resoptions = array( - OssClient::OSS_RESTORE_CONFIG => $config - ); - try{ - $client->restoreObject($bucket, $object, $resoptions); - }catch(OssException $e){ - $this->assertTrue(false); - } - - try{ - $client->restoreObject($bucket, $object, $resoptions); - }catch(OssException $e){ - $this->assertEquals('409', $e->getHTTPStatus()); - $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); - } - - //test with days & tier - $client->putObject($bucket, $object,'testcontent'); - - try{ - $client->getObject($bucket, $object); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('403', $e->getHTTPStatus()); - $this->assertEquals('InvalidObjectState', $e->getErrorCode()); - } - - $config = new RestoreConfig(5, "Expedited"); - $resoptions = array( - OssClient::OSS_RESTORE_CONFIG => $config - ); - try{ - $client->restoreObject($bucket, $object, $resoptions); - }catch(OssException $e){ - $this->assertTrue(false); - } - - try{ - $client->restoreObject($bucket, $object, $resoptions); - }catch(OssException $e){ - $this->assertEquals('409', $e->getHTTPStatus()); - $this->assertEquals('RestoreAlreadyInProgress', $e->getErrorCode()); - } - - $client->deleteObject($bucket, $object); - $client->deleteBucket($bucket); - } - - - protected function setUp(): void - { - parent::setUp(); - - $this->iaBucket = 'ia-' . $this->bucket; - $this->archiveBucket = 'archive-' . $this->bucket; - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_IA - ); - - $this->ossClient->createBucket($this->iaBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - - $options = array( - OssClient::OSS_STORAGE => OssClient::OSS_STORAGE_ARCHIVE - ); - - $this->ossClient->createBucket($this->archiveBucket, OssClient::OSS_ACL_TYPE_PRIVATE, $options); - } - - protected function tearDown(): void - { - parent::tearDown(); - - $object = 'storage-object'; - - $this->ossClient->deleteObject($this->iaBucket, $object); - $this->ossClient->deleteObject($this->archiveBucket, $object); - $this->ossClient->deleteBucket($this->iaBucket); - $this->ossClient->deleteBucket($this->archiveBucket); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientSignatureTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientSignatureTest.php deleted file mode 100644 index 00cf89a5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientSignatureTest.php +++ /dev/null @@ -1,167 +0,0 @@ -ossClient->putObject($this->bucket, $object, file_get_contents(__FILE__)); - $timeout = 3600; - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $request = new RequestCore($signedUrl); - $request->set_method('GET'); - $request->add_header('Content-Type', ''); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); - $this->assertEquals(file_get_contents(__FILE__), $res->body); - } - - public function testGetSignedUrlForPuttingObject() - { - $object = "a.file"; - $timeout = 3600; - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout, "PUT"); - $content = file_get_contents(__FILE__); - $request = new RequestCore($signedUrl); - $request->set_method('PUT'); - $request->add_header('Content-Type', ''); - $request->add_header('Content-Length', strlen($content)); - $request->set_body($content); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), - $request->get_response_body(), $request->get_response_code()); - $this->assertTrue($res->isOK()); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testGetSignedUrlForPuttingObjectFromFile() - { - $file = __FILE__; - $object = "a.file"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout, "PUT", $options); - $request = new RequestCore($signedUrl); - $request->set_method('PUT'); - $request->add_header('Content-Type', 'txt'); - $request->set_read_file($file); - $request->set_read_stream_size(sprintf('%u',filesize($file))); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), - $request->get_response_body(), $request->get_response_code()); - $this->assertTrue($res->isOK()); - } catch (OssException $e) { - $this->assertFalse(true); - } - - } - - public function testSignedUrlWithException() - { - $file = __FILE__; - $object = "a.file"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout, "POST", $options); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "method is invalid") == false) - { - $this->assertTrue(false); - } - } - } - - function testGetgenPreSignedUrlForGettingObject() - { - $object = "a.file"; - $this->ossClient->putObject($this->bucket, $object, file_get_contents(__FILE__)); - $expires = time() + 3600; - try { - $signedUrl = $this->ossClient->generatePresignedUrl($this->bucket, $object, $expires); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $request = new RequestCore($signedUrl); - $request->set_method('GET'); - $request->add_header('Content-Type', ''); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); - $this->assertEquals(file_get_contents(__FILE__), $res->body); - } - - function testGetgenPreSignedUrlVsSignedUrl() - { - $object = "object-vs.file"; - $signedUrl1 = '245'; - $signedUrl2 = '123'; - $expiration = 0; - - do { - usleep(500000); - $begin = time(); - $expiration = time() + 3600; - $signedUrl1 = $this->ossClient->generatePresignedUrl($this->bucket, $object, $expiration); - $signedUrl2 = $this->ossClient->signUrl($this->bucket, $object, 3600); - $end = time(); - } while ($begin != $end); - $this->assertEquals($signedUrl1, $signedUrl2); - $this->assertTrue(strpos($signedUrl1, 'Expires='.$expiration) !== false); - } - - protected function tearDown(): void - { - $this->ossClient->deleteObject($this->bucket, "a.file"); - parent::tearDown(); - } - - protected function setUp(): void - { - parent::setUp(); - /** - * 上传本地变量到bucket - */ - $object = "a.file"; - $content = file_get_contents(__FILE__); - $options = array( - OssClient::OSS_LENGTH => strlen($content), - OssClient::OSS_HEADERS => array( - 'Expires' => 'Fri, 28 Feb 2020 05:38:42 GMT', - 'Cache-Control' => 'no-cache', - 'Content-Disposition' => 'attachment;filename=oss_download.log', - 'Content-Encoding' => 'utf-8', - 'Content-Language' => 'zh-CN', - 'x-oss-server-side-encryption' => 'AES256', - 'x-oss-meta-self-define-title' => 'user define meta info', - ), - ); - - try { - $this->ossClient->putObject($this->bucket, $object, $content, $options); - } catch (OssException $e) { - $this->assertFalse(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientTest.php deleted file mode 100644 index 59ca8d94..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssClientTest.php +++ /dev/null @@ -1,494 +0,0 @@ -credentials = new TestEmptyIdCredentials(); - } - else if ($flag == 1) { - $this->credentials = new TestEmptySecretCredentials(); - } - else { - $this->credentials = null; - } - } - - /** - * @return Credentials - */ - public function getCredentials() - { - return $this->credentials; - } -} - - -class OssClientTest extends TestOssClientBase -{ - public function testConstrunct() - { - try { - $ossClient = new OssClient('id', 'key', 'http://oss-cn-hangzhou.aliyuncs.com'); - $this->assertFalse($ossClient->isUseSSL()); - $ossClient->setUseSSL(true); - $this->assertTrue($ossClient->isUseSSL()); - $this->assertTrue(true); - $this->assertEquals(3, $ossClient->getMaxRetries()); - $ossClient->setMaxTries(4); - $this->assertEquals(4, $ossClient->getMaxRetries()); - $ossClient->setTimeout(10); - $ossClient->setConnectTimeout(20); - } catch (OssException $e) { - assertFalse(true); - } - } - - public function testConstrunct2() - { - try { - $ossClient = new OssClient('id', "", 'http://oss-cn-hangzhou.aliyuncs.com'); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals("access key secret is empty", $e->getMessage()); - } - } - - public function testConstrunct3() - { - try { - $ossClient = new OssClient("", 'key', 'http://oss-cn-hangzhou.aliyuncs.com'); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals("access key id is empty", $e->getMessage()); - } - } - - public function testConstrunct4() - { - try { - $ossClient = new OssClient('id', 'key', ""); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('endpoint is empty', $e->getMessage()); - } - } - - public function testConstrunct5() - { - try { - $ossClient = new OssClient('id', 'key', "123.123.123.1"); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testConstrunct6() - { - try { - $ossClient = new OssClient('id', 'key', "https://123.123.123.1"); - $this->assertTrue($ossClient->isUseSSL()); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $ossClient = new OssClient('id', 'key', "https://123.123.123.1:3128"); - $this->assertTrue($ossClient->isUseSSL()); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testConstrunct7() - { - try { - $ossClient = new OssClient('id', 'key', "http://123.123.123.1"); - $this->assertFalse($ossClient->isUseSSL()); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $ossClient = new OssClient('id', 'key', "http://123.123.123.1:3128"); - $this->assertFalse($ossClient->isUseSSL()); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testConstrunct8() - { - try { - $ossClient = new OssClient('id', 'key', "http://123.123.123.1", true); - $ossClient->listBuckets(); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertFalse(false); - } - } - - public function testConstrunct9() - { - try { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); - $ossClient->listBuckets(); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testConstrunct10() - { - try { - $ossClient = new OssClient('id', 'key', "http://ABC-COM.TEST.123.cn", true); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - public function testConstrunct11() - { - try { - $ossClient = new OssClient('id', 'key', "oss-test.com\\aliyuncs.com"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('endpoint is invalid:'."oss-test.com\\aliyuncs.com", $e->getMessage()); - } - } - - public function testConstrunct12() - { - try { - $ossClient = new OssClient('id', 'key', "192.168.1.0:abc123"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('endpoint is invalid:'."192.168.1.0:abc123", $e->getMessage()); - } - } - - public function testSupportPutEmptyObject() - { - try { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = $this->bucket; - $ossClient = new OssClient($accessKeyId, $accessKeySecret , $endpoint, false); - $ossClient->putObject($bucket,'test_emptybody',''); - } catch (OssException $e) { - $this->assertFalse(true); - } - - //use invalid sts-token, should fail. - try { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = $this->bucket; - $ossClient = new OssClient($accessKeyId, $accessKeySecret , $endpoint, false, "invalid-sts-token"); - $ossClient->putObject($bucket,'test_emptybody',''); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('InvalidAccessKeyId', $e->getErrorCode()); - } - } - - public function testCreateObjectDir() - { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = $this->bucket; - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); - - try { - $object='test-dir'; - $ossClient->createObjectDir($bucket,$object); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - - try { - $object='0'; - $ossClient->createObjectDir($bucket,$object); - $ossClient->putObject($bucket,$object, ''); - $this->assertTrue(true); - } catch (OssException $e) { - var_dump($e); - $this->assertFalse(true); - } - } - - public function testGetBucketCors() - { - try { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = getenv('OSS_BUCKET'); - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); - $ossClient->getBucketCors($bucket); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testGetBucketCname() - { - try { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = $this->bucket; - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); - $ossClient->getBucketCname($bucket); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testProxySupport() - { - $accessKeyId = ' ' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = getenv('OSS_BUCKET') . '-proxy'; - $requestProxy = getenv('OSS_PROXY'); - $key = 'test-proxy-srv-object'; - $content = 'test-content'; - $proxys = parse_url($requestProxy); - - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, null, $requestProxy); - - $result = $ossClient->createBucket($bucket); - $this->checkProxy($result, $proxys); - - $result = $ossClient->putObject($bucket, $key, $content); - $this->checkProxy($result, $proxys); - $result = $ossClient->getObject($bucket, $key); - $this->assertEquals($content, $result); - - // list object - $objectListInfo = $ossClient->listObjects($bucket); - $objectList = $objectListInfo->getObjectList(); - $this->assertNotNull($objectList); - $this->assertTrue(is_array($objectList)); - $objects = array(); - foreach ($objectList as $value) { - $objects[] = $value->getKey(); - } - $this->assertEquals(1, count($objects)); - $this->assertTrue(in_array($key, $objects)); - - $result = $ossClient->deleteObject($bucket, $key); - $this->checkProxy($result,$proxys); - - $result = $ossClient->deleteBucket($bucket); - $this->checkProxy($result, $proxys); - } - - private function checkProxy($result, $proxys) - { - $this->assertEquals($result['info']['primary_ip'], $proxys['host']); - $this->assertEquals($result['info']['primary_port'], $proxys['port']); - $this->assertTrue(array_key_exists('via', $result)); - } - - public function testIpEndpoint() - { - try { - $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = '192.168.1.1'; - $bucket = getenv('OSS_BUCKET'); - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false); - $object = "a.file"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); - $this->assertTrue(strpos($signedUrl, '192.168.1.1/skyranch-php-test/a.file?') != false); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testCnameEndpoint() - { - try { - $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = 'cname.endpoint'; - $bucket = getenv('OSS_BUCKET'); - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, true); - $object = "a.file"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); - $this->assertTrue(strpos($signedUrl, 'cname.endpoint/a.file?') != false); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testStsToken() - { - try { - $accessKeyId = 'sk' . getenv('OSS_ACCESS_KEY_ID') . ' '; - $accessKeySecret = ' ' . getenv('OSS_ACCESS_KEY_SECRET') . ' '; - $endpoint = ' ' . getenv('OSS_ENDPOINT') . '/ '; - $bucket = getenv('OSS_BUCKET'); - $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, "test-token"); - $object = "a.file"; - $timeout = 3600; - $options = array('Content-Type' => 'txt'); - $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options); - $this->assertTrue(strpos($signedUrl, 'security-token=test-token') != false); - } catch (OssException $e) { - $this->assertFalse(true); - } - } - - public function testEmptyCredentials() - { - // empty case, should throw exception - try { - $id = ''; - $secret = 'accessKey_secret'; - $provider = new StaticCredentialsProvider($id, $secret); - $config = array( - 'provider' => $provider, - 'endpoint'=>'http://oss-cn-hangzhou.aliyuncs.com' - ); - $ossClient = new OssClient($config); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('access key id is empty', $e->getMessage()); - } - - // empty case, should throw exception - try { - $id = 'id'; - $secret = ''; - $provider = new StaticCredentialsProvider($id, $secret); - $config = array( - 'provider' => $provider, - 'endpoint'=>'http://oss-cn-hangzhou.aliyuncs.com' - ); - $ossClient = new OssClient($config); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('access key secret is empty', $e->getMessage()); - } - - // empty case, should throw exception - try { - $provider = new TestCredentialsProvider(0); - $config = array( - 'provider' => $provider, - 'endpoint'=>'http://oss-cn-hangzhou.aliyuncs.com' - ); - $ossClient = new OssClient($config); - $ossClient->getBucketAcl("bucket"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('credentials is empty.', $e->getMessage()); - } - - // empty case, should throw exception - try { - $provider = new TestCredentialsProvider(1); - $config = array( - 'provider' => $provider, - 'endpoint'=>'http://oss-cn-hangzhou.aliyuncs.com' - ); - $ossClient = new OssClient($config); - $ossClient->getBucketAcl("bucket"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('access key secret is empty', $e->getMessage()); - } - - // empty case, should throw exception - try { - $provider = new TestCredentialsProvider(2); - $config = array( - 'provider' => $provider, - 'endpoint'=>'http://oss-cn-hangzhou.aliyuncs.com' - ); - $ossClient = new OssClient($config); - $ossClient->getBucketAcl("bucket"); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('access key id is empty', $e->getMessage()); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssExceptionTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssExceptionTest.php deleted file mode 100644 index 91de9bb5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssExceptionTest.php +++ /dev/null @@ -1,19 +0,0 @@ -assertTrue(false); - } catch (OssException $e) { - $this->assertNotNull($e); - $this->assertEquals($e->getMessage(), "ERR"); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssTrafficLimitTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssTrafficLimitTest.php deleted file mode 100644 index 5aeb0ea6..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssTrafficLimitTest.php +++ /dev/null @@ -1,96 +0,0 @@ - array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - )); - - try { - $result = $this->ossClient->putObject($this->bucket, 'default-object', 'content', $options); - $this->assertTrue(true); - $this->assertTrue(isset($result["x-oss-qos-delay-time"])); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $result = $this->ossClient->appendObject($this->bucket, 'append-object', 'content', 0, $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $result = $this->ossClient->copyObject($this->bucket, 'default-object', $this->bucket, 'copy-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - - try { - $result = $this->ossClient->getObject($this->bucket, 'default-object', $options); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - function testTrafficLimitInQuery() - { - $options = array( - OssClient::OSS_TRAFFIC_LIMIT => 819200, - ); - - $object = "get.file"; - $content = 'hello world'; - $this->ossClient->putObject($this->bucket, $object, $content); - $timeout = 3600; - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout, "GET", $options); - $this->assertTrue(stripos($signedUrl, 'x-oss-traffic-limit=819200') > 0); - } catch (OssException $e) { - $this->assertFalse(true); - } - - $request = new RequestCore($signedUrl); - $request->set_method('GET'); - $request->add_header('Content-Type', ''); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), $request->get_response_body(), $request->get_response_code()); - $this->assertEquals($content, $res->body); - - - $object = "put.file"; - $timeout = 3600; - try { - $signedUrl = $this->ossClient->signUrl($this->bucket, $object, $timeout, "PUT", $options); - $this->assertTrue(stripos($signedUrl, 'x-oss-traffic-limit=819200') > 0); - - $request = new RequestCore($signedUrl); - $request->set_method('PUT'); - $request->add_header('Content-Type', ''); - $request->add_header('Content-Length', strlen($content)); - $request->set_body($content); - $request->send_request(); - $res = new ResponseCore($request->get_response_header(), - $request->get_response_body(), $request->get_response_code()); - $this->assertTrue($res->isOK()); - } catch (OssException $e) { - $this->assertFalse(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php deleted file mode 100644 index 598a7cc5..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/OssUtilTest.php +++ /dev/null @@ -1,300 +0,0 @@ -assertEquals(OssUtil::chkChinese("hello,world"), 0); - $str = '你好,这里是卖咖啡!'; - $strGBK = OssUtil::encodePath($str); - $this->assertEquals(OssUtil::chkChinese($str), 1); - $this->assertEquals(OssUtil::chkChinese($strGBK), 1); - } - - public function testIsGB2312() - { - $str = '你好,这里是卖咖啡!'; - $this->assertFalse(OssUtil::isGb2312($str)); - } - - public function testCheckChar() - { - $str = '你好,这里是卖咖啡!'; - $this->assertFalse(OssUtil::checkChar($str)); - $this->assertTrue(OssUtil::checkChar(iconv("UTF-8", "GB2312//IGNORE", $str))); - } - - public function testIsIpFormat() - { - $this->assertTrue(OssUtil::isIPFormat("10.101.160.147")); - $this->assertTrue(OssUtil::isIPFormat("12.12.12.34")); - $this->assertTrue(OssUtil::isIPFormat("12.12.12.12")); - $this->assertTrue(OssUtil::isIPFormat("255.255.255.255")); - $this->assertTrue(OssUtil::isIPFormat("0.1.1.1")); - $this->assertFalse(OssUtil::isIPFormat("0.1.1.x")); - $this->assertFalse(OssUtil::isIPFormat("0.1.1.256")); - $this->assertFalse(OssUtil::isIPFormat("256.1.1.1")); - $this->assertFalse(OssUtil::isIPFormat("0.1.1.0.1")); - $this->assertTrue(OssUtil::isIPFormat("10.10.10.10:123")); - } - - public function testToQueryString() - { - $option = array("a" => "b"); - $this->assertEquals('a=b', OssUtil::toQueryString($option)); - } - - public function testSReplace() - { - $str = "<>&'\""; - $this->assertEquals("&lt;&gt;&'"", OssUtil::sReplace($str)); - } - - public function testCheckChinese() - { - $str = '你好,这里是卖咖啡!'; - $this->assertEquals(OssUtil::chkChinese($str), 1); - if (OssUtil::isWin()) { - $strGB = OssUtil::encodePath($str); - $this->assertEquals($str, iconv("GB2312", "UTF-8", $strGB)); - } - } - - public function testValidateOption() - { - $option = 'string'; - - try { - OssUtil::validateOptions($option); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertEquals("string:option must be array", $e->getMessage()); - } - - $option = null; - - try { - OssUtil::validateOptions($option); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertFalse(true); - } - - } - - public function testCreateDeleteObjectsXmlBody() - { - $xml = <<trueobj1 -BBBB; - $a = array('obj1'); - $this->assertEquals($xml, $this->cleanXml(OssUtil::createDeleteObjectsXmlBody($a, 'true'))); - } - - public function testCreateCompleteMultipartUploadXmlBody() - { - $xml = <<2xx -BBBB; - $a = array(array("PartNumber" => 2, "ETag" => "xx")); - $this->assertEquals($this->cleanXml(OssUtil::createCompleteMultipartUploadXmlBody($a)), $xml); - } - - public function testCreateBucketXmlBody() - { - $xml = <<Standard -BBBB; - $storageClass ="Standard"; - $this->assertEquals($this->cleanXml(OssUtil::createBucketXmlBody($storageClass)), $xml); - } - - public function testValidateBucket() - { - $this->assertTrue(OssUtil::validateBucket("xxx")); - $this->assertFalse(OssUtil::validateBucket("XXXqwe123")); - $this->assertFalse(OssUtil::validateBucket("XX")); - $this->assertFalse(OssUtil::validateBucket("/X")); - $this->assertFalse(OssUtil::validateBucket("")); - } - - public function testValidateObject() - { - $this->assertTrue(OssUtil::validateObject("xxx")); - $this->assertTrue(OssUtil::validateObject("xxx23")); - $this->assertTrue(OssUtil::validateObject("12321-xxx")); - $this->assertTrue(OssUtil::validateObject("x")); - $this->assertFalse(OssUtil::validateObject("/aa")); - $this->assertFalse(OssUtil::validateObject("\\aa")); - $this->assertFalse(OssUtil::validateObject("")); - } - - public function testStartWith() - { - $this->assertTrue(OssUtil::startsWith("xxab", "xx"), true); - } - - public function testReadDir() - { - $list = OssUtil::readDir("./src", ".|..|.svn|.git", true); - $this->assertNotNull($list); - } - - //public function testIsWin() - //{ - // //$this->assertTrue(OssUtil::isWin()); - //} - - public function testGetMd5SumForFile() - { - $this->assertEquals(OssUtil::getMd5SumForFile(__FILE__, 0, sprintf('%u',filesize(__FILE__)) - 1), base64_encode(md5(file_get_contents(__FILE__), true))); - // false case - $this->assertEquals(OssUtil::getMd5SumForFile(__FILE__, 0, OssClient::OSS_MAX_PART_SIZE + 1), ""); - $this->assertEquals(OssUtil::getMd5SumForFile(__FILE__, 0, sprintf('%u',filesize(__FILE__)) + 1), ""); - - } - - public function testGenerateFile() - { - $path = __DIR__ . DIRECTORY_SEPARATOR . "generatedFile.txt"; - OssUtil::generateFile($path, 1024 * 1024); - $this->assertEquals(sprintf('%u',filesize($path)), 1024 * 1024); - unlink($path); - } - - public function testThrowOssExceptionWithMessageIfEmpty() - { - $null = null; - try { - OssUtil::throwOssExceptionWithMessageIfEmpty($null, "xx"); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('xx', $e->getMessage()); - } - } - - public function testThrowOssExceptionWithMessageIfEmpty2() - { - $null = ""; - try { - OssUtil::throwOssExceptionWithMessageIfEmpty($null, "xx"); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('xx', $e->getMessage()); - } - } - - public function testValidContent() - { - $null = ""; - try { - OssUtil::validateContent($null); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('http body content is invalid', $e->getMessage()); - } - - $notnull = "x"; - try { - OssUtil::validateContent($notnull); - $this->assertTrue(true); - } catch (OssException $e) { - $this->assertEquals('http body content is invalid', $e->getMessage()); - } - } - - public function testThrowOssExceptionWithMessageIfEmpty3() - { - $null = "xx"; - try { - OssUtil::throwOssExceptionWithMessageIfEmpty($null, "xx"); - $this->assertTrue(True); - } catch (OssException $e) { - $this->assertTrue(false); - } - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } - - public function testGetHostPortFromEndpoint() - { - $str = OssUtil::getHostPortFromEndpoint('http://username:password@hostname:80/path?arg=value#anchor'); - $this->assertEquals('hostname:80', $str); - - $str = OssUtil::getHostPortFromEndpoint('hostname:80'); - $this->assertEquals('hostname:80', $str); - - $str = OssUtil::getHostPortFromEndpoint('www.hostname.com'); - $this->assertEquals('www.hostname.com', $str); - - $str = OssUtil::getHostPortFromEndpoint('http://www.hostname.com'); - $this->assertEquals('www.hostname.com', $str); - - $str = OssUtil::getHostPortFromEndpoint('https://www.hostname.com'); - $this->assertEquals('www.hostname.com', $str); - - $str = OssUtil::getHostPortFromEndpoint('192.168.1.10:8080'); - $this->assertEquals('192.168.1.10:8080', $str); - - $str = OssUtil::getHostPortFromEndpoint('file://username:password@hostname:80/path?arg=value#anchor'); - $this->assertEquals('hostname:80', $str); - - $str = OssUtil::getHostPortFromEndpoint('https://WWW.hostname.com-_www.test.com'); - $this->assertEquals('WWW.hostname.com-_www.test.com', $str); - - try { - $str = OssUtil::getHostPortFromEndpoint('http:///path?arg=value#anchor'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $str = OssUtil::getHostPortFromEndpoint('https://www.hostname.com\www.test.com'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $str = OssUtil::getHostPortFromEndpoint('www.hostname.com-_*www.test.com'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $str = OssUtil::getHostPortFromEndpoint('www.hostname.com:ab123'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - - try { - $str = OssUtil::getHostPortFromEndpoint('www.hostname.com:'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } - - public function testDecodeKey() - { - try { - OssUtil::decodeKey("key", "unknown"); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/PutSetDeleteResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/PutSetDeleteResultTest.php deleted file mode 100644 index 202f173f..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/PutSetDeleteResultTest.php +++ /dev/null @@ -1,66 +0,0 @@ -assertFalse(true); - } catch (OssException $e) { - $this->assertEquals('raw response is null', $e->getMessage()); - } - } - - public function testOkResponse() - { - $header= array( - 'x-oss-request-id' => '582AA51E004C4550BD27E0E4', - 'etag' => '595FA1EA77945233921DF12427F9C7CE', - 'content-md5' => 'WV+h6neUUjOSHfEkJ/nHzg==', - 'info' => array( - 'http_code' => '200', - 'method' => 'PUT' - ), - ); - $response = new ResponseCore($header, "this is a mock body, just for test", 200); - $result = new PutSetDeleteResult($response); - $data = $result->getData(); - $this->assertTrue($result->isOK()); - $this->assertEquals("this is a mock body, just for test", $data['body']); - $this->assertEquals('582AA51E004C4550BD27E0E4', $data['x-oss-request-id']); - $this->assertEquals('595FA1EA77945233921DF12427F9C7CE', $data['etag']); - $this->assertEquals('WV+h6neUUjOSHfEkJ/nHzg==', $data['content-md5']); - $this->assertEquals('200', $data['info']['http_code']); - $this->assertEquals('PUT', $data['info']['method']); - } - - public function testFailResponse() - { - $response = new ResponseCore(array(), "", 301); - try { - new PutSetDeleteResult($response); - $this->assertFalse(true); - } catch (OssException $e) { - $this->assertFalse(false); - } - } - - protected function setUp(): void - { - - } - - protected function tearDown(): void - { - - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/RefererConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/RefererConfigTest.php deleted file mode 100644 index 5112da89..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/RefererConfigTest.php +++ /dev/null @@ -1,54 +0,0 @@ - - -true - -http://www.aliyun.com -https://www.aliyun.com -http://www.*.com -https://www.?.aliyuncs.com - - -BBBB; - - private $validXml2 = << - -true - -http://www.aliyun.com - - -BBBB; - - public function testParseValidXml() - { - $refererConfig = new RefererConfig(); - $refererConfig->parseFromXml($this->validXml); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($refererConfig->serializeToXml())); - } - - public function testParseValidXml2() - { - $refererConfig = new RefererConfig(); - $refererConfig->parseFromXml($this->validXml2); - $this->assertEquals(true, $refererConfig->isAllowEmptyReferer()); - $this->assertEquals(1, count($refererConfig->getRefererList())); - $this->assertEquals($this->cleanXml($this->validXml2), $this->cleanXml(strval($refererConfig))); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityConfigTest.php deleted file mode 100644 index 58aa7915..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityConfigTest.php +++ /dev/null @@ -1,58 +0,0 @@ - - -10 - -BBBB; - -private $validXml_20 = << - -20 - -BBBB; - - public function testConstruct() - { - $config = new StorageCapacityConfig(10); - $this->assertEquals($config->getStorageCapacity(), 10); - $this->assertEquals($this->cleanXml($this->validXml_10), $this->cleanXml($config->serializeToXml())); - } - - public function testSetStorageCapacity() - { - $config = new StorageCapacityConfig(2); - $config->setStorageCapacity(20); - $this->assertEquals($this->cleanXml($this->validXml_20), $this->cleanXml($config->serializeToXml())); - $this->assertEquals($this->cleanXml($this->validXml_20), $this->cleanXml($config->__toString())); - } - - public function testParseFromXml() - { - try { - $config = new StorageCapacityConfig(10); - $config->parseFromXml('invaide xml'); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - if (strpos($e, "Not implemented.") == false) - { - $this->assertTrue(false); - } - } - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityTest.php deleted file mode 100644 index 8d2a9dff..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/StorageCapacityTest.php +++ /dev/null @@ -1,63 +0,0 @@ - - - 1 - -BBBB; - - private $validXml = << - - 1 - -BBBB; - - public function testParseInValidXml() - { - $response = new ResponseCore(array(), $this->inValidXml, 300); - try { - new GetStorageCapacityResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } - - public function testParseEmptyXml() - { - $response = new ResponseCore(array(), "", 300); - try { - new GetStorageCapacityResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertTrue(true); - } - } - - public function testParseValidXml() - { - $response = new ResponseCore(array(), $this->validXml, 200); - $result = new GetStorageCapacityResult($response); - $this->assertEquals($result->getData(), 1); - } - - public function testSerializeToXml() - { - $xml = "\n1\n"; - - $storageCapacityConfig = new StorageCapacityConfig(1); - $content = $storageCapacityConfig->serializeToXml(); - $this->assertEquals($content, $xml); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php deleted file mode 100644 index c4363918..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/SymlinkTest.php +++ /dev/null @@ -1,77 +0,0 @@ -bucket; - $symlink = 'test-link'; - $special_object = 'exist_object^$#!~'; - $object = 'exist_object'; - - $this->ossClient ->putObject($bucket, $object, 'test_content'); - $this->ossClient->putSymlink($bucket, $symlink, $object); - $result = $this->ossClient->getObject($bucket, $symlink); - $this->assertEquals('test_content', $result); - - $this->ossClient ->putObject($bucket, $special_object, 'test_content'); - $this->ossClient->putSymlink($bucket, $symlink, $special_object); - $result = $this->ossClient->getObject($bucket, $symlink); - $this->assertEquals('test_content', $result); - } - - public function testGetSymlink() - { - $bucket = $this->bucket; - $symlink = 'test-link'; - $object = 'exist_object^$#!~'; - - $this->ossClient ->putObject($bucket, $object, 'test_content'); - $this->ossClient->putSymlink($bucket, $symlink, $object); - - $result = $this->ossClient->getSymlink($bucket, $symlink); - $this->assertEquals($result[OssClient::OSS_SYMLINK_TARGET], $object); - $this->assertEquals('200', $result[OssClient::OSS_INFO][OssClient::OSS_HTTP_CODE]); - $this->assertTrue(isset($result[OssClient::OSS_ETAG])); - $this->assertTrue(isset($result[OssClient::OSS_REQUEST_ID])); - } - - public function testPutNullSymlink() - { - $bucket = $this->bucket; - $symlink = 'null-link'; - $object_not_exist = 'not_exist_object+$#!b不'; - $this->ossClient->putSymlink($bucket, $symlink, $object_not_exist); - - try{ - $this->ossClient->getObject($bucket, $symlink); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('The symlink target object does not exist', $e->getErrorMessage()); - } - } - - public function testGetNullSymlink() - { - $bucket = $this->bucket; - $symlink = 'null-link-new'; - - try{ - $result = $this->ossClient->getSymlink($bucket, $symlink); - $this->assertTrue(false); - }catch (OssException $e){ - $this->assertEquals('The specified key does not exist.', $e->getErrorMessage()); - } - } -} - - diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TestOssClientBase.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TestOssClientBase.php deleted file mode 100644 index b2048712..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TestOssClientBase.php +++ /dev/null @@ -1,51 +0,0 @@ -bucket = Common::getBucketName() .'-'. time(); - $this->ossClient = Common::getOssClient(); - $this->ossClient->createBucket($this->bucket); - Common::waitMetaSync(); - } - - protected function tearDown(): void - { - if (!$this->ossClient->doesBucketExist($this->bucket)) { - return; - } - - $objects = $this->ossClient->listObjects( - $this->bucket, array('max-keys' => 1000, 'delimiter' => ''))->getObjectList(); - $keys = array(); - foreach ($objects as $obj) { - $keys[] = $obj->getKey(); - } - if (count($keys) > 0) { - $this->ossClient->deleteObjects($this->bucket, $keys); - } - $uploads = $this->ossClient->listMultipartUploads($this->bucket)->getUploads(); - foreach ($uploads as $up) { - $this->ossClient->abortMultipartUpload($this->bucket, $up->getKey(), $up->getUploadId()); - } - - $this->ossClient->deleteBucket($this->bucket); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TransferAccelerationConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TransferAccelerationConfigTest.php deleted file mode 100644 index 19f98054..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/TransferAccelerationConfigTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - -true - -BBBB; - private $validXml1 = << - -false - -BBBB; - - private $invalidXml1 = << - - -BBBB; - - public function testParseValidXml() - { - $transferConfig = new TransferAccelerationConfig(); - $transferConfig->parseFromXml($this->validXml); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml(strval($transferConfig))); - $this->assertEquals(true,$transferConfig->getEnabled()); - } - - public function testValidXml1() - { - $transferConfig = new TransferAccelerationConfig(); - $transferConfig->parseFromXml($this->validXml1); - $this->assertEquals($this->cleanXml($this->validXml1), $this->cleanXml(strval($transferConfig))); - $this->assertEquals(false,$transferConfig->getEnabled()); - } - - public function testInvalidXml1() - { - $transferConfig = new TransferAccelerationConfig(); - $transferConfig->parseFromXml($this->invalidXml1); - $this->assertEquals(false,$transferConfig->getEnabled()); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/UploadPartResultTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/UploadPartResultTest.php deleted file mode 100644 index df4ad945..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/UploadPartResultTest.php +++ /dev/null @@ -1,33 +0,0 @@ - '7265F4D211B56873A381D321F586E4A9'); - private $invalidHeader = array(); - - public function testParseValidHeader() - { - $response = new ResponseCore($this->validHeader, "", 200); - $result = new UploadPartResult($response); - $eTag = $result->getData(); - $this->assertEquals('7265F4D211B56873A381D321F586E4A9', $eTag); - } - - public function testParseInvalidHeader() - { - $response = new ResponseCore($this->invalidHeader, "", 200); - try { - new UploadPartResult($response); - $this->assertTrue(false); - } catch (OssException $e) { - $this->assertEquals('cannot get ETag', $e->getMessage()); - } - } -} diff --git a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/WebsiteConfigTest.php b/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/WebsiteConfigTest.php deleted file mode 100644 index d04b42c1..00000000 --- a/niucloud/vendor/aliyuncs/oss-sdk-php/tests/OSS/Tests/WebsiteConfigTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - - -index.html - - -errorDocument.html - - -BBBB; - - private $nullXml = << -BBBB; - private $nullXml2 = << -BBBB; - - public function testParseValidXml() - { - $websiteConfig = new WebsiteConfig("index"); - $websiteConfig->parseFromXml($this->validXml); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($websiteConfig->serializeToXml())); - } - - public function testParsenullXml() - { - $websiteConfig = new WebsiteConfig(); - $websiteConfig->parseFromXml($this->nullXml); - $this->assertTrue($this->cleanXml($this->nullXml) === $this->cleanXml($websiteConfig->serializeToXml()) || - $this->cleanXml($this->nullXml2) === $this->cleanXml($websiteConfig->serializeToXml())); - } - - public function testWebsiteConstruct() - { - $websiteConfig = new WebsiteConfig("index.html", "errorDocument.html"); - $this->assertEquals('index.html', $websiteConfig->getIndexDocument()); - $this->assertEquals('errorDocument.html', $websiteConfig->getErrorDocument()); - $this->assertEquals($this->cleanXml($this->validXml), $this->cleanXml($websiteConfig->serializeToXml())); - } - - private function cleanXml($xml) - { - return str_replace("\n", "", str_replace("\r", "", $xml)); - } -} diff --git a/niucloud/vendor/autoload.php b/niucloud/vendor/autoload.php deleted file mode 100644 index c1e4922f..00000000 --- a/niucloud/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ - 'app_name', - 'db' => - array ( - 'host' => 'localhost', - 'user' => 'sample_user', - 'pass' => 'sample_pass', - 'port' => 3306, - ), - 'other' => - array ( - 'multi' => - array ( - 'deep' => - array ( - 'nested' => 'config_value', - ), - ), - ), -); - -``` - -### Instance ConfigManager object - -```php -use clagiordano\weblibs\configmanager\ConfigManager; - -/** - * Instance object to read argument file - */ -$config = new ConfigManager("configfile.php"); -``` - -### Check if a value exists into config file - -```php -/** - * Check if a value exists into config file - */ -$value = $config->existValue('app'); -``` - -### Read a simple element from config file - -```php -/** - * Read a simple element from config file - */ -$value = $config->getValue('app'); -``` - -### Access to a nested element from config - -```php -/** - * Access to a nested element from config - */ -$nestedValue = $config->getValue('other.multi.deep.nested'); -``` - -### Change config value at runtime - -```php -/** - * Change config value at runtime - */ -$this->config->setValue('other.multi.deep.nested', "SUPERNESTED"); -``` - -### Save config file with original name (OVERWRITE) - -```php -/** - * Save config file with original name (OVERWRITE) - */ -$this->config->saveConfigFile(); -``` - -### Or save config file with a different name - -```php -/** - * Save config file with original name (OVERWRITE) - */ -$this->config->saveConfigFile('/new/file/name/or/path/test.php'); -``` - -### Optionally you can also reload config file from disk after save - -```php -/** - * Optionally you can also reload config file from disk after save - */ -$this->config->saveConfigFile('/new/file/name/or/path/test.php', true); -``` - -### Load another configuration file without reinstance ConfigManager - -```php -/** - * Load another configuration file without reinstance ConfigManager - */ -$this->config->loadConfig('another_config_file.php'); -``` - -## Legal -*Copyright (C) Claudio Giordano * diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/composer.json b/niucloud/vendor/clagiordano/weblibs-configmanager/composer.json deleted file mode 100644 index c159048e..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/composer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "clagiordano/weblibs-configmanager", - "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", - "type": "library", - "license": "LGPL-3.0-or-later", - "keywords": ["clagiordano", "weblibs", "configuration", "manager", "tool"], - "authors": [ - { - "name": "Claudio Giordano", - "email": "claudio.giordano@autistici.org", - "role": "Developer" - } - ], - "autoload": { - "psr-4": { - "clagiordano\\weblibs\\configmanager\\": "src/" - } - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "phpunit/phpunit": "^4.8", - "clagiordano/phpunit-result-printer": "^1" - }, - "autoload-dev": { - "psr-4": { - "clagiordano\\weblibs\\configmanager\\tests\\": "tests/", - "clagiordano\\weblibs\\configmanager\\testdata\\": "testdata/" - } - }, - "scripts": { - "test": [ - "Composer\\Config::disableProcessTimeout", - "./vendor/bin/phpunit --no-coverage" - ], - "coverage": [ - "Composer\\Config::disableProcessTimeout", - "php -dzend_extension=xdebug.so ./vendor/bin/phpunit" - ], - "debug": "php -dxdebug.remote_autostart=On -dzend_extension=xdebug.so ./vendor/bin/phpunit" - }, - "config": { - "platform": { - "php": "5.4" - } - } -} diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/composer.lock b/niucloud/vendor/clagiordano/weblibs-configmanager/composer.lock deleted file mode 100644 index d306da0c..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/composer.lock +++ /dev/null @@ -1,1095 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "6d2aba6439fb7be37e7120eed3311f56", - "packages": [], - "packages-dev": [ - { - "name": "clagiordano/phpunit-result-printer", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/clagiordano/phpunit-result-printer.git", - "reference": "b4351f747af7964bcdb1cc0d1aa9fe007022b3ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clagiordano/phpunit-result-printer/zipball/b4351f747af7964bcdb1cc0d1aa9fe007022b3ac", - "reference": "b4351f747af7964bcdb1cc0d1aa9fe007022b3ac", - "shasum": "" - }, - "require": { - "phpunit/phpunit": "4.8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "clagiordano\\PhpunitResultPrinter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Phpunit custom result printer class", - "time": "2019-07-16T10:33:26+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", - "shasum": "" - }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14T21:17:01+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.5", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2016-01-25T08:17:30+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-03-05T15:02:03+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" - }, - "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" - }, - "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2015-10-06T15:47:00+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "1.4.12", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", - "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-12-04T08:55:13+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "4.8.36", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", - "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" - }, - "suggest": { - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.8.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2017-06-21T08:07:12+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2015-10-02T06:51:40+00:00" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" - }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-05-22T07:24:03+00:00" - }, - { - "name": "sebastian/environment", - "version": "1.3.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-08-18T05:49:44+00:00" - }, - { - "name": "sebastian/exporter", - "version": "1.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-06-17T09:04:28+00:00" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12T03:26:01+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03T07:41:43+00:00" - }, - { - "name": "sebastian/version", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "shasum": "" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21T13:59:46+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b", - "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.19-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T09:01:57+00:00" - }, - { - "name": "symfony/yaml", - "version": "v2.8.52", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", - "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T11:18:13+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=5.4" - }, - "platform-dev": [], - "platform-overrides": { - "php": "5.4" - }, - "plugin-api-version": "1.1.0" -} diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/phpunit.xml b/niucloud/vendor/clagiordano/weblibs-configmanager/phpunit.xml deleted file mode 100644 index 43831358..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/phpunit.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - ./tests/ - - - - - - src/ - - - - - - - - - - - - - - - - - diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php b/niucloud/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php deleted file mode 100644 index 9db1d624..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php +++ /dev/null @@ -1,161 +0,0 @@ -loadConfig($configFilePath); - } - - /** - * Load config data from file and store it into internal property - * - * @param null|string $configFilePath - * - * @return IConfigurable - */ - public function loadConfig($configFilePath = null) - { - if (!is_null($configFilePath)) { - $this->configFilePath = $configFilePath; - - if (file_exists($configFilePath)) { - $this->configData = require $configFilePath; - } - } - - return $this; - } - - /** - * Prepare and write config file on disk - * - * @param null|string $configFilePath - * @param bool $autoReloadConfig - * - * @return IConfigurable - * @throws RuntimeException - */ - public function saveConfigFile($configFilePath = null, $autoReloadConfig = false) - { - if (is_null($configFilePath)) { - $configFilePath = $this->configFilePath; - } - - $configFileContent = "configData, true); - $configFileContent .= ";\n\n"; - - try { - file_put_contents($configFilePath, $configFileContent); - - if (is_callable('opcache_invalidate')) { - /** - * Invalidate opcache for writed file if opcache is available - */ - opcache_invalidate($configFilePath, true); - } - } catch (Exception $exc) { - throw new RuntimeException( - __METHOD__ . ": Failed to write config file to path '{$configFilePath}'" - ); - } - - if ($autoReloadConfig) { - $this->loadConfig($configFilePath); - } - - return $this; - } - - /** - * Get value pointer from config for get/set value - * - * @param string $configPath - * - * @return mixed - */ - private function & getValuePointer($configPath) - { - $configData =& $this->configData; - $parts = explode('.', $configPath); - $length = count($parts); - - for ($i = 0; $i < $length; $i++) { - if (!isset($configData[ $parts[ $i ] ])) { - $configData[ $parts[ $i ] ] = ($i === $length) ? [] : null; - } - - $configData = &$configData[ $parts[ $i ] ]; - } - - return $configData; - } - - /** - * Get value from config data throught keyValue path - * - * @param string $configPath - * @param mixed $defaultValue - * - * @return mixed - */ - public function getValue($configPath, $defaultValue = null) - { - $stored = $this->getValuePointer($configPath); - - return (is_null($stored) - ? $defaultValue - : $stored); - } - - /** - * Check if exist required config for keyValue - * - * @param string $keyValue - * - * @return mixed - */ - public function existValue($keyValue) - { - return !is_null($this->getValue($keyValue)); - } - - /** - * Set value in config path - * - * @param string $configPath - * @param mixed $newValue - * - * @return IConfigurable - */ - public function setValue($configPath, $newValue) - { - $configData = &$this->getValuePointer($configPath); - $configData = $newValue; - - return $this; - } -} diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php b/niucloud/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php deleted file mode 100644 index 7ca8d6d2..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php +++ /dev/null @@ -1,61 +0,0 @@ -config = new ConfigManager("TestConfigData.php"); - $this->assertInstanceOf('clagiordano\weblibs\configmanager\ConfigManager', $this->config); - - $this->assertFileExists($this->configFile); - $this->config->loadConfig($this->configFile); - } - - public function testBasicUsage() - { - $this->assertNotNull( - $this->config->getValue('app') - ); - } - - public function testFastUsage() - { - $this->assertNotNull( - $this->config->getValue('app') - ); - } - - public function testFastInvalidKey() - { - $this->assertNull( - $this->config->getValue('invalidKey') - ); - } - - public function testFastInvalidKeyWithDefault() - { - $this->assertEquals( - $this->config->getValue('invalidKey', 'defaultValue'), - 'defaultValue' - ); - } - - public function testFastNestedConfig() - { - $this->assertNotNull( - $this->config->getValue('other.multi.deep.nested') - ); - } - - public function testCheckExistConfig() - { - $this->assertTrue( - $this->config->existValue('other.multi.deep.nested') - ); - } - - public function testCheckNotExistConfig() - { - $this->assertFalse( - $this->config->existValue('invalid.config.path') - ); - } - - public function testSetValue() - { - $this->config->setValue('other.multi.deep.nested', __FUNCTION__); - - $this->assertEquals( - $this->config->getValue('other.multi.deep.nested'), - __FUNCTION__ - ); - } - - public function testFailedSaveConfig() - { - $this->setExpectedException('Exception'); - $this->config->saveConfigFile('/invalid/path'); - } - - public function testSuccessSaveConfigOnTempAndReload() - { - $this->config->setValue('other.multi.deep.nested', "SUPERNESTED"); - $this->config->saveConfigFile("/tmp/testconfig.php", true); - - $this->assertEquals( - $this->config->getValue('other.multi.deep.nested'), - "SUPERNESTED" - ); - } - - public function testOverwriteSameConfigFile() - { - $this->config->saveConfigFile(); - } - - public function testFailWriteConfig() - { - $this->setExpectedException('\RuntimeException'); - $this->config->saveConfigFile('/invalid/path/test.php'); - } -} \ No newline at end of file diff --git a/niucloud/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php b/niucloud/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php deleted file mode 100644 index 4a99ef05..00000000 --- a/niucloud/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php +++ /dev/null @@ -1,23 +0,0 @@ - 'app_name', - 'db' => - array ( - 'host' => 'localhost', - 'user' => 'sample_user', - 'pass' => 'sample_pass', - 'port' => 3306, - ), - 'other' => - array ( - 'multi' => - array ( - 'deep' => - array ( - 'nested' => 'config_value', - ), - ), - ), -); - diff --git a/niucloud/vendor/composer/ClassLoader.php b/niucloud/vendor/composer/ClassLoader.php deleted file mode 100644 index a72151c7..00000000 --- a/niucloud/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,585 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/niucloud/vendor/composer/InstalledVersions.php b/niucloud/vendor/composer/InstalledVersions.php deleted file mode 100644 index 51e734a7..00000000 --- a/niucloud/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,359 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array()) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/niucloud/vendor/composer/LICENSE b/niucloud/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/niucloud/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/niucloud/vendor/composer/autoload_classmap.php b/niucloud/vendor/composer/autoload_classmap.php deleted file mode 100644 index 4ce71fcc..00000000 --- a/niucloud/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,19 +0,0 @@ - $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Requests' => $vendorDir . '/rmccue/requests/library/Requests.php', - 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'Stringable' => $vendorDir . '/myclabs/php-enum/stubs/Stringable.php', - 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', -); diff --git a/niucloud/vendor/composer/autoload_files.php b/niucloud/vendor/composer/autoload_files.php deleted file mode 100644 index e65b4678..00000000 --- a/niucloud/vendor/composer/autoload_files.php +++ /dev/null @@ -1,39 +0,0 @@ - $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', - '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', - 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', - '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php', - '35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - '6b998e7ad3182c0d21d23780badfa07b' => $vendorDir . '/yansongda/supports/src/Functions.php', - '9c7a683baffd24f5595c1dc5f5273030' => $vendorDir . '/hyperf/engine/src/Functions.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => $vendorDir . '/adbario/php-dot-notation/src/helpers.php', - '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', - 'c5521cebe610a9bf42c44b3a5163adfd' => $vendorDir . '/overtrue/socialite/src/Contracts/FactoryInterface.php', - 'ccd11c8e7dd9b33638b248681bdfba27' => $vendorDir . '/overtrue/socialite/src/Contracts/UserInterface.php', - '5649552725dea6ec47381627600e3ac1' => $vendorDir . '/overtrue/socialite/src/Contracts/ProviderInterface.php', - '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', - '988d02680beedec88d52f2787b2d2007' => $vendorDir . '/yansongda/artful/src/Functions.php', - '66453932bc1be9fb2f910a27947d11b6' => $vendorDir . '/alibabacloud/client/src/Functions.php', - 'b33e3d135e5d9e47d845c576147bda89' => $vendorDir . '/php-di/php-di/src/functions.php', - 'cd5441689b14144e5573bf989ee47b34' => $vendorDir . '/qcloud/cos-sdk-v5/src/Common.php', - '841780ea2e1d6545ea3a253239d59c05' => $vendorDir . '/qiniu/php-sdk/src/Qiniu/functions.php', - '941748b3c8cae4466c827dfb5ca9602a' => $vendorDir . '/rmccue/requests/library/Deprecated.php', - '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', - '1cfd2761b63b0a29ed23657ea394cb2d' => $vendorDir . '/topthink/think-captcha/src/helper.php', - '8c783b3a3de2f6d9177022b5ccdcc841' => $vendorDir . '/yansongda/pay/src/Functions.php', -); diff --git a/niucloud/vendor/composer/autoload_namespaces.php b/niucloud/vendor/composer/autoload_namespaces.php deleted file mode 100644 index be11dd8f..00000000 --- a/niucloud/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,11 +0,0 @@ - array($vendorDir . '/pimple/pimple/src'), - 'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'), -); diff --git a/niucloud/vendor/composer/autoload_psr4.php b/niucloud/vendor/composer/autoload_psr4.php deleted file mode 100644 index a234978f..00000000 --- a/niucloud/vendor/composer/autoload_psr4.php +++ /dev/null @@ -1,96 +0,0 @@ - array($vendorDir . '/topthink/think-view/src'), - 'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'), - 'think\\captcha\\' => array($vendorDir . '/topthink/think-captcha/src'), - 'think\\app\\' => array($vendorDir . '/topthink/think-multi-app/src'), - 'think\\' => array($vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-filesystem/src', $vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-image/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/think-template/src'), - 'dh2y\\qrcode\\' => array($vendorDir . '/dh2y/think-qrcode/src'), - 'core\\' => array($baseDir . '/core'), - 'clagiordano\\weblibs\\configmanager\\' => array($vendorDir . '/clagiordano/weblibs-configmanager/src'), - 'app\\' => array($baseDir . '/app'), - 'addon\\' => array($baseDir . '/addon'), - 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), - 'Yansongda\\Supports\\' => array($vendorDir . '/yansongda/supports/src'), - 'Yansongda\\Pay\\' => array($vendorDir . '/yansongda/pay/src'), - 'Yansongda\\Artful\\' => array($vendorDir . '/yansongda/artful/src'), - 'WpOrg\\Requests\\' => array($vendorDir . '/rmccue/requests/src'), - 'Workerman\\Redis\\' => array($vendorDir . '/workerman/redis/src'), - 'Workerman\\RedisQueue\\' => array($vendorDir . '/workerman/redis-queue/src'), - 'Workerman\\Crontab\\' => array($vendorDir . '/workerman/crontab/src'), - 'Workerman\\' => array($vendorDir . '/workerman/workerman'), - 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), - 'TencentCloud\\' => array($vendorDir . '/tencentcloud/common/src/TencentCloud', $vendorDir . '/tencentcloud/sms/src/TencentCloud'), - 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), - 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), - 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), - 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\HttpClient\\' => array($vendorDir . '/symfony/http-client-contracts'), - 'Symfony\\Contracts\\Cache\\' => array($vendorDir . '/symfony/cache-contracts'), - 'Symfony\\Component\\VarExporter\\' => array($vendorDir . '/symfony/var-exporter'), - 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'), - 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), - 'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'), - 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), - 'Symfony\\Component\\HttpClient\\' => array($vendorDir . '/symfony/http-client'), - 'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'), - 'Symfony\\Bridge\\PsrHttpMessage\\' => array($vendorDir . '/symfony/psr-http-message-bridge'), - 'Spatie\\Macroable\\' => array($vendorDir . '/spatie/macroable/src'), - 'Qiniu\\' => array($vendorDir . '/qiniu/php-sdk/src/Qiniu'), - 'Qcloud\\Cos\\' => array($vendorDir . '/qcloud/cos-sdk-v5/src'), - 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), - 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'), - 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), - 'PhpOffice\\PhpSpreadsheet\\' => array($vendorDir . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet'), - 'Overtrue\\Socialite\\' => array($vendorDir . '/overtrue/socialite/src'), - 'Obs\\' => array($vendorDir . '/365taofang/huaweicloud-sdk-php-obs/Obs'), - 'OSS\\' => array($vendorDir . '/aliyuncs/oss-sdk-php/src/OSS'), - 'Nyholm\\Psr7\\' => array($vendorDir . '/nyholm/psr7/src'), - 'Nyholm\\Psr7Server\\' => array($vendorDir . '/nyholm/psr7-server/src'), - 'MyCLabs\\Enum\\' => array($vendorDir . '/myclabs/php-enum/src'), - 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), - 'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'), - 'Location\\' => array($vendorDir . '/mjaschen/phpgeo/src'), - 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'), - 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), - 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'), - 'Kkokk\\Poster\\' => array($vendorDir . '/kkokk/poster/src'), - 'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'), - 'Invoker\\' => array($vendorDir . '/php-di/invoker/src'), - 'Intervention\\Image\\' => array($vendorDir . '/intervention/image/src/Intervention/Image'), - 'Hyperf\\Pimple\\' => array($vendorDir . '/hyperf/pimple/src'), - 'Hyperf\\Engine\\Contract\\' => array($vendorDir . '/hyperf/engine-contract/src'), - 'Hyperf\\Engine\\' => array($vendorDir . '/hyperf/engine/src'), - 'Hyperf\\Contract\\' => array($vendorDir . '/hyperf/contract/src'), - 'Hyperf\\Context\\' => array($vendorDir . '/hyperf/context/src'), - 'GuzzleHttp\\UriTemplate\\' => array($vendorDir . '/guzzlehttp/uri-template/src'), - 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), - 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), - 'GuzzleHttp\\Command\\Guzzle\\' => array($vendorDir . '/guzzlehttp/guzzle-services/src'), - 'GuzzleHttp\\Command\\' => array($vendorDir . '/guzzlehttp/command/src'), - 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), - 'Grafika\\' => array($vendorDir . '/kosinix/grafika/src/Grafika'), - 'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'), - 'Fastknife\\' => array($vendorDir . '/fastknife/ajcaptcha/src'), - 'EasyWeChat\\' => array($vendorDir . '/w7corp/easywechat/src'), - 'DI\\' => array($vendorDir . '/php-di/php-di/src'), - 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'), - 'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'), - 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), - 'AlibabaCloud\\Client\\' => array($vendorDir . '/alibabacloud/client/src'), - 'Adbar\\' => array($vendorDir . '/adbario/php-dot-notation/src'), -); diff --git a/niucloud/vendor/composer/autoload_real.php b/niucloud/vendor/composer/autoload_real.php deleted file mode 100644 index 07cbed72..00000000 --- a/niucloud/vendor/composer/autoload_real.php +++ /dev/null @@ -1,50 +0,0 @@ -register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInitf082efa3600aae2b847c3e8b4e641a4e::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/niucloud/vendor/composer/autoload_static.php b/niucloud/vendor/composer/autoload_static.php deleted file mode 100644 index fe89f840..00000000 --- a/niucloud/vendor/composer/autoload_static.php +++ /dev/null @@ -1,605 +0,0 @@ - __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', - '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', - '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php', - '35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - '6b998e7ad3182c0d21d23780badfa07b' => __DIR__ . '/..' . '/yansongda/supports/src/Functions.php', - '9c7a683baffd24f5595c1dc5f5273030' => __DIR__ . '/..' . '/hyperf/engine/src/Functions.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', - 'd767e4fc2dc52fe66584ab8c6684783e' => __DIR__ . '/..' . '/adbario/php-dot-notation/src/helpers.php', - '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', - 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', - 'c5521cebe610a9bf42c44b3a5163adfd' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/FactoryInterface.php', - 'ccd11c8e7dd9b33638b248681bdfba27' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/UserInterface.php', - '5649552725dea6ec47381627600e3ac1' => __DIR__ . '/..' . '/overtrue/socialite/src/Contracts/ProviderInterface.php', - '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', - '988d02680beedec88d52f2787b2d2007' => __DIR__ . '/..' . '/yansongda/artful/src/Functions.php', - '66453932bc1be9fb2f910a27947d11b6' => __DIR__ . '/..' . '/alibabacloud/client/src/Functions.php', - 'b33e3d135e5d9e47d845c576147bda89' => __DIR__ . '/..' . '/php-di/php-di/src/functions.php', - 'cd5441689b14144e5573bf989ee47b34' => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src/Common.php', - '841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php', - '941748b3c8cae4466c827dfb5ca9602a' => __DIR__ . '/..' . '/rmccue/requests/library/Deprecated.php', - '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', - '1cfd2761b63b0a29ed23657ea394cb2d' => __DIR__ . '/..' . '/topthink/think-captcha/src/helper.php', - '8c783b3a3de2f6d9177022b5ccdcc841' => __DIR__ . '/..' . '/yansongda/pay/src/Functions.php', - ); - - public static $prefixLengthsPsr4 = array ( - 't' => - array ( - 'think\\view\\driver\\' => 18, - 'think\\trace\\' => 12, - 'think\\captcha\\' => 14, - 'think\\app\\' => 10, - 'think\\' => 6, - ), - 'd' => - array ( - 'dh2y\\qrcode\\' => 12, - ), - 'c' => - array ( - 'core\\' => 5, - 'clagiordano\\weblibs\\configmanager\\' => 34, - ), - 'a' => - array ( - 'app\\' => 4, - 'addon\\' => 6, - ), - 'Z' => - array ( - 'ZipStream\\' => 10, - ), - 'Y' => - array ( - 'Yansongda\\Supports\\' => 19, - 'Yansongda\\Pay\\' => 14, - 'Yansongda\\Artful\\' => 17, - ), - 'W' => - array ( - 'WpOrg\\Requests\\' => 15, - 'Workerman\\Redis\\' => 16, - 'Workerman\\RedisQueue\\' => 21, - 'Workerman\\Crontab\\' => 18, - 'Workerman\\' => 10, - 'Webmozart\\Assert\\' => 17, - ), - 'T' => - array ( - 'TencentCloud\\' => 13, - ), - 'S' => - array ( - 'Symfony\\Polyfill\\Php81\\' => 23, - 'Symfony\\Polyfill\\Php80\\' => 23, - 'Symfony\\Polyfill\\Php72\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, - 'Symfony\\Contracts\\Translation\\' => 30, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\HttpClient\\' => 29, - 'Symfony\\Contracts\\Cache\\' => 24, - 'Symfony\\Component\\VarExporter\\' => 30, - 'Symfony\\Component\\VarDumper\\' => 28, - 'Symfony\\Component\\Translation\\' => 30, - 'Symfony\\Component\\Mime\\' => 23, - 'Symfony\\Component\\HttpFoundation\\' => 33, - 'Symfony\\Component\\HttpClient\\' => 29, - 'Symfony\\Component\\Cache\\' => 24, - 'Symfony\\Bridge\\PsrHttpMessage\\' => 30, - 'Spatie\\Macroable\\' => 17, - ), - 'Q' => - array ( - 'Qiniu\\' => 6, - 'Qcloud\\Cos\\' => 11, - ), - 'P' => - array ( - 'Psr\\SimpleCache\\' => 16, - 'Psr\\Log\\' => 8, - 'Psr\\Http\\Message\\' => 17, - 'Psr\\Http\\Client\\' => 16, - 'Psr\\EventDispatcher\\' => 20, - 'Psr\\Container\\' => 14, - 'Psr\\Cache\\' => 10, - 'PhpOffice\\PhpSpreadsheet\\' => 25, - ), - 'O' => - array ( - 'Overtrue\\Socialite\\' => 19, - 'Obs\\' => 4, - 'OSS\\' => 4, - ), - 'N' => - array ( - 'Nyholm\\Psr7\\' => 12, - 'Nyholm\\Psr7Server\\' => 18, - ), - 'M' => - array ( - 'MyCLabs\\Enum\\' => 13, - 'Monolog\\' => 8, - 'Matrix\\' => 7, - ), - 'L' => - array ( - 'Location\\' => 9, - 'League\\MimeTypeDetection\\' => 25, - 'League\\Flysystem\\' => 17, - 'Laravel\\SerializableClosure\\' => 28, - ), - 'K' => - array ( - 'Kkokk\\Poster\\' => 13, - ), - 'J' => - array ( - 'JmesPath\\' => 9, - ), - 'I' => - array ( - 'Invoker\\' => 8, - 'Intervention\\Image\\' => 19, - ), - 'H' => - array ( - 'Hyperf\\Pimple\\' => 14, - 'Hyperf\\Engine\\Contract\\' => 23, - 'Hyperf\\Engine\\' => 14, - 'Hyperf\\Contract\\' => 16, - 'Hyperf\\Context\\' => 15, - ), - 'G' => - array ( - 'GuzzleHttp\\UriTemplate\\' => 23, - 'GuzzleHttp\\Psr7\\' => 16, - 'GuzzleHttp\\Promise\\' => 19, - 'GuzzleHttp\\Command\\Guzzle\\' => 26, - 'GuzzleHttp\\Command\\' => 19, - 'GuzzleHttp\\' => 11, - 'Grafika\\' => 8, - ), - 'F' => - array ( - 'Firebase\\JWT\\' => 13, - 'Fastknife\\' => 10, - ), - 'E' => - array ( - 'EasyWeChat\\' => 11, - ), - 'D' => - array ( - 'DI\\' => 3, - ), - 'C' => - array ( - 'Cron\\' => 5, - 'Complex\\' => 8, - 'Carbon\\' => 7, - ), - 'A' => - array ( - 'AlibabaCloud\\Client\\' => 20, - 'Adbar\\' => 6, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'think\\view\\driver\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-view/src', - ), - 'think\\trace\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-trace/src', - ), - 'think\\captcha\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-captcha/src', - ), - 'think\\app\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/think-multi-app/src', - ), - 'think\\' => - array ( - 0 => __DIR__ . '/..' . '/topthink/framework/src/think', - 1 => __DIR__ . '/..' . '/topthink/think-filesystem/src', - 2 => __DIR__ . '/..' . '/topthink/think-helper/src', - 3 => __DIR__ . '/..' . '/topthink/think-image/src', - 4 => __DIR__ . '/..' . '/topthink/think-orm/src', - 5 => __DIR__ . '/..' . '/topthink/think-template/src', - ), - 'dh2y\\qrcode\\' => - array ( - 0 => __DIR__ . '/..' . '/dh2y/think-qrcode/src', - ), - 'core\\' => - array ( - 0 => __DIR__ . '/../..' . '/core', - ), - 'clagiordano\\weblibs\\configmanager\\' => - array ( - 0 => __DIR__ . '/..' . '/clagiordano/weblibs-configmanager/src', - ), - 'app\\' => - array ( - 0 => __DIR__ . '/../..' . '/app', - ), - 'addon\\' => - array ( - 0 => __DIR__ . '/../..' . '/addon', - ), - 'ZipStream\\' => - array ( - 0 => __DIR__ . '/..' . '/maennchen/zipstream-php/src', - ), - 'Yansongda\\Supports\\' => - array ( - 0 => __DIR__ . '/..' . '/yansongda/supports/src', - ), - 'Yansongda\\Pay\\' => - array ( - 0 => __DIR__ . '/..' . '/yansongda/pay/src', - ), - 'Yansongda\\Artful\\' => - array ( - 0 => __DIR__ . '/..' . '/yansongda/artful/src', - ), - 'WpOrg\\Requests\\' => - array ( - 0 => __DIR__ . '/..' . '/rmccue/requests/src', - ), - 'Workerman\\Redis\\' => - array ( - 0 => __DIR__ . '/..' . '/workerman/redis/src', - ), - 'Workerman\\RedisQueue\\' => - array ( - 0 => __DIR__ . '/..' . '/workerman/redis-queue/src', - ), - 'Workerman\\Crontab\\' => - array ( - 0 => __DIR__ . '/..' . '/workerman/crontab/src', - ), - 'Workerman\\' => - array ( - 0 => __DIR__ . '/..' . '/workerman/workerman', - ), - 'Webmozart\\Assert\\' => - array ( - 0 => __DIR__ . '/..' . '/webmozart/assert/src', - ), - 'TencentCloud\\' => - array ( - 0 => __DIR__ . '/..' . '/tencentcloud/common/src/TencentCloud', - 1 => __DIR__ . '/..' . '/tencentcloud/sms/src/TencentCloud', - ), - 'Symfony\\Polyfill\\Php81\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', - ), - 'Symfony\\Polyfill\\Php80\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', - ), - 'Symfony\\Polyfill\\Php72\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php72', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Idn\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', - ), - 'Symfony\\Contracts\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation-contracts', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\HttpClient\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-client-contracts', - ), - 'Symfony\\Contracts\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/cache-contracts', - ), - 'Symfony\\Component\\VarExporter\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/var-exporter', - ), - 'Symfony\\Component\\VarDumper\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/var-dumper', - ), - 'Symfony\\Component\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation', - ), - 'Symfony\\Component\\Mime\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/mime', - ), - 'Symfony\\Component\\HttpFoundation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-foundation', - ), - 'Symfony\\Component\\HttpClient\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-client', - ), - 'Symfony\\Component\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/cache', - ), - 'Symfony\\Bridge\\PsrHttpMessage\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/psr-http-message-bridge', - ), - 'Spatie\\Macroable\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/macroable/src', - ), - 'Qiniu\\' => - array ( - 0 => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu', - ), - 'Qcloud\\Cos\\' => - array ( - 0 => __DIR__ . '/..' . '/qcloud/cos-sdk-v5/src', - ), - 'Psr\\SimpleCache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/simple-cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/src', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-factory/src', - 1 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'Psr\\Http\\Client\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-client/src', - ), - 'Psr\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Psr\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/cache/src', - ), - 'PhpOffice\\PhpSpreadsheet\\' => - array ( - 0 => __DIR__ . '/..' . '/phpoffice/phpspreadsheet/src/PhpSpreadsheet', - ), - 'Overtrue\\Socialite\\' => - array ( - 0 => __DIR__ . '/..' . '/overtrue/socialite/src', - ), - 'Obs\\' => - array ( - 0 => __DIR__ . '/..' . '/365taofang/huaweicloud-sdk-php-obs/Obs', - ), - 'OSS\\' => - array ( - 0 => __DIR__ . '/..' . '/aliyuncs/oss-sdk-php/src/OSS', - ), - 'Nyholm\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/nyholm/psr7/src', - ), - 'Nyholm\\Psr7Server\\' => - array ( - 0 => __DIR__ . '/..' . '/nyholm/psr7-server/src', - ), - 'MyCLabs\\Enum\\' => - array ( - 0 => __DIR__ . '/..' . '/myclabs/php-enum/src', - ), - 'Monolog\\' => - array ( - 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', - ), - 'Matrix\\' => - array ( - 0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src', - ), - 'Location\\' => - array ( - 0 => __DIR__ . '/..' . '/mjaschen/phpgeo/src', - ), - 'League\\MimeTypeDetection\\' => - array ( - 0 => __DIR__ . '/..' . '/league/mime-type-detection/src', - ), - 'League\\Flysystem\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem/src', - ), - 'Laravel\\SerializableClosure\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src', - ), - 'Kkokk\\Poster\\' => - array ( - 0 => __DIR__ . '/..' . '/kkokk/poster/src', - ), - 'JmesPath\\' => - array ( - 0 => __DIR__ . '/..' . '/mtdowling/jmespath.php/src', - ), - 'Invoker\\' => - array ( - 0 => __DIR__ . '/..' . '/php-di/invoker/src', - ), - 'Intervention\\Image\\' => - array ( - 0 => __DIR__ . '/..' . '/intervention/image/src/Intervention/Image', - ), - 'Hyperf\\Pimple\\' => - array ( - 0 => __DIR__ . '/..' . '/hyperf/pimple/src', - ), - 'Hyperf\\Engine\\Contract\\' => - array ( - 0 => __DIR__ . '/..' . '/hyperf/engine-contract/src', - ), - 'Hyperf\\Engine\\' => - array ( - 0 => __DIR__ . '/..' . '/hyperf/engine/src', - ), - 'Hyperf\\Contract\\' => - array ( - 0 => __DIR__ . '/..' . '/hyperf/contract/src', - ), - 'Hyperf\\Context\\' => - array ( - 0 => __DIR__ . '/..' . '/hyperf/context/src', - ), - 'GuzzleHttp\\UriTemplate\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/uri-template/src', - ), - 'GuzzleHttp\\Psr7\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', - ), - 'GuzzleHttp\\Promise\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/promises/src', - ), - 'GuzzleHttp\\Command\\Guzzle\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle-services/src', - ), - 'GuzzleHttp\\Command\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/command/src', - ), - 'GuzzleHttp\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/guzzle/src', - ), - 'Grafika\\' => - array ( - 0 => __DIR__ . '/..' . '/kosinix/grafika/src/Grafika', - ), - 'Firebase\\JWT\\' => - array ( - 0 => __DIR__ . '/..' . '/firebase/php-jwt/src', - ), - 'Fastknife\\' => - array ( - 0 => __DIR__ . '/..' . '/fastknife/ajcaptcha/src', - ), - 'EasyWeChat\\' => - array ( - 0 => __DIR__ . '/..' . '/w7corp/easywechat/src', - ), - 'DI\\' => - array ( - 0 => __DIR__ . '/..' . '/php-di/php-di/src', - ), - 'Cron\\' => - array ( - 0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron', - ), - 'Complex\\' => - array ( - 0 => __DIR__ . '/..' . '/markbaker/complex/classes/src', - ), - 'Carbon\\' => - array ( - 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', - ), - 'AlibabaCloud\\Client\\' => - array ( - 0 => __DIR__ . '/..' . '/alibabacloud/client/src', - ), - 'Adbar\\' => - array ( - 0 => __DIR__ . '/..' . '/adbario/php-dot-notation/src', - ), - ); - - public static $prefixesPsr0 = array ( - 'P' => - array ( - 'Pimple' => - array ( - 0 => __DIR__ . '/..' . '/pimple/pimple/src', - ), - ), - 'H' => - array ( - 'HTMLPurifier' => - array ( - 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library', - ), - ), - ); - - public static $classMap = array ( - 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Requests' => __DIR__ . '/..' . '/rmccue/requests/library/Requests.php', - 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'Stringable' => __DIR__ . '/..' . '/myclabs/php-enum/stubs/Stringable.php', - 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitf082efa3600aae2b847c3e8b4e641a4e::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitf082efa3600aae2b847c3e8b4e641a4e::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitf082efa3600aae2b847c3e8b4e641a4e::$prefixesPsr0; - $loader->classMap = ComposerStaticInitf082efa3600aae2b847c3e8b4e641a4e::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/niucloud/vendor/composer/installed.json b/niucloud/vendor/composer/installed.json deleted file mode 100644 index b4af6ae1..00000000 --- a/niucloud/vendor/composer/installed.json +++ /dev/null @@ -1,7107 +0,0 @@ -{ - "packages": [ - { - "name": "365taofang/huaweicloud-sdk-php-obs", - "version": "3.23.501", - "version_normalized": "3.23.501.0", - "source": { - "type": "git", - "url": "https://github.com/365taofang/huaweicloud-sdk-php-obs.git", - "reference": "85448144b10d26c1b4c15388a2ea11a76e41a1b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/365taofang/huaweicloud-sdk-php-obs/zipball/85448144b10d26c1b4c15388a2ea11a76e41a1b5", - "reference": "85448144b10d26c1b4c15388a2ea11a76e41a1b5", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/guzzle": "^6.3.0 || ^7.0", - "guzzlehttp/psr7": "^1.4.2 || ^2.0", - "monolog/monolog": "^1.23.0 || ^2.0", - "php": ">=5.6.0", - "psr/http-message": "^1.0" - }, - "time": "2023-09-15T00:55:23+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Obs\\": "Obs/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "description": "OBS PHP SDK", - "keywords": [ - "OBS", - "php" - ], - "support": { - "issues": "https://github.com/365taofang/huaweicloud-sdk-php-obs/issues", - "source": "https://github.com/365taofang/huaweicloud-sdk-php-obs/tree/v3.23.501" - }, - "install-path": "../365taofang/huaweicloud-sdk-php-obs" - }, - { - "name": "adbario/php-dot-notation", - "version": "2.5.0", - "version_normalized": "2.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/adbario/php-dot-notation.git", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "php": "^5.5 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", - "squizlabs/php_codesniffer": "^3.6" - }, - "time": "2022-10-14T20:31:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Adbar\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Riku Särkinen", - "email": "riku@adbar.io" - } - ], - "description": "PHP dot notation access to arrays", - "homepage": "https://github.com/adbario/php-dot-notation", - "keywords": [ - "ArrayAccess", - "dotnotation" - ], - "support": { - "issues": "https://github.com/adbario/php-dot-notation/issues", - "source": "https://github.com/adbario/php-dot-notation/tree/2.5.0" - }, - "install-path": "../adbario/php-dot-notation" - }, - { - "name": "alibabacloud/client", - "version": "1.5.32", - "version_normalized": "1.5.32.0", - "source": { - "type": "git", - "url": "https://github.com/aliyun/openapi-sdk-php-client.git", - "reference": "5bc6f6d660797dcee2c3aef29700ab41ee764f4d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aliyun/openapi-sdk-php-client/zipball/5bc6f6d660797dcee2c3aef29700ab41ee764f4d", - "reference": "5bc6f6d660797dcee2c3aef29700ab41ee764f4d", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "adbario/php-dot-notation": "^2.4.1", - "clagiordano/weblibs-configmanager": "^1.0", - "ext-curl": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-xmlwriter": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "mtdowling/jmespath.php": "^2.5", - "php": ">=5.5" - }, - "require-dev": { - "composer/composer": "^1.8", - "drupal/coder": "^8.3", - "ext-dom": "*", - "ext-pcre": "*", - "ext-sockets": "*", - "ext-spl": "*", - "league/climate": "^3.2.4", - "mikey179/vfsstream": "^1.6", - "monolog/monolog": "^1.24", - "phpunit/phpunit": "^5.7|^6.6|^7.5|^8.5|^9.5", - "psr/cache": "^1.0", - "symfony/dotenv": "^3.4", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-sockets": "To use client-side monitoring" - }, - "time": "2022-12-09T04:05:55+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "AlibabaCloud\\Client\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Alibaba Cloud SDK", - "email": "sdk-team@alibabacloud.com", - "homepage": "http://www.alibabacloud.com" - } - ], - "description": "Alibaba Cloud Client for PHP - Use Alibaba Cloud in your PHP project", - "homepage": "https://www.alibabacloud.com/", - "keywords": [ - "alibaba", - "alibabacloud", - "aliyun", - "client", - "cloud", - "library", - "sdk", - "tool" - ], - "support": { - "issues": "https://github.com/aliyun/openapi-sdk-php-client/issues", - "source": "https://github.com/aliyun/openapi-sdk-php-client" - }, - "install-path": "../alibabacloud/client" - }, - { - "name": "aliyuncs/oss-sdk-php", - "version": "v2.6.0", - "version_normalized": "2.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/aliyun/aliyun-oss-php-sdk.git", - "reference": "572d0f8e099e8630ae7139ed3fdedb926c7a760f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/572d0f8e099e8630ae7139ed3fdedb926c7a760f", - "reference": "572d0f8e099e8630ae7139ed3fdedb926c7a760f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "*", - "satooshi/php-coveralls": "*" - }, - "time": "2022-08-03T08:06:01+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "OSS\\": "src/OSS" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aliyuncs", - "homepage": "http://www.aliyun.com" - } - ], - "description": "Aliyun OSS SDK for PHP", - "homepage": "http://www.aliyun.com/product/oss/", - "support": { - "issues": "https://github.com/aliyun/aliyun-oss-php-sdk/issues", - "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.6.0" - }, - "install-path": "../aliyuncs/oss-sdk-php" - }, - { - "name": "clagiordano/weblibs-configmanager", - "version": "v1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/clagiordano/weblibs-configmanager.git", - "reference": "5c8ebcc62782313b1278afe802b120d18c07a059" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clagiordano/weblibs-configmanager/zipball/5c8ebcc62782313b1278afe802b120d18c07a059", - "reference": "5c8ebcc62782313b1278afe802b120d18c07a059", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "clagiordano/phpunit-result-printer": "^1", - "phpunit/phpunit": "^4.8" - }, - "time": "2021-05-18T17:55:57+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "clagiordano\\weblibs\\configmanager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Claudio Giordano", - "email": "claudio.giordano@autistici.org", - "role": "Developer" - } - ], - "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", - "keywords": [ - "clagiordano", - "configuration", - "manager", - "tool", - "weblibs" - ], - "support": { - "issues": "https://github.com/clagiordano/weblibs-configmanager/issues", - "source": "https://github.com/clagiordano/weblibs-configmanager/tree/v1.2.0" - }, - "install-path": "../clagiordano/weblibs-configmanager" - }, - { - "name": "dh2y/think-qrcode", - "version": "2.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/cinaofdai/think-qrcode.git", - "reference": "977d032afa27b1852f5fc5441fad2497f6db7ff5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cinaofdai/think-qrcode/zipball/977d032afa27b1852f5fc5441fad2497f6db7ff5", - "reference": "977d032afa27b1852f5fc5441fad2497f6db7ff5", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.4.0" - }, - "time": "2019-07-10T02:57:29+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "dh2y\\qrcode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "dh2y", - "email": "xiaodai54_long@163.com" - } - ], - "description": "qrcode for thinkphp5", - "homepage": "https://github.com/cinaofdai/think-qrcode", - "support": { - "issues": "https://github.com/cinaofdai/think-qrcode/issues", - "source": "https://github.com/cinaofdai/think-qrcode/tree/2.0" - }, - "install-path": "../dh2y/think-qrcode" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.1", - "version_normalized": "3.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-webmozart-assert": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "time": "2022-01-18T15:43:28+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "install-path": "../dragonmantank/cron-expression" - }, - { - "name": "ezyang/htmlpurifier", - "version": "v4.16.0", - "version_normalized": "4.16.0.0", - "source": { - "type": "git", - "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" - }, - "require-dev": { - "cerdic/css-tidy": "^1.7 || ^2.0", - "simpletest/simpletest": "dev-master" - }, - "suggest": { - "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", - "ext-bcmath": "Used for unit conversion and imagecrash protection", - "ext-iconv": "Converts text to and from non-UTF-8 encodings", - "ext-tidy": "Used for pretty-printing HTML" - }, - "time": "2022-09-18T07:06:19+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "library/HTMLPurifier.composer.php" - ], - "psr-0": { - "HTMLPurifier": "library/" - }, - "exclude-from-classmap": [ - "/library/HTMLPurifier/Language/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-or-later" - ], - "authors": [ - { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" - } - ], - "description": "Standards compliant HTML filter written in PHP", - "homepage": "http://htmlpurifier.org/", - "keywords": [ - "html" - ], - "support": { - "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" - }, - "install-path": "../ezyang/htmlpurifier" - }, - { - "name": "fastknife/ajcaptcha", - "version": "v1.2.1", - "version_normalized": "1.2.1.0", - "source": { - "type": "git", - "url": "https://gitee.com/fastknife/aj-captcha.git", - "reference": "836c5a3177bc622a245734aef421085955d0b2cb" - }, - "require": { - "ext-gd": "*", - "ext-iconv": "*", - "ext-json": "*", - "ext-openssl": "*", - "intervention/image": "^2.5", - "php": ">=7.1" - }, - "time": "2023-01-03T06:08:28+00:00", - "type": "library", - "installation-source": "source", - "autoload": { - "psr-4": { - "Fastknife\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-3.0-only" - ], - "authors": [ - { - "name": "bruce", - "email": "2777314125@qq.com" - } - ], - "description": "This is a behavior verification code PHP back-end implementation package", - "install-path": "../fastknife/ajcaptcha" - }, - { - "name": "firebase/php-jwt", - "version": "v5.5.1", - "version_normalized": "5.5.1.0", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "83b609028194aa042ea33b5af2d41a7427de80e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/83b609028194aa042ea33b5af2d41a7427de80e6", - "reference": "83b609028194aa042ea33b5af2d41a7427de80e6", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.8 <=9" - }, - "suggest": { - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" - }, - "time": "2021-11-08T20:18:51+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "keywords": [ - "jwt", - "php" - ], - "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v5.5.1" - }, - "install-path": "../firebase/php-jwt" - }, - { - "name": "guzzlehttp/command", - "version": "1.2.2", - "version_normalized": "1.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/command.git", - "reference": "7883359e0ecab8a8f7c43aad2fc36360a35d21e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/command/zipball/7883359e0ecab8a8f7c43aad2fc36360a35d21e8", - "reference": "7883359e0ecab8a8f7c43aad2fc36360a35d21e8", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/guzzle": "^7.4.1", - "guzzlehttp/promises": "^1.5.1", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19" - }, - "time": "2022-02-08T10:21:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Command\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Provides the foundation for building command-based web service clients", - "support": { - "issues": "https://github.com/guzzle/command/issues", - "source": "https://github.com/guzzle/command/tree/1.2.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/command", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/command" - }, - { - "name": "guzzlehttp/guzzle", - "version": "7.5.0", - "version_normalized": "7.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" - }, - "time": "2022-08-28T15:39:27+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/guzzle" - }, - { - "name": "guzzlehttp/guzzle-services", - "version": "1.3.2", - "version_normalized": "1.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle-services.git", - "reference": "4989d902dd4e0411b320e851c46f3c94d652d891" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/4989d902dd4e0411b320e851c46f3c94d652d891", - "reference": "4989d902dd4e0411b320e851c46f3c94d652d891", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/command": "^1.2.2", - "guzzlehttp/guzzle": "^7.4.1", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", - "guzzlehttp/uri-template": "^1.0.1", - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8" - }, - "suggest": { - "gimler/guzzle-description-loader": "^0.0.4" - }, - "time": "2022-03-03T11:21:34+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Command\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Stefano Kowalke", - "email": "blueduck@mail.org", - "homepage": "https://github.com/Konafets" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.", - "support": { - "issues": "https://github.com/guzzle/guzzle-services/issues", - "source": "https://github.com/guzzle/guzzle-services/tree/1.3.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle-services", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/guzzle-services" - }, - { - "name": "guzzlehttp/promises", - "version": "1.5.3", - "version_normalized": "1.5.3.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "time": "2023-05-21T12:31:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/promises" - }, - { - "name": "guzzlehttp/psr7", - "version": "2.6.2", - "version_normalized": "2.6.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "time": "2023-12-03T20:05:35+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/psr7" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/uri-template.git", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", - "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.19 || ^9.5.8", - "uri-template/tests": "1.0.0" - }, - "time": "2023-08-27T10:19:19+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\UriTemplate\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A polyfill class for uri_template of PHP", - "keywords": [ - "guzzlehttp", - "uri-template" - ], - "support": { - "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", - "type": "tidelift" - } - ], - "install-path": "../guzzlehttp/uri-template" - }, - { - "name": "hyperf/context", - "version": "v3.0.37", - "version_normalized": "3.0.37.0", - "source": { - "type": "git", - "url": "https://github.com/hyperf/context.git", - "reference": "264e06fb882426d90758eca2c5bb8293f8b60455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hyperf/context/zipball/264e06fb882426d90758eca2c5bb8293f8b60455", - "reference": "264e06fb882426d90758eca2c5bb8293f8b60455", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "hyperf/engine": "^1.2|^2.0", - "php": ">=8.0" - }, - "time": "2023-09-19T01:50:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Hyperf\\Context\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A coroutine/application context library.", - "homepage": "https://hyperf.io", - "keywords": [ - "Context", - "hyperf", - "php", - "swoole" - ], - "support": { - "docs": "https://hyperf.wiki", - "issues": "https://github.com/hyperf/hyperf/issues", - "pull-request": "https://github.com/hyperf/hyperf/pulls", - "source": "https://github.com/hyperf/hyperf" - }, - "install-path": "../hyperf/context" - }, - { - "name": "hyperf/contract", - "version": "v3.0.37", - "version_normalized": "3.0.37.0", - "source": { - "type": "git", - "url": "https://github.com/hyperf/contract.git", - "reference": "2e8290104468a8d90855067d8644a32114474452" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hyperf/contract/zipball/2e8290104468a8d90855067d8644a32114474452", - "reference": "2e8290104468a8d90855067d8644a32114474452", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0" - }, - "time": "2023-09-19T01:50:18+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Hyperf\\Contract\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The contracts of Hyperf.", - "homepage": "https://hyperf.io", - "keywords": [ - "hyperf", - "php", - "swoole" - ], - "support": { - "docs": "https://hyperf.wiki", - "issues": "https://github.com/hyperf/hyperf/issues", - "pull-request": "https://github.com/hyperf/hyperf/pulls", - "source": "https://github.com/hyperf/hyperf" - }, - "install-path": "../hyperf/contract" - }, - { - "name": "hyperf/engine", - "version": "v2.10.5", - "version_normalized": "2.10.5.0", - "source": { - "type": "git", - "url": "https://github.com/hyperf/engine.git", - "reference": "b3e1a025e388815612815a0b08fc4f2439140676" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine/zipball/b3e1a025e388815612815a0b08fc4f2439140676", - "reference": "b3e1a025e388815612815a0b08fc4f2439140676", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "hyperf/engine-contract": "~1.9.0", - "php": ">=8.0" - }, - "conflict": { - "ext-swoole": "<5.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "hyperf/guzzle": "^3.0", - "hyperf/http-message": "^3.0", - "mockery/mockery": "^1.5", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.4", - "swoole/ide-helper": "5.*" - }, - "suggest": { - "ext-sockets": "*", - "ext-swoole": ">=5.0", - "hyperf/http-message": "Required to use ResponseEmitter.", - "psr/http-message": "Required to use WebSocket Frame." - }, - "time": "2024-03-12T06:06:19+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10-dev" - }, - "hyperf": { - "config": "Hyperf\\Engine\\ConfigProvider" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Hyperf\\Engine\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Coroutine engine provided by swoole.", - "keywords": [ - "engine", - "hyperf", - "php", - "swoole" - ], - "support": { - "issues": "https://github.com/hyperf/engine/issues", - "source": "https://github.com/hyperf/engine/tree/v2.10.5" - }, - "funding": [ - { - "url": "https://hyperf.wiki/#/zh-cn/donate", - "type": "custom" - }, - { - "url": "https://opencollective.com/hyperf", - "type": "open_collective" - } - ], - "install-path": "../hyperf/engine" - }, - { - "name": "hyperf/engine-contract", - "version": "v1.9.1", - "version_normalized": "1.9.1.0", - "source": { - "type": "git", - "url": "https://github.com/hyperf/engine-contract.git", - "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hyperf/engine-contract/zipball/fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", - "reference": "fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "mockery/mockery": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": ">=7.0", - "psr/http-message": "^1.0", - "swoole/ide-helper": "^4.5" - }, - "suggest": { - "psr/http-message": "Required to use WebSocket Frame." - }, - "time": "2023-12-15T07:37:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Hyperf\\Engine\\Contract\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Contract for Coroutine Engine", - "keywords": [ - "contract", - "coroutine", - "engine", - "hyperf", - "php" - ], - "support": { - "issues": "https://github.com/hyperf/engine-contract/issues", - "source": "https://github.com/hyperf/engine-contract/tree/v1.9.1" - }, - "funding": [ - { - "url": "https://hyperf.wiki/#/zh-cn/donate", - "type": "custom" - }, - { - "url": "https://opencollective.com/hyperf", - "type": "open_collective" - } - ], - "install-path": "../hyperf/engine-contract" - }, - { - "name": "hyperf/pimple", - "version": "v2.2.2", - "version_normalized": "2.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/hyperf-cloud/pimple-integration.git", - "reference": "7bd07745c256b83679471c06ec2a11e901d37277" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hyperf-cloud/pimple-integration/zipball/7bd07745c256b83679471c06ec2a11e901d37277", - "reference": "7bd07745c256b83679471c06ec2a11e901d37277", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "hyperf/context": "^3.0", - "hyperf/contract": "^3.0", - "php": ">=8.0", - "pimple/pimple": "^3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "hyperf/support": "^3.0", - "mockery/mockery": "^1.3", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": ">=7.0" - }, - "time": "2023-06-10T04:41:29+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "hyperf": { - "config": "Hyperf\\Pimple\\ConfigProvider" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Hyperf\\Pimple\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Pimple Container", - "keywords": [ - "container", - "hyperf", - "php", - "psr11" - ], - "support": { - "issues": "https://github.com/hyperf-cloud/pimple-integration/issues", - "source": "https://github.com/hyperf-cloud/pimple-integration/tree/v2.2.2" - }, - "install-path": "../hyperf/pimple" - }, - { - "name": "intervention/image", - "version": "2.7.2", - "version_normalized": "2.7.2.0", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "04be355f8d6734c826045d02a1079ad658322dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", - "reference": "04be355f8d6734c826045d02a1079ad658322dad", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1 || ^2.0", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "time": "2022-05-21T17:30:32+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "support": { - "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/2.7.2" - }, - "funding": [ - { - "url": "https://paypal.me/interventionio", - "type": "custom" - }, - { - "url": "https://github.com/Intervention", - "type": "github" - } - ], - "install-path": "../intervention/image" - }, - { - "name": "kkokk/poster", - "version": "v2.3.2", - "version_normalized": "2.3.2.0", - "source": { - "type": "git", - "url": "https://github.com/kkokk/poster.git", - "reference": "6fa26bb225d0d7bcd654c93d342abf5284803203" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kkokk/poster/zipball/6fa26bb225d0d7bcd654c93d342abf5284803203", - "reference": "6fa26bb225d0d7bcd654c93d342abf5284803203", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-gd": "*", - "ext-iconv": "*", - "ext-json": "*", - "ext-mbstring": "*", - "php": ">=5.6.0" - }, - "time": "2024-04-02T09:33:45+00:00", - "type": "project", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Kkokk\\Poster\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "lang", - "email": "732853989@qq.com" - } - ], - "description": "PHP生成海报", - "support": { - "issues": "https://github.com/kkokk/poster/issues", - "source": "https://github.com/kkokk/poster/tree/v2.3.2" - }, - "install-path": "../kkokk/poster" - }, - { - "name": "kosinix/grafika", - "version": "dev-master", - "version_normalized": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/kosinix/grafika.git", - "reference": "211f61fc334b8b36616b23e8af7c5727971d96ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kosinix/grafika/zipball/211f61fc334b8b36616b23e8af7c5727971d96ee", - "reference": "211f61fc334b8b36616b23e8af7c5727971d96ee", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3" - }, - "time": "2017-06-20T03:13:49+00:00", - "default-branch": true, - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Grafika\\": "src/Grafika" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT", - "GPL-2.0+" - ], - "authors": [ - { - "name": "Nico Amarilla", - "homepage": "https://www.kosinix.com" - } - ], - "description": "An image manipulation library for PHP.", - "homepage": "http://kosinix.github.io/grafika", - "keywords": [ - "grafika" - ], - "support": { - "issues": "https://github.com/kosinix/grafika/issues", - "source": "https://github.com/kosinix/grafika/tree/2.0.8" - }, - "install-path": "../kosinix/grafika" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.3", - "version_normalized": "1.3.3.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/serializable-closure.git", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "nesbot/carbon": "^2.61", - "pestphp/pest": "^1.21.3", - "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" - }, - "time": "2023-11-08T14:08:06+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Laravel\\SerializableClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - }, - { - "name": "Nuno Maduro", - "email": "nuno@laravel.com" - } - ], - "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", - "keywords": [ - "closure", - "laravel", - "serializable" - ], - "support": { - "issues": "https://github.com/laravel/serializable-closure/issues", - "source": "https://github.com/laravel/serializable-closure" - }, - "install-path": "../laravel/serializable-closure" - }, - { - "name": "league/flysystem", - "version": "2.5.0", - "version_normalized": "2.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8aaffb653c5777781b0f7f69a5d937baf7ab6cdb", - "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "league/mime-type-detection": "^1.0.0", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "guzzlehttp/ringphp": "<1.1.1" - }, - "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.0", - "aws/aws-sdk-php": "^3.132.4", - "composer/semver": "^3.0", - "ext-fileinfo": "*", - "ext-ftp": "*", - "friendsofphp/php-cs-fixer": "^3.2", - "google/cloud-storage": "^1.23", - "phpseclib/phpseclib": "^2.0", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^8.5 || ^9.4", - "sabre/dav": "^4.1" - }, - "time": "2022-09-17T21:02:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "File storage abstraction for PHP", - "keywords": [ - "WebDAV", - "aws", - "cloud", - "file", - "files", - "filesystem", - "filesystems", - "ftp", - "s3", - "sftp", - "storage" - ], - "support": { - "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/2.5.0" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "install-path": "../league/flysystem" - }, - { - "name": "league/mime-type-detection", - "version": "1.15.0", - "version_normalized": "1.15.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", - "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.2", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" - }, - "time": "2024-01-28T23:22:08+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "support": { - "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "install-path": "../league/mime-type-detection" - }, - { - "name": "maennchen/zipstream-php", - "version": "v2.4.0", - "version_normalized": "2.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", - "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-mbstring": "*", - "myclabs/php-enum": "^1.5", - "php": "^8.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.9", - "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4", - "phpunit/phpunit": "^8.5.8 || ^9.4.2", - "vimeo/psalm": "^5.0" - }, - "time": "2022-12-08T12:29:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "ZipStream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paul Duncan", - "email": "pabs@pablotron.org" - }, - { - "name": "Jonatan Männchen", - "email": "jonatan@maennchen.ch" - }, - { - "name": "Jesse Donat", - "email": "donatj@gmail.com" - }, - { - "name": "András Kolesár", - "email": "kolesar@kolesar.hu" - } - ], - "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", - "keywords": [ - "stream", - "zip" - ], - "support": { - "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/v2.4.0" - }, - "funding": [ - { - "url": "https://github.com/maennchen", - "type": "github" - }, - { - "url": "https://opencollective.com/zipstream", - "type": "open_collective" - } - ], - "install-path": "../maennchen/zipstream-php" - }, - { - "name": "markbaker/complex", - "version": "3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/MarkBaker/PHPComplex.git", - "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", - "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "phpcompatibility/php-compatibility": "^9.3", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.7" - }, - "time": "2022-12-06T16:21:08+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Complex\\": "classes/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Baker", - "email": "mark@lange.demon.co.uk" - } - ], - "description": "PHP Class for working with complex numbers", - "homepage": "https://github.com/MarkBaker/PHPComplex", - "keywords": [ - "complex", - "mathematics" - ], - "support": { - "issues": "https://github.com/MarkBaker/PHPComplex/issues", - "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" - }, - "install-path": "../markbaker/complex" - }, - { - "name": "markbaker/matrix", - "version": "3.0.1", - "version_normalized": "3.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/MarkBaker/PHPMatrix.git", - "reference": "728434227fe21be27ff6d86621a1b13107a2562c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", - "reference": "728434227fe21be27ff6d86621a1b13107a2562c", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-master", - "phpcompatibility/php-compatibility": "^9.3", - "phpdocumentor/phpdocumentor": "2.*", - "phploc/phploc": "^4.0", - "phpmd/phpmd": "2.*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "sebastian/phpcpd": "^4.0", - "squizlabs/php_codesniffer": "^3.7" - }, - "time": "2022-12-02T22:17:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Matrix\\": "classes/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark Baker", - "email": "mark@demon-angel.eu" - } - ], - "description": "PHP Class for working with matrices", - "homepage": "https://github.com/MarkBaker/PHPMatrix", - "keywords": [ - "mathematics", - "matrix", - "vector" - ], - "support": { - "issues": "https://github.com/MarkBaker/PHPMatrix/issues", - "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" - }, - "install-path": "../markbaker/matrix" - }, - { - "name": "mjaschen/phpgeo", - "version": "4.2.0", - "version_normalized": "4.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/mjaschen/phpgeo.git", - "reference": "b2e593cf1e9aceea36510158ddb80c7395a80d5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mjaschen/phpgeo/zipball/b2e593cf1e9aceea36510158ddb80c7395a80d5a", - "reference": "b2e593cf1e9aceea36510158ddb80c7395a80d5a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6", - "vimeo/psalm": "^4.13" - }, - "time": "2022-07-25T08:36:36+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Location\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marcus Jaschen", - "email": "mjaschen@gmail.com", - "homepage": "https://www.marcusjaschen.de/" - } - ], - "description": "Simple Yet Powerful Geo Library", - "homepage": "https://phpgeo.marcusjaschen.de/", - "keywords": [ - "Polygon", - "area", - "bearing", - "bounds", - "calculation", - "coordinate", - "distance", - "earth", - "ellipsoid", - "geo", - "geofence", - "gis", - "gps", - "haversine", - "length", - "perpendicular", - "point", - "polyline", - "projection", - "simplify", - "track", - "vincenty" - ], - "support": { - "docs": "https://phpgeo.marcusjaschen.de/Installation.html", - "email": "mjaschen@gmail.com", - "issues": "https://github.com/mjaschen/phpgeo/issues", - "source": "https://github.com/mjaschen/phpgeo/tree/4.2.0" - }, - "install-path": "../mjaschen/phpgeo" - }, - { - "name": "monolog/monolog", - "version": "2.9.2", - "version_normalized": "2.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", - "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.2", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", - "guzzlehttp/guzzle": "^7.4", - "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", - "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpspec/prophecy": "^1.15", - "phpstan/phpstan": "^0.12.91", - "phpunit/phpunit": "^8.5.14", - "predis/predis": "^1.1 || ^2.0", - "rollbar/rollbar": "^1.3 || ^2 || ^3", - "ruflin/elastica": "^7", - "swiftmailer/swiftmailer": "^5.3|^6.0", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "ext-openssl": "Required to send log messages using SSL", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server" - }, - "time": "2023-10-27T15:25:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "https://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "support": { - "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.2" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "install-path": "../monolog/monolog" - }, - { - "name": "mtdowling/jmespath.php", - "version": "2.7.0", - "version_normalized": "2.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2.5 || ^8.0", - "symfony/polyfill-mbstring": "^1.17" - }, - "require-dev": { - "composer/xdebug-handler": "^3.0.3", - "phpunit/phpunit": "^8.5.33" - }, - "time": "2023-08-25T10:54:48+00:00", - "bin": [ - "bin/jp.php" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/JmesPath.php" - ], - "psr-4": { - "JmesPath\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": [ - "json", - "jsonpath" - ], - "support": { - "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" - }, - "install-path": "../mtdowling/jmespath.php" - }, - { - "name": "myclabs/php-enum", - "version": "1.8.4", - "version_normalized": "1.8.4.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" - }, - "time": "2022-08-04T09:53:51+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "MyCLabs\\Enum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" - } - ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", - "keywords": [ - "enum" - ], - "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "install-path": "../myclabs/php-enum" - }, - { - "name": "nesbot/carbon", - "version": "2.66.0", - "version_normalized": "2.66.0.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "time": "2023-01-29T18:53:47+00:00", - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "https://markido.com" - }, - { - "name": "kylekatarnls", - "homepage": "https://github.com/kylekatarnls" - } - ], - "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "support": { - "docs": "https://carbon.nesbot.com/docs", - "issues": "https://github.com/briannesbitt/Carbon/issues", - "source": "https://github.com/briannesbitt/Carbon" - }, - "funding": [ - { - "url": "https://github.com/sponsors/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon#sponsor", - "type": "opencollective" - }, - { - "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", - "type": "tidelift" - } - ], - "install-path": "../nesbot/carbon" - }, - { - "name": "nyholm/psr7", - "version": "1.8.1", - "version_normalized": "1.8.1.0", - "source": { - "type": "git", - "url": "https://github.com/Nyholm/psr7.git", - "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/aa5fc277a4f5508013d571341ade0c3886d4d00e", - "reference": "aa5fc277a4f5508013d571341ade0c3886d4d00e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.2", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0", - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.9", - "php-http/message-factory": "^1.0", - "php-http/psr7-integration-tests": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "symfony/error-handler": "^4.4" - }, - "time": "2023-11-13T09:31:12+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Nyholm\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" - } - ], - "description": "A fast PHP7 implementation of PSR-7", - "homepage": "https://tnyholm.se", - "keywords": [ - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.8.1" - }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "install-path": "../nyholm/psr7" - }, - { - "name": "nyholm/psr7-server", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/Nyholm/psr7-server.git", - "reference": "4335801d851f554ca43fa6e7d2602141538854dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7-server/zipball/4335801d851f554ca43fa6e7d2602141538854dc", - "reference": "4335801d851f554ca43fa6e7d2602141538854dc", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "nyholm/nsa": "^1.1", - "nyholm/psr7": "^1.3", - "phpunit/phpunit": "^7.0 || ^8.5 || ^9.3" - }, - "time": "2023-11-08T09:30:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Nyholm\\Psr7Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" - }, - { - "name": "Martijn van der Ven", - "email": "martijn@vanderven.se" - } - ], - "description": "Helper classes to handle PSR-7 server requests", - "homepage": "http://tnyholm.se", - "keywords": [ - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/Nyholm/psr7-server/issues", - "source": "https://github.com/Nyholm/psr7-server/tree/1.1.0" - }, - "funding": [ - { - "url": "https://github.com/Zegnat", - "type": "github" - }, - { - "url": "https://github.com/nyholm", - "type": "github" - } - ], - "install-path": "../nyholm/psr7-server" - }, - { - "name": "overtrue/socialite", - "version": "4.10.1", - "version_normalized": "4.10.1.0", - "source": { - "type": "git", - "url": "https://github.com/overtrue/socialite.git", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/overtrue/socialite/zipball/457b48f31414dc00d3fb445d6ab9355595067afe", - "reference": "457b48f31414dc00d3fb445d6ab9355595067afe", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "ext-openssl": "*", - "guzzlehttp/guzzle": "^7.0", - "php": ">=8.0.2", - "symfony/psr-http-message-bridge": "^2.1|^6.0" - }, - "require-dev": { - "jetbrains/phpstorm-attributes": "^1.0", - "laravel/pint": "^1.2", - "mockery/mockery": "^1.3", - "phpstan/phpstan": "^1.7", - "phpunit/phpunit": "^9.0" - }, - "time": "2024-03-08T06:41:54+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Contracts/FactoryInterface.php", - "src/Contracts/UserInterface.php", - "src/Contracts/ProviderInterface.php" - ], - "psr-4": { - "Overtrue\\Socialite\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "overtrue", - "email": "anzhengchao@gmail.com" - } - ], - "description": "A collection of OAuth 2 packages.", - "keywords": [ - "Feishu", - "login", - "oauth", - "qcloud", - "qq", - "social", - "wechat", - "weibo" - ], - "support": { - "issues": "https://github.com/overtrue/socialite/issues", - "source": "https://github.com/overtrue/socialite/tree/4.10.1" - }, - "funding": [ - { - "url": "https://github.com/overtrue", - "type": "github" - } - ], - "install-path": "../overtrue/socialite" - }, - { - "name": "php-di/invoker", - "version": "2.3.4", - "version_normalized": "2.3.4.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/Invoker.git", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", - "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.3", - "psr/container": "^1.0|^2.0" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "mnapoli/hard-mode": "~0.3.0", - "phpunit/phpunit": "^9.0" - }, - "time": "2023-09-08T09:24:21+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Invoker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Generic and extensible callable invoker", - "homepage": "https://github.com/PHP-DI/Invoker", - "keywords": [ - "callable", - "dependency", - "dependency-injection", - "injection", - "invoke", - "invoker" - ], - "support": { - "issues": "https://github.com/PHP-DI/Invoker/issues", - "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - } - ], - "install-path": "../php-di/invoker" - }, - { - "name": "php-di/php-di", - "version": "7.0.1", - "version_normalized": "7.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "1c7f1cc9cf6f51ff7f5f44bb1fa59243fcb7474a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/1c7f1cc9cf6f51ff7f5f44bb1fa59243fcb7474a", - "reference": "1c7f1cc9cf6f51ff7f5f44bb1fa59243fcb7474a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "laravel/serializable-closure": "^1.0", - "php": ">=8.0", - "php-di/invoker": "^2.0", - "psr/container": "^1.1 || ^2.0" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3", - "mnapoli/phpunit-easymock": "^1.3", - "ocramius/proxy-manager": "^2.11.2", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.6" - }, - "suggest": { - "ocramius/proxy-manager": "Install it if you want to use lazy injection (version ^2.3)" - }, - "time": "2023-01-13T22:30:45+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "DI\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The dependency injection container for humans", - "homepage": "https://php-di.org/", - "keywords": [ - "PSR-11", - "container", - "container-interop", - "dependency injection", - "di", - "ioc", - "psr11" - ], - "support": { - "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.1" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", - "type": "tidelift" - } - ], - "install-path": "../php-di/php-di" - }, - { - "name": "phpoffice/phpspreadsheet", - "version": "1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "6e81cf39bbd93ebc3a4e8150444c41e8aa9b769a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/6e81cf39bbd93ebc3a4e8150444c41e8aa9b769a", - "reference": "6e81cf39bbd93ebc3a4e8150444c41e8aa9b769a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xml": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "ext-zip": "*", - "ext-zlib": "*", - "ezyang/htmlpurifier": "^4.15", - "maennchen/zipstream-php": "^2.1", - "markbaker/complex": "^3.0", - "markbaker/matrix": "^3.0", - "php": "^7.4 || ^8.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "dev-main", - "dompdf/dompdf": "^1.0 || ^2.0", - "friendsofphp/php-cs-fixer": "^3.2", - "mitoteam/jpgraph": "^10.2.4", - "mpdf/mpdf": "^8.1.1", - "phpcompatibility/php-compatibility": "^9.3", - "phpstan/phpstan": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.0", - "squizlabs/php_codesniffer": "^3.7", - "tecnickcom/tcpdf": "^6.5" - }, - "suggest": { - "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-intl": "PHP Internationalization Functions", - "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", - "mpdf/mpdf": "Option for rendering PDF with PDF Writer", - "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" - }, - "time": "2023-02-25T12:24:49+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "https://blog.maartenballiauw.be" - }, - { - "name": "Mark Baker", - "homepage": "https://markbakeruk.net" - }, - { - "name": "Franck Lefevre", - "homepage": "https://rootslabs.net" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Adrien Crivelli" - } - ], - "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", - "keywords": [ - "OpenXML", - "excel", - "gnumeric", - "ods", - "php", - "spreadsheet", - "xls", - "xlsx" - ], - "support": { - "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.28.0" - }, - "install-path": "../phpoffice/phpspreadsheet" - }, - { - "name": "pimple/pimple", - "version": "v3.5.0", - "version_normalized": "3.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1 || ^2.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.4@dev" - }, - "time": "2021-10-28T11:13:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" - }, - "install-path": "../pimple/pimple" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-02-03T23:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "install-path": "../psr/cache" - }, - { - "name": "psr/container", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.4.0" - }, - "time": "2021-11-05T16:47:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "install-path": "../psr/container" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.2.0" - }, - "time": "2019-01-08T18:20:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "install-path": "../psr/event-dispatcher" - }, - { - "name": "psr/http-client", - "version": "1.0.3", - "version_normalized": "1.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", - "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2023-09-23T14:17:50+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client" - }, - "install-path": "../psr/http-client" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2023-04-10T20:10:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "install-path": "../psr/http-factory" - }, - { - "name": "psr/http-message", - "version": "1.1", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2023-04-04T09:50:52+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" - }, - "install-path": "../psr/http-message" - }, - { - "name": "psr/log", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-07-14T16:46:02+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "install-path": "../psr/log" - }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-10-29T13:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "install-path": "../psr/simple-cache" - }, - { - "name": "qcloud/cos-sdk-v5", - "version": "v2.6.2", - "version_normalized": "2.6.2.0", - "source": { - "type": "git", - "url": "https://github.com/tencentyun/cos-php-sdk-v5.git", - "reference": "92a1ee62b85ed4e7bf6836a684df5d7e3158d0ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tencentyun/cos-php-sdk-v5/zipball/92a1ee62b85ed4e7bf6836a684df5d7e3158d0ed", - "reference": "92a1ee62b85ed4e7bf6836a684df5d7e3158d0ed", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.2.1 || ^7.0", - "guzzlehttp/guzzle-services": "^1.1", - "guzzlehttp/psr7": "^1.3.1 || ^2.0", - "php": ">=5.6" - }, - "time": "2023-04-07T07:38:24+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Common.php" - ], - "psr-4": { - "Qcloud\\Cos\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "yaozongyou", - "email": "yaozongyou@vip.qq.com" - }, - { - "name": "lewzylu", - "email": "327874225@qq.com" - }, - { - "name": "tuunalai", - "email": "550566181@qq.com" - } - ], - "description": "PHP SDK for QCloud COS", - "keywords": [ - "cos", - "php", - "qcloud" - ], - "support": { - "issues": "https://github.com/tencentyun/cos-php-sdk-v5/issues", - "source": "https://github.com/tencentyun/cos-php-sdk-v5/tree/v2.6.2" - }, - "install-path": "../qcloud/cos-sdk-v5" - }, - { - "name": "qiniu/php-sdk", - "version": "v7.4.0", - "version_normalized": "7.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/qiniu/php-sdk.git", - "reference": "1c6bc89166e524a40ee42bf516fb99ffc6401c82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/qiniu/php-sdk/zipball/1c6bc89166e524a40ee42bf516fb99ffc6401c82", - "reference": "1c6bc89166e524a40ee42bf516fb99ffc6401c82", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~3.6" - }, - "time": "2021-07-19T07:41:36+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Qiniu/functions.php" - ], - "psr-4": { - "Qiniu\\": "src/Qiniu" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Qiniu", - "email": "sdk@qiniu.com", - "homepage": "http://www.qiniu.com" - } - ], - "description": "Qiniu Resource (Cloud) Storage SDK for PHP", - "homepage": "http://developer.qiniu.com/", - "keywords": [ - "cloud", - "qiniu", - "sdk", - "storage" - ], - "support": { - "issues": "https://github.com/qiniu/php-sdk/issues", - "source": "https://github.com/qiniu/php-sdk/tree/v7.4.0" - }, - "install-path": "../qiniu/php-sdk" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "version_normalized": "3.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "time": "2019-03-08T08:55:37+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "install-path": "../ralouphie/getallheaders" - }, - { - "name": "rmccue/requests", - "version": "v2.0.5", - "version_normalized": "2.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/WordPress/Requests.git", - "reference": "b717f1d2f4ef7992ec0c127747ed8b7e170c2f49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/WordPress/Requests/zipball/b717f1d2f4ef7992ec0c127747ed8b7e170c2f49", - "reference": "b717f1d2f4ef7992ec0c127747ed8b7e170c2f49", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "php": ">=5.6" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "php-parallel-lint/php-console-highlighter": "^0.5.0", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0", - "requests/test-server": "dev-main", - "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.6", - "wp-coding-standards/wpcs": "^2.0", - "yoast/phpunit-polyfills": "^1.0.0" - }, - "time": "2022-10-11T08:15:28+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "library/Deprecated.php" - ], - "psr-4": { - "WpOrg\\Requests\\": "src/" - }, - "classmap": [ - "library/Requests.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Ryan McCue", - "homepage": "https://rmccue.io/" - }, - { - "name": "Alain Schlesser", - "homepage": "https://github.com/schlessera" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl" - }, - { - "name": "Contributors", - "homepage": "https://github.com/WordPress/Requests/graphs/contributors" - } - ], - "description": "A HTTP library written in PHP, for human beings.", - "homepage": "https://requests.ryanmccue.info/", - "keywords": [ - "curl", - "fsockopen", - "http", - "idna", - "ipv6", - "iri", - "sockets" - ], - "support": { - "docs": "https://requests.ryanmccue.info/", - "issues": "https://github.com/WordPress/Requests/issues", - "source": "https://github.com/WordPress/Requests" - }, - "install-path": "../rmccue/requests" - }, - { - "name": "spatie/macroable", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/macroable.git", - "reference": "7a99549fc001c925714b329220dea680c04bfa48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/macroable/zipball/7a99549fc001c925714b329220dea680c04bfa48", - "reference": "7a99549fc001c925714b329220dea680c04bfa48", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": "^7.2|^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.0|^9.3" - }, - "time": "2020-11-03T10:15:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Spatie\\Macroable\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A trait to dynamically add methods to a class", - "homepage": "https://github.com/spatie/macroable", - "keywords": [ - "macroable", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/macroable/issues", - "source": "https://github.com/spatie/macroable/tree/1.0.1" - }, - "install-path": "../spatie/macroable" - }, - { - "name": "symfony/cache", - "version": "v6.0.19", - "version_normalized": "6.0.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "81ca309f056e836480928b20280ec52ce8369bb3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/81ca309f056e836480928b20280ec52ce8369bb3", - "reference": "81ca309f056e836480928b20280ec52ce8369bb3", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "psr/cache": "^2.0|^3.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2|^3", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^5.4|^6.0" - }, - "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" - }, - "provide": { - "psr/cache-implementation": "2.0|3.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0", - "symfony/cache-implementation": "1.1|2.0|3.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "time": "2023-01-20T17:44:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", - "homepage": "https://symfony.com", - "keywords": [ - "caching", - "psr6" - ], - "support": { - "source": "https://github.com/symfony/cache/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/cache" - }, - { - "name": "symfony/cache-contracts", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1c0a181c9ee221afe4fa55b2d13fc63c5ae14348" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1c0a181c9ee221afe4fa55b2d13fc63c5ae14348", - "reference": "1c0a181c9ee221afe4fa55b2d13fc63c5ae14348", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "psr/cache": "^3.0" - }, - "suggest": { - "symfony/cache-implementation": "" - }, - "time": "2022-01-02T09:55:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/cache-contracts" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2" - }, - "time": "2022-01-02T09:55:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - }, - { - "name": "symfony/http-client", - "version": "v6.0.20", - "version_normalized": "6.0.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "541c04560da1875f62c963c3aab6ea12a7314e11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/541c04560da1875f62c963c3aab6ea12a7314e11", - "reference": "541c04560da1875f62c963c3aab6ea12a7314e11", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" - }, - "require-dev": { - "amphp/amp": "^2.5", - "amphp/http-client": "^4.2.1", - "amphp/http-tunnel": "^1.0", - "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", - "nyholm/psr7": "^1.0", - "php-http/httplug": "^1.0|^2.0", - "psr/http-client": "^1.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0" - }, - "time": "2023-01-30T15:41:07+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-client/tree/v6.0.20" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-client" - }, - { - "name": "symfony/http-client-contracts", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "4184b9b63af1edaf35b6a7974c6f1f9f33294129" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/4184b9b63af1edaf35b6a7974c6f1f9f33294129", - "reference": "4184b9b63af1edaf35b6a7974c6f1f9f33294129", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "time": "2022-04-12T16:11:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-client-contracts" - }, - { - "name": "symfony/http-foundation", - "version": "v6.0.20", - "version_normalized": "6.0.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "e16b2676a4b3b1fa12378a20b29c364feda2a8d6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e16b2676a4b3b1fa12378a20b29c364feda2a8d6", - "reference": "e16b2676a4b3b1fa12378a20b29c364feda2a8d6", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "time": "2023-01-30T15:41:07+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.0.20" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-foundation" - }, - { - "name": "symfony/mime", - "version": "v6.0.19", - "version_normalized": "6.0.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "d7052547a0070cbeadd474e172b527a00d657301" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d7052547a0070cbeadd474e172b527a00d657301", - "reference": "d7052547a0070cbeadd474e172b527a00d657301", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" - }, - "time": "2023-01-11T11:50:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/mime" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", - "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2024-01-29T20:11:03+00:00", - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-idn" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-normalizer" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2023-07-28T09:04:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-mbstring" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", - "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1" - }, - "time": "2024-01-29T20:11:03+00:00", - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php72" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.29.0", - "version_normalized": "1.29.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1" - }, - "time": "2024-01-29T20:11:03+00:00", - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php80" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php81" - }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v2.2.0", - "version_normalized": "2.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0", - "symfony/http-foundation": "^5.4 || ^6.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/framework-bundle": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0", - "symfony/phpunit-bridge": "^6.2" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "time": "2023-04-21T08:40:19+00:00", - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-main": "2.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/psr-http-message-bridge" - }, - { - "name": "symfony/service-contracts", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "time": "2022-05-30T19:17:58+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/service-contracts" - }, - { - "name": "symfony/translation", - "version": "v6.0.19", - "version_normalized": "6.0.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f", - "reference": "9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "time": "2023-01-01T08:36:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/acbfbb274e730e5a0236f619b6168d9dedb3e282", - "reference": "acbfbb274e730e5a0236f619b6168d9dedb3e282", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "time": "2022-06-27T17:10:44+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation-contracts" - }, - { - "name": "symfony/var-dumper", - "version": "v6.0.19", - "version_normalized": "6.0.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "eb980457fa6899840fe1687e8627a03a7d8a3d52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eb980457fa6899840fe1687e8627a03a7d8a3d52", - "reference": "eb980457fa6899840fe1687e8627a03a7d8a3d52", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "time": "2023-01-20T17:44:14+00:00", - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/var-dumper" - }, - { - "name": "symfony/var-exporter", - "version": "v6.0.19", - "version_normalized": "6.0.19.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "df56f53818c2d5d9f683f4ad2e365ba73a3b69d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df56f53818c2d5d9f683f4ad2e365ba73a3b69d2", - "reference": "df56f53818c2d5d9f683f4ad2e365ba73a3b69d2", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.2" - }, - "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" - }, - "time": "2023-01-13T08:34:10+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\VarExporter\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", - "homepage": "https://symfony.com", - "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "serialize" - ], - "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.0.19" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/var-exporter" - }, - { - "name": "tencentcloud/common", - "version": "3.0.1105", - "version_normalized": "3.0.1105.0", - "source": { - "type": "git", - "url": "https://github.com/tencentcloud-sdk-php/common.git", - "reference": "b49bbd36fe95463c6eb11ed015de63999a45ea2d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tencentcloud-sdk-php/common/zipball/b49bbd36fe95463c6eb11ed015de63999a45ea2d", - "reference": "b49bbd36fe95463c6eb11ed015de63999a45ea2d", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/guzzle": "^6.3||^7.0", - "php": ">=5.6.0" - }, - "time": "2024-03-19T20:33:22+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "TencentCloud\\": "./src/TencentCloud" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "tencentcloudapi", - "email": "tencentcloudapi@tencent.com", - "homepage": "https://cloud.tencent.com/document/sdk/PHP", - "role": "Developer" - } - ], - "description": "TencentCloudApi php sdk", - "homepage": "https://github.com/tencentcloud-sdk-php/common", - "support": { - "issues": "https://github.com/tencentcloud-sdk-php/common/issues", - "source": "https://github.com/tencentcloud-sdk-php/common/tree/3.0.1105" - }, - "install-path": "../tencentcloud/common" - }, - { - "name": "tencentcloud/sms", - "version": "3.0.1105", - "version_normalized": "3.0.1105.0", - "source": { - "type": "git", - "url": "https://github.com/tencentcloud-sdk-php/sms.git", - "reference": "decd581d9d4f0fb9645c193deae2cd625c936ab0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tencentcloud-sdk-php/sms/zipball/decd581d9d4f0fb9645c193deae2cd625c936ab0", - "reference": "decd581d9d4f0fb9645c193deae2cd625c936ab0", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "tencentcloud/common": "3.0.1105" - }, - "time": "2024-03-19T21:12:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "TencentCloud\\": "./src/TencentCloud" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "tencentcloudapi", - "email": "tencentcloudapi@tencent.com", - "homepage": "https://github.com/tencentcloud-sdk-php/sms", - "role": "Developer" - } - ], - "description": "TencentCloudApi php sdk sms", - "homepage": "https://github.com/tencentcloud-sdk-php/sms", - "support": { - "issues": "https://github.com/tencentcloud-sdk-php/sms/issues", - "source": "https://github.com/tencentcloud-sdk-php/sms/tree/3.0.1105" - }, - "install-path": "../tencentcloud/sms" - }, - { - "name": "topthink/framework", - "version": "v8.0.3", - "version_normalized": "8.0.3.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/framework.git", - "reference": "5e59fb1e2bcb400c6f82e99d1a40dd058afc8563" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/framework/zipball/5e59fb1e2bcb400c6f82e99d1a40dd058afc8563", - "reference": "5e59fb1e2bcb400c6f82e99d1a40dd058afc8563", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": ">=8.0.0", - "psr/container": "^2.0", - "psr/http-message": "^1.0", - "psr/log": "^1.0|^2.0|^3.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "topthink/think-helper": "^3.1", - "topthink/think-orm": "^3.0" - }, - "require-dev": { - "guzzlehttp/psr7": "^2.1.0", - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.2", - "phpunit/phpunit": "^9.5" - }, - "time": "2023-10-17T08:31:52+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [], - "psr-4": { - "think\\": "src/think/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - }, - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP Framework.", - "homepage": "http://thinkphp.cn/", - "keywords": [ - "framework", - "orm", - "thinkphp" - ], - "support": { - "issues": "https://github.com/top-think/framework/issues", - "source": "https://github.com/top-think/framework/tree/v8.0.3" - }, - "install-path": "../topthink/framework" - }, - { - "name": "topthink/think-captcha", - "version": "v3.0.9", - "version_normalized": "3.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-captcha.git", - "reference": "b1ef360670578214edeebcf824aaf6ab7ee0528b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-captcha/zipball/b1ef360670578214edeebcf824aaf6ab7ee0528b", - "reference": "b1ef360670578214edeebcf824aaf6ab7ee0528b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "topthink/framework": "^6.0|^8.0" - }, - "time": "2023-04-27T07:18:40+00:00", - "type": "library", - "extra": { - "think": { - "services": [ - "think\\captcha\\CaptchaService" - ], - "config": { - "captcha": "src/config.php" - } - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helper.php" - ], - "psr-4": { - "think\\captcha\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "captcha package for thinkphp", - "support": { - "issues": "https://github.com/top-think/think-captcha/issues", - "source": "https://github.com/top-think/think-captcha/tree/v3.0.9" - }, - "install-path": "../topthink/think-captcha" - }, - { - "name": "topthink/think-filesystem", - "version": "v2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-filesystem.git", - "reference": "c08503232fcae0c3c7fefae5e6b5c841ffe09f2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-filesystem/zipball/c08503232fcae0c3c7fefae5e6b5c841ffe09f2f", - "reference": "c08503232fcae0c3c7fefae5e6b5c841ffe09f2f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "league/flysystem": "^2.0", - "topthink/framework": "^6.1|^8.0" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.2", - "phpunit/phpunit": "^8.0" - }, - "time": "2023-02-08T01:23:42+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP6.1 Filesystem Package", - "support": { - "issues": "https://github.com/top-think/think-filesystem/issues", - "source": "https://github.com/top-think/think-filesystem/tree/v2.0.2" - }, - "install-path": "../topthink/think-filesystem" - }, - { - "name": "topthink/think-helper", - "version": "v3.1.6", - "version_normalized": "3.1.6.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-helper.git", - "reference": "769acbe50a4274327162f9c68ec2e89a38eb2aff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-helper/zipball/769acbe50a4274327162f9c68ec2e89a38eb2aff", - "reference": "769acbe50a4274327162f9c68ec2e89a38eb2aff", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "time": "2021-12-15T04:27:55+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/helper.php" - ], - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP6 Helper Package", - "support": { - "issues": "https://github.com/top-think/think-helper/issues", - "source": "https://github.com/top-think/think-helper/tree/v3.1.6" - }, - "install-path": "../topthink/think-helper" - }, - { - "name": "topthink/think-image", - "version": "v1.0.7", - "version_normalized": "1.0.7.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-image.git", - "reference": "8586cf47f117481c6d415b20f7dedf62e79d5512" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-image/zipball/8586cf47f117481c6d415b20f7dedf62e79d5512", - "reference": "8586cf47f117481c6d415b20f7dedf62e79d5512", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-gd": "*" - }, - "require-dev": { - "phpunit/phpunit": "4.8.*", - "topthink/framework": "^5.0" - }, - "time": "2016-09-29T06:05:43+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "yunwuxin", - "email": "448901948@qq.com" - } - ], - "description": "The ThinkPHP5 Image Package", - "support": { - "issues": "https://github.com/top-think/think-image/issues", - "source": "https://github.com/top-think/think-image/tree/master" - }, - "install-path": "../topthink/think-image" - }, - { - "name": "topthink/think-multi-app", - "version": "v1.0.16", - "version_normalized": "1.0.16.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-multi-app.git", - "reference": "07b9183855150455e1f76f8cbe9d77d6d1bc399f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-multi-app/zipball/07b9183855150455e1f76f8cbe9d77d6d1bc399f", - "reference": "07b9183855150455e1f76f8cbe9d77d6d1bc399f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0", - "topthink/framework": "^6.0|^8.0" - }, - "time": "2023-02-07T08:40:09+00:00", - "type": "library", - "extra": { - "think": { - "services": [ - "think\\app\\Service" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\app\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "thinkphp6 multi app support", - "support": { - "issues": "https://github.com/top-think/think-multi-app/issues", - "source": "https://github.com/top-think/think-multi-app/tree/v1.0.16" - }, - "install-path": "../topthink/think-multi-app" - }, - { - "name": "topthink/think-orm", - "version": "v3.0.14", - "version_normalized": "3.0.14.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-orm.git", - "reference": "7b0b8ea6ca5e020217f6ba7ae34d547e148a675b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-orm/zipball/7b0b8ea6ca5e020217f6ba7ae34d547e148a675b", - "reference": "7b0b8ea6ca5e020217f6ba7ae34d547e148a675b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-json": "*", - "ext-pdo": "*", - "php": ">=8.0.0", - "psr/log": ">=1.0", - "psr/simple-cache": ">=1.0", - "topthink/think-helper": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^8|^9.5|^10" - }, - "time": "2023-09-24T13:15:07+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "stubs/load_stubs.php" - ], - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "the PHP Database&ORM Framework", - "keywords": [ - "database", - "orm" - ], - "support": { - "issues": "https://github.com/top-think/think-orm/issues", - "source": "https://github.com/top-think/think-orm/tree/v3.0.14" - }, - "install-path": "../topthink/think-orm" - }, - { - "name": "topthink/think-template", - "version": "v3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-template.git", - "reference": "4352d2cf627abfb8b49f830686c25c02f59c23f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-template/zipball/4352d2cf627abfb8b49f830686c25c02f59c23f2", - "reference": "4352d2cf627abfb8b49f830686c25c02f59c23f2", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.0", - "psr/simple-cache": ">=1.0" - }, - "time": "2023-02-25T12:11:14+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "the php template engine", - "support": { - "issues": "https://github.com/top-think/think-template/issues", - "source": "https://github.com/top-think/think-template/tree/v3.0.0" - }, - "install-path": "../topthink/think-template" - }, - { - "name": "topthink/think-trace", - "version": "v1.6", - "version_normalized": "1.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-trace.git", - "reference": "136cd5d97e8bdb780e4b5c1637c588ed7ca3e142" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-trace/zipball/136cd5d97e8bdb780e4b5c1637c588ed7ca3e142", - "reference": "136cd5d97e8bdb780e4b5c1637c588ed7ca3e142", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.1.0", - "topthink/framework": "^6.0|^8.0" - }, - "time": "2023-02-07T08:36:32+00:00", - "type": "library", - "extra": { - "think": { - "services": [ - "think\\trace\\Service" - ], - "config": { - "trace": "src/config.php" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\trace\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "thinkphp debug trace", - "support": { - "issues": "https://github.com/top-think/think-trace/issues", - "source": "https://github.com/top-think/think-trace/tree/v1.6" - }, - "install-path": "../topthink/think-trace" - }, - { - "name": "topthink/think-view", - "version": "v2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/top-think/think-view.git", - "reference": "d2a076011c96d2edd8016703a827fb54b2683c62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/top-think/think-view/zipball/d2a076011c96d2edd8016703a827fb54b2683c62", - "reference": "d2a076011c96d2edd8016703a827fb54b2683c62", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0.0", - "topthink/think-template": "^3.0" - }, - "time": "2023-02-25T12:18:09+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "think\\view\\driver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "description": "thinkphp template driver", - "support": { - "issues": "https://github.com/top-think/think-view/issues", - "source": "https://github.com/top-think/think-view/tree/v2.0.0" - }, - "install-path": "../topthink/think-view" - }, - { - "name": "w7corp/easywechat", - "version": "6.7.0", - "version_normalized": "6.7.0.0", - "source": { - "type": "git", - "url": "https://github.com/w7corp/easywechat.git", - "reference": "85a49397713662c5b98d661a5a9ad8f5566042c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/w7corp/easywechat/zipball/85a49397713662c5b98d661a5a9ad8f5566042c4", - "reference": "85a49397713662c5b98d661a5a9ad8f5566042c4", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-curl": "*", - "ext-fileinfo": "*", - "ext-libxml": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "ext-sodium": "*", - "monolog/monolog": "^2.2", - "nyholm/psr7": "^1.5", - "nyholm/psr7-server": "^1.0", - "overtrue/socialite": "^3.5|^4.0.1", - "php": ">=8.0.2", - "psr/http-client": "^1.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/cache": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/polyfill-php81": "^1.25", - "symfony/psr-http-message-bridge": "^2.1.2" - }, - "require-dev": { - "brainmaestro/composer-git-hooks": "^2.8", - "friendsofphp/php-cs-fixer": "^3.5.0", - "jetbrains/phpstorm-attributes": "^1.0", - "mikey179/vfsstream": "^1.6", - "mockery/mockery": "^1.4.4", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/var-dumper": "^5.2" - }, - "time": "2022-06-28T10:13:47+00:00", - "type": "library", - "extra": { - "hooks": { - "pre-commit": [ - "composer check-style", - "composer phpstan", - "composer test" - ], - "pre-push": [ - "composer check-style" - ], - "config": { - "stop-on-failure": [ - "pre-commit", - "pre-push" - ] - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "EasyWeChat\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "overtrue", - "email": "anzhengchao@gmail.com" - } - ], - "description": "微信SDK", - "keywords": [ - "easywechat", - "sdk", - "wechat", - "weixin", - "weixin-sdk" - ], - "support": { - "issues": "https://github.com/w7corp/easywechat/issues", - "source": "https://github.com/w7corp/easywechat/tree/6.7.0" - }, - "funding": [ - { - "url": "https://github.com/overtrue", - "type": "github" - } - ], - "install-path": "../w7corp/easywechat" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "version_normalized": "1.11.0.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "time": "2022-06-03T18:03:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "install-path": "../webmozart/assert" - }, - { - "name": "workerman/crontab", - "version": "v1.0.6", - "version_normalized": "1.0.6.0", - "source": { - "type": "git", - "url": "https://github.com/walkor/crontab.git", - "reference": "b78f1556f2977715b9cb5653129e6d9cf160d966" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/walkor/crontab/zipball/b78f1556f2977715b9cb5653129e6d9cf160d966", - "reference": "b78f1556f2977715b9cb5653129e6d9cf160d966", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.0", - "workerman/workerman": ">=4.0.20" - }, - "time": "2022-10-17T01:59:19+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Workerman\\Crontab\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "walkor", - "email": "walkor@workerman.net", - "homepage": "http://www.workerman.net", - "role": "Developer" - } - ], - "description": "A crontab written in PHP based on workerman", - "homepage": "http://www.workerman.net", - "keywords": [ - "crontab" - ], - "support": { - "email": "walkor@workerman.net", - "forum": "http://wenda.workerman.net/", - "issues": "https://github.com/walkor/workerman/issues", - "source": "https://github.com/walkor/crontab", - "wiki": "http://doc.workerman.net/" - }, - "install-path": "../workerman/crontab" - }, - { - "name": "workerman/redis", - "version": "v2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/walkor/redis.git", - "reference": "542f10c243ba846f1f3b4c07a26136c5fa80d972" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/walkor/redis/zipball/542f10c243ba846f1f3b4c07a26136c5fa80d972", - "reference": "542f10c243ba846f1f3b4c07a26136c5fa80d972", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7", - "workerman/workerman": "^4.1.0||^5.0.0" - }, - "time": "2023-06-08T01:39:47+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Workerman\\Redis\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "homepage": "http://www.workerman.net", - "support": { - "issues": "https://github.com/walkor/redis/issues", - "source": "https://github.com/walkor/redis/tree/v2.0.2" - }, - "install-path": "../workerman/redis" - }, - { - "name": "workerman/redis-queue", - "version": "v1.2.0", - "version_normalized": "1.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/walkor/redis-queue.git", - "reference": "7b6aee70d69e5c9427c0411d85f8398027831b42" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/walkor/redis-queue/zipball/7b6aee70d69e5c9427c0411d85f8398027831b42", - "reference": "7b6aee70d69e5c9427c0411d85f8398027831b42", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.0", - "workerman/redis": "^1.0||^2.0", - "workerman/workerman": ">=4.0.20" - }, - "time": "2024-02-28T07:00:03+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Workerman\\RedisQueue\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Message queue system written in PHP based on workerman and backed by Redis.", - "homepage": "http://www.workerman.net", - "support": { - "issues": "https://github.com/walkor/redis-queue/issues", - "source": "https://github.com/walkor/redis-queue/tree/v1.2.0" - }, - "install-path": "../workerman/redis-queue" - }, - { - "name": "workerman/workerman", - "version": "v4.1.15", - "version_normalized": "4.1.15.0", - "source": { - "type": "git", - "url": "https://github.com/walkor/workerman.git", - "reference": "afc8242fc769ab7cf22eb4ac22b97cb59d465e4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/walkor/workerman/zipball/afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", - "reference": "afc8242fc769ab7cf22eb4ac22b97cb59d465e4e", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=7.0" - }, - "suggest": { - "ext-event": "For better performance. " - }, - "time": "2024-02-19T02:10:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Workerman\\": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "walkor", - "email": "walkor@workerman.net", - "homepage": "http://www.workerman.net", - "role": "Developer" - } - ], - "description": "An asynchronous event driven PHP framework for easily building fast, scalable network applications.", - "homepage": "http://www.workerman.net", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "email": "walkor@workerman.net", - "forum": "http://wenda.workerman.net/", - "issues": "https://github.com/walkor/workerman/issues", - "source": "https://github.com/walkor/workerman", - "wiki": "http://doc.workerman.net/" - }, - "funding": [ - { - "url": "https://opencollective.com/workerman", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/walkor", - "type": "patreon" - } - ], - "install-path": "../workerman/workerman" - }, - { - "name": "yansongda/artful", - "version": "v1.0.9", - "version_normalized": "1.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/yansongda/artful.git", - "reference": "1fbf987c0deb95a9b67eb343f2b96c8489635e6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yansongda/artful/zipball/1fbf987c0deb95a9b67eb343f2b96c8489635e6f", - "reference": "1fbf987c0deb95a9b67eb343f2b96c8489635e6f", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "guzzlehttp/psr7": "^2.6", - "php": ">=8.0", - "psr/container": "^1.1 || ^2.0", - "psr/event-dispatcher": "^1.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "yansongda/supports": "~4.0.9" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.44", - "guzzlehttp/guzzle": "^7.0", - "hyperf/pimple": "^2.2", - "mockery/mockery": "^1.4", - "monolog/monolog": "^2.2", - "phpstan/phpstan": "^1.0.0", - "phpunit/phpunit": "^9.0", - "symfony/event-dispatcher": "^5.2.0", - "symfony/http-foundation": "^5.2.0", - "symfony/psr-http-message-bridge": "^2.1", - "symfony/var-dumper": "^5.1" - }, - "suggest": { - "hyperf/pimple": "其它/无框架下使用 SDK,请安装,任选其一", - "illuminate/container": "其它/无框架下使用 SDK,请安装,任选其一" - }, - "time": "2024-02-06T13:19:54+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Yansongda\\Artful\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "yansongda", - "email": "me@yansongda.cn" - } - ], - "description": "Artful 是一个简单易用的 API 请求框架 PHP Api RequesT Framwork U Like。", - "keywords": [ - "api", - "artful", - "framework", - "request" - ], - "support": { - "homepage": "https://artful.yansongda.cn", - "issues": "https://github.com/yansongda/artful/issues", - "source": "https://github.com/yansongda/artful" - }, - "install-path": "../yansongda/artful" - }, - { - "name": "yansongda/pay", - "version": "v3.6.3", - "version_normalized": "3.6.3.0", - "source": { - "type": "git", - "url": "https://github.com/yansongda/pay.git", - "reference": "fba0bb30636cb936eed9e9078d781e0dc4e4282b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yansongda/pay/zipball/fba0bb30636cb936eed9e9078d781e0dc4e4282b", - "reference": "fba0bb30636cb936eed9e9078d781e0dc4e4282b", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "ext-bcmath": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-openssl": "*", - "ext-simplexml": "*", - "php": ">=8.0", - "yansongda/artful": "~1.0.9", - "yansongda/supports": "~4.0.9" - }, - "conflict": { - "hyperf/framework": "<3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.44", - "guzzlehttp/guzzle": "^7.0", - "hyperf/pimple": "^2.2", - "mockery/mockery": "^1.4", - "monolog/monolog": "^2.2", - "phpstan/phpstan": "^1.0.0", - "phpunit/phpunit": "^9.0", - "symfony/event-dispatcher": "^5.2.0", - "symfony/http-foundation": "^5.2.0", - "symfony/psr-http-message-bridge": "^2.1", - "symfony/var-dumper": "^5.1" - }, - "time": "2024-02-29T12:19:11+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Yansongda\\Pay\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "yansongda", - "email": "me@yansongda.cn" - } - ], - "description": "可能是我用过的最优雅的 Alipay 和 WeChat 的支付 SDK 扩展包了", - "keywords": [ - "alipay", - "pay", - "wechat" - ], - "support": { - "homepage": "https://pay.yansongda.cn", - "issues": "https://github.com/yansongda/pay/issues", - "source": "https://github.com/yansongda/pay" - }, - "install-path": "../yansongda/pay" - }, - { - "name": "yansongda/supports", - "version": "v4.0.9", - "version_normalized": "4.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/yansongda/supports.git", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/yansongda/supports/zipball/c3479723be665360a5635c15f184a1d0a8dc995a", - "reference": "c3479723be665360a5635c15f184a1d0a8dc995a", - "shasum": "", - "mirrors": [ - { - "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", - "preferred": true - } - ] - }, - "require": { - "php": ">=8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.0", - "mockery/mockery": "^1.4", - "phpstan/phpstan": "^1.1.0", - "phpunit/phpunit": "^9.0" - }, - "suggest": { - "monolog/monolog": "Use logger", - "symfony/console": "Use stdout logger" - }, - "time": "2024-01-06T05:14:33+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Yansongda\\Supports\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "yansongda", - "email": "me@yansongda.cn" - } - ], - "description": "common components", - "keywords": [ - "array", - "collection", - "config", - "support" - ], - "support": { - "issues": "https://github.com/yansongda/supports/issues", - "source": "https://github.com/yansongda/supports" - }, - "install-path": "../yansongda/supports" - } - ], - "dev": true, - "dev-package-names": [ - "symfony/var-dumper", - "topthink/think-trace" - ] -} diff --git a/niucloud/vendor/composer/installed.php b/niucloud/vendor/composer/installed.php deleted file mode 100644 index 04dceec4..00000000 --- a/niucloud/vendor/composer/installed.php +++ /dev/null @@ -1,964 +0,0 @@ - array( - 'name' => 'topthink/think', - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => 'ce5a9834a9b2c9f70dbc00270fad24bd80a0c025', - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => true, - ), - 'versions' => array( - '365taofang/huaweicloud-sdk-php-obs' => array( - 'pretty_version' => '3.23.501', - 'version' => '3.23.501.0', - 'reference' => '85448144b10d26c1b4c15388a2ea11a76e41a1b5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../365taofang/huaweicloud-sdk-php-obs', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'adbario/php-dot-notation' => array( - 'pretty_version' => '2.5.0', - 'version' => '2.5.0.0', - 'reference' => '081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae', - 'type' => 'library', - 'install_path' => __DIR__ . '/../adbario/php-dot-notation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'alibabacloud/client' => array( - 'pretty_version' => '1.5.32', - 'version' => '1.5.32.0', - 'reference' => '5bc6f6d660797dcee2c3aef29700ab41ee764f4d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../alibabacloud/client', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'aliyuncs/oss-sdk-php' => array( - 'pretty_version' => 'v2.6.0', - 'version' => '2.6.0.0', - 'reference' => '572d0f8e099e8630ae7139ed3fdedb926c7a760f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../aliyuncs/oss-sdk-php', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'clagiordano/weblibs-configmanager' => array( - 'pretty_version' => 'v1.2.0', - 'version' => '1.2.0.0', - 'reference' => '5c8ebcc62782313b1278afe802b120d18c07a059', - 'type' => 'library', - 'install_path' => __DIR__ . '/../clagiordano/weblibs-configmanager', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'dh2y/think-qrcode' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'reference' => '977d032afa27b1852f5fc5441fad2497f6db7ff5', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dh2y/think-qrcode', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'dragonmantank/cron-expression' => array( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'reference' => 'be85b3f05b46c39bbc0d95f6c071ddff669510fa', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dragonmantank/cron-expression', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'ezyang/htmlpurifier' => array( - 'pretty_version' => 'v4.16.0', - 'version' => '4.16.0.0', - 'reference' => '523407fb06eb9e5f3d59889b3978d5bfe94299c8', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ezyang/htmlpurifier', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'fastknife/ajcaptcha' => array( - 'pretty_version' => 'v1.2.1', - 'version' => '1.2.1.0', - 'reference' => '836c5a3177bc622a245734aef421085955d0b2cb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fastknife/ajcaptcha', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'firebase/php-jwt' => array( - 'pretty_version' => 'v5.5.1', - 'version' => '5.5.1.0', - 'reference' => '83b609028194aa042ea33b5af2d41a7427de80e6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../firebase/php-jwt', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/command' => array( - 'pretty_version' => '1.2.2', - 'version' => '1.2.2.0', - 'reference' => '7883359e0ecab8a8f7c43aad2fc36360a35d21e8', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/command', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/guzzle' => array( - 'pretty_version' => '7.5.0', - 'version' => '7.5.0.0', - 'reference' => 'b50a2a1251152e43f6a37f0fa053e730a67d25ba', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/guzzle-services' => array( - 'pretty_version' => '1.3.2', - 'version' => '1.3.2.0', - 'reference' => '4989d902dd4e0411b320e851c46f3c94d652d891', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/guzzle-services', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/promises' => array( - 'pretty_version' => '1.5.3', - 'version' => '1.5.3.0', - 'reference' => '67ab6e18aaa14d753cc148911d273f6e6cb6721e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/promises', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/psr7' => array( - 'pretty_version' => '2.6.2', - 'version' => '2.6.2.0', - 'reference' => '45b30f99ac27b5ca93cb4831afe16285f57b8221', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/psr7', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'guzzlehttp/uri-template' => array( - 'pretty_version' => 'v1.0.2', - 'version' => '1.0.2.0', - 'reference' => '61bf437fc2197f587f6857d3ff903a24f1731b5d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/uri-template', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hyperf/context' => array( - 'pretty_version' => 'v3.0.37', - 'version' => '3.0.37.0', - 'reference' => '264e06fb882426d90758eca2c5bb8293f8b60455', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hyperf/context', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hyperf/contract' => array( - 'pretty_version' => 'v3.0.37', - 'version' => '3.0.37.0', - 'reference' => '2e8290104468a8d90855067d8644a32114474452', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hyperf/contract', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hyperf/engine' => array( - 'pretty_version' => 'v2.10.5', - 'version' => '2.10.5.0', - 'reference' => 'b3e1a025e388815612815a0b08fc4f2439140676', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hyperf/engine', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hyperf/engine-contract' => array( - 'pretty_version' => 'v1.9.1', - 'version' => '1.9.1.0', - 'reference' => 'fec2e45f35404b2e5b4c3eaf1b0dce67d60771eb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hyperf/engine-contract', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'hyperf/pimple' => array( - 'pretty_version' => 'v2.2.2', - 'version' => '2.2.2.0', - 'reference' => '7bd07745c256b83679471c06ec2a11e901d37277', - 'type' => 'library', - 'install_path' => __DIR__ . '/../hyperf/pimple', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'intervention/image' => array( - 'pretty_version' => '2.7.2', - 'version' => '2.7.2.0', - 'reference' => '04be355f8d6734c826045d02a1079ad658322dad', - 'type' => 'library', - 'install_path' => __DIR__ . '/../intervention/image', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'kkokk/poster' => array( - 'pretty_version' => 'v2.3.2', - 'version' => '2.3.2.0', - 'reference' => '6fa26bb225d0d7bcd654c93d342abf5284803203', - 'type' => 'project', - 'install_path' => __DIR__ . '/../kkokk/poster', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'kosinix/grafika' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => '211f61fc334b8b36616b23e8af7c5727971d96ee', - 'type' => 'library', - 'install_path' => __DIR__ . '/../kosinix/grafika', - 'aliases' => array( - 0 => '9999999-dev', - ), - 'dev_requirement' => false, - ), - 'laravel/serializable-closure' => array( - 'pretty_version' => 'v1.3.3', - 'version' => '1.3.3.0', - 'reference' => '3dbf8a8e914634c48d389c1234552666b3d43754', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/serializable-closure', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/flysystem' => array( - 'pretty_version' => '2.5.0', - 'version' => '2.5.0.0', - 'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/flysystem', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'league/mime-type-detection' => array( - 'pretty_version' => '1.15.0', - 'version' => '1.15.0.0', - 'reference' => 'ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/mime-type-detection', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'maennchen/zipstream-php' => array( - 'pretty_version' => 'v2.4.0', - 'version' => '2.4.0.0', - 'reference' => '3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../maennchen/zipstream-php', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'markbaker/complex' => array( - 'pretty_version' => '3.0.2', - 'version' => '3.0.2.0', - 'reference' => '95c56caa1cf5c766ad6d65b6344b807c1e8405b9', - 'type' => 'library', - 'install_path' => __DIR__ . '/../markbaker/complex', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'markbaker/matrix' => array( - 'pretty_version' => '3.0.1', - 'version' => '3.0.1.0', - 'reference' => '728434227fe21be27ff6d86621a1b13107a2562c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../markbaker/matrix', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'mjaschen/phpgeo' => array( - 'pretty_version' => '4.2.0', - 'version' => '4.2.0.0', - 'reference' => 'b2e593cf1e9aceea36510158ddb80c7395a80d5a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../mjaschen/phpgeo', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'monolog/monolog' => array( - 'pretty_version' => '2.9.2', - 'version' => '2.9.2.0', - 'reference' => '437cb3628f4cf6042cc10ae97fc2b8472e48ca1f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../monolog/monolog', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'mtdowling/cron-expression' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '^1.0', - ), - ), - 'mtdowling/jmespath.php' => array( - 'pretty_version' => '2.7.0', - 'version' => '2.7.0.0', - 'reference' => 'bbb69a935c2cbb0c03d7f481a238027430f6440b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../mtdowling/jmespath.php', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'myclabs/php-enum' => array( - 'pretty_version' => '1.8.4', - 'version' => '1.8.4.0', - 'reference' => 'a867478eae49c9f59ece437ae7f9506bfaa27483', - 'type' => 'library', - 'install_path' => __DIR__ . '/../myclabs/php-enum', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nesbot/carbon' => array( - 'pretty_version' => '2.66.0', - 'version' => '2.66.0.0', - 'reference' => '496712849902241f04902033b0441b269effe001', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nesbot/carbon', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nyholm/psr7' => array( - 'pretty_version' => '1.8.1', - 'version' => '1.8.1.0', - 'reference' => 'aa5fc277a4f5508013d571341ade0c3886d4d00e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nyholm/psr7', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'nyholm/psr7-server' => array( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'reference' => '4335801d851f554ca43fa6e7d2602141538854dc', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nyholm/psr7-server', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'overtrue/socialite' => array( - 'pretty_version' => '4.10.1', - 'version' => '4.10.1.0', - 'reference' => '457b48f31414dc00d3fb445d6ab9355595067afe', - 'type' => 'library', - 'install_path' => __DIR__ . '/../overtrue/socialite', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'php-di/invoker' => array( - 'pretty_version' => '2.3.4', - 'version' => '2.3.4.0', - 'reference' => '33234b32dafa8eb69202f950a1fc92055ed76a86', - 'type' => 'library', - 'install_path' => __DIR__ . '/../php-di/invoker', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'php-di/php-di' => array( - 'pretty_version' => '7.0.1', - 'version' => '7.0.1.0', - 'reference' => '1c7f1cc9cf6f51ff7f5f44bb1fa59243fcb7474a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../php-di/php-di', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'php-http/async-client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '*', - ), - ), - 'php-http/client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '*', - ), - ), - 'php-http/message-factory-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'phpoffice/phpspreadsheet' => array( - 'pretty_version' => '1.28.0', - 'version' => '1.28.0.0', - 'reference' => '6e81cf39bbd93ebc3a4e8150444c41e8aa9b769a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpoffice/phpspreadsheet', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'pimple/pimple' => array( - 'pretty_version' => 'v3.5.0', - 'version' => '3.5.0.0', - 'reference' => 'a94b3a4db7fb774b3d78dad2315ddc07629e1bed', - 'type' => 'library', - 'install_path' => __DIR__ . '/../pimple/pimple', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/cache-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.0|3.0', - ), - ), - 'psr/container' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/container', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/container-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '^1.0', - ), - ), - 'psr/event-dispatcher' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/event-dispatcher', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-client' => array( - 'pretty_version' => '1.0.3', - 'version' => '1.0.3.0', - 'reference' => 'bb5906edc1c324c9a05aa0873d40117941e5fa90', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-client', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-factory' => array( - 'pretty_version' => '1.0.2', - 'version' => '1.0.2.0', - 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-factory', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-factory-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-message' => array( - 'pretty_version' => '1.1', - 'version' => '1.1.0.0', - 'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-message', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/http-message-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/log' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/log', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/log-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0.0 || 2.0.0 || 3.0.0', - ), - ), - 'psr/simple-cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/simple-cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'psr/simple-cache-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0|2.0|3.0', - ), - ), - 'qcloud/cos-sdk-v5' => array( - 'pretty_version' => 'v2.6.2', - 'version' => '2.6.2.0', - 'reference' => '92a1ee62b85ed4e7bf6836a684df5d7e3158d0ed', - 'type' => 'library', - 'install_path' => __DIR__ . '/../qcloud/cos-sdk-v5', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'qiniu/php-sdk' => array( - 'pretty_version' => 'v7.4.0', - 'version' => '7.4.0.0', - 'reference' => '1c6bc89166e524a40ee42bf516fb99ffc6401c82', - 'type' => 'library', - 'install_path' => __DIR__ . '/../qiniu/php-sdk', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'ralouphie/getallheaders' => array( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ralouphie/getallheaders', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'rmccue/requests' => array( - 'pretty_version' => 'v2.0.5', - 'version' => '2.0.5.0', - 'reference' => 'b717f1d2f4ef7992ec0c127747ed8b7e170c2f49', - 'type' => 'library', - 'install_path' => __DIR__ . '/../rmccue/requests', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'spatie/macroable' => array( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'reference' => '7a99549fc001c925714b329220dea680c04bfa48', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/macroable', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/cache' => array( - 'pretty_version' => 'v6.0.19', - 'version' => '6.0.19.0', - 'reference' => '81ca309f056e836480928b20280ec52ce8369bb3', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/cache', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/cache-contracts' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => '1c0a181c9ee221afe4fa55b2d13fc63c5ae14348', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/cache-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/cache-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.1|2.0|3.0', - ), - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/http-client' => array( - 'pretty_version' => 'v6.0.20', - 'version' => '6.0.20.0', - 'reference' => '541c04560da1875f62c963c3aab6ea12a7314e11', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-client', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/http-client-contracts' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => '4184b9b63af1edaf35b6a7974c6f1f9f33294129', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-client-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/http-client-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '3.0', - ), - ), - 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.0.20', - 'version' => '6.0.20.0', - 'reference' => 'e16b2676a4b3b1fa12378a20b29c364feda2a8d6', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-foundation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/mime' => array( - 'pretty_version' => 'v6.0.19', - 'version' => '6.0.19.0', - 'reference' => 'd7052547a0070cbeadd474e172b527a00d657301', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/mime', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-idn' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => 'a287ed7475f85bf6f61890146edbc932c0fff919', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-normalizer' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-mbstring' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'reference' => '42292d99c55abe617799667f454222c54c60e229', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-php72' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => '861391a8da9a04cbad2d232ddd9e4893220d6e25', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php72', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-php80' => array( - 'pretty_version' => 'v1.29.0', - 'version' => '1.29.0.0', - 'reference' => '87b68208d5c1188808dd7839ee1e6c8ec3b02f1b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php80', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/polyfill-php81' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'reference' => '7581cd600fa9fd681b797d00b02f068e2f13263b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php81', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/psr-http-message-bridge' => array( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'reference' => '28a732c05bbad801304ad5a5c674cf2970508993', - 'type' => 'symfony-bridge', - 'install_path' => __DIR__ . '/../symfony/psr-http-message-bridge', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => 'd78d39c1599bd1188b8e26bb341da52c3c6d8a66', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/service-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation' => array( - 'pretty_version' => 'v6.0.19', - 'version' => '6.0.19.0', - 'reference' => '9c24b3fdbbe9fb2ef3a6afd8bbaadfd72dad681f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'reference' => 'acbfbb274e730e5a0236f619b6168d9dedb3e282', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation-contracts', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'symfony/translation-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.3|3.0', - ), - ), - 'symfony/var-dumper' => array( - 'pretty_version' => 'v6.0.19', - 'version' => '6.0.19.0', - 'reference' => 'eb980457fa6899840fe1687e8627a03a7d8a3d52', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/var-dumper', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'symfony/var-exporter' => array( - 'pretty_version' => 'v6.0.19', - 'version' => '6.0.19.0', - 'reference' => 'df56f53818c2d5d9f683f4ad2e365ba73a3b69d2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/var-exporter', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'tencentcloud/common' => array( - 'pretty_version' => '3.0.1105', - 'version' => '3.0.1105.0', - 'reference' => 'b49bbd36fe95463c6eb11ed015de63999a45ea2d', - 'type' => 'library', - 'install_path' => __DIR__ . '/../tencentcloud/common', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'tencentcloud/sms' => array( - 'pretty_version' => '3.0.1105', - 'version' => '3.0.1105.0', - 'reference' => 'decd581d9d4f0fb9645c193deae2cd625c936ab0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../tencentcloud/sms', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/framework' => array( - 'pretty_version' => 'v8.0.3', - 'version' => '8.0.3.0', - 'reference' => '5e59fb1e2bcb400c6f82e99d1a40dd058afc8563', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/framework', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think' => array( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'reference' => 'ce5a9834a9b2c9f70dbc00270fad24bd80a0c025', - 'type' => 'project', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-captcha' => array( - 'pretty_version' => 'v3.0.9', - 'version' => '3.0.9.0', - 'reference' => 'b1ef360670578214edeebcf824aaf6ab7ee0528b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-captcha', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-filesystem' => array( - 'pretty_version' => 'v2.0.2', - 'version' => '2.0.2.0', - 'reference' => 'c08503232fcae0c3c7fefae5e6b5c841ffe09f2f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-filesystem', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-helper' => array( - 'pretty_version' => 'v3.1.6', - 'version' => '3.1.6.0', - 'reference' => '769acbe50a4274327162f9c68ec2e89a38eb2aff', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-helper', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-image' => array( - 'pretty_version' => 'v1.0.7', - 'version' => '1.0.7.0', - 'reference' => '8586cf47f117481c6d415b20f7dedf62e79d5512', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-image', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-multi-app' => array( - 'pretty_version' => 'v1.0.16', - 'version' => '1.0.16.0', - 'reference' => '07b9183855150455e1f76f8cbe9d77d6d1bc399f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-multi-app', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-orm' => array( - 'pretty_version' => 'v3.0.14', - 'version' => '3.0.14.0', - 'reference' => '7b0b8ea6ca5e020217f6ba7ae34d547e148a675b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-orm', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-template' => array( - 'pretty_version' => 'v3.0.0', - 'version' => '3.0.0.0', - 'reference' => '4352d2cf627abfb8b49f830686c25c02f59c23f2', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-template', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'topthink/think-trace' => array( - 'pretty_version' => 'v1.6', - 'version' => '1.6.0.0', - 'reference' => '136cd5d97e8bdb780e4b5c1637c588ed7ca3e142', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-trace', - 'aliases' => array(), - 'dev_requirement' => true, - ), - 'topthink/think-view' => array( - 'pretty_version' => 'v2.0.0', - 'version' => '2.0.0.0', - 'reference' => 'd2a076011c96d2edd8016703a827fb54b2683c62', - 'type' => 'library', - 'install_path' => __DIR__ . '/../topthink/think-view', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'w7corp/easywechat' => array( - 'pretty_version' => '6.7.0', - 'version' => '6.7.0.0', - 'reference' => '85a49397713662c5b98d661a5a9ad8f5566042c4', - 'type' => 'library', - 'install_path' => __DIR__ . '/../w7corp/easywechat', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'webmozart/assert' => array( - 'pretty_version' => '1.11.0', - 'version' => '1.11.0.0', - 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', - 'type' => 'library', - 'install_path' => __DIR__ . '/../webmozart/assert', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'workerman/crontab' => array( - 'pretty_version' => 'v1.0.6', - 'version' => '1.0.6.0', - 'reference' => 'b78f1556f2977715b9cb5653129e6d9cf160d966', - 'type' => 'library', - 'install_path' => __DIR__ . '/../workerman/crontab', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'workerman/redis' => array( - 'pretty_version' => 'v2.0.2', - 'version' => '2.0.2.0', - 'reference' => '542f10c243ba846f1f3b4c07a26136c5fa80d972', - 'type' => 'library', - 'install_path' => __DIR__ . '/../workerman/redis', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'workerman/redis-queue' => array( - 'pretty_version' => 'v1.2.0', - 'version' => '1.2.0.0', - 'reference' => '7b6aee70d69e5c9427c0411d85f8398027831b42', - 'type' => 'library', - 'install_path' => __DIR__ . '/../workerman/redis-queue', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'workerman/workerman' => array( - 'pretty_version' => 'v4.1.15', - 'version' => '4.1.15.0', - 'reference' => 'afc8242fc769ab7cf22eb4ac22b97cb59d465e4e', - 'type' => 'library', - 'install_path' => __DIR__ . '/../workerman/workerman', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'yansongda/artful' => array( - 'pretty_version' => 'v1.0.9', - 'version' => '1.0.9.0', - 'reference' => '1fbf987c0deb95a9b67eb343f2b96c8489635e6f', - 'type' => 'library', - 'install_path' => __DIR__ . '/../yansongda/artful', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'yansongda/pay' => array( - 'pretty_version' => 'v3.6.3', - 'version' => '3.6.3.0', - 'reference' => 'fba0bb30636cb936eed9e9078d781e0dc4e4282b', - 'type' => 'library', - 'install_path' => __DIR__ . '/../yansongda/pay', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'yansongda/supports' => array( - 'pretty_version' => 'v4.0.9', - 'version' => '4.0.9.0', - 'reference' => 'c3479723be665360a5635c15f184a1d0a8dc995a', - 'type' => 'library', - 'install_path' => __DIR__ . '/../yansongda/supports', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/niucloud/vendor/composer/platform_check.php b/niucloud/vendor/composer/platform_check.php deleted file mode 100644 index b168ddd5..00000000 --- a/niucloud/vendor/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -= 80002)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/niucloud/vendor/dh2y/think-qrcode/README.md b/niucloud/vendor/dh2y/think-qrcode/README.md deleted file mode 100644 index bd0fb086..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# think-qrcode -The ThinkPHP5 qrcode -二维码生成 SDK -## 安装 - -### 一、执行命令安装 -``` -composer require dh2y/think-qrcode -``` - -或者 - -### 二、require安装 - -##### thinkphp5.0 安装 -``` -"require": { - "dh2y/think-qrcode":"1.*" -}, -``` - -##### thinkphp5.1 安装 -``` -"require": { - "dh2y/think-qrcode":"2.*" -}, -``` - -或者 -### 三、autoload psr-4标准安装 -``` - a) 进入vendor/dh2y目录 (没有dh2y目录 mkdir dh2y) - b) git clone - c) 修改 git clone下来的项目名称为think-qrcode - d) 添加下面配置 - "autoload": { - "psr-4": { - "dh2y\\qrcode\\": "vendor/dh2y/think-qrcode/src" - } - }, - e) php composer.phar update -``` - - -## 使用 -#### 添加配置文件 -``` -return [ - 'cache_dir' => 'uploads'.DS.'qrcode', //缓存地址 - 'background'=> 'static/image/icon_cover.png' //背景图 -]; -``` - -#### 使用方法 -``` -$code = new QRcode(); -$code_path = $code->png($register_url) //生成二维码 - ->logo('static/image/avatar-m.jpg') //生成logo二维码 - ->background(180,500) //给二维码加上背景 - ->text($role,20,['center',740],'#ff4351') //添加文字水印 - ->text($nick_name,20,['center',780],'#000000') - ->getPath(); //获取二维码生成的地址 - -``` - - - - diff --git a/niucloud/vendor/dh2y/think-qrcode/composer.json b/niucloud/vendor/dh2y/think-qrcode/composer.json deleted file mode 100644 index 8f9a6b55..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "dh2y/think-qrcode", - "description": "qrcode for thinkphp5", - "homepage": "https://github.com/cinaofdai/think-qrcode", - "license": "MIT", - "minimum-stability": "stable", - "version": "2.0", - "authors": [ - { - "name": "dh2y", - "email": "xiaodai54_long@163.com" - } - ], - "support": { - "issues": "https://github.com/cinaofdai/think-qrcode/issues" - }, - "require": { - "php": ">=5.4.0" - }, - "autoload": { - "psr-4": { - "dh2y\\qrcode\\": "src/" - } - } -} diff --git a/niucloud/vendor/dh2y/think-qrcode/src/QRcode.php b/niucloud/vendor/dh2y/think-qrcode/src/QRcode.php deleted file mode 100644 index f52e10e0..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/QRcode.php +++ /dev/null @@ -1,227 +0,0 @@ -config= Config::get('qrcode.'); - - if(isset($this->config['cache_dir'])&&$this->config['cache_dir']!=''){ - $this->cache_dir = $this->config['cache_dir']; - }else{ - $this->cache_dir = 'uploads/qrcode'; - } - - - if (!file_exists($this->cache_dir)){ - mkdir ($this->cache_dir,0775,true); - } - - require("phpqrcode/qrlib.php"); - } - - - /** - * 生成普通二维码 - * @param string $url 生成url地址 - * @param bool $outfile - * @param int $size - * @param string $evel - * @return $this - */ - public function png($url,$outfile=false,$size=5,$evel='H'){ - - if(!$outfile){ - $outfile = $this->cache_dir.'/'.time().'.png'; - } - - $this->outfile = $outfile; - - \QRcode::png($url,$outfile,$evel,$size,2); - return $this; - } - - - /** - * 显示二维码 - */ - public function show(){ - $url = Request::instance()->domain().'/'.$this->outfile; - exit(''); - } - - /** - * 返回url路径 - * @return string - */ - public function entry(){ - return Request::instance()->domain().'/'.$this->outfile; - } - - /** - * 返回生成二维码的相对路径 - * @param bool $ds - * @return string - */ - public function getPath($ds=true){ - if($ds){ - return '/'.$this->outfile; - }else{ - return $this->outfile; - } - - } - - /** - * 销毁内容 - */ - public function destroy(){ - @unlink($this->outfile); - } - - - /** - * 添加logo到二维码中 - * @param $logo - * @return bool|mixed - */ - public function logo($logo){ - if (!isset($logo)||$logo=='') { - $this->error = 'logo不存在'; - return false; - } - $QR = imagecreatefromstring(file_get_contents($this->outfile)); - $logo = imagecreatefromstring(file_get_contents($logo)); - $QR_width = imagesx($QR);//二维码图片宽度 - $QR_height = imagesy($QR);//二维码图片高度 - $logo_width = imagesx($logo);//logo图片宽度 - $logo_height = imagesy($logo);//logo图片高度 - $logo_qr_width = $QR_width / 5; - $scale = $logo_width/$logo_qr_width; - $logo_qr_height = $logo_height/$scale; - $from_width = ($QR_width - $logo_qr_width) / 2; - //重新组合图片并调整大小 - imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); - - $this->outfile = $this->cache_dir.'/'.time().'.png'; - imagepng($QR, $this->outfile); - imagedestroy($QR); - return $this; - } - - - /** - * 添加背景图 - * @param int $x 二维码在背景图X轴未知 - * @param int $y 二维码在背景图Y轴未知 - * @param string $dst_path - * @return $this - */ - public function background($x=200,$y=500,$dst_path = ''){ - - if($dst_path==''){ - $dst_path = $this->config['background']; - } - $src_path = $this->outfile;//覆盖图 - - //创建图片的实例 - $dst = imagecreatefromstring(file_get_contents($dst_path)); - $src = imagecreatefromstring(file_get_contents($src_path)); - - //获取覆盖图图片的宽高 - list($src_w, $src_h) = getimagesize($src_path); - - //将覆盖图复制到目标图片上,最后个参数100是设置透明度(100是不透明),这里实现不透明效果 - imagecopymerge($dst, $src, $x, $y, 0, 0, $src_w, $src_h, 100); - - $this->outfile = $this->cache_dir.'/'.time().'.png'; - imagepng($dst, $this->outfile);//根据需要生成相应的图片 - imagedestroy($dst); - return $this; - } - - public function text($text,$size,$locate =[],$color = '#00000000',$font='simsun.ttc', $offset = 0, $angle = 0) { - - $dst_path = $this->outfile; - - //创建图片的实例 - $dst = imagecreatefromstring(file_get_contents($dst_path)); - - /* 设置颜色 */ - if (is_string($color) && 0 === strpos($color, '#')) { - $color = str_split(substr($color, 1), 2); - $color = array_map('hexdec', $color); - if (empty($color[3]) || $color[3] > 127) { - $color[3] = 0; - } - } elseif (!is_array($color)) { - throw new Exception('错误的颜色值'); - } - - //如果字体不存在 用composer项目自己的字体 - if(!is_file($font)){ - $font = dirname(__FILE__).'/'.$font; - } - - //获取文字信息 - $info = imagettfbbox($size, $angle, $font, $text); - $minx = min($info[0], $info[2], $info[4], $info[6]); - $maxx = max($info[0], $info[2], $info[4], $info[6]); - $miny = min($info[1], $info[3], $info[5], $info[7]); - $maxy = max($info[1], $info[3], $info[5], $info[7]); - /* 计算文字初始坐标和尺寸 */ - $x = $minx; - $y = abs($miny); - $w = $maxx - $minx; - $h = $maxy - $miny; - - //背景图信息 - list($dst_w, $dst_h) = getimagesize($dst_path); - - if (is_array($locate)) { - list($posx, $posy) = $locate; - $x += ($posx=='center')?(($dst_w - $w) / 2):$posx; - $y += ($posy=='center')?(($dst_h - $h) / 2):$posy; - } else { - throw new Exception('不支持的文字位置类型'); - } - - //字体颜色 - $black = imagecolorallocate($dst, $color[0], $color[1], $color[2]); - - //加入文字 - imagefttext($dst, $size, $angle, $x, $y, $black,$font, $text); - - - //生成图片 - $this->outfile = $this->cache_dir.'/'.time().'.png'; - imagepng($dst, $this->outfile); - imagedestroy($dst); - - return $this; - } - -} \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/CHANGELOG b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/CHANGELOG deleted file mode 100644 index a6c53d26..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/CHANGELOG +++ /dev/null @@ -1,38 +0,0 @@ -* 1.0.0 build 2010031920 - - - first public release - - help in readme, install - - cleanup ans separation of QRtools and QRspec - - now TCPDF binding requires minimal changes in TCPDF, having most of job - done in QRtools tcpdfBarcodeArray - - nicer QRtools::timeBenchmark output - - license and copyright notices in files - - indent cleanup - from tab to 4spc, keep it that way please :) - - sf project, repository, wiki - - simple code generator in index.php - -* 1.1.0 build 2010032113 - - - added merge tool wich generate merged version of code - located in phpqrcode.php - - splited qrconst.php from qrlib.php - -* 1.1.1 build 2010032405 - - - patch by Rick Seymour allowing saving PNG and displaying it at the same time - - added version info in VERSION file - - modified merge tool to include version info into generated file - - fixed e-mail in almost all head comments - -* 1.1.2 build 2010032722 - - - full integration with TCPDF thanks to Nicola Asuni, it's author - - fixed bug with alphanumeric encoding detection - -* 1.1.3 build 2010081807 - - - short opening tags replaced with standard ones - -* 1.1.4 build 2010100721 - - - added missing static keyword QRinput::check (found by Luke Brookhart, Onjax LLC) diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/INSTALL b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/INSTALL deleted file mode 100644 index 945c95ae..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/INSTALL +++ /dev/null @@ -1,67 +0,0 @@ -== REQUIREMENTS == - - * PHP5 - * PHP GD2 extension with JPEG and PNG support - -== INSTALLATION == - -If you want to recreate cache by yourself make sure cache directory is -writable and you have permisions to write into it. Also make sure you are -able to read files in it if you have cache option enabled - -== CONFIGURATION == - -Feel free to modify config constants in qrconfig.php file. Read about it in -provided comments and project wiki page (links in README file) - -== QUICK START == - -Notice: probably you should'nt use all of this in same script :) - -encode('PHP QR Code :)'); -QRspec::debug($tab, true); - -== TCPDF INTEGRATION == - -Inside bindings/tcpdf you will find slightly modified 2dbarcodes.php. -Instal phpqrcode liblaty inside tcpdf folder, then overwrite (or merge) -2dbarcodes.php - -Then use similar as example #50 from TCPDF examples: - - true, - 'padding' => 4, - 'fgcolor' => array(0,0,0), - 'bgcolor' => false, //array(255,255,255) -); - -//code name: QR, specify error correction level after semicolon (L,M,Q,H) -$pdf->write2DBarcode('PHP QR Code :)', 'QR,L', '', '', 30, 30, $style, 'N'); diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/LICENSE b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/LICENSE deleted file mode 100644 index 31afd6d8..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/LICENSE +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/README b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/README deleted file mode 100644 index dd598f06..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/README +++ /dev/null @@ -1,45 +0,0 @@ -This is PHP implementation of QR Code 2-D barcode generator. It is pure-php -LGPL-licensed implementation based on C libqrencode by Kentaro Fukuchi. - -== LICENSING == - -Copyright (C) 2010 by Dominik Dzienia - -This library is free software; you can redistribute it and/or modify it under -the terms of the GNU Lesser General Public License as published by the Free -Software Foundation; either version 3 of the License, or any later version. - -This library is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU Lesser General Public License (LICENSE file) -for more details. - -You should have received a copy of the GNU Lesser General Public License along -with this library; if not, write to the Free Software Foundation, Inc., 51 -Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -== INSTALATION AND USAGE == - - * INSTALL file - * http://sourceforge.net/apps/mediawiki/phpqrcode/index.php?title=Main_Page - -== CONTACT == - -Fell free to contact me via e-mail (deltalab at poczta dot fm) or using -folowing project pages: - - * http://sourceforge.net/projects/phpqrcode/ - * http://phpqrcode.sourceforge.net/ - -== ACKNOWLEDGMENTS == - -Based on C libqrencode library (ver. 3.1.1) -Copyright (C) 2006-2010 by Kentaro Fukuchi -http://megaui.net/fukuchi/works/qrencode/index.en.html - -QR Code is registered trademarks of DENSO WAVE INCORPORATED in JAPAN and other -countries. - -Reed-Solomon code encoder is written by Phil Karn, KA9Q. -Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/VERSION b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/VERSION deleted file mode 100644 index 2677b362..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/VERSION +++ /dev/null @@ -1,2 +0,0 @@ -1.1.4 -2010100721 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/bindings/tcpdf/qrcode.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/bindings/tcpdf/qrcode.php deleted file mode 100644 index 7995460b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/bindings/tcpdf/qrcode.php +++ /dev/null @@ -1,2875 +0,0 @@ - -// http://phpqrcode.sourceforge.net/ -// https://sourceforge.net/projects/phpqrcode/ -// -// The "PHP QR Code encoder" is based on -// "C libqrencode library" (ver. 3.1.1) -// License: GNU-LGPL 2.1 -// Copyright (C) 2006-2010 by Kentaro Fukuchi -// http://megaui.net/fukuchi/works/qrencode/index.en.html -// -// Reed-Solomon code encoder is written by Phil Karn, KA9Q. -// Copyright (C) 2002-2006 Phil Karn, KA9Q -// -// QR Code is registered trademark of DENSO WAVE INCORPORATED -// http://www.denso-wave.com/qrcode/index-e.html -// --------------------------------------------------------- -// -// Author: Nicola Asuni -// -// (c) Copyright 2010: -// Nicola Asuni -// Tecnick.com S.r.l. -// Via della Pace, 11 -// 09044 Quartucciu (CA) -// ITALY -// www.tecnick.com -// info@tecnick.com -//============================================================+ - -/** - * Class to create QR-code arrays for TCPDF class. - * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. - * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. - * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. - * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. - * - * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). - * Please read comments on this class source file for full copyright and license information. - * - * @package com.tecnick.tcpdf - * @abstract Class for generating QR-code array for TCPDF. - * @author Nicola Asuni - * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com - * @link http://www.tcpdf.org - * @license http://www.gnu.org/copyleft/lesser.html LGPL - * @version 1.0.002 - */ - -// definitions -if (!defined('QRCODEDEFS')) { - - /** - * Indicate that definitions for this class are set - */ - define('QRCODEDEFS', true); - - // ----------------------------------------------------- - - // Encoding modes (characters which can be encoded in QRcode) - - /** - * Encoding mode - */ - define('QR_MODE_NL', -1); - - /** - * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode. - */ - define('QR_MODE_NM', 0); - - /** - * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode. - */ - define('QR_MODE_AN', 1); - - /** - * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode. - */ - define('QR_MODE_8B', 2); - - /** - * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode. - */ - define('QR_MODE_KJ', 3); - - /** - * Encoding mode STRUCTURED (currently unsupported) - */ - define('QR_MODE_ST', 4); - - // ----------------------------------------------------- - - // Levels of error correction. - // QRcode has a function of an error correcting for miss reading that white is black. - // Error correcting is defined in 4 level as below. - - /** - * Error correction level L : About 7% or less errors can be corrected. - */ - define('QR_ECLEVEL_L', 0); - - /** - * Error correction level M : About 15% or less errors can be corrected. - */ - define('QR_ECLEVEL_M', 1); - - /** - * Error correction level Q : About 25% or less errors can be corrected. - */ - define('QR_ECLEVEL_Q', 2); - - /** - * Error correction level H : About 30% or less errors can be corrected. - */ - define('QR_ECLEVEL_H', 3); - - // ----------------------------------------------------- - - // Version. Size of QRcode is defined as version. - // Version is from 1 to 40. - // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. - // So version 40 is 177*177 matrix. - - /** - * Maximum QR Code version. - */ - define('QRSPEC_VERSION_MAX', 40); - - /** - * Maximum matrix size for maximum version (version 40 is 177*177 matrix). - */ - define('QRSPEC_WIDTH_MAX', 177); - - // ----------------------------------------------------- - - /** - * Matrix index to get width from $capacity array. - */ - define('QRCAP_WIDTH', 0); - - /** - * Matrix index to get number of words from $capacity array. - */ - define('QRCAP_WORDS', 1); - - /** - * Matrix index to get remainder from $capacity array. - */ - define('QRCAP_REMINDER', 2); - - /** - * Matrix index to get error correction level from $capacity array. - */ - define('QRCAP_EC', 3); - - // ----------------------------------------------------- - - // Structure (currently usupported) - - /** - * Number of header bits for structured mode - */ - define('STRUCTURE_HEADER_BITS', 20); - - /** - * Max number of symbols for structured mode - */ - define('MAX_STRUCTURED_SYMBOLS', 16); - - // ----------------------------------------------------- - - // Masks - - /** - * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column) - */ - define('N1', 3); - - /** - * Down point base value for case 2 mask pattern (module block of same color) - */ - define('N2', 3); - - /** - * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column) - */ - define('N3', 40); - - /** - * Down point base value for case 4 mask pattern (ration of dark modules in whole) - */ - define('N4', 10); - - // ----------------------------------------------------- - - // Optimization settings - - /** - * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code - */ - define('QR_FIND_BEST_MASK', true); - - /** - * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly - */ - define('QR_FIND_FROM_RANDOM', 2); - - /** - * when QR_FIND_BEST_MASK === false - */ - define('QR_DEFAULT_MASK', 2); - - // ----------------------------------------------------- - -} // end of definitions - -// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# - -if (!class_exists('QRcode', false)) { - - // for compaibility with PHP4 - if (!function_exists('str_split')) { - /** - * Convert a string to an array (needed for PHP4 compatibility) - * @param string $string The input string. - * @param int $split_length Maximum length of the chunk. - * @return If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element. - */ - function str_split($string, $split_length=1) { - if ((strlen($string) > $split_length) OR (!$split_length)) { - do { - $c = strlen($string); - $parts[] = substr($string, 0, $split_length); - $string = substr($string, $split_length); - } while ($string !== false); - } else { - $parts = array($string); - } - return $parts; - } - } - - // ##################################################### - - /** - * Class to create QR-code arrays for TCPDF class. - * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. - * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. - * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. - * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. - * - * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). - * Please read comments on this class source file for full copyright and license information. - * - * @name QRcode - * @package com.tecnick.tcpdf - * @abstract Class for generating QR-code array for TCPDF. - * @author Nicola Asuni - * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com - * @link http://www.tcpdf.org - * @license http://www.gnu.org/copyleft/lesser.html LGPL - * @version 1.0.002 - */ - class QRcode { - - /** - * @var barcode array to be returned which is readable by TCPDF - * @access protected - */ - protected $barcode_array = array(); - - /** - * @var QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix. - * @access protected - */ - protected $version = 0; - - /** - * @var Levels of error correction. See definitions for possible values. - * @access protected - */ - protected $level = QR_ECLEVEL_L; - - /** - * @var Encoding mode - * @access protected - */ - protected $hint = QR_MODE_8B; - - /** - * @var if true the input string will be converted to uppercase - * @access protected - */ - protected $casesensitive = true; - - /** - * @var structured QR code (not supported yet) - * @access protected - */ - protected $structured = 0; - - /** - * @var mask data - * @access protected - */ - protected $data; - - // FrameFiller - - /** - * @var width - * @access protected - */ - protected $width; - - /** - * @var frame - * @access protected - */ - protected $frame; - - /** - * @var X position of bit - * @access protected - */ - protected $x; - - /** - * @var Y position of bit - * @access protected - */ - protected $y; - - /** - * @var direction - * @access protected - */ - protected $dir; - - /** - * @var single bit - * @access protected - */ - protected $bit; - - // ---- QRrawcode ---- - - /** - * @var data code - * @access protected - */ - protected $datacode = array(); - - /** - * @var error correction code - * @access protected - */ - protected $ecccode = array(); - - /** - * @var blocks - * @access protected - */ - protected $blocks; - - /** - * @var Reed-Solomon blocks - * @access protected - */ - protected $rsblocks = array(); //of RSblock - - /** - * @var counter - * @access protected - */ - protected $count; - - /** - * @var data length - * @access protected - */ - protected $dataLength; - - /** - * @var error correction length - * @access protected - */ - protected $eccLength; - - /** - * @var b1 - * @access protected - */ - protected $b1; - - // ---- QRmask ---- - - /** - * @var run length - * @access protected - */ - protected $runLength = array(); - - // ---- QRsplit ---- - - /** - * @var input data string - * @access protected - */ - protected $dataStr = ''; - - /** - * @var input items - * @access protected - */ - protected $items; - - // Reed-Solomon items - - /** - * @var Reed-Solomon items - * @access protected - */ - protected $rsitems = array(); - - /** - * @var array of frames - * @access protected - */ - protected $frames = array(); - - /** - * @var alphabet-numeric convesion table - * @access protected - */ - protected $anTable = array( - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // - 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, // - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, // - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, // - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // - ); - - /** - * @var array Table of the capacity of symbols - * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004. - * @access protected - */ - protected $capacity = array( - array( 0, 0, 0, array( 0, 0, 0, 0)), // - array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 - array( 25, 44, 7, array( 10, 16, 22, 28)), // - array( 29, 70, 7, array( 15, 26, 36, 44)), // - array( 33, 100, 7, array( 20, 36, 52, 64)), // - array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 - array( 41, 172, 7, array( 36, 64, 96, 112)), // - array( 45, 196, 0, array( 40, 72, 108, 130)), // - array( 49, 242, 0, array( 48, 88, 132, 156)), // - array( 53, 292, 0, array( 60, 110, 160, 192)), // - array( 57, 346, 0, array( 72, 130, 192, 224)), // 10 - array( 61, 404, 0, array( 80, 150, 224, 264)), // - array( 65, 466, 0, array( 96, 176, 260, 308)), // - array( 69, 532, 0, array( 104, 198, 288, 352)), // - array( 73, 581, 3, array( 120, 216, 320, 384)), // - array( 77, 655, 3, array( 132, 240, 360, 432)), // 15 - array( 81, 733, 3, array( 144, 280, 408, 480)), // - array( 85, 815, 3, array( 168, 308, 448, 532)), // - array( 89, 901, 3, array( 180, 338, 504, 588)), // - array( 93, 991, 3, array( 196, 364, 546, 650)), // - array( 97, 1085, 3, array( 224, 416, 600, 700)), // 20 - array(101, 1156, 4, array( 224, 442, 644, 750)), // - array(105, 1258, 4, array( 252, 476, 690, 816)), // - array(109, 1364, 4, array( 270, 504, 750, 900)), // - array(113, 1474, 4, array( 300, 560, 810, 960)), // - array(117, 1588, 4, array( 312, 588, 870, 1050)), // 25 - array(121, 1706, 4, array( 336, 644, 952, 1110)), // - array(125, 1828, 4, array( 360, 700, 1020, 1200)), // - array(129, 1921, 3, array( 390, 728, 1050, 1260)), // - array(133, 2051, 3, array( 420, 784, 1140, 1350)), // - array(137, 2185, 3, array( 450, 812, 1200, 1440)), // 30 - array(141, 2323, 3, array( 480, 868, 1290, 1530)), // - array(145, 2465, 3, array( 510, 924, 1350, 1620)), // - array(149, 2611, 3, array( 540, 980, 1440, 1710)), // - array(153, 2761, 3, array( 570, 1036, 1530, 1800)), // - array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35 - array(161, 3034, 0, array( 600, 1120, 1680, 1980)), // - array(165, 3196, 0, array( 630, 1204, 1770, 2100)), // - array(169, 3362, 0, array( 660, 1260, 1860, 2220)), // - array(173, 3532, 0, array( 720, 1316, 1950, 2310)), // - array(177, 3706, 0, array( 750, 1372, 2040, 2430)) // 40 - ); - - /** - * @var array Length indicator - * @access protected - */ - protected $lengthTableBits = array( - array(10, 12, 14), - array( 9, 11, 13), - array( 8, 16, 16), - array( 8, 10, 12) - ); - - /** - * @var array Table of the error correction code (Reed-Solomon block) - * See Table 12-16 (pp.30-36), JIS X0510:2004. - * @access protected - */ - protected $eccTable = array( - array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), // - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // - array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), // - array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), // - array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 - array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), // - array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), // - array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), // - array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), // - array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), // 10 - array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), // - array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), // - array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), // - array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), // - array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), // 15 - array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), // - array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), // - array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), // - array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), // - array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), // 20 - array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), // - array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), // - array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), // - array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), // - array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), // 25 - array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), // - array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), // - array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), // - array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), // - array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30 - array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), // - array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), // - array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), // - array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), // - array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35 - array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), // - array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), // - array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), // - array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), // - array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)) // 40 - ); - - /** - * @var array Positions of alignment patterns. - * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them. - * See Table 1 in Appendix E (pp.71) of JIS X0510:2004. - * @access protected - */ - protected $alignmentPattern = array( - array( 0, 0), - array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 - array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 - array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15 - array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20 - array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25 - array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30 - array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35 - array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58) // 35-40 - ); - - /** - * @var array Version information pattern (BCH coded). - * See Table 1 in Appendix D (pp.68) of JIS X0510:2004. - * size: [QRSPEC_VERSION_MAX - 6] - * @access protected - */ - protected $versionPattern = array( - 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, // - 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, // - 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, // - 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, // - 0x27541, 0x28c69 - ); - - /** - * @var array Format information - * @access protected - */ - protected $formatInfo = array( - array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), // - array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), // - array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), // - array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) // - ); - - - // ------------------------------------------------- - // ------------------------------------------------- - - - /** - * This is the class constructor. - * Creates a QRcode object - * @param string $code code to represent using QRcode - * @param string $eclevel error level:
  • L : About 7% or less errors can be corrected.
  • M : About 15% or less errors can be corrected.
  • Q : About 25% or less errors can be corrected.
  • H : About 30% or less errors can be corrected.
- * @access public - * @since 1.0.000 - */ - public function __construct($code, $eclevel = 'L') { - $barcode_array = array(); - if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { - return false; - } - // set error correction level - $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H')); - if ($this->level === false) { - $this->level = QR_ECLEVEL_L; - } - if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) { - return false; - } - if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) { - return false; - } - $this->items = array(); - $this->encodeString($code); - $qrTab = $this->binarize($this->data); - $size = count($qrTab); - $barcode_array['num_rows'] = $size; - $barcode_array['num_cols'] = $size; - $barcode_array['bcode'] = array(); - foreach ($qrTab as $line) { - $arrAdd = array(); - foreach (str_split($line) as $char) { - $arrAdd[] = ($char=='1')?1:0; - } - $barcode_array['bcode'][] = $arrAdd; - } - $this->barcode_array = $barcode_array; - } - - /** - * Returns a barcode array which is readable by TCPDF - * @return array barcode array readable by TCPDF; - * @access public - */ - public function getBarcodeArray() { - return $this->barcode_array; - } - - /** - * Convert the frame in binary form - * @param array $frame array to binarize - * @return array frame in binary form - */ - protected function binarize($frame) { - $len = count($frame); - // the frame is square (width = height) - foreach ($frame as &$frameLine) { - for ($i=0; $i<$len; $i++) { - $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; - } - } - return $frame; - } - - /** - * Encode the input string to QR code - * @param string $string input string to encode - */ - protected function encodeString($string) { - $this->dataStr = $string; - if (!$this->casesensitive) { - $this->toUpper(); - } - $ret = $this->splitString(); - if ($ret < 0) { - return NULL; - } - $this->encodeMask(-1); - } - - /** - * Encode mask - * @param int $mask masking mode - */ - protected function encodeMask($mask) { - $spec = array(0, 0, 0, 0, 0); - $this->datacode = $this->getByteStream($this->items); - if (is_null($this->datacode)) { - return NULL; - } - $spec = $this->getEccSpec($this->version, $this->level, $spec); - $this->b1 = $this->rsBlockNum1($spec); - $this->dataLength = $this->rsDataLength($spec); - $this->eccLength = $this->rsEccLength($spec); - $this->ecccode = array_fill(0, $this->eccLength, 0); - $this->blocks = $this->rsBlockNum($spec); - $ret = $this->init($spec); - if ($ret < 0) { - return NULL; - } - $this->count = 0; - $this->width = $this->getWidth($this->version); - $this->frame = $this->newFrame($this->version); - $this->x = $this->width - 1; - $this->y = $this->width - 1; - $this->dir = -1; - $this->bit = -1; - // inteleaved data and ecc codes - for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) { - $code = $this->getCode(); - $bit = 0x80; - for ($j=0; $j<8; $j++) { - $addr = $this->getNextPosition(); - $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); - $bit = $bit >> 1; - } - } - // remainder bits - $j = $this->getRemainder($this->version); - for ($i=0; $i<$j; $i++) { - $addr = $this->getNextPosition(); - $this->setFrameAt($addr, 0x02); - } - // masking - $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); - if ($mask < 0) { - if (QR_FIND_BEST_MASK) { - $masked = $this->mask($this->width, $this->frame, $this->level); - } else { - $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level); - } - } else { - $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level); - } - if ($masked == NULL) { - return NULL; - } - $this->data = $masked; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // FrameFiller - - /** - * Set frame value at specified position - * @param array $at x,y position - * @param int $val value of the character to set - */ - protected function setFrameAt($at, $val) { - $this->frame[$at['y']][$at['x']] = chr($val); - } - - /** - * Get frame value at specified position - * @param array $at x,y position - * @return value at specified position - */ - protected function getFrameAt($at) { - return ord($this->frame[$at['y']][$at['x']]); - } - - /** - * Return the next frame position - * @return array of x,y coordinates - */ - protected function getNextPosition() { - do { - if ($this->bit == -1) { - $this->bit = 0; - return array('x'=>$this->x, 'y'=>$this->y); - } - $x = $this->x; - $y = $this->y; - $w = $this->width; - if ($this->bit == 0) { - $x--; - $this->bit++; - } else { - $x++; - $y += $this->dir; - $this->bit--; - } - if ($this->dir < 0) { - if ($y < 0) { - $y = 0; - $x -= 2; - $this->dir = 1; - if ($x == 6) { - $x--; - $y = 9; - } - } - } else { - if ($y == $w) { - $y = $w - 1; - $x -= 2; - $this->dir = -1; - if ($x == 6) { - $x--; - $y -= 8; - } - } - } - if (($x < 0) OR ($y < 0)) { - return NULL; - } - $this->x = $x; - $this->y = $y; - } while(ord($this->frame[$y][$x]) & 0x80); - return array('x'=>$x, 'y'=>$y); - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRrawcode - - /** - * Initialize code. - * @param array $spec array of ECC specification - * @return 0 in case of success, -1 in case of error - */ - protected function init($spec) { - $dl = $this->rsDataCodes1($spec); - $el = $this->rsEccCodes1($spec); - $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - $blockNo = 0; - $dataPos = 0; - $eccPos = 0; - $endfor = $this->rsBlockNum1($spec); - for ($i=0; $i < $endfor; ++$i) { - $ecc = array_slice($this->ecccode, $eccPos); - $this->rsblocks[$blockNo] = array(); - $this->rsblocks[$blockNo]['dataLength'] = $dl; - $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); - $this->rsblocks[$blockNo]['eccLength'] = $el; - $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); - $this->rsblocks[$blockNo]['ecc'] = $ecc; - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - if ($this->rsBlockNum2($spec) == 0) { - return 0; - } - $dl = $this->rsDataCodes2($spec); - $el = $this->rsEccCodes2($spec); - $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - if ($rs == NULL) { - return -1; - } - $endfor = $this->rsBlockNum2($spec); - for ($i=0; $i < $endfor; ++$i) { - $ecc = array_slice($this->ecccode, $eccPos); - $this->rsblocks[$blockNo] = array(); - $this->rsblocks[$blockNo]['dataLength'] = $dl; - $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); - $this->rsblocks[$blockNo]['eccLength'] = $el; - $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); - $this->rsblocks[$blockNo]['ecc'] = $ecc; - $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc); - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - return 0; - } - - /** - * Return Reed-Solomon block code. - * @return array rsblocks - */ - protected function getCode() { - if ($this->count < $this->dataLength) { - $row = $this->count % $this->blocks; - $col = $this->count / $this->blocks; - if ($col >= $this->rsblocks[0]['dataLength']) { - $row += $this->b1; - } - $ret = $this->rsblocks[$row]['data'][$col]; - } elseif ($this->count < $this->dataLength + $this->eccLength) { - $row = ($this->count - $this->dataLength) % $this->blocks; - $col = ($this->count - $this->dataLength) / $this->blocks; - $ret = $this->rsblocks[$row]['ecc'][$col]; - } else { - return 0; - } - $this->count++; - return $ret; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRmask - - /** - * Write Format Information on frame and returns the number of black bits - * @param int $width frame width - * @param array $frame frame - * @param array $mask masking mode - * @param int $level error correction level - * @return int blacks - */ - protected function writeFormatInformation($width, &$frame, $mask, $level) { - $blacks = 0; - $format = $this->getFormatInfo($mask, $level); - for ($i=0; $i<8; ++$i) { - if ($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - $frame[8][$width - 1 - $i] = chr($v); - if ($i < 6) { - $frame[$i][8] = chr($v); - } else { - $frame[$i + 1][8] = chr($v); - } - $format = $format >> 1; - } - for ($i=0; $i<7; ++$i) { - if ($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - $frame[$width - 7 + $i][8] = chr($v); - if ($i == 0) { - $frame[8][7] = chr($v); - } else { - $frame[8][6 - $i] = chr($v); - } - $format = $format >> 1; - } - return $blacks; - } - - /** - * mask0 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask0($x, $y) { - return ($x + $y) & 1; - } - - /** - * mask1 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask1($x, $y) { - return ($y & 1); - } - - /** - * mask2 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask2($x, $y) { - return ($x % 3); - } - - /** - * mask3 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask3($x, $y) { - return ($x + $y) % 3; - } - - /** - * mask4 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask4($x, $y) { - return (((int)($y / 2)) + ((int)($x / 3))) & 1; - } - - /** - * mask5 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask5($x, $y) { - return (($x * $y) & 1) + ($x * $y) % 3; - } - - /** - * mask6 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask6($x, $y) { - return ((($x * $y) & 1) + ($x * $y) % 3) & 1; - } - - /** - * mask7 - * @param int $x X position - * @param int $y Y position - * @return int mask - */ - protected function mask7($x, $y) { - return ((($x * $y) % 3) + (($x + $y) & 1)) & 1; - } - - /** - * Return bitmask - * @param int $maskNo mask number - * @param int $width width - * @param array $frame frame - * @return array bitmask - */ - protected function generateMaskNo($maskNo, $width, $frame) { - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - for ($y=0; $y<$width; ++$y) { - for ($x=0; $x<$width; ++$x) { - if (ord($frame[$y][$x]) & 0x80) { - $bitMask[$y][$x] = 0; - } else { - $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); - $bitMask[$y][$x] = ($maskFunc == 0)?1:0; - } - } - } - return $bitMask; - } - - /** - * makeMaskNo - * @param int $maskNo - * @param int $width - * @param int $s - * @param int $d - * @param boolean $maskGenOnly - * @return int b - */ - protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) { - $b = 0; - $bitMask = array(); - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - if ($maskGenOnly) { - return; - } - $d = $s; - for ($y=0; $y<$width; ++$y) { - for ($x=0; $x<$width; ++$x) { - if ($bitMask[$y][$x] == 1) { - $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]); - } - $b += (int)(ord($d[$y][$x]) & 1); - } - } - return $b; - } - - /** - * makeMask - * @param int $width - * @param array $frame - * @param int $maskNo - * @param int $level - * @return array mask - */ - protected function makeMask($width, $frame, $maskNo, $level) { - $masked = array_fill(0, $width, str_repeat("\0", $width)); - $this->makeMaskNo($maskNo, $width, $frame, $masked); - $this->writeFormatInformation($width, $masked, $maskNo, $level); - return $masked; - } - - /** - * calcN1N3 - * @param int $length - * @return int demerit - */ - protected function calcN1N3($length) { - $demerit = 0; - for ($i=0; $i<$length; ++$i) { - if ($this->runLength[$i] >= 5) { - $demerit += (N1 + ($this->runLength[$i] - 5)); - } - if ($i & 1) { - if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) { - $fact = (int)($this->runLength[$i] / 3); - if (($this->runLength[$i-2] == $fact) - AND ($this->runLength[$i-1] == $fact) - AND ($this->runLength[$i+1] == $fact) - AND ($this->runLength[$i+2] == $fact)) { - if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) { - $demerit += N3; - } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) { - $demerit += N3; - } - } - } - } - } - return $demerit; - } - - /** - * evaluateSymbol - * @param int $width - * @param array $frame - * @return int demerit - */ - protected function evaluateSymbol($width, $frame) { - $head = 0; - $demerit = 0; - for ($y=0; $y<$width; ++$y) { - $head = 0; - $this->runLength[0] = 1; - $frameY = $frame[$y]; - if ($y > 0) { - $frameYM = $frame[$y-1]; - } - for ($x=0; $x<$width; ++$x) { - if (($x > 0) AND ($y > 0)) { - $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); - $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); - if (($b22 | ($w22 ^ 1)) & 1) { - $demerit += N2; - } - } - if (($x == 0) AND (ord($frameY[$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } elseif ($x > 0) { - if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - $demerit += $this->calcN1N3($head+1); - } - for ($x=0; $x<$width; ++$x) { - $head = 0; - $this->runLength[0] = 1; - for ($y=0; $y<$width; ++$y) { - if (($y == 0) AND (ord($frame[$y][$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } elseif ($y > 0) { - if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - $demerit += $this->calcN1N3($head+1); - } - return $demerit; - } - - /** - * mask - * @param int $width - * @param array $frame - * @param int $level - * @return array best mask - */ - protected function mask($width, $frame, $level) { - $minDemerit = PHP_INT_MAX; - $bestMaskNum = 0; - $bestMask = array(); - $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7); - if (QR_FIND_FROM_RANDOM !== false) { - $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9); - for ($i = 0; $i < $howManuOut; ++$i) { - $remPos = rand (0, count($checked_masks)-1); - unset($checked_masks[$remPos]); - $checked_masks = array_values($checked_masks); - } - } - $bestMask = $frame; - foreach ($checked_masks as $i) { - $mask = array_fill(0, $width, str_repeat("\0", $width)); - $demerit = 0; - $blacks = 0; - $blacks = $this->makeMaskNo($i, $width, $frame, $mask); - $blacks += $this->writeFormatInformation($width, $mask, $i, $level); - $blacks = (int)(100 * $blacks / ($width * $width)); - $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); - $demerit += $this->evaluateSymbol($width, $mask); - if ($demerit < $minDemerit) { - $minDemerit = $demerit; - $bestMask = $mask; - $bestMaskNum = $i; - } - } - return $bestMask; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRsplit - - /** - * Return true if the character at specified position is a number - * @param string $str string - * @param int $pos characted position - * @return boolean true of false - */ - protected function isdigitat($str, $pos) { - if ($pos >= strlen($str)) { - return false; - } - return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); - } - - /** - * Return true if the character at specified position is an alphanumeric character - * @param string $str string - * @param int $pos characted position - * @return boolean true of false - */ - protected function isalnumat($str, $pos) { - if ($pos >= strlen($str)) { - return false; - } - return ($this->lookAnTable(ord($str[$pos])) >= 0); - } - - /** - * identifyMode - * @param int $pos - * @return int mode - */ - protected function identifyMode($pos) { - if ($pos >= strlen($this->dataStr)) { - return QR_MODE_NL; - } - $c = $this->dataStr[$pos]; - if ($this->isdigitat($this->dataStr, $pos)) { - return QR_MODE_NM; - } elseif ($this->isalnumat($this->dataStr, $pos)) { - return QR_MODE_AN; - } elseif ($this->hint == QR_MODE_KJ) { - if ($pos+1 < strlen($this->dataStr)) { - $d = $this->dataStr[$pos+1]; - $word = (ord($c) << 8) | ord($d); - if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) { - return QR_MODE_KJ; - } - } - } - return QR_MODE_8B; - } - - /** - * eatNum - * @return int run - */ - protected function eatNum() { - $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); - $p = 0; - while($this->isdigitat($this->dataStr, $p)) { - $p++; - } - $run = $p; - $mode = $this->identifyMode($p); - if ($mode == QR_MODE_8B) { - $dif = $this->estimateBitsModeNum($run) + 4 + $ln - + $this->estimateBitsMode8(1) // + 4 + l8 - - $this->estimateBitsMode8($run + 1); // - 4 - l8 - if ($dif > 0) { - return $this->eat8(); - } - } - if ($mode == QR_MODE_AN) { - $dif = $this->estimateBitsModeNum($run) + 4 + $ln - + $this->estimateBitsModeAn(1) // + 4 + la - - $this->estimateBitsModeAn($run + 1);// - 4 - la - if ($dif > 0) { - return $this->eatAn(); - } - } - $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr)); - return $run; - } - - /** - * eatAn - * @return int run - */ - protected function eatAn() { - $la = $this->lengthIndicator(QR_MODE_AN, $this->version); - $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); - $p = 0; - while($this->isalnumat($this->dataStr, $p)) { - if ($this->isdigitat($this->dataStr, $p)) { - $q = $p; - while($this->isdigitat($this->dataStr, $q)) { - $q++; - } - $dif = $this->estimateBitsModeAn($p) // + 4 + la - + $this->estimateBitsModeNum($q - $p) + 4 + $ln - - $this->estimateBitsModeAn($q); // - 4 - la - if ($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - $run = $p; - if (!$this->isalnumat($this->dataStr, $p)) { - $dif = $this->estimateBitsModeAn($run) + 4 + $la - + $this->estimateBitsMode8(1) // + 4 + l8 - - $this->estimateBitsMode8($run + 1); // - 4 - l8 - if ($dif > 0) { - return $this->eat8(); - } - } - $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr)); - return $run; - } - - /** - * eatKanji - * @return int run - */ - protected function eatKanji() { - $p = 0; - while($this->identifyMode($p) == QR_MODE_KJ) { - $p += 2; - } - $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr)); - return $run; - } - - /** - * eat8 - * @return int run - */ - protected function eat8() { - $la = $this->lengthIndicator(QR_MODE_AN, $this->version); - $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); - $p = 1; - $dataStrLen = strlen($this->dataStr); - while($p < $dataStrLen) { - $mode = $this->identifyMode($p); - if ($mode == QR_MODE_KJ) { - break; - } - if ($mode == QR_MODE_NM) { - $q = $p; - while($this->isdigitat($this->dataStr, $q)) { - $q++; - } - $dif = $this->estimateBitsMode8($p) // + 4 + l8 - + $this->estimateBitsModeNum($q - $p) + 4 + $ln - - $this->estimateBitsMode8($q); // - 4 - l8 - if ($dif < 0) { - break; - } else { - $p = $q; - } - } elseif ($mode == QR_MODE_AN) { - $q = $p; - while($this->isalnumat($this->dataStr, $q)) { - $q++; - } - $dif = $this->estimateBitsMode8($p) // + 4 + l8 - + $this->estimateBitsModeAn($q - $p) + 4 + $la - - $this->estimateBitsMode8($q); // - 4 - l8 - if ($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - $run = $p; - $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr)); - return $run; - } - - /** - * splitString - */ - protected function splitString() { - while (strlen($this->dataStr) > 0) { - if ($this->dataStr == '') { - return 0; - } - $mode = $this->identifyMode(0); - switch ($mode) { - case QR_MODE_NM: { - $length = $this->eatNum(); - break; - } - case QR_MODE_AN: { - $length = $this->eatAn(); - break; - } - case QR_MODE_KJ: { - if ($hint == QR_MODE_KJ) { - $length = $this->eatKanji(); - } else { - $length = $this->eat8(); - } - break; - } - default: { - $length = $this->eat8(); - break; - } - } - if ($length == 0) { - return 0; - } - if ($length < 0) { - return -1; - } - $this->dataStr = substr($this->dataStr, $length); - } - } - - /** - * toUpper - */ - protected function toUpper() { - $stringLen = strlen($this->dataStr); - $p = 0; - while ($p < $stringLen) { - $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint); - if ($mode == QR_MODE_KJ) { - $p += 2; - } else { - if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) { - $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); - } - $p++; - } - } - return $this->dataStr; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRinputItem - - /** - * newInputItem - * @param int $mode - * @param int $size - * @param array $data - * @param array $bstream - * @return array input item - */ - protected function newInputItem($mode, $size, $data, $bstream=null) { - $setData = array_slice($data, 0, $size); - if (count($setData) < $size) { - $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0)); - } - if (!$this->check($mode, $size, $setData)) { - return NULL; - } - $inputitem = array(); - $inputitem['mode'] = $mode; - $inputitem['size'] = $size; - $inputitem['data'] = $setData; - $inputitem['bstream'] = $bstream; - return $inputitem; - } - - /** - * encodeModeNum - * @param array $inputitem - * @param int $version - * @return array input item - */ - protected function encodeModeNum($inputitem, $version) { - $words = (int)($inputitem['size'] / 3); - $inputitem['bstream'] = array(); - $val = 0x1; - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']); - for ($i=0; $i < $words; ++$i) { - $val = (ord($inputitem['data'][$i*3 ]) - ord('0')) * 100; - $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10; - $val += (ord($inputitem['data'][$i*3+2]) - ord('0')); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val); - } - if ($inputitem['size'] - $words * 3 == 1) { - $val = ord($inputitem['data'][$words*3]) - ord('0'); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); - } elseif (($inputitem['size'] - ($words * 3)) == 2) { - $val = (ord($inputitem['data'][$words*3 ]) - ord('0')) * 10; - $val += (ord($inputitem['data'][$words*3+1]) - ord('0')); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val); - } - return $inputitem; - } - - /** - * encodeModeAn - * @param array $inputitem - * @param int $version - * @return array input item - */ - protected function encodeModeAn($inputitem, $version) { - $words = (int)($inputitem['size'] / 2); - $inputitem['bstream'] = array(); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02); - $inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']); - for ($i=0; $i < $words; ++$i) { - $val = (int)$this->lookAnTable(ord($inputitem['data'][$i*2 ])) * 45; - $val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1])); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val); - } - if ($inputitem['size'] & 1) { - $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)])); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val); - } - return $inputitem; - } - - /** - * encodeMode8 - * @param array $inputitem - * @param int $version - * @return array input item - */ - protected function encodeMode8($inputitem, $version) { - $inputitem['bstream'] = array(); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']); - for ($i=0; $i < $inputitem['size']; ++$i) { - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i])); - } - return $inputitem; - } - - /** - * encodeModeKanji - * @param array $inputitem - * @param int $version - * @return array input item - */ - protected function encodeModeKanji($inputitem, $version) { - $inputitem['bstream'] = array(); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2)); - for ($i=0; $i<$inputitem['size']; $i+=2) { - $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]); - if ($val <= 0x9ffc) { - $val -= 0x8140; - } else { - $val -= 0xc140; - } - $h = ($val >> 8) * 0xc0; - $val = ($val & 0xff) + $h; - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val); - } - return $inputitem; - } - - /** - * encodeModeStructure - * @param array $inputitem - * @return array input item - */ - protected function encodeModeStructure($inputitem) { - $inputitem['bstream'] = array(); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1); - $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2])); - return $inputitem; - } - - /** - * encodeBitStream - * @param array $inputitem - * @param int $version - * @return array input item - */ - protected function encodeBitStream($inputitem, $version) { - $inputitem['bstream'] = array(); - $words = $this->maximumWords($inputitem['mode'], $version); - if ($inputitem['size'] > $words) { - $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']); - $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words)); - $st1 = $this->encodeBitStream($st1, $version); - $st2 = $this->encodeBitStream($st2, $version); - $inputitem['bstream'] = array(); - $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']); - $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']); - } else { - switch($inputitem['mode']) { - case QR_MODE_NM: { - $inputitem = $this->encodeModeNum($inputitem, $version); - break; - } - case QR_MODE_AN: { - $inputitem = $this->encodeModeAn($inputitem, $version); - break; - } - case QR_MODE_8B: { - $inputitem = $this->encodeMode8($inputitem, $version); - break; - } - case QR_MODE_KJ: { - $inputitem = $this->encodeModeKanji($inputitem, $version); - break; - } - case QR_MODE_ST: { - $inputitem = $this->encodeModeStructure($inputitem); - break; - } - default: { - break; - } - } - } - return $inputitem; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRinput - - /** - * Append data to an input object. - * The data is copied and appended to the input object. - * @param array items input items - * @param int $mode encoding mode. - * @param int $size size of data (byte). - * @param array $data array of input data. - * @return items - * - */ - protected function appendNewInputItem($items, $mode, $size, $data) { - $items[] = $this->newInputItem($mode, $size, $data); - return $items; - } - - /** - * insertStructuredAppendHeader - * @param array $items - * @param int $size - * @param int $index - * @param int $parity - * @return array items - */ - protected function insertStructuredAppendHeader($items, $size, $index, $parity) { - if ($size > MAX_STRUCTURED_SYMBOLS) { - return -1; - } - if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) { - return -1; - } - $buf = array($size, $index, $parity); - $entry = $this->newInputItem(QR_MODE_ST, 3, buf); - array_unshift($items, $entry); - return $items; - } - - /** - * calcParity - * @param array $items - * @return int parity - */ - protected function calcParity($items) { - $parity = 0; - foreach ($items as $item) { - if ($item['mode'] != QR_MODE_ST) { - for ($i=$item['size']-1; $i>=0; --$i) { - $parity ^= $item['data'][$i]; - } - } - } - return $parity; - } - - /** - * checkModeNum - * @param int $size - * @param array $data - * @return boolean true or false - */ - protected function checkModeNum($size, $data) { - for ($i=0; $i<$size; ++$i) { - if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){ - return false; - } - } - return true; - } - - /** - * estimateBitsModeNum - * @param int $size - * @return int number of bits - */ - protected function estimateBitsModeNum($size) { - $w = (int)$size / 3; - $bits = $w * 10; - switch($size - $w * 3) { - case 1: { - $bits += 4; - break; - } - case 2: { - $bits += 7; - break; - } - default: { - break; - } - } - return $bits; - } - - /** - * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19). - * @param int $c character value - * @return value - */ - protected function lookAnTable($c) { - return (($c > 127)?-1:$this->anTable[$c]); - } - - /** - * checkModeAn - * @param int $size - * @param array $data - * @return boolean true or false - */ - protected function checkModeAn($size, $data) { - for ($i=0; $i<$size; ++$i) { - if ($this->lookAnTable(ord($data[$i])) == -1) { - return false; - } - } - return true; - } - - /** - * estimateBitsModeAn - * @param int $size - * @return int number of bits - */ - protected function estimateBitsModeAn($size) { - $w = (int)($size / 2); - $bits = $w * 11; - if ($size & 1) { - $bits += 6; - } - return $bits; - } - - /** - * estimateBitsMode8 - * @param int $size - * @return int number of bits - */ - protected function estimateBitsMode8($size) { - return $size * 8; - } - - /** - * estimateBitsModeKanji - * @param int $size - * @return int number of bits - */ - protected function estimateBitsModeKanji($size) { - return (int)(($size / 2) * 13); - } - - /** - * checkModeKanji - * @param int $size - * @param array $data - * @return boolean true or false - */ - protected function checkModeKanji($size, $data) { - if ($size & 1) { - return false; - } - for ($i=0; $i<$size; $i+=2) { - $val = (ord($data[$i]) << 8) | ord($data[$i+1]); - if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) { - return false; - } - } - return true; - } - - /** - * Validate the input data. - * @param int $mode encoding mode. - * @param int $size size of data (byte). - * @param array data data to validate - * @return boolean true in case of valid data, false otherwise - */ - protected function check($mode, $size, $data) { - if ($size <= 0) { - return false; - } - switch($mode) { - case QR_MODE_NM: { - return $this->checkModeNum($size, $data); - } - case QR_MODE_AN: { - return $this->checkModeAn($size, $data); - } - case QR_MODE_KJ: { - return $this->checkModeKanji($size, $data); - } - case QR_MODE_8B: { - return true; - } - case QR_MODE_ST: { - return true; - } - default: { - break; - } - } - return false; - } - - /** - * estimateBitStreamSize - * @param array $items - * @param int $version - * @return int bits - */ - protected function estimateBitStreamSize($items, $version) { - $bits = 0; - if ($version == 0) { - $version = 1; - } - foreach ($items as $item) { - switch($item['mode']) { - case QR_MODE_NM: { - $bits = $this->estimateBitsModeNum($item['size']); - break; - } - case QR_MODE_AN: { - $bits = $this->estimateBitsModeAn($item['size']); - break; - } - case QR_MODE_8B: { - $bits = $this->estimateBitsMode8($item['size']); - break; - } - case QR_MODE_KJ: { - $bits = $this->estimateBitsModeKanji($item['size']); - break; - } - case QR_MODE_ST: { - return STRUCTURE_HEADER_BITS; - } - default: { - return 0; - } - } - $l = $this->lengthIndicator($item['mode'], $version); - $m = 1 << $l; - $num = (int)(($item['size'] + $m - 1) / $m); - $bits += $num * (4 + $l); - } - return $bits; - } - - /** - * estimateVersion - * @param array $items - * @return int version - */ - protected function estimateVersion($items) { - $version = 0; - $prev = 0; - do { - $prev = $version; - $bits = $this->estimateBitStreamSize($items, $prev); - $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if ($version < 0) { - return -1; - } - } while ($version > $prev); - return $version; - } - - /** - * lengthOfCode - * @param int $mode - * @param int $version - * @param int $bits - * @return int size - */ - protected function lengthOfCode($mode, $version, $bits) { - $payload = $bits - 4 - $this->lengthIndicator($mode, $version); - switch($mode) { - case QR_MODE_NM: { - $chunks = (int)($payload / 10); - $remain = $payload - $chunks * 10; - $size = $chunks * 3; - if ($remain >= 7) { - $size += 2; - } elseif ($remain >= 4) { - $size += 1; - } - break; - } - case QR_MODE_AN: { - $chunks = (int)($payload / 11); - $remain = $payload - $chunks * 11; - $size = $chunks * 2; - if ($remain >= 6) { - ++$size; - } - break; - } - case QR_MODE_8B: { - $size = (int)($payload / 8); - break; - } - case QR_MODE_KJ: { - $size = (int)(($payload / 13) * 2); - break; - } - case QR_MODE_ST: { - $size = (int)($payload / 8); - break; - } - default: { - $size = 0; - break; - } - } - $maxsize = $this->maximumWords($mode, $version); - if ($size < 0) { - $size = 0; - } - if ($size > $maxsize) { - $size = $maxsize; - } - return $size; - } - - /** - * createBitStream - * @param array $items - * @return array of items and total bits - */ - protected function createBitStream($items) { - $total = 0; - foreach ($items as $key => $item) { - $items[$key] = $this->encodeBitStream($item, $this->version); - $bits = count($items[$key]['bstream']); - $total += $bits; - } - return array($items, $total); - } - - /** - * convertData - * @param array $items - * @return array items - */ - protected function convertData($items) { - $ver = $this->estimateVersion($items); - if ($ver > $this->version) { - $this->version = $ver; - } - for (;;) { - $cbs = $this->createBitStream($items); - $items = $cbs[0]; - $bits = $cbs[1]; - if ($bits < 0) { - return -1; - } - $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if ($ver < 0) { - return -1; - } elseif ($ver > $this->version) { - $this->version = $ver; - } else { - break; - } - } - return $items; - } - - /** - * Append Padding Bit to bitstream - * @param array $bstream - * @return array bitstream - */ - protected function appendPaddingBit($bstream) { - $bits = count($bstream); - $maxwords = $this->getDataLength($this->version, $this->level); - $maxbits = $maxwords * 8; - if ($maxbits == $bits) { - return 0; - } - if ($maxbits - $bits < 5) { - return $this->appendNum($bstream, $maxbits - $bits, 0); - } - $bits += 4; - $words = (int)(($bits + 7) / 8); - $padding = array(); - $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0); - $padlen = $maxwords - $words; - if ($padlen > 0) { - $padbuf = array(); - for ($i=0; $i<$padlen; ++$i) { - $padbuf[$i] = ($i&1)?0x11:0xec; - } - $padding = $this->appendBytes($padding, $padlen, $padbuf); - } - return $this->appendBitstream($bstream, $padding); - } - - /** - * mergeBitStream - * @param array $bstream - * @return array bitstream - */ - protected function mergeBitStream($items) { - $items = $this->convertData($items); - $bstream = array(); - foreach ($items as $item) { - $bstream = $this->appendBitstream($bstream, $item['bstream']); - } - return $bstream; - } - - /** - * Returns a stream of bits. - * @param int $items - * @return array padded merged byte stream - */ - protected function getBitStream($items) { - $bstream = $this->mergeBitStream($items); - return $this->appendPaddingBit($bstream); - } - - /** - * Pack all bit streams padding bits into a byte array. - * @param int $items - * @return array padded merged byte stream - */ - protected function getByteStream($items) { - $bstream = $this->getBitStream($items); - return $this->bitstreamToByte($bstream); - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRbitstream - - /** - * Return an array with zeros - * @param int $setLength array size - * @return array - */ - protected function allocate($setLength) { - return array_fill(0, $setLength, 0); - } - - /** - * Return new bitstream from number - * @param int $bits number of bits - * @param int $num number - * @return array bitstream - */ - protected function newFromNum($bits, $num) { - $bstream = $this->allocate($bits); - $mask = 1 << ($bits - 1); - for ($i=0; $i<$bits; ++$i) { - if ($num & $mask) { - $bstream[$i] = 1; - } else { - $bstream[$i] = 0; - } - $mask = $mask >> 1; - } - return $bstream; - } - - /** - * Return new bitstream from bytes - * @param int $size size - * @param array $data bytes - * @return array bitstream - */ - protected function newFromBytes($size, $data) { - $bstream = $this->allocate($size * 8); - $p=0; - for ($i=0; $i<$size; ++$i) { - $mask = 0x80; - for ($j=0; $j<8; ++$j) { - if ($data[$i] & $mask) { - $bstream[$p] = 1; - } else { - $bstream[$p] = 0; - } - $p++; - $mask = $mask >> 1; - } - } - return $bstream; - } - - /** - * Append one bitstream to another - * @param array $bitstream original bitstream - * @param array $append bitstream to append - * @return array bitstream - */ - protected function appendBitstream($bitstream, $append) { - if ((!is_array($append)) OR (count($append) == 0)) { - return $bitstream; - } - if (count($bitstream) == 0) { - return $append; - } - return array_values(array_merge($bitstream, $append)); - } - - /** - * Append one bitstream created from number to another - * @param array $bitstream original bitstream - * @param int $bits number of bits - * @param int $num number - * @return array bitstream - */ - protected function appendNum($bitstream, $bits, $num) { - if ($bits == 0) { - return 0; - } - $b = $this->newFromNum($bits, $num); - return $this->appendBitstream($bitstream, $b); - } - - /** - * Append one bitstream created from bytes to another - * @param array $bitstream original bitstream - * @param int $size size - * @param array $data bytes - * @return array bitstream - */ - protected function appendBytes($bitstream, $size, $data) { - if ($size == 0) { - return 0; - } - $b = $this->newFromBytes($size, $data); - return $this->appendBitstream($bitstream, $b); - } - - /** - * Convert bitstream to bytes - * @param array $bitstream original bitstream - * @return array of bytes - */ - protected function bitstreamToByte($bstream) { - $size = count($bstream); - if ($size == 0) { - return array(); - } - $data = array_fill(0, (int)(($size + 7) / 8), 0); - $bytes = (int)($size / 8); - $p = 0; - for ($i=0; $i<$bytes; $i++) { - $v = 0; - for ($j=0; $j<8; $j++) { - $v = $v << 1; - $v |= $bstream[$p]; - $p++; - } - $data[$i] = $v; - } - if ($size & 7) { - $v = 0; - for ($j=0; $j<($size & 7); $j++) { - $v = $v << 1; - $v |= $bstream[$p]; - $p++; - } - $data[$bytes] = $v; - } - return $data; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRspec - - /** - * Replace a value on the array at the specified position - * @param array $srctab - * @param int $x X position - * @param int $y Y position - * @param string $repl value to replace - * @param int $replLen length of the repl string - * @return array srctab - */ - protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) { - $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); - return $srctab; - } - - /** - * Return maximum data code length (bytes) for the version. - * @param int $version version - * @param int $level error correction level - * @return int maximum size (bytes) - */ - protected function getDataLength($version, $level) { - return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level]; - } - - /** - * Return maximum error correction code length (bytes) for the version. - * @param int $version version - * @param int $level error correction level - * @return int ECC size (bytes) - */ - protected function getECCLength($version, $level){ - return $this->capacity[$version][QRCAP_EC][$level]; - } - - /** - * Return the width of the symbol for the version. - * @param int $version version - * @return int width - */ - protected function getWidth($version) { - return $this->capacity[$version][QRCAP_WIDTH]; - } - - /** - * Return the numer of remainder bits. - * @param int $version version - * @return int number of remainder bits - */ - protected function getRemainder($version) { - return $this->capacity[$version][QRCAP_REMINDER]; - } - - /** - * Return a version number that satisfies the input code length. - * @param int $size input code length (byte) - * @param int $level error correction level - * @return int version number - */ - protected function getMinimumVersion($size, $level) { - for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) { - $words = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level]; - if ($words >= $size) { - return $i; - } - } - return -1; - } - - /** - * Return the size of length indicator for the mode and version. - * @param int $mode encoding mode - * @param int $version version - * @return int the size of the appropriate length indicator (bits). - */ - protected function lengthIndicator($mode, $version) { - if ($mode == QR_MODE_ST) { - return 0; - } - if ($version <= 9) { - $l = 0; - } elseif ($version <= 26) { - $l = 1; - } else { - $l = 2; - } - return $this->lengthTableBits[$mode][$l]; - } - - /** - * Return the maximum length for the mode and version. - * @param int $mode encoding mode - * @param int $version version - * @return int the maximum length (bytes) - */ - protected function maximumWords($mode, $version) { - if ($mode == QR_MODE_ST) { - return 3; - } - if ($version <= 9) { - $l = 0; - } else if ($version <= 26) { - $l = 1; - } else { - $l = 2; - } - $bits = $this->lengthTableBits[$mode][$l]; - $words = (1 << $bits) - 1; - if ($mode == QR_MODE_KJ) { - $words *= 2; // the number of bytes is required - } - return $words; - } - - /** - * Return an array of ECC specification. - * @param int $version version - * @param int $level error correction level - * @param array $spec an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code} - * @return array spec - */ - protected function getEccSpec($version, $level, $spec) { - if (count($spec) < 5) { - $spec = array(0, 0, 0, 0, 0); - } - $b1 = $this->eccTable[$version][$level][0]; - $b2 = $this->eccTable[$version][$level][1]; - $data = $this->getDataLength($version, $level); - $ecc = $this->getECCLength($version, $level); - if ($b2 == 0) { - $spec[0] = $b1; - $spec[1] = (int)($data / $b1); - $spec[2] = (int)($ecc / $b1); - $spec[3] = 0; - $spec[4] = 0; - } else { - $spec[0] = $b1; - $spec[1] = (int)($data / ($b1 + $b2)); - $spec[2] = (int)($ecc / ($b1 + $b2)); - $spec[3] = $b2; - $spec[4] = $spec[1] + 1; - } - return $spec; - } - - /** - * Put an alignment marker. - * @param array $frame frame - * @param int $width width - * @param int $ox X center coordinate of the pattern - * @param int $oy Y center coordinate of the pattern - * @return array frame - */ - protected function putAlignmentMarker($frame, $ox, $oy) { - $finder = array( - "\xa1\xa1\xa1\xa1\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa0\xa1\xa0\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa1\xa1\xa1\xa1" - ); - $yStart = $oy - 2; - $xStart = $ox - 2; - for ($y=0; $y < 5; $y++) { - $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]); - } - return $frame; - } - - /** - * Put an alignment pattern. - * @param int $version version - * @param array $fram frame - * @param int $width width - * @return array frame - */ - protected function putAlignmentPattern($version, $frame, $width) { - if ($version < 2) { - return $frame; - } - $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0]; - if ($d < 0) { - $w = 2; - } else { - $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2); - } - if ($w * $w - 3 == 1) { - $x = $this->alignmentPattern[$version][0]; - $y = $this->alignmentPattern[$version][0]; - $frame = $this->putAlignmentMarker($frame, $x, $y); - return $frame; - } - $cx = $this->alignmentPattern[$version][0]; - $wo = $w - 1; - for ($x=1; $x < $wo; ++$x) { - $frame = $this->putAlignmentMarker($frame, 6, $cx); - $frame = $this->putAlignmentMarker($frame, $cx, 6); - $cx += $d; - } - $cy = $this->alignmentPattern[$version][0]; - for ($y=0; $y < $wo; ++$y) { - $cx = $this->alignmentPattern[$version][0]; - for ($x=0; $x < $wo; ++$x) { - $frame = $this->putAlignmentMarker($frame, $cx, $cy); - $cx += $d; - } - $cy += $d; - } - return $frame; - } - - /** - * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits. - * @param int $version version - * @return BCH encoded version information pattern - */ - protected function getVersionPattern($version) { - if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) { - return 0; - } - return $this->versionPattern[($version - 7)]; - } - - /** - * Return BCH encoded format information pattern. - * @param array $mask - * @param int $level error correction level - * @return BCH encoded format information pattern - */ - protected function getFormatInfo($mask, $level) { - if (($mask < 0) OR ($mask > 7)) { - return 0; - } - if (($level < 0) OR ($level > 3)) { - return 0; - } - return $this->formatInfo[$level][$mask]; - } - - /** - * Put a finder pattern. - * @param array $frame frame - * @param int $width width - * @param int $ox X center coordinate of the pattern - * @param int $oy Y center coordinate of the pattern - * @return array frame - */ - protected function putFinderPattern($frame, $ox, $oy) { - $finder = array( - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" - ); - for ($y=0; $y < 7; $y++) { - $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]); - } - return $frame; - } - - /** - * Return a copy of initialized frame. - * @param int $version version - * @return Array of unsigned char. - */ - protected function createFrame($version) { - $width = $this->capacity[$version][QRCAP_WIDTH]; - $frameLine = str_repeat ("\0", $width); - $frame = array_fill(0, $width, $frameLine); - // Finder pattern - $frame = $this->putFinderPattern($frame, 0, 0); - $frame = $this->putFinderPattern($frame, $width - 7, 0); - $frame = $this->putFinderPattern($frame, 0, $width - 7); - // Separator - $yOffset = $width - 7; - for ($y=0; $y < 7; ++$y) { - $frame[$y][7] = "\xc0"; - $frame[$y][$width - 8] = "\xc0"; - $frame[$yOffset][7] = "\xc0"; - ++$yOffset; - } - $setPattern = str_repeat("\xc0", 8); - $frame = $this->qrstrset($frame, 0, 7, $setPattern); - $frame = $this->qrstrset($frame, $width-8, 7, $setPattern); - $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern); - // Format info - $setPattern = str_repeat("\x84", 9); - $frame = $this->qrstrset($frame, 0, 8, $setPattern); - $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8); - $yOffset = $width - 8; - for ($y=0; $y < 8; ++$y,++$yOffset) { - $frame[$y][8] = "\x84"; - $frame[$yOffset][8] = "\x84"; - } - // Timing pattern - $wo = $width - 15; - for ($i=1; $i < $wo; ++$i) { - $frame[6][7+$i] = chr(0x90 | ($i & 1)); - $frame[7+$i][6] = chr(0x90 | ($i & 1)); - } - // Alignment pattern - $frame = $this->putAlignmentPattern($version, $frame, $width); - // Version information - if ($version >= 7) { - $vinf = $this->getVersionPattern($version); - $v = $vinf; - for ($x=0; $x<6; ++$x) { - for ($y=0; $y<3; ++$y) { - $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - $v = $vinf; - for ($y=0; $y<6; ++$y) { - for ($x=0; $x<3; ++$x) { - $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - } - // and a little bit... - $frame[$width - 8][8] = "\x81"; - return $frame; - } - - /** - * Set new frame for the specified version. - * @param int $version version - * @return Array of unsigned char. - */ - protected function newFrame($version) { - if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) { - return NULL; - } - if (!isset($this->frames[$version])) { - $this->frames[$version] = $this->createFrame($version); - } - if (is_null($this->frames[$version])) { - return NULL; - } - return $this->frames[$version]; - } - - /** - * Return block number 0 - * @param array $spec - * @return int value - */ - protected function rsBlockNum($spec) { - return ($spec[0] + $spec[3]); - } - - /** - * Return block number 1 - * @param array $spec - * @return int value - */ - protected function rsBlockNum1($spec) { - return $spec[0]; - } - - /** - * Return data codes 1 - * @param array $spec - * @return int value - */ - protected function rsDataCodes1($spec) { - return $spec[1]; - } - - /** - * Return ecc codes 1 - * @param array $spec - * @return int value - */ - protected function rsEccCodes1($spec) { - return $spec[2]; - } - - /** - * Return block number 2 - * @param array $spec - * @return int value - */ - protected function rsBlockNum2($spec) { - return $spec[3]; - } - - /** - * Return data codes 2 - * @param array $spec - * @return int value - */ - protected function rsDataCodes2($spec) { - return $spec[4]; - } - - /** - * Return ecc codes 2 - * @param array $spec - * @return int value - */ - protected function rsEccCodes2($spec) { - return $spec[2]; - } - - /** - * Return data length - * @param array $spec - * @return int value - */ - protected function rsDataLength($spec) { - return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); - } - - /** - * Return ecc length - * @param array $spec - * @return int value - */ - protected function rsEccLength($spec) { - return ($spec[0] + $spec[3]) * $spec[2]; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRrs - - /** - * Initialize a Reed-Solomon codec and add it to existing rsitems - * @param int $symsize symbol size, bits - * @param int $gfpoly Field generator polynomial coefficients - * @param int $fcr first root of RS code generator polynomial, index form - * @param int $prim primitive element to generate polynomial roots - * @param int $nroots RS code generator polynomial degree (number of roots) - * @param int $pad padding bytes at front of shortened block - * @return array Array of RS values:
  • mm = Bits per symbol;
  • nn = Symbols per block;
  • alpha_to = log lookup table array;
  • index_of = Antilog lookup table array;
  • genpoly = Generator polynomial array;
  • nroots = Number of generator;
  • roots = number of parity symbols;
  • fcr = First consecutive root, index form;
  • prim = Primitive element, index form;
  • iprim = prim-th root of 1, index form;
  • pad = Padding bytes in shortened block;
  • gfpoly
. - */ - protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { - foreach ($this->rsitems as $rs) { - if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize) - OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) { - continue; - } - return $rs; - } - $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); - array_unshift($this->rsitems, $rs); - return $rs; - } - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - // QRrsItem - - /** - * modnn - * @param array RS values - * @param int $x X position - * @return int X osition - */ - protected function modnn($rs, $x) { - while ($x >= $rs['nn']) { - $x -= $rs['nn']; - $x = ($x >> $rs['mm']) + ($x & $rs['nn']); - } - return $x; - } - - /** - * Initialize a Reed-Solomon codec and returns an array of values. - * @param int $symsize symbol size, bits - * @param int $gfpoly Field generator polynomial coefficients - * @param int $fcr first root of RS code generator polynomial, index form - * @param int $prim primitive element to generate polynomial roots - * @param int $nroots RS code generator polynomial degree (number of roots) - * @param int $pad padding bytes at front of shortened block - * @return array Array of RS values:
  • mm = Bits per symbol;
  • nn = Symbols per block;
  • alpha_to = log lookup table array;
  • index_of = Antilog lookup table array;
  • genpoly = Generator polynomial array;
  • nroots = Number of generator;
  • roots = number of parity symbols;
  • fcr = First consecutive root, index form;
  • prim = Primitive element, index form;
  • iprim = prim-th root of 1, index form;
  • pad = Padding bytes in shortened block;
  • gfpoly
. - */ - protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { - // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2) - $rs = null; - // Check parameter ranges - if (($symsize < 0) OR ($symsize > 8)) { - return $rs; - } - if (($fcr < 0) OR ($fcr >= (1<<$symsize))) { - return $rs; - } - if (($prim <= 0) OR ($prim >= (1<<$symsize))) { - return $rs; - } - if (($nroots < 0) OR ($nroots >= (1<<$symsize))) { - return $rs; - } - if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) { - return $rs; - } - $rs = array(); - $rs['mm'] = $symsize; - $rs['nn'] = (1 << $symsize) - 1; - $rs['pad'] = $pad; - $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0); - $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0); - // PHP style macro replacement ;) - $NN =& $rs['nn']; - $A0 =& $NN; - // Generate Galois field lookup tables - $rs['index_of'][0] = $A0; // log(zero) = -inf - $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0 - $sr = 1; - for ($i=0; $i<$rs['nn']; ++$i) { - $rs['index_of'][$sr] = $i; - $rs['alpha_to'][$i] = $sr; - $sr <<= 1; - if ($sr & (1 << $symsize)) { - $sr ^= $gfpoly; - } - $sr &= $rs['nn']; - } - if ($sr != 1) { - // field generator polynomial is not primitive! - return NULL; - } - // Form RS code generator polynomial from its roots - $rs['genpoly'] = array_fill(0, ($nroots + 1), 0); - $rs['fcr'] = $fcr; - $rs['prim'] = $prim; - $rs['nroots'] = $nroots; - $rs['gfpoly'] = $gfpoly; - // Find prim-th root of 1, used in decoding - for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) { - ; // intentional empty-body loop! - } - $rs['iprim'] = (int)($iprim / $prim); - $rs['genpoly'][0] = 1; - - - for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { - $rs['genpoly'][$i+1] = 1; - // Multiply rs->genpoly[] by @**(root + x) - for ($j = $i; $j > 0; --$j) { - if ($rs['genpoly'][$j] != 0) { - $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)]; - } else { - $rs['genpoly'][$j] = $rs['genpoly'][$j-1]; - } - } - // rs->genpoly[0] can never be zero - $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)]; - } - // convert rs->genpoly[] to index form for quicker encoding - for ($i = 0; $i <= $nroots; ++$i) { - $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]]; - } - return $rs; - } - - /** - * Encode a Reed-Solomon codec and returns the parity array - * @param array $rs RS values - * @param array $data data - * @param array $parity parity - * @return parity array - */ - protected function encode_rs_char($rs, $data, $parity) { - $MM =& $rs['mm']; // bits per symbol - $NN =& $rs['nn']; // the total number of symbols in a RS block - $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form - $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form - $GENPOLY =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form - $NROOTS =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block - $FCR =& $rs['fcr']; // first consecutive root, index form - $PRIM =& $rs['prim']; // primitive element, index form - $IPRIM =& $rs['iprim']; // prim-th root of 1, index form - $PAD =& $rs['pad']; // the number of pad symbols in a block - $A0 =& $NN; - $parity = array_fill(0, $NROOTS, 0); - for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) { - $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; - if ($feedback != $A0) { - // feedback term is non-zero - // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must - // always be for the polynomials constructed by init_rs() - $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback); - for ($j=1; $j < $NROOTS; ++$j) { - $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])]; - } - } - // Shift - array_shift($parity); - if ($feedback != $A0) { - array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]); - } else { - array_push($parity, 0); - } - } - return $parity; - } - - } // end QRcode class - -} // END OF "class_exists QRcode" -?> diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.dat deleted file mode 100644 index be28feac..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -xڝ E9u`"PńC牗T!0$ -EɲQmh۾9{kI" 9Ln)Ap־>^zmnŖ;mn \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.png deleted file mode 100644 index 86ce6e98..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_1.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.dat deleted file mode 100644 index aff163f6..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.png deleted file mode 100644 index dbfcd70b..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_10.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.dat deleted file mode 100644 index 95af68a4..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.png deleted file mode 100644 index c07c761f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_11.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.dat deleted file mode 100644 index 73228b36..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.png deleted file mode 100644 index 8ba67822..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_12.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.dat deleted file mode 100644 index 2256f0e3..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.png deleted file mode 100644 index 6e49d35a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_13.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.dat deleted file mode 100644 index e9ae0932..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.png deleted file mode 100644 index efc36c03..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_14.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.dat deleted file mode 100644 index 18727818..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.png deleted file mode 100644 index a9f416c7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_15.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.dat deleted file mode 100644 index 60af6784..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.dat +++ /dev/null @@ -1 +0,0 @@ -xA E]sIX;n6`qW6`%A/3!!g̡1N) E|;>6⸏97$c]kkw1[mC͜cR>E,hʼnp#xFyWVWG3+˓S}Ğ#G8b^c^cpc&3YQ"vk9܇} ĿQL/ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.png deleted file mode 100644 index 6ac8fe89..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_16.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.dat deleted file mode 100644 index 87f0cf59..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.png deleted file mode 100644 index 5b929ac7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_17.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.dat deleted file mode 100644 index bb7138c1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0E]օ,2;s&͚hO1&09OIv@DD &ىKXFv<dq9<%h Ys !(ds;~||b(Yůg#`KSĶsidߍLg:әt/gmkM3{4rTQes><әt3;H#љt3Y+oghٽlnF>i^#awm;g~pgNs{6zp' \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.png deleted file mode 100644 index ee0d6a35..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_18.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.dat deleted file mode 100644 index 95e26adc..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA - E.No7ћiiRN2W%x@ڜ' -u6.*S;}àT zrt%,};)ZLP$qgLdJ;w.]z#[͝Og" B}};w#1Gb;w_C+w@Dfu2N9R7|pWkk \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.png deleted file mode 100644 index 20fddd84..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_19.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.dat deleted file mode 100644 index 7e42f31c..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.dat +++ /dev/null @@ -1 +0,0 @@ -x͒ F{v& &Y+?Z1S'y!a815&۴HٞclF1#6 f6O7C֏8gIfB\DԻ( \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.png deleted file mode 100644 index 9c150ebe..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_2.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.dat deleted file mode 100644 index d5ecc1d8..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.png deleted file mode 100644 index 23a061d5..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_20.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.dat deleted file mode 100644 index 1974dd9d..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.dat +++ /dev/null @@ -1 +0,0 @@ -xA E]sIX;n6Upв]٘< i-eW)ŕ…H\jvqHL\6ЅrILܹ%@Vv(P4|Xngɝ~]Du1Us S\,2N?DKF-:eJ]p_,a0` X` w,` X]5 Y4{2vJs9)u۹,]^_7$_ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.png deleted file mode 100644 index 291598c7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_21.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_22.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_22.dat deleted file mode 100644 index 0f01802d..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_22.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA -0 E]{.]{{{ZBepwe@VERZ3"*2o4y)i#dbdF҅I"4WIu45x.ZS{8k={o.q[:帒qy -)t#N8dCj-OOG}:/:sz!)^IO- 7p 7$}>ɷ7p tssrs Vmҹ}R~7&?7ԦIbh{<Mi- \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_23.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_23.png deleted file mode 100644 index b8f16ae2..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_23.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.dat deleted file mode 100644 index 7b92e29c..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.dat +++ /dev/null @@ -1 +0,0 @@ -xA EMX0;nVP4HSSxU3/O LiJ4V JC%6VR&DBHjDJ??BlcDZ'UXUޏ0ywįj똳3ścj{:GqGNv;笓J <]#8#8H'GqGtr:9#8#8ؓhNt_>teS^\gQe?vuo;>*wlm \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.png deleted file mode 100644 index 397c64f8..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_24.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.dat deleted file mode 100644 index ba125182..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA - s낋]rxY51mMBG -*Sx|Ua5ƵZ-,1HPRjX5iG>WR/+uT廯 ӯ嗴u[Sa[kv5+5nJ%+VXbŊ߬u'SRtzZ++VXbŊٟٟٟ+VXb}Ŋ+VXVI+kq[toVZvoNVw}{r<ýR"R] Wr} \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.png deleted file mode 100644 index 25bc4454..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_25.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.dat deleted file mode 100644 index d34a73f1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA - Eօ,t77ћU E)i7*~cXEBFC6:&L,Mv.KgոYM>>mۚ?vmg?ұηdCUIkE\Msfafa>[sӈ9쬩ެ8b]LgEo w1 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.png deleted file mode 100644 index f4a6b393..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_26.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.dat deleted file mode 100644 index b4d9ffd4..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.png deleted file mode 100644 index 8419ec23..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_27.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.dat deleted file mode 100644 index 8cbaa196..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.png deleted file mode 100644 index 7609d8e1..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_28.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.dat deleted file mode 100644 index 5e4a7110..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA a޺ @n7+*4!?J 抮]STf)sI"Ȕb0|"Luٸ,E1\6*uQ?>aυR-rn.ꯋ\T:*)|) , ,x_}:^RUoɢu~މX`XЏЏЏЏ_`X`XЏЏЏ_`X`XЏЏЏЏwbX`PU)D"c{z3<}^?bm잃a.] -{Q6uT,9 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.png deleted file mode 100644 index ffe072c8..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_29.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.dat deleted file mode 100644 index 188d531c..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.dat +++ /dev/null @@ -1 +0,0 @@ -x E{v& &Y+bk'ya:TXl޶$W+ӏv9}gR@H0YPBEm?s"bt2cn:ﺭ;YzQ7 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.png deleted file mode 100644 index 945ee7cb..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_3.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.dat deleted file mode 100644 index 44cf3d31..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.png deleted file mode 100644 index 75dbddd2..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_30.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.dat deleted file mode 100644 index ce429d0a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.dat +++ /dev/null @@ -1 +0,0 @@ -xA a޺ &r4yķ!mV3Iv!Ҝ2i\NSS4EF2+65e/Ws]!?p=S~Đ?+x6r6y}ǴeR1-WllҌXz/>V櫷:ñA8-+mTbllltM&]ll&]Ill&]y 6` 6`iuyXWi\tz>.zk t77wJϔ4w҈85 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.png deleted file mode 100644 index b14d1fa2..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_31.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.dat deleted file mode 100644 index aaa0808e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.dat +++ /dev/null @@ -1,2 +0,0 @@ -x - ־. Dl, Mz6Ç gcJD;'.AIqމI,IrYFk%DOy|EDD(L_Y>*ߚ?aOkL_<[c>c˘uLI%#0#0#otѢ}4fv_)Eph5R881#0#0itZ#0#0#0itZ#0#0#0itZl0#09q"HܜHQ"L5}-Y׾k`>z鸳4&p!!`:5 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.png deleted file mode 100644 index 58d42db3..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_32.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.dat deleted file mode 100644 index a2613755..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.dat +++ /dev/null @@ -1,14 +0,0 @@ -xA a޺@n7+*L++柮bb*LCc kHrjJ5Yi~0_TT}e>5b_w͟?\Rai+7W\wLUNL -+ -+jOkc\˩|%o} 8 -+ -+ -+ 3g -+ -+ -+3g@ -+ -+ -+:RXB9I=ko/Swؘٯ`gr_ٙYVSYzIefnmQoz > \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.png deleted file mode 100644 index 924c728e..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_33.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.dat deleted file mode 100644 index 7ceb0259..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.png deleted file mode 100644 index a477042d..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_34.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.dat deleted file mode 100644 index 56bc3e28..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.png deleted file mode 100644 index d29806c6..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_35.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.dat deleted file mode 100644 index 282c60d2..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.png deleted file mode 100644 index 96ecb421..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_36.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.dat deleted file mode 100644 index 015c0f24..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.png deleted file mode 100644 index fcc51627..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_37.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.dat deleted file mode 100644 index 71cf53eb..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.dat +++ /dev/null @@ -1 +0,0 @@ -xA0ЎuA2;Нk(gytp9$D\e^'t-aIFMSkIŤ:7|LkN8N7i}i,[WgӴ?31iN}}=OM:4)SL2eʔ)SL#$ JJM:}]L٧SQL2eʔ)SL2աPt(:)SL2eʔ)S:ECq2eʔ)SL2eʔECѡ8O2eʔ)SL2eTCѡPL2eʔ)SL2ݓsJCIKԂi93n_ +Ri4\g;% }an \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.png deleted file mode 100644 index 89238f3c..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_38.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.dat deleted file mode 100644 index 53511f73..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.png deleted file mode 100644 index 1dc9cd1b..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_39.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.dat deleted file mode 100644 index 67b30e82..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.dat +++ /dev/null @@ -1 +0,0 @@ -x E=u pجQCOM'ˏ$ @3eF\FNXRyؾC{a8R Ńa2@qkH1(`cj~0ܨعnXGĀ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.png deleted file mode 100644 index b72f9e70..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_4.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.dat deleted file mode 100644 index 90d36dd1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA@Ь@o7`Qfe䕫PA><]߳bZn^AQ}[9^]ynajM܇K̘1cƌ3f̘1{W5}{7lMޚxI<Kαyl3f̘1cƌ3f̘1ۻٻ={αyl3f̘1cƌ3f̘1ۻٻ={αyl3f̘1cƌ3f̘1ۻٻ={αyl3f̘1cƌ3f̘1ۻٻ={αyl3f̘1cƌ3f̘SʑӒ7HK޼g\u_r'4[-]qL8ƝY1q!/(% \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.png b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.png deleted file mode 100644 index 8034d862..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_40.png and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_5.dat deleted file mode 100644 index d5dafe18..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/frame_5.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Eu7ЛZ|ND B0@R$l,->VKZ[I9+Es=ϤL1̄[FZU4?i<;7;P#W-[ݯ6ddddddc",;"sk摑Q&erw######L.摑Иy1^˲\3 v \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_117_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_117_0.dat deleted file mode 100644 index 781c7f87..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_117_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 }OrR,#3,o5Cq:;;wvNJZG=m} ѱ2iRkj_YYYYYYYYe_/WVVVVVVkd-Ϻ,#OZc]|{ž$ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_121_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_121_0.dat deleted file mode 100644 index 68810c34..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_121_0.dat +++ /dev/null @@ -1 +0,0 @@ -x1 О/w YMS8>2SFOEcW\ۼ{cpKGBКmxhfffffff/s22W|*d1*5̬RWas\xm~8߮r0wjsdm&y \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_125_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_125_0.dat deleted file mode 100644 index 2c73ef1a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_125_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA - н_TH`3AOL4 k(ewGW. #2} \Ygggggggggg_d>j^s;;;;;;;;;;'q;;;;;;;;;'˰qu_PYw{e=dG/ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_129_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_129_0.dat deleted file mode 100644 index 812ee8a6..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_129_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - /*DE'hgt-}_pV \"b=s[J=8Dho۞' 0X ۴e0`  j" 0`Wf`^P0`2Ȁ  d07(Y/XLGby"pT \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_137_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_137_0.dat deleted file mode 100644 index f6d993b0..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_137_0.dat +++ /dev/null @@ -1 +0,0 @@ -x1 О/+FZ?J L7Ժ*Ba%L~˻ʓCJYIWJ .K]R0a„ $INTwlLaL0a„ &Ld@PO0a„ &L0e@P?a„ &L0aDe@ &L0aMIlL&)dlgacR<$v,ɺ?U2] \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_141_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_141_0.dat deleted file mode 100644 index 8c685c8e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_141_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -x= -0 нi9'EDx͘%I9+E{$m^&uS"D6ڟ]98UMbҾY[2拉Ĉ#F1bĈ%iRN潝ѳ#;#F1bĈN1i#F1bĈ#FtZ}Nk1bĈ#F1bktZ;#F1bFV-u"IoD-*7uj>bMV+ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_149_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_149_0.dat deleted file mode 100644 index d2583502..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_149_0.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA - н_MEQXP৞.|94e{JLv#^n[ ?; -ZIV-*w˒1*+VXbŊXgwqX}JRYbŊ+VXbeΠwfeΠ^bŊ+VXbʜAʜAbŊ+VXbŊ9ٜAbŊ+VXbŊl0*0Tj`?Ϊ;X=zZr* \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_153_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_153_0.dat deleted file mode 100644 index fc79e9ed..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_153_0.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Н/礑h&F`Ҽ@I;PZ^X͌mf.=5 [if-R+!wr˜g\j̘1cƌ3f̘1cfo.2?1z `ƌ3f̘1cƌzƌ3f̘1cƌ3fztf3f̘1cƌ3f̘kk030cƌ3f̘1c9;Ď`vf͚̆ZϘW9 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_157_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_157_0.dat deleted file mode 100644 index ad749f30..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_157_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA - н_QRY k*q͵=j7~nN.p%ڵsi.رcǎ;vر{.-W2={mgy+رcǎ;vɳ2;yּcǎ;vرcNɳ;vرcǎ;v2I9+DyI4ˠ5:Wvdqߜܴ<d2x%[U%2]&K,Ydɒ%ˡ,S՗r2yd=,k_{Xdɒ%K,Yd)0m,Ydɒ%K,Yd)0m,Ydɒ%K,Yme,e%K,Ydɒ%K,eq Ò%K,Ydɒe:I9EQ=Ls I{ZtR}Sn:|R[?_*SL2eʔ)SL&ϦI O2O2eʔ)SL2e*C1PPSL2eʔ)SLP22)SL2eʔ)SLe(}2)SL2eʔ)SLe(}2)SL2eʔ)Sic7;"ޙFͦސٙvL ^2}oO'r \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_173_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_173_0.dat deleted file mode 100644 index 5ef85e7a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_173_0.dat +++ /dev/null @@ -1 +0,0 @@ -x10ޯT [4v2ƽok݇;Ӳ]f֞dljlG0n+߻mG˖-[lٲe"Y}oV[lٲe˖-[lٲeհՃ[2lٲe˖-[lٲeհՃ[2lٲe˖-[lٲeհՃ[lٲe˖-[lٲeValٲe˖-[lٲef[BmаE;N-ۜT/rl?* \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_177_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_177_0.dat deleted file mode 100644 index 78a26a77..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_177_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0>I9+?߁iև d̹xֈxN/է|{ظ8d0h=cFf̘1cƌ3f̘qq=w6;l4cƕ<nj3f̘1cƌ3fXһ1ֻcƌ3f̘1cƌ3fXbwnj3f̘1cƌ3f̘M'X&1cƌ3f̘1cƌ3ֻnn1cƌ3f̘1cƌÍ3U< \7+(<OƌΊnj4@ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_21_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_21_0.dat deleted file mode 100644 index 368c9941..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_21_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_25_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_25_0.dat deleted file mode 100644 index e4a5b6d8..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_25_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_29_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_29_0.dat deleted file mode 100644 index 74a216b4..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_29_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_33_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_33_0.dat deleted file mode 100644 index 2ec712a7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_33_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_37_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_37_0.dat deleted file mode 100644 index 1588cfce..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_37_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_41_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_41_0.dat deleted file mode 100644 index e369027e..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_41_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_45_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_45_0.dat deleted file mode 100644 index 452f126c..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_45_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_49_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_49_0.dat deleted file mode 100644 index fdd2aac1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_49_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK E9o#?H/6g$-,X] -xݘ; X԰9<Ѻq2AfH7/5We{#fި?4=N > \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_53_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_53_0.dat deleted file mode 100644 index 572d279e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_53_0.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK -@!йoQϺ:(m&s-6Z{m4YX.F٭XZij=:έ֋b忑VH 8 #[Y^Xe \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_57_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_57_0.dat deleted file mode 100644 index ea81e6dc..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_57_0.dat +++ /dev/null @@ -1,4 +0,0 @@ -xA - {^s=YL՚ ( -ouj)  -Z7yv,ԴwVQ iGiҤDfەwo4ѤoLLȼ}4 h \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_61_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_61_0.dat deleted file mode 100644 index 93d2444d..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_61_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_65_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_65_0.dat deleted file mode 100644 index df29d7bf..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_65_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_69_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_69_0.dat deleted file mode 100644 index 8a2cfbd7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_69_0.dat +++ /dev/null @@ -1 +0,0 @@ -xK =_+mBd|Q"s+1"),=Ea T"ŐnE-3 ,KYw=ZZT .,K1#֞!Ŋ+V嬪.2XbŊ+VX.kBzwձ̀gkYZ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_89_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_89_0.dat deleted file mode 100644 index aaa4c526..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_89_0.dat +++ /dev/null @@ -1 +0,0 @@ -x1 ὧi9'Hl?L^"&M?bq?˸,9!z]VScƌ3_c!`n3f̘1č 3f̘1/f>.Uc˻; 2;Y+7 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_93_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_93_0.dat deleted file mode 100644 index e218fa0e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_93_0.dat +++ /dev/null @@ -1,3 +0,0 @@ -xK - EyV,OmޠrPH0{2bc{tQ] -{Q{{弬֒ǎ;v_ڳ}L}l߱cǎ;v̑̑̑رcǎ.Legw3qeѾ@i \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_97_0.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_97_0.dat deleted file mode 100644 index 74ac719d..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_0/mask_97_0.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_101_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_101_1.dat deleted file mode 100644 index ec939b52..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_101_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - н\QEd  1N<#Ֆ-7u.lԦeiXXXXXRZVVeIo1,,,,,v%?gaaaaY K&K=/+ۍ˱ގ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_105_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_105_1.dat deleted file mode 100644 index e1f5c99b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_105_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Ӕ_Υb KB?"*#WʘtgӎJqUM9TLLvǤLLLLLLzgG01111yiߘ4m=՛n+2 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_109_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_109_1.dat deleted file mode 100644 index 7e0d6d16..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_109_1.dat +++ /dev/null @@ -1 +0,0 @@ -xֱ >ӘK}:!iY'*3]fsmb[JƶŖK9}cccccc'u.6Ʀs6666R[^g{/lٷ 7͂ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_113_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_113_1.dat deleted file mode 100644 index 1dd666d9..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_113_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1  -8fL(pBlDM9";-;?1p{\%-3:@ad4*Nadddddd########c]751xYu \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_117_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_117_1.dat deleted file mode 100644 index 8921f643..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_117_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -xֻ >ӘK$^ 8YQSV'z8jzʇ^]סekXYYYYYYYjݵ# -+yeeeeeeee#WVVVVVVVV;"+yeeeeeeel'e;b&^9{/J$p \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_121_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_121_1.dat deleted file mode 100644 index 64bd8ba0..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_121_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - н\CPbїE$DdƩYtڅλ0$ήꝝga7yٯ痽Y??{{D \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_129_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_129_1.dat deleted file mode 100644 index 62cd1c9a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_129_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_133_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_133_1.dat deleted file mode 100644 index 18d68dce..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_133_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Ӕ_΅hh|"zۉ-*dNHQĢR ,X`c9Y(na_` ,X,X,X` #:8  ,X`Bd¾` ,X|ϢY\X; 7-; ` \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_137_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_137_1.dat deleted file mode 100644 index 284d7bea..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_137_1.dat +++ /dev/null @@ -1,3 +0,0 @@ -x1 -0 ӤKh]D,-t #ڌQ[T Ks7_?9|B&X^L0a„&3„M&L0a„ &2D4c0a„ &LȀЌe„ &L0abwȀf,&L0a„7&y2anoL<01O - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_141_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_141_1.dat deleted file mode 100644 index 83220ddb..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_141_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - >946)3$`s uʮ>Wd )g'M{3\d6ubذaÆ 6lؼn]Nذ9FްaÆ 6lذa3a#oذaÆ 6lذذ5e16lذaÆ ]Sbk6lذaÆ mͤ;CcfIdsG \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_145_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_145_1.dat deleted file mode 100644 index 6a9950f7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_145_1.dat +++ /dev/null @@ -1 +0,0 @@ -x!0@k 4a)q2i.YCUO{35UZFn]fN>bdwtzJF}F1bĈ#F(F6r1bĈ#F1E1ilF1bĈ#FtF#F1bĈ#FtZ}##F1bĈleHGܣ@ٝ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_149_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_149_1.dat deleted file mode 100644 index 02a3cdc6..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_149_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Ӕ_΅qH_Xci#Gd̘Ք՛gLU^ݮVR>dKVXbŊ+VXeoXJ_bŊ+VXb;ݙ+}Ŋ+VXbŊ+VAVngŊ+VXbŊ}+ +VXbŊVj>hewf*`uTq \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_153_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_153_1.dat deleted file mode 100644 index 2abfca20..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_153_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0\9btEc'HH9efߞmffM#.̘1cƌ3f̘1cf73f̘g̘1cƌ3f̘1co2c]?3f̘1cƌ3f5Mf3f̘1cƌ3f̘17utf3f̘1cƌ3f̘=lj3>V \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_157_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_157_1.dat deleted file mode 100644 index 17344b89..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_157_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - >94Sd/51V)SkJv7eGcǎ;vرc]Zٱc'رcǎ;vر+رg;vرcǎ;}V`N+رcǎ;v:;v;vرcǎ;;}Vޱcǎ;vص'vz#;]klwoA` \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_161_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_161_1.dat deleted file mode 100644 index 669ade1b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_161_1.dat +++ /dev/null @@ -1 +0,0 @@ -x10_΅Xš yi~Qbkvp7'M u=]([ 2dȐ +\' 2 2dȐ!C 2s0/3d() 2dȐ!C 241dh 2dȐ!C 2dhcȐSL2eʔ)SL2M SLSL2eʔ)SL2M}LSSL2eʔ)SLeSy)SŔ)SL2eʔ)S;ٔ)S;)SL2eʔ)Sv()Sv()SL2eʔ)SLdT6}a*3mljmzC' \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_173_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_173_1.dat deleted file mode 100644 index 436918c0..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_173_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Ӕ_Υ''@y]X1?"g:1犝fn˶˻mm.?lٲe˖-F>glٲ2lٲe˖-[lٲeO`˖e˖-[lٲe˖-[l lٲlٲe˖-[lٲeVO`˖e˖-[lٲe˖-[z0}[z0y˖-[lٲe˖-[Ee[hOVWö=t*| \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_177_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_177_1.dat deleted file mode 100644 index 12e2e522..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_177_1.dat +++ /dev/null @@ -1 +0,0 @@ -x1 Ep0X,a#r}6}nj~\8ƌ3f̘1cƌ7{3f,y3f̘1cƌ3fX_`X&3f̘1cƌ3f̘M_1cy̘1cƌ3f̘1cƌ+3f,y3f̘1cƌ3fX_bX&3f̘1cƌ3fx2dX'x[cy| 3 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_21_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_21_1.dat deleted file mode 100644 index f87e0a11..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_21_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_25_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_25_1.dat deleted file mode 100644 index 3a225e30..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_25_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_29_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_29_1.dat deleted file mode 100644 index 0a1cb3b5..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_29_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_33_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_33_1.dat deleted file mode 100644 index 318949df..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_33_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_37_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_37_1.dat deleted file mode 100644 index 5bd9e3aa..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_37_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_41_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_41_1.dat deleted file mode 100644 index 52e9e58f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_41_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_45_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_45_1.dat deleted file mode 100644 index b35c567d..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_45_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_49_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_49_1.dat deleted file mode 100644 index d20d7171..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_49_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_53_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_53_1.dat deleted file mode 100644 index a676d7df..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_53_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_57_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_57_1.dat deleted file mode 100644 index 896ed435..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_57_1.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_61_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_61_1.dat deleted file mode 100644 index 4165a4bd..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_61_1.dat +++ /dev/null @@ -1 +0,0 @@ -x30CbpPi`@&H^nadQG{n_.4Iy킎`)-5*(of[sm}6YM ;;;;;G{zطz1vw}=wuL%?"=~ei \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_97_1.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_97_1.dat deleted file mode 100644 index 24fa60fc..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_1/mask_97_1.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0н1\tncKD"H$DH$D"Q&WerH$D"*x[(?/'nd \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_117_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_117_2.dat deleted file mode 100644 index b4dcce46..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_117_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - >94!m dOs\0X,la5#E>Z[ַRT*JR?Q-*T*JR?UW*JRTݟ+JRԤ~m5;S&+ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_121_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_121_2.dat deleted file mode 100644 index a2a0097b..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_121_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_125_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_125_2.dat deleted file mode 100644 index 0ea40fda..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_125_2.dat +++ /dev/null @@ -1 +0,0 @@ -x! PӔ_@ U(kp@^Mڮ5-:VF_\t:NtyNqt:NtG;Nt:.8:NtzA}yNq;+n& \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_129_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_129_2.dat deleted file mode 100644 index bf048394..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_129_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0н_KVڡ'.!w]A0X~  !࣠fK# xFy4 vey@^+  ~  L#veI \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_133_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_133_2.dat deleted file mode 100644 index 9e78b6de..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_133_2.dat +++ /dev/null @@ -1,10 +0,0 @@ -x1 - н&`LQ-g=Aqbʪl fƄȚ44& )OȚYF4444444444c4~9S:3ЌטpǮ> \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_145_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_145_2.dat deleted file mode 100644 index 9ff2bbf3..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_145_2.dat +++ /dev/null @@ -1,4 +0,0 @@ -x1 - нr] -,tQ^&C~ -щj~mɾ.FgMDDDDDDDDDDDST׈DHdZL+ɴDDDDDDDDDDD2-'"""""""":BתEYDd \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_149_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_149_2.dat deleted file mode 100644 index d52e0484..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_149_2.dat +++ /dev/null @@ -1 +0,0 @@ -x;@/gcaGBXB'-ˆouէUQdRVOmT*ǫ;;j廝Ee2PQQQQQQQQQQQ TTTTTTTTTTTTr33R &Tskz_e2P=d \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_153_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_153_2.dat deleted file mode 100644 index 3b060410..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_153_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0 Ӥ8ZP!BZu賶"bu*)]MFFFFFFFFFFFF%= #ddddddddddddr ot2yFFFFFFFFFFFF& #k5L 2222222222(Y7"d@H \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_157_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_157_2.dat deleted file mode 100644 index 2baf535e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_157_2.dat +++ /dev/null @@ -1,3 +0,0 @@ -x1 -0>s6MqUH1X&U̘f/u-'.[KGGGGGGGGGGH|NG(ttttttttttNF;::::::::::}Nz$ ->n A#^AG(t =3{ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_161_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_161_2.dat deleted file mode 100644 index d2df7594..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_161_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_165_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_165_2.dat deleted file mode 100644 index 2e6cd7c6..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_165_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0 Ӥ?BVUG%*+_fs MIIIIIIIII2d;l4()))))))))))eqJنIDIIIIIIIIIII)۠mPRRRRRRRRRRR6l JJJJJJJJJJJJن}RaQRRRRRRRRRRNeK?R퐔͔&W3U \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_169_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_169_2.dat deleted file mode 100644 index 4052062b..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_169_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_173_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_173_2.dat deleted file mode 100644 index 0a30ba53..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_173_2.dat +++ /dev/null @@ -1 +0,0 @@ -x+@ Pift:>y &d U߬S[]5Z;a5V۞A[Z˴VՃI0ZZZZZZZZZZZZZZ=-Lhi`VFK?ݧhioJ0}o \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_177_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_177_2.dat deleted file mode 100644 index d2c52f99..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_177_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - E>Y4V$~ ,C&U;Ook5bϙGx9%&&&&&&&&&&&n$OL|v#&&&&&&&&&&&&&bbݍXw#&l7bbbbbbbbbbbbbbM"l7bbbbbbbbbbbbbbMa!&݈3)U*F> \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_45_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_45_2.dat deleted file mode 100644 index ad44ff18..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_45_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_49_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_49_2.dat deleted file mode 100644 index 6e8edff2..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_49_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_53_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_53_2.dat deleted file mode 100644 index 682cae2a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_53_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_57_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_57_2.dat deleted file mode 100644 index 66a5c056..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_57_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_61_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_61_2.dat deleted file mode 100644 index 77d3815e..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_61_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_65_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_65_2.dat deleted file mode 100644 index caf184ad..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_65_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_69_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_69_2.dat deleted file mode 100644 index 6a3801bf..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_69_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_73_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_73_2.dat deleted file mode 100644 index 74945b71..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_73_2.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_77_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_77_2.dat deleted file mode 100644 index 903cba4a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_77_2.dat +++ /dev/null @@ -1 +0,0 @@ -x1 н_CM>Gt ѫe+FWZEm&gއFѶhF+t/FYvFj[*7a \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_81_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_81_2.dat deleted file mode 100644 index 17a9ac2a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_81_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0н_KҩVi!O\"A]:xbW1uȦ&_T ΋6H$U^D~bׯb=gX \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_85_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_85_2.dat deleted file mode 100644 index 72c74ff9..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_85_2.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0=1\B7O$A0$8Wwjguu槊RT*uS֧JRTJRRޢN浘V \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_89_2.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_89_2.dat deleted file mode 100644 index 06c9a4fe..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_2/mask_89_2.dat +++ /dev/null @@ -1 +0,0 @@ -xٱ 0 >/&E*cQqŃ zf$rM)_%s_d3KO1^aL,$H"$KzRPt[I&X9$H"$I$ysI$DI$ɓI$I$Dɍ%es!=LAZ5'̓IVrn/2oƅ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_113_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_113_3.dat deleted file mode 100644 index 023b2730..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_113_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 D}NrnDFj2KCt?WݲZi.qoP %Smj7ަ:*N:@:***fW9d2*j*}S@`*j৪6Jlѿ}}էTUa24hnt \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_117_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_117_3.dat deleted file mode 100644 index 79cc04d1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_117_3.dat +++ /dev/null @@ -1,4 +0,0 @@ -x1 -0 ]Q.xIB$?~!z#E)RHZ@bl-)ݿ<ߧ*OUR"5&5*ie J]+ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_145_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_145_3.dat deleted file mode 100644 index 338b7e7a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_145_3.dat +++ /dev/null @@ -1,3 +0,0 @@ -x -@|:^ Jy̡yMj-' -9VS֦K9e)PyUwe-m jԨQF5jԨRi٫F4_wk}0+jRBRF5jԨQeOMBJHjԨQF5jwP״˪IH I5jԨQFͳc w5jԨQF:zS*2UZ_C*e_OZ%dIȯb \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_149_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_149_3.dat deleted file mode 100644 index 30bc5fab..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_149_3.dat +++ /dev/null @@ -1 +0,0 @@ -xA0}Oܠ⦐H頯'Z2{oV|Ι%>yR{!8ÂI+JpI|#f5κ[P A $H Q})&X{ט+Wb`I)5%d \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_153_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_153_3.dat deleted file mode 100644 index 89cdec03..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_153_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0}Ns˹)7mJ,}8X=cW^GeN}o%uJV/{%O>}ӧO}K~O>}ӧO>Q=/ї>}ӧO>}u{ח>}ӧO>}u{蟪/%?}ӧO>}ׯ.N4჏VMmRt(1| \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_177_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_177_3.dat deleted file mode 100644 index 9586979a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_177_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_21_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_21_3.dat deleted file mode 100644 index bcb4eec4..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_21_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_25_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_25_3.dat deleted file mode 100644 index 0ffc375f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_25_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_29_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_29_3.dat deleted file mode 100644 index 6150ac12..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_29_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_33_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_33_3.dat deleted file mode 100644 index 6053b5e3..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_33_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_37_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_37_3.dat deleted file mode 100644 index 5dea5b9c..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_37_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_41_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_41_3.dat deleted file mode 100644 index ca9ddc2a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_41_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_45_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_45_3.dat deleted file mode 100644 index 3daad97f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_45_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK - DsFJ(&)0dЇFg![8=&iaD)d8&Aլa 1'II׳79 ex߾ I&֝CuJy \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_49_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_49_3.dat deleted file mode 100644 index 7f6508dd..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_49_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_53_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_53_3.dat deleted file mode 100644 index 8800beab..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_53_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK -0Ds ! -(.Bp&|"-t&`qQ-"9_+)Be/H8D%a~}spKFN=,;;a^t4\FSN \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_57_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_57_3.dat deleted file mode 100644 index 4e1e5da3..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_57_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_61_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_61_3.dat deleted file mode 100644 index bf1a3cc7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_61_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0fz4-%*dp!yZܫu(~=&ۓ)R2"/"<9FΊ=rb"/rw"2B#3-0-KW \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_65_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_65_3.dat deleted file mode 100644 index 85892089..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_65_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xQ - D4\?R ,!O-Nv1:cZu "UMÕF ~jK-la[^q^Q\=o-laZpUB @IKJzɢ|1Í  \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_69_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_69_3.dat deleted file mode 100644 index 55318a87..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_69_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -x -0 {&2'd l=,Fy;$쇤WE-R:%T,O2g"",Ȣ/DyĈɧ{O䮳",:NvEWN#(&,,]x؅ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_73_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_73_3.dat deleted file mode 100644 index 15be77f6..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_73_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xQ -0 C{g;JJ?dԬK=RasJhTJ6exka\$nIE,-/XB*х=wee4t̒tLщtt߫b gFf qoddn-? \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_77_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_77_3.dat deleted file mode 100644 index ec782804..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_77_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 &BiRaK"t`I@|fXyilE:Sza18GifK*?:YC1쌞졘(ቷJ*jl*TRIKR^ؙks)c)c)JZa \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_81_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_81_3.dat deleted file mode 100644 index 47bc0f79..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_81_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 - F=\,JGAġhj>#3X:kԹ\FM Jhu3>TZ{PSgP'kVjժU_ۯUV=P oO:Wҝj[Wxm 5 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_85_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_85_3.dat deleted file mode 100644 index 02c4f8cd..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_85_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_89_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_89_3.dat deleted file mode 100644 index 2b4cb59f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_89_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 ὧ) *.@U |eŵ6ۢw5*) oiK4nk>1}d>@ 4XYCo ۡ1<AhFt - 4@51Wr>7G}}x7|NgN \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_93_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_93_3.dat deleted file mode 100644 index b4cc8a97..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_93_3.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 D}NrnJɪQ~B06na<<ׇe6MRCP L̓i9M 2 LkŮdDv*"aXjBdAddZTdAdqY0exqeN&WVQvc \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_97_3.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_97_3.dat deleted file mode 100644 index 7adc9eba..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_3/mask_97_3.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_101_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_101_4.dat deleted file mode 100644 index 1c97dc04..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_101_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA Fs^1bИ]4m+8+Ve^HR]\c -oWN#X+l HEcp \^.9qW9":.BB \0aPǨcp \ONqjpG}}$.˅ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_105_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_105_4.dat deleted file mode 100644 index 0211cdb3..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_105_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK -0 D=Mr˹A TeEFL2 #鹢_I!딤Ѻ-իkmO]sS T6*'8 N$'NZ^}rU*G9r|c[cN[_=׫5^J 1*qv \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_117_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_117_4.dat deleted file mode 100644 index 38672591..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_117_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -x - н_s]4Dgn2Jj}ҾRsSWGRɧ)5Em#ܯk_"z3\rʕ+r Lk|/{;'/#\p\p># \p\p#>qp\p.$Iq dGR_4  \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_137_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_137_4.dat deleted file mode 100644 index 0c09c487..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_137_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_141_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_141_4.dat deleted file mode 100644 index 62b03f24..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_141_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_145_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_145_4.dat deleted file mode 100644 index 33fb2112..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_145_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_149_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_149_4.dat deleted file mode 100644 index de99310f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_149_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -x -!н_sm +XӋ9=.=Zka]ޒ> Kjo |SSWKZm׌j\Ъ2 W\qW\q"~ jvtv_\qW\qW\q%g3 }+++ r9ArW\qW\qŕA g3WA W\qW\qW]V~v{D3Ȝ!\W^Tڍ[S7vۜgq? -{peo383838{YXz,_OYfe3s38383\C!Ms38383r \C?37938383\C!07M8383q,mMrskWv3~W WB \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_157_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_157_4.dat deleted file mode 100644 index ad5fcf69..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_157_4.dat +++ /dev/null @@ -1 +0,0 @@ -x10ޯs4"FP=iRX¢X0멪u 4ftl}m➭S|юS P5<]rwqwq^QN6ÏZsߙ,wqwqǝ>Μ5g;;Y}Vgw,wqwqw>9wqwq>3gY;[ww?P3Ƙggt퐮;].3w4A \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_161_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_161_4.dat deleted file mode 100644 index 7604c454..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_161_4.dat +++ /dev/null @@ -1 +0,0 @@ -xA@ fs!AL_|,4l)iml׉0' +E ]N\x#2/_{7g9쏼ٷ}2r!?}-#Te9C9C9~6Sʇ겺!r!r!ۘse9C9C94_Ɯ|.r!r!s/s0 2r!r8}DwrDXΡ|x|!2 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_165_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_165_4.dat deleted file mode 100644 index d83d6316..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_165_4.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA -1 }Or."*?fPLHIkΫZQ8 -Gyqk-n5+?|֎kKnEŹK.K.?2.|EJ{2<:.Ku\K.K.ǝmu)_8\r%\r%\Џ;'2!_8\r%\r%\Џ;'2!_\r%\r%\rinC?nn9 RK.K.;.HqY'ݽNF?K㕢,R| My*3 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_169_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_169_4.dat deleted file mode 100644 index 4aac95c1..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_169_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_173_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_173_4.dat deleted file mode 100644 index 9df4d865..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_173_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK -1}Nrna ~ZY!Jt^5(/jkz[pj_?~v:|jwՖ_mXzo6?naCe \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_81_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_81_4.dat deleted file mode 100644 index dd652161..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_81_4.dat +++ /dev/null @@ -1,3 +0,0 @@ -xA -0 yMyXE m7"892ѸQ1ݳ+xx;t35DIY1x\:u}e/ #Th< -UBz<5G<5{G<5<饫>]Urxu \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_85_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_85_4.dat deleted file mode 100644 index c8d5123e..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_85_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_89_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_89_4.dat deleted file mode 100644 index 5b9bd7ec..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_89_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -x1 -0 ὧI9%  Vڀfr0}z=#9ҕ:~s1BՁg&4pgq.p.&gT05rgsgqrg捯u38k.Egmb*&7? : \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_93_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_93_4.dat deleted file mode 100644 index be7f5e52..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_93_4.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK - ὧIn$}PŌB]N@%sfkҫ}CzoA}aʽ2|~D&l=Ywq}q\EYjK_ywqwz$==;_݋>+pH9Di \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_97_4.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_97_4.dat deleted file mode 100644 index 5d848caa..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_4/mask_97_4.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_101_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_101_5.dat deleted file mode 100644 index c21869e8..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_101_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -x - E+%=M3Cbv ѬNkûgqkqq{%Oo,iKee3[|iVh]` ` 0ʕz˴T0Gu/q8F13:W>#ȕ0c0Q8E=F#+a X͞+cV%9W>Q]TkY-gLqD艋 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_105_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_105_5.dat deleted file mode 100644 index bc8798c6..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_105_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_109_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_109_5.dat deleted file mode 100644 index 25a39440..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_109_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_113_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_113_5.dat deleted file mode 100644 index 25f42b8b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_113_5.dat +++ /dev/null @@ -1,9 +0,0 @@ -x -0D^6I63[[EDqc+jy81\c -7c?u}DK4},kkg--3[UƂyUXUXSV:ϫ՝,|кS⫰ - - -Vɫ*X[* - - -zU*NV*JUXUXSXijTi4fZkU^_~Ux }ծZ/r \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_117_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_117_5.dat deleted file mode 100644 index f236940d..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_117_5.dat +++ /dev/null @@ -1 +0,0 @@ -x D|Mn/*{M+pI_&m-ѾC32u?o-kgB7wc=U%yoRhӯșDo:ֶyRJkQ^aaaqOgiJ ;qOg)ӊ0 0 0 [vö>=>0 0 0 Ofz3=>0 0 0.3Z$׷8\pw4:Zp:qX 7 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_121_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_121_5.dat deleted file mode 100644 index 9bb5c415..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_121_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_125_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_125_5.dat deleted file mode 100644 index 2161c50a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_125_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA - E&fc;S$?؏Q4YahûyJ}9g==li.;nh_wz.qCWȧy uPk;<<<|*q, mkWqNl% yyyy^2䰅sX|aaaa3ϙ9lH<<<<̿웁[n`Tq8^vy \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_129_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_129_5.dat deleted file mode 100644 index f0c1d650..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_129_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_133_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_133_5.dat deleted file mode 100644 index 46be8b09..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_133_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 DѽOcr]4%1mCTxΜ[Dv={FEϏq?ݿ9keѭ}'2^c4G:3=JK-F0`#Hw'#<{~Z4 :BG舻F0`G~:`#?#tw-`#?##t#F0r}Q}eR;M/k1mX=hsH"k M:3qOW}9ԖIH1G;- sڶ?[%M - v#;zg^3d}69Ψޙ@7҄#gv`;׳ީ\$wlv`v;ލ}7wߑa;vkA#gv`=N2wxgWӤ@n?c}SQ:Zd?+9vz)P \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_141_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_141_5.dat deleted file mode 100644 index 60c1a8e8..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_141_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_145_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_145_5.dat deleted file mode 100644 index 9303c07f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_145_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_149_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_149_5.dat deleted file mode 100644 index 4256cefd..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_149_5.dat +++ /dev/null @@ -1,3 +0,0 @@ -x[ -0&c}-s+'^;Ax=Q_gUݏﵪxGTȺV¹UUE_IǴ;T1̠ -]W 2 2 |o5uꆬuI:(WKU躒rPAdAdA; vo_zNO{2rPA9 2 29}^O挞rwQdAdAnMA9(dAdA^W Z.+G^K`׵}`_Fk \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_153_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_153_5.dat deleted file mode 100644 index deea09d7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_153_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -x -@wfЬ`D"Ie<:au,7Of۳uP6~szs,jլcVZvߨm s^uHYu&l&l&_9 ;]^jsO;ܔrSn&l&l9yכzA rSnM6dM6dM6ރ@/$7ܔl&l&lzŽzACrSnM6dM6dOl7ᰚUuN֛FcPPS,l;HO \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_157_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_157_5.dat deleted file mode 100644 index 176e2a69..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_157_5.dat +++ /dev/null @@ -1 +0,0 @@ -x10Dާri( r* \~>C*vs]Ŝ_{W!zﶬ/)˙v V6V޻,f1Yb n^o>\O],,b,f1YyVgYYYb,f1+ʳ<˳<˳1YbŬ<+ʳ,,b,f1YyVgYYYb,fukys77}vmb=wsw)tW: \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_161_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_161_5.dat deleted file mode 100644 index 70d5fb00..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_161_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xI -@нDp@ o|m rHk㨤~co^Jzװ#5l¦S_92 [}ZÊ=T2ƀP2[cV衆CYf'-X9>v~usK5`e,2,2,2-///o_q}K\reYfeYf峖o+/,\feYfeYfٳexB.e2,2,̲g+l\r16,2,>ϰ=te&_4=tU}/>>>Or5/u>/g}g}gOsvO}/g}g}ٷGo-w{r_{g}g}g_n=n]4Nkβ_M8m?SF< \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_173_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_173_5.dat deleted file mode 100644 index f9a67413..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_173_5.dat +++ /dev/null @@ -1,4 +0,0 @@ -x[ -0&G1gD)[CzeDѷц=RN6FJm JqP}x s_}GFy; -[;]ek[QbTmy&0 L`̄Y?رw؛ fcVN9&0 L`ׄZ}0=F=F9ANL`&0 L`BzYfI=F9AN&0 L`&0 fIsr ' L`&0 L`<i͒"9AN&0 L`VaBX",Um> -=wZgBΜP !8 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_177_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_177_5.dat deleted file mode 100644 index b07c636b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_177_5.dat +++ /dev/null @@ -1,11 +0,0 @@ -xъ0~ܾح uO,"% :$Xui=ѶՃgƸ?Ώq.So~z׉W:=h1cq]Ƕi!r8Ɓ`+X -V jj;8ƁX+ -oV`+X -V?[1^h-ֳ5Z;rmS+ -oV`+X -V;Z,YMB+ -V`+X -VZeڦ}r\!W`+X -V`+3Km>SB+ -V`+X -Vc㊛{g;^Qq5ZUݮQL0+*&YDq*6 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_21_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_21_5.dat deleted file mode 100644 index 04f97ea6..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_21_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_25_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_25_5.dat deleted file mode 100644 index c20b59b1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_25_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xڝa -@!4 ޳ʢ ?,""j?n=GZy:DR \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_33_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_33_5.dat deleted file mode 100644 index 726d7fd7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_33_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_37_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_37_5.dat deleted file mode 100644 index 6d32ca6f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_37_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_41_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_41_5.dat deleted file mode 100644 index e07c6172..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_41_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xTA - 5?7XMtxҴx ?@7@~"N$Sɰ{+CA'r\Pp<ޏ- ͺ:S3sԉۻީz#qw > \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_45_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_45_5.dat deleted file mode 100644 index 5168a17f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_45_5.dat +++ /dev/null @@ -1 +0,0 @@ -xUA 5?U:N&Z":;4P1=bNvSGM1˛n'(κ J{Eѵs] ,sq \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_49_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_49_5.dat deleted file mode 100644 index 9f3f3cd7..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_49_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_53_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_53_5.dat deleted file mode 100644 index 449807ba..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_53_5.dat +++ /dev/null @@ -1 +0,0 @@ -xVA " zYf5ƐJC A;l\,dR. \(e_ еaNi5\żaLP(;2שjN6O u+l{y6od^ C[%  \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_57_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_57_5.dat deleted file mode 100644 index c7dd81f3..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_57_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xVA - 5?NlZHAbBZ0a Md`1z'"<Ր19nvͨ. )bݻ~;9Z#tB~ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_65_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_65_5.dat deleted file mode 100644 index ecd93806..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_65_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_69_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_69_5.dat deleted file mode 100644 index ead4edc1..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_69_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_73_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_73_5.dat deleted file mode 100644 index 00001176..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_73_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_77_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_77_5.dat deleted file mode 100644 index 1652cdc2..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_77_5.dat +++ /dev/null @@ -1 +0,0 @@ -xQ Cw#&C`T6ƹB(9 'ֆڢzk"hv.` cXB5[(F>71/34Ϊz^'[FyglgM>OTL4ϔ{&3Wy*ʧb*`<3;Vo0/s6n0ya[mcE \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_81_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_81_5.dat deleted file mode 100644 index 71215e95..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_81_5.dat +++ /dev/null @@ -1,3 +0,0 @@ -x - C~M?tzU4" }tMX2|.ɋ˙F\~m4Xu -ٔ, w:EƄ>X̯=_]g>>zמ/)5ךkkkZsXXY{ܮ}~mt:S#&;U#) \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_85_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_85_5.dat deleted file mode 100644 index 09cf0e28..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_85_5.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_89_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_89_5.dat deleted file mode 100644 index 5fff5306..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_89_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -x - 45enpQ Gcfl^^;;b5;`kU͹߮j`NsO=\[a6~nLD? !6uF%w*Ȭkf77SĆbÆXodw_—mbClNۙ ck&YVoܡ׷BעبAl6 Jjx \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_93_5.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_93_5.dat deleted file mode 100644 index ec4240bd..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_5/mask_93_5.dat +++ /dev/null @@ -1,2 +0,0 @@ -xK -0 D>&&  fP^8BY5s(imҮ=f3/wۧEyYQwf[} [90303ef̙3'3=,ͼwxDַ.,;s%g,,,=Rὓ7uKKTD<(n lYhV۹sޕyPEtyY]ns ;ss,!LkԅcbL12cX91Z#XEn#;svT~L~LR11vs.1111J1&؍Ń111J1&ƞg KLƪjlk{gڞ5K1/ǐ~,ac$ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_105_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_105_6.dat deleted file mode 100644 index a58fec74..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_105_6.dat +++ /dev/null @@ -1,3 +0,0 @@ -xQ -@ DskBZ#o)Sd}Gܷl쯯^)G]S4S?#BZ:+{sHKNiI!me1 -RWe9!``Uyˀu:檞U=w-oԺwB}cMK蹰{{=y蹰{{=y蹰{wScaoi'fyO=CyO=Cy[{S޻=;|v4}ϯ20 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_109_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_109_6.dat deleted file mode 100644 index be7b4749..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_109_6.dat +++ /dev/null @@ -1 +0,0 @@ -xA0 ~ρDBHCHV20nuol쯯˻=ۢs9[l'?7R" &2:7QqX_n ]$՚EIY*Lq0 0 0{LJз(s\ɳwX-7^ItIII$~?N0 0 0O'Itg7L$L-Iuzrfr M^'}(O~R]1YLĞu9Qӕ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_113_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_113_6.dat deleted file mode 100644 index 397f5274..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_113_6.dat +++ /dev/null @@ -1,3 +0,0 @@ -x E5NՉbF6on,m>gS9RWcǕ9&%1_cx= GR^w-z?dzv=,}ԥ?ǹژ:9m==@U䲉UXUXVe~by4Wi:e=ɼÆ$<>Ov'Cytaaaa~|'9liΣ<<<<Iæ<:<<<ٕWDzy:.z= ݓʯ sVöE=ll_k0_#vίmj \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_129_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_129_6.dat deleted file mode 100644 index b4695c3f..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_129_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_133_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_133_6.dat deleted file mode 100644 index 40911dc5..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_133_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_137_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_137_6.dat deleted file mode 100644 index 43ccb68c..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_137_6.dat +++ /dev/null @@ -1,2 +0,0 @@ -x E5?e^4fHp[1-e)UQV]UWN5o*8|۩W6bk?{f|>s֪r666rҟ=vڲWy -' -Ο;q tQE>U϶f곭xN]Tc(s❮7tAw`v`v`v`kvwfwt;];;;;;!ޙ;ao];l;;;÷| ʷ(3}l.?"މr};\}S-Aw<9;EV'ם \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_141_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_141_6.dat deleted file mode 100644 index 0340409a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_141_6.dat +++ /dev/null @@ -1,10 +0,0 @@ -xa F4/c]زȐ[=[E럓sm,fn/|kj\j?g[q(NOZc5SGGP[oMVָfvL<WóCaz6U~һ{`nݻdvVy~rZ"qk{>g$XKU}m\bjaGx,f1Yb]z̞^.5[?嬜r,f1YY>grVb,f1Y>g,rVmYb,f,|VY9Yb,f,|VY9+g1Ybً ̦M7>2{9z϶hm3l|9xټ#f#x6 -v%N' \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_161_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_161_6.dat deleted file mode 100644 index ecec68b1..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_161_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_165_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_165_6.dat deleted file mode 100644 index d641dfa3..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_165_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_169_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_169_6.dat deleted file mode 100644 index ae689723..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_169_6.dat +++ /dev/null @@ -1 +0,0 @@ -xJ0i9[Jɘk{1b!gnhHkS뉭-V?KIׁ1큏1ƣݎ/`/z)*=3ڏg6^k65CY>㵾+'{է_Vˊx-J<ӛܗr_>>i;rO}/g}g}ٿ}}xO}/g}g}ٷGo/{{r_>>o/z^#}g}ٿd'ʳ|QRNS3YڳZ'msEǷj5 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_173_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_173_6.dat deleted file mode 100644 index 95fa97c7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_173_6.dat +++ /dev/null @@ -1 +0,0 @@ -xa09MrM S*:a_-5hh_)uZ֭[loےsmKN{H?x`l#f9>ڟ[eЄώߓ ?^m*/Kmhy%v-nKlkKL`&& g5(gwxYܞa¬pVcZ[#O=SN9&0 L`DŽ 'tjj]QN9&0 L`sYRc@QN9 L`&0 L`"YRc\ ' r&0 L`EH9AN&0 L`& 7p6`|hms R5Ƙȉ k\X/ )g9 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_177_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_177_6.dat deleted file mode 100644 index e9f0476f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_177_6.dat +++ /dev/null @@ -1,14 +0,0 @@ -xn {ڤ*4v۴u1{f{_,,K9o 4ǵ7lniJiggir<-MG - - - -xuV+zRCr9+Gq6QWb"Qe"WL+ - XXXXX/|~j,nmuMۤ+ - XXXXXYa,X;M+ - XXXXXe)oӘf|5H늚7/D \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_21_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_21_6.dat deleted file mode 100644 index 6bd505b4..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_21_6.dat +++ /dev/null @@ -1 +0,0 @@ -xڝQ C9M{i]X1- C!D7 W ٜ&rD)~]<M 3(>{A aS \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_25_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_25_6.dat deleted file mode 100644 index d45083aa..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_25_6.dat +++ /dev/null @@ -1 +0,0 @@ -xڝQA 52)e+(XmZt*(ڹ;tJ<峂_ڤ3oڴ"̢azh}&qvSG֙,-J4}oS[}w \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_29_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_29_6.dat deleted file mode 100644 index 0408e224..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_29_6.dat +++ /dev/null @@ -1,3 +0,0 @@ -xRA -0 XcL(4EԈB -8Cܾ޳nM+lǝՆO1]&ڍ4UD-6-$:6dZ?ylf? 8?߲_ݏ`8G1`B`;+}&s]<iK'l'9%.7 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_65_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_65_6.dat deleted file mode 100644 index 550fc8fe..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_65_6.dat +++ /dev/null @@ -1 +0,0 @@ -xWQ i{KNLk?e$Qik41{`+!ڮM ? 1b8 .^wsnFj5EaQX|=w@2v<ŋŞ|4w\UXBQz+TTcBz/48,5`ȱ OV$ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_69_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_69_6.dat deleted file mode 100644 index a3e4fa0f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_69_6.dat +++ /dev/null @@ -1 +0,0 @@ -xK @dTh hLSSEq eY@<+*|窮 %>z*7e6QS`.>sE '%@[6@P0h aFxtpl2 Q-g1Nfeo^0FdT>N_OwG3ug {3<[Ժ b?'6^ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_73_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_73_6.dat deleted file mode 100644 index ab71b70a..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_73_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_77_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_77_6.dat deleted file mode 100644 index ad5a660e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_77_6.dat +++ /dev/null @@ -1 +0,0 @@ -x E۲iVa.FpSTY4q~z=:͒ 6m8:#0PضiDy:2Š'Zs&}滜\r0\ŚXw;iPȔL)Seԕ{hDu9LbJSS))gZ{e)qJdLw+#3-V0շljڠS-S 9=ݯ5PPq1M?g \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_81_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_81_6.dat deleted file mode 100644 index 28a6d075..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_81_6.dat +++ /dev/null @@ -1,3 +0,0 @@ -xQ0D9 rRLvk`0 ;i6\|_cc1huio#2}x*.Yt& -ְq/K;3ve̢ȊAH?`]5Kw!}{Zû߲W -yⷾ^_ykk^Kתb-bYSڸ'֜Nu#MfHSQ?|]IAiMyyuW \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_85_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_85_6.dat deleted file mode 100644 index d5403e49..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_85_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_89_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_89_6.dat deleted file mode 100644 index eeeb5d19..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_89_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_93_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_93_6.dat deleted file mode 100644 index 6ff38db6..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_93_6.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_97_6.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_97_6.dat deleted file mode 100644 index 3a2072ef..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_6/mask_97_6.dat +++ /dev/null @@ -1,2 +0,0 @@ -xa0sdFx[=4Hoj34&s}* a Vc&35arW^aLClzq,1x SQN]/Giu`&w%,%DY"Kt+HE'|R2(v1vqiqd,%D~%ػJj}ͺĺgY"Kd,+K -]Wt+sF/)].zN'`>1='#`+bl]Z \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_101_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_101_7.dat deleted file mode 100644 index 1f6bc512..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_101_7.dat +++ /dev/null @@ -1 +0,0 @@ -xQ C}rm`fjT#54'tfaЇo$cmOJ23c<6Xn0F ) \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_105_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_105_7.dat deleted file mode 100644 index 6b0cacfe..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_105_7.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0EFaMҙNPx)pQ_~|ñ(bF$.aoWGNPUǖM%{oHQUlִL^>+m#{{eo&Y2soM)gncO9sZ3wo+{=f.zޣ{{=zGcskCQϞp^&{^NʷU e5}EwGn+o \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_109_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_109_7.dat deleted file mode 100644 index 9875cbe8..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_109_7.dat +++ /dev/null @@ -1,2 +0,0 @@ -xA -0 D9Mr}* _x-d:"NJ-k"⨚d{ջגɬ|'rQ5+ s)c7-1nn햺qɔJtg^ʉw̘Ň-?*&Mm@ee5^ -c - -,b\13j4TZfŢo* - - -:Ut* - - -Xů0"%6ed 8rS NsUnk5XejުuVXg,l`u!hXZ\VlM|[ͬ0 0 0 #hF'c]i>Hataaa~<ÆzyqkO0 0 0 㪞Faaa)2˰fÒ%z8tO=3=3:cw -V$ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_121_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_121_7.dat deleted file mode 100644 index d5d577f7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_121_7.dat +++ /dev/null @@ -1,2 +0,0 @@ -x[ - Edi;^az,#6ƞ^rh&^amY9_غ5Cr6t^^WlEز~ɿ|MmmS}( ۰ ۰ ۰}mQ]ZVq]vѲ"M1fG, qBmtaaazeF3cxIDmtaaamný$n۰ ۰ ۰ ۏa[}`[yޖ޻)n<4K/Oslnlm/G \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_125_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_125_7.dat deleted file mode 100644 index f9ec0887..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_125_7.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_129_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_129_7.dat deleted file mode 100644 index 9bf51d52..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_129_7.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_133_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_133_7.dat deleted file mode 100644 index b643ffed..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_133_7.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_137_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_137_7.dat deleted file mode 100644 index 11d212bf..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_137_7.dat +++ /dev/null @@ -1,5 +0,0 @@ -x - F4/ c_ǂ+{SK<o[l -Ο -07։Vl;b7fMS;1LCvR|KMH -#Н(Sqd \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_141_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_141_7.dat deleted file mode 100644 index 98dffab0..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_141_7.dat +++ /dev/null @@ -1 +0,0 @@ -xA E= rITY@Ä0!|1tbG0ԗѤs2Z/oa\qzOnҋMntX"KmeM}CpPL^S0S0S0SL )ǔژY߾%b,Sl?zC)tLLLLI2zRXh@)tLLLLI1zbϷB)~0S0S0S07)|B)))3ՖL% tfwM*:~hZsnc$1UTtJg8OYE \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_145_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_145_7.dat deleted file mode 100644 index 4aa2bac1..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_145_7.dat +++ /dev/null @@ -1,2 +0,0 @@ -x - E5?W6Z-^2qbGX6(Ɖu"LbbGuμGk:HwA[jmHݞ3OkQ{l|TEm JfL?2"&)kRfc̉F,z=5X5X5X7F\pUs#5X5X5XFdYk!a ` ` `o8ct ]CC gM5[N%khZp?Iܣϲ^n$Y7AZP[ fȓ0 \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_149_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_149_7.dat deleted file mode 100644 index 809f0055..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_149_7.dat +++ /dev/null @@ -1 +0,0 @@ -xn {? uچ2G$ncFKb3֪tPc ̥7[?9:['9'*Ӗ Gah_/z+6XB>2qYJ0黏Bfa 1 9c7G Ol,^꽓3A:H  1A b0X4%٫#d>&C  1A b+g嬜,f1Yb|Y>+g嬜,f1Ylio.\Ɲo=gϙ-yk_TA \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_161_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_161_7.dat deleted file mode 100644 index 35ba8ff4..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_161_7.dat +++ /dev/null @@ -1 +0,0 @@ -xю y/皨E)Ʈ1~493,˵+ZT=ZeC.~iߏ&>,6e~,lW] 2\;׵2j"e,rXݵV(c쵵ZӖ18ީ/,'t.ee,cX2߱,_|yt|]t.cX2e,cy/ɗys.eLe,cX2lo|Z{+2]bl,cX2e{+֊[A2]X2e,c9CX;QIQH8R҈G"z,&;'o97%P8%6oǽ;]NWn[f7v \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_29_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_29_7.dat deleted file mode 100644 index e3d7391b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_29_7.dat +++ /dev/null @@ -1,2 +0,0 @@ -xR9 QpX$lŲf!I2pgSMZj"te0#ԛ`_1-cha~/Eh4"~ \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_37_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_37_7.dat deleted file mode 100644 index 87d9a1a9..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_37_7.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_41_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_41_7.dat deleted file mode 100644 index 8acec04f..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_41_7.dat +++ /dev/null @@ -1 +0,0 @@ -xTA 5[fDY(O^bR3/~t/L"7SQQ5j\Sib#Նȏ+ǣw#zx?㽧A-wu曑Y7$b.%A;wRoxG}? \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_45_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_45_7.dat deleted file mode 100644 index dbba31d0..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_45_7.dat and /dev/null differ diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_49_7.dat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_49_7.dat deleted file mode 100644 index be5dce8b..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/cache/mask_7/mask_49_7.dat +++ /dev/null @@ -1 +0,0 @@ -xV0khC-X.ukv o40T%96U5*sI{`_>S?}(:yTl{G&E\6}"AX XϬback'); - - // user data - $filename = $PNG_TEMP_DIR.'test'.md5($_REQUEST['data'].'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png'; - QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 2); - - } else { - - //default data - echo 'You can provide data in GET parameter: like that
'; - QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2); - - } - - //display generated file - echo '
'; - - //config form - echo '
- Data:   - ECC:   - Size:   -

'; - - // benchmark - QRtools::timeBenchmark(); - - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/phpqrcode.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/phpqrcode.php deleted file mode 100644 index ea8c08f9..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/phpqrcode.php +++ /dev/null @@ -1,3312 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -/* - * Version: 1.1.4 - * Build: 2010100721 - */ - - - -//---- qrconst.php ----------------------------- - - - - - -/* - * PHP QR Code encoder - * - * Common constants - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - // Encoding modes - - define('QR_MODE_NUL', -1); - define('QR_MODE_NUM', 0); - define('QR_MODE_AN', 1); - define('QR_MODE_8', 2); - define('QR_MODE_KANJI', 3); - define('QR_MODE_STRUCTURE', 4); - - // Levels of error correction. - - define('QR_ECLEVEL_L', 0); - define('QR_ECLEVEL_M', 1); - define('QR_ECLEVEL_Q', 2); - define('QR_ECLEVEL_H', 3); - - // Supported output formats - - define('QR_FORMAT_TEXT', 0); - define('QR_FORMAT_PNG', 1); - - class qrstr { - public static function set(&$srctab, $x, $y, $repl, $replLen = false) { - $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); - } - } - - - -//---- merged_config.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Config file, tuned-up for merged verion - */ - - define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there - define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true - define('QR_LOG_DIR', false); // default error logs dir - - define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code - define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly - define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false - - define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images - - - - -//---- qrtools.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Toolset, handy and debug utilites. - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRtools { - - //---------------------------------------------------------------------- - public static function binarize($frame) - { - $len = count($frame); - foreach ($frame as &$frameLine) { - - for($i=0; $i<$len; $i++) { - $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; - } - } - - return $frame; - } - - //---------------------------------------------------------------------- - public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037') - { - $barcode_array = array(); - - if (!is_array($mode)) - $mode = explode(',', $mode); - - $eccLevel = 'L'; - - if (count($mode) > 1) { - $eccLevel = $mode[1]; - } - - $qrTab = QRcode::text($code, false, $eccLevel); - $size = count($qrTab); - - $barcode_array['num_rows'] = $size; - $barcode_array['num_cols'] = $size; - $barcode_array['bcode'] = array(); - - foreach ($qrTab as $line) { - $arrAdd = array(); - foreach(str_split($line) as $char) - $arrAdd[] = ($char=='1')?1:0; - $barcode_array['bcode'][] = $arrAdd; - } - - return $barcode_array; - } - - //---------------------------------------------------------------------- - public static function clearCache() - { - self::$frames = array(); - } - - //---------------------------------------------------------------------- - public static function buildCache() - { - QRtools::markTime('before_build_cache'); - - $mask = new QRmask(); - for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) { - $frame = QRspec::newFrame($a); - if (QR_IMAGE) { - $fileName = QR_CACHE_DIR.'frame_'.$a.'.png'; - QRimage::png(self::binarize($frame), $fileName, 1, 0); - } - - $width = count($frame); - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - for ($maskNo=0; $maskNo<8; $maskNo++) - $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); - } - - QRtools::markTime('after_build_cache'); - } - - //---------------------------------------------------------------------- - public static function log($outfile, $err) - { - if (QR_LOG_DIR !== false) { - if ($err != '') { - if ($outfile !== false) { - file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } else { - file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } - } - } - } - - //---------------------------------------------------------------------- - public static function dumpMask($frame) - { - $width = count($frame); - for($y=0;$y<$width;$y++) { - for($x=0;$x<$width;$x++) { - echo ord($frame[$y][$x]).','; - } - } - } - - //---------------------------------------------------------------------- - public static function markTime($markerId) - { - list($usec, $sec) = explode(" ", microtime()); - $time = ((float)$usec + (float)$sec); - - if (!isset($GLOBALS['qr_time_bench'])) - $GLOBALS['qr_time_bench'] = array(); - - $GLOBALS['qr_time_bench'][$markerId] = $time; - } - - //---------------------------------------------------------------------- - public static function timeBenchmark() - { - self::markTime('finish'); - - $lastTime = 0; - $startTime = 0; - $p = 0; - - echo ' - - '; - - foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) { - if ($p > 0) { - echo ''; - } else { - $startTime = $thisTime; - } - - $p++; - $lastTime = $thisTime; - } - - echo ' - - -
BENCHMARK
till '.$markerId.': '.number_format($thisTime-$lastTime, 6).'s
TOTAL: '.number_format($lastTime-$startTime, 6).'s
'; - } - - } - - //########################################################################## - - QRtools::markTime('start'); - - - - -//---- qrspec.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * QR Code specifications - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QRSPEC_VERSION_MAX', 40); - define('QRSPEC_WIDTH_MAX', 177); - - define('QRCAP_WIDTH', 0); - define('QRCAP_WORDS', 1); - define('QRCAP_REMINDER', 2); - define('QRCAP_EC', 3); - - class QRspec { - - public static $capacity = array( - array( 0, 0, 0, array( 0, 0, 0, 0)), - array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 - array( 25, 44, 7, array( 10, 16, 22, 28)), - array( 29, 70, 7, array( 15, 26, 36, 44)), - array( 33, 100, 7, array( 20, 36, 52, 64)), - array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 - array( 41, 172, 7, array( 36, 64, 96, 112)), - array( 45, 196, 0, array( 40, 72, 108, 130)), - array( 49, 242, 0, array( 48, 88, 132, 156)), - array( 53, 292, 0, array( 60, 110, 160, 192)), - array( 57, 346, 0, array( 72, 130, 192, 224)), //10 - array( 61, 404, 0, array( 80, 150, 224, 264)), - array( 65, 466, 0, array( 96, 176, 260, 308)), - array( 69, 532, 0, array( 104, 198, 288, 352)), - array( 73, 581, 3, array( 120, 216, 320, 384)), - array( 77, 655, 3, array( 132, 240, 360, 432)), //15 - array( 81, 733, 3, array( 144, 280, 408, 480)), - array( 85, 815, 3, array( 168, 308, 448, 532)), - array( 89, 901, 3, array( 180, 338, 504, 588)), - array( 93, 991, 3, array( 196, 364, 546, 650)), - array( 97, 1085, 3, array( 224, 416, 600, 700)), //20 - array(101, 1156, 4, array( 224, 442, 644, 750)), - array(105, 1258, 4, array( 252, 476, 690, 816)), - array(109, 1364, 4, array( 270, 504, 750, 900)), - array(113, 1474, 4, array( 300, 560, 810, 960)), - array(117, 1588, 4, array( 312, 588, 870, 1050)), //25 - array(121, 1706, 4, array( 336, 644, 952, 1110)), - array(125, 1828, 4, array( 360, 700, 1020, 1200)), - array(129, 1921, 3, array( 390, 728, 1050, 1260)), - array(133, 2051, 3, array( 420, 784, 1140, 1350)), - array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30 - array(141, 2323, 3, array( 480, 868, 1290, 1530)), - array(145, 2465, 3, array( 510, 924, 1350, 1620)), - array(149, 2611, 3, array( 540, 980, 1440, 1710)), - array(153, 2761, 3, array( 570, 1036, 1530, 1800)), - array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35 - array(161, 3034, 0, array( 600, 1120, 1680, 1980)), - array(165, 3196, 0, array( 630, 1204, 1770, 2100)), - array(169, 3362, 0, array( 660, 1260, 1860, 2220)), - array(173, 3532, 0, array( 720, 1316, 1950, 2310)), - array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40 - ); - - //---------------------------------------------------------------------- - public static function getDataLength($version, $level) - { - return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getECCLength($version, $level) - { - return self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getWidth($version) - { - return self::$capacity[$version][QRCAP_WIDTH]; - } - - //---------------------------------------------------------------------- - public static function getRemainder($version) - { - return self::$capacity[$version][QRCAP_REMINDER]; - } - - //---------------------------------------------------------------------- - public static function getMinimumVersion($size, $level) - { - - for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) { - $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level]; - if($words >= $size) - return $i; - } - - return -1; - } - - //###################################################################### - - public static $lengthTableBits = array( - array(10, 12, 14), - array( 9, 11, 13), - array( 8, 16, 16), - array( 8, 10, 12) - ); - - //---------------------------------------------------------------------- - public static function lengthIndicator($mode, $version) - { - if ($mode == QR_MODE_STRUCTURE) - return 0; - - if ($version <= 9) { - $l = 0; - } else if ($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - return self::$lengthTableBits[$mode][$l]; - } - - //---------------------------------------------------------------------- - public static function maximumWords($mode, $version) - { - if($mode == QR_MODE_STRUCTURE) - return 3; - - if($version <= 9) { - $l = 0; - } else if($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - $bits = self::$lengthTableBits[$mode][$l]; - $words = (1 << $bits) - 1; - - if($mode == QR_MODE_KANJI) { - $words *= 2; // the number of bytes is required - } - - return $words; - } - - // Error correction code ----------------------------------------------- - // Table of the error correction code (Reed-Solomon block) - // See Table 12-16 (pp.30-36), JIS X0510:2004. - - public static $eccTable = array( - array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), - array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 - array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), - array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), - array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), - array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), - array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10 - array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), - array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), - array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), - array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), - array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15 - array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), - array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), - array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), - array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), - array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20 - array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), - array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), - array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), - array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), - array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25 - array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), - array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), - array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), - array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), - array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30 - array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), - array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), - array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), - array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), - array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35 - array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), - array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), - array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), - array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), - array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40 - ); - - //---------------------------------------------------------------------- - // CACHEABLE!!! - - public static function getEccSpec($version, $level, array &$spec) - { - if (count($spec) < 5) { - $spec = array(0,0,0,0,0); - } - - $b1 = self::$eccTable[$version][$level][0]; - $b2 = self::$eccTable[$version][$level][1]; - $data = self::getDataLength($version, $level); - $ecc = self::getECCLength($version, $level); - - if($b2 == 0) { - $spec[0] = $b1; - $spec[1] = (int)($data / $b1); - $spec[2] = (int)($ecc / $b1); - $spec[3] = 0; - $spec[4] = 0; - } else { - $spec[0] = $b1; - $spec[1] = (int)($data / ($b1 + $b2)); - $spec[2] = (int)($ecc / ($b1 + $b2)); - $spec[3] = $b2; - $spec[4] = $spec[1] + 1; - } - } - - // Alignment pattern --------------------------------------------------- - - // Positions of alignment patterns. - // This array includes only the second and the third position of the - // alignment patterns. Rest of them can be calculated from the distance - // between them. - - // See Table 1 in Appendix E (pp.71) of JIS X0510:2004. - - public static $alignmentPattern = array( - array( 0, 0), - array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 - array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 - array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15 - array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20 - array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25 - array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30 - array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35 - array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40 - ); - - - /** -------------------------------------------------------------------- - * Put an alignment marker. - * @param frame - * @param width - * @param ox,oy center coordinate of the pattern - */ - public static function putAlignmentMarker(array &$frame, $ox, $oy) - { - $finder = array( - "\xa1\xa1\xa1\xa1\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa0\xa1\xa0\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa1\xa1\xa1\xa1" - ); - - $yStart = $oy-2; - $xStart = $ox-2; - - for($y=0; $y<5; $y++) { - QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function putAlignmentPattern($version, &$frame, $width) - { - if($version < 2) - return; - - $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0]; - if($d < 0) { - $w = 2; - } else { - $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2); - } - - if($w * $w - 3 == 1) { - $x = self::$alignmentPattern[$version][0]; - $y = self::$alignmentPattern[$version][0]; - self::putAlignmentMarker($frame, $x, $y); - return; - } - - $cx = self::$alignmentPattern[$version][0]; - for($x=1; $x<$w - 1; $x++) { - self::putAlignmentMarker($frame, 6, $cx); - self::putAlignmentMarker($frame, $cx, 6); - $cx += $d; - } - - $cy = self::$alignmentPattern[$version][0]; - for($y=0; $y<$w-1; $y++) { - $cx = self::$alignmentPattern[$version][0]; - for($x=0; $x<$w-1; $x++) { - self::putAlignmentMarker($frame, $cx, $cy); - $cx += $d; - } - $cy += $d; - } - } - - // Version information pattern ----------------------------------------- - - // Version information pattern (BCH coded). - // See Table 1 in Appendix D (pp.68) of JIS X0510:2004. - - // size: [QRSPEC_VERSION_MAX - 6] - - public static $versionPattern = array( - 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, - 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, - 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, - 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, - 0x27541, 0x28c69 - ); - - //---------------------------------------------------------------------- - public static function getVersionPattern($version) - { - if($version < 7 || $version > QRSPEC_VERSION_MAX) - return 0; - - return self::$versionPattern[$version -7]; - } - - // Format information -------------------------------------------------- - // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib) - - public static $formatInfo = array( - array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), - array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), - array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), - array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) - ); - - public static function getFormatInfo($mask, $level) - { - if($mask < 0 || $mask > 7) - return 0; - - if($level < 0 || $level > 3) - return 0; - - return self::$formatInfo[$level][$mask]; - } - - // Frame --------------------------------------------------------------- - // Cache of initial frames. - - public static $frames = array(); - - /** -------------------------------------------------------------------- - * Put a finder pattern. - * @param frame - * @param width - * @param ox,oy upper-left coordinate of the pattern - */ - public static function putFinderPattern(&$frame, $ox, $oy) - { - $finder = array( - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" - ); - - for($y=0; $y<7; $y++) { - QRstr::set($frame, $ox, $oy+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function createFrame($version) - { - $width = self::$capacity[$version][QRCAP_WIDTH]; - $frameLine = str_repeat ("\0", $width); - $frame = array_fill(0, $width, $frameLine); - - // Finder pattern - self::putFinderPattern($frame, 0, 0); - self::putFinderPattern($frame, $width - 7, 0); - self::putFinderPattern($frame, 0, $width - 7); - - // Separator - $yOffset = $width - 7; - - for($y=0; $y<7; $y++) { - $frame[$y][7] = "\xc0"; - $frame[$y][$width - 8] = "\xc0"; - $frame[$yOffset][7] = "\xc0"; - $yOffset++; - } - - $setPattern = str_repeat("\xc0", 8); - - QRstr::set($frame, 0, 7, $setPattern); - QRstr::set($frame, $width-8, 7, $setPattern); - QRstr::set($frame, 0, $width - 8, $setPattern); - - // Format info - $setPattern = str_repeat("\x84", 9); - QRstr::set($frame, 0, 8, $setPattern); - QRstr::set($frame, $width - 8, 8, $setPattern, 8); - - $yOffset = $width - 8; - - for($y=0; $y<8; $y++,$yOffset++) { - $frame[$y][8] = "\x84"; - $frame[$yOffset][8] = "\x84"; - } - - // Timing pattern - - for($i=1; $i<$width-15; $i++) { - $frame[6][7+$i] = chr(0x90 | ($i & 1)); - $frame[7+$i][6] = chr(0x90 | ($i & 1)); - } - - // Alignment pattern - self::putAlignmentPattern($version, $frame, $width); - - // Version information - if($version >= 7) { - $vinf = self::getVersionPattern($version); - - $v = $vinf; - - for($x=0; $x<6; $x++) { - for($y=0; $y<3; $y++) { - $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - - $v = $vinf; - for($y=0; $y<6; $y++) { - for($x=0; $x<3; $x++) { - $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - } - - // and a little bit... - $frame[$width - 8][8] = "\x81"; - - return $frame; - } - - //---------------------------------------------------------------------- - public static function debug($frame, $binary_mode = false) - { - if ($binary_mode) { - - foreach ($frame as &$frameLine) { - $frameLine = join('  ', explode('0', $frameLine)); - $frameLine = join('██', explode('1', $frameLine)); - } - - ?> - -


        '; - echo join("
        ", $frame); - echo '






'; - - } else { - - foreach ($frame as &$frameLine) { - $frameLine = join(' ', explode("\xc0", $frameLine)); - $frameLine = join('', explode("\xc1", $frameLine)); - $frameLine = join(' ', explode("\xa0", $frameLine)); - $frameLine = join('', explode("\xa1", $frameLine)); - $frameLine = join('', explode("\x84", $frameLine)); //format 0 - $frameLine = join('', explode("\x85", $frameLine)); //format 1 - $frameLine = join('', explode("\x81", $frameLine)); //special bit - $frameLine = join(' ', explode("\x90", $frameLine)); //clock 0 - $frameLine = join('', explode("\x91", $frameLine)); //clock 1 - $frameLine = join(' ', explode("\x88", $frameLine)); //version - $frameLine = join('', explode("\x89", $frameLine)); //version - $frameLine = join('♦', explode("\x01", $frameLine)); - $frameLine = join('⋅', explode("\0", $frameLine)); - } - - ?> - - "; - echo join("
", $frame); - echo "
"; - - } - } - - //---------------------------------------------------------------------- - public static function serial($frame) - { - return gzcompress(join("\n", $frame), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - return explode("\n", gzuncompress($code)); - } - - //---------------------------------------------------------------------- - public static function newFrame($version) - { - if($version < 1 || $version > QRSPEC_VERSION_MAX) - return null; - - if(!isset(self::$frames[$version])) { - - $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - self::$frames[$version] = self::unserial(file_get_contents($fileName)); - } else { - self::$frames[$version] = self::createFrame($version); - file_put_contents($fileName, self::serial(self::$frames[$version])); - } - } else { - self::$frames[$version] = self::createFrame($version); - } - } - - if(is_null(self::$frames[$version])) - return null; - - return self::$frames[$version]; - } - - //---------------------------------------------------------------------- - public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; } - public static function rsBlockNum1($spec) { return $spec[0]; } - public static function rsDataCodes1($spec) { return $spec[1]; } - public static function rsEccCodes1($spec) { return $spec[2]; } - public static function rsBlockNum2($spec) { return $spec[3]; } - public static function rsDataCodes2($spec) { return $spec[4]; } - public static function rsEccCodes2($spec) { return $spec[2]; } - public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); } - public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; } - - } - - - -//---- qrimage.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Image output of code using GD2 - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QR_IMAGE', true); - - class QRimage { - - //---------------------------------------------------------------------- - public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/png"); - ImagePng($image); - } else { - if($saveandprint===TRUE){ - ImagePng($image, $filename); - header("Content-type: image/png"); - ImagePng($image); - }else{ - ImagePng($image, $filename); - } - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/jpeg"); - ImageJpeg($image, null, $q); - } else { - ImageJpeg($image, $filename, $q); - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) - { - $h = count($frame); - $w = strlen($frame[0]); - - $imgW = $w + 2*$outerFrame; - $imgH = $h + 2*$outerFrame; - - $base_image =ImageCreate($imgW, $imgH); - - $col[0] = ImageColorAllocate($base_image,255,255,255); - $col[1] = ImageColorAllocate($base_image,0,0,0); - - imagefill($base_image, 0, 0, $col[0]); - - for($y=0; $y<$h; $y++) { - for($x=0; $x<$w; $x++) { - if ($frame[$y][$x] == '1') { - ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); - } - } - } - - $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint); - ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH); - ImageDestroy($base_image); - - return $target_image; - } - } - - - -//---- qrinput.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Input encoding class - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('STRUCTURE_HEADER_BITS', 20); - define('MAX_STRUCTURED_SYMBOLS', 16); - - class QRinputItem { - - public $mode; - public $size; - public $data; - public $bstream; - - public function __construct($mode, $size, $data, $bstream = null) - { - $setData = array_slice($data, 0, $size); - - if (count($setData) < $size) { - $setData = array_merge($setData, array_fill(0,$size-count($setData),0)); - } - - if(!QRinput::check($mode, $size, $setData)) { - throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData)); - return null; - } - - $this->mode = $mode; - $this->size = $size; - $this->data = $setData; - $this->bstream = $bstream; - } - - //---------------------------------------------------------------------- - public function encodeModeNum($version) - { - try { - - $words = (int)($this->size / 3); - $bs = new QRbitstream(); - - $val = 0x1; - $bs->appendNum(4, $val); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (ord($this->data[$i*3 ]) - ord('0')) * 100; - $val += (ord($this->data[$i*3+1]) - ord('0')) * 10; - $val += (ord($this->data[$i*3+2]) - ord('0')); - $bs->appendNum(10, $val); - } - - if($this->size - $words * 3 == 1) { - $val = ord($this->data[$words*3]) - ord('0'); - $bs->appendNum(4, $val); - } else if($this->size - $words * 3 == 2) { - $val = (ord($this->data[$words*3 ]) - ord('0')) * 10; - $val += (ord($this->data[$words*3+1]) - ord('0')); - $bs->appendNum(7, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeAn($version) - { - try { - $words = (int)($this->size / 2); - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x02); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45; - $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1])); - - $bs->appendNum(11, $val); - } - - if($this->size & 1) { - $val = QRinput::lookAnTable(ord($this->data[$words * 2])); - $bs->appendNum(6, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeMode8($version) - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x4); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size); - - for($i=0; $i<$this->size; $i++) { - $bs->appendNum(8, ord($this->data[$i])); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeKanji($version) - { - try { - - $bs = new QRbitrtream(); - - $bs->appendNum(4, 0x8); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2)); - - for($i=0; $i<$this->size; $i+=2) { - $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]); - if($val <= 0x9ffc) { - $val -= 0x8140; - } else { - $val -= 0xc140; - } - - $h = ($val >> 8) * 0xc0; - $val = ($val & 0xff) + $h; - - $bs->appendNum(13, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeStructure() - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x03); - $bs->appendNum(4, ord($this->data[1]) - 1); - $bs->appendNum(4, ord($this->data[0]) - 1); - $bs->appendNum(8, ord($this->data[2])); - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function estimateBitStreamSizeOfEntry($version) - { - $bits = 0; - - if($version == 0) - $version = 1; - - switch($this->mode) { - case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break; - case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break; - case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break; - case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break; - case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS; - default: - return 0; - } - - $l = QRspec::lengthIndicator($this->mode, $version); - $m = 1 << $l; - $num = (int)(($this->size + $m - 1) / $m); - - $bits += $num * (4 + $l); - - return $bits; - } - - //---------------------------------------------------------------------- - public function encodeBitStream($version) - { - try { - - unset($this->bstream); - $words = QRspec::maximumWords($this->mode, $version); - - if($this->size > $words) { - - $st1 = new QRinputItem($this->mode, $words, $this->data); - $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words)); - - $st1->encodeBitStream($version); - $st2->encodeBitStream($version); - - $this->bstream = new QRbitstream(); - $this->bstream->append($st1->bstream); - $this->bstream->append($st2->bstream); - - unset($st1); - unset($st2); - - } else { - - $ret = 0; - - switch($this->mode) { - case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break; - case QR_MODE_AN: $ret = $this->encodeModeAn($version); break; - case QR_MODE_8: $ret = $this->encodeMode8($version); break; - case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break; - case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break; - - default: - break; - } - - if($ret < 0) - return -1; - } - - return $this->bstream->size(); - - } catch (Exception $e) { - return -1; - } - } - }; - - //########################################################################## - - class QRinput { - - public $items; - - private $version; - private $level; - - //---------------------------------------------------------------------- - public function __construct($version = 0, $level = QR_ECLEVEL_L) - { - if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) { - throw new Exception('Invalid version no'); - return NULL; - } - - $this->version = $version; - $this->level = $level; - } - - //---------------------------------------------------------------------- - public function getVersion() - { - return $this->version; - } - - //---------------------------------------------------------------------- - public function setVersion($version) - { - if($version < 0 || $version > QRSPEC_VERSION_MAX) { - throw new Exception('Invalid version no'); - return -1; - } - - $this->version = $version; - - return 0; - } - - //---------------------------------------------------------------------- - public function getErrorCorrectionLevel() - { - return $this->level; - } - - //---------------------------------------------------------------------- - public function setErrorCorrectionLevel($level) - { - if($level > QR_ECLEVEL_H) { - throw new Exception('Invalid ECLEVEL'); - return -1; - } - - $this->level = $level; - - return 0; - } - - //---------------------------------------------------------------------- - public function appendEntry(QRinputItem $entry) - { - $this->items[] = $entry; - } - - //---------------------------------------------------------------------- - public function append($mode, $size, $data) - { - try { - $entry = new QRinputItem($mode, $size, $data); - $this->items[] = $entry; - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - - public function insertStructuredAppendHeader($size, $index, $parity) - { - if( $size > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong size'); - } - - if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong index'); - } - - $buf = array($size, $index, $parity); - - try { - $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf); - array_unshift($this->items, $entry); - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function calcParity() - { - $parity = 0; - - foreach($this->items as $item) { - if($item->mode != QR_MODE_STRUCTURE) { - for($i=$item->size-1; $i>=0; $i--) { - $parity ^= $item->data[$i]; - } - } - } - - return $parity; - } - - //---------------------------------------------------------------------- - public static function checkModeNum($size, $data) - { - for($i=0; $i<$size; $i++) { - if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){ - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeNum($size) - { - $w = (int)$size / 3; - $bits = $w * 10; - - switch($size - $w * 3) { - case 1: - $bits += 4; - break; - case 2: - $bits += 7; - break; - default: - break; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static $anTable = array( - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - ); - - //---------------------------------------------------------------------- - public static function lookAnTable($c) - { - return (($c > 127)?-1:self::$anTable[$c]); - } - - //---------------------------------------------------------------------- - public static function checkModeAn($size, $data) - { - for($i=0; $i<$size; $i++) { - if (self::lookAnTable(ord($data[$i])) == -1) { - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeAn($size) - { - $w = (int)($size / 2); - $bits = $w * 11; - - if($size & 1) { - $bits += 6; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static function estimateBitsMode8($size) - { - return $size * 8; - } - - //---------------------------------------------------------------------- - public function estimateBitsModeKanji($size) - { - return (int)(($size / 2) * 13); - } - - //---------------------------------------------------------------------- - public static function checkModeKanji($size, $data) - { - if($size & 1) - return false; - - for($i=0; $i<$size; $i+=2) { - $val = (ord($data[$i]) << 8) | ord($data[$i+1]); - if( $val < 0x8140 - || ($val > 0x9ffc && $val < 0xe040) - || $val > 0xebbf) { - return false; - } - } - - return true; - } - - /*********************************************************************** - * Validation - **********************************************************************/ - - public static function check($mode, $size, $data) - { - if($size <= 0) - return false; - - switch($mode) { - case QR_MODE_NUM: return self::checkModeNum($size, $data); break; - case QR_MODE_AN: return self::checkModeAn($size, $data); break; - case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break; - case QR_MODE_8: return true; break; - case QR_MODE_STRUCTURE: return true; break; - - default: - break; - } - - return false; - } - - - //---------------------------------------------------------------------- - public function estimateBitStreamSize($version) - { - $bits = 0; - - foreach($this->items as $item) { - $bits += $item->estimateBitStreamSizeOfEntry($version); - } - - return $bits; - } - - //---------------------------------------------------------------------- - public function estimateVersion() - { - $version = 0; - $prev = 0; - do { - $prev = $version; - $bits = $this->estimateBitStreamSize($prev); - $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if ($version < 0) { - return -1; - } - } while ($version > $prev); - - return $version; - } - - //---------------------------------------------------------------------- - public static function lengthOfCode($mode, $version, $bits) - { - $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version); - switch($mode) { - case QR_MODE_NUM: - $chunks = (int)($payload / 10); - $remain = $payload - $chunks * 10; - $size = $chunks * 3; - if($remain >= 7) { - $size += 2; - } else if($remain >= 4) { - $size += 1; - } - break; - case QR_MODE_AN: - $chunks = (int)($payload / 11); - $remain = $payload - $chunks * 11; - $size = $chunks * 2; - if($remain >= 6) - $size++; - break; - case QR_MODE_8: - $size = (int)($payload / 8); - break; - case QR_MODE_KANJI: - $size = (int)(($payload / 13) * 2); - break; - case QR_MODE_STRUCTURE: - $size = (int)($payload / 8); - break; - default: - $size = 0; - break; - } - - $maxsize = QRspec::maximumWords($mode, $version); - if($size < 0) $size = 0; - if($size > $maxsize) $size = $maxsize; - - return $size; - } - - //---------------------------------------------------------------------- - public function createBitStream() - { - $total = 0; - - foreach($this->items as $item) { - $bits = $item->encodeBitStream($this->version); - - if($bits < 0) - return -1; - - $total += $bits; - } - - return $total; - } - - //---------------------------------------------------------------------- - public function convertData() - { - $ver = $this->estimateVersion(); - if($ver > $this->getVersion()) { - $this->setVersion($ver); - } - - for(;;) { - $bits = $this->createBitStream(); - - if($bits < 0) - return -1; - - $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if($ver < 0) { - throw new Exception('WRONG VERSION'); - return -1; - } else if($ver > $this->getVersion()) { - $this->setVersion($ver); - } else { - break; - } - } - - return 0; - } - - //---------------------------------------------------------------------- - public function appendPaddingBit(&$bstream) - { - $bits = $bstream->size(); - $maxwords = QRspec::getDataLength($this->version, $this->level); - $maxbits = $maxwords * 8; - - if ($maxbits == $bits) { - return 0; - } - - if ($maxbits - $bits < 5) { - return $bstream->appendNum($maxbits - $bits, 0); - } - - $bits += 4; - $words = (int)(($bits + 7) / 8); - - $padding = new QRbitstream(); - $ret = $padding->appendNum($words * 8 - $bits + 4, 0); - - if($ret < 0) - return $ret; - - $padlen = $maxwords - $words; - - if($padlen > 0) { - - $padbuf = array(); - for($i=0; $i<$padlen; $i++) { - $padbuf[$i] = ($i&1)?0x11:0xec; - } - - $ret = $padding->appendBytes($padlen, $padbuf); - - if($ret < 0) - return $ret; - - } - - $ret = $bstream->append($padding); - - return $ret; - } - - //---------------------------------------------------------------------- - public function mergeBitStream() - { - if($this->convertData() < 0) { - return null; - } - - $bstream = new QRbitstream(); - - foreach($this->items as $item) { - $ret = $bstream->append($item->bstream); - if($ret < 0) { - return null; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getBitStream() - { - - $bstream = $this->mergeBitStream(); - - if($bstream == null) { - return null; - } - - $ret = $this->appendPaddingBit($bstream); - if($ret < 0) { - return null; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getByteStream() - { - $bstream = $this->getBitStream(); - if($bstream == null) { - return null; - } - - return $bstream->toByte(); - } - } - - - - - - -//---- qrbitstream.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Bitstream class - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRbitstream { - - public $data = array(); - - //---------------------------------------------------------------------- - public function size() - { - return count($this->data); - } - - //---------------------------------------------------------------------- - public function allocate($setLength) - { - $this->data = array_fill(0, $setLength, 0); - return 0; - } - - //---------------------------------------------------------------------- - public static function newFromNum($bits, $num) - { - $bstream = new QRbitstream(); - $bstream->allocate($bits); - - $mask = 1 << ($bits - 1); - for($i=0; $i<$bits; $i++) { - if($num & $mask) { - $bstream->data[$i] = 1; - } else { - $bstream->data[$i] = 0; - } - $mask = $mask >> 1; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public static function newFromBytes($size, $data) - { - $bstream = new QRbitstream(); - $bstream->allocate($size * 8); - $p=0; - - for($i=0; $i<$size; $i++) { - $mask = 0x80; - for($j=0; $j<8; $j++) { - if($data[$i] & $mask) { - $bstream->data[$p] = 1; - } else { - $bstream->data[$p] = 0; - } - $p++; - $mask = $mask >> 1; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function append(QRbitstream $arg) - { - if (is_null($arg)) { - return -1; - } - - if($arg->size() == 0) { - return 0; - } - - if($this->size() == 0) { - $this->data = $arg->data; - return 0; - } - - $this->data = array_values(array_merge($this->data, $arg->data)); - - return 0; - } - - //---------------------------------------------------------------------- - public function appendNum($bits, $num) - { - if ($bits == 0) - return 0; - - $b = QRbitstream::newFromNum($bits, $num); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function appendBytes($size, $data) - { - if ($size == 0) - return 0; - - $b = QRbitstream::newFromBytes($size, $data); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function toByte() - { - - $size = $this->size(); - - if($size == 0) { - return array(); - } - - $data = array_fill(0, (int)(($size + 7) / 8), 0); - $bytes = (int)($size / 8); - - $p = 0; - - for($i=0; $i<$bytes; $i++) { - $v = 0; - for($j=0; $j<8; $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$i] = $v; - } - - if($size & 7) { - $v = 0; - for($j=0; $j<($size & 7); $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$bytes] = $v; - } - - return $data; - } - - } - - - - -//---- qrsplit.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Input splitting classes - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - class QRsplit { - - public $dataStr = ''; - public $input; - public $modeHint; - - //---------------------------------------------------------------------- - public function __construct($dataStr, $input, $modeHint) - { - $this->dataStr = $dataStr; - $this->input = $input; - $this->modeHint = $modeHint; - } - - //---------------------------------------------------------------------- - public static function isdigitat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); - } - - //---------------------------------------------------------------------- - public static function isalnumat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return (QRinput::lookAnTable(ord($str[$pos])) >= 0); - } - - //---------------------------------------------------------------------- - public function identifyMode($pos) - { - if ($pos >= strlen($this->dataStr)) - return QR_MODE_NUL; - - $c = $this->dataStr[$pos]; - - if(self::isdigitat($this->dataStr, $pos)) { - return QR_MODE_NUM; - } else if(self::isalnumat($this->dataStr, $pos)) { - return QR_MODE_AN; - } else if($this->modeHint == QR_MODE_KANJI) { - - if ($pos+1 < strlen($this->dataStr)) - { - $d = $this->dataStr[$pos+1]; - $word = (ord($c) << 8) | ord($d); - if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) { - return QR_MODE_KANJI; - } - } - } - - return QR_MODE_8; - } - - //---------------------------------------------------------------------- - public function eatNum() - { - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - while(self::isdigitat($this->dataStr, $p)) { - $p++; - } - - $run = $p; - $mode = $this->identifyMode($p); - - if($mode == QR_MODE_8) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - if($mode == QR_MODE_AN) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsModeAn(1) // + 4 + la - - QRinput::estimateBitsModeAn($run + 1);// - 4 - la - if($dif > 0) { - return $this->eatAn(); - } - } - - $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatAn() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - - while(self::isalnumat($this->dataStr, $p)) { - if(self::isdigitat($this->dataStr, $p)) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - - $dif = QRinput::estimateBitsModeAn($p) // + 4 + la - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsModeAn($q); // - 4 - la - - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - - if(!self::isalnumat($this->dataStr, $p)) { - $dif = QRinput::estimateBitsModeAn($run) + 4 + $la - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - - $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatKanji() - { - $p = 0; - - while($this->identifyMode($p) == QR_MODE_KANJI) { - $p += 2; - } - - $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eat8() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 1; - $dataStrLen = strlen($this->dataStr); - - while($p < $dataStrLen) { - - $mode = $this->identifyMode($p); - if($mode == QR_MODE_KANJI) { - break; - } - if($mode == QR_MODE_NUM) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else if($mode == QR_MODE_AN) { - $q = $p; - while(self::isalnumat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeAn($q - $p) + 4 + $la - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr)); - - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function splitString() - { - while (strlen($this->dataStr) > 0) - { - if($this->dataStr == '') - return 0; - - $mode = $this->identifyMode(0); - - switch ($mode) { - case QR_MODE_NUM: $length = $this->eatNum(); break; - case QR_MODE_AN: $length = $this->eatAn(); break; - case QR_MODE_KANJI: - if ($hint == QR_MODE_KANJI) - $length = $this->eatKanji(); - else $length = $this->eat8(); - break; - default: $length = $this->eat8(); break; - - } - - if($length == 0) return 0; - if($length < 0) return -1; - - $this->dataStr = substr($this->dataStr, $length); - } - } - - //---------------------------------------------------------------------- - public function toUpper() - { - $stringLen = strlen($this->dataStr); - $p = 0; - - while ($p<$stringLen) { - $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint); - if($mode == QR_MODE_KANJI) { - $p += 2; - } else { - if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) { - $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); - } - $p++; - } - } - - return $this->dataStr; - } - - //---------------------------------------------------------------------- - public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true) - { - if(is_null($string) || $string == '\0' || $string == '') { - throw new Exception('empty string!!!'); - } - - $split = new QRsplit($string, $input, $modeHint); - - if(!$casesensitive) - $split->toUpper(); - - return $split->splitString(); - } - } - - - -//---- qrrscode.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Reed-Solomon error correction support - * - * Copyright (C) 2002, 2003, 2004, 2006 Phil Karn, KA9Q - * (libfec is released under the GNU Lesser General Public License.) - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsItem { - - public $mm; // Bits per symbol - public $nn; // Symbols per block (= (1<= $this->nn) { - $x -= $this->nn; - $x = ($x >> $this->mm) + ($x & $this->nn); - } - - return $x; - } - - //---------------------------------------------------------------------- - public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - // Common code for intializing a Reed-Solomon control block (char or int symbols) - // Copyright 2004 Phil Karn, KA9Q - // May be used under the terms of the GNU Lesser General Public License (LGPL) - - $rs = null; - - // Check parameter ranges - if($symsize < 0 || $symsize > 8) return $rs; - if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs; - if($prim <= 0 || $prim >= (1<<$symsize)) return $rs; - if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values! - if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding - - $rs = new QRrsItem(); - $rs->mm = $symsize; - $rs->nn = (1<<$symsize)-1; - $rs->pad = $pad; - - $rs->alpha_to = array_fill(0, $rs->nn+1, 0); - $rs->index_of = array_fill(0, $rs->nn+1, 0); - - // PHP style macro replacement ;) - $NN =& $rs->nn; - $A0 =& $NN; - - // Generate Galois field lookup tables - $rs->index_of[0] = $A0; // log(zero) = -inf - $rs->alpha_to[$A0] = 0; // alpha**-inf = 0 - $sr = 1; - - for($i=0; $i<$rs->nn; $i++) { - $rs->index_of[$sr] = $i; - $rs->alpha_to[$i] = $sr; - $sr <<= 1; - if($sr & (1<<$symsize)) { - $sr ^= $gfpoly; - } - $sr &= $rs->nn; - } - - if($sr != 1){ - // field generator polynomial is not primitive! - $rs = NULL; - return $rs; - } - - /* Form RS code generator polynomial from its roots */ - $rs->genpoly = array_fill(0, $nroots+1, 0); - - $rs->fcr = $fcr; - $rs->prim = $prim; - $rs->nroots = $nroots; - $rs->gfpoly = $gfpoly; - - /* Find prim-th root of 1, used in decoding */ - for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn) - ; // intentional empty-body loop! - - $rs->iprim = (int)($iprim / $prim); - $rs->genpoly[0] = 1; - - for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { - $rs->genpoly[$i+1] = 1; - - // Multiply rs->genpoly[] by @**(root + x) - for ($j = $i; $j > 0; $j--) { - if ($rs->genpoly[$j] != 0) { - $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)]; - } else { - $rs->genpoly[$j] = $rs->genpoly[$j-1]; - } - } - // rs->genpoly[0] can never be zero - $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)]; - } - - // convert rs->genpoly[] to index form for quicker encoding - for ($i = 0; $i <= $nroots; $i++) - $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]]; - - return $rs; - } - - //---------------------------------------------------------------------- - public function encode_rs_char($data, &$parity) - { - $MM =& $this->mm; - $NN =& $this->nn; - $ALPHA_TO =& $this->alpha_to; - $INDEX_OF =& $this->index_of; - $GENPOLY =& $this->genpoly; - $NROOTS =& $this->nroots; - $FCR =& $this->fcr; - $PRIM =& $this->prim; - $IPRIM =& $this->iprim; - $PAD =& $this->pad; - $A0 =& $NN; - - $parity = array_fill(0, $NROOTS, 0); - - for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) { - - $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; - if($feedback != $A0) { - // feedback term is non-zero - - // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must - // always be for the polynomials constructed by init_rs() - $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback); - - for($j=1;$j<$NROOTS;$j++) { - $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])]; - } - } - - // Shift - array_shift($parity); - if($feedback != $A0) { - array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]); - } else { - array_push($parity, 0); - } - } - } - } - - //########################################################################## - - class QRrs { - - public static $items = array(); - - //---------------------------------------------------------------------- - public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - foreach(self::$items as $rs) { - if($rs->pad != $pad) continue; - if($rs->nroots != $nroots) continue; - if($rs->mm != $symsize) continue; - if($rs->gfpoly != $gfpoly) continue; - if($rs->fcr != $fcr) continue; - if($rs->prim != $prim) continue; - - return $rs; - } - - $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); - array_unshift(self::$items, $rs); - - return $rs; - } - } - - - -//---- qrmask.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Masking - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('N1', 3); - define('N2', 3); - define('N3', 40); - define('N4', 10); - - class QRmask { - - public $runLength = array(); - - //---------------------------------------------------------------------- - public function __construct() - { - $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); - } - - //---------------------------------------------------------------------- - public function writeFormatInformation($width, &$frame, $mask, $level) - { - $blacks = 0; - $format = QRspec::getFormatInfo($mask, $level); - - for($i=0; $i<8; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[8][$width - 1 - $i] = chr($v); - if($i < 6) { - $frame[$i][8] = chr($v); - } else { - $frame[$i + 1][8] = chr($v); - } - $format = $format >> 1; - } - - for($i=0; $i<7; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[$width - 7 + $i][8] = chr($v); - if($i == 0) { - $frame[8][7] = chr($v); - } else { - $frame[8][6 - $i] = chr($v); - } - - $format = $format >> 1; - } - - return $blacks; - } - - //---------------------------------------------------------------------- - public function mask0($x, $y) { return ($x+$y)&1; } - public function mask1($x, $y) { return ($y&1); } - public function mask2($x, $y) { return ($x%3); } - public function mask3($x, $y) { return ($x+$y)%3; } - public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; } - public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; } - public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; } - public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; } - - //---------------------------------------------------------------------- - private function generateMaskNo($maskNo, $width, $frame) - { - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if(ord($frame[$y][$x]) & 0x80) { - $bitMask[$y][$x] = 0; - } else { - $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); - $bitMask[$y][$x] = ($maskFunc == 0)?1:0; - } - - } - } - - return $bitMask; - } - - //---------------------------------------------------------------------- - public static function serial($bitFrame) - { - $codeArr = array(); - - foreach ($bitFrame as $line) - $codeArr[] = join('', $line); - - return gzcompress(join("\n", $codeArr), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - $codeArr = array(); - - $codeLines = explode("\n", gzuncompress($code)); - foreach ($codeLines as $line) - $codeArr[] = str_split($line); - - return $codeArr; - } - - //---------------------------------------------------------------------- - public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false) - { - $b = 0; - $bitMask = array(); - - $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - $bitMask = self::unserial(file_get_contents($fileName)); - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo)) - mkdir(QR_CACHE_DIR.'mask_'.$maskNo); - file_put_contents($fileName, self::serial($bitMask)); - } - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - } - - if ($maskGenOnly) - return; - - $d = $s; - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if($bitMask[$y][$x] == 1) { - $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]); - } - $b += (int)(ord($d[$y][$x]) & 1); - } - } - - return $b; - } - - //---------------------------------------------------------------------- - public function makeMask($width, $frame, $maskNo, $level) - { - $masked = array_fill(0, $width, str_repeat("\0", $width)); - $this->makeMaskNo($maskNo, $width, $frame, $masked); - $this->writeFormatInformation($width, $masked, $maskNo, $level); - - return $masked; - } - - //---------------------------------------------------------------------- - public function calcN1N3($length) - { - $demerit = 0; - - for($i=0; $i<$length; $i++) { - - if($this->runLength[$i] >= 5) { - $demerit += (N1 + ($this->runLength[$i] - 5)); - } - if($i & 1) { - if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) { - $fact = (int)($this->runLength[$i] / 3); - if(($this->runLength[$i-2] == $fact) && - ($this->runLength[$i-1] == $fact) && - ($this->runLength[$i+1] == $fact) && - ($this->runLength[$i+2] == $fact)) { - if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) { - $demerit += N3; - } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) { - $demerit += N3; - } - } - } - } - } - return $demerit; - } - - //---------------------------------------------------------------------- - public function evaluateSymbol($width, $frame) - { - $head = 0; - $demerit = 0; - - for($y=0; $y<$width; $y++) { - $head = 0; - $this->runLength[0] = 1; - - $frameY = $frame[$y]; - - if ($y>0) - $frameYM = $frame[$y-1]; - - for($x=0; $x<$width; $x++) { - if(($x > 0) && ($y > 0)) { - $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); - $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); - - if(($b22 | ($w22 ^ 1))&1) { - $demerit += N2; - } - } - if(($x == 0) && (ord($frameY[$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($x > 0) { - if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - for($x=0; $x<$width; $x++) { - $head = 0; - $this->runLength[0] = 1; - - for($y=0; $y<$width; $y++) { - if($y == 0 && (ord($frame[$y][$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($y > 0) { - if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - return $demerit; - } - - - //---------------------------------------------------------------------- - public function mask($width, $frame, $level) - { - $minDemerit = PHP_INT_MAX; - $bestMaskNum = 0; - $bestMask = array(); - - $checked_masks = array(0,1,2,3,4,5,6,7); - - if (QR_FIND_FROM_RANDOM !== false) { - - $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9); - for ($i = 0; $i < $howManuOut; $i++) { - $remPos = rand (0, count($checked_masks)-1); - unset($checked_masks[$remPos]); - $checked_masks = array_values($checked_masks); - } - - } - - $bestMask = $frame; - - foreach($checked_masks as $i) { - $mask = array_fill(0, $width, str_repeat("\0", $width)); - - $demerit = 0; - $blacks = 0; - $blacks = $this->makeMaskNo($i, $width, $frame, $mask); - $blacks += $this->writeFormatInformation($width, $mask, $i, $level); - $blacks = (int)(100 * $blacks / ($width * $width)); - $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); - $demerit += $this->evaluateSymbol($width, $mask); - - if($demerit < $minDemerit) { - $minDemerit = $demerit; - $bestMask = $mask; - $bestMaskNum = $i; - } - } - - return $bestMask; - } - - //---------------------------------------------------------------------- - } - - - - -//---- qrencode.php ----------------------------- - - - - -/* - * PHP QR Code encoder - * - * Main encoder classes. - * - * Based on libqrencode C library distributed under LGPL 2.1 - * Copyright (C) 2006, 2007, 2008, 2009 Kentaro Fukuchi - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsblock { - public $dataLength; - public $data = array(); - public $eccLength; - public $ecc = array(); - - public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs) - { - $rs->encode_rs_char($data, $ecc); - - $this->dataLength = $dl; - $this->data = $data; - $this->eccLength = $el; - $this->ecc = $ecc; - } - }; - - //########################################################################## - - class QRrawcode { - public $version; - public $datacode = array(); - public $ecccode = array(); - public $blocks; - public $rsblocks = array(); //of RSblock - public $count; - public $dataLength; - public $eccLength; - public $b1; - - //---------------------------------------------------------------------- - public function __construct(QRinput $input) - { - $spec = array(0,0,0,0,0); - - $this->datacode = $input->getByteStream(); - if(is_null($this->datacode)) { - throw new Exception('null imput string'); - } - - QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec); - - $this->version = $input->getVersion(); - $this->b1 = QRspec::rsBlockNum1($spec); - $this->dataLength = QRspec::rsDataLength($spec); - $this->eccLength = QRspec::rsEccLength($spec); - $this->ecccode = array_fill(0, $this->eccLength, 0); - $this->blocks = QRspec::rsBlockNum($spec); - - $ret = $this->init($spec); - if($ret < 0) { - throw new Exception('block alloc error'); - return null; - } - - $this->count = 0; - } - - //---------------------------------------------------------------------- - public function init(array $spec) - { - $dl = QRspec::rsDataCodes1($spec); - $el = QRspec::rsEccCodes1($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - - $blockNo = 0; - $dataPos = 0; - $eccPos = 0; - for($i=0; $iecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - if(QRspec::rsBlockNum2($spec) == 0) - return 0; - - $dl = QRspec::rsDataCodes2($spec); - $el = QRspec::rsEccCodes2($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - if($rs == NULL) return -1; - - for($i=0; $iecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - return 0; - } - - //---------------------------------------------------------------------- - public function getCode() - { - $ret; - - if($this->count < $this->dataLength) { - $row = $this->count % $this->blocks; - $col = $this->count / $this->blocks; - if($col >= $this->rsblocks[0]->dataLength) { - $row += $this->b1; - } - $ret = $this->rsblocks[$row]->data[$col]; - } else if($this->count < $this->dataLength + $this->eccLength) { - $row = ($this->count - $this->dataLength) % $this->blocks; - $col = ($this->count - $this->dataLength) / $this->blocks; - $ret = $this->rsblocks[$row]->ecc[$col]; - } else { - return 0; - } - $this->count++; - - return $ret; - } - } - - //########################################################################## - - class QRcode { - - public $version; - public $width; - public $data; - - //---------------------------------------------------------------------- - public function encodeMask(QRinput $input, $mask) - { - if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) { - throw new Exception('wrong version'); - } - if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) { - throw new Exception('wrong level'); - } - - $raw = new QRrawcode($input); - - QRtools::markTime('after_raw'); - - $version = $raw->version; - $width = QRspec::getWidth($version); - $frame = QRspec::newFrame($version); - - $filler = new FrameFiller($width, $frame); - if(is_null($filler)) { - return NULL; - } - - // inteleaved data and ecc codes - for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) { - $code = $raw->getCode(); - $bit = 0x80; - for($j=0; $j<8; $j++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); - $bit = $bit >> 1; - } - } - - QRtools::markTime('after_filler'); - - unset($raw); - - // remainder bits - $j = QRspec::getRemainder($version); - for($i=0; $i<$j; $i++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02); - } - - $frame = $filler->frame; - unset($filler); - - - // masking - $maskObj = new QRmask(); - if($mask < 0) { - - if (QR_FIND_BEST_MASK) { - $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel()); - } else { - $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel()); - } - } else { - $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel()); - } - - if($masked == NULL) { - return NULL; - } - - QRtools::markTime('after_mask'); - - $this->version = $version; - $this->width = $width; - $this->data = $masked; - - return $this; - } - - //---------------------------------------------------------------------- - public function encodeInput(QRinput $input) - { - return $this->encodeMask($input, -1); - } - - //---------------------------------------------------------------------- - public function encodeString8bit($string, $version, $level) - { - if(string == NULL) { - throw new Exception('empty string!'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string)); - if($ret < 0) { - unset($input); - return NULL; - } - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public function encodeString($string, $version, $level, $hint, $casesensitive) - { - - if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) { - throw new Exception('bad hint'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive); - if($ret < 0) { - return NULL; - } - - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodePNG($text, $outfile, $saveandprint=false); - } - - //---------------------------------------------------------------------- - public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encode($text, $outfile); - } - - //---------------------------------------------------------------------- - public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodeRAW($text, $outfile); - } - } - - //########################################################################## - - class FrameFiller { - - public $width; - public $frame; - public $x; - public $y; - public $dir; - public $bit; - - //---------------------------------------------------------------------- - public function __construct($width, &$frame) - { - $this->width = $width; - $this->frame = $frame; - $this->x = $width - 1; - $this->y = $width - 1; - $this->dir = -1; - $this->bit = -1; - } - - //---------------------------------------------------------------------- - public function setFrameAt($at, $val) - { - $this->frame[$at['y']][$at['x']] = chr($val); - } - - //---------------------------------------------------------------------- - public function getFrameAt($at) - { - return ord($this->frame[$at['y']][$at['x']]); - } - - //---------------------------------------------------------------------- - public function next() - { - do { - - if($this->bit == -1) { - $this->bit = 0; - return array('x'=>$this->x, 'y'=>$this->y); - } - - $x = $this->x; - $y = $this->y; - $w = $this->width; - - if($this->bit == 0) { - $x--; - $this->bit++; - } else { - $x++; - $y += $this->dir; - $this->bit--; - } - - if($this->dir < 0) { - if($y < 0) { - $y = 0; - $x -= 2; - $this->dir = 1; - if($x == 6) { - $x--; - $y = 9; - } - } - } else { - if($y == $w) { - $y = $w - 1; - $x -= 2; - $this->dir = -1; - if($x == 6) { - $x--; - $y -= 8; - } - } - } - if($x < 0 || $y < 0) return null; - - $this->x = $x; - $this->y = $y; - - } while(ord($this->frame[$y][$x]) & 0x80); - - return array('x'=>$x, 'y'=>$y); - } - - } ; - - //########################################################################## - - class QRencode { - - public $casesensitive = true; - public $eightbit = false; - - public $version = 0; - public $size = 3; - public $margin = 4; - - public $structured = 0; // not supported yet - - public $level = QR_ECLEVEL_L; - public $hint = QR_MODE_8; - - //---------------------------------------------------------------------- - public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = new QRencode(); - $enc->size = $size; - $enc->margin = $margin; - - switch ($level.'') { - case '0': - case '1': - case '2': - case '3': - $enc->level = $level; - break; - case 'l': - case 'L': - $enc->level = QR_ECLEVEL_L; - break; - case 'm': - case 'M': - $enc->level = QR_ECLEVEL_M; - break; - case 'q': - case 'Q': - $enc->level = QR_ECLEVEL_Q; - break; - case 'h': - case 'H': - $enc->level = QR_ECLEVEL_H; - break; - } - - return $enc; - } - - //---------------------------------------------------------------------- - public function encodeRAW($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - return $code->data; - } - - //---------------------------------------------------------------------- - public function encode($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - QRtools::markTime('after_encode'); - - if ($outfile!== false) { - file_put_contents($outfile, join("\n", QRtools::binarize($code->data))); - } else { - return QRtools::binarize($code->data); - } - } - - //---------------------------------------------------------------------- - public function encodePNG($intext, $outfile = false,$saveandprint=false) - { - try { - - ob_start(); - $tab = $this->encode($intext); - $err = ob_get_contents(); - ob_end_clean(); - - if ($err != '') - QRtools::log($outfile, $err); - - $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin)); - - QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint); - - } catch (Exception $e) { - - QRtools::log($outfile, $e->getMessage()); - - } - } - } - - diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrbitstream.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrbitstream.php deleted file mode 100644 index c8d11661..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrbitstream.php +++ /dev/null @@ -1,180 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRbitstream { - - public $data = array(); - - //---------------------------------------------------------------------- - public function size() - { - return count($this->data); - } - - //---------------------------------------------------------------------- - public function allocate($setLength) - { - $this->data = array_fill(0, $setLength, 0); - return 0; - } - - //---------------------------------------------------------------------- - public static function newFromNum($bits, $num) - { - $bstream = new QRbitstream(); - $bstream->allocate($bits); - - $mask = 1 << ($bits - 1); - for($i=0; $i<$bits; $i++) { - if($num & $mask) { - $bstream->data[$i] = 1; - } else { - $bstream->data[$i] = 0; - } - $mask = $mask >> 1; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public static function newFromBytes($size, $data) - { - $bstream = new QRbitstream(); - $bstream->allocate($size * 8); - $p=0; - - for($i=0; $i<$size; $i++) { - $mask = 0x80; - for($j=0; $j<8; $j++) { - if($data[$i] & $mask) { - $bstream->data[$p] = 1; - } else { - $bstream->data[$p] = 0; - } - $p++; - $mask = $mask >> 1; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function append(QRbitstream $arg) - { - if (is_null($arg)) { - return -1; - } - - if($arg->size() == 0) { - return 0; - } - - if($this->size() == 0) { - $this->data = $arg->data; - return 0; - } - - $this->data = array_values(array_merge($this->data, $arg->data)); - - return 0; - } - - //---------------------------------------------------------------------- - public function appendNum($bits, $num) - { - if ($bits == 0) - return 0; - - $b = QRbitstream::newFromNum($bits, $num); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function appendBytes($size, $data) - { - if ($size == 0) - return 0; - - $b = QRbitstream::newFromBytes($size, $data); - - if(is_null($b)) - return -1; - - $ret = $this->append($b); - unset($b); - - return $ret; - } - - //---------------------------------------------------------------------- - public function toByte() - { - - $size = $this->size(); - - if($size == 0) { - return array(); - } - - $data = array_fill(0, (int)(($size + 7) / 8), 0); - $bytes = (int)($size / 8); - - $p = 0; - - for($i=0; $i<$bytes; $i++) { - $v = 0; - for($j=0; $j<8; $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$i] = $v; - } - - if($size & 7) { - $v = 0; - for($j=0; $j<($size & 7); $j++) { - $v = $v << 1; - $v |= $this->data[$p]; - $p++; - } - $data[$bytes] = $v; - } - - return $data; - } - - } diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrconfig.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrconfig.php deleted file mode 100644 index 62e7f974..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrconfig.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - // Encoding modes - - define('QR_MODE_NUL', -1); - define('QR_MODE_NUM', 0); - define('QR_MODE_AN', 1); - define('QR_MODE_8', 2); - define('QR_MODE_KANJI', 3); - define('QR_MODE_STRUCTURE', 4); - - // Levels of error correction. - - define('QR_ECLEVEL_L', 0); - define('QR_ECLEVEL_M', 1); - define('QR_ECLEVEL_Q', 2); - define('QR_ECLEVEL_H', 3); - - // Supported output formats - - define('QR_FORMAT_TEXT', 0); - define('QR_FORMAT_PNG', 1); - - class qrstr { - public static function set(&$srctab, $x, $y, $repl, $replLen = false) { - $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); - } - } \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrencode.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrencode.php deleted file mode 100644 index fc909fa7..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrencode.php +++ /dev/null @@ -1,502 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsblock { - public $dataLength; - public $data = array(); - public $eccLength; - public $ecc = array(); - - public function __construct($dl, $data, $el, &$ecc, QRrsItem $rs) - { - $rs->encode_rs_char($data, $ecc); - - $this->dataLength = $dl; - $this->data = $data; - $this->eccLength = $el; - $this->ecc = $ecc; - } - }; - - //########################################################################## - - class QRrawcode { - public $version; - public $datacode = array(); - public $ecccode = array(); - public $blocks; - public $rsblocks = array(); //of RSblock - public $count; - public $dataLength; - public $eccLength; - public $b1; - - //---------------------------------------------------------------------- - public function __construct(QRinput $input) - { - $spec = array(0,0,0,0,0); - - $this->datacode = $input->getByteStream(); - if(is_null($this->datacode)) { - throw new Exception('null imput string'); - } - - QRspec::getEccSpec($input->getVersion(), $input->getErrorCorrectionLevel(), $spec); - - $this->version = $input->getVersion(); - $this->b1 = QRspec::rsBlockNum1($spec); - $this->dataLength = QRspec::rsDataLength($spec); - $this->eccLength = QRspec::rsEccLength($spec); - $this->ecccode = array_fill(0, $this->eccLength, 0); - $this->blocks = QRspec::rsBlockNum($spec); - - $ret = $this->init($spec); - if($ret < 0) { - throw new Exception('block alloc error'); - return null; - } - - $this->count = 0; - } - - //---------------------------------------------------------------------- - public function init(array $spec) - { - $dl = QRspec::rsDataCodes1($spec); - $el = QRspec::rsEccCodes1($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - - $blockNo = 0; - $dataPos = 0; - $eccPos = 0; - for($i=0; $iecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - if(QRspec::rsBlockNum2($spec) == 0) - return 0; - - $dl = QRspec::rsDataCodes2($spec); - $el = QRspec::rsEccCodes2($spec); - $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); - - if($rs == NULL) return -1; - - for($i=0; $iecccode,$eccPos); - $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs); - $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); - - $dataPos += $dl; - $eccPos += $el; - $blockNo++; - } - - return 0; - } - - //---------------------------------------------------------------------- - public function getCode() - { - $ret; - - if($this->count < $this->dataLength) { - $row = $this->count % $this->blocks; - $col = $this->count / $this->blocks; - if($col >= $this->rsblocks[0]->dataLength) { - $row += $this->b1; - } - $ret = $this->rsblocks[$row]->data[$col]; - } else if($this->count < $this->dataLength + $this->eccLength) { - $row = ($this->count - $this->dataLength) % $this->blocks; - $col = ($this->count - $this->dataLength) / $this->blocks; - $ret = $this->rsblocks[$row]->ecc[$col]; - } else { - return 0; - } - $this->count++; - - return $ret; - } - } - - //########################################################################## - - class QRcode { - - public $version; - public $width; - public $data; - - //---------------------------------------------------------------------- - public function encodeMask(QRinput $input, $mask) - { - if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) { - throw new Exception('wrong version'); - } - if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) { - throw new Exception('wrong level'); - } - - $raw = new QRrawcode($input); - - QRtools::markTime('after_raw'); - - $version = $raw->version; - $width = QRspec::getWidth($version); - $frame = QRspec::newFrame($version); - - $filler = new FrameFiller($width, $frame); - if(is_null($filler)) { - return NULL; - } - - // inteleaved data and ecc codes - for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) { - $code = $raw->getCode(); - $bit = 0x80; - for($j=0; $j<8; $j++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); - $bit = $bit >> 1; - } - } - - QRtools::markTime('after_filler'); - - unset($raw); - - // remainder bits - $j = QRspec::getRemainder($version); - for($i=0; $i<$j; $i++) { - $addr = $filler->next(); - $filler->setFrameAt($addr, 0x02); - } - - $frame = $filler->frame; - unset($filler); - - - // masking - $maskObj = new QRmask(); - if($mask < 0) { - - if (QR_FIND_BEST_MASK) { - $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel()); - } else { - $masked = $maskObj->makeMask($width, $frame, (intval(QR_DEFAULT_MASK) % 8), $input->getErrorCorrectionLevel()); - } - } else { - $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel()); - } - - if($masked == NULL) { - return NULL; - } - - QRtools::markTime('after_mask'); - - $this->version = $version; - $this->width = $width; - $this->data = $masked; - - return $this; - } - - //---------------------------------------------------------------------- - public function encodeInput(QRinput $input) - { - return $this->encodeMask($input, -1); - } - - //---------------------------------------------------------------------- - public function encodeString8bit($string, $version, $level) - { - if(string == NULL) { - throw new Exception('empty string!'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string)); - if($ret < 0) { - unset($input); - return NULL; - } - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public function encodeString($string, $version, $level, $hint, $casesensitive) - { - - if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) { - throw new Exception('bad hint'); - return NULL; - } - - $input = new QRinput($version, $level); - if($input == NULL) return NULL; - - $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive); - if($ret < 0) { - return NULL; - } - - return $this->encodeInput($input); - } - - //---------------------------------------------------------------------- - public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodePNG($text, $outfile, $saveandprint=false); - } - - //---------------------------------------------------------------------- - public static function text($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encode($text, $outfile); - } - - //---------------------------------------------------------------------- - public static function raw($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = QRencode::factory($level, $size, $margin); - return $enc->encodeRAW($text, $outfile); - } - } - - //########################################################################## - - class FrameFiller { - - public $width; - public $frame; - public $x; - public $y; - public $dir; - public $bit; - - //---------------------------------------------------------------------- - public function __construct($width, &$frame) - { - $this->width = $width; - $this->frame = $frame; - $this->x = $width - 1; - $this->y = $width - 1; - $this->dir = -1; - $this->bit = -1; - } - - //---------------------------------------------------------------------- - public function setFrameAt($at, $val) - { - $this->frame[$at['y']][$at['x']] = chr($val); - } - - //---------------------------------------------------------------------- - public function getFrameAt($at) - { - return ord($this->frame[$at['y']][$at['x']]); - } - - //---------------------------------------------------------------------- - public function next() - { - do { - - if($this->bit == -1) { - $this->bit = 0; - return array('x'=>$this->x, 'y'=>$this->y); - } - - $x = $this->x; - $y = $this->y; - $w = $this->width; - - if($this->bit == 0) { - $x--; - $this->bit++; - } else { - $x++; - $y += $this->dir; - $this->bit--; - } - - if($this->dir < 0) { - if($y < 0) { - $y = 0; - $x -= 2; - $this->dir = 1; - if($x == 6) { - $x--; - $y = 9; - } - } - } else { - if($y == $w) { - $y = $w - 1; - $x -= 2; - $this->dir = -1; - if($x == 6) { - $x--; - $y -= 8; - } - } - } - if($x < 0 || $y < 0) return null; - - $this->x = $x; - $this->y = $y; - - } while(ord($this->frame[$y][$x]) & 0x80); - - return array('x'=>$x, 'y'=>$y); - } - - } ; - - //########################################################################## - - class QRencode { - - public $casesensitive = true; - public $eightbit = false; - - public $version = 0; - public $size = 3; - public $margin = 4; - - public $structured = 0; // not supported yet - - public $level = QR_ECLEVEL_L; - public $hint = QR_MODE_8; - - //---------------------------------------------------------------------- - public static function factory($level = QR_ECLEVEL_L, $size = 3, $margin = 4) - { - $enc = new QRencode(); - $enc->size = $size; - $enc->margin = $margin; - - switch ($level.'') { - case '0': - case '1': - case '2': - case '3': - $enc->level = $level; - break; - case 'l': - case 'L': - $enc->level = QR_ECLEVEL_L; - break; - case 'm': - case 'M': - $enc->level = QR_ECLEVEL_M; - break; - case 'q': - case 'Q': - $enc->level = QR_ECLEVEL_Q; - break; - case 'h': - case 'H': - $enc->level = QR_ECLEVEL_H; - break; - } - - return $enc; - } - - //---------------------------------------------------------------------- - public function encodeRAW($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - return $code->data; - } - - //---------------------------------------------------------------------- - public function encode($intext, $outfile = false) - { - $code = new QRcode(); - - if($this->eightbit) { - $code->encodeString8bit($intext, $this->version, $this->level); - } else { - $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive); - } - - QRtools::markTime('after_encode'); - - if ($outfile!== false) { - file_put_contents($outfile, join("\n", QRtools::binarize($code->data))); - } else { - return QRtools::binarize($code->data); - } - } - - //---------------------------------------------------------------------- - public function encodePNG($intext, $outfile = false,$saveandprint=false) - { - try { - - ob_start(); - $tab = $this->encode($intext); - $err = ob_get_contents(); - ob_end_clean(); - - if ($err != '') - QRtools::log($outfile, $err); - - $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin)); - - QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint); - - } catch (Exception $e) { - - QRtools::log($outfile, $e->getMessage()); - - } - } - } diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrimage.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrimage.php deleted file mode 100644 index 2175c5eb..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrimage.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QR_IMAGE', true); - - class QRimage { - - //---------------------------------------------------------------------- - public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/png"); - ImagePng($image); - } else { - if($saveandprint===TRUE){ - ImagePng($image, $filename); - header("Content-type: image/png"); - ImagePng($image); - }else{ - ImagePng($image, $filename); - } - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - public static function jpg($frame, $filename = false, $pixelPerPoint = 8, $outerFrame = 4, $q = 85) - { - $image = self::image($frame, $pixelPerPoint, $outerFrame); - - if ($filename === false) { - Header("Content-type: image/jpeg"); - ImageJpeg($image, null, $q); - } else { - ImageJpeg($image, $filename, $q); - } - - ImageDestroy($image); - } - - //---------------------------------------------------------------------- - private static function image($frame, $pixelPerPoint = 4, $outerFrame = 4) - { - $h = count($frame); - $w = strlen($frame[0]); - - $imgW = $w + 2*$outerFrame; - $imgH = $h + 2*$outerFrame; - - $base_image =ImageCreate($imgW, $imgH); - - $col[0] = ImageColorAllocate($base_image,255,255,255); - $col[1] = ImageColorAllocate($base_image,0,0,0); - - imagefill($base_image, 0, 0, $col[0]); - - for($y=0; $y<$h; $y++) { - for($x=0; $x<$w; $x++) { - if ($frame[$y][$x] == '1') { - ImageSetPixel($base_image,$x+$outerFrame,$y+$outerFrame,$col[1]); - } - } - } - - $target_image =ImageCreate($imgW * $pixelPerPoint, $imgH * $pixelPerPoint); - ImageCopyResized($target_image, $base_image, 0, 0, 0, 0, $imgW * $pixelPerPoint, $imgH * $pixelPerPoint, $imgW, $imgH); - ImageDestroy($base_image); - - return $target_image; - } - } \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrinput.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrinput.php deleted file mode 100644 index c65f91a2..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrinput.php +++ /dev/null @@ -1,729 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('STRUCTURE_HEADER_BITS', 20); - define('MAX_STRUCTURED_SYMBOLS', 16); - - class QRinputItem { - - public $mode; - public $size; - public $data; - public $bstream; - - public function __construct($mode, $size, $data, $bstream = null) - { - $setData = array_slice($data, 0, $size); - - if (count($setData) < $size) { - $setData = array_merge($setData, array_fill(0,$size-count($setData),0)); - } - - if(!QRinput::check($mode, $size, $setData)) { - throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData)); - return null; - } - - $this->mode = $mode; - $this->size = $size; - $this->data = $setData; - $this->bstream = $bstream; - } - - //---------------------------------------------------------------------- - public function encodeModeNum($version) - { - try { - - $words = (int)($this->size / 3); - $bs = new QRbitstream(); - - $val = 0x1; - $bs->appendNum(4, $val); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (ord($this->data[$i*3 ]) - ord('0')) * 100; - $val += (ord($this->data[$i*3+1]) - ord('0')) * 10; - $val += (ord($this->data[$i*3+2]) - ord('0')); - $bs->appendNum(10, $val); - } - - if($this->size - $words * 3 == 1) { - $val = ord($this->data[$words*3]) - ord('0'); - $bs->appendNum(4, $val); - } else if($this->size - $words * 3 == 2) { - $val = (ord($this->data[$words*3 ]) - ord('0')) * 10; - $val += (ord($this->data[$words*3+1]) - ord('0')); - $bs->appendNum(7, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeAn($version) - { - try { - $words = (int)($this->size / 2); - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x02); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size); - - for($i=0; $i<$words; $i++) { - $val = (int)QRinput::lookAnTable(ord($this->data[$i*2 ])) * 45; - $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1])); - - $bs->appendNum(11, $val); - } - - if($this->size & 1) { - $val = QRinput::lookAnTable(ord($this->data[$words * 2])); - $bs->appendNum(6, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeMode8($version) - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x4); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size); - - for($i=0; $i<$this->size; $i++) { - $bs->appendNum(8, ord($this->data[$i])); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeKanji($version) - { - try { - - $bs = new QRbitrtream(); - - $bs->appendNum(4, 0x8); - $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2)); - - for($i=0; $i<$this->size; $i+=2) { - $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]); - if($val <= 0x9ffc) { - $val -= 0x8140; - } else { - $val -= 0xc140; - } - - $h = ($val >> 8) * 0xc0; - $val = ($val & 0xff) + $h; - - $bs->appendNum(13, $val); - } - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function encodeModeStructure() - { - try { - $bs = new QRbitstream(); - - $bs->appendNum(4, 0x03); - $bs->appendNum(4, ord($this->data[1]) - 1); - $bs->appendNum(4, ord($this->data[0]) - 1); - $bs->appendNum(8, ord($this->data[2])); - - $this->bstream = $bs; - return 0; - - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function estimateBitStreamSizeOfEntry($version) - { - $bits = 0; - - if($version == 0) - $version = 1; - - switch($this->mode) { - case QR_MODE_NUM: $bits = QRinput::estimateBitsModeNum($this->size); break; - case QR_MODE_AN: $bits = QRinput::estimateBitsModeAn($this->size); break; - case QR_MODE_8: $bits = QRinput::estimateBitsMode8($this->size); break; - case QR_MODE_KANJI: $bits = QRinput::estimateBitsModeKanji($this->size);break; - case QR_MODE_STRUCTURE: return STRUCTURE_HEADER_BITS; - default: - return 0; - } - - $l = QRspec::lengthIndicator($this->mode, $version); - $m = 1 << $l; - $num = (int)(($this->size + $m - 1) / $m); - - $bits += $num * (4 + $l); - - return $bits; - } - - //---------------------------------------------------------------------- - public function encodeBitStream($version) - { - try { - - unset($this->bstream); - $words = QRspec::maximumWords($this->mode, $version); - - if($this->size > $words) { - - $st1 = new QRinputItem($this->mode, $words, $this->data); - $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words)); - - $st1->encodeBitStream($version); - $st2->encodeBitStream($version); - - $this->bstream = new QRbitstream(); - $this->bstream->append($st1->bstream); - $this->bstream->append($st2->bstream); - - unset($st1); - unset($st2); - - } else { - - $ret = 0; - - switch($this->mode) { - case QR_MODE_NUM: $ret = $this->encodeModeNum($version); break; - case QR_MODE_AN: $ret = $this->encodeModeAn($version); break; - case QR_MODE_8: $ret = $this->encodeMode8($version); break; - case QR_MODE_KANJI: $ret = $this->encodeModeKanji($version);break; - case QR_MODE_STRUCTURE: $ret = $this->encodeModeStructure(); break; - - default: - break; - } - - if($ret < 0) - return -1; - } - - return $this->bstream->size(); - - } catch (Exception $e) { - return -1; - } - } - }; - - //########################################################################## - - class QRinput { - - public $items; - - private $version; - private $level; - - //---------------------------------------------------------------------- - public function __construct($version = 0, $level = QR_ECLEVEL_L) - { - if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) { - throw new Exception('Invalid version no'); - return NULL; - } - - $this->version = $version; - $this->level = $level; - } - - //---------------------------------------------------------------------- - public function getVersion() - { - return $this->version; - } - - //---------------------------------------------------------------------- - public function setVersion($version) - { - if($version < 0 || $version > QRSPEC_VERSION_MAX) { - throw new Exception('Invalid version no'); - return -1; - } - - $this->version = $version; - - return 0; - } - - //---------------------------------------------------------------------- - public function getErrorCorrectionLevel() - { - return $this->level; - } - - //---------------------------------------------------------------------- - public function setErrorCorrectionLevel($level) - { - if($level > QR_ECLEVEL_H) { - throw new Exception('Invalid ECLEVEL'); - return -1; - } - - $this->level = $level; - - return 0; - } - - //---------------------------------------------------------------------- - public function appendEntry(QRinputItem $entry) - { - $this->items[] = $entry; - } - - //---------------------------------------------------------------------- - public function append($mode, $size, $data) - { - try { - $entry = new QRinputItem($mode, $size, $data); - $this->items[] = $entry; - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - - public function insertStructuredAppendHeader($size, $index, $parity) - { - if( $size > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong size'); - } - - if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) { - throw new Exception('insertStructuredAppendHeader wrong index'); - } - - $buf = array($size, $index, $parity); - - try { - $entry = new QRinputItem(QR_MODE_STRUCTURE, 3, buf); - array_unshift($this->items, $entry); - return 0; - } catch (Exception $e) { - return -1; - } - } - - //---------------------------------------------------------------------- - public function calcParity() - { - $parity = 0; - - foreach($this->items as $item) { - if($item->mode != QR_MODE_STRUCTURE) { - for($i=$item->size-1; $i>=0; $i--) { - $parity ^= $item->data[$i]; - } - } - } - - return $parity; - } - - //---------------------------------------------------------------------- - public static function checkModeNum($size, $data) - { - for($i=0; $i<$size; $i++) { - if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){ - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeNum($size) - { - $w = (int)$size / 3; - $bits = $w * 10; - - switch($size - $w * 3) { - case 1: - $bits += 4; - break; - case 2: - $bits += 7; - break; - default: - break; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static $anTable = array( - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 - ); - - //---------------------------------------------------------------------- - public static function lookAnTable($c) - { - return (($c > 127)?-1:self::$anTable[$c]); - } - - //---------------------------------------------------------------------- - public static function checkModeAn($size, $data) - { - for($i=0; $i<$size; $i++) { - if (self::lookAnTable(ord($data[$i])) == -1) { - return false; - } - } - - return true; - } - - //---------------------------------------------------------------------- - public static function estimateBitsModeAn($size) - { - $w = (int)($size / 2); - $bits = $w * 11; - - if($size & 1) { - $bits += 6; - } - - return $bits; - } - - //---------------------------------------------------------------------- - public static function estimateBitsMode8($size) - { - return $size * 8; - } - - //---------------------------------------------------------------------- - public function estimateBitsModeKanji($size) - { - return (int)(($size / 2) * 13); - } - - //---------------------------------------------------------------------- - public static function checkModeKanji($size, $data) - { - if($size & 1) - return false; - - for($i=0; $i<$size; $i+=2) { - $val = (ord($data[$i]) << 8) | ord($data[$i+1]); - if( $val < 0x8140 - || ($val > 0x9ffc && $val < 0xe040) - || $val > 0xebbf) { - return false; - } - } - - return true; - } - - /*********************************************************************** - * Validation - **********************************************************************/ - - public static function check($mode, $size, $data) - { - if($size <= 0) - return false; - - switch($mode) { - case QR_MODE_NUM: return self::checkModeNum($size, $data); break; - case QR_MODE_AN: return self::checkModeAn($size, $data); break; - case QR_MODE_KANJI: return self::checkModeKanji($size, $data); break; - case QR_MODE_8: return true; break; - case QR_MODE_STRUCTURE: return true; break; - - default: - break; - } - - return false; - } - - - //---------------------------------------------------------------------- - public function estimateBitStreamSize($version) - { - $bits = 0; - - foreach($this->items as $item) { - $bits += $item->estimateBitStreamSizeOfEntry($version); - } - - return $bits; - } - - //---------------------------------------------------------------------- - public function estimateVersion() - { - $version = 0; - $prev = 0; - do { - $prev = $version; - $bits = $this->estimateBitStreamSize($prev); - $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if ($version < 0) { - return -1; - } - } while ($version > $prev); - - return $version; - } - - //---------------------------------------------------------------------- - public static function lengthOfCode($mode, $version, $bits) - { - $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version); - switch($mode) { - case QR_MODE_NUM: - $chunks = (int)($payload / 10); - $remain = $payload - $chunks * 10; - $size = $chunks * 3; - if($remain >= 7) { - $size += 2; - } else if($remain >= 4) { - $size += 1; - } - break; - case QR_MODE_AN: - $chunks = (int)($payload / 11); - $remain = $payload - $chunks * 11; - $size = $chunks * 2; - if($remain >= 6) - $size++; - break; - case QR_MODE_8: - $size = (int)($payload / 8); - break; - case QR_MODE_KANJI: - $size = (int)(($payload / 13) * 2); - break; - case QR_MODE_STRUCTURE: - $size = (int)($payload / 8); - break; - default: - $size = 0; - break; - } - - $maxsize = QRspec::maximumWords($mode, $version); - if($size < 0) $size = 0; - if($size > $maxsize) $size = $maxsize; - - return $size; - } - - //---------------------------------------------------------------------- - public function createBitStream() - { - $total = 0; - - foreach($this->items as $item) { - $bits = $item->encodeBitStream($this->version); - - if($bits < 0) - return -1; - - $total += $bits; - } - - return $total; - } - - //---------------------------------------------------------------------- - public function convertData() - { - $ver = $this->estimateVersion(); - if($ver > $this->getVersion()) { - $this->setVersion($ver); - } - - for(;;) { - $bits = $this->createBitStream(); - - if($bits < 0) - return -1; - - $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level); - if($ver < 0) { - throw new Exception('WRONG VERSION'); - return -1; - } else if($ver > $this->getVersion()) { - $this->setVersion($ver); - } else { - break; - } - } - - return 0; - } - - //---------------------------------------------------------------------- - public function appendPaddingBit(&$bstream) - { - $bits = $bstream->size(); - $maxwords = QRspec::getDataLength($this->version, $this->level); - $maxbits = $maxwords * 8; - - if ($maxbits == $bits) { - return 0; - } - - if ($maxbits - $bits < 5) { - return $bstream->appendNum($maxbits - $bits, 0); - } - - $bits += 4; - $words = (int)(($bits + 7) / 8); - - $padding = new QRbitstream(); - $ret = $padding->appendNum($words * 8 - $bits + 4, 0); - - if($ret < 0) - return $ret; - - $padlen = $maxwords - $words; - - if($padlen > 0) { - - $padbuf = array(); - for($i=0; $i<$padlen; $i++) { - $padbuf[$i] = ($i&1)?0x11:0xec; - } - - $ret = $padding->appendBytes($padlen, $padbuf); - - if($ret < 0) - return $ret; - - } - - $ret = $bstream->append($padding); - - return $ret; - } - - //---------------------------------------------------------------------- - public function mergeBitStream() - { - if($this->convertData() < 0) { - return null; - } - - $bstream = new QRbitstream(); - - foreach($this->items as $item) { - $ret = $bstream->append($item->bstream); - if($ret < 0) { - return null; - } - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getBitStream() - { - - $bstream = $this->mergeBitStream(); - - if($bstream == null) { - return null; - } - - $ret = $this->appendPaddingBit($bstream); - if($ret < 0) { - return null; - } - - return $bstream; - } - - //---------------------------------------------------------------------- - public function getByteStream() - { - $bstream = $this->getBitStream(); - if($bstream == null) { - return null; - } - - return $bstream->toByte(); - } - } - - - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrlib.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrlib.php deleted file mode 100644 index 43059b9d..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrlib.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - $QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR; - - // Required libs - - include $QR_BASEDIR."qrconst.php"; - include $QR_BASEDIR."qrconfig.php"; - include $QR_BASEDIR."qrtools.php"; - include $QR_BASEDIR."qrspec.php"; - include $QR_BASEDIR."qrimage.php"; - include $QR_BASEDIR."qrinput.php"; - include $QR_BASEDIR."qrbitstream.php"; - include $QR_BASEDIR."qrsplit.php"; - include $QR_BASEDIR."qrrscode.php"; - include $QR_BASEDIR."qrmask.php"; - include $QR_BASEDIR."qrencode.php"; - diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrmask.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrmask.php deleted file mode 100644 index 2d388e0e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrmask.php +++ /dev/null @@ -1,328 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('N1', 3); - define('N2', 3); - define('N3', 40); - define('N4', 10); - - class QRmask { - - public $runLength = array(); - - //---------------------------------------------------------------------- - public function __construct() - { - $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); - } - - //---------------------------------------------------------------------- - public function writeFormatInformation($width, &$frame, $mask, $level) - { - $blacks = 0; - $format = QRspec::getFormatInfo($mask, $level); - - for($i=0; $i<8; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[8][$width - 1 - $i] = chr($v); - if($i < 6) { - $frame[$i][8] = chr($v); - } else { - $frame[$i + 1][8] = chr($v); - } - $format = $format >> 1; - } - - for($i=0; $i<7; $i++) { - if($format & 1) { - $blacks += 2; - $v = 0x85; - } else { - $v = 0x84; - } - - $frame[$width - 7 + $i][8] = chr($v); - if($i == 0) { - $frame[8][7] = chr($v); - } else { - $frame[8][6 - $i] = chr($v); - } - - $format = $format >> 1; - } - - return $blacks; - } - - //---------------------------------------------------------------------- - public function mask0($x, $y) { return ($x+$y)&1; } - public function mask1($x, $y) { return ($y&1); } - public function mask2($x, $y) { return ($x%3); } - public function mask3($x, $y) { return ($x+$y)%3; } - public function mask4($x, $y) { return (((int)($y/2))+((int)($x/3)))&1; } - public function mask5($x, $y) { return (($x*$y)&1)+($x*$y)%3; } - public function mask6($x, $y) { return ((($x*$y)&1)+($x*$y)%3)&1; } - public function mask7($x, $y) { return ((($x*$y)%3)+(($x+$y)&1))&1; } - - //---------------------------------------------------------------------- - private function generateMaskNo($maskNo, $width, $frame) - { - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if(ord($frame[$y][$x]) & 0x80) { - $bitMask[$y][$x] = 0; - } else { - $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); - $bitMask[$y][$x] = ($maskFunc == 0)?1:0; - } - - } - } - - return $bitMask; - } - - //---------------------------------------------------------------------- - public static function serial($bitFrame) - { - $codeArr = array(); - - foreach ($bitFrame as $line) - $codeArr[] = join('', $line); - - return gzcompress(join("\n", $codeArr), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - $codeArr = array(); - - $codeLines = explode("\n", gzuncompress($code)); - foreach ($codeLines as $line) - $codeArr[] = str_split($line); - - return $codeArr; - } - - //---------------------------------------------------------------------- - public function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false) - { - $b = 0; - $bitMask = array(); - - $fileName = QR_CACHE_DIR.'mask_'.$maskNo.DIRECTORY_SEPARATOR.'mask_'.$width.'_'.$maskNo.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - $bitMask = self::unserial(file_get_contents($fileName)); - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - if (!file_exists(QR_CACHE_DIR.'mask_'.$maskNo)) - mkdir(QR_CACHE_DIR.'mask_'.$maskNo); - file_put_contents($fileName, self::serial($bitMask)); - } - } else { - $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); - } - - if ($maskGenOnly) - return; - - $d = $s; - - for($y=0; $y<$width; $y++) { - for($x=0; $x<$width; $x++) { - if($bitMask[$y][$x] == 1) { - $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]); - } - $b += (int)(ord($d[$y][$x]) & 1); - } - } - - return $b; - } - - //---------------------------------------------------------------------- - public function makeMask($width, $frame, $maskNo, $level) - { - $masked = array_fill(0, $width, str_repeat("\0", $width)); - $this->makeMaskNo($maskNo, $width, $frame, $masked); - $this->writeFormatInformation($width, $masked, $maskNo, $level); - - return $masked; - } - - //---------------------------------------------------------------------- - public function calcN1N3($length) - { - $demerit = 0; - - for($i=0; $i<$length; $i++) { - - if($this->runLength[$i] >= 5) { - $demerit += (N1 + ($this->runLength[$i] - 5)); - } - if($i & 1) { - if(($i >= 3) && ($i < ($length-2)) && ($this->runLength[$i] % 3 == 0)) { - $fact = (int)($this->runLength[$i] / 3); - if(($this->runLength[$i-2] == $fact) && - ($this->runLength[$i-1] == $fact) && - ($this->runLength[$i+1] == $fact) && - ($this->runLength[$i+2] == $fact)) { - if(($this->runLength[$i-3] < 0) || ($this->runLength[$i-3] >= (4 * $fact))) { - $demerit += N3; - } else if((($i+3) >= $length) || ($this->runLength[$i+3] >= (4 * $fact))) { - $demerit += N3; - } - } - } - } - } - return $demerit; - } - - //---------------------------------------------------------------------- - public function evaluateSymbol($width, $frame) - { - $head = 0; - $demerit = 0; - - for($y=0; $y<$width; $y++) { - $head = 0; - $this->runLength[0] = 1; - - $frameY = $frame[$y]; - - if ($y>0) - $frameYM = $frame[$y-1]; - - for($x=0; $x<$width; $x++) { - if(($x > 0) && ($y > 0)) { - $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); - $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); - - if(($b22 | ($w22 ^ 1))&1) { - $demerit += N2; - } - } - if(($x == 0) && (ord($frameY[$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($x > 0) { - if((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - for($x=0; $x<$width; $x++) { - $head = 0; - $this->runLength[0] = 1; - - for($y=0; $y<$width; $y++) { - if($y == 0 && (ord($frame[$y][$x]) & 1)) { - $this->runLength[0] = -1; - $head = 1; - $this->runLength[$head] = 1; - } else if($y > 0) { - if((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { - $head++; - $this->runLength[$head] = 1; - } else { - $this->runLength[$head]++; - } - } - } - - $demerit += $this->calcN1N3($head+1); - } - - return $demerit; - } - - - //---------------------------------------------------------------------- - public function mask($width, $frame, $level) - { - $minDemerit = PHP_INT_MAX; - $bestMaskNum = 0; - $bestMask = array(); - - $checked_masks = array(0,1,2,3,4,5,6,7); - - if (QR_FIND_FROM_RANDOM !== false) { - - $howManuOut = 8-(QR_FIND_FROM_RANDOM % 9); - for ($i = 0; $i < $howManuOut; $i++) { - $remPos = rand (0, count($checked_masks)-1); - unset($checked_masks[$remPos]); - $checked_masks = array_values($checked_masks); - } - - } - - $bestMask = $frame; - - foreach($checked_masks as $i) { - $mask = array_fill(0, $width, str_repeat("\0", $width)); - - $demerit = 0; - $blacks = 0; - $blacks = $this->makeMaskNo($i, $width, $frame, $mask); - $blacks += $this->writeFormatInformation($width, $mask, $i, $level); - $blacks = (int)(100 * $blacks / ($width * $width)); - $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); - $demerit += $this->evaluateSymbol($width, $mask); - - if($demerit < $minDemerit) { - $minDemerit = $demerit; - $bestMask = $mask; - $bestMaskNum = $i; - } - } - - return $bestMask; - } - - //---------------------------------------------------------------------- - } diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrrscode.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrrscode.php deleted file mode 100644 index d7a97d9a..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrrscode.php +++ /dev/null @@ -1,210 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRrsItem { - - public $mm; // Bits per symbol - public $nn; // Symbols per block (= (1<= $this->nn) { - $x -= $this->nn; - $x = ($x >> $this->mm) + ($x & $this->nn); - } - - return $x; - } - - //---------------------------------------------------------------------- - public static function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - // Common code for intializing a Reed-Solomon control block (char or int symbols) - // Copyright 2004 Phil Karn, KA9Q - // May be used under the terms of the GNU Lesser General Public License (LGPL) - - $rs = null; - - // Check parameter ranges - if($symsize < 0 || $symsize > 8) return $rs; - if($fcr < 0 || $fcr >= (1<<$symsize)) return $rs; - if($prim <= 0 || $prim >= (1<<$symsize)) return $rs; - if($nroots < 0 || $nroots >= (1<<$symsize)) return $rs; // Can't have more roots than symbol values! - if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding - - $rs = new QRrsItem(); - $rs->mm = $symsize; - $rs->nn = (1<<$symsize)-1; - $rs->pad = $pad; - - $rs->alpha_to = array_fill(0, $rs->nn+1, 0); - $rs->index_of = array_fill(0, $rs->nn+1, 0); - - // PHP style macro replacement ;) - $NN =& $rs->nn; - $A0 =& $NN; - - // Generate Galois field lookup tables - $rs->index_of[0] = $A0; // log(zero) = -inf - $rs->alpha_to[$A0] = 0; // alpha**-inf = 0 - $sr = 1; - - for($i=0; $i<$rs->nn; $i++) { - $rs->index_of[$sr] = $i; - $rs->alpha_to[$i] = $sr; - $sr <<= 1; - if($sr & (1<<$symsize)) { - $sr ^= $gfpoly; - } - $sr &= $rs->nn; - } - - if($sr != 1){ - // field generator polynomial is not primitive! - $rs = NULL; - return $rs; - } - - /* Form RS code generator polynomial from its roots */ - $rs->genpoly = array_fill(0, $nroots+1, 0); - - $rs->fcr = $fcr; - $rs->prim = $prim; - $rs->nroots = $nroots; - $rs->gfpoly = $gfpoly; - - /* Find prim-th root of 1, used in decoding */ - for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn) - ; // intentional empty-body loop! - - $rs->iprim = (int)($iprim / $prim); - $rs->genpoly[0] = 1; - - for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { - $rs->genpoly[$i+1] = 1; - - // Multiply rs->genpoly[] by @**(root + x) - for ($j = $i; $j > 0; $j--) { - if ($rs->genpoly[$j] != 0) { - $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)]; - } else { - $rs->genpoly[$j] = $rs->genpoly[$j-1]; - } - } - // rs->genpoly[0] can never be zero - $rs->genpoly[0] = $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[0]] + $root)]; - } - - // convert rs->genpoly[] to index form for quicker encoding - for ($i = 0; $i <= $nroots; $i++) - $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]]; - - return $rs; - } - - //---------------------------------------------------------------------- - public function encode_rs_char($data, &$parity) - { - $MM =& $this->mm; - $NN =& $this->nn; - $ALPHA_TO =& $this->alpha_to; - $INDEX_OF =& $this->index_of; - $GENPOLY =& $this->genpoly; - $NROOTS =& $this->nroots; - $FCR =& $this->fcr; - $PRIM =& $this->prim; - $IPRIM =& $this->iprim; - $PAD =& $this->pad; - $A0 =& $NN; - - $parity = array_fill(0, $NROOTS, 0); - - for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) { - - $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; - if($feedback != $A0) { - // feedback term is non-zero - - // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must - // always be for the polynomials constructed by init_rs() - $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback); - - for($j=1;$j<$NROOTS;$j++) { - $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])]; - } - } - - // Shift - array_shift($parity); - if($feedback != $A0) { - array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]); - } else { - array_push($parity, 0); - } - } - } - } - - //########################################################################## - - class QRrs { - - public static $items = array(); - - //---------------------------------------------------------------------- - public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) - { - foreach(self::$items as $rs) { - if($rs->pad != $pad) continue; - if($rs->nroots != $nroots) continue; - if($rs->mm != $symsize) continue; - if($rs->gfpoly != $gfpoly) continue; - if($rs->fcr != $fcr) continue; - if($rs->prim != $prim) continue; - - return $rs; - } - - $rs = QRrsItem::init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); - array_unshift(self::$items, $rs); - - return $rs; - } - } \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrspec.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrspec.php deleted file mode 100644 index 5a0c4b3c..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrspec.php +++ /dev/null @@ -1,592 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - define('QRSPEC_VERSION_MAX', 40); - define('QRSPEC_WIDTH_MAX', 177); - - define('QRCAP_WIDTH', 0); - define('QRCAP_WORDS', 1); - define('QRCAP_REMINDER', 2); - define('QRCAP_EC', 3); - - class QRspec { - - public static $capacity = array( - array( 0, 0, 0, array( 0, 0, 0, 0)), - array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 - array( 25, 44, 7, array( 10, 16, 22, 28)), - array( 29, 70, 7, array( 15, 26, 36, 44)), - array( 33, 100, 7, array( 20, 36, 52, 64)), - array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 - array( 41, 172, 7, array( 36, 64, 96, 112)), - array( 45, 196, 0, array( 40, 72, 108, 130)), - array( 49, 242, 0, array( 48, 88, 132, 156)), - array( 53, 292, 0, array( 60, 110, 160, 192)), - array( 57, 346, 0, array( 72, 130, 192, 224)), //10 - array( 61, 404, 0, array( 80, 150, 224, 264)), - array( 65, 466, 0, array( 96, 176, 260, 308)), - array( 69, 532, 0, array( 104, 198, 288, 352)), - array( 73, 581, 3, array( 120, 216, 320, 384)), - array( 77, 655, 3, array( 132, 240, 360, 432)), //15 - array( 81, 733, 3, array( 144, 280, 408, 480)), - array( 85, 815, 3, array( 168, 308, 448, 532)), - array( 89, 901, 3, array( 180, 338, 504, 588)), - array( 93, 991, 3, array( 196, 364, 546, 650)), - array( 97, 1085, 3, array( 224, 416, 600, 700)), //20 - array(101, 1156, 4, array( 224, 442, 644, 750)), - array(105, 1258, 4, array( 252, 476, 690, 816)), - array(109, 1364, 4, array( 270, 504, 750, 900)), - array(113, 1474, 4, array( 300, 560, 810, 960)), - array(117, 1588, 4, array( 312, 588, 870, 1050)), //25 - array(121, 1706, 4, array( 336, 644, 952, 1110)), - array(125, 1828, 4, array( 360, 700, 1020, 1200)), - array(129, 1921, 3, array( 390, 728, 1050, 1260)), - array(133, 2051, 3, array( 420, 784, 1140, 1350)), - array(137, 2185, 3, array( 450, 812, 1200, 1440)), //30 - array(141, 2323, 3, array( 480, 868, 1290, 1530)), - array(145, 2465, 3, array( 510, 924, 1350, 1620)), - array(149, 2611, 3, array( 540, 980, 1440, 1710)), - array(153, 2761, 3, array( 570, 1036, 1530, 1800)), - array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35 - array(161, 3034, 0, array( 600, 1120, 1680, 1980)), - array(165, 3196, 0, array( 630, 1204, 1770, 2100)), - array(169, 3362, 0, array( 660, 1260, 1860, 2220)), - array(173, 3532, 0, array( 720, 1316, 1950, 2310)), - array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40 - ); - - //---------------------------------------------------------------------- - public static function getDataLength($version, $level) - { - return self::$capacity[$version][QRCAP_WORDS] - self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getECCLength($version, $level) - { - return self::$capacity[$version][QRCAP_EC][$level]; - } - - //---------------------------------------------------------------------- - public static function getWidth($version) - { - return self::$capacity[$version][QRCAP_WIDTH]; - } - - //---------------------------------------------------------------------- - public static function getRemainder($version) - { - return self::$capacity[$version][QRCAP_REMINDER]; - } - - //---------------------------------------------------------------------- - public static function getMinimumVersion($size, $level) - { - - for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) { - $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level]; - if($words >= $size) - return $i; - } - - return -1; - } - - //###################################################################### - - public static $lengthTableBits = array( - array(10, 12, 14), - array( 9, 11, 13), - array( 8, 16, 16), - array( 8, 10, 12) - ); - - //---------------------------------------------------------------------- - public static function lengthIndicator($mode, $version) - { - if ($mode == QR_MODE_STRUCTURE) - return 0; - - if ($version <= 9) { - $l = 0; - } else if ($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - return self::$lengthTableBits[$mode][$l]; - } - - //---------------------------------------------------------------------- - public static function maximumWords($mode, $version) - { - if($mode == QR_MODE_STRUCTURE) - return 3; - - if($version <= 9) { - $l = 0; - } else if($version <= 26) { - $l = 1; - } else { - $l = 2; - } - - $bits = self::$lengthTableBits[$mode][$l]; - $words = (1 << $bits) - 1; - - if($mode == QR_MODE_KANJI) { - $words *= 2; // the number of bytes is required - } - - return $words; - } - - // Error correction code ----------------------------------------------- - // Table of the error correction code (Reed-Solomon block) - // See Table 12-16 (pp.30-36), JIS X0510:2004. - - public static $eccTable = array( - array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 - array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), - array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), - array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 - array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), - array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), - array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), - array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), - array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), //10 - array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), - array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), - array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), - array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), - array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), //15 - array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), - array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), - array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), - array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), - array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), //20 - array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), - array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), - array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), - array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), - array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), //25 - array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), - array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), - array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), - array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), - array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30 - array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), - array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), - array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), - array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), - array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35 - array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), - array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), - array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), - array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), - array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)),//40 - ); - - //---------------------------------------------------------------------- - // CACHEABLE!!! - - public static function getEccSpec($version, $level, array &$spec) - { - if (count($spec) < 5) { - $spec = array(0,0,0,0,0); - } - - $b1 = self::$eccTable[$version][$level][0]; - $b2 = self::$eccTable[$version][$level][1]; - $data = self::getDataLength($version, $level); - $ecc = self::getECCLength($version, $level); - - if($b2 == 0) { - $spec[0] = $b1; - $spec[1] = (int)($data / $b1); - $spec[2] = (int)($ecc / $b1); - $spec[3] = 0; - $spec[4] = 0; - } else { - $spec[0] = $b1; - $spec[1] = (int)($data / ($b1 + $b2)); - $spec[2] = (int)($ecc / ($b1 + $b2)); - $spec[3] = $b2; - $spec[4] = $spec[1] + 1; - } - } - - // Alignment pattern --------------------------------------------------- - - // Positions of alignment patterns. - // This array includes only the second and the third position of the - // alignment patterns. Rest of them can be calculated from the distance - // between them. - - // See Table 1 in Appendix E (pp.71) of JIS X0510:2004. - - public static $alignmentPattern = array( - array( 0, 0), - array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 - array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 - array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15 - array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20 - array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25 - array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), //26-30 - array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), //31-35 - array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58), //35-40 - ); - - - /** -------------------------------------------------------------------- - * Put an alignment marker. - * @param frame - * @param width - * @param ox,oy center coordinate of the pattern - */ - public static function putAlignmentMarker(array &$frame, $ox, $oy) - { - $finder = array( - "\xa1\xa1\xa1\xa1\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa0\xa1\xa0\xa1", - "\xa1\xa0\xa0\xa0\xa1", - "\xa1\xa1\xa1\xa1\xa1" - ); - - $yStart = $oy-2; - $xStart = $ox-2; - - for($y=0; $y<5; $y++) { - QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function putAlignmentPattern($version, &$frame, $width) - { - if($version < 2) - return; - - $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0]; - if($d < 0) { - $w = 2; - } else { - $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2); - } - - if($w * $w - 3 == 1) { - $x = self::$alignmentPattern[$version][0]; - $y = self::$alignmentPattern[$version][0]; - self::putAlignmentMarker($frame, $x, $y); - return; - } - - $cx = self::$alignmentPattern[$version][0]; - for($x=1; $x<$w - 1; $x++) { - self::putAlignmentMarker($frame, 6, $cx); - self::putAlignmentMarker($frame, $cx, 6); - $cx += $d; - } - - $cy = self::$alignmentPattern[$version][0]; - for($y=0; $y<$w-1; $y++) { - $cx = self::$alignmentPattern[$version][0]; - for($x=0; $x<$w-1; $x++) { - self::putAlignmentMarker($frame, $cx, $cy); - $cx += $d; - } - $cy += $d; - } - } - - // Version information pattern ----------------------------------------- - - // Version information pattern (BCH coded). - // See Table 1 in Appendix D (pp.68) of JIS X0510:2004. - - // size: [QRSPEC_VERSION_MAX - 6] - - public static $versionPattern = array( - 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, - 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, - 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, - 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, - 0x27541, 0x28c69 - ); - - //---------------------------------------------------------------------- - public static function getVersionPattern($version) - { - if($version < 7 || $version > QRSPEC_VERSION_MAX) - return 0; - - return self::$versionPattern[$version -7]; - } - - // Format information -------------------------------------------------- - // See calcFormatInfo in tests/test_qrspec.c (orginal qrencode c lib) - - public static $formatInfo = array( - array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), - array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), - array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), - array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) - ); - - public static function getFormatInfo($mask, $level) - { - if($mask < 0 || $mask > 7) - return 0; - - if($level < 0 || $level > 3) - return 0; - - return self::$formatInfo[$level][$mask]; - } - - // Frame --------------------------------------------------------------- - // Cache of initial frames. - - public static $frames = array(); - - /** -------------------------------------------------------------------- - * Put a finder pattern. - * @param frame - * @param width - * @param ox,oy upper-left coordinate of the pattern - */ - public static function putFinderPattern(&$frame, $ox, $oy) - { - $finder = array( - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", - "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", - "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" - ); - - for($y=0; $y<7; $y++) { - QRstr::set($frame, $ox, $oy+$y, $finder[$y]); - } - } - - //---------------------------------------------------------------------- - public static function createFrame($version) - { - $width = self::$capacity[$version][QRCAP_WIDTH]; - $frameLine = str_repeat ("\0", $width); - $frame = array_fill(0, $width, $frameLine); - - // Finder pattern - self::putFinderPattern($frame, 0, 0); - self::putFinderPattern($frame, $width - 7, 0); - self::putFinderPattern($frame, 0, $width - 7); - - // Separator - $yOffset = $width - 7; - - for($y=0; $y<7; $y++) { - $frame[$y][7] = "\xc0"; - $frame[$y][$width - 8] = "\xc0"; - $frame[$yOffset][7] = "\xc0"; - $yOffset++; - } - - $setPattern = str_repeat("\xc0", 8); - - QRstr::set($frame, 0, 7, $setPattern); - QRstr::set($frame, $width-8, 7, $setPattern); - QRstr::set($frame, 0, $width - 8, $setPattern); - - // Format info - $setPattern = str_repeat("\x84", 9); - QRstr::set($frame, 0, 8, $setPattern); - QRstr::set($frame, $width - 8, 8, $setPattern, 8); - - $yOffset = $width - 8; - - for($y=0; $y<8; $y++,$yOffset++) { - $frame[$y][8] = "\x84"; - $frame[$yOffset][8] = "\x84"; - } - - // Timing pattern - - for($i=1; $i<$width-15; $i++) { - $frame[6][7+$i] = chr(0x90 | ($i & 1)); - $frame[7+$i][6] = chr(0x90 | ($i & 1)); - } - - // Alignment pattern - self::putAlignmentPattern($version, $frame, $width); - - // Version information - if($version >= 7) { - $vinf = self::getVersionPattern($version); - - $v = $vinf; - - for($x=0; $x<6; $x++) { - for($y=0; $y<3; $y++) { - $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - - $v = $vinf; - for($y=0; $y<6; $y++) { - for($x=0; $x<3; $x++) { - $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); - $v = $v >> 1; - } - } - } - - // and a little bit... - $frame[$width - 8][8] = "\x81"; - - return $frame; - } - - //---------------------------------------------------------------------- - public static function debug($frame, $binary_mode = false) - { - if ($binary_mode) { - - foreach ($frame as &$frameLine) { - $frameLine = join('  ', explode('0', $frameLine)); - $frameLine = join('██', explode('1', $frameLine)); - } - - ?> - -


        '; - echo join("
        ", $frame); - echo '






'; - - } else { - - foreach ($frame as &$frameLine) { - $frameLine = join(' ', explode("\xc0", $frameLine)); - $frameLine = join('', explode("\xc1", $frameLine)); - $frameLine = join(' ', explode("\xa0", $frameLine)); - $frameLine = join('', explode("\xa1", $frameLine)); - $frameLine = join('', explode("\x84", $frameLine)); //format 0 - $frameLine = join('', explode("\x85", $frameLine)); //format 1 - $frameLine = join('', explode("\x81", $frameLine)); //special bit - $frameLine = join(' ', explode("\x90", $frameLine)); //clock 0 - $frameLine = join('', explode("\x91", $frameLine)); //clock 1 - $frameLine = join(' ', explode("\x88", $frameLine)); //version - $frameLine = join('', explode("\x89", $frameLine)); //version - $frameLine = join('♦', explode("\x01", $frameLine)); - $frameLine = join('⋅', explode("\0", $frameLine)); - } - - ?> - - "; - echo join("
", $frame); - echo "
"; - - } - } - - //---------------------------------------------------------------------- - public static function serial($frame) - { - return gzcompress(join("\n", $frame), 9); - } - - //---------------------------------------------------------------------- - public static function unserial($code) - { - return explode("\n", gzuncompress($code)); - } - - //---------------------------------------------------------------------- - public static function newFrame($version) - { - if($version < 1 || $version > QRSPEC_VERSION_MAX) - return null; - - if(!isset(self::$frames[$version])) { - - $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat'; - - if (QR_CACHEABLE) { - if (file_exists($fileName)) { - self::$frames[$version] = self::unserial(file_get_contents($fileName)); - } else { - self::$frames[$version] = self::createFrame($version); - file_put_contents($fileName, self::serial(self::$frames[$version])); - } - } else { - self::$frames[$version] = self::createFrame($version); - } - } - - if(is_null(self::$frames[$version])) - return null; - - return self::$frames[$version]; - } - - //---------------------------------------------------------------------- - public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; } - public static function rsBlockNum1($spec) { return $spec[0]; } - public static function rsDataCodes1($spec) { return $spec[1]; } - public static function rsEccCodes1($spec) { return $spec[2]; } - public static function rsBlockNum2($spec) { return $spec[3]; } - public static function rsDataCodes2($spec) { return $spec[4]; } - public static function rsEccCodes2($spec) { return $spec[2]; } - public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); } - public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; } - - } \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrsplit.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrsplit.php deleted file mode 100644 index 8099c416..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrsplit.php +++ /dev/null @@ -1,311 +0,0 @@ - - * - * PHP QR Code is distributed under LGPL 3 - * Copyright (C) 2010 Dominik Dzienia - * - * The following data / specifications are taken from - * "Two dimensional symbol -- QR-code -- Basic Specification" (JIS X0510:2004) - * or - * "Automatic identification and data capture techniques -- - * QR Code 2005 bar code symbology specification" (ISO/IEC 18004:2006) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - class QRsplit { - - public $dataStr = ''; - public $input; - public $modeHint; - - //---------------------------------------------------------------------- - public function __construct($dataStr, $input, $modeHint) - { - $this->dataStr = $dataStr; - $this->input = $input; - $this->modeHint = $modeHint; - } - - //---------------------------------------------------------------------- - public static function isdigitat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); - } - - //---------------------------------------------------------------------- - public static function isalnumat($str, $pos) - { - if ($pos >= strlen($str)) - return false; - - return (QRinput::lookAnTable(ord($str[$pos])) >= 0); - } - - //---------------------------------------------------------------------- - public function identifyMode($pos) - { - if ($pos >= strlen($this->dataStr)) - return QR_MODE_NUL; - - $c = $this->dataStr[$pos]; - - if(self::isdigitat($this->dataStr, $pos)) { - return QR_MODE_NUM; - } else if(self::isalnumat($this->dataStr, $pos)) { - return QR_MODE_AN; - } else if($this->modeHint == QR_MODE_KANJI) { - - if ($pos+1 < strlen($this->dataStr)) - { - $d = $this->dataStr[$pos+1]; - $word = (ord($c) << 8) | ord($d); - if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) { - return QR_MODE_KANJI; - } - } - } - - return QR_MODE_8; - } - - //---------------------------------------------------------------------- - public function eatNum() - { - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - while(self::isdigitat($this->dataStr, $p)) { - $p++; - } - - $run = $p; - $mode = $this->identifyMode($p); - - if($mode == QR_MODE_8) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - if($mode == QR_MODE_AN) { - $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln - + QRinput::estimateBitsModeAn(1) // + 4 + la - - QRinput::estimateBitsModeAn($run + 1);// - 4 - la - if($dif > 0) { - return $this->eatAn(); - } - } - - $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatAn() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 0; - - while(self::isalnumat($this->dataStr, $p)) { - if(self::isdigitat($this->dataStr, $p)) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - - $dif = QRinput::estimateBitsModeAn($p) // + 4 + la - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsModeAn($q); // - 4 - la - - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - - if(!self::isalnumat($this->dataStr, $p)) { - $dif = QRinput::estimateBitsModeAn($run) + 4 + $la - + QRinput::estimateBitsMode8(1) // + 4 + l8 - - QRinput::estimateBitsMode8($run + 1); // - 4 - l8 - if($dif > 0) { - return $this->eat8(); - } - } - - $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eatKanji() - { - $p = 0; - - while($this->identifyMode($p) == QR_MODE_KANJI) { - $p += 2; - } - - $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr)); - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function eat8() - { - $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion()); - $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion()); - - $p = 1; - $dataStrLen = strlen($this->dataStr); - - while($p < $dataStrLen) { - - $mode = $this->identifyMode($p); - if($mode == QR_MODE_KANJI) { - break; - } - if($mode == QR_MODE_NUM) { - $q = $p; - while(self::isdigitat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else if($mode == QR_MODE_AN) { - $q = $p; - while(self::isalnumat($this->dataStr, $q)) { - $q++; - } - $dif = QRinput::estimateBitsMode8($p) // + 4 + l8 - + QRinput::estimateBitsModeAn($q - $p) + 4 + $la - - QRinput::estimateBitsMode8($q); // - 4 - l8 - if($dif < 0) { - break; - } else { - $p = $q; - } - } else { - $p++; - } - } - - $run = $p; - $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr)); - - if($ret < 0) - return -1; - - return $run; - } - - //---------------------------------------------------------------------- - public function splitString() - { - while (strlen($this->dataStr) > 0) - { - if($this->dataStr == '') - return 0; - - $mode = $this->identifyMode(0); - - switch ($mode) { - case QR_MODE_NUM: $length = $this->eatNum(); break; - case QR_MODE_AN: $length = $this->eatAn(); break; - case QR_MODE_KANJI: - if ($hint == QR_MODE_KANJI) - $length = $this->eatKanji(); - else $length = $this->eat8(); - break; - default: $length = $this->eat8(); break; - - } - - if($length == 0) return 0; - if($length < 0) return -1; - - $this->dataStr = substr($this->dataStr, $length); - } - } - - //---------------------------------------------------------------------- - public function toUpper() - { - $stringLen = strlen($this->dataStr); - $p = 0; - - while ($p<$stringLen) { - $mode = self::identifyMode(substr($this->dataStr, $p), $this->modeHint); - if($mode == QR_MODE_KANJI) { - $p += 2; - } else { - if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) { - $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); - } - $p++; - } - } - - return $this->dataStr; - } - - //---------------------------------------------------------------------- - public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true) - { - if(is_null($string) || $string == '\0' || $string == '') { - throw new Exception('empty string!!!'); - } - - $split = new QRsplit($string, $input, $modeHint); - - if(!$casesensitive) - $split->toUpper(); - - return $split->splitString(); - } - } \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrtools.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrtools.php deleted file mode 100644 index e0412c43..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/qrtools.php +++ /dev/null @@ -1,172 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - class QRtools { - - //---------------------------------------------------------------------- - public static function binarize($frame) - { - $len = count($frame); - foreach ($frame as &$frameLine) { - - for($i=0; $i<$len; $i++) { - $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; - } - } - - return $frame; - } - - //---------------------------------------------------------------------- - public static function tcpdfBarcodeArray($code, $mode = 'QR,L', $tcPdfVersion = '4.5.037') - { - $barcode_array = array(); - - if (!is_array($mode)) - $mode = explode(',', $mode); - - $eccLevel = 'L'; - - if (count($mode) > 1) { - $eccLevel = $mode[1]; - } - - $qrTab = QRcode::text($code, false, $eccLevel); - $size = count($qrTab); - - $barcode_array['num_rows'] = $size; - $barcode_array['num_cols'] = $size; - $barcode_array['bcode'] = array(); - - foreach ($qrTab as $line) { - $arrAdd = array(); - foreach(str_split($line) as $char) - $arrAdd[] = ($char=='1')?1:0; - $barcode_array['bcode'][] = $arrAdd; - } - - return $barcode_array; - } - - //---------------------------------------------------------------------- - public static function clearCache() - { - self::$frames = array(); - } - - //---------------------------------------------------------------------- - public static function buildCache() - { - QRtools::markTime('before_build_cache'); - - $mask = new QRmask(); - for ($a=1; $a <= QRSPEC_VERSION_MAX; $a++) { - $frame = QRspec::newFrame($a); - if (QR_IMAGE) { - $fileName = QR_CACHE_DIR.'frame_'.$a.'.png'; - QRimage::png(self::binarize($frame), $fileName, 1, 0); - } - - $width = count($frame); - $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); - for ($maskNo=0; $maskNo<8; $maskNo++) - $mask->makeMaskNo($maskNo, $width, $frame, $bitMask, true); - } - - QRtools::markTime('after_build_cache'); - } - - //---------------------------------------------------------------------- - public static function log($outfile, $err) - { - if (QR_LOG_DIR !== false) { - if ($err != '') { - if ($outfile !== false) { - file_put_contents(QR_LOG_DIR.basename($outfile).'-errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } else { - file_put_contents(QR_LOG_DIR.'errors.txt', date('Y-m-d H:i:s').': '.$err, FILE_APPEND); - } - } - } - } - - //---------------------------------------------------------------------- - public static function dumpMask($frame) - { - $width = count($frame); - for($y=0;$y<$width;$y++) { - for($x=0;$x<$width;$x++) { - echo ord($frame[$y][$x]).','; - } - } - } - - //---------------------------------------------------------------------- - public static function markTime($markerId) - { - list($usec, $sec) = explode(" ", microtime()); - $time = ((float)$usec + (float)$sec); - - if (!isset($GLOBALS['qr_time_bench'])) - $GLOBALS['qr_time_bench'] = array(); - - $GLOBALS['qr_time_bench'][$markerId] = $time; - } - - //---------------------------------------------------------------------- - public static function timeBenchmark() - { - self::markTime('finish'); - - $lastTime = 0; - $startTime = 0; - $p = 0; - - echo ' - - '; - - foreach($GLOBALS['qr_time_bench'] as $markerId=>$thisTime) { - if ($p > 0) { - echo ''; - } else { - $startTime = $thisTime; - } - - $p++; - $lastTime = $thisTime; - } - - echo ' - - -
BENCHMARK
till '.$markerId.': '.number_format($thisTime-$lastTime, 6).'s
TOTAL: '.number_format($lastTime-$startTime, 6).'s
'; - } - - } - - //########################################################################## - - QRtools::markTime('start'); - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.bat b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.bat deleted file mode 100644 index 2b5eebbe..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.bat +++ /dev/null @@ -1,2 +0,0 @@ -php ./merge.php -pause \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.php deleted file mode 100644 index 9e809c8e..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - $QR_BASEDIR = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR; - $QR_TOOLSDIR = dirname(__FILE__).DIRECTORY_SEPARATOR; - - $outputFile = $QR_BASEDIR.'phpqrcode.php'; - - // Required libs - - $fileList = array( - $QR_BASEDIR.'qrconst.php', - $QR_TOOLSDIR.'merged_config.php', - $QR_BASEDIR.'qrtools.php', - $QR_BASEDIR.'qrspec.php', - $QR_BASEDIR.'qrimage.php', - $QR_BASEDIR.'qrinput.php', - $QR_BASEDIR.'qrbitstream.php', - $QR_BASEDIR.'qrsplit.php', - $QR_BASEDIR.'qrrscode.php', - $QR_BASEDIR.'qrmask.php', - $QR_BASEDIR.'qrencode.php' - ); - - $headerFile = $QR_TOOLSDIR.'merged_header.php'; - $versionFile = $QR_BASEDIR.'VERSION'; - - $outputCode = ''; - - foreach($fileList as $fileName) { - $outputCode .= "\n\n".'//---- '.basename($fileName).' -----------------------------'."\n\n"; - $anotherCode = file_get_contents($fileName); - $anotherCode = preg_replace ('/^<\?php/', '', $anotherCode); - $anotherCode = preg_replace ('/\?>\*$/', '', $anotherCode); - $outputCode .= "\n\n".$anotherCode."\n\n"; - } - - $versionDataEx = explode("\n", file_get_contents($versionFile)); - - $outputContents = file_get_contents($headerFile); - $outputContents .= "\n\n/*\n * Version: ".trim($versionDataEx[0])."\n * Build: ".trim($versionDataEx[1])."\n */\n\n"; - $outputContents .= $outputCode; - - file_put_contents($outputFile, $outputContents); - - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.sh b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.sh deleted file mode 100644 index 1a2515ba..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merge.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -php ./merge.php \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merged_config.php b/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merged_config.php deleted file mode 100644 index 8cd917db..00000000 --- a/niucloud/vendor/dh2y/think-qrcode/src/phpqrcode/tools/merged_config.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - \ No newline at end of file diff --git a/niucloud/vendor/dh2y/think-qrcode/src/simsun.ttc b/niucloud/vendor/dh2y/think-qrcode/src/simsun.ttc deleted file mode 100644 index e64e92ed..00000000 Binary files a/niucloud/vendor/dh2y/think-qrcode/src/simsun.ttc and /dev/null differ diff --git a/niucloud/vendor/dragonmantank/cron-expression/CHANGELOG.md b/niucloud/vendor/dragonmantank/cron-expression/CHANGELOG.md deleted file mode 100644 index 99b587be..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/CHANGELOG.md +++ /dev/null @@ -1,217 +0,0 @@ -# Change Log - -## [3.3.1] - 2022-01-18 - -### Added -- N/A - -### Changed -- N/A - -### Fixed -- Fixed issue when timezones had no transition, which can occur over very short timespans (#134) - -## [3.3.0] - 2022-01-13 - -### Added -- Added ability to register your own expression aliases (#132) - -### Changed -- Changed how Day of Week and Day of Month resolve when one or the other is `*` or `?` - -### Fixed -- PHPStan should no longer error out - -## [3.2.4] - 2022-01-12 - -### Added -- N/A - -### Changed -- Changed how Day of Week increment/decrement to help with DST changes (#131) - -### Fixed -- N/A - -## [3.2.3] - 2022-01-05 - -### Added -- N/A - -### Changed -- Changed how minutes and hours increment/decrement to help with DST changes (#131) - -### Fixed -- N/A - -## [3.2.2] - 2022-01-05 - -### Added -- N/A - -### Changed -- Marked some methods `@internal` (#124) - -### Fixed -- Fixed issue with small ranges and large steps that caused an error with `range()` (#88) -- Fixed issue where wraparound logic incorrectly considered high bound on range (#89) - -## [3.2.1] - 2022-01-04 - -### Added -- N/A - -### Changed -- Added PHP 8.1 to testing (#125) - -### Fixed -- Allow better mixture of ranges, steps, and lists (#122) -- Fixed return order when multiple dates are requested and inverted (#121) -- Better handling over DST (#115) -- Fixed PHPStan tests (#130) - -## [3.2.0] - 2022-01-04 - -### Added -- Added alias for `@midnight` (#117) - -### Changed -- Improved testing for instance of field in tests (#105) -- Optimization for determining multiple run dates (#75) -- `CronExpression` properties changed from private to protected (#106) - -### Fixed -- N/A - -## [3.1.0] - 2020-11-24 - -### Added -- Added `CronExpression::getParts()` method to get parts of the expression as an array (#83) - -### Changed -- Changed to Interfaces for some type hints (#97, #86) -- Dropped minimum PHP version to 7.2 -- Few syntax changes for phpstan compatibility (#93) - -### Fixed -- N/A - -### Deprecated -- Deprecated `CronExpression::factory` in favor of the constructor (#56) -- Deprecated `CronExpression::YEAR` as a formality, the functionality is already removed (#87) - -## [3.0.1] - 2020-10-12 -### Added -- Added support for PHP 8 (#92) -### Changed -- N/A -### Fixed -- N/A - -## [3.0.0] - 2020-03-25 - -**MAJOR CHANGE** - In previous versions of this library, setting both a "Day of Month" and a "Day of Week" would be interpreted as an `AND` statement, not an `OR` statement. For example: - -`30 0 1 * 1` - -would evaluate to "Run 30 minutes after the 0 hour when the Day Of Month is 1 AND a Monday" instead of "Run 30 minutes after the 0 hour on Day Of Month 1 OR a Monday", where the latter is more inline with most cron systems. This means that if your cron expression has both of these fields set, you may see your expression fire more often starting with v3.0.0. - -### Added -- Additional docblocks for IDE and documentation -- Added phpstan as a development dependency -- Added a `Cron\FieldFactoryInterface` to make migrations easier (#38) -### Changed -- Changed some DI testing during TravisCI runs -- `\Cron\CronExpression::determineTimezone()` now checks for `\DateTimeInterface` instead of just `\DateTime` -- Errors with fields now report a more human-understandable error and are 1-based instead of 0-based -- Better support for `\DateTimeImmutable` across the library by typehinting for `\DateTimeInterface` now -- Literals should now be less case-sensative across the board -- Changed logic for when both a Day of Week and a Day of Month are supplied to now be an OR statement, not an AND -### Fixed -- Fixed infinite loop when determining last day of week from literals -- Fixed bug where single number ranges were allowed (ex: `1/10`) -- Fixed nullable FieldFactory in CronExpression where no factory could be supplied -- Fixed issue where logic for dropping seconds to 0 could lead to a timezone change - -## [2.3.1] - 2020-10-12 -### Added -- Added support for PHP 8 (#92) -### Changed -- N/A -### Fixed -- N/A - -## [2.3.0] - 2019-03-30 -### Added -- Added support for DateTimeImmutable via DateTimeInterface -- Added support for PHP 7.3 -- Started listing projects that use the library -### Changed -- Errors should now report a human readable position in the cron expression, instead of starting at 0 -### Fixed -- N/A - -## [2.2.0] - 2018-06-05 -### Added -- Added support for steps larger than field ranges (#6) -## Changed -- N/A -### Fixed -- Fixed validation for numbers with leading 0s (#12) - -## [2.1.0] - 2018-04-06 -### Added -- N/A -### Changed -- Upgraded to PHPUnit 6 (#2) -### Fixed -- Refactored timezones to deal with some inconsistent behavior (#3) -- Allow ranges and lists in same expression (#5) -- Fixed regression where literals were not converted to their numerical counterpart (#) - -## [2.0.0] - 2017-10-12 -### Added -- N/A - -### Changed -- Dropped support for PHP 5.x -- Dropped support for the YEAR field, as it was not part of the cron standard - -### Fixed -- Reworked validation for all the field types -- Stepping should now work for 1-indexed fields like Month (#153) - -## [1.2.0] - 2017-01-22 -### Added -- Added IDE, CodeSniffer, and StyleCI.IO support - -### Changed -- Switched to PSR-4 Autoloading - -### Fixed -- 0 step expressions are handled better -- Fixed `DayOfMonth` validation to be more strict -- Typos - -## [1.1.0] - 2016-01-26 -### Added -- Support for non-hourly offset timezones -- Checks for valid expressions - -### Changed -- Max Iterations no longer hardcoded for `getRunDate()` -- Supports DateTimeImmutable for newer PHP verions - -### Fixed -- Fixed looping bug for PHP 7 when determining the last specified weekday of a month - -## [1.0.3] - 2013-11-23 -### Added -- Now supports expressions with any number of extra spaces, tabs, or newlines - -### Changed -- Using static instead of self in `CronExpression::factory` - -### Fixed -- Fixes issue [#28](https://github.com/mtdowling/cron-expression/issues/28) where PHP increments of ranges were failing due to PHP casting hyphens to 0 -- Only set default timezone if the given $currentTime is not a DateTime instance ([#34](https://github.com/mtdowling/cron-expression/issues/34)) diff --git a/niucloud/vendor/dragonmantank/cron-expression/LICENSE b/niucloud/vendor/dragonmantank/cron-expression/LICENSE deleted file mode 100644 index 3e38bbc8..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Michael Dowling , 2016 Chris Tankersley , and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/niucloud/vendor/dragonmantank/cron-expression/README.md b/niucloud/vendor/dragonmantank/cron-expression/README.md deleted file mode 100644 index e853ad45..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/README.md +++ /dev/null @@ -1,87 +0,0 @@ -PHP Cron Expression Parser -========================== - -[![Latest Stable Version](https://poser.pugx.org/dragonmantank/cron-expression/v/stable.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Total Downloads](https://poser.pugx.org/dragonmantank/cron-expression/downloads.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Build Status](https://secure.travis-ci.org/dragonmantank/cron-expression.png)](http://travis-ci.org/dragonmantank/cron-expression) [![StyleCI](https://github.styleci.io/repos/103715337/shield?branch=master)](https://github.styleci.io/repos/103715337) - -The PHP cron expression parser can parse a CRON expression, determine if it is -due to run, calculate the next run date of the expression, and calculate the previous -run date of the expression. You can calculate dates far into the future or past by -skipping **n** number of matching dates. - -The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9), -lists (e.g. 1,2,3), **W** to find the nearest weekday for a given day of the month, **L** to -find the last day of the month, **L** to find the last given weekday of a month, and hash -(#) to find the nth weekday of a given month. - -More information about this fork can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork. - -Installing -========== - -Add the dependency to your project: - -```bash -composer require dragonmantank/cron-expression -``` - -Usage -===== -```php -isDue(); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); -echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s'); - -// Works with complex expressions -$cron = new Cron\CronExpression('3-59/15 6-12 */15 1 2-5'); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); - -// Calculate a run date two iterations into the future -$cron = new Cron\CronExpression('@daily'); -echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s'); - -// Calculate a run date relative to a specific time -$cron = new Cron\CronExpression('@monthly'); -echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s'); -``` - -CRON Expressions -================ - -A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows: - - * * * * * - - - - - - - | | | | | - | | | | | - | | | | +----- day of week (0 - 7) (Sunday=0 or 7) - | | | +---------- month (1 - 12) - | | +--------------- day of month (1 - 31) - | +-------------------- hour (0 - 23) - +------------------------- min (0 - 59) - -This library also supports a few macros: - -* `@yearly`, `@annually` - Run once a year, midnight, Jan. 1 - `0 0 1 1 *` -* `@monthly` - Run once a month, midnight, first of month - `0 0 1 * *` -* `@weekly` - Run once a week, midnight on Sun - `0 0 * * 0` -* `@daily`, `@midnight` - Run once a day, midnight - `0 0 * * *` -* `@hourly` - Run once an hour, first minute - `0 * * * *` - -Requirements -============ - -- PHP 7.2+ -- PHPUnit is required to run the unit tests -- Composer is required to run the unit tests - -Projects that Use cron-expression -================================= -* Part of the [Laravel Framework](https://github.com/laravel/framework/) -* Available as a [Symfony Bundle - setono/cron-expression-bundle](https://github.com/Setono/CronExpressionBundle) -* Framework agnostic, PHP-based job scheduler - [Crunz](https://github.com/lavary/crunz) diff --git a/niucloud/vendor/dragonmantank/cron-expression/composer.json b/niucloud/vendor/dragonmantank/cron-expression/composer.json deleted file mode 100644 index e512446d..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/composer.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "dragonmantank/cron-expression", - "type": "library", - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": ["cron", "schedule"], - "license": "MIT", - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "phpstan/phpstan-webmozart-assert": "^1.0", - "phpstan/extension-installer": "^1.0" - }, - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "autoload-dev": { - "psr-4": { - "Cron\\Tests\\": "tests/Cron/" - } - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "scripts": { - "phpstan": "./vendor/bin/phpstan analyze", - "test": "phpunit" - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/phpstan.neon b/niucloud/vendor/dragonmantank/cron-expression/phpstan.neon deleted file mode 100644 index bea9cb0d..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/phpstan.neon +++ /dev/null @@ -1,15 +0,0 @@ -parameters: - checkMissingIterableValueType: false - - ignoreErrors: - - '#Call to an undefined method DateTimeInterface::add\(\)#' - - '#Call to an undefined method DateTimeInterface::modify\(\)#' - - '#Call to an undefined method DateTimeInterface::setDate\(\)#' - - '#Call to an undefined method DateTimeInterface::setTime\(\)#' - - '#Call to an undefined method DateTimeInterface::setTimezone\(\)#' - - '#Call to an undefined method DateTimeInterface::sub\(\)#' - - level: max - - paths: - - src/ diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php deleted file mode 100644 index df2848df..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php +++ /dev/null @@ -1,346 +0,0 @@ -fullRange = range($this->rangeStart, $this->rangeEnd); - } - - /** - * Check to see if a field is satisfied by a value. - * - * @internal - * @param int $dateValue Date value to check - * @param string $value Value to test - * - * @return bool - */ - public function isSatisfied(int $dateValue, string $value): bool - { - if ($this->isIncrementsOfRanges($value)) { - return $this->isInIncrementsOfRanges($dateValue, $value); - } - - if ($this->isRange($value)) { - return $this->isInRange($dateValue, $value); - } - - return '*' === $value || $dateValue === (int) $value; - } - - /** - * Check if a value is a range. - * - * @internal - * @param string $value Value to test - * - * @return bool - */ - public function isRange(string $value): bool - { - return false !== strpos($value, '-'); - } - - /** - * Check if a value is an increments of ranges. - * - * @internal - * @param string $value Value to test - * - * @return bool - */ - public function isIncrementsOfRanges(string $value): bool - { - return false !== strpos($value, '/'); - } - - /** - * Test if a value is within a range. - * - * @internal - * @param int $dateValue Set date value - * @param string $value Value to test - * - * @return bool - */ - public function isInRange(int $dateValue, $value): bool - { - $parts = array_map( - function ($value) { - $value = trim($value); - - return $this->convertLiterals($value); - }, - explode('-', $value, 2) - ); - - return $dateValue >= $parts[0] && $dateValue <= $parts[1]; - } - - /** - * Test if a value is within an increments of ranges (offset[-to]/step size). - * - * @internal - * @param int $dateValue Set date value - * @param string $value Value to test - * - * @return bool - */ - public function isInIncrementsOfRanges(int $dateValue, string $value): bool - { - $chunks = array_map('trim', explode('/', $value, 2)); - $range = $chunks[0]; - $step = $chunks[1] ?? 0; - - // No step or 0 steps aren't cool - /** @phpstan-ignore-next-line */ - if (null === $step || '0' === $step || 0 === $step) { - return false; - } - - // Expand the * to a full range - if ('*' === $range) { - $range = $this->rangeStart . '-' . $this->rangeEnd; - } - - // Generate the requested small range - $rangeChunks = explode('-', $range, 2); - $rangeStart = (int) $rangeChunks[0]; - $rangeEnd = $rangeChunks[1] ?? $rangeStart; - $rangeEnd = (int) $rangeEnd; - - if ($rangeStart < $this->rangeStart || $rangeStart > $this->rangeEnd || $rangeStart > $rangeEnd) { - throw new \OutOfRangeException('Invalid range start requested'); - } - - if ($rangeEnd < $this->rangeStart || $rangeEnd > $this->rangeEnd || $rangeEnd < $rangeStart) { - throw new \OutOfRangeException('Invalid range end requested'); - } - - // Steps larger than the range need to wrap around and be handled - // slightly differently than smaller steps - - // UPDATE - This is actually false. The C implementation will allow a - // larger step as valid syntax, it never wraps around. It will stop - // once it hits the end. Unfortunately this means in future versions - // we will not wrap around. However, because the logic exists today - // per the above documentation, fixing the bug from #89 - if ($step > $this->rangeEnd) { - $thisRange = [$this->fullRange[$step % \count($this->fullRange)]]; - } else { - if ($step > ($rangeEnd - $rangeStart)) { - $thisRange[$rangeStart] = (int) $rangeStart; - } else { - $thisRange = range($rangeStart, $rangeEnd, (int) $step); - } - } - - return \in_array($dateValue, $thisRange, true); - } - - /** - * Returns a range of values for the given cron expression. - * - * @param string $expression The expression to evaluate - * @param int $max Maximum offset for range - * - * @return array - */ - public function getRangeForExpression(string $expression, int $max): array - { - $values = []; - $expression = $this->convertLiterals($expression); - - if (false !== strpos($expression, ',')) { - $ranges = explode(',', $expression); - $values = []; - foreach ($ranges as $range) { - $expanded = $this->getRangeForExpression($range, $this->rangeEnd); - $values = array_merge($values, $expanded); - } - - return $values; - } - - if ($this->isRange($expression) || $this->isIncrementsOfRanges($expression)) { - if (!$this->isIncrementsOfRanges($expression)) { - [$offset, $to] = explode('-', $expression); - $offset = $this->convertLiterals($offset); - $to = $this->convertLiterals($to); - $stepSize = 1; - } else { - $range = array_map('trim', explode('/', $expression, 2)); - $stepSize = $range[1] ?? 0; - $range = $range[0]; - $range = explode('-', $range, 2); - $offset = $range[0]; - $to = $range[1] ?? $max; - } - $offset = '*' === $offset ? $this->rangeStart : $offset; - if ($stepSize >= $this->rangeEnd) { - $values = [$this->fullRange[$stepSize % \count($this->fullRange)]]; - } else { - for ($i = $offset; $i <= $to; $i += $stepSize) { - $values[] = (int) $i; - } - } - sort($values); - } else { - $values = [$expression]; - } - - return $values; - } - - /** - * Convert literal. - * - * @param string $value - * - * @return string - */ - protected function convertLiterals(string $value): string - { - if (\count($this->literals)) { - $key = array_search(strtoupper($value), $this->literals, true); - if (false !== $key) { - return (string) $key; - } - } - - return $value; - } - - /** - * Checks to see if a value is valid for the field. - * - * @param string $value - * - * @return bool - */ - public function validate(string $value): bool - { - $value = $this->convertLiterals($value); - - // All fields allow * as a valid value - if ('*' === $value) { - return true; - } - - // Validate each chunk of a list individually - if (false !== strpos($value, ',')) { - foreach (explode(',', $value) as $listItem) { - if (!$this->validate($listItem)) { - return false; - } - } - - return true; - } - - if (false !== strpos($value, '/')) { - [$range, $step] = explode('/', $value); - - // Don't allow numeric ranges - if (is_numeric($range)) { - return false; - } - - return $this->validate($range) && filter_var($step, FILTER_VALIDATE_INT); - } - - if (false !== strpos($value, '-')) { - if (substr_count($value, '-') > 1) { - return false; - } - - $chunks = explode('-', $value); - $chunks[0] = $this->convertLiterals($chunks[0]); - $chunks[1] = $this->convertLiterals($chunks[1]); - - if ('*' === $chunks[0] || '*' === $chunks[1]) { - return false; - } - - return $this->validate($chunks[0]) && $this->validate($chunks[1]); - } - - if (!is_numeric($value)) { - return false; - } - - if (false !== strpos($value, '.')) { - return false; - } - - // We should have a numeric by now, so coerce this into an integer - $value = (int) $value; - - return \in_array($value, $this->fullRange, true); - } - - protected function timezoneSafeModify(DateTimeInterface $dt, string $modification): DateTimeInterface - { - $timezone = $dt->getTimezone(); - $dt = $dt->setTimezone(new \DateTimeZone("UTC")); - $dt = $dt->modify($modification); - $dt = $dt->setTimezone($timezone); - return $dt; - } - - protected function setTimeHour(DateTimeInterface $date, bool $invert, int $originalTimestamp): DateTimeInterface - { - $date = $date->setTime((int)$date->format('H'), ($invert ? 59 : 0)); - - // setTime caused the offset to change, moving time in the wrong direction - $actualTimestamp = $date->format('U'); - if ((! $invert) && ($actualTimestamp <= $originalTimestamp)) { - $date = $this->timezoneSafeModify($date, "+1 hour"); - } elseif ($invert && ($actualTimestamp >= $originalTimestamp)) { - $date = $this->timezoneSafeModify($date, "-1 hour"); - } - - return $date; - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php deleted file mode 100644 index d5337cc5..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php +++ /dev/null @@ -1,568 +0,0 @@ - '0 0 1 1 *', - '@annually' => '0 0 1 1 *', - '@monthly' => '0 0 1 * *', - '@weekly' => '0 0 * * 0', - '@daily' => '0 0 * * *', - '@midnight' => '0 0 * * *', - '@hourly' => '0 * * * *', - ]; - - /** - * @var array CRON expression parts - */ - protected $cronParts; - - /** - * @var FieldFactoryInterface CRON field factory - */ - protected $fieldFactory; - - /** - * @var int Max iteration count when searching for next run date - */ - protected $maxIterationCount = 1000; - - /** - * @var array Order in which to test of cron parts - */ - protected static $order = [ - self::YEAR, - self::MONTH, - self::DAY, - self::WEEKDAY, - self::HOUR, - self::MINUTE, - ]; - - /** - * @var array - */ - private static $registeredAliases = self::MAPPINGS; - - /** - * Registered a user defined CRON Expression Alias. - * - * @throws LogicException If the expression or the alias name are invalid - * or if the alias is already registered. - */ - public static function registerAlias(string $alias, string $expression): void - { - try { - new self($expression); - } catch (InvalidArgumentException $exception) { - throw new LogicException("The expression `$expression` is invalid", 0, $exception); - } - - $shortcut = strtolower($alias); - if (1 !== preg_match('/^@\w+$/', $shortcut)) { - throw new LogicException("The alias `$alias` is invalid. It must start with an `@` character and contain alphanumeric (letters, numbers, regardless of case) plus underscore (_)."); - } - - if (isset(self::$registeredAliases[$shortcut])) { - throw new LogicException("The alias `$alias` is already registered."); - } - - self::$registeredAliases[$shortcut] = $expression; - } - - /** - * Unregistered a user defined CRON Expression Alias. - * - * @throws LogicException If the user tries to unregister a built-in alias - */ - public static function unregisterAlias(string $alias): bool - { - $shortcut = strtolower($alias); - if (isset(self::MAPPINGS[$shortcut])) { - throw new LogicException("The alias `$alias` is a built-in alias; it can not be unregistered."); - } - - if (!isset(self::$registeredAliases[$shortcut])) { - return false; - } - - unset(self::$registeredAliases[$shortcut]); - - return true; - } - - /** - * Tells whether a CRON Expression alias is registered. - */ - public static function supportsAlias(string $alias): bool - { - return isset(self::$registeredAliases[strtolower($alias)]); - } - - /** - * Returns all registered aliases as an associated array where the aliases are the key - * and their associated expressions are the values. - * - * @return array - */ - public static function getAliases(): array - { - return self::$registeredAliases; - } - - /** - * @deprecated since version 3.0.2, use __construct instead. - */ - public static function factory(string $expression, FieldFactoryInterface $fieldFactory = null): CronExpression - { - /** @phpstan-ignore-next-line */ - return new static($expression, $fieldFactory); - } - - /** - * Validate a CronExpression. - * - * @param string $expression the CRON expression to validate - * - * @return bool True if a valid CRON expression was passed. False if not. - */ - public static function isValidExpression(string $expression): bool - { - try { - new CronExpression($expression); - } catch (InvalidArgumentException $e) { - return false; - } - - return true; - } - - /** - * Parse a CRON expression. - * - * @param string $expression CRON expression (e.g. '8 * * * *') - * @param null|FieldFactoryInterface $fieldFactory Factory to create cron fields - */ - public function __construct(string $expression, FieldFactoryInterface $fieldFactory = null) - { - $shortcut = strtolower($expression); - $expression = self::$registeredAliases[$shortcut] ?? $expression; - - $this->fieldFactory = $fieldFactory ?: new FieldFactory(); - $this->setExpression($expression); - } - - /** - * Set or change the CRON expression. - * - * @param string $value CRON expression (e.g. 8 * * * *) - * - * @throws \InvalidArgumentException if not a valid CRON expression - * - * @return CronExpression - */ - public function setExpression(string $value): CronExpression - { - $split = preg_split('/\s/', $value, -1, PREG_SPLIT_NO_EMPTY); - Assert::isArray($split); - - $this->cronParts = $split; - if (\count($this->cronParts) < 5) { - throw new InvalidArgumentException( - $value . ' is not a valid CRON expression' - ); - } - - foreach ($this->cronParts as $position => $part) { - $this->setPart($position, $part); - } - - return $this; - } - - /** - * Set part of the CRON expression. - * - * @param int $position The position of the CRON expression to set - * @param string $value The value to set - * - * @throws \InvalidArgumentException if the value is not valid for the part - * - * @return CronExpression - */ - public function setPart(int $position, string $value): CronExpression - { - if (!$this->fieldFactory->getField($position)->validate($value)) { - throw new InvalidArgumentException( - 'Invalid CRON field value ' . $value . ' at position ' . $position - ); - } - - $this->cronParts[$position] = $value; - - return $this; - } - - /** - * Set max iteration count for searching next run dates. - * - * @param int $maxIterationCount Max iteration count when searching for next run date - * - * @return CronExpression - */ - public function setMaxIterationCount(int $maxIterationCount): CronExpression - { - $this->maxIterationCount = $maxIterationCount; - - return $this; - } - - /** - * Get a next run date relative to the current date or a specific date - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning a - * matching next run date. 0, the default, will return the - * current date and time if the next run date falls on the - * current date and time. Setting this value to 1 will - * skip the first match and go to the second match. - * Setting this value to 2 will skip the first 2 - * matches and so on. - * @param bool $allowCurrentDate Set to TRUE to return the current date if - * it matches the cron expression. - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - */ - public function getNextRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, false, $allowCurrentDate, $timeZone); - } - - /** - * Get a previous run date relative to the current date or a specific date. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - * - * @see \Cron\CronExpression::getNextRunDate - */ - public function getPreviousRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, true, $allowCurrentDate, $timeZone); - } - - /** - * Get multiple run dates starting at the current date or a specific date. - * - * @param int $total Set the total number of dates to calculate - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param bool $invert Set to TRUE to retrieve previous dates - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return \DateTime[] Returns an array of run dates - */ - public function getMultipleRunDates(int $total, $currentTime = 'now', bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): array - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - Assert::isInstanceOf($currentTime, DateTime::class); - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - $matches = []; - for ($i = 0; $i < $total; ++$i) { - try { - $result = $this->getRunDate($currentTime, 0, $invert, $allowCurrentDate, $timeZone); - } catch (RuntimeException $e) { - break; - } - - $allowCurrentDate = false; - $currentTime = clone $result; - $matches[] = $result; - } - - return $matches; - } - - /** - * Get all or part of the CRON expression. - * - * @param int|string|null $part specify the part to retrieve or NULL to get the full - * cron schedule string - * - * @return null|string Returns the CRON expression, a part of the - * CRON expression, or NULL if the part was specified but not found - */ - public function getExpression($part = null): ?string - { - if (null === $part) { - return implode(' ', $this->cronParts); - } - - if (array_key_exists($part, $this->cronParts)) { - return $this->cronParts[$part]; - } - - return null; - } - - /** - * Gets the parts of the cron expression as an array. - * - * @return string[] - * The array of parts that make up this expression. - */ - public function getParts() - { - return $this->cronParts; - } - - /** - * Helper method to output the full expression. - * - * @return string Full CRON expression - */ - public function __toString(): string - { - return (string) $this->getExpression(); - } - - /** - * Determine if the cron is due to run based on the current date or a - * specific date. This method assumes that the current number of - * seconds are irrelevant, and should be called once per minute. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return bool Returns TRUE if the cron is due to run or FALSE if not - */ - public function isDue($currentTime = 'now', $timeZone = null): bool - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - Assert::isInstanceOf($currentTime, DateTime::class); - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - // drop the seconds to 0 - $currentTime->setTime((int) $currentTime->format('H'), (int) $currentTime->format('i'), 0); - - try { - return $this->getNextRunDate($currentTime, 0, true)->getTimestamp() === $currentTime->getTimestamp(); - } catch (Exception $e) { - return false; - } - } - - /** - * Get the next or previous run date of the expression relative to a date. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $invert Set to TRUE to go backwards in time - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws Exception - * - * @return \DateTime - */ - protected function getRunDate($currentTime = null, int $nth = 0, bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ($currentTime instanceof DateTime) { - $currentDate = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentDate = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentDate = new DateTime($currentTime); - } else { - $currentDate = new DateTime('now'); - } - - Assert::isInstanceOf($currentDate, DateTime::class); - $currentDate->setTimezone(new DateTimeZone($timeZone)); - // Workaround for setTime causing an offset change: https://bugs.php.net/bug.php?id=81074 - $currentDate = DateTime::createFromFormat("!Y-m-d H:iO", $currentDate->format("Y-m-d H:iP"), $currentDate->getTimezone()); - if ($currentDate === false) { - throw new \RuntimeException('Unable to create date from format'); - } - $currentDate->setTimezone(new DateTimeZone($timeZone)); - - $nextRun = clone $currentDate; - - // We don't have to satisfy * or null fields - $parts = []; - $fields = []; - foreach (self::$order as $position) { - $part = $this->getExpression($position); - if (null === $part || '*' === $part) { - continue; - } - $parts[$position] = $part; - $fields[$position] = $this->fieldFactory->getField($position); - } - - if (isset($parts[self::DAY]) && isset($parts[self::WEEKDAY])) { - $domExpression = sprintf('%s %s %s %s *', $this->getExpression(0), $this->getExpression(1), $this->getExpression(2), $this->getExpression(3)); - $dowExpression = sprintf('%s %s * %s %s', $this->getExpression(0), $this->getExpression(1), $this->getExpression(3), $this->getExpression(4)); - - $domExpression = new self($domExpression); - $dowExpression = new self($dowExpression); - - $domRunDates = $domExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - $dowRunDates = $dowExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - - if ($parts[self::DAY] === '?' || $parts[self::DAY] === '*') { - $domRunDates = []; - } - - if ($parts[self::WEEKDAY] === '?' || $parts[self::WEEKDAY] === '*') { - $dowRunDates = []; - } - - $combined = array_merge($domRunDates, $dowRunDates); - usort($combined, function ($a, $b) { - return $a->format('Y-m-d H:i:s') <=> $b->format('Y-m-d H:i:s'); - }); - if ($invert) { - $combined = array_reverse($combined); - } - - return $combined[$nth]; - } - - // Set a hard limit to bail on an impossible date - for ($i = 0; $i < $this->maxIterationCount; ++$i) { - foreach ($parts as $position => $part) { - $satisfied = false; - // Get the field object used to validate this part - $field = $fields[$position]; - // Check if this is singular or a list - if (false === strpos($part, ',')) { - $satisfied = $field->isSatisfiedBy($nextRun, $part, $invert); - } else { - foreach (array_map('trim', explode(',', $part)) as $listPart) { - if ($field->isSatisfiedBy($nextRun, $listPart, $invert)) { - $satisfied = true; - - break; - } - } - } - - // If the field is not satisfied, then start over - if (!$satisfied) { - $field->increment($nextRun, $invert, $part); - - continue 2; - } - } - - // Skip this match if needed - if ((!$allowCurrentDate && $nextRun == $currentDate) || --$nth > -1) { - $this->fieldFactory->getField(self::MINUTE)->increment($nextRun, $invert, $parts[self::MINUTE] ?? null); - continue; - } - - return $nextRun; - } - - // @codeCoverageIgnoreStart - throw new RuntimeException('Impossible CRON expression'); - // @codeCoverageIgnoreEnd - } - - /** - * Workout what timeZone should be used. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @return string - */ - protected function determineTimeZone($currentTime, ?string $timeZone): string - { - if (null !== $timeZone) { - return $timeZone; - } - - if ($currentTime instanceof DateTimeInterface) { - return $currentTime->getTimezone()->getName(); - } - - return date_default_timezone_get(); - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php deleted file mode 100644 index e08f62ea..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php +++ /dev/null @@ -1,164 +0,0 @@ - - */ -class DayOfMonthField extends AbstractField -{ - /** - * {@inheritdoc} - */ - protected $rangeStart = 1; - - /** - * {@inheritdoc} - */ - protected $rangeEnd = 31; - - /** - * Get the nearest day of the week for a given day in a month. - * - * @param int $currentYear Current year - * @param int $currentMonth Current month - * @param int $targetDay Target day of the month - * - * @return \DateTime|null Returns the nearest date - */ - private static function getNearestWeekday(int $currentYear, int $currentMonth, int $targetDay): ?DateTime - { - $tday = str_pad((string) $targetDay, 2, '0', STR_PAD_LEFT); - $target = DateTime::createFromFormat('Y-m-d', "${currentYear}-${currentMonth}-${tday}"); - - if ($target === false) { - return null; - } - - $currentWeekday = (int) $target->format('N'); - - if ($currentWeekday < 6) { - return $target; - } - - $lastDayOfMonth = $target->format('t'); - foreach ([-1, 1, -2, 2] as $i) { - $adjusted = $targetDay + $i; - if ($adjusted > 0 && $adjusted <= $lastDayOfMonth) { - $target->setDate($currentYear, $currentMonth, $adjusted); - - if ((int) $target->format('N') < 6 && (int) $target->format('m') === $currentMonth) { - return $target; - } - } - } - - return null; - } - - /** - * {@inheritdoc} - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - // ? states that the field value is to be skipped - if ('?' === $value) { - return true; - } - - $fieldValue = $date->format('d'); - - // Check to see if this is the last day of the month - if ('L' === $value) { - return $fieldValue === $date->format('t'); - } - - // Check to see if this is the nearest weekday to a particular value - if (strpos($value, 'W')) { - // Parse the target day - $targetDay = (int) substr($value, 0, strpos($value, 'W')); - // Find out if the current day is the nearest day of the week - $nearest = self::getNearestWeekday( - (int) $date->format('Y'), - (int) $date->format('m'), - $targetDay - ); - if ($nearest) { - return $date->format('j') === $nearest->format('j'); - } - - throw new \RuntimeException('Unable to return nearest weekday'); - } - - return $this->isSatisfied((int) $date->format('d'), $value); - } - - /** - * @inheritDoc - * - * @param \DateTime|\DateTimeImmutable $date - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->add(new \DateInterval('P1D')); - $date = $date->setTime(0, 0); - } else { - $date = $date->sub(new \DateInterval('P1D')); - $date = $date->setTime(23, 59); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function validate(string $value): bool - { - $basicChecks = parent::validate($value); - - // Validate that a list don't have W or L - if (false !== strpos($value, ',') && (false !== strpos($value, 'W') || false !== strpos($value, 'L'))) { - return false; - } - - if (!$basicChecks) { - if ('?' === $value) { - return true; - } - - if ('L' === $value) { - return true; - } - - if (preg_match('/^(.*)W$/', $value, $matches)) { - return $this->validate($matches[1]); - } - - return false; - } - - return $basicChecks; - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php deleted file mode 100644 index 5ac003da..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php +++ /dev/null @@ -1,194 +0,0 @@ - 'MON', 2 => 'TUE', 3 => 'WED', 4 => 'THU', 5 => 'FRI', 6 => 'SAT', 7 => 'SUN']; - - /** - * Constructor - */ - public function __construct() - { - $this->nthRange = range(1, 5); - parent::__construct(); - } - - /** - * @inheritDoc - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - if ('?' === $value) { - return true; - } - - // Convert text day of the week values to integers - $value = $this->convertLiterals($value); - - $currentYear = (int) $date->format('Y'); - $currentMonth = (int) $date->format('m'); - $lastDayOfMonth = (int) $date->format('t'); - - // Find out if this is the last specific weekday of the month - if (strpos($value, 'L')) { - $weekday = $this->convertLiterals(substr($value, 0, strpos($value, 'L'))); - $weekday %= 7; - - $daysInMonth = (int) $date->format('t'); - $remainingDaysInMonth = $daysInMonth - (int) $date->format('d'); - return (($weekday === (int) $date->format('w')) && ($remainingDaysInMonth < 7)); - } - - // Handle # hash tokens - if (strpos($value, '#')) { - [$weekday, $nth] = explode('#', $value); - - if (!is_numeric($nth)) { - throw new InvalidArgumentException("Hashed weekdays must be numeric, {$nth} given"); - } else { - $nth = (int) $nth; - } - - // 0 and 7 are both Sunday, however 7 matches date('N') format ISO-8601 - if ('0' === $weekday) { - $weekday = 7; - } - - $weekday = (int) $this->convertLiterals((string) $weekday); - - // Validate the hash fields - if ($weekday < 0 || $weekday > 7) { - throw new InvalidArgumentException("Weekday must be a value between 0 and 7. {$weekday} given"); - } - - if (!\in_array($nth, $this->nthRange, true)) { - throw new InvalidArgumentException("There are never more than 5 or less than 1 of a given weekday in a month, {$nth} given"); - } - - // The current weekday must match the targeted weekday to proceed - if ((int) $date->format('N') !== $weekday) { - return false; - } - - $tdate = clone $date; - $tdate = $tdate->setDate($currentYear, $currentMonth, 1); - $dayCount = 0; - $currentDay = 1; - while ($currentDay < $lastDayOfMonth + 1) { - if ((int) $tdate->format('N') === $weekday) { - if (++$dayCount >= $nth) { - break; - } - } - $tdate = $tdate->setDate($currentYear, $currentMonth, ++$currentDay); - } - - return (int) $date->format('j') === $currentDay; - } - - // Handle day of the week values - if (false !== strpos($value, '-')) { - $parts = explode('-', $value); - if ('7' === $parts[0]) { - $parts[0] = 0; - } elseif ('0' === $parts[1]) { - $parts[1] = 7; - } - $value = implode('-', $parts); - } - - // Test to see which Sunday to use -- 0 == 7 == Sunday - $format = \in_array(7, array_map(function ($value) { - return (int) $value; - }, str_split($value)), true) ? 'N' : 'w'; - $fieldValue = (int) $date->format($format); - - return $this->isSatisfied($fieldValue, $value); - } - - /** - * @inheritDoc - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->add(new \DateInterval('P1D')); - $date = $date->setTime(0, 0); - } else { - $date = $date->sub(new \DateInterval('P1D')); - $date = $date->setTime(23, 59); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function validate(string $value): bool - { - $basicChecks = parent::validate($value); - - if (!$basicChecks) { - if ('?' === $value) { - return true; - } - - // Handle the # value - if (false !== strpos($value, '#')) { - $chunks = explode('#', $value); - $chunks[0] = $this->convertLiterals($chunks[0]); - - if (parent::validate($chunks[0]) && is_numeric($chunks[1]) && \in_array((int) $chunks[1], $this->nthRange, true)) { - return true; - } - } - - if (preg_match('/^(.*)L$/', $value, $matches)) { - return $this->validate($matches[1]); - } - - return false; - } - - return $basicChecks; - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php deleted file mode 100644 index 839b2757..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php +++ /dev/null @@ -1,52 +0,0 @@ -fields[$position] ?? $this->fields[$position] = $this->instantiateField($position); - } - - private function instantiateField(int $position): FieldInterface - { - switch ($position) { - case CronExpression::MINUTE: - return new MinutesField(); - case CronExpression::HOUR: - return new HoursField(); - case CronExpression::DAY: - return new DayOfMonthField(); - case CronExpression::MONTH: - return new MonthField(); - case CronExpression::WEEKDAY: - return new DayOfWeekField(); - } - - throw new InvalidArgumentException( - ($position + 1) . ' is not a valid position' - ); - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php deleted file mode 100644 index 8bd3c658..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php +++ /dev/null @@ -1,8 +0,0 @@ -format('H'); - $retval = $this->isSatisfied($checkValue, $value); - if ($retval) { - return $retval; - } - - // Are we on the edge of a transition - $lastTransition = $this->getPastTransition($date); - if (($lastTransition !== null) && ($lastTransition["ts"] > ((int) $date->format('U') - 3600))) { - $dtLastOffset = clone $date; - $this->timezoneSafeModify($dtLastOffset, "-1 hour"); - $lastOffset = $dtLastOffset->getOffset(); - - $dtNextOffset = clone $date; - $this->timezoneSafeModify($dtNextOffset, "+1 hour"); - $nextOffset = $dtNextOffset->getOffset(); - - $offsetChange = $nextOffset - $lastOffset; - if ($offsetChange >= 3600) { - $checkValue -= 1; - return $this->isSatisfied($checkValue, $value); - } - if ((! $invert) && ($offsetChange <= -3600)) { - $checkValue += 1; - return $this->isSatisfied($checkValue, $value); - } - } - - return $retval; - } - - public function getPastTransition(DateTimeInterface $date): ?array - { - $currentTimestamp = (int) $date->format('U'); - if ( - ($this->transitions === null) - || ($this->transitionsStart < ($currentTimestamp + 86400)) - || ($this->transitionsEnd > ($currentTimestamp - 86400)) - ) { - // We start a day before current time so we can differentiate between the first transition entry - // and a change that happens now - $dtLimitStart = clone $date; - $dtLimitStart = $dtLimitStart->modify("-12 months"); - $dtLimitEnd = clone $date; - $dtLimitEnd = $dtLimitEnd->modify('+12 months'); - - $this->transitions = $date->getTimezone()->getTransitions( - $dtLimitStart->getTimestamp(), - $dtLimitEnd->getTimestamp() - ); - if ($this->transitions === false) { - return null; - } - $this->transitionsStart = $dtLimitStart->getTimestamp(); - $this->transitionsEnd = $dtLimitEnd->getTimestamp(); - } - - $nextTransition = null; - foreach ($this->transitions as $transition) { - if ($transition["ts"] > $currentTimestamp) { - continue; - } - - if (($nextTransition !== null) && ($transition["ts"] < $nextTransition["ts"])) { - continue; - } - - $nextTransition = $transition; - } - - return ($nextTransition ?? null); - } - - /** - * {@inheritdoc} - * - * @param string|null $parts - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - $originalTimestamp = (int) $date->format('U'); - - // Change timezone to UTC temporarily. This will - // allow us to go back or forwards and hour even - // if DST will be changed between the hours. - if (null === $parts || '*' === $parts) { - if ($invert) { - $date = $date->sub(new \DateInterval('PT1H')); - } else { - $date = $date->add(new \DateInterval('PT1H')); - } - - $date = $this->setTimeHour($date, $invert, $originalTimestamp); - return $this; - } - - $parts = false !== strpos($parts, ',') ? explode(',', $parts) : [$parts]; - $hours = []; - foreach ($parts as $part) { - $hours = array_merge($hours, $this->getRangeForExpression($part, 23)); - } - - $current_hour = (int) $date->format('H'); - $position = $invert ? \count($hours) - 1 : 0; - $countHours = \count($hours); - if ($countHours > 1) { - for ($i = 0; $i < $countHours - 1; ++$i) { - if ((!$invert && $current_hour >= $hours[$i] && $current_hour < $hours[$i + 1]) || - ($invert && $current_hour > $hours[$i] && $current_hour <= $hours[$i + 1])) { - $position = $invert ? $i : $i + 1; - - break; - } - } - } - - $target = (int) $hours[$position]; - $originalHour = (int)$date->format('H'); - - $originalDay = (int)$date->format('d'); - $previousOffset = $date->getOffset(); - - if (! $invert) { - if ($originalHour >= $target) { - $distance = 24 - $originalHour; - $date = $this->timezoneSafeModify($date, "+{$distance} hours"); - - $actualDay = (int)$date->format('d'); - $actualHour = (int)$date->format('H'); - if (($actualDay !== ($originalDay + 1)) && ($actualHour !== 0)) { - $offsetChange = ($previousOffset - $date->getOffset()); - $date = $this->timezoneSafeModify($date, "+{$offsetChange} seconds"); - } - - $originalHour = (int)$date->format('H'); - } - - $distance = $target - $originalHour; - $date = $this->timezoneSafeModify($date, "+{$distance} hours"); - } else { - if ($originalHour <= $target) { - $distance = ($originalHour + 1); - $date = $this->timezoneSafeModify($date, "-" . $distance . " hours"); - - $actualDay = (int)$date->format('d'); - $actualHour = (int)$date->format('H'); - if (($actualDay !== ($originalDay - 1)) && ($actualHour !== 23)) { - $offsetChange = ($previousOffset - $date->getOffset()); - $date = $this->timezoneSafeModify($date, "+{$offsetChange} seconds"); - } - - $originalHour = (int)$date->format('H'); - } - - $distance = $originalHour - $target; - $date = $this->timezoneSafeModify($date, "-{$distance} hours"); - } - - $date = $this->setTimeHour($date, $invert, $originalTimestamp); - - $actualHour = (int)$date->format('H'); - if ($invert && ($actualHour === ($target - 1) || (($actualHour === 23) && ($target === 0)))) { - $date = $this->timezoneSafeModify($date, "+1 hour"); - } - - return $this; - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php deleted file mode 100644 index eda91098..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php +++ /dev/null @@ -1,96 +0,0 @@ -isSatisfied((int)$date->format('i'), $value); - } - - /** - * {@inheritdoc} - * {@inheritDoc} - * - * @param string|null $parts - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (is_null($parts)) { - $date = $this->timezoneSafeModify($date, ($invert ? "-" : "+") ."1 minute"); - return $this; - } - - $current_minute = (int) $date->format('i'); - - $parts = false !== strpos($parts, ',') ? explode(',', $parts) : [$parts]; - $minutes = []; - foreach ($parts as $part) { - $minutes = array_merge($minutes, $this->getRangeForExpression($part, 59)); - } - - $position = $invert ? \count($minutes) - 1 : 0; - if (\count($minutes) > 1) { - for ($i = 0; $i < \count($minutes) - 1; ++$i) { - if ((!$invert && $current_minute >= $minutes[$i] && $current_minute < $minutes[$i + 1]) || - ($invert && $current_minute > $minutes[$i] && $current_minute <= $minutes[$i + 1])) { - $position = $invert ? $i : $i + 1; - - break; - } - } - } - - $target = (int) $minutes[$position]; - $originalMinute = (int) $date->format("i"); - - if (! $invert) { - if ($originalMinute >= $target) { - $distance = 60 - $originalMinute; - $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); - - $originalMinute = (int) $date->format("i"); - } - - $distance = $target - $originalMinute; - $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); - } else { - if ($originalMinute <= $target) { - $distance = ($originalMinute + 1); - $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); - - $originalMinute = (int) $date->format("i"); - } - - $distance = $originalMinute - $target; - $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); - } - - return $this; - } -} diff --git a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php b/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php deleted file mode 100644 index 5a15fbb8..00000000 --- a/niucloud/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php +++ /dev/null @@ -1,61 +0,0 @@ - 'JAN', 2 => 'FEB', 3 => 'MAR', 4 => 'APR', 5 => 'MAY', 6 => 'JUN', 7 => 'JUL', - 8 => 'AUG', 9 => 'SEP', 10 => 'OCT', 11 => 'NOV', 12 => 'DEC', ]; - - /** - * {@inheritdoc} - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - if ($value === '?') { - return true; - } - - $value = $this->convertLiterals($value); - - return $this->isSatisfied((int) $date->format('m'), $value); - } - - /** - * @inheritDoc - * - * @param \DateTime|\DateTimeImmutable $date - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->modify('first day of next month'); - $date = $date->setTime(0, 0); - } else { - $date = $date->modify('last day of previous month'); - $date = $date->setTime(23, 59); - } - - return $this; - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/CHANGELOG.md b/niucloud/vendor/ezyang/htmlpurifier/CHANGELOG.md deleted file mode 100644 index 55cb9029..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/CHANGELOG.md +++ /dev/null @@ -1,6 +0,0 @@ -# [4.16.0](https://github.com/ezyang/htmlpurifier/compare/v4.15.0...v4.16.0) (2022-09-18) - - -### Features - -* add semantic release ([#307](https://github.com/ezyang/htmlpurifier/issues/307)) ([db31243](https://github.com/ezyang/htmlpurifier/commit/db312435cb9d8d73395f75f9642a43ba6de5e903)), closes [#322](https://github.com/ezyang/htmlpurifier/issues/322) [#323](https://github.com/ezyang/htmlpurifier/issues/323) [#326](https://github.com/ezyang/htmlpurifier/issues/326) [#327](https://github.com/ezyang/htmlpurifier/issues/327) [#328](https://github.com/ezyang/htmlpurifier/issues/328) [#329](https://github.com/ezyang/htmlpurifier/issues/329) [#330](https://github.com/ezyang/htmlpurifier/issues/330) [#331](https://github.com/ezyang/htmlpurifier/issues/331) [#332](https://github.com/ezyang/htmlpurifier/issues/332) [#333](https://github.com/ezyang/htmlpurifier/issues/333) [#337](https://github.com/ezyang/htmlpurifier/issues/337) [#335](https://github.com/ezyang/htmlpurifier/issues/335) [ezyang/htmlpurifier#334](https://github.com/ezyang/htmlpurifier/issues/334) [#336](https://github.com/ezyang/htmlpurifier/issues/336) [#338](https://github.com/ezyang/htmlpurifier/issues/338) diff --git a/niucloud/vendor/ezyang/htmlpurifier/CREDITS b/niucloud/vendor/ezyang/htmlpurifier/CREDITS deleted file mode 100644 index 7921b45a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/CREDITS +++ /dev/null @@ -1,9 +0,0 @@ - -CREDITS - -Almost everything written by Edward Z. Yang (Ambush Commander). Lots of thanks -to the DevNetwork Community for their help (see docs/ref-devnetwork.html for -more details), Feyd especially (namely IPv6 and optimization). Thanks to RSnake -for letting me package his fantastic XSS cheatsheet for a smoketest. - - vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/LICENSE b/niucloud/vendor/ezyang/htmlpurifier/LICENSE deleted file mode 100644 index 8c88a20d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/LICENSE +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/README.md b/niucloud/vendor/ezyang/htmlpurifier/README.md deleted file mode 100644 index e6b7199c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/README.md +++ /dev/null @@ -1,29 +0,0 @@ -HTML Purifier [![Build Status](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/ezyang/htmlpurifier/actions/workflows/ci.yml) -============= - -HTML Purifier is an HTML filtering solution that uses a unique combination -of robust whitelists and aggressive parsing to ensure that not only are -XSS attacks thwarted, but the resulting HTML is standards compliant. - -HTML Purifier is oriented towards richly formatted documents from -untrusted sources that require CSS and a full tag-set. This library can -be configured to accept a more restrictive set of tags, but it won't be -as efficient as more bare-bones parsers. It will, however, do the job -right, which may be more important. - -Places to go: - -* See INSTALL for a quick installation guide -* See docs/ for developer-oriented documentation, code examples and - an in-depth installation guide. -* See WYSIWYG for information on editors like TinyMCE and FCKeditor - -HTML Purifier can be found on the web at: [http://htmlpurifier.org/](http://htmlpurifier.org/) - -## Installation - -Package available on [Composer](https://packagist.org/packages/ezyang/htmlpurifier). - -If you're using Composer to manage dependencies, you can use - - $ composer require ezyang/htmlpurifier diff --git a/niucloud/vendor/ezyang/htmlpurifier/VERSION b/niucloud/vendor/ezyang/htmlpurifier/VERSION deleted file mode 100644 index f029ee57..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/VERSION +++ /dev/null @@ -1 +0,0 @@ -4.15.0 \ No newline at end of file diff --git a/niucloud/vendor/ezyang/htmlpurifier/composer.json b/niucloud/vendor/ezyang/htmlpurifier/composer.json deleted file mode 100644 index d7558295..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/composer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "ezyang/htmlpurifier", - "description": "Standards compliant HTML filter written in PHP", - "type": "library", - "keywords": ["html"], - "homepage": "http://htmlpurifier.org/", - "license": "LGPL-2.1-or-later", - "authors": [ - { - "name": "Edward Z. Yang", - "email": "admin@htmlpurifier.org", - "homepage": "http://ezyang.com" - } - ], - "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" - }, - "require-dev": { - "cerdic/css-tidy": "^1.7 || ^2.0", - "simpletest/simpletest": "dev-master" - }, - "autoload": { - "psr-0": { "HTMLPurifier": "library/" }, - "files": ["library/HTMLPurifier.composer.php"], - "exclude-from-classmap": [ - "/library/HTMLPurifier/Language/" - ] - }, - "suggest": { - "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", - "ext-iconv": "Converts text to and from non-UTF-8 encodings", - "ext-bcmath": "Used for unit conversion and imagecrash protection", - "ext-tidy": "Used for pretty-printing HTML" - }, - "config": { - "sort-packages": true - }, - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/ezyang/simpletest.git" - } - ] -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php deleted file mode 100644 index 1960c399..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.auto.php +++ /dev/null @@ -1,11 +0,0 @@ -purify($html, $config); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php deleted file mode 100644 index 47ee0133..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.includes.php +++ /dev/null @@ -1,235 +0,0 @@ - $attributes) { - $allowed_elements[$element] = true; - foreach ($attributes as $attribute => $x) { - $allowed_attributes["$element.$attribute"] = true; - } - } - $config->set('HTML.AllowedElements', $allowed_elements); - $config->set('HTML.AllowedAttributes', $allowed_attributes); - if ($allowed_protocols !== null) { - $config->set('URI.AllowedSchemes', $allowed_protocols); - } - $purifier = new HTMLPurifier($config); - return $purifier->purify($string); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php deleted file mode 100644 index 39b1b653..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.path.php +++ /dev/null @@ -1,11 +0,0 @@ -config = HTMLPurifier_Config::create($config); - $this->strategy = new HTMLPurifier_Strategy_Core(); - } - - /** - * Adds a filter to process the output. First come first serve - * - * @param HTMLPurifier_Filter $filter HTMLPurifier_Filter object - */ - public function addFilter($filter) - { - trigger_error( - 'HTMLPurifier->addFilter() is deprecated, use configuration directives' . - ' in the Filter namespace or Filter.Custom', - E_USER_WARNING - ); - $this->filters[] = $filter; - } - - /** - * Filters an HTML snippet/document to be XSS-free and standards-compliant. - * - * @param string $html String of HTML to purify - * @param HTMLPurifier_Config $config Config object for this operation, - * if omitted, defaults to the config object specified during this - * object's construction. The parameter can also be any type - * that HTMLPurifier_Config::create() supports. - * - * @return string Purified HTML - */ - public function purify($html, $config = null) - { - // :TODO: make the config merge in, instead of replace - $config = $config ? HTMLPurifier_Config::create($config) : $this->config; - - // implementation is partially environment dependant, partially - // configuration dependant - $lexer = HTMLPurifier_Lexer::create($config); - - $context = new HTMLPurifier_Context(); - - // setup HTML generator - $this->generator = new HTMLPurifier_Generator($config, $context); - $context->register('Generator', $this->generator); - - // set up global context variables - if ($config->get('Core.CollectErrors')) { - // may get moved out if other facilities use it - $language_factory = HTMLPurifier_LanguageFactory::instance(); - $language = $language_factory->create($config, $context); - $context->register('Locale', $language); - - $error_collector = new HTMLPurifier_ErrorCollector($context); - $context->register('ErrorCollector', $error_collector); - } - - // setup id_accumulator context, necessary due to the fact that - // AttrValidator can be called from many places - $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context); - $context->register('IDAccumulator', $id_accumulator); - - $html = HTMLPurifier_Encoder::convertToUTF8($html, $config, $context); - - // setup filters - $filter_flags = $config->getBatch('Filter'); - $custom_filters = $filter_flags['Custom']; - unset($filter_flags['Custom']); - $filters = array(); - foreach ($filter_flags as $filter => $flag) { - if (!$flag) { - continue; - } - if (strpos($filter, '.') !== false) { - continue; - } - $class = "HTMLPurifier_Filter_$filter"; - $filters[] = new $class; - } - foreach ($custom_filters as $filter) { - // maybe "HTMLPurifier_Filter_$filter", but be consistent with AutoFormat - $filters[] = $filter; - } - $filters = array_merge($filters, $this->filters); - // maybe prepare(), but later - - for ($i = 0, $filter_size = count($filters); $i < $filter_size; $i++) { - $html = $filters[$i]->preFilter($html, $config, $context); - } - - // purified HTML - $html = - $this->generator->generateFromTokens( - // list of tokens - $this->strategy->execute( - // list of un-purified tokens - $lexer->tokenizeHTML( - // un-purified HTML - $html, - $config, - $context - ), - $config, - $context - ) - ); - - for ($i = $filter_size - 1; $i >= 0; $i--) { - $html = $filters[$i]->postFilter($html, $config, $context); - } - - $html = HTMLPurifier_Encoder::convertFromUTF8($html, $config, $context); - $this->context =& $context; - return $html; - } - - /** - * Filters an array of HTML snippets - * - * @param string[] $array_of_html Array of html snippets - * @param HTMLPurifier_Config $config Optional config object for this operation. - * See HTMLPurifier::purify() for more details. - * - * @return string[] Array of purified HTML - */ - public function purifyArray($array_of_html, $config = null) - { - $context_array = array(); - $array = array(); - foreach($array_of_html as $key=>$value){ - if (is_array($value)) { - $array[$key] = $this->purifyArray($value, $config); - } else { - $array[$key] = $this->purify($value, $config); - } - $context_array[$key] = $this->context; - } - $this->context = $context_array; - return $array; - } - - /** - * Singleton for enforcing just one HTML Purifier in your system - * - * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype - * HTMLPurifier instance to overload singleton with, - * or HTMLPurifier_Config instance to configure the - * generated version with. - * - * @return HTMLPurifier - */ - public static function instance($prototype = null) - { - if (!self::$instance || $prototype) { - if ($prototype instanceof HTMLPurifier) { - self::$instance = $prototype; - } elseif ($prototype) { - self::$instance = new HTMLPurifier($prototype); - } else { - self::$instance = new HTMLPurifier(); - } - } - return self::$instance; - } - - /** - * Singleton for enforcing just one HTML Purifier in your system - * - * @param HTMLPurifier|HTMLPurifier_Config $prototype Optional prototype - * HTMLPurifier instance to overload singleton with, - * or HTMLPurifier_Config instance to configure the - * generated version with. - * - * @return HTMLPurifier - * @note Backwards compatibility, see instance() - */ - public static function getInstance($prototype = null) - { - return HTMLPurifier::instance($prototype); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php deleted file mode 100644 index 94543f59..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier.safe-includes.php +++ /dev/null @@ -1,229 +0,0 @@ -getHTMLDefinition(); - $parent = new HTMLPurifier_Token_Start($definition->info_parent); - $stack = array($parent->toNode()); - foreach ($tokens as $token) { - $token->skip = null; // [MUT] - $token->carryover = null; // [MUT] - if ($token instanceof HTMLPurifier_Token_End) { - $token->start = null; // [MUT] - $r = array_pop($stack); - //assert($r->name === $token->name); - //assert(empty($token->attr)); - $r->endCol = $token->col; - $r->endLine = $token->line; - $r->endArmor = $token->armor; - continue; - } - $node = $token->toNode(); - $stack[count($stack)-1]->children[] = $node; - if ($token instanceof HTMLPurifier_Token_Start) { - $stack[] = $node; - } - } - //assert(count($stack) == 1); - return $stack[0]; - } - - public static function flatten($node, $config, $context) { - $level = 0; - $nodes = array($level => new HTMLPurifier_Queue(array($node))); - $closingTokens = array(); - $tokens = array(); - do { - while (!$nodes[$level]->isEmpty()) { - $node = $nodes[$level]->shift(); // FIFO - list($start, $end) = $node->toTokenPair(); - if ($level > 0) { - $tokens[] = $start; - } - if ($end !== NULL) { - $closingTokens[$level][] = $end; - } - if ($node instanceof HTMLPurifier_Node_Element) { - $level++; - $nodes[$level] = new HTMLPurifier_Queue(); - foreach ($node->children as $childNode) { - $nodes[$level]->push($childNode); - } - } - } - $level--; - if ($level && isset($closingTokens[$level])) { - while ($token = array_pop($closingTokens[$level])) { - $tokens[] = $token; - } - } - } while ($level > 0); - return $tokens; - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php deleted file mode 100644 index c7b17cf1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrCollections.php +++ /dev/null @@ -1,148 +0,0 @@ -doConstruct($attr_types, $modules); - } - - public function doConstruct($attr_types, $modules) - { - // load extensions from the modules - foreach ($modules as $module) { - foreach ($module->attr_collections as $coll_i => $coll) { - if (!isset($this->info[$coll_i])) { - $this->info[$coll_i] = array(); - } - foreach ($coll as $attr_i => $attr) { - if ($attr_i === 0 && isset($this->info[$coll_i][$attr_i])) { - // merge in includes - $this->info[$coll_i][$attr_i] = array_merge( - $this->info[$coll_i][$attr_i], - $attr - ); - continue; - } - $this->info[$coll_i][$attr_i] = $attr; - } - } - } - // perform internal expansions and inclusions - foreach ($this->info as $name => $attr) { - // merge attribute collections that include others - $this->performInclusions($this->info[$name]); - // replace string identifiers with actual attribute objects - $this->expandIdentifiers($this->info[$name], $attr_types); - } - } - - /** - * Takes a reference to an attribute associative array and performs - * all inclusions specified by the zero index. - * @param array &$attr Reference to attribute array - */ - public function performInclusions(&$attr) - { - if (!isset($attr[0])) { - return; - } - $merge = $attr[0]; - $seen = array(); // recursion guard - // loop through all the inclusions - for ($i = 0; isset($merge[$i]); $i++) { - if (isset($seen[$merge[$i]])) { - continue; - } - $seen[$merge[$i]] = true; - // foreach attribute of the inclusion, copy it over - if (!isset($this->info[$merge[$i]])) { - continue; - } - foreach ($this->info[$merge[$i]] as $key => $value) { - if (isset($attr[$key])) { - continue; - } // also catches more inclusions - $attr[$key] = $value; - } - if (isset($this->info[$merge[$i]][0])) { - // recursion - $merge = array_merge($merge, $this->info[$merge[$i]][0]); - } - } - unset($attr[0]); - } - - /** - * Expands all string identifiers in an attribute array by replacing - * them with the appropriate values inside HTMLPurifier_AttrTypes - * @param array &$attr Reference to attribute array - * @param HTMLPurifier_AttrTypes $attr_types HTMLPurifier_AttrTypes instance - */ - public function expandIdentifiers(&$attr, $attr_types) - { - // because foreach will process new elements we add, make sure we - // skip duplicates - $processed = array(); - - foreach ($attr as $def_i => $def) { - // skip inclusions - if ($def_i === 0) { - continue; - } - - if (isset($processed[$def_i])) { - continue; - } - - // determine whether or not attribute is required - if ($required = (strpos($def_i, '*') !== false)) { - // rename the definition - unset($attr[$def_i]); - $def_i = trim($def_i, '*'); - $attr[$def_i] = $def; - } - - $processed[$def_i] = true; - - // if we've already got a literal object, move on - if (is_object($def)) { - // preserve previous required - $attr[$def_i]->required = ($required || $attr[$def_i]->required); - continue; - } - - if ($def === false) { - unset($attr[$def_i]); - continue; - } - - if ($t = $attr_types->get($def)) { - $attr[$def_i] = $t; - $attr[$def_i]->required = $required; - } else { - unset($attr[$def_i]); - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php deleted file mode 100644 index 739646fa..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef.php +++ /dev/null @@ -1,144 +0,0 @@ - by removing - * leading and trailing whitespace, ignoring line feeds, and replacing - * carriage returns and tabs with spaces. While most useful for HTML - * attributes specified as CDATA, it can also be applied to most CSS - * values. - * - * @note This method is not entirely standards compliant, as trim() removes - * more types of whitespace than specified in the spec. In practice, - * this is rarely a problem, as those extra characters usually have - * already been removed by HTMLPurifier_Encoder. - * - * @warning This processing is inconsistent with XML's whitespace handling - * as specified by section 3.3.3 and referenced XHTML 1.0 section - * 4.7. However, note that we are NOT necessarily - * parsing XML, thus, this behavior may still be correct. We - * assume that newlines have been normalized. - */ - public function parseCDATA($string) - { - $string = trim($string); - $string = str_replace(array("\n", "\t", "\r"), ' ', $string); - return $string; - } - - /** - * Factory method for creating this class from a string. - * @param string $string String construction info - * @return HTMLPurifier_AttrDef Created AttrDef object corresponding to $string - */ - public function make($string) - { - // default implementation, return a flyweight of this object. - // If $string has an effect on the returned object (i.e. you - // need to overload this method), it is best - // to clone or instantiate new copies. (Instantiation is safer.) - return $this; - } - - /** - * Removes spaces from rgb(0, 0, 0) so that shorthand CSS properties work - * properly. THIS IS A HACK! - * @param string $string a CSS colour definition - * @return string - */ - protected function mungeRgb($string) - { - $p = '\s*(\d+(\.\d+)?([%]?))\s*'; - - if (preg_match('/(rgba|hsla)\(/', $string)) { - return preg_replace('/(rgba|hsla)\('.$p.','.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8,\11)', $string); - } - - return preg_replace('/(rgb|hsl)\('.$p.','.$p.','.$p.'\)/', '\1(\2,\5,\8)', $string); - } - - /** - * Parses a possibly escaped CSS string and returns the "pure" - * version of it. - */ - protected function expandCSSEscape($string) - { - // flexibly parse it - $ret = ''; - for ($i = 0, $c = strlen($string); $i < $c; $i++) { - if ($string[$i] === '\\') { - $i++; - if ($i >= $c) { - $ret .= '\\'; - break; - } - if (ctype_xdigit($string[$i])) { - $code = $string[$i]; - for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) { - if (!ctype_xdigit($string[$i])) { - break; - } - $code .= $string[$i]; - } - // We have to be extremely careful when adding - // new characters, to make sure we're not breaking - // the encoding. - $char = HTMLPurifier_Encoder::unichr(hexdec($code)); - if (HTMLPurifier_Encoder::cleanUTF8($char) === '') { - continue; - } - $ret .= $char; - if ($i < $c && trim($string[$i]) !== '') { - $i--; - } - continue; - } - if ($string[$i] === "\n") { - continue; - } - } - $ret .= $string[$i]; - } - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php deleted file mode 100644 index ad2cb90a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS.php +++ /dev/null @@ -1,136 +0,0 @@ -parseCDATA($css); - - $definition = $config->getCSSDefinition(); - $allow_duplicates = $config->get("CSS.AllowDuplicates"); - - - // According to the CSS2.1 spec, the places where a - // non-delimiting semicolon can appear are in strings - // escape sequences. So here is some dumb hack to - // handle quotes. - $len = strlen($css); - $accum = ""; - $declarations = array(); - $quoted = false; - for ($i = 0; $i < $len; $i++) { - $c = strcspn($css, ";'\"", $i); - $accum .= substr($css, $i, $c); - $i += $c; - if ($i == $len) break; - $d = $css[$i]; - if ($quoted) { - $accum .= $d; - if ($d == $quoted) { - $quoted = false; - } - } else { - if ($d == ";") { - $declarations[] = $accum; - $accum = ""; - } else { - $accum .= $d; - $quoted = $d; - } - } - } - if ($accum != "") $declarations[] = $accum; - - $propvalues = array(); - $new_declarations = ''; - - /** - * Name of the current CSS property being validated. - */ - $property = false; - $context->register('CurrentCSSProperty', $property); - - foreach ($declarations as $declaration) { - if (!$declaration) { - continue; - } - if (!strpos($declaration, ':')) { - continue; - } - list($property, $value) = explode(':', $declaration, 2); - $property = trim($property); - $value = trim($value); - $ok = false; - do { - if (isset($definition->info[$property])) { - $ok = true; - break; - } - if (ctype_lower($property)) { - break; - } - $property = strtolower($property); - if (isset($definition->info[$property])) { - $ok = true; - break; - } - } while (0); - if (!$ok) { - continue; - } - // inefficient call, since the validator will do this again - if (strtolower(trim($value)) !== 'inherit') { - // inherit works for everything (but only on the base property) - $result = $definition->info[$property]->validate( - $value, - $config, - $context - ); - } else { - $result = 'inherit'; - } - if ($result === false) { - continue; - } - if ($allow_duplicates) { - $new_declarations .= "$property:$result;"; - } else { - $propvalues[$property] = $result; - } - } - - $context->destroy('CurrentCSSProperty'); - - // procedure does not write the new CSS simultaneously, so it's - // slightly inefficient, but it's the only way of getting rid of - // duplicates. Perhaps config to optimize it, but not now. - - foreach ($propvalues as $prop => $value) { - $new_declarations .= "$prop:$value;"; - } - - return $new_declarations ? $new_declarations : false; - - } - -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php deleted file mode 100644 index af2b83df..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/AlphaValue.php +++ /dev/null @@ -1,34 +0,0 @@ - 1.0) { - $result = '1'; - } - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php deleted file mode 100644 index 28c49883..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Background.php +++ /dev/null @@ -1,113 +0,0 @@ -getCSSDefinition(); - $this->info['background-color'] = $def->info['background-color']; - $this->info['background-image'] = $def->info['background-image']; - $this->info['background-repeat'] = $def->info['background-repeat']; - $this->info['background-attachment'] = $def->info['background-attachment']; - $this->info['background-position'] = $def->info['background-position']; - $this->info['background-size'] = $def->info['background-size']; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') { - return false; - } - - // munge rgb() decl if necessary - $string = $this->mungeRgb($string); - - // assumes URI doesn't have spaces in it - $bits = explode(' ', $string); // bits to process - - $caught = array(); - $caught['color'] = false; - $caught['image'] = false; - $caught['repeat'] = false; - $caught['attachment'] = false; - $caught['position'] = false; - $caught['size'] = false; - - $i = 0; // number of catches - - foreach ($bits as $bit) { - if ($bit === '') { - continue; - } - foreach ($caught as $key => $status) { - if ($key != 'position') { - if ($status !== false) { - continue; - } - $r = $this->info['background-' . $key]->validate($bit, $config, $context); - } else { - $r = $bit; - } - if ($r === false) { - continue; - } - if ($key == 'position') { - if ($caught[$key] === false) { - $caught[$key] = ''; - } - $caught[$key] .= $r . ' '; - } else { - $caught[$key] = $r; - } - $i++; - break; - } - } - - if (!$i) { - return false; - } - if ($caught['position'] !== false) { - $caught['position'] = $this->info['background-position']-> - validate($caught['position'], $config, $context); - } - - $ret = array(); - foreach ($caught as $value) { - if ($value === false) { - continue; - } - $ret[] = $value; - } - - if (empty($ret)) { - return false; - } - return implode(' ', $ret); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php deleted file mode 100644 index 4580ef5a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php +++ /dev/null @@ -1,157 +0,0 @@ - | | left | center | right - ] - [ - | | top | center | bottom - ]? - ] | - [ // this signifies that the vertical and horizontal adjectives - // can be arbitrarily ordered, however, there can only be two, - // one of each, or none at all - [ - left | center | right - ] || - [ - top | center | bottom - ] - ] - top, left = 0% - center, (none) = 50% - bottom, right = 100% -*/ - -/* QuirksMode says: - keyword + length/percentage must be ordered correctly, as per W3C - - Internet Explorer and Opera, however, support arbitrary ordering. We - should fix it up. - - Minor issue though, not strictly necessary. -*/ - -// control freaks may appreciate the ability to convert these to -// percentages or something, but it's not necessary - -/** - * Validates the value of background-position. - */ -class HTMLPurifier_AttrDef_CSS_BackgroundPosition extends HTMLPurifier_AttrDef -{ - - /** - * @type HTMLPurifier_AttrDef_CSS_Length - */ - protected $length; - - /** - * @type HTMLPurifier_AttrDef_CSS_Percentage - */ - protected $percentage; - - public function __construct() - { - $this->length = new HTMLPurifier_AttrDef_CSS_Length(); - $this->percentage = new HTMLPurifier_AttrDef_CSS_Percentage(); - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = $this->parseCDATA($string); - $bits = explode(' ', $string); - - $keywords = array(); - $keywords['h'] = false; // left, right - $keywords['v'] = false; // top, bottom - $keywords['ch'] = false; // center (first word) - $keywords['cv'] = false; // center (second word) - $measures = array(); - - $i = 0; - - $lookup = array( - 'top' => 'v', - 'bottom' => 'v', - 'left' => 'h', - 'right' => 'h', - 'center' => 'c' - ); - - foreach ($bits as $bit) { - if ($bit === '') { - continue; - } - - // test for keyword - $lbit = ctype_lower($bit) ? $bit : strtolower($bit); - if (isset($lookup[$lbit])) { - $status = $lookup[$lbit]; - if ($status == 'c') { - if ($i == 0) { - $status = 'ch'; - } else { - $status = 'cv'; - } - } - $keywords[$status] = $lbit; - $i++; - } - - // test for length - $r = $this->length->validate($bit, $config, $context); - if ($r !== false) { - $measures[] = $r; - $i++; - } - - // test for percentage - $r = $this->percentage->validate($bit, $config, $context); - if ($r !== false) { - $measures[] = $r; - $i++; - } - } - - if (!$i) { - return false; - } // no valid values were caught - - $ret = array(); - - // first keyword - if ($keywords['h']) { - $ret[] = $keywords['h']; - } elseif ($keywords['ch']) { - $ret[] = $keywords['ch']; - $keywords['cv'] = false; // prevent re-use: center = center center - } elseif (count($measures)) { - $ret[] = array_shift($measures); - } - - if ($keywords['v']) { - $ret[] = $keywords['v']; - } elseif ($keywords['cv']) { - $ret[] = $keywords['cv']; - } elseif (count($measures)) { - $ret[] = array_shift($measures); - } - - if (empty($ret)) { - return false; - } - return implode(' ', $ret); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php deleted file mode 100644 index 16243ba1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Border.php +++ /dev/null @@ -1,56 +0,0 @@ -getCSSDefinition(); - $this->info['border-width'] = $def->info['border-width']; - $this->info['border-style'] = $def->info['border-style']; - $this->info['border-top-color'] = $def->info['border-top-color']; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = $this->parseCDATA($string); - $string = $this->mungeRgb($string); - $bits = explode(' ', $string); - $done = array(); // segments we've finished - $ret = ''; // return value - foreach ($bits as $bit) { - foreach ($this->info as $propname => $validator) { - if (isset($done[$propname])) { - continue; - } - $r = $validator->validate($bit, $config, $context); - if ($r !== false) { - $ret .= $r . ' '; - $done[$propname] = true; - break; - } - } - } - return rtrim($ret); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php deleted file mode 100644 index d7287a00..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Color.php +++ /dev/null @@ -1,161 +0,0 @@ -alpha = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - } - - /** - * @param string $color - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($color, $config, $context) - { - static $colors = null; - if ($colors === null) { - $colors = $config->get('Core.ColorKeywords'); - } - - $color = trim($color); - if ($color === '') { - return false; - } - - $lower = strtolower($color); - if (isset($colors[$lower])) { - return $colors[$lower]; - } - - if (preg_match('#(rgb|rgba|hsl|hsla)\(#', $color, $matches) === 1) { - $length = strlen($color); - if (strpos($color, ')') !== $length - 1) { - return false; - } - - // get used function : rgb, rgba, hsl or hsla - $function = $matches[1]; - - $parameters_size = 3; - $alpha_channel = false; - if (substr($function, -1) === 'a') { - $parameters_size = 4; - $alpha_channel = true; - } - - /* - * Allowed types for values : - * parameter_position => [type => max_value] - */ - $allowed_types = array( - 1 => array('percentage' => 100, 'integer' => 255), - 2 => array('percentage' => 100, 'integer' => 255), - 3 => array('percentage' => 100, 'integer' => 255), - ); - $allow_different_types = false; - - if (strpos($function, 'hsl') !== false) { - $allowed_types = array( - 1 => array('integer' => 360), - 2 => array('percentage' => 100), - 3 => array('percentage' => 100), - ); - $allow_different_types = true; - } - - $values = trim(str_replace($function, '', $color), ' ()'); - - $parts = explode(',', $values); - if (count($parts) !== $parameters_size) { - return false; - } - - $type = false; - $new_parts = array(); - $i = 0; - - foreach ($parts as $part) { - $i++; - $part = trim($part); - - if ($part === '') { - return false; - } - - // different check for alpha channel - if ($alpha_channel === true && $i === count($parts)) { - $result = $this->alpha->validate($part, $config, $context); - - if ($result === false) { - return false; - } - - $new_parts[] = (string)$result; - continue; - } - - if (substr($part, -1) === '%') { - $current_type = 'percentage'; - } else { - $current_type = 'integer'; - } - - if (!array_key_exists($current_type, $allowed_types[$i])) { - return false; - } - - if (!$type) { - $type = $current_type; - } - - if ($allow_different_types === false && $type != $current_type) { - return false; - } - - $max_value = $allowed_types[$i][$current_type]; - - if ($current_type == 'integer') { - // Return value between range 0 -> $max_value - $new_parts[] = (int)max(min($part, $max_value), 0); - } elseif ($current_type == 'percentage') { - $new_parts[] = (float)max(min(rtrim($part, '%'), $max_value), 0) . '%'; - } - } - - $new_values = implode(',', $new_parts); - - $color = $function . '(' . $new_values . ')'; - } else { - // hexadecimal handling - if ($color[0] === '#') { - $hex = substr($color, 1); - } else { - $hex = $color; - $color = '#' . $color; - } - $length = strlen($hex); - if ($length !== 3 && $length !== 6) { - return false; - } - if (!ctype_xdigit($hex)) { - return false; - } - } - return $color; - } - -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php deleted file mode 100644 index 9c175055..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Composite.php +++ /dev/null @@ -1,48 +0,0 @@ -defs = $defs; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - foreach ($this->defs as $i => $def) { - $result = $this->defs[$i]->validate($string, $config, $context); - if ($result !== false) { - return $result; - } - } - return false; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php deleted file mode 100644 index 9d77cc9a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/DenyElementDecorator.php +++ /dev/null @@ -1,44 +0,0 @@ -def = $def; - $this->element = $element; - } - - /** - * Checks if CurrentToken is set and equal to $this->element - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $token = $context->get('CurrentToken', true); - if ($token && $token->name == $this->element) { - return false; - } - return $this->def->validate($string, $config, $context); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php deleted file mode 100644 index bde4c330..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Filter.php +++ /dev/null @@ -1,77 +0,0 @@ -intValidator = new HTMLPurifier_AttrDef_Integer(); - } - - /** - * @param string $value - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($value, $config, $context) - { - $value = $this->parseCDATA($value); - if ($value === 'none') { - return $value; - } - // if we looped this we could support multiple filters - $function_length = strcspn($value, '('); - $function = trim(substr($value, 0, $function_length)); - if ($function !== 'alpha' && - $function !== 'Alpha' && - $function !== 'progid:DXImageTransform.Microsoft.Alpha' - ) { - return false; - } - $cursor = $function_length + 1; - $parameters_length = strcspn($value, ')', $cursor); - $parameters = substr($value, $cursor, $parameters_length); - $params = explode(',', $parameters); - $ret_params = array(); - $lookup = array(); - foreach ($params as $param) { - list($key, $value) = explode('=', $param); - $key = trim($key); - $value = trim($value); - if (isset($lookup[$key])) { - continue; - } - if ($key !== 'opacity') { - continue; - } - $value = $this->intValidator->validate($value, $config, $context); - if ($value === false) { - continue; - } - $int = (int)$value; - if ($int > 100) { - $value = '100'; - } - if ($int < 0) { - $value = '0'; - } - $ret_params[] = "$key=$value"; - $lookup[$key] = true; - } - $ret_parameters = implode(',', $ret_params); - $ret_function = "$function($ret_parameters)"; - return $ret_function; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php deleted file mode 100644 index 579b97ef..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Font.php +++ /dev/null @@ -1,176 +0,0 @@ -getCSSDefinition(); - $this->info['font-style'] = $def->info['font-style']; - $this->info['font-variant'] = $def->info['font-variant']; - $this->info['font-weight'] = $def->info['font-weight']; - $this->info['font-size'] = $def->info['font-size']; - $this->info['line-height'] = $def->info['line-height']; - $this->info['font-family'] = $def->info['font-family']; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - static $system_fonts = array( - 'caption' => true, - 'icon' => true, - 'menu' => true, - 'message-box' => true, - 'small-caption' => true, - 'status-bar' => true - ); - - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') { - return false; - } - - // check if it's one of the keywords - $lowercase_string = strtolower($string); - if (isset($system_fonts[$lowercase_string])) { - return $lowercase_string; - } - - $bits = explode(' ', $string); // bits to process - $stage = 0; // this indicates what we're looking for - $caught = array(); // which stage 0 properties have we caught? - $stage_1 = array('font-style', 'font-variant', 'font-weight'); - $final = ''; // output - - for ($i = 0, $size = count($bits); $i < $size; $i++) { - if ($bits[$i] === '') { - continue; - } - switch ($stage) { - case 0: // attempting to catch font-style, font-variant or font-weight - foreach ($stage_1 as $validator_name) { - if (isset($caught[$validator_name])) { - continue; - } - $r = $this->info[$validator_name]->validate( - $bits[$i], - $config, - $context - ); - if ($r !== false) { - $final .= $r . ' '; - $caught[$validator_name] = true; - break; - } - } - // all three caught, continue on - if (count($caught) >= 3) { - $stage = 1; - } - if ($r !== false) { - break; - } - case 1: // attempting to catch font-size and perhaps line-height - $found_slash = false; - if (strpos($bits[$i], '/') !== false) { - list($font_size, $line_height) = - explode('/', $bits[$i]); - if ($line_height === '') { - // ooh, there's a space after the slash! - $line_height = false; - $found_slash = true; - } - } else { - $font_size = $bits[$i]; - $line_height = false; - } - $r = $this->info['font-size']->validate( - $font_size, - $config, - $context - ); - if ($r !== false) { - $final .= $r; - // attempt to catch line-height - if ($line_height === false) { - // we need to scroll forward - for ($j = $i + 1; $j < $size; $j++) { - if ($bits[$j] === '') { - continue; - } - if ($bits[$j] === '/') { - if ($found_slash) { - return false; - } else { - $found_slash = true; - continue; - } - } - $line_height = $bits[$j]; - break; - } - } else { - // slash already found - $found_slash = true; - $j = $i; - } - if ($found_slash) { - $i = $j; - $r = $this->info['line-height']->validate( - $line_height, - $config, - $context - ); - if ($r !== false) { - $final .= '/' . $r; - } - } - $final .= ' '; - $stage = 2; - break; - } - return false; - case 2: // attempting to catch font-family - $font_family = - implode(' ', array_slice($bits, $i, $size - $i)); - $r = $this->info['font-family']->validate( - $font_family, - $config, - $context - ); - if ($r !== false) { - $final .= $r . ' '; - // processing completed successfully - return rtrim($final); - } - return false; - } - } - return false; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php deleted file mode 100644 index 74e24c88..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/FontFamily.php +++ /dev/null @@ -1,219 +0,0 @@ -mask = '_- '; - for ($c = 'a'; $c <= 'z'; $c++) { - $this->mask .= $c; - } - for ($c = 'A'; $c <= 'Z'; $c++) { - $this->mask .= $c; - } - for ($c = '0'; $c <= '9'; $c++) { - $this->mask .= $c; - } // cast-y, but should be fine - // special bytes used by UTF-8 - for ($i = 0x80; $i <= 0xFF; $i++) { - // We don't bother excluding invalid bytes in this range, - // because the our restriction of well-formed UTF-8 will - // prevent these from ever occurring. - $this->mask .= chr($i); - } - - /* - PHP's internal strcspn implementation is - O(length of string * length of mask), making it inefficient - for large masks. However, it's still faster than - preg_match 8) - for (p = s1;;) { - spanp = s2; - do { - if (*spanp == c || p == s1_end) { - return p - s1; - } - } while (spanp++ < (s2_end - 1)); - c = *++p; - } - */ - // possible optimization: invert the mask. - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - static $generic_names = array( - 'serif' => true, - 'sans-serif' => true, - 'monospace' => true, - 'fantasy' => true, - 'cursive' => true - ); - $allowed_fonts = $config->get('CSS.AllowedFonts'); - - // assume that no font names contain commas in them - $fonts = explode(',', $string); - $final = ''; - foreach ($fonts as $font) { - $font = trim($font); - if ($font === '') { - continue; - } - // match a generic name - if (isset($generic_names[$font])) { - if ($allowed_fonts === null || isset($allowed_fonts[$font])) { - $final .= $font . ', '; - } - continue; - } - // match a quoted name - if ($font[0] === '"' || $font[0] === "'") { - $length = strlen($font); - if ($length <= 2) { - continue; - } - $quote = $font[0]; - if ($font[$length - 1] !== $quote) { - continue; - } - $font = substr($font, 1, $length - 2); - } - - $font = $this->expandCSSEscape($font); - - // $font is a pure representation of the font name - - if ($allowed_fonts !== null && !isset($allowed_fonts[$font])) { - continue; - } - - if (ctype_alnum($font) && $font !== '') { - // very simple font, allow it in unharmed - $final .= $font . ', '; - continue; - } - - // bugger out on whitespace. form feed (0C) really - // shouldn't show up regardless - $font = str_replace(array("\n", "\t", "\r", "\x0C"), ' ', $font); - - // Here, there are various classes of characters which need - // to be treated differently: - // - Alphanumeric characters are essentially safe. We - // handled these above. - // - Spaces require quoting, though most parsers will do - // the right thing if there aren't any characters that - // can be misinterpreted - // - Dashes rarely occur, but they fairly unproblematic - // for parsing/rendering purposes. - // The above characters cover the majority of Western font - // names. - // - Arbitrary Unicode characters not in ASCII. Because - // most parsers give little thought to Unicode, treatment - // of these codepoints is basically uniform, even for - // punctuation-like codepoints. These characters can - // show up in non-Western pages and are supported by most - // major browsers, for example: "MS 明朝" is a - // legitimate font-name - // . See - // the CSS3 spec for more examples: - // - // You can see live samples of these on the Internet: - // - // However, most of these fonts have ASCII equivalents: - // for example, 'MS Mincho', and it's considered - // professional to use ASCII font names instead of - // Unicode font names. Thanks Takeshi Terada for - // providing this information. - // The following characters, to my knowledge, have not been - // used to name font names. - // - Single quote. While theoretically you might find a - // font name that has a single quote in its name (serving - // as an apostrophe, e.g. Dave's Scribble), I haven't - // been able to find any actual examples of this. - // Internet Explorer's cssText translation (which I - // believe is invoked by innerHTML) normalizes any - // quoting to single quotes, and fails to escape single - // quotes. (Note that this is not IE's behavior for all - // CSS properties, just some sort of special casing for - // font-family). So a single quote *cannot* be used - // safely in the font-family context if there will be an - // innerHTML/cssText translation. Note that Firefox 3.x - // does this too. - // - Double quote. In IE, these get normalized to - // single-quotes, no matter what the encoding. (Fun - // fact, in IE8, the 'content' CSS property gained - // support, where they special cased to preserve encoded - // double quotes, but still translate unadorned double - // quotes into single quotes.) So, because their - // fixpoint behavior is identical to single quotes, they - // cannot be allowed either. Firefox 3.x displays - // single-quote style behavior. - // - Backslashes are reduced by one (so \\ -> \) every - // iteration, so they cannot be used safely. This shows - // up in IE7, IE8 and FF3 - // - Semicolons, commas and backticks are handled properly. - // - The rest of the ASCII punctuation is handled properly. - // We haven't checked what browsers do to unadorned - // versions, but this is not important as long as the - // browser doesn't /remove/ surrounding quotes (as IE does - // for HTML). - // - // With these results in hand, we conclude that there are - // various levels of safety: - // - Paranoid: alphanumeric, spaces and dashes(?) - // - International: Paranoid + non-ASCII Unicode - // - Edgy: Everything except quotes, backslashes - // - NoJS: Standards compliance, e.g. sod IE. Note that - // with some judicious character escaping (since certain - // types of escaping doesn't work) this is theoretically - // OK as long as innerHTML/cssText is not called. - // We believe that international is a reasonable default - // (that we will implement now), and once we do more - // extensive research, we may feel comfortable with dropping - // it down to edgy. - - // Edgy: alphanumeric, spaces, dashes, underscores and Unicode. Use of - // str(c)spn assumes that the string was already well formed - // Unicode (which of course it is). - if (strspn($font, $this->mask) !== strlen($font)) { - continue; - } - - // Historical: - // In the absence of innerHTML/cssText, these ugly - // transforms don't pose a security risk (as \\ and \" - // might--these escapes are not supported by most browsers). - // We could try to be clever and use single-quote wrapping - // when there is a double quote present, but I have choosen - // not to implement that. (NOTE: you can reduce the amount - // of escapes by one depending on what quoting style you use) - // $font = str_replace('\\', '\\5C ', $font); - // $font = str_replace('"', '\\22 ', $font); - // $font = str_replace("'", '\\27 ', $font); - - // font possibly with spaces, requires quoting - $final .= "'$font', "; - } - $final = rtrim($final, ', '); - if ($final === '') { - return false; - } - return $final; - } - -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php deleted file mode 100644 index 973002c1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Ident.php +++ /dev/null @@ -1,32 +0,0 @@ -def = $def; - $this->allow = $allow; - } - - /** - * Intercepts and removes !important if necessary - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - // test for ! and important tokens - $string = trim($string); - $is_important = false; - // :TODO: optimization: test directly for !important and ! important - if (strlen($string) >= 9 && substr($string, -9) === 'important') { - $temp = rtrim(substr($string, 0, -9)); - // use a temp, because we might want to restore important - if (strlen($temp) >= 1 && substr($temp, -1) === '!') { - $string = rtrim(substr($temp, 0, -1)); - $is_important = true; - } - } - $string = $this->def->validate($string, $config, $context); - if ($this->allow && $is_important) { - $string .= ' !important'; - } - return $string; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php deleted file mode 100644 index f12453a0..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Length.php +++ /dev/null @@ -1,77 +0,0 @@ -min = $min !== null ? HTMLPurifier_Length::make($min) : null; - $this->max = $max !== null ? HTMLPurifier_Length::make($max) : null; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = $this->parseCDATA($string); - - // Optimizations - if ($string === '') { - return false; - } - if ($string === '0') { - return '0'; - } - if (strlen($string) === 1) { - return false; - } - - $length = HTMLPurifier_Length::make($string); - if (!$length->isValid()) { - return false; - } - - if ($this->min) { - $c = $length->compareTo($this->min); - if ($c === false) { - return false; - } - if ($c < 0) { - return false; - } - } - if ($this->max) { - $c = $length->compareTo($this->max); - if ($c === false) { - return false; - } - if ($c > 0) { - return false; - } - } - return $length->toString(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php deleted file mode 100644 index e74d4265..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/ListStyle.php +++ /dev/null @@ -1,112 +0,0 @@ -getCSSDefinition(); - $this->info['list-style-type'] = $def->info['list-style-type']; - $this->info['list-style-position'] = $def->info['list-style-position']; - $this->info['list-style-image'] = $def->info['list-style-image']; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - // regular pre-processing - $string = $this->parseCDATA($string); - if ($string === '') { - return false; - } - - // assumes URI doesn't have spaces in it - $bits = explode(' ', strtolower($string)); // bits to process - - $caught = array(); - $caught['type'] = false; - $caught['position'] = false; - $caught['image'] = false; - - $i = 0; // number of catches - $none = false; - - foreach ($bits as $bit) { - if ($i >= 3) { - return; - } // optimization bit - if ($bit === '') { - continue; - } - foreach ($caught as $key => $status) { - if ($status !== false) { - continue; - } - $r = $this->info['list-style-' . $key]->validate($bit, $config, $context); - if ($r === false) { - continue; - } - if ($r === 'none') { - if ($none) { - continue; - } else { - $none = true; - } - if ($key == 'image') { - continue; - } - } - $caught[$key] = $r; - $i++; - break; - } - } - - if (!$i) { - return false; - } - - $ret = array(); - - // construct type - if ($caught['type']) { - $ret[] = $caught['type']; - } - - // construct image - if ($caught['image']) { - $ret[] = $caught['image']; - } - - // construct position - if ($caught['position']) { - $ret[] = $caught['position']; - } - - if (empty($ret)) { - return false; - } - return implode(' ', $ret); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php deleted file mode 100644 index e707f871..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Multiple.php +++ /dev/null @@ -1,71 +0,0 @@ -single = $single; - $this->max = $max; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = $this->mungeRgb($this->parseCDATA($string)); - if ($string === '') { - return false; - } - $parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n - $length = count($parts); - $final = ''; - for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) { - if (ctype_space($parts[$i])) { - continue; - } - $result = $this->single->validate($parts[$i], $config, $context); - if ($result !== false) { - $final .= $result . ' '; - $num++; - } - } - if ($final === '') { - return false; - } - return rtrim($final); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php deleted file mode 100644 index ef49d20f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Number.php +++ /dev/null @@ -1,90 +0,0 @@ -non_negative = $non_negative; - } - - /** - * @param string $number - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string|bool - * @warning Some contexts do not pass $config, $context. These - * variables should not be used without checking HTMLPurifier_Length - */ - public function validate($number, $config, $context) - { - $number = $this->parseCDATA($number); - - if ($number === '') { - return false; - } - if ($number === '0') { - return '0'; - } - - $sign = ''; - switch ($number[0]) { - case '-': - if ($this->non_negative) { - return false; - } - $sign = '-'; - case '+': - $number = substr($number, 1); - } - - if (ctype_digit($number)) { - $number = ltrim($number, '0'); - return $number ? $sign . $number : '0'; - } - - // Period is the only non-numeric character allowed - if (strpos($number, '.') === false) { - return false; - } - - list($left, $right) = explode('.', $number, 2); - - if ($left === '' && $right === '') { - return false; - } - if ($left !== '' && !ctype_digit($left)) { - return false; - } - - // Remove leading zeros until positive number or a zero stays left - if (ltrim($left, '0') != '') { - $left = ltrim($left, '0'); - } else { - $left = '0'; - } - - $right = rtrim($right, '0'); - - if ($right === '') { - return $left ? $sign . $left : '0'; - } elseif (!ctype_digit($right)) { - return false; - } - return $sign . $left . '.' . $right; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php deleted file mode 100644 index f0f25c50..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/Percentage.php +++ /dev/null @@ -1,54 +0,0 @@ -number_def = new HTMLPurifier_AttrDef_CSS_Number($non_negative); - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = $this->parseCDATA($string); - - if ($string === '') { - return false; - } - $length = strlen($string); - if ($length === 1) { - return false; - } - if ($string[$length - 1] !== '%') { - return false; - } - - $number = substr($string, 0, $length - 1); - $number = $this->number_def->validate($number, $config, $context); - - if ($number === false) { - return false; - } - return "$number%"; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php deleted file mode 100644 index 5fd4b7f7..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/TextDecoration.php +++ /dev/null @@ -1,46 +0,0 @@ - true, - 'overline' => true, - 'underline' => true, - ); - - $string = strtolower($this->parseCDATA($string)); - - if ($string === 'none') { - return $string; - } - - $parts = explode(' ', $string); - $final = ''; - foreach ($parts as $part) { - if (isset($allowed_values[$part])) { - $final .= $part . ' '; - } - } - $final = rtrim($final); - if ($final === '') { - return false; - } - return $final; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php deleted file mode 100644 index 6617acac..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/CSS/URI.php +++ /dev/null @@ -1,77 +0,0 @@ -parseCDATA($uri_string); - if (strpos($uri_string, 'url(') !== 0) { - return false; - } - $uri_string = substr($uri_string, 4); - if (strlen($uri_string) == 0) { - return false; - } - $new_length = strlen($uri_string) - 1; - if ($uri_string[$new_length] != ')') { - return false; - } - $uri = trim(substr($uri_string, 0, $new_length)); - - if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) { - $quote = $uri[0]; - $new_length = strlen($uri) - 1; - if ($uri[$new_length] !== $quote) { - return false; - } - $uri = substr($uri, 1, $new_length - 1); - } - - $uri = $this->expandCSSEscape($uri); - - $result = parent::validate($uri, $config, $context); - - if ($result === false) { - return false; - } - - // extra sanity check; should have been done by URI - $result = str_replace(array('"', "\\", "\n", "\x0c", "\r"), "", $result); - - // suspicious characters are ()'; we're going to percent encode - // them for safety. - $result = str_replace(array('(', ')', "'"), array('%28', '%29', '%27'), $result); - - // there's an extra bug where ampersands lose their escaping on - // an innerHTML cycle, so a very unlucky query parameter could - // then change the meaning of the URL. Unfortunately, there's - // not much we can do about that... - return "url(\"$result\")"; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php deleted file mode 100644 index 6698a00c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Clone.php +++ /dev/null @@ -1,44 +0,0 @@ -clone = $clone; - } - - /** - * @param string $v - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($v, $config, $context) - { - return $this->clone->validate($v, $config, $context); - } - - /** - * @param string $string - * @return HTMLPurifier_AttrDef - */ - public function make($string) - { - return clone $this->clone; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php deleted file mode 100644 index 8abda7f6..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Enum.php +++ /dev/null @@ -1,73 +0,0 @@ -valid_values = array_flip($valid_values); - $this->case_sensitive = $case_sensitive; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = trim($string); - if (!$this->case_sensitive) { - // we may want to do full case-insensitive libraries - $string = ctype_lower($string) ? $string : strtolower($string); - } - $result = isset($this->valid_values[$string]); - - return $result ? $string : false; - } - - /** - * @param string $string In form of comma-delimited list of case-insensitive - * valid values. Example: "foo,bar,baz". Prepend "s:" to make - * case sensitive - * @return HTMLPurifier_AttrDef_Enum - */ - public function make($string) - { - if (strlen($string) > 2 && $string[0] == 's' && $string[1] == ':') { - $string = substr($string, 2); - $sensitive = true; - } else { - $sensitive = false; - } - $values = explode(',', $string); - return new HTMLPurifier_AttrDef_Enum($values, $sensitive); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php deleted file mode 100644 index be3bbc8d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Bool.php +++ /dev/null @@ -1,48 +0,0 @@ -name = $name; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - return $this->name; - } - - /** - * @param string $string Name of attribute - * @return HTMLPurifier_AttrDef_HTML_Bool - */ - public function make($string) - { - return new HTMLPurifier_AttrDef_HTML_Bool($string); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php deleted file mode 100644 index d5013488..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Class.php +++ /dev/null @@ -1,48 +0,0 @@ -getDefinition('HTML')->doctype->name; - if ($name == "XHTML 1.1" || $name == "XHTML 2.0") { - return parent::split($string, $config, $context); - } else { - return preg_split('/\s+/', $string); - } - } - - /** - * @param array $tokens - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - protected function filter($tokens, $config, $context) - { - $allowed = $config->get('Attr.AllowedClasses'); - $forbidden = $config->get('Attr.ForbiddenClasses'); - $ret = array(); - foreach ($tokens as $token) { - if (($allowed === null || isset($allowed[$token])) && - !isset($forbidden[$token]) && - // We need this O(n) check because of PHP's array - // implementation that casts -0 to 0. - !in_array($token, $ret, true) - ) { - $ret[] = $token; - } - } - return $ret; - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php deleted file mode 100644 index 946ebb78..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Color.php +++ /dev/null @@ -1,51 +0,0 @@ -get('Core.ColorKeywords'); - } - - $string = trim($string); - - if (empty($string)) { - return false; - } - $lower = strtolower($string); - if (isset($colors[$lower])) { - return $colors[$lower]; - } - if ($string[0] === '#') { - $hex = substr($string, 1); - } else { - $hex = $string; - } - - $length = strlen($hex); - if ($length !== 3 && $length !== 6) { - return false; - } - if (!ctype_xdigit($hex)) { - return false; - } - if ($length === 3) { - $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2]; - } - return "#$hex"; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ContentEditable.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ContentEditable.php deleted file mode 100644 index 5b03d3e3..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ContentEditable.php +++ /dev/null @@ -1,16 +0,0 @@ -get('HTML.Trusted')) { - $allowed = array('', 'true', 'false'); - } - - $enum = new HTMLPurifier_AttrDef_Enum($allowed); - - return $enum->validate($string, $config, $context); - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php deleted file mode 100644 index d79ba12b..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php +++ /dev/null @@ -1,38 +0,0 @@ -valid_values === false) { - $this->valid_values = $config->get('Attr.AllowedFrameTargets'); - } - return parent::validate($string, $config, $context); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php deleted file mode 100644 index 4ba45610..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/ID.php +++ /dev/null @@ -1,113 +0,0 @@ -selector = $selector; - } - - /** - * @param string $id - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($id, $config, $context) - { - if (!$this->selector && !$config->get('Attr.EnableID')) { - return false; - } - - $id = trim($id); // trim it first - - if ($id === '') { - return false; - } - - $prefix = $config->get('Attr.IDPrefix'); - if ($prefix !== '') { - $prefix .= $config->get('Attr.IDPrefixLocal'); - // prevent re-appending the prefix - if (strpos($id, $prefix) !== 0) { - $id = $prefix . $id; - } - } elseif ($config->get('Attr.IDPrefixLocal') !== '') { - trigger_error( - '%Attr.IDPrefixLocal cannot be used unless ' . - '%Attr.IDPrefix is set', - E_USER_WARNING - ); - } - - if (!$this->selector) { - $id_accumulator =& $context->get('IDAccumulator'); - if (isset($id_accumulator->ids[$id])) { - return false; - } - } - - // we purposely avoid using regex, hopefully this is faster - - if ($config->get('Attr.ID.HTML5') === true) { - if (preg_match('/[\t\n\x0b\x0c ]/', $id)) { - return false; - } - } else { - if (ctype_alpha($id)) { - // OK - } else { - if (!ctype_alpha(@$id[0])) { - return false; - } - // primitive style of regexps, I suppose - $trim = trim( - $id, - 'A..Za..z0..9:-._' - ); - if ($trim !== '') { - return false; - } - } - } - - $regexp = $config->get('Attr.IDBlacklistRegexp'); - if ($regexp && preg_match($regexp, $id)) { - return false; - } - - if (!$this->selector) { - $id_accumulator->add($id); - } - - // if no change was made to the ID, return the result - // else, return the new id if stripping whitespace made it - // valid, or return false. - return $id; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php deleted file mode 100644 index 1c4006fb..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Length.php +++ /dev/null @@ -1,56 +0,0 @@ - 100) { - return '100%'; - } - return ((string)$points) . '%'; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php deleted file mode 100644 index 63fa04c1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/LinkTypes.php +++ /dev/null @@ -1,72 +0,0 @@ - 'AllowedRel', - 'rev' => 'AllowedRev' - ); - if (!isset($configLookup[$name])) { - trigger_error( - 'Unrecognized attribute name for link ' . - 'relationship.', - E_USER_ERROR - ); - return; - } - $this->name = $configLookup[$name]; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $allowed = $config->get('Attr.' . $this->name); - if (empty($allowed)) { - return false; - } - - $string = $this->parseCDATA($string); - $parts = explode(' ', $string); - - // lookup to prevent duplicates - $ret_lookup = array(); - foreach ($parts as $part) { - $part = strtolower(trim($part)); - if (!isset($allowed[$part])) { - continue; - } - $ret_lookup[$part] = true; - } - - if (empty($ret_lookup)) { - return false; - } - $string = implode(' ', array_keys($ret_lookup)); - return $string; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php deleted file mode 100644 index bbb20f2f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/MultiLength.php +++ /dev/null @@ -1,60 +0,0 @@ -split($string, $config, $context); - $tokens = $this->filter($tokens, $config, $context); - if (empty($tokens)) { - return false; - } - return implode(' ', $tokens); - } - - /** - * Splits a space separated list of tokens into its constituent parts. - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - protected function split($string, $config, $context) - { - // OPTIMIZABLE! - // do the preg_match, capture all subpatterns for reformulation - - // we don't support U+00A1 and up codepoints or - // escaping because I don't know how to do that with regexps - // and plus it would complicate optimization efforts (you never - // see that anyway). - $pattern = '/(?:(?<=\s)|\A)' . // look behind for space or string start - '((?:--|-?[A-Za-z_])[A-Za-z_\-0-9]*)' . - '(?:(?=\s)|\z)/'; // look ahead for space or string end - preg_match_all($pattern, $string, $matches); - return $matches[1]; - } - - /** - * Template method for removing certain tokens based on arbitrary criteria. - * @note If we wanted to be really functional, we'd do an array_filter - * with a callback. But... we're not. - * @param array $tokens - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - protected function filter($tokens, $config, $context) - { - return $tokens; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php deleted file mode 100644 index a1d019e0..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/HTML/Pixels.php +++ /dev/null @@ -1,76 +0,0 @@ -max = $max; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $string = trim($string); - if ($string === '0') { - return $string; - } - if ($string === '') { - return false; - } - $length = strlen($string); - if (substr($string, $length - 2) == 'px') { - $string = substr($string, 0, $length - 2); - } - if (!is_numeric($string)) { - return false; - } - $int = (int)$string; - - if ($int < 0) { - return '0'; - } - - // upper-bound value, extremely high values can - // crash operating systems, see - // WARNING, above link WILL crash you if you're using Windows - - if ($this->max !== null && $int > $this->max) { - return (string)$this->max; - } - return (string)$int; - } - - /** - * @param string $string - * @return HTMLPurifier_AttrDef - */ - public function make($string) - { - if ($string === '') { - $max = null; - } else { - $max = (int)$string; - } - $class = get_class($this); - return new $class($max); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php deleted file mode 100644 index 400e707d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Integer.php +++ /dev/null @@ -1,91 +0,0 @@ -negative = $negative; - $this->zero = $zero; - $this->positive = $positive; - } - - /** - * @param string $integer - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($integer, $config, $context) - { - $integer = $this->parseCDATA($integer); - if ($integer === '') { - return false; - } - - // we could possibly simply typecast it to integer, but there are - // certain fringe cases that must not return an integer. - - // clip leading sign - if ($this->negative && $integer[0] === '-') { - $digits = substr($integer, 1); - if ($digits === '0') { - $integer = '0'; - } // rm minus sign for zero - } elseif ($this->positive && $integer[0] === '+') { - $digits = $integer = substr($integer, 1); // rm unnecessary plus - } else { - $digits = $integer; - } - - // test if it's numeric - if (!ctype_digit($digits)) { - return false; - } - - // perform scope tests - if (!$this->zero && $integer == 0) { - return false; - } - if (!$this->positive && $integer > 0) { - return false; - } - if (!$this->negative && $integer < 0) { - return false; - } - - return $integer; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php deleted file mode 100644 index 2a55cea6..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Lang.php +++ /dev/null @@ -1,86 +0,0 @@ - 8 || !ctype_alnum($subtags[1])) { - return $new_string; - } - if (!ctype_lower($subtags[1])) { - $subtags[1] = strtolower($subtags[1]); - } - - $new_string .= '-' . $subtags[1]; - if ($num_subtags == 2) { - return $new_string; - } - - // process all other subtags, index 2 and up - for ($i = 2; $i < $num_subtags; $i++) { - $length = strlen($subtags[$i]); - if ($length == 0 || $length > 8 || !ctype_alnum($subtags[$i])) { - return $new_string; - } - if (!ctype_lower($subtags[$i])) { - $subtags[$i] = strtolower($subtags[$i]); - } - $new_string .= '-' . $subtags[$i]; - } - return $new_string; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php deleted file mode 100644 index c7eb3199..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Switch.php +++ /dev/null @@ -1,53 +0,0 @@ -tag = $tag; - $this->withTag = $with_tag; - $this->withoutTag = $without_tag; - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $token = $context->get('CurrentToken', true); - if (!$token || $token->name !== $this->tag) { - return $this->withoutTag->validate($string, $config, $context); - } else { - return $this->withTag->validate($string, $config, $context); - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php deleted file mode 100644 index 4553a4ea..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/Text.php +++ /dev/null @@ -1,21 +0,0 @@ -parseCDATA($string); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php deleted file mode 100644 index c1cd8977..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI.php +++ /dev/null @@ -1,111 +0,0 @@ -parser = new HTMLPurifier_URIParser(); - $this->embedsResource = (bool)$embeds_resource; - } - - /** - * @param string $string - * @return HTMLPurifier_AttrDef_URI - */ - public function make($string) - { - $embeds = ($string === 'embedded'); - return new HTMLPurifier_AttrDef_URI($embeds); - } - - /** - * @param string $uri - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($uri, $config, $context) - { - if ($config->get('URI.Disable')) { - return false; - } - - $uri = $this->parseCDATA($uri); - - // parse the URI - $uri = $this->parser->parse($uri); - if ($uri === false) { - return false; - } - - // add embedded flag to context for validators - $context->register('EmbeddedURI', $this->embedsResource); - - $ok = false; - do { - - // generic validation - $result = $uri->validate($config, $context); - if (!$result) { - break; - } - - // chained filtering - $uri_def = $config->getDefinition('URI'); - $result = $uri_def->filter($uri, $config, $context); - if (!$result) { - break; - } - - // scheme-specific validation - $scheme_obj = $uri->getSchemeObj($config, $context); - if (!$scheme_obj) { - break; - } - if ($this->embedsResource && !$scheme_obj->browsable) { - break; - } - $result = $scheme_obj->validate($uri, $config, $context); - if (!$result) { - break; - } - - // Post chained filtering - $result = $uri_def->postFilter($uri, $config, $context); - if (!$result) { - break; - } - - // survived gauntlet - $ok = true; - - } while (false); - - $context->destroy('EmbeddedURI'); - if (!$ok) { - return false; - } - // back to string - return $uri->toString(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php deleted file mode 100644 index daf32b76..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Email.php +++ /dev/null @@ -1,20 +0,0 @@ -" - // that needs more percent encoding to be done - if ($string == '') { - return false; - } - $string = trim($string); - $result = preg_match('/^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i', $string); - return $result ? $string : false; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php deleted file mode 100644 index 1beeaa5d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/Host.php +++ /dev/null @@ -1,142 +0,0 @@ -ipv4 = new HTMLPurifier_AttrDef_URI_IPv4(); - $this->ipv6 = new HTMLPurifier_AttrDef_URI_IPv6(); - } - - /** - * @param string $string - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool|string - */ - public function validate($string, $config, $context) - { - $length = strlen($string); - // empty hostname is OK; it's usually semantically equivalent: - // the default host as defined by a URI scheme is used: - // - // If the URI scheme defines a default for host, then that - // default applies when the host subcomponent is undefined - // or when the registered name is empty (zero length). - if ($string === '') { - return ''; - } - if ($length > 1 && $string[0] === '[' && $string[$length - 1] === ']') { - //IPv6 - $ip = substr($string, 1, $length - 2); - $valid = $this->ipv6->validate($ip, $config, $context); - if ($valid === false) { - return false; - } - return '[' . $valid . ']'; - } - - // need to do checks on unusual encodings too - $ipv4 = $this->ipv4->validate($string, $config, $context); - if ($ipv4 !== false) { - return $ipv4; - } - - // A regular domain name. - - // This doesn't match I18N domain names, but we don't have proper IRI support, - // so force users to insert Punycode. - - // There is not a good sense in which underscores should be - // allowed, since it's technically not! (And if you go as - // far to allow everything as specified by the DNS spec... - // well, that's literally everything, modulo some space limits - // for the components and the overall name (which, by the way, - // we are NOT checking!). So we (arbitrarily) decide this: - // let's allow underscores wherever we would have allowed - // hyphens, if they are enabled. This is a pretty good match - // for browser behavior, for example, a large number of browsers - // cannot handle foo_.example.com, but foo_bar.example.com is - // fairly well supported. - $underscore = $config->get('Core.AllowHostnameUnderscore') ? '_' : ''; - - // Based off of RFC 1738, but amended so that - // as per RFC 3696, the top label need only not be all numeric. - // The productions describing this are: - $a = '[a-z]'; // alpha - $an = '[a-z0-9]'; // alphanum - $and = "[a-z0-9-$underscore]"; // alphanum | "-" - // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum - $domainlabel = "$an(?:$and*$an)?"; - // AMENDED as per RFC 3696 - // toplabel = alphanum | alphanum *( alphanum | "-" ) alphanum - // side condition: not all numeric - $toplabel = "$an(?:$and*$an)?"; - // hostname = *( domainlabel "." ) toplabel [ "." ] - if (preg_match("/^(?:$domainlabel\.)*($toplabel)\.?$/i", $string, $matches)) { - if (!ctype_digit($matches[1])) { - return $string; - } - } - - // PHP 5.3 and later support this functionality natively - if (function_exists('idn_to_ascii')) { - if (defined('IDNA_NONTRANSITIONAL_TO_ASCII') && defined('INTL_IDNA_VARIANT_UTS46')) { - $string = idn_to_ascii($string, IDNA_NONTRANSITIONAL_TO_ASCII, INTL_IDNA_VARIANT_UTS46); - } else { - $string = idn_to_ascii($string); - } - - // If we have Net_IDNA2 support, we can support IRIs by - // punycoding them. (This is the most portable thing to do, - // since otherwise we have to assume browsers support - } elseif ($config->get('Core.EnableIDNA')) { - $idna = new Net_IDNA2(array('encoding' => 'utf8', 'overlong' => false, 'strict' => true)); - // we need to encode each period separately - $parts = explode('.', $string); - try { - $new_parts = array(); - foreach ($parts as $part) { - $encodable = false; - for ($i = 0, $c = strlen($part); $i < $c; $i++) { - if (ord($part[$i]) > 0x7a) { - $encodable = true; - break; - } - } - if (!$encodable) { - $new_parts[] = $part; - } else { - $new_parts[] = $idna->encode($part); - } - } - $string = implode('.', $new_parts); - } catch (Exception $e) { - // XXX error reporting - } - } - // Try again - if (preg_match("/^($domainlabel\.)*$toplabel\.?$/i", $string)) { - return $string; - } - return false; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php deleted file mode 100644 index 30ac16c9..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv4.php +++ /dev/null @@ -1,45 +0,0 @@ -ip4) { - $this->_loadRegex(); - } - - if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) { - return $aIP; - } - return false; - } - - /** - * Lazy load function to prevent regex from being stuffed in - * cache. - */ - protected function _loadRegex() - { - $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255 - $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})"; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php deleted file mode 100644 index f243793e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrDef/URI/IPv6.php +++ /dev/null @@ -1,89 +0,0 @@ -ip4) { - $this->_loadRegex(); - } - - $original = $aIP; - - $hex = '[0-9a-fA-F]'; - $blk = '(?:' . $hex . '{1,4})'; - $pre = '(?:/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))'; // /0 - /128 - - // prefix check - if (strpos($aIP, '/') !== false) { - if (preg_match('#' . $pre . '$#s', $aIP, $find)) { - $aIP = substr($aIP, 0, 0 - strlen($find[0])); - unset($find); - } else { - return false; - } - } - - // IPv4-compatiblity check - if (preg_match('#(?<=:' . ')' . $this->ip4 . '$#s', $aIP, $find)) { - $aIP = substr($aIP, 0, 0 - strlen($find[0])); - $ip = explode('.', $find[0]); - $ip = array_map('dechex', $ip); - $aIP .= $ip[0] . $ip[1] . ':' . $ip[2] . $ip[3]; - unset($find, $ip); - } - - // compression check - $aIP = explode('::', $aIP); - $c = count($aIP); - if ($c > 2) { - return false; - } elseif ($c == 2) { - list($first, $second) = $aIP; - $first = explode(':', $first); - $second = explode(':', $second); - - if (count($first) + count($second) > 8) { - return false; - } - - while (count($first) < 8) { - array_push($first, '0'); - } - - array_splice($first, 8 - count($second), 8, $second); - $aIP = $first; - unset($first, $second); - } else { - $aIP = explode(':', $aIP[0]); - } - $c = count($aIP); - - if ($c != 8) { - return false; - } - - // All the pieces should be 16-bit hex strings. Are they? - foreach ($aIP as $piece) { - if (!preg_match('#^[0-9a-fA-F]{4}$#s', sprintf('%04s', $piece))) { - return false; - } - } - return $original; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php deleted file mode 100644 index b428331f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform.php +++ /dev/null @@ -1,60 +0,0 @@ -confiscateAttr($attr, 'background'); - // some validation should happen here - - $this->prependCSS($attr, "background-image:url($background);"); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php deleted file mode 100644 index d66c04a5..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BdoDir.php +++ /dev/null @@ -1,27 +0,0 @@ -get('Attr.DefaultTextDir'); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php deleted file mode 100644 index 0f51fd2c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BgColor.php +++ /dev/null @@ -1,28 +0,0 @@ -confiscateAttr($attr, 'bgcolor'); - // some validation should happen here - - $this->prependCSS($attr, "background-color:$bgcolor;"); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php deleted file mode 100644 index f25cd019..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/BoolToCSS.php +++ /dev/null @@ -1,47 +0,0 @@ -attr = $attr; - $this->css = $css; - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr[$this->attr])) { - return $attr; - } - unset($attr[$this->attr]); - $this->prependCSS($attr, $this->css); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php deleted file mode 100644 index 057dc017..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Border.php +++ /dev/null @@ -1,26 +0,0 @@ -confiscateAttr($attr, 'border'); - // some validation should happen here - $this->prependCSS($attr, "border:{$border_width}px solid;"); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php deleted file mode 100644 index 7ccd0e3f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/EnumToCSS.php +++ /dev/null @@ -1,68 +0,0 @@ -attr = $attr; - $this->enumToCSS = $enum_to_css; - $this->caseSensitive = (bool)$case_sensitive; - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr[$this->attr])) { - return $attr; - } - - $value = trim($attr[$this->attr]); - unset($attr[$this->attr]); - - if (!$this->caseSensitive) { - $value = strtolower($value); - } - - if (!isset($this->enumToCSS[$value])) { - return $attr; - } - $this->prependCSS($attr, $this->enumToCSS[$value]); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php deleted file mode 100644 index 235ebb34..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgRequired.php +++ /dev/null @@ -1,47 +0,0 @@ -get('Core.RemoveInvalidImg')) { - return $attr; - } - $attr['src'] = $config->get('Attr.DefaultInvalidImage'); - $src = false; - } - - if (!isset($attr['alt'])) { - if ($src) { - $alt = $config->get('Attr.DefaultImageAlt'); - if ($alt === null) { - $attr['alt'] = basename($attr['src']); - } else { - $attr['alt'] = $alt; - } - } else { - $attr['alt'] = $config->get('Attr.DefaultInvalidImageAlt'); - } - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php deleted file mode 100644 index 350b3358..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ImgSpace.php +++ /dev/null @@ -1,61 +0,0 @@ - array('left', 'right'), - 'vspace' => array('top', 'bottom') - ); - - /** - * @param string $attr - */ - public function __construct($attr) - { - $this->attr = $attr; - if (!isset($this->css[$attr])) { - trigger_error(htmlspecialchars($attr) . ' is not valid space attribute'); - } - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr[$this->attr])) { - return $attr; - } - - $width = $this->confiscateAttr($attr, $this->attr); - // some validation could happen here - - if (!isset($this->css[$this->attr])) { - return $attr; - } - - $style = ''; - foreach ($this->css[$this->attr] as $suffix) { - $property = "margin-$suffix"; - $style .= "$property:{$width}px;"; - } - $this->prependCSS($attr, $style); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php deleted file mode 100644 index 3ab47ed8..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Input.php +++ /dev/null @@ -1,56 +0,0 @@ -pixels = new HTMLPurifier_AttrDef_HTML_Pixels(); - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr['type'])) { - $t = 'text'; - } else { - $t = strtolower($attr['type']); - } - if (isset($attr['checked']) && $t !== 'radio' && $t !== 'checkbox') { - unset($attr['checked']); - } - if (isset($attr['maxlength']) && $t !== 'text' && $t !== 'password') { - unset($attr['maxlength']); - } - if (isset($attr['size']) && $t !== 'text' && $t !== 'password') { - $result = $this->pixels->validate($attr['size'], $config, $context); - if ($result === false) { - unset($attr['size']); - } else { - $attr['size'] = $result; - } - } - if (isset($attr['src']) && $t !== 'image') { - unset($attr['src']); - } - if (!isset($attr['value']) && ($t === 'radio' || $t === 'checkbox')) { - $attr['value'] = ''; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php deleted file mode 100644 index 5b0aff0e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Lang.php +++ /dev/null @@ -1,31 +0,0 @@ -name = $name; - $this->cssName = $css_name ? $css_name : $name; - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr[$this->name])) { - return $attr; - } - $length = $this->confiscateAttr($attr, $this->name); - if (ctype_digit($length)) { - $length .= 'px'; - } - $this->prependCSS($attr, $this->cssName . ":$length;"); - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php deleted file mode 100644 index 63cce683..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Name.php +++ /dev/null @@ -1,33 +0,0 @@ -get('HTML.Attr.Name.UseCDATA')) { - return $attr; - } - if (!isset($attr['name'])) { - return $attr; - } - $id = $this->confiscateAttr($attr, 'name'); - if (isset($attr['id'])) { - return $attr; - } - $attr['id'] = $id; - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php deleted file mode 100644 index 5a1fdbbf..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/NameSync.php +++ /dev/null @@ -1,46 +0,0 @@ -idDef = new HTMLPurifier_AttrDef_HTML_ID(); - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr['name'])) { - return $attr; - } - $name = $attr['name']; - if (isset($attr['id']) && $attr['id'] === $name) { - return $attr; - } - $result = $this->idDef->validate($name, $config, $context); - if ($result === false) { - unset($attr['name']); - } else { - $attr['name'] = $result; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php deleted file mode 100644 index 1057ebee..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/Nofollow.php +++ /dev/null @@ -1,52 +0,0 @@ -parser = new HTMLPurifier_URIParser(); - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr['href'])) { - return $attr; - } - - // XXX Kind of inefficient - $url = $this->parser->parse($attr['href']); - $scheme = $url->getSchemeObj($config, $context); - - if ($scheme->browsable && !$url->isLocal($config, $context)) { - if (isset($attr['rel'])) { - $rels = explode(' ', $attr['rel']); - if (!in_array('nofollow', $rels)) { - $rels[] = 'nofollow'; - } - $attr['rel'] = implode(' ', $rels); - } else { - $attr['rel'] = 'nofollow'; - } - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php deleted file mode 100644 index 231c81a3..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/SafeEmbed.php +++ /dev/null @@ -1,25 +0,0 @@ -uri = new HTMLPurifier_AttrDef_URI(true); // embedded - $this->wmode = new HTMLPurifier_AttrDef_Enum(array('window', 'opaque', 'transparent')); - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - // If we add support for other objects, we'll need to alter the - // transforms. - switch ($attr['name']) { - // application/x-shockwave-flash - // Keep this synchronized with Injector/SafeObject.php - case 'allowScriptAccess': - $attr['value'] = 'never'; - break; - case 'allowNetworking': - $attr['value'] = 'internal'; - break; - case 'allowFullScreen': - if ($config->get('HTML.FlashAllowFullScreen')) { - $attr['value'] = ($attr['value'] == 'true') ? 'true' : 'false'; - } else { - $attr['value'] = 'false'; - } - break; - case 'wmode': - $attr['value'] = $this->wmode->validate($attr['value'], $config, $context); - break; - case 'movie': - case 'src': - $attr['name'] = "movie"; - $attr['value'] = $this->uri->validate($attr['value'], $config, $context); - break; - case 'flashvars': - // we're going to allow arbitrary inputs to the SWF, on - // the reasoning that it could only hack the SWF, not us. - break; - // add other cases to support other param name/value pairs - default: - $attr['name'] = $attr['value'] = null; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php deleted file mode 100644 index b7057bbf..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/ScriptRequired.php +++ /dev/null @@ -1,23 +0,0 @@ - - */ -class HTMLPurifier_AttrTransform_ScriptRequired extends HTMLPurifier_AttrTransform -{ - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr['type'])) { - $attr['type'] = 'text/javascript'; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php deleted file mode 100644 index dd63ea89..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetBlank.php +++ /dev/null @@ -1,45 +0,0 @@ -parser = new HTMLPurifier_URIParser(); - } - - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - if (!isset($attr['href'])) { - return $attr; - } - - // XXX Kind of inefficient - $url = $this->parser->parse($attr['href']); - $scheme = $url->getSchemeObj($config, $context); - - if ($scheme->browsable && !$url->isBenign($config, $context)) { - $attr['target'] = '_blank'; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php deleted file mode 100644 index 1db3c6c0..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTransform/TargetNoopener.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class HTMLPurifier_AttrTransform_Textarea extends HTMLPurifier_AttrTransform -{ - /** - * @param array $attr - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function transform($attr, $config, $context) - { - // Calculated from Firefox - if (!isset($attr['cols'])) { - $attr['cols'] = '22'; - } - if (!isset($attr['rows'])) { - $attr['rows'] = '3'; - } - return $attr; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php deleted file mode 100644 index e4429e86..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrTypes.php +++ /dev/null @@ -1,97 +0,0 @@ -info['Enum'] = new HTMLPurifier_AttrDef_Enum(); - $this->info['Bool'] = new HTMLPurifier_AttrDef_HTML_Bool(); - - $this->info['CDATA'] = new HTMLPurifier_AttrDef_Text(); - $this->info['ID'] = new HTMLPurifier_AttrDef_HTML_ID(); - $this->info['Length'] = new HTMLPurifier_AttrDef_HTML_Length(); - $this->info['MultiLength'] = new HTMLPurifier_AttrDef_HTML_MultiLength(); - $this->info['NMTOKENS'] = new HTMLPurifier_AttrDef_HTML_Nmtokens(); - $this->info['Pixels'] = new HTMLPurifier_AttrDef_HTML_Pixels(); - $this->info['Text'] = new HTMLPurifier_AttrDef_Text(); - $this->info['URI'] = new HTMLPurifier_AttrDef_URI(); - $this->info['LanguageCode'] = new HTMLPurifier_AttrDef_Lang(); - $this->info['Color'] = new HTMLPurifier_AttrDef_HTML_Color(); - $this->info['IAlign'] = self::makeEnum('top,middle,bottom,left,right'); - $this->info['LAlign'] = self::makeEnum('top,bottom,left,right'); - $this->info['FrameTarget'] = new HTMLPurifier_AttrDef_HTML_FrameTarget(); - $this->info['ContentEditable'] = new HTMLPurifier_AttrDef_HTML_ContentEditable(); - - // unimplemented aliases - $this->info['ContentType'] = new HTMLPurifier_AttrDef_Text(); - $this->info['ContentTypes'] = new HTMLPurifier_AttrDef_Text(); - $this->info['Charsets'] = new HTMLPurifier_AttrDef_Text(); - $this->info['Character'] = new HTMLPurifier_AttrDef_Text(); - - // "proprietary" types - $this->info['Class'] = new HTMLPurifier_AttrDef_HTML_Class(); - - // number is really a positive integer (one or more digits) - // FIXME: ^^ not always, see start and value of list items - $this->info['Number'] = new HTMLPurifier_AttrDef_Integer(false, false, true); - } - - private static function makeEnum($in) - { - return new HTMLPurifier_AttrDef_Clone(new HTMLPurifier_AttrDef_Enum(explode(',', $in))); - } - - /** - * Retrieves a type - * @param string $type String type name - * @return HTMLPurifier_AttrDef Object AttrDef for type - */ - public function get($type) - { - // determine if there is any extra info tacked on - if (strpos($type, '#') !== false) { - list($type, $string) = explode('#', $type, 2); - } else { - $string = ''; - } - - if (!isset($this->info[$type])) { - trigger_error('Cannot retrieve undefined attribute type ' . $type, E_USER_ERROR); - return; - } - return $this->info[$type]->make($string); - } - - /** - * Sets a new implementation for a type - * @param string $type String type name - * @param HTMLPurifier_AttrDef $impl Object AttrDef for type - */ - public function set($type, $impl) - { - $this->info[$type] = $impl; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php deleted file mode 100644 index f97dc93e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/AttrValidator.php +++ /dev/null @@ -1,178 +0,0 @@ -getHTMLDefinition(); - $e =& $context->get('ErrorCollector', true); - - // initialize IDAccumulator if necessary - $ok =& $context->get('IDAccumulator', true); - if (!$ok) { - $id_accumulator = HTMLPurifier_IDAccumulator::build($config, $context); - $context->register('IDAccumulator', $id_accumulator); - } - - // initialize CurrentToken if necessary - $current_token =& $context->get('CurrentToken', true); - if (!$current_token) { - $context->register('CurrentToken', $token); - } - - if (!$token instanceof HTMLPurifier_Token_Start && - !$token instanceof HTMLPurifier_Token_Empty - ) { - return; - } - - // create alias to global definition array, see also $defs - // DEFINITION CALL - $d_defs = $definition->info_global_attr; - - // don't update token until the very end, to ensure an atomic update - $attr = $token->attr; - - // do global transformations (pre) - // nothing currently utilizes this - foreach ($definition->info_attr_transform_pre as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) { - $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - } - - // do local transformations only applicable to this element (pre) - // ex.

to

- foreach ($definition->info[$token->name]->attr_transform_pre as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) { - $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - } - - // create alias to this element's attribute definition array, see - // also $d_defs (global attribute definition array) - // DEFINITION CALL - $defs = $definition->info[$token->name]->attr; - - $attr_key = false; - $context->register('CurrentAttr', $attr_key); - - // iterate through all the attribute keypairs - // Watch out for name collisions: $key has previously been used - foreach ($attr as $attr_key => $value) { - - // call the definition - if (isset($defs[$attr_key])) { - // there is a local definition defined - if ($defs[$attr_key] === false) { - // We've explicitly been told not to allow this element. - // This is usually when there's a global definition - // that must be overridden. - // Theoretically speaking, we could have a - // AttrDef_DenyAll, but this is faster! - $result = false; - } else { - // validate according to the element's definition - $result = $defs[$attr_key]->validate( - $value, - $config, - $context - ); - } - } elseif (isset($d_defs[$attr_key])) { - // there is a global definition defined, validate according - // to the global definition - $result = $d_defs[$attr_key]->validate( - $value, - $config, - $context - ); - } else { - // system never heard of the attribute? DELETE! - $result = false; - } - - // put the results into effect - if ($result === false || $result === null) { - // this is a generic error message that should replaced - // with more specific ones when possible - if ($e) { - $e->send(E_ERROR, 'AttrValidator: Attribute removed'); - } - - // remove the attribute - unset($attr[$attr_key]); - } elseif (is_string($result)) { - // generally, if a substitution is happening, there - // was some sort of implicit correction going on. We'll - // delegate it to the attribute classes to say exactly what. - - // simple substitution - $attr[$attr_key] = $result; - } else { - // nothing happens - } - - // we'd also want slightly more complicated substitution - // involving an array as the return value, - // although we're not sure how colliding attributes would - // resolve (certain ones would be completely overriden, - // others would prepend themselves). - } - - $context->destroy('CurrentAttr'); - - // post transforms - - // global (error reporting untested) - foreach ($definition->info_attr_transform_post as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) { - $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - } - - // local (error reporting untested) - foreach ($definition->info[$token->name]->attr_transform_post as $transform) { - $attr = $transform->transform($o = $attr, $config, $context); - if ($e) { - if ($attr != $o) { - $e->send(E_NOTICE, 'AttrValidator: Attributes transformed', $o, $attr); - } - } - } - - $token->attr = $attr; - - // destroy CurrentToken if we made it ourselves - if (!$current_token) { - $context->destroy('CurrentToken'); - } - - } - - -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php deleted file mode 100644 index 707122bb..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Bootstrap.php +++ /dev/null @@ -1,124 +0,0 @@ - -if (!defined('PHP_EOL')) { - switch (strtoupper(substr(PHP_OS, 0, 3))) { - case 'WIN': - define('PHP_EOL', "\r\n"); - break; - case 'DAR': - define('PHP_EOL', "\r"); - break; - default: - define('PHP_EOL', "\n"); - } -} - -/** - * Bootstrap class that contains meta-functionality for HTML Purifier such as - * the autoload function. - * - * @note - * This class may be used without any other files from HTML Purifier. - */ -class HTMLPurifier_Bootstrap -{ - - /** - * Autoload function for HTML Purifier - * @param string $class Class to load - * @return bool - */ - public static function autoload($class) - { - $file = HTMLPurifier_Bootstrap::getPath($class); - if (!$file) { - return false; - } - // Technically speaking, it should be ok and more efficient to - // just do 'require', but Antonio Parraga reports that with - // Zend extensions such as Zend debugger and APC, this invariant - // may be broken. Since we have efficient alternatives, pay - // the cost here and avoid the bug. - require_once HTMLPURIFIER_PREFIX . '/' . $file; - return true; - } - - /** - * Returns the path for a specific class. - * @param string $class Class path to get - * @return string - */ - public static function getPath($class) - { - if (strncmp('HTMLPurifier', $class, 12) !== 0) { - return false; - } - // Custom implementations - if (strncmp('HTMLPurifier_Language_', $class, 22) === 0) { - $code = str_replace('_', '-', substr($class, 22)); - $file = 'HTMLPurifier/Language/classes/' . $code . '.php'; - } else { - $file = str_replace('_', '/', $class) . '.php'; - } - if (!file_exists(HTMLPURIFIER_PREFIX . '/' . $file)) { - return false; - } - return $file; - } - - /** - * "Pre-registers" our autoloader on the SPL stack. - */ - public static function registerAutoload() - { - $autoload = array('HTMLPurifier_Bootstrap', 'autoload'); - if (($funcs = spl_autoload_functions()) === false) { - spl_autoload_register($autoload); - } elseif (function_exists('spl_autoload_unregister')) { - if (version_compare(PHP_VERSION, '5.3.0', '>=')) { - // prepend flag exists, no need for shenanigans - spl_autoload_register($autoload, true, true); - } else { - $buggy = version_compare(PHP_VERSION, '5.2.11', '<'); - $compat = version_compare(PHP_VERSION, '5.1.2', '<=') && - version_compare(PHP_VERSION, '5.1.0', '>='); - foreach ($funcs as $func) { - if ($buggy && is_array($func)) { - // :TRICKY: There are some compatibility issues and some - // places where we need to error out - $reflector = new ReflectionMethod($func[0], $func[1]); - if (!$reflector->isStatic()) { - throw new Exception( - 'HTML Purifier autoloader registrar is not compatible - with non-static object methods due to PHP Bug #44144; - Please do not use HTMLPurifier.autoload.php (or any - file that includes this file); instead, place the code: - spl_autoload_register(array(\'HTMLPurifier_Bootstrap\', \'autoload\')) - after your own autoloaders.' - ); - } - // Suprisingly, spl_autoload_register supports the - // Class::staticMethod callback format, although call_user_func doesn't - if ($compat) { - $func = implode('::', $func); - } - } - spl_autoload_unregister($func); - } - spl_autoload_register($autoload); - foreach ($funcs as $func) { - spl_autoload_register($func); - } - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php deleted file mode 100644 index 3f08b81c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/CSSDefinition.php +++ /dev/null @@ -1,549 +0,0 @@ -info['text-align'] = new HTMLPurifier_AttrDef_Enum( - array('left', 'right', 'center', 'justify'), - false - ); - - $border_style = - $this->info['border-bottom-style'] = - $this->info['border-right-style'] = - $this->info['border-left-style'] = - $this->info['border-top-style'] = new HTMLPurifier_AttrDef_Enum( - array( - 'none', - 'hidden', - 'dotted', - 'dashed', - 'solid', - 'double', - 'groove', - 'ridge', - 'inset', - 'outset' - ), - false - ); - - $this->info['border-style'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_style); - - $this->info['clear'] = new HTMLPurifier_AttrDef_Enum( - array('none', 'left', 'right', 'both'), - false - ); - $this->info['float'] = new HTMLPurifier_AttrDef_Enum( - array('none', 'left', 'right'), - false - ); - $this->info['font-style'] = new HTMLPurifier_AttrDef_Enum( - array('normal', 'italic', 'oblique'), - false - ); - $this->info['font-variant'] = new HTMLPurifier_AttrDef_Enum( - array('normal', 'small-caps'), - false - ); - - $uri_or_none = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('none')), - new HTMLPurifier_AttrDef_CSS_URI() - ) - ); - - $this->info['list-style-position'] = new HTMLPurifier_AttrDef_Enum( - array('inside', 'outside'), - false - ); - $this->info['list-style-type'] = new HTMLPurifier_AttrDef_Enum( - array( - 'disc', - 'circle', - 'square', - 'decimal', - 'lower-roman', - 'upper-roman', - 'lower-alpha', - 'upper-alpha', - 'none' - ), - false - ); - $this->info['list-style-image'] = $uri_or_none; - - $this->info['list-style'] = new HTMLPurifier_AttrDef_CSS_ListStyle($config); - - $this->info['text-transform'] = new HTMLPurifier_AttrDef_Enum( - array('capitalize', 'uppercase', 'lowercase', 'none'), - false - ); - $this->info['color'] = new HTMLPurifier_AttrDef_CSS_Color(); - - $this->info['background-image'] = $uri_or_none; - $this->info['background-repeat'] = new HTMLPurifier_AttrDef_Enum( - array('repeat', 'repeat-x', 'repeat-y', 'no-repeat') - ); - $this->info['background-attachment'] = new HTMLPurifier_AttrDef_Enum( - array('scroll', 'fixed') - ); - $this->info['background-position'] = new HTMLPurifier_AttrDef_CSS_BackgroundPosition(); - - $this->info['background-size'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum( - array( - 'auto', - 'cover', - 'contain', - 'initial', - 'inherit', - ) - ), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_CSS_Length() - ) - ); - - $border_color = - $this->info['border-top-color'] = - $this->info['border-bottom-color'] = - $this->info['border-left-color'] = - $this->info['border-right-color'] = - $this->info['background-color'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('transparent')), - new HTMLPurifier_AttrDef_CSS_Color() - ) - ); - - $this->info['background'] = new HTMLPurifier_AttrDef_CSS_Background($config); - - $this->info['border-color'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_color); - - $border_width = - $this->info['border-top-width'] = - $this->info['border-bottom-width'] = - $this->info['border-left-width'] = - $this->info['border-right-width'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('thin', 'medium', 'thick')), - new HTMLPurifier_AttrDef_CSS_Length('0') //disallow negative - ) - ); - - $this->info['border-width'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_width); - - $this->info['letter-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Length() - ) - ); - - $this->info['word-spacing'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Length() - ) - ); - - $this->info['font-size'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum( - array( - 'xx-small', - 'x-small', - 'small', - 'medium', - 'large', - 'x-large', - 'xx-large', - 'larger', - 'smaller' - ) - ), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_CSS_Length() - ) - ); - - $this->info['line-height'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum(array('normal')), - new HTMLPurifier_AttrDef_CSS_Number(true), // no negatives - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true) - ) - ); - - $margin = - $this->info['margin-top'] = - $this->info['margin-bottom'] = - $this->info['margin-left'] = - $this->info['margin-right'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(array('auto')) - ) - ); - - $this->info['margin'] = new HTMLPurifier_AttrDef_CSS_Multiple($margin); - - // non-negative - $padding = - $this->info['padding-top'] = - $this->info['padding-bottom'] = - $this->info['padding-left'] = - $this->info['padding-right'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true) - ) - ); - - $this->info['padding'] = new HTMLPurifier_AttrDef_CSS_Multiple($padding); - - $this->info['text-indent'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage() - ) - ); - - $trusted_wh = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(array('auto', 'initial', 'inherit')) - ) - ); - $trusted_min_wh = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit')) - ) - ); - $trusted_max_wh = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0'), - new HTMLPurifier_AttrDef_CSS_Percentage(true), - new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit')) - ) - ); - $max = $config->get('CSS.MaxImgLength'); - - $this->info['width'] = - $this->info['height'] = - $max === null ? - $trusted_wh : - new HTMLPurifier_AttrDef_Switch( - 'img', - // For img tags: - new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(array('auto')) - ) - ), - // For everyone else: - $trusted_wh - ); - $this->info['min-width'] = - $this->info['min-height'] = - $max === null ? - $trusted_min_wh : - new HTMLPurifier_AttrDef_Switch( - 'img', - // For img tags: - new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(array('initial', 'inherit')) - ) - ), - // For everyone else: - $trusted_min_wh - ); - $this->info['max-width'] = - $this->info['max-height'] = - $max === null ? - $trusted_max_wh : - new HTMLPurifier_AttrDef_Switch( - 'img', - // For img tags: - new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length('0', $max), - new HTMLPurifier_AttrDef_Enum(array('none', 'initial', 'inherit')) - ) - ), - // For everyone else: - $trusted_max_wh - ); - - $this->info['text-decoration'] = new HTMLPurifier_AttrDef_CSS_TextDecoration(); - - $this->info['font-family'] = new HTMLPurifier_AttrDef_CSS_FontFamily(); - - // this could use specialized code - $this->info['font-weight'] = new HTMLPurifier_AttrDef_Enum( - array( - 'normal', - 'bold', - 'bolder', - 'lighter', - '100', - '200', - '300', - '400', - '500', - '600', - '700', - '800', - '900' - ), - false - ); - - // MUST be called after other font properties, as it references - // a CSSDefinition object - $this->info['font'] = new HTMLPurifier_AttrDef_CSS_Font($config); - - // same here - $this->info['border'] = - $this->info['border-bottom'] = - $this->info['border-top'] = - $this->info['border-left'] = - $this->info['border-right'] = new HTMLPurifier_AttrDef_CSS_Border($config); - - $this->info['border-collapse'] = new HTMLPurifier_AttrDef_Enum( - array('collapse', 'separate') - ); - - $this->info['caption-side'] = new HTMLPurifier_AttrDef_Enum( - array('top', 'bottom') - ); - - $this->info['table-layout'] = new HTMLPurifier_AttrDef_Enum( - array('auto', 'fixed') - ); - - $this->info['vertical-align'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Enum( - array( - 'baseline', - 'sub', - 'super', - 'top', - 'text-top', - 'middle', - 'bottom', - 'text-bottom' - ) - ), - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage() - ) - ); - - $this->info['border-spacing'] = new HTMLPurifier_AttrDef_CSS_Multiple(new HTMLPurifier_AttrDef_CSS_Length(), 2); - - // These CSS properties don't work on many browsers, but we live - // in THE FUTURE! - $this->info['white-space'] = new HTMLPurifier_AttrDef_Enum( - array('nowrap', 'normal', 'pre', 'pre-wrap', 'pre-line') - ); - - if ($config->get('CSS.Proprietary')) { - $this->doSetupProprietary($config); - } - - if ($config->get('CSS.AllowTricky')) { - $this->doSetupTricky($config); - } - - if ($config->get('CSS.Trusted')) { - $this->doSetupTrusted($config); - } - - $allow_important = $config->get('CSS.AllowImportant'); - // wrap all attr-defs with decorator that handles !important - foreach ($this->info as $k => $v) { - $this->info[$k] = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($v, $allow_important); - } - - $this->setupConfigStuff($config); - } - - /** - * @param HTMLPurifier_Config $config - */ - protected function doSetupProprietary($config) - { - // Internet Explorer only scrollbar colors - $this->info['scrollbar-arrow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-base-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-darkshadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-face-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - - // vendor specific prefixes of opacity - $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - - // only opacity, for now - $this->info['filter'] = new HTMLPurifier_AttrDef_CSS_Filter(); - - // more CSS3 - $this->info['page-break-after'] = - $this->info['page-break-before'] = new HTMLPurifier_AttrDef_Enum( - array( - 'auto', - 'always', - 'avoid', - 'left', - 'right' - ) - ); - $this->info['page-break-inside'] = new HTMLPurifier_AttrDef_Enum(array('auto', 'avoid')); - - $border_radius = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Percentage(true), // disallow negative - new HTMLPurifier_AttrDef_CSS_Length('0') // disallow negative - )); - - $this->info['border-top-left-radius'] = - $this->info['border-top-right-radius'] = - $this->info['border-bottom-right-radius'] = - $this->info['border-bottom-left-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 2); - // TODO: support SLASH syntax - $this->info['border-radius'] = new HTMLPurifier_AttrDef_CSS_Multiple($border_radius, 4); - - } - - /** - * @param HTMLPurifier_Config $config - */ - protected function doSetupTricky($config) - { - $this->info['display'] = new HTMLPurifier_AttrDef_Enum( - array( - 'inline', - 'block', - 'list-item', - 'run-in', - 'compact', - 'marker', - 'table', - 'inline-block', - 'inline-table', - 'table-row-group', - 'table-header-group', - 'table-footer-group', - 'table-row', - 'table-column-group', - 'table-column', - 'table-cell', - 'table-caption', - 'none' - ) - ); - $this->info['visibility'] = new HTMLPurifier_AttrDef_Enum( - array('visible', 'hidden', 'collapse') - ); - $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll')); - $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - } - - /** - * @param HTMLPurifier_Config $config - */ - protected function doSetupTrusted($config) - { - $this->info['position'] = new HTMLPurifier_AttrDef_Enum( - array('static', 'relative', 'absolute', 'fixed') - ); - $this->info['top'] = - $this->info['left'] = - $this->info['right'] = - $this->info['bottom'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_CSS_Length(), - new HTMLPurifier_AttrDef_CSS_Percentage(), - new HTMLPurifier_AttrDef_Enum(array('auto')), - ) - ); - $this->info['z-index'] = new HTMLPurifier_AttrDef_CSS_Composite( - array( - new HTMLPurifier_AttrDef_Integer(), - new HTMLPurifier_AttrDef_Enum(array('auto')), - ) - ); - } - - /** - * Performs extra config-based processing. Based off of - * HTMLPurifier_HTMLDefinition. - * @param HTMLPurifier_Config $config - * @todo Refactor duplicate elements into common class (probably using - * composition, not inheritance). - */ - protected function setupConfigStuff($config) - { - // setup allowed elements - $support = "(for information on implementing this, see the " . - "support forums) "; - $allowed_properties = $config->get('CSS.AllowedProperties'); - if ($allowed_properties !== null) { - foreach ($this->info as $name => $d) { - if (!isset($allowed_properties[$name])) { - unset($this->info[$name]); - } - unset($allowed_properties[$name]); - } - // emit errors - foreach ($allowed_properties as $name => $d) { - // :TODO: Is this htmlspecialchars() call really necessary? - $name = htmlspecialchars($name); - trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING); - } - } - - $forbidden_properties = $config->get('CSS.ForbiddenProperties'); - if ($forbidden_properties !== null) { - foreach ($this->info as $name => $d) { - if (isset($forbidden_properties[$name])) { - unset($this->info[$name]); - } - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php deleted file mode 100644 index 8eb17b82..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef.php +++ /dev/null @@ -1,52 +0,0 @@ -elements; - } - - /** - * Validates nodes according to definition and returns modification. - * - * @param HTMLPurifier_Node[] $children Array of HTMLPurifier_Node - * @param HTMLPurifier_Config $config HTMLPurifier_Config object - * @param HTMLPurifier_Context $context HTMLPurifier_Context object - * @return bool|array true to leave nodes as is, false to remove parent node, array of replacement children - */ - abstract public function validateChildren($children, $config, $context); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php deleted file mode 100644 index 7439be26..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Chameleon.php +++ /dev/null @@ -1,67 +0,0 @@ -inline = new HTMLPurifier_ChildDef_Optional($inline); - $this->block = new HTMLPurifier_ChildDef_Optional($block); - $this->elements = $this->block->elements; - } - - /** - * @param HTMLPurifier_Node[] $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool - */ - public function validateChildren($children, $config, $context) - { - if ($context->get('IsInline') === false) { - return $this->block->validateChildren( - $children, - $config, - $context - ); - } else { - return $this->inline->validateChildren( - $children, - $config, - $context - ); - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php deleted file mode 100644 index f515888a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Custom.php +++ /dev/null @@ -1,102 +0,0 @@ -dtd_regex = $dtd_regex; - $this->_compileRegex(); - } - - /** - * Compiles the PCRE regex from a DTD regex ($dtd_regex to $_pcre_regex) - */ - protected function _compileRegex() - { - $raw = str_replace(' ', '', $this->dtd_regex); - if ($raw[0] != '(') { - $raw = "($raw)"; - } - $el = '[#a-zA-Z0-9_.-]+'; - $reg = $raw; - - // COMPLICATED! AND MIGHT BE BUGGY! I HAVE NO CLUE WHAT I'M - // DOING! Seriously: if there's problems, please report them. - - // collect all elements into the $elements array - preg_match_all("/$el/", $reg, $matches); - foreach ($matches[0] as $match) { - $this->elements[$match] = true; - } - - // setup all elements as parentheticals with leading commas - $reg = preg_replace("/$el/", '(,\\0)', $reg); - - // remove commas when they were not solicited - $reg = preg_replace("/([^,(|]\(+),/", '\\1', $reg); - - // remove all non-paranthetical commas: they are handled by first regex - $reg = preg_replace("/,\(/", '(', $reg); - - $this->_pcre_regex = $reg; - } - - /** - * @param HTMLPurifier_Node[] $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return bool - */ - public function validateChildren($children, $config, $context) - { - $list_of_children = ''; - $nesting = 0; // depth into the nest - foreach ($children as $node) { - if (!empty($node->is_whitespace)) { - continue; - } - $list_of_children .= $node->name . ','; - } - // add leading comma to deal with stray comma declarations - $list_of_children = ',' . rtrim($list_of_children, ','); - $okay = - preg_match( - '/^,?' . $this->_pcre_regex . '$/', - $list_of_children - ); - return (bool)$okay; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php deleted file mode 100644 index a8a6cbdd..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Empty.php +++ /dev/null @@ -1,38 +0,0 @@ - true, 'ul' => true, 'ol' => true); - - public $whitespace; - - /** - * @param array $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function validateChildren($children, $config, $context) - { - // Flag for subclasses - $this->whitespace = false; - - // if there are no tokens, delete parent node - if (empty($children)) { - return false; - } - - // if li is not allowed, delete parent node - if (!isset($config->getHTMLDefinition()->info['li'])) { - trigger_error("Cannot allow ul/ol without allowing li", E_USER_WARNING); - return false; - } - - // the new set of children - $result = array(); - - // a little sanity check to make sure it's not ALL whitespace - $all_whitespace = true; - - $current_li = null; - - foreach ($children as $node) { - if (!empty($node->is_whitespace)) { - $result[] = $node; - continue; - } - $all_whitespace = false; // phew, we're not talking about whitespace - - if ($node->name === 'li') { - // good - $current_li = $node; - $result[] = $node; - } else { - // we want to tuck this into the previous li - // Invariant: we expect the node to be ol/ul - // ToDo: Make this more robust in the case of not ol/ul - // by distinguishing between existing li and li created - // to handle non-list elements; non-list elements should - // not be appended to an existing li; only li created - // for non-list. This distinction is not currently made. - if ($current_li === null) { - $current_li = new HTMLPurifier_Node_Element('li'); - $result[] = $current_li; - } - $current_li->children[] = $node; - $current_li->empty = false; // XXX fascinating! Check for this error elsewhere ToDo - } - } - if (empty($result)) { - return false; - } - if ($all_whitespace) { - return false; - } - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php deleted file mode 100644 index b9468063..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Optional.php +++ /dev/null @@ -1,45 +0,0 @@ -whitespace) { - return $children; - } else { - return array(); - } - } - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php deleted file mode 100644 index 0d1c8f5f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Required.php +++ /dev/null @@ -1,118 +0,0 @@ - $x) { - $elements[$i] = true; - if (empty($i)) { - unset($elements[$i]); - } // remove blank - } - } - $this->elements = $elements; - } - - /** - * @type bool - */ - public $allow_empty = false; - - /** - * @type string - */ - public $type = 'required'; - - /** - * @param array $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function validateChildren($children, $config, $context) - { - // Flag for subclasses - $this->whitespace = false; - - // if there are no tokens, delete parent node - if (empty($children)) { - return false; - } - - // the new set of children - $result = array(); - - // whether or not parsed character data is allowed - // this controls whether or not we silently drop a tag - // or generate escaped HTML from it - $pcdata_allowed = isset($this->elements['#PCDATA']); - - // a little sanity check to make sure it's not ALL whitespace - $all_whitespace = true; - - $stack = array_reverse($children); - while (!empty($stack)) { - $node = array_pop($stack); - if (!empty($node->is_whitespace)) { - $result[] = $node; - continue; - } - $all_whitespace = false; // phew, we're not talking about whitespace - - if (!isset($this->elements[$node->name])) { - // special case text - // XXX One of these ought to be redundant or something - if ($pcdata_allowed && $node instanceof HTMLPurifier_Node_Text) { - $result[] = $node; - continue; - } - // spill the child contents in - // ToDo: Make configurable - if ($node instanceof HTMLPurifier_Node_Element) { - for ($i = count($node->children) - 1; $i >= 0; $i--) { - $stack[] = $node->children[$i]; - } - continue; - } - continue; - } - $result[] = $node; - } - if (empty($result)) { - return false; - } - if ($all_whitespace) { - $this->whitespace = true; - return false; - } - return $result; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php deleted file mode 100644 index 3270a46e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/StrictBlockquote.php +++ /dev/null @@ -1,110 +0,0 @@ -init($config); - return $this->fake_elements; - } - - /** - * @param array $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function validateChildren($children, $config, $context) - { - $this->init($config); - - // trick the parent class into thinking it allows more - $this->elements = $this->fake_elements; - $result = parent::validateChildren($children, $config, $context); - $this->elements = $this->real_elements; - - if ($result === false) { - return array(); - } - if ($result === true) { - $result = $children; - } - - $def = $config->getHTMLDefinition(); - $block_wrap_name = $def->info_block_wrapper; - $block_wrap = false; - $ret = array(); - - foreach ($result as $node) { - if ($block_wrap === false) { - if (($node instanceof HTMLPurifier_Node_Text && !$node->is_whitespace) || - ($node instanceof HTMLPurifier_Node_Element && !isset($this->elements[$node->name]))) { - $block_wrap = new HTMLPurifier_Node_Element($def->info_block_wrapper); - $ret[] = $block_wrap; - } - } else { - if ($node instanceof HTMLPurifier_Node_Element && isset($this->elements[$node->name])) { - $block_wrap = false; - - } - } - if ($block_wrap) { - $block_wrap->children[] = $node; - } else { - $ret[] = $node; - } - } - return $ret; - } - - /** - * @param HTMLPurifier_Config $config - */ - private function init($config) - { - if (!$this->init) { - $def = $config->getHTMLDefinition(); - // allow all inline elements - $this->real_elements = $this->elements; - $this->fake_elements = $def->info_content_sets['Flow']; - $this->fake_elements['#PCDATA'] = true; - $this->init = true; - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php deleted file mode 100644 index 67c7e953..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ChildDef/Table.php +++ /dev/null @@ -1,224 +0,0 @@ - true, - 'tbody' => true, - 'thead' => true, - 'tfoot' => true, - 'caption' => true, - 'colgroup' => true, - 'col' => true - ); - - public function __construct() - { - } - - /** - * @param array $children - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array - */ - public function validateChildren($children, $config, $context) - { - if (empty($children)) { - return false; - } - - // only one of these elements is allowed in a table - $caption = false; - $thead = false; - $tfoot = false; - - // whitespace - $initial_ws = array(); - $after_caption_ws = array(); - $after_thead_ws = array(); - $after_tfoot_ws = array(); - - // as many of these as you want - $cols = array(); - $content = array(); - - $tbody_mode = false; // if true, then we need to wrap any stray - // s with a . - - $ws_accum =& $initial_ws; - - foreach ($children as $node) { - if ($node instanceof HTMLPurifier_Node_Comment) { - $ws_accum[] = $node; - continue; - } - switch ($node->name) { - case 'tbody': - $tbody_mode = true; - // fall through - case 'tr': - $content[] = $node; - $ws_accum =& $content; - break; - case 'caption': - // there can only be one caption! - if ($caption !== false) break; - $caption = $node; - $ws_accum =& $after_caption_ws; - break; - case 'thead': - $tbody_mode = true; - // XXX This breaks rendering properties with - // Firefox, which never floats a to - // the top. Ever. (Our scheme will float the - // first to the top.) So maybe - // s that are not first should be - // turned into ? Very tricky, indeed. - if ($thead === false) { - $thead = $node; - $ws_accum =& $after_thead_ws; - } else { - // Oops, there's a second one! What - // should we do? Current behavior is to - // transmutate the first and last entries into - // tbody tags, and then put into content. - // Maybe a better idea is to *attach - // it* to the existing thead or tfoot? - // We don't do this, because Firefox - // doesn't float an extra tfoot to the - // bottom like it does for the first one. - $node->name = 'tbody'; - $content[] = $node; - $ws_accum =& $content; - } - break; - case 'tfoot': - // see above for some aveats - $tbody_mode = true; - if ($tfoot === false) { - $tfoot = $node; - $ws_accum =& $after_tfoot_ws; - } else { - $node->name = 'tbody'; - $content[] = $node; - $ws_accum =& $content; - } - break; - case 'colgroup': - case 'col': - $cols[] = $node; - $ws_accum =& $cols; - break; - case '#PCDATA': - // How is whitespace handled? We treat is as sticky to - // the *end* of the previous element. So all of the - // nonsense we have worked on is to keep things - // together. - if (!empty($node->is_whitespace)) { - $ws_accum[] = $node; - } - break; - } - } - - if (empty($content) && $thead === false && $tfoot === false) { - return false; - } - - $ret = $initial_ws; - if ($caption !== false) { - $ret[] = $caption; - $ret = array_merge($ret, $after_caption_ws); - } - if ($cols !== false) { - $ret = array_merge($ret, $cols); - } - if ($thead !== false) { - $ret[] = $thead; - $ret = array_merge($ret, $after_thead_ws); - } - if ($tfoot !== false) { - $ret[] = $tfoot; - $ret = array_merge($ret, $after_tfoot_ws); - } - - if ($tbody_mode) { - // we have to shuffle tr into tbody - $current_tr_tbody = null; - - foreach($content as $node) { - switch ($node->name) { - case 'tbody': - $current_tr_tbody = null; - $ret[] = $node; - break; - case 'tr': - if ($current_tr_tbody === null) { - $current_tr_tbody = new HTMLPurifier_Node_Element('tbody'); - $ret[] = $current_tr_tbody; - } - $current_tr_tbody->children[] = $node; - break; - case '#PCDATA': - //assert($node->is_whitespace); - if ($current_tr_tbody === null) { - $ret[] = $node; - } else { - $current_tr_tbody->children[] = $node; - } - break; - } - } - } else { - $ret = array_merge($ret, $content); - } - - return $ret; - - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php deleted file mode 100644 index 797d2687..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php +++ /dev/null @@ -1,920 +0,0 @@ -defaultPlist; - $this->plist = new HTMLPurifier_PropertyList($parent); - $this->def = $definition; // keep a copy around for checking - $this->parser = new HTMLPurifier_VarParser_Flexible(); - } - - /** - * Convenience constructor that creates a config object based on a mixed var - * @param mixed $config Variable that defines the state of the config - * object. Can be: a HTMLPurifier_Config() object, - * an array of directives based on loadArray(), - * or a string filename of an ini file. - * @param HTMLPurifier_ConfigSchema $schema Schema object - * @return HTMLPurifier_Config Configured object - */ - public static function create($config, $schema = null) - { - if ($config instanceof HTMLPurifier_Config) { - // pass-through - return $config; - } - if (!$schema) { - $ret = HTMLPurifier_Config::createDefault(); - } else { - $ret = new HTMLPurifier_Config($schema); - } - if (is_string($config)) { - $ret->loadIni($config); - } elseif (is_array($config)) $ret->loadArray($config); - return $ret; - } - - /** - * Creates a new config object that inherits from a previous one. - * @param HTMLPurifier_Config $config Configuration object to inherit from. - * @return HTMLPurifier_Config object with $config as its parent. - */ - public static function inherit(HTMLPurifier_Config $config) - { - return new HTMLPurifier_Config($config->def, $config->plist); - } - - /** - * Convenience constructor that creates a default configuration object. - * @return HTMLPurifier_Config default object. - */ - public static function createDefault() - { - $definition = HTMLPurifier_ConfigSchema::instance(); - $config = new HTMLPurifier_Config($definition); - return $config; - } - - /** - * Retrieves a value from the configuration. - * - * @param string $key String key - * @param mixed $a - * - * @return mixed - */ - public function get($key, $a = null) - { - if ($a !== null) { - $this->triggerError( - "Using deprecated API: use \$config->get('$key.$a') instead", - E_USER_WARNING - ); - $key = "$key.$a"; - } - if (!$this->finalized) { - $this->autoFinalize(); - } - if (!isset($this->def->info[$key])) { - // can't add % due to SimpleTest bug - $this->triggerError( - 'Cannot retrieve value of undefined directive ' . htmlspecialchars($key), - E_USER_WARNING - ); - return; - } - if (isset($this->def->info[$key]->isAlias)) { - $d = $this->def->info[$key]; - $this->triggerError( - 'Cannot get value from aliased directive, use real name ' . $d->key, - E_USER_ERROR - ); - return; - } - if ($this->lock) { - list($ns) = explode('.', $key); - if ($ns !== $this->lock) { - $this->triggerError( - 'Cannot get value of namespace ' . $ns . ' when lock for ' . - $this->lock . - ' is active, this probably indicates a Definition setup method ' . - 'is accessing directives that are not within its namespace', - E_USER_ERROR - ); - return; - } - } - return $this->plist->get($key); - } - - /** - * Retrieves an array of directives to values from a given namespace - * - * @param string $namespace String namespace - * - * @return array - */ - public function getBatch($namespace) - { - if (!$this->finalized) { - $this->autoFinalize(); - } - $full = $this->getAll(); - if (!isset($full[$namespace])) { - $this->triggerError( - 'Cannot retrieve undefined namespace ' . - htmlspecialchars($namespace), - E_USER_WARNING - ); - return; - } - return $full[$namespace]; - } - - /** - * Returns a SHA-1 signature of a segment of the configuration object - * that uniquely identifies that particular configuration - * - * @param string $namespace Namespace to get serial for - * - * @return string - * @note Revision is handled specially and is removed from the batch - * before processing! - */ - public function getBatchSerial($namespace) - { - if (empty($this->serials[$namespace])) { - $batch = $this->getBatch($namespace); - unset($batch['DefinitionRev']); - $this->serials[$namespace] = sha1(serialize($batch)); - } - return $this->serials[$namespace]; - } - - /** - * Returns a SHA-1 signature for the entire configuration object - * that uniquely identifies that particular configuration - * - * @return string - */ - public function getSerial() - { - if (empty($this->serial)) { - $this->serial = sha1(serialize($this->getAll())); - } - return $this->serial; - } - - /** - * Retrieves all directives, organized by namespace - * - * @warning This is a pretty inefficient function, avoid if you can - */ - public function getAll() - { - if (!$this->finalized) { - $this->autoFinalize(); - } - $ret = array(); - foreach ($this->plist->squash() as $name => $value) { - list($ns, $key) = explode('.', $name, 2); - $ret[$ns][$key] = $value; - } - return $ret; - } - - /** - * Sets a value to configuration. - * - * @param string $key key - * @param mixed $value value - * @param mixed $a - */ - public function set($key, $value, $a = null) - { - if (strpos($key, '.') === false) { - $namespace = $key; - $directive = $value; - $value = $a; - $key = "$key.$directive"; - $this->triggerError("Using deprecated API: use \$config->set('$key', ...) instead", E_USER_NOTICE); - } else { - list($namespace) = explode('.', $key); - } - if ($this->isFinalized('Cannot set directive after finalization')) { - return; - } - if (!isset($this->def->info[$key])) { - $this->triggerError( - 'Cannot set undefined directive ' . htmlspecialchars($key) . ' to value', - E_USER_WARNING - ); - return; - } - $def = $this->def->info[$key]; - - if (isset($def->isAlias)) { - if ($this->aliasMode) { - $this->triggerError( - 'Double-aliases not allowed, please fix '. - 'ConfigSchema bug with' . $key, - E_USER_ERROR - ); - return; - } - $this->aliasMode = true; - $this->set($def->key, $value); - $this->aliasMode = false; - $this->triggerError("$key is an alias, preferred directive name is {$def->key}", E_USER_NOTICE); - return; - } - - // Raw type might be negative when using the fully optimized form - // of stdClass, which indicates allow_null == true - $rtype = is_int($def) ? $def : $def->type; - if ($rtype < 0) { - $type = -$rtype; - $allow_null = true; - } else { - $type = $rtype; - $allow_null = isset($def->allow_null); - } - - try { - $value = $this->parser->parse($value, $type, $allow_null); - } catch (HTMLPurifier_VarParserException $e) { - $this->triggerError( - 'Value for ' . $key . ' is of invalid type, should be ' . - HTMLPurifier_VarParser::getTypeName($type), - E_USER_WARNING - ); - return; - } - if (is_string($value) && is_object($def)) { - // resolve value alias if defined - if (isset($def->aliases[$value])) { - $value = $def->aliases[$value]; - } - // check to see if the value is allowed - if (isset($def->allowed) && !isset($def->allowed[$value])) { - $this->triggerError( - 'Value not supported, valid values are: ' . - $this->_listify($def->allowed), - E_USER_WARNING - ); - return; - } - } - $this->plist->set($key, $value); - - // reset definitions if the directives they depend on changed - // this is a very costly process, so it's discouraged - // with finalization - if ($namespace == 'HTML' || $namespace == 'CSS' || $namespace == 'URI') { - $this->definitions[$namespace] = null; - } - - $this->serials[$namespace] = false; - } - - /** - * Convenience function for error reporting - * - * @param array $lookup - * - * @return string - */ - private function _listify($lookup) - { - $list = array(); - foreach ($lookup as $name => $b) { - $list[] = $name; - } - return implode(', ', $list); - } - - /** - * Retrieves object reference to the HTML definition. - * - * @param bool $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param bool $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawHTMLDefinition, which is more explicitly - * named, instead. - * - * @return HTMLPurifier_HTMLDefinition|null - */ - public function getHTMLDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('HTML', $raw, $optimized); - } - - /** - * Retrieves object reference to the CSS definition - * - * @param bool $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param bool $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawCSSDefinition, which is more explicitly - * named, instead. - * - * @return HTMLPurifier_CSSDefinition|null - */ - public function getCSSDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('CSS', $raw, $optimized); - } - - /** - * Retrieves object reference to the URI definition - * - * @param bool $raw Return a copy that has not been setup yet. Must be - * called before it's been setup, otherwise won't work. - * @param bool $optimized If true, this method may return null, to - * indicate that a cached version of the modified - * definition object is available and no further edits - * are necessary. Consider using - * maybeGetRawURIDefinition, which is more explicitly - * named, instead. - * - * @return HTMLPurifier_URIDefinition|null - */ - public function getURIDefinition($raw = false, $optimized = false) - { - return $this->getDefinition('URI', $raw, $optimized); - } - - /** - * Retrieves a definition - * - * @param string $type Type of definition: HTML, CSS, etc - * @param bool $raw Whether or not definition should be returned raw - * @param bool $optimized Only has an effect when $raw is true. Whether - * or not to return null if the result is already present in - * the cache. This is off by default for backwards - * compatibility reasons, but you need to do things this - * way in order to ensure that caching is done properly. - * Check out enduser-customize.html for more details. - * We probably won't ever change this default, as much as the - * maybe semantics is the "right thing to do." - * - * @throws HTMLPurifier_Exception - * @return HTMLPurifier_Definition|null - */ - public function getDefinition($type, $raw = false, $optimized = false) - { - if ($optimized && !$raw) { - throw new HTMLPurifier_Exception("Cannot set optimized = true when raw = false"); - } - if (!$this->finalized) { - $this->autoFinalize(); - } - // temporarily suspend locks, so we can handle recursive definition calls - $lock = $this->lock; - $this->lock = null; - $factory = HTMLPurifier_DefinitionCacheFactory::instance(); - $cache = $factory->create($type, $this); - $this->lock = $lock; - if (!$raw) { - // full definition - // --------------- - // check if definition is in memory - if (!empty($this->definitions[$type])) { - $def = $this->definitions[$type]; - // check if the definition is setup - if ($def->setup) { - return $def; - } else { - $def->setup($this); - if ($def->optimized) { - $cache->add($def, $this); - } - return $def; - } - } - // check if definition is in cache - $def = $cache->get($this); - if ($def) { - // definition in cache, save to memory and return it - $this->definitions[$type] = $def; - return $def; - } - // initialize it - $def = $this->initDefinition($type); - // set it up - $this->lock = $type; - $def->setup($this); - $this->lock = null; - // save in cache - $cache->add($def, $this); - // return it - return $def; - } else { - // raw definition - // -------------- - // check preconditions - $def = null; - if ($optimized) { - if (is_null($this->get($type . '.DefinitionID'))) { - // fatally error out if definition ID not set - throw new HTMLPurifier_Exception( - "Cannot retrieve raw version without specifying %$type.DefinitionID" - ); - } - } - if (!empty($this->definitions[$type])) { - $def = $this->definitions[$type]; - if ($def->setup && !$optimized) { - $extra = $this->chatty ? - " (try moving this code block earlier in your initialization)" : - ""; - throw new HTMLPurifier_Exception( - "Cannot retrieve raw definition after it has already been setup" . - $extra - ); - } - if ($def->optimized === null) { - $extra = $this->chatty ? " (try flushing your cache)" : ""; - throw new HTMLPurifier_Exception( - "Optimization status of definition is unknown" . $extra - ); - } - if ($def->optimized !== $optimized) { - $msg = $optimized ? "optimized" : "unoptimized"; - $extra = $this->chatty ? - " (this backtrace is for the first inconsistent call, which was for a $msg raw definition)" - : ""; - throw new HTMLPurifier_Exception( - "Inconsistent use of optimized and unoptimized raw definition retrievals" . $extra - ); - } - } - // check if definition was in memory - if ($def) { - if ($def->setup) { - // invariant: $optimized === true (checked above) - return null; - } else { - return $def; - } - } - // if optimized, check if definition was in cache - // (because we do the memory check first, this formulation - // is prone to cache slamming, but I think - // guaranteeing that either /all/ of the raw - // setup code or /none/ of it is run is more important.) - if ($optimized) { - // This code path only gets run once; once we put - // something in $definitions (which is guaranteed by the - // trailing code), we always short-circuit above. - $def = $cache->get($this); - if ($def) { - // save the full definition for later, but don't - // return it yet - $this->definitions[$type] = $def; - return null; - } - } - // check invariants for creation - if (!$optimized) { - if (!is_null($this->get($type . '.DefinitionID'))) { - if ($this->chatty) { - $this->triggerError( - 'Due to a documentation error in previous version of HTML Purifier, your ' . - 'definitions are not being cached. If this is OK, you can remove the ' . - '%$type.DefinitionRev and %$type.DefinitionID declaration. Otherwise, ' . - 'modify your code to use maybeGetRawDefinition, and test if the returned ' . - 'value is null before making any edits (if it is null, that means that a ' . - 'cached version is available, and no raw operations are necessary). See ' . - '' . - 'Customize for more details', - E_USER_WARNING - ); - } else { - $this->triggerError( - "Useless DefinitionID declaration", - E_USER_WARNING - ); - } - } - } - // initialize it - $def = $this->initDefinition($type); - $def->optimized = $optimized; - return $def; - } - throw new HTMLPurifier_Exception("The impossible happened!"); - } - - /** - * Initialise definition - * - * @param string $type What type of definition to create - * - * @return HTMLPurifier_CSSDefinition|HTMLPurifier_HTMLDefinition|HTMLPurifier_URIDefinition - * @throws HTMLPurifier_Exception - */ - private function initDefinition($type) - { - // quick checks failed, let's create the object - if ($type == 'HTML') { - $def = new HTMLPurifier_HTMLDefinition(); - } elseif ($type == 'CSS') { - $def = new HTMLPurifier_CSSDefinition(); - } elseif ($type == 'URI') { - $def = new HTMLPurifier_URIDefinition(); - } else { - throw new HTMLPurifier_Exception( - "Definition of $type type not supported" - ); - } - $this->definitions[$type] = $def; - return $def; - } - - public function maybeGetRawDefinition($name) - { - return $this->getDefinition($name, true, true); - } - - /** - * @return HTMLPurifier_HTMLDefinition|null - */ - public function maybeGetRawHTMLDefinition() - { - return $this->getDefinition('HTML', true, true); - } - - /** - * @return HTMLPurifier_CSSDefinition|null - */ - public function maybeGetRawCSSDefinition() - { - return $this->getDefinition('CSS', true, true); - } - - /** - * @return HTMLPurifier_URIDefinition|null - */ - public function maybeGetRawURIDefinition() - { - return $this->getDefinition('URI', true, true); - } - - /** - * Loads configuration values from an array with the following structure: - * Namespace.Directive => Value - * - * @param array $config_array Configuration associative array - */ - public function loadArray($config_array) - { - if ($this->isFinalized('Cannot load directives after finalization')) { - return; - } - foreach ($config_array as $key => $value) { - $key = str_replace('_', '.', $key); - if (strpos($key, '.') !== false) { - $this->set($key, $value); - } else { - $namespace = $key; - $namespace_values = $value; - foreach ($namespace_values as $directive => $value2) { - $this->set($namespace .'.'. $directive, $value2); - } - } - } - } - - /** - * Returns a list of array(namespace, directive) for all directives - * that are allowed in a web-form context as per an allowed - * namespaces/directives list. - * - * @param array $allowed List of allowed namespaces/directives - * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy - * - * @return array - */ - public static function getAllowedDirectivesForForm($allowed, $schema = null) - { - if (!$schema) { - $schema = HTMLPurifier_ConfigSchema::instance(); - } - if ($allowed !== true) { - if (is_string($allowed)) { - $allowed = array($allowed); - } - $allowed_ns = array(); - $allowed_directives = array(); - $blacklisted_directives = array(); - foreach ($allowed as $ns_or_directive) { - if (strpos($ns_or_directive, '.') !== false) { - // directive - if ($ns_or_directive[0] == '-') { - $blacklisted_directives[substr($ns_or_directive, 1)] = true; - } else { - $allowed_directives[$ns_or_directive] = true; - } - } else { - // namespace - $allowed_ns[$ns_or_directive] = true; - } - } - } - $ret = array(); - foreach ($schema->info as $key => $def) { - list($ns, $directive) = explode('.', $key, 2); - if ($allowed !== true) { - if (isset($blacklisted_directives["$ns.$directive"])) { - continue; - } - if (!isset($allowed_directives["$ns.$directive"]) && !isset($allowed_ns[$ns])) { - continue; - } - } - if (isset($def->isAlias)) { - continue; - } - if ($directive == 'DefinitionID' || $directive == 'DefinitionRev') { - continue; - } - $ret[] = array($ns, $directive); - } - return $ret; - } - - /** - * Loads configuration values from $_GET/$_POST that were posted - * via ConfigForm - * - * @param array $array $_GET or $_POST array to import - * @param string|bool $index Index/name that the config variables are in - * @param array|bool $allowed List of allowed namespaces/directives - * @param bool $mq_fix Boolean whether or not to enable magic quotes fix - * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy - * - * @return mixed - */ - public static function loadArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) - { - $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $schema); - $config = HTMLPurifier_Config::create($ret, $schema); - return $config; - } - - /** - * Merges in configuration values from $_GET/$_POST to object. NOT STATIC. - * - * @param array $array $_GET or $_POST array to import - * @param string|bool $index Index/name that the config variables are in - * @param array|bool $allowed List of allowed namespaces/directives - * @param bool $mq_fix Boolean whether or not to enable magic quotes fix - */ - public function mergeArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true) - { - $ret = HTMLPurifier_Config::prepareArrayFromForm($array, $index, $allowed, $mq_fix, $this->def); - $this->loadArray($ret); - } - - /** - * Prepares an array from a form into something usable for the more - * strict parts of HTMLPurifier_Config - * - * @param array $array $_GET or $_POST array to import - * @param string|bool $index Index/name that the config variables are in - * @param array|bool $allowed List of allowed namespaces/directives - * @param bool $mq_fix Boolean whether or not to enable magic quotes fix - * @param HTMLPurifier_ConfigSchema $schema Schema to use, if not global copy - * - * @return array - */ - public static function prepareArrayFromForm($array, $index = false, $allowed = true, $mq_fix = true, $schema = null) - { - if ($index !== false) { - $array = (isset($array[$index]) && is_array($array[$index])) ? $array[$index] : array(); - } - $mq = $mq_fix && version_compare(PHP_VERSION, '7.4.0', '<') && function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc(); - - $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $schema); - $ret = array(); - foreach ($allowed as $key) { - list($ns, $directive) = $key; - $skey = "$ns.$directive"; - if (!empty($array["Null_$skey"])) { - $ret[$ns][$directive] = null; - continue; - } - if (!isset($array[$skey])) { - continue; - } - $value = $mq ? stripslashes($array[$skey]) : $array[$skey]; - $ret[$ns][$directive] = $value; - } - return $ret; - } - - /** - * Loads configuration values from an ini file - * - * @param string $filename Name of ini file - */ - public function loadIni($filename) - { - if ($this->isFinalized('Cannot load directives after finalization')) { - return; - } - $array = parse_ini_file($filename, true); - $this->loadArray($array); - } - - /** - * Checks whether or not the configuration object is finalized. - * - * @param string|bool $error String error message, or false for no error - * - * @return bool - */ - public function isFinalized($error = false) - { - if ($this->finalized && $error) { - $this->triggerError($error, E_USER_ERROR); - } - return $this->finalized; - } - - /** - * Finalizes configuration only if auto finalize is on and not - * already finalized - */ - public function autoFinalize() - { - if ($this->autoFinalize) { - $this->finalize(); - } else { - $this->plist->squash(true); - } - } - - /** - * Finalizes a configuration object, prohibiting further change - */ - public function finalize() - { - $this->finalized = true; - $this->parser = null; - } - - /** - * Produces a nicely formatted error message by supplying the - * stack frame information OUTSIDE of HTMLPurifier_Config. - * - * @param string $msg An error message - * @param int $no An error number - */ - protected function triggerError($msg, $no) - { - // determine previous stack frame - $extra = ''; - if ($this->chatty) { - $trace = debug_backtrace(); - // zip(tail(trace), trace) -- but PHP is not Haskell har har - for ($i = 0, $c = count($trace); $i < $c - 1; $i++) { - // XXX this is not correct on some versions of HTML Purifier - if (isset($trace[$i + 1]['class']) && $trace[$i + 1]['class'] === 'HTMLPurifier_Config') { - continue; - } - $frame = $trace[$i]; - $extra = " invoked on line {$frame['line']} in file {$frame['file']}"; - break; - } - } - trigger_error($msg . $extra, $no); - } - - /** - * Returns a serialized form of the configuration object that can - * be reconstituted. - * - * @return string - */ - public function serialize() - { - $this->getDefinition('HTML'); - $this->getDefinition('CSS'); - $this->getDefinition('URI'); - return serialize($this); - } - -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php deleted file mode 100644 index c3fe8cd4..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema.php +++ /dev/null @@ -1,176 +0,0 @@ - array( - * 'Directive' => new stdClass(), - * ) - * ) - * - * The stdClass may have the following properties: - * - * - If isAlias isn't set: - * - type: Integer type of directive, see HTMLPurifier_VarParser for definitions - * - allow_null: If set, this directive allows null values - * - aliases: If set, an associative array of value aliases to real values - * - allowed: If set, a lookup array of allowed (string) values - * - If isAlias is set: - * - namespace: Namespace this directive aliases to - * - name: Directive name this directive aliases to - * - * In certain degenerate cases, stdClass will actually be an integer. In - * that case, the value is equivalent to an stdClass with the type - * property set to the integer. If the integer is negative, type is - * equal to the absolute value of integer, and allow_null is true. - * - * This class is friendly with HTMLPurifier_Config. If you need introspection - * about the schema, you're better of using the ConfigSchema_Interchange, - * which uses more memory but has much richer information. - * @type array - */ - public $info = array(); - - /** - * Application-wide singleton - * @type HTMLPurifier_ConfigSchema - */ - protected static $singleton; - - public function __construct() - { - $this->defaultPlist = new HTMLPurifier_PropertyList(); - } - - /** - * Unserializes the default ConfigSchema. - * @return HTMLPurifier_ConfigSchema - */ - public static function makeFromSerial() - { - $contents = file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser'); - $r = unserialize($contents); - if (!$r) { - $hash = sha1($contents); - trigger_error("Unserialization of configuration schema failed, sha1 of file was $hash", E_USER_ERROR); - } - return $r; - } - - /** - * Retrieves an instance of the application-wide configuration definition. - * @param HTMLPurifier_ConfigSchema $prototype - * @return HTMLPurifier_ConfigSchema - */ - public static function instance($prototype = null) - { - if ($prototype !== null) { - HTMLPurifier_ConfigSchema::$singleton = $prototype; - } elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) { - HTMLPurifier_ConfigSchema::$singleton = HTMLPurifier_ConfigSchema::makeFromSerial(); - } - return HTMLPurifier_ConfigSchema::$singleton; - } - - /** - * Defines a directive for configuration - * @warning Will fail of directive's namespace is defined. - * @warning This method's signature is slightly different from the legacy - * define() static method! Beware! - * @param string $key Name of directive - * @param mixed $default Default value of directive - * @param string $type Allowed type of the directive. See - * HTMLPurifier_VarParser::$types for allowed values - * @param bool $allow_null Whether or not to allow null values - */ - public function add($key, $default, $type, $allow_null) - { - $obj = new stdClass(); - $obj->type = is_int($type) ? $type : HTMLPurifier_VarParser::$types[$type]; - if ($allow_null) { - $obj->allow_null = true; - } - $this->info[$key] = $obj; - $this->defaults[$key] = $default; - $this->defaultPlist->set($key, $default); - } - - /** - * Defines a directive value alias. - * - * Directive value aliases are convenient for developers because it lets - * them set a directive to several values and get the same result. - * @param string $key Name of Directive - * @param array $aliases Hash of aliased values to the real alias - */ - public function addValueAliases($key, $aliases) - { - if (!isset($this->info[$key]->aliases)) { - $this->info[$key]->aliases = array(); - } - foreach ($aliases as $alias => $real) { - $this->info[$key]->aliases[$alias] = $real; - } - } - - /** - * Defines a set of allowed values for a directive. - * @warning This is slightly different from the corresponding static - * method definition. - * @param string $key Name of directive - * @param array $allowed Lookup array of allowed values - */ - public function addAllowedValues($key, $allowed) - { - $this->info[$key]->allowed = $allowed; - } - - /** - * Defines a directive alias for backwards compatibility - * @param string $key Directive that will be aliased - * @param string $new_key Directive that the alias will be to - */ - public function addAlias($key, $new_key) - { - $obj = new stdClass; - $obj->key = $new_key; - $obj->isAlias = true; - $this->info[$key] = $obj; - } - - /** - * Replaces any stdClass that only has the type property with type integer. - */ - public function postProcess() - { - foreach ($this->info as $key => $v) { - if (count((array) $v) == 1) { - $this->info[$key] = $v->type; - } elseif (count((array) $v) == 2 && isset($v->allow_null)) { - $this->info[$key] = -$v->type; - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php deleted file mode 100644 index d5906cd4..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php +++ /dev/null @@ -1,48 +0,0 @@ -directives as $d) { - $schema->add( - $d->id->key, - $d->default, - $d->type, - $d->typeAllowsNull - ); - if ($d->allowed !== null) { - $schema->addAllowedValues( - $d->id->key, - $d->allowed - ); - } - foreach ($d->aliases as $alias) { - $schema->addAlias( - $alias->key, - $d->id->key - ); - } - if ($d->valueAliases !== null) { - $schema->addValueAliases( - $d->id->key, - $d->valueAliases - ); - } - } - $schema->postProcess(); - return $schema; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php deleted file mode 100644 index 5fa56f7d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Builder/Xml.php +++ /dev/null @@ -1,144 +0,0 @@ -startElement('div'); - - $purifier = HTMLPurifier::getInstance(); - $html = $purifier->purify($html); - $this->writeAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); - $this->writeRaw($html); - - $this->endElement(); // div - } - - /** - * @param mixed $var - * @return string - */ - protected function export($var) - { - if ($var === array()) { - return 'array()'; - } - return var_export($var, true); - } - - /** - * @param HTMLPurifier_ConfigSchema_Interchange $interchange - */ - public function build($interchange) - { - // global access, only use as last resort - $this->interchange = $interchange; - - $this->setIndent(true); - $this->startDocument('1.0', 'UTF-8'); - $this->startElement('configdoc'); - $this->writeElement('title', $interchange->name); - - foreach ($interchange->directives as $directive) { - $this->buildDirective($directive); - } - - if ($this->namespace) { - $this->endElement(); - } // namespace - - $this->endElement(); // configdoc - $this->flush(); - } - - /** - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive - */ - public function buildDirective($directive) - { - // Kludge, although I suppose having a notion of a "root namespace" - // certainly makes things look nicer when documentation is built. - // Depends on things being sorted. - if (!$this->namespace || $this->namespace !== $directive->id->getRootNamespace()) { - if ($this->namespace) { - $this->endElement(); - } // namespace - $this->namespace = $directive->id->getRootNamespace(); - $this->startElement('namespace'); - $this->writeAttribute('id', $this->namespace); - $this->writeElement('name', $this->namespace); - } - - $this->startElement('directive'); - $this->writeAttribute('id', $directive->id->toString()); - - $this->writeElement('name', $directive->id->getDirective()); - - $this->startElement('aliases'); - foreach ($directive->aliases as $alias) { - $this->writeElement('alias', $alias->toString()); - } - $this->endElement(); // aliases - - $this->startElement('constraints'); - if ($directive->version) { - $this->writeElement('version', $directive->version); - } - $this->startElement('type'); - if ($directive->typeAllowsNull) { - $this->writeAttribute('allow-null', 'yes'); - } - $this->text($directive->type); - $this->endElement(); // type - if ($directive->allowed) { - $this->startElement('allowed'); - foreach ($directive->allowed as $value => $x) { - $this->writeElement('value', $value); - } - $this->endElement(); // allowed - } - $this->writeElement('default', $this->export($directive->default)); - $this->writeAttribute('xml:space', 'preserve'); - if ($directive->external) { - $this->startElement('external'); - foreach ($directive->external as $project) { - $this->writeElement('project', $project); - } - $this->endElement(); - } - $this->endElement(); // constraints - - if ($directive->deprecatedVersion) { - $this->startElement('deprecated'); - $this->writeElement('version', $directive->deprecatedVersion); - $this->writeElement('use', $directive->deprecatedUse->toString()); - $this->endElement(); // deprecated - } - - $this->startElement('description'); - $this->writeHTMLDiv($directive->description); - $this->endElement(); // description - - $this->endElement(); // directive - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php deleted file mode 100644 index 2671516c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Exception.php +++ /dev/null @@ -1,11 +0,0 @@ - array(directive info) - * @type HTMLPurifier_ConfigSchema_Interchange_Directive[] - */ - public $directives = array(); - - /** - * Adds a directive array to $directives - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $directive - * @throws HTMLPurifier_ConfigSchema_Exception - */ - public function addDirective($directive) - { - if (isset($this->directives[$i = $directive->id->toString()])) { - throw new HTMLPurifier_ConfigSchema_Exception("Cannot redefine directive '$i'"); - } - $this->directives[$i] = $directive; - } - - /** - * Convenience function to perform standard validation. Throws exception - * on failed validation. - */ - public function validate() - { - $validator = new HTMLPurifier_ConfigSchema_Validator(); - return $validator->validate($this); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php deleted file mode 100644 index 127a39a6..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php +++ /dev/null @@ -1,89 +0,0 @@ - true). - * Null if all values are allowed. - * @type array - */ - public $allowed; - - /** - * List of aliases for the directive. - * e.g. array(new HTMLPurifier_ConfigSchema_Interchange_Id('Ns', 'Dir'))). - * @type HTMLPurifier_ConfigSchema_Interchange_Id[] - */ - public $aliases = array(); - - /** - * Hash of value aliases, e.g. array('alt' => 'real'). Null if value - * aliasing is disabled (necessary for non-scalar types). - * @type array - */ - public $valueAliases; - - /** - * Version of HTML Purifier the directive was introduced, e.g. '1.3.1'. - * Null if the directive has always existed. - * @type string - */ - public $version; - - /** - * ID of directive that supercedes this old directive. - * Null if not deprecated. - * @type HTMLPurifier_ConfigSchema_Interchange_Id - */ - public $deprecatedUse; - - /** - * Version of HTML Purifier this directive was deprecated. Null if not - * deprecated. - * @type string - */ - public $deprecatedVersion; - - /** - * List of external projects this directive depends on, e.g. array('CSSTidy'). - * @type array - */ - public $external = array(); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php deleted file mode 100644 index 126f09d9..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Interchange/Id.php +++ /dev/null @@ -1,58 +0,0 @@ -key = $key; - } - - /** - * @return string - * @warning This is NOT magic, to ensure that people don't abuse SPL and - * cause problems for PHP 5.0 support. - */ - public function toString() - { - return $this->key; - } - - /** - * @return string - */ - public function getRootNamespace() - { - return substr($this->key, 0, strpos($this->key, ".")); - } - - /** - * @return string - */ - public function getDirective() - { - return substr($this->key, strpos($this->key, ".") + 1); - } - - /** - * @param string $id - * @return HTMLPurifier_ConfigSchema_Interchange_Id - */ - public static function make($id) - { - return new HTMLPurifier_ConfigSchema_Interchange_Id($id); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php deleted file mode 100644 index 655e6dd1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php +++ /dev/null @@ -1,226 +0,0 @@ -varParser = $varParser ? $varParser : new HTMLPurifier_VarParser_Native(); - } - - /** - * @param string $dir - * @return HTMLPurifier_ConfigSchema_Interchange - */ - public static function buildFromDirectory($dir = null) - { - $builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder(); - $interchange = new HTMLPurifier_ConfigSchema_Interchange(); - return $builder->buildDir($interchange, $dir); - } - - /** - * @param HTMLPurifier_ConfigSchema_Interchange $interchange - * @param string $dir - * @return HTMLPurifier_ConfigSchema_Interchange - */ - public function buildDir($interchange, $dir = null) - { - if (!$dir) { - $dir = HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema'; - } - if (file_exists($dir . '/info.ini')) { - $info = parse_ini_file($dir . '/info.ini'); - $interchange->name = $info['name']; - } - - $files = array(); - $dh = opendir($dir); - while (false !== ($file = readdir($dh))) { - if (!$file || $file[0] == '.' || strrchr($file, '.') !== '.txt') { - continue; - } - $files[] = $file; - } - closedir($dh); - - sort($files); - foreach ($files as $file) { - $this->buildFile($interchange, $dir . '/' . $file); - } - return $interchange; - } - - /** - * @param HTMLPurifier_ConfigSchema_Interchange $interchange - * @param string $file - */ - public function buildFile($interchange, $file) - { - $parser = new HTMLPurifier_StringHashParser(); - $this->build( - $interchange, - new HTMLPurifier_StringHash($parser->parseFile($file)) - ); - } - - /** - * Builds an interchange object based on a hash. - * @param HTMLPurifier_ConfigSchema_Interchange $interchange HTMLPurifier_ConfigSchema_Interchange object to build - * @param HTMLPurifier_StringHash $hash source data - * @throws HTMLPurifier_ConfigSchema_Exception - */ - public function build($interchange, $hash) - { - if (!$hash instanceof HTMLPurifier_StringHash) { - $hash = new HTMLPurifier_StringHash($hash); - } - if (!isset($hash['ID'])) { - throw new HTMLPurifier_ConfigSchema_Exception('Hash does not have any ID'); - } - if (strpos($hash['ID'], '.') === false) { - if (count($hash) == 2 && isset($hash['DESCRIPTION'])) { - $hash->offsetGet('DESCRIPTION'); // prevent complaining - } else { - throw new HTMLPurifier_ConfigSchema_Exception('All directives must have a namespace'); - } - } else { - $this->buildDirective($interchange, $hash); - } - $this->_findUnused($hash); - } - - /** - * @param HTMLPurifier_ConfigSchema_Interchange $interchange - * @param HTMLPurifier_StringHash $hash - * @throws HTMLPurifier_ConfigSchema_Exception - */ - public function buildDirective($interchange, $hash) - { - $directive = new HTMLPurifier_ConfigSchema_Interchange_Directive(); - - // These are required elements: - $directive->id = $this->id($hash->offsetGet('ID')); - $id = $directive->id->toString(); // convenience - - if (isset($hash['TYPE'])) { - $type = explode('/', $hash->offsetGet('TYPE')); - if (isset($type[1])) { - $directive->typeAllowsNull = true; - } - $directive->type = $type[0]; - } else { - throw new HTMLPurifier_ConfigSchema_Exception("TYPE in directive hash '$id' not defined"); - } - - if (isset($hash['DEFAULT'])) { - try { - $directive->default = $this->varParser->parse( - $hash->offsetGet('DEFAULT'), - $directive->type, - $directive->typeAllowsNull - ); - } catch (HTMLPurifier_VarParserException $e) { - throw new HTMLPurifier_ConfigSchema_Exception($e->getMessage() . " in DEFAULT in directive hash '$id'"); - } - } - - if (isset($hash['DESCRIPTION'])) { - $directive->description = $hash->offsetGet('DESCRIPTION'); - } - - if (isset($hash['ALLOWED'])) { - $directive->allowed = $this->lookup($this->evalArray($hash->offsetGet('ALLOWED'))); - } - - if (isset($hash['VALUE-ALIASES'])) { - $directive->valueAliases = $this->evalArray($hash->offsetGet('VALUE-ALIASES')); - } - - if (isset($hash['ALIASES'])) { - $raw_aliases = trim($hash->offsetGet('ALIASES')); - $aliases = preg_split('/\s*,\s*/', $raw_aliases); - foreach ($aliases as $alias) { - $directive->aliases[] = $this->id($alias); - } - } - - if (isset($hash['VERSION'])) { - $directive->version = $hash->offsetGet('VERSION'); - } - - if (isset($hash['DEPRECATED-USE'])) { - $directive->deprecatedUse = $this->id($hash->offsetGet('DEPRECATED-USE')); - } - - if (isset($hash['DEPRECATED-VERSION'])) { - $directive->deprecatedVersion = $hash->offsetGet('DEPRECATED-VERSION'); - } - - if (isset($hash['EXTERNAL'])) { - $directive->external = preg_split('/\s*,\s*/', trim($hash->offsetGet('EXTERNAL'))); - } - - $interchange->addDirective($directive); - } - - /** - * Evaluates an array PHP code string without array() wrapper - * @param string $contents - */ - protected function evalArray($contents) - { - return eval('return array(' . $contents . ');'); - } - - /** - * Converts an array list into a lookup array. - * @param array $array - * @return array - */ - protected function lookup($array) - { - $ret = array(); - foreach ($array as $val) { - $ret[$val] = true; - } - return $ret; - } - - /** - * Convenience function that creates an HTMLPurifier_ConfigSchema_Interchange_Id - * object based on a string Id. - * @param string $id - * @return HTMLPurifier_ConfigSchema_Interchange_Id - */ - protected function id($id) - { - return HTMLPurifier_ConfigSchema_Interchange_Id::make($id); - } - - /** - * Triggers errors for any unused keys passed in the hash; such keys - * may indicate typos, missing values, etc. - * @param HTMLPurifier_StringHash $hash Hash to check. - */ - protected function _findUnused($hash) - { - $accessed = $hash->getAccessed(); - foreach ($hash as $k => $v) { - if (!isset($accessed[$k])) { - trigger_error("String hash key '$k' not used by builder", E_USER_NOTICE); - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php deleted file mode 100644 index fb312778..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Validator.php +++ /dev/null @@ -1,248 +0,0 @@ -parser = new HTMLPurifier_VarParser(); - } - - /** - * Validates a fully-formed interchange object. - * @param HTMLPurifier_ConfigSchema_Interchange $interchange - * @return bool - */ - public function validate($interchange) - { - $this->interchange = $interchange; - $this->aliases = array(); - // PHP is a bit lax with integer <=> string conversions in - // arrays, so we don't use the identical !== comparison - foreach ($interchange->directives as $i => $directive) { - $id = $directive->id->toString(); - if ($i != $id) { - $this->error(false, "Integrity violation: key '$i' does not match internal id '$id'"); - } - $this->validateDirective($directive); - } - return true; - } - - /** - * Validates a HTMLPurifier_ConfigSchema_Interchange_Id object. - * @param HTMLPurifier_ConfigSchema_Interchange_Id $id - */ - public function validateId($id) - { - $id_string = $id->toString(); - $this->context[] = "id '$id_string'"; - if (!$id instanceof HTMLPurifier_ConfigSchema_Interchange_Id) { - // handled by InterchangeBuilder - $this->error(false, 'is not an instance of HTMLPurifier_ConfigSchema_Interchange_Id'); - } - // keys are now unconstrained (we might want to narrow down to A-Za-z0-9.) - // we probably should check that it has at least one namespace - $this->with($id, 'key') - ->assertNotEmpty() - ->assertIsString(); // implicit assertIsString handled by InterchangeBuilder - array_pop($this->context); - } - - /** - * Validates a HTMLPurifier_ConfigSchema_Interchange_Directive object. - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d - */ - public function validateDirective($d) - { - $id = $d->id->toString(); - $this->context[] = "directive '$id'"; - $this->validateId($d->id); - - $this->with($d, 'description') - ->assertNotEmpty(); - - // BEGIN - handled by InterchangeBuilder - $this->with($d, 'type') - ->assertNotEmpty(); - $this->with($d, 'typeAllowsNull') - ->assertIsBool(); - try { - // This also tests validity of $d->type - $this->parser->parse($d->default, $d->type, $d->typeAllowsNull); - } catch (HTMLPurifier_VarParserException $e) { - $this->error('default', 'had error: ' . $e->getMessage()); - } - // END - handled by InterchangeBuilder - - if (!is_null($d->allowed) || !empty($d->valueAliases)) { - // allowed and valueAliases require that we be dealing with - // strings, so check for that early. - $d_int = HTMLPurifier_VarParser::$types[$d->type]; - if (!isset(HTMLPurifier_VarParser::$stringTypes[$d_int])) { - $this->error('type', 'must be a string type when used with allowed or value aliases'); - } - } - - $this->validateDirectiveAllowed($d); - $this->validateDirectiveValueAliases($d); - $this->validateDirectiveAliases($d); - - array_pop($this->context); - } - - /** - * Extra validation if $allowed member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d - */ - public function validateDirectiveAllowed($d) - { - if (is_null($d->allowed)) { - return; - } - $this->with($d, 'allowed') - ->assertNotEmpty() - ->assertIsLookup(); // handled by InterchangeBuilder - if (is_string($d->default) && !isset($d->allowed[$d->default])) { - $this->error('default', 'must be an allowed value'); - } - $this->context[] = 'allowed'; - foreach ($d->allowed as $val => $x) { - if (!is_string($val)) { - $this->error("value $val", 'must be a string'); - } - } - array_pop($this->context); - } - - /** - * Extra validation if $valueAliases member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d - */ - public function validateDirectiveValueAliases($d) - { - if (is_null($d->valueAliases)) { - return; - } - $this->with($d, 'valueAliases') - ->assertIsArray(); // handled by InterchangeBuilder - $this->context[] = 'valueAliases'; - foreach ($d->valueAliases as $alias => $real) { - if (!is_string($alias)) { - $this->error("alias $alias", 'must be a string'); - } - if (!is_string($real)) { - $this->error("alias target $real from alias '$alias'", 'must be a string'); - } - if ($alias === $real) { - $this->error("alias '$alias'", "must not be an alias to itself"); - } - } - if (!is_null($d->allowed)) { - foreach ($d->valueAliases as $alias => $real) { - if (isset($d->allowed[$alias])) { - $this->error("alias '$alias'", 'must not be an allowed value'); - } elseif (!isset($d->allowed[$real])) { - $this->error("alias '$alias'", 'must be an alias to an allowed value'); - } - } - } - array_pop($this->context); - } - - /** - * Extra validation if $aliases member variable of - * HTMLPurifier_ConfigSchema_Interchange_Directive is defined. - * @param HTMLPurifier_ConfigSchema_Interchange_Directive $d - */ - public function validateDirectiveAliases($d) - { - $this->with($d, 'aliases') - ->assertIsArray(); // handled by InterchangeBuilder - $this->context[] = 'aliases'; - foreach ($d->aliases as $alias) { - $this->validateId($alias); - $s = $alias->toString(); - if (isset($this->interchange->directives[$s])) { - $this->error("alias '$s'", 'collides with another directive'); - } - if (isset($this->aliases[$s])) { - $other_directive = $this->aliases[$s]; - $this->error("alias '$s'", "collides with alias for directive '$other_directive'"); - } - $this->aliases[$s] = $d->id->toString(); - } - array_pop($this->context); - } - - // protected helper functions - - /** - * Convenience function for generating HTMLPurifier_ConfigSchema_ValidatorAtom - * for validating simple member variables of objects. - * @param $obj - * @param $member - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - protected function with($obj, $member) - { - return new HTMLPurifier_ConfigSchema_ValidatorAtom($this->getFormattedContext(), $obj, $member); - } - - /** - * Emits an error, providing helpful context. - * @throws HTMLPurifier_ConfigSchema_Exception - */ - protected function error($target, $msg) - { - if ($target !== false) { - $prefix = ucfirst($target) . ' in ' . $this->getFormattedContext(); - } else { - $prefix = ucfirst($this->getFormattedContext()); - } - throw new HTMLPurifier_ConfigSchema_Exception(trim($prefix . ' ' . $msg)); - } - - /** - * Returns a formatted context string. - * @return string - */ - protected function getFormattedContext() - { - return implode(' in ', array_reverse($this->context)); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php deleted file mode 100644 index c9aa3644..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/ValidatorAtom.php +++ /dev/null @@ -1,130 +0,0 @@ -context = $context; - $this->obj = $obj; - $this->member = $member; - $this->contents =& $obj->$member; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertIsString() - { - if (!is_string($this->contents)) { - $this->error('must be a string'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertIsBool() - { - if (!is_bool($this->contents)) { - $this->error('must be a boolean'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertIsArray() - { - if (!is_array($this->contents)) { - $this->error('must be an array'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertNotNull() - { - if ($this->contents === null) { - $this->error('must not be null'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertAlnum() - { - $this->assertIsString(); - if (!ctype_alnum($this->contents)) { - $this->error('must be alphanumeric'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertNotEmpty() - { - if (empty($this->contents)) { - $this->error('must not be empty'); - } - return $this; - } - - /** - * @return HTMLPurifier_ConfigSchema_ValidatorAtom - */ - public function assertIsLookup() - { - $this->assertIsArray(); - foreach ($this->contents as $v) { - if ($v !== true) { - $this->error('must be a lookup array'); - } - } - return $this; - } - - /** - * @param string $msg - * @throws HTMLPurifier_ConfigSchema_Exception - */ - protected function error($msg) - { - throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser deleted file mode 100644 index a5426c73..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema.ser +++ /dev/null @@ -1 +0,0 @@ -O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:127:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:"*data";a:127:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:13:"Attr.ID.HTML5";N;s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:19:"CSS.AllowDuplicates";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:29:"Core.AggressivelyRemoveScript";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:23:"Core.AllowParseManyTags";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:148:{s:9:"aliceblue";s:7:"#F0F8FF";s:12:"antiquewhite";s:7:"#FAEBD7";s:4:"aqua";s:7:"#00FFFF";s:10:"aquamarine";s:7:"#7FFFD4";s:5:"azure";s:7:"#F0FFFF";s:5:"beige";s:7:"#F5F5DC";s:6:"bisque";s:7:"#FFE4C4";s:5:"black";s:7:"#000000";s:14:"blanchedalmond";s:7:"#FFEBCD";s:4:"blue";s:7:"#0000FF";s:10:"blueviolet";s:7:"#8A2BE2";s:5:"brown";s:7:"#A52A2A";s:9:"burlywood";s:7:"#DEB887";s:9:"cadetblue";s:7:"#5F9EA0";s:10:"chartreuse";s:7:"#7FFF00";s:9:"chocolate";s:7:"#D2691E";s:5:"coral";s:7:"#FF7F50";s:14:"cornflowerblue";s:7:"#6495ED";s:8:"cornsilk";s:7:"#FFF8DC";s:7:"crimson";s:7:"#DC143C";s:4:"cyan";s:7:"#00FFFF";s:8:"darkblue";s:7:"#00008B";s:8:"darkcyan";s:7:"#008B8B";s:13:"darkgoldenrod";s:7:"#B8860B";s:8:"darkgray";s:7:"#A9A9A9";s:8:"darkgrey";s:7:"#A9A9A9";s:9:"darkgreen";s:7:"#006400";s:9:"darkkhaki";s:7:"#BDB76B";s:11:"darkmagenta";s:7:"#8B008B";s:14:"darkolivegreen";s:7:"#556B2F";s:10:"darkorange";s:7:"#FF8C00";s:10:"darkorchid";s:7:"#9932CC";s:7:"darkred";s:7:"#8B0000";s:10:"darksalmon";s:7:"#E9967A";s:12:"darkseagreen";s:7:"#8FBC8F";s:13:"darkslateblue";s:7:"#483D8B";s:13:"darkslategray";s:7:"#2F4F4F";s:13:"darkslategrey";s:7:"#2F4F4F";s:13:"darkturquoise";s:7:"#00CED1";s:10:"darkviolet";s:7:"#9400D3";s:8:"deeppink";s:7:"#FF1493";s:11:"deepskyblue";s:7:"#00BFFF";s:7:"dimgray";s:7:"#696969";s:7:"dimgrey";s:7:"#696969";s:10:"dodgerblue";s:7:"#1E90FF";s:9:"firebrick";s:7:"#B22222";s:11:"floralwhite";s:7:"#FFFAF0";s:11:"forestgreen";s:7:"#228B22";s:7:"fuchsia";s:7:"#FF00FF";s:9:"gainsboro";s:7:"#DCDCDC";s:10:"ghostwhite";s:7:"#F8F8FF";s:4:"gold";s:7:"#FFD700";s:9:"goldenrod";s:7:"#DAA520";s:4:"gray";s:7:"#808080";s:4:"grey";s:7:"#808080";s:5:"green";s:7:"#008000";s:11:"greenyellow";s:7:"#ADFF2F";s:8:"honeydew";s:7:"#F0FFF0";s:7:"hotpink";s:7:"#FF69B4";s:9:"indianred";s:7:"#CD5C5C";s:6:"indigo";s:7:"#4B0082";s:5:"ivory";s:7:"#FFFFF0";s:5:"khaki";s:7:"#F0E68C";s:8:"lavender";s:7:"#E6E6FA";s:13:"lavenderblush";s:7:"#FFF0F5";s:9:"lawngreen";s:7:"#7CFC00";s:12:"lemonchiffon";s:7:"#FFFACD";s:9:"lightblue";s:7:"#ADD8E6";s:10:"lightcoral";s:7:"#F08080";s:9:"lightcyan";s:7:"#E0FFFF";s:20:"lightgoldenrodyellow";s:7:"#FAFAD2";s:9:"lightgray";s:7:"#D3D3D3";s:9:"lightgrey";s:7:"#D3D3D3";s:10:"lightgreen";s:7:"#90EE90";s:9:"lightpink";s:7:"#FFB6C1";s:11:"lightsalmon";s:7:"#FFA07A";s:13:"lightseagreen";s:7:"#20B2AA";s:12:"lightskyblue";s:7:"#87CEFA";s:14:"lightslategray";s:7:"#778899";s:14:"lightslategrey";s:7:"#778899";s:14:"lightsteelblue";s:7:"#B0C4DE";s:11:"lightyellow";s:7:"#FFFFE0";s:4:"lime";s:7:"#00FF00";s:9:"limegreen";s:7:"#32CD32";s:5:"linen";s:7:"#FAF0E6";s:7:"magenta";s:7:"#FF00FF";s:6:"maroon";s:7:"#800000";s:16:"mediumaquamarine";s:7:"#66CDAA";s:10:"mediumblue";s:7:"#0000CD";s:12:"mediumorchid";s:7:"#BA55D3";s:12:"mediumpurple";s:7:"#9370DB";s:14:"mediumseagreen";s:7:"#3CB371";s:15:"mediumslateblue";s:7:"#7B68EE";s:17:"mediumspringgreen";s:7:"#00FA9A";s:15:"mediumturquoise";s:7:"#48D1CC";s:15:"mediumvioletred";s:7:"#C71585";s:12:"midnightblue";s:7:"#191970";s:9:"mintcream";s:7:"#F5FFFA";s:9:"mistyrose";s:7:"#FFE4E1";s:8:"moccasin";s:7:"#FFE4B5";s:11:"navajowhite";s:7:"#FFDEAD";s:4:"navy";s:7:"#000080";s:7:"oldlace";s:7:"#FDF5E6";s:5:"olive";s:7:"#808000";s:9:"olivedrab";s:7:"#6B8E23";s:6:"orange";s:7:"#FFA500";s:9:"orangered";s:7:"#FF4500";s:6:"orchid";s:7:"#DA70D6";s:13:"palegoldenrod";s:7:"#EEE8AA";s:9:"palegreen";s:7:"#98FB98";s:13:"paleturquoise";s:7:"#AFEEEE";s:13:"palevioletred";s:7:"#DB7093";s:10:"papayawhip";s:7:"#FFEFD5";s:9:"peachpuff";s:7:"#FFDAB9";s:4:"peru";s:7:"#CD853F";s:4:"pink";s:7:"#FFC0CB";s:4:"plum";s:7:"#DDA0DD";s:10:"powderblue";s:7:"#B0E0E6";s:6:"purple";s:7:"#800080";s:13:"rebeccapurple";s:7:"#663399";s:3:"red";s:7:"#FF0000";s:9:"rosybrown";s:7:"#BC8F8F";s:9:"royalblue";s:7:"#4169E1";s:11:"saddlebrown";s:7:"#8B4513";s:6:"salmon";s:7:"#FA8072";s:10:"sandybrown";s:7:"#F4A460";s:8:"seagreen";s:7:"#2E8B57";s:8:"seashell";s:7:"#FFF5EE";s:6:"sienna";s:7:"#A0522D";s:6:"silver";s:7:"#C0C0C0";s:7:"skyblue";s:7:"#87CEEB";s:9:"slateblue";s:7:"#6A5ACD";s:9:"slategray";s:7:"#708090";s:9:"slategrey";s:7:"#708090";s:4:"snow";s:7:"#FFFAFA";s:11:"springgreen";s:7:"#00FF7F";s:9:"steelblue";s:7:"#4682B4";s:3:"tan";s:7:"#D2B48C";s:4:"teal";s:7:"#008080";s:7:"thistle";s:7:"#D8BFD8";s:6:"tomato";s:7:"#FF6347";s:9:"turquoise";s:7:"#40E0D0";s:6:"violet";s:7:"#EE82EE";s:5:"wheat";s:7:"#F5DEB3";s:5:"white";s:7:"#FFFFFF";s:10:"whitesmoke";s:7:"#F5F5F5";s:6:"yellow";s:7:"#FFFF00";s:11:"yellowgreen";s:7:"#9ACD32";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:24:"Core.LegacyEntityDecoder";b:0;s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:10:"HTML.Forms";b:0;s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:19:"HTML.TargetNoopener";b:1;s:21:"HTML.TargetNoreferrer";b:1;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:7:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;s:3:"tel";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:9:"*parent";N;s:8:"*cache";N;}s:4:"info";a:140:{s:19:"Attr.AllowedClasses";i:-8;s:24:"Attr.AllowedFrameTargets";i:8;s:15:"Attr.AllowedRel";i:8;s:15:"Attr.AllowedRev";i:8;s:18:"Attr.ClassUseCDATA";i:-7;s:20:"Attr.DefaultImageAlt";i:-1;s:24:"Attr.DefaultInvalidImage";i:1;s:27:"Attr.DefaultInvalidImageAlt";i:1;s:19:"Attr.DefaultTextDir";O:8:"stdClass":2:{s:4:"type";i:1;s:7:"allowed";a:2:{s:3:"ltr";b:1;s:3:"rtl";b:1;}}s:13:"Attr.EnableID";i:7;s:17:"HTML.EnableAttrID";O:8:"stdClass":2:{s:3:"key";s:13:"Attr.EnableID";s:7:"isAlias";b:1;}s:21:"Attr.ForbiddenClasses";i:8;s:13:"Attr.ID.HTML5";i:-7;s:16:"Attr.IDBlacklist";i:9;s:22:"Attr.IDBlacklistRegexp";i:-1;s:13:"Attr.IDPrefix";i:1;s:18:"Attr.IDPrefixLocal";i:1;s:24:"AutoFormat.AutoParagraph";i:7;s:17:"AutoFormat.Custom";i:9;s:25:"AutoFormat.DisplayLinkURI";i:7;s:18:"AutoFormat.Linkify";i:7;s:33:"AutoFormat.PurifierLinkify.DocURL";i:1;s:37:"AutoFormatParam.PurifierLinkifyDocURL";O:8:"stdClass":2:{s:3:"key";s:33:"AutoFormat.PurifierLinkify.DocURL";s:7:"isAlias";b:1;}s:26:"AutoFormat.PurifierLinkify";i:7;s:32:"AutoFormat.RemoveEmpty.Predicate";i:10;s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";i:8;s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";i:7;s:22:"AutoFormat.RemoveEmpty";i:7;s:39:"AutoFormat.RemoveSpansWithoutAttributes";i:7;s:19:"CSS.AllowDuplicates";i:7;s:18:"CSS.AllowImportant";i:7;s:15:"CSS.AllowTricky";i:7;s:16:"CSS.AllowedFonts";i:-8;s:21:"CSS.AllowedProperties";i:-8;s:17:"CSS.DefinitionRev";i:5;s:23:"CSS.ForbiddenProperties";i:8;s:16:"CSS.MaxImgLength";i:-1;s:15:"CSS.Proprietary";i:7;s:11:"CSS.Trusted";i:7;s:20:"Cache.DefinitionImpl";i:-1;s:20:"Core.DefinitionCache";O:8:"stdClass":2:{s:3:"key";s:20:"Cache.DefinitionImpl";s:7:"isAlias";b:1;}s:20:"Cache.SerializerPath";i:-1;s:27:"Cache.SerializerPermissions";i:-5;s:22:"Core.AggressivelyFixLt";i:7;s:29:"Core.AggressivelyRemoveScript";i:7;s:28:"Core.AllowHostnameUnderscore";i:7;s:23:"Core.AllowParseManyTags";i:7;s:18:"Core.CollectErrors";i:7;s:18:"Core.ColorKeywords";i:10;s:30:"Core.ConvertDocumentToFragment";i:7;s:24:"Core.AcceptFullDocuments";O:8:"stdClass":2:{s:3:"key";s:30:"Core.ConvertDocumentToFragment";s:7:"isAlias";b:1;}s:36:"Core.DirectLexLineNumberSyncInterval";i:5;s:20:"Core.DisableExcludes";i:7;s:15:"Core.EnableIDNA";i:7;s:13:"Core.Encoding";i:2;s:26:"Core.EscapeInvalidChildren";i:7;s:22:"Core.EscapeInvalidTags";i:7;s:29:"Core.EscapeNonASCIICharacters";i:7;s:19:"Core.HiddenElements";i:8;s:13:"Core.Language";i:1;s:24:"Core.LegacyEntityDecoder";i:7;s:14:"Core.LexerImpl";i:-11;s:24:"Core.MaintainLineNumbers";i:-7;s:22:"Core.NormalizeNewlines";i:7;s:21:"Core.RemoveInvalidImg";i:7;s:33:"Core.RemoveProcessingInstructions";i:7;s:25:"Core.RemoveScriptContents";i:-7;s:13:"Filter.Custom";i:9;s:34:"Filter.ExtractStyleBlocks.Escaping";i:7;s:33:"Filter.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:38:"FilterParam.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:31:"Filter.ExtractStyleBlocks.Scope";i:-1;s:30:"Filter.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:35:"FilterParam.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:34:"Filter.ExtractStyleBlocks.TidyImpl";i:-11;s:38:"FilterParam.ExtractStyleBlocksTidyImpl";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.TidyImpl";s:7:"isAlias";b:1;}s:25:"Filter.ExtractStyleBlocks";i:7;s:14:"Filter.YouTube";i:7;s:12:"HTML.Allowed";i:-4;s:22:"HTML.AllowedAttributes";i:-8;s:20:"HTML.AllowedComments";i:8;s:26:"HTML.AllowedCommentsRegexp";i:-1;s:20:"HTML.AllowedElements";i:-8;s:19:"HTML.AllowedModules";i:-8;s:23:"HTML.Attr.Name.UseCDATA";i:7;s:17:"HTML.BlockWrapper";i:1;s:16:"HTML.CoreModules";i:8;s:18:"HTML.CustomDoctype";i:-1;s:17:"HTML.DefinitionID";i:-1;s:18:"HTML.DefinitionRev";i:5;s:12:"HTML.Doctype";O:8:"stdClass":3:{s:4:"type";i:1;s:10:"allow_null";b:1;s:7:"allowed";a:5:{s:22:"HTML 4.01 Transitional";b:1;s:16:"HTML 4.01 Strict";b:1;s:22:"XHTML 1.0 Transitional";b:1;s:16:"XHTML 1.0 Strict";b:1;s:9:"XHTML 1.1";b:1;}}s:25:"HTML.FlashAllowFullScreen";i:7;s:24:"HTML.ForbiddenAttributes";i:8;s:22:"HTML.ForbiddenElements";i:8;s:10:"HTML.Forms";i:7;s:17:"HTML.MaxImgLength";i:-5;s:13:"HTML.Nofollow";i:7;s:11:"HTML.Parent";i:1;s:16:"HTML.Proprietary";i:7;s:14:"HTML.SafeEmbed";i:7;s:15:"HTML.SafeIframe";i:7;s:15:"HTML.SafeObject";i:7;s:18:"HTML.SafeScripting";i:8;s:11:"HTML.Strict";i:7;s:16:"HTML.TargetBlank";i:7;s:19:"HTML.TargetNoopener";i:7;s:21:"HTML.TargetNoreferrer";i:7;s:12:"HTML.TidyAdd";i:8;s:14:"HTML.TidyLevel";O:8:"stdClass":2:{s:4:"type";i:1;s:7:"allowed";a:4:{s:4:"none";b:1;s:5:"light";b:1;s:6:"medium";b:1;s:5:"heavy";b:1;}}s:15:"HTML.TidyRemove";i:8;s:12:"HTML.Trusted";i:7;s:10:"HTML.XHTML";i:7;s:10:"Core.XHTML";O:8:"stdClass":2:{s:3:"key";s:10:"HTML.XHTML";s:7:"isAlias";b:1;}s:28:"Output.CommentScriptContents";i:7;s:26:"Core.CommentScriptContents";O:8:"stdClass":2:{s:3:"key";s:28:"Output.CommentScriptContents";s:7:"isAlias";b:1;}s:19:"Output.FixInnerHTML";i:7;s:18:"Output.FlashCompat";i:7;s:14:"Output.Newline";i:-1;s:15:"Output.SortAttr";i:7;s:17:"Output.TidyFormat";i:7;s:15:"Core.TidyFormat";O:8:"stdClass":2:{s:3:"key";s:17:"Output.TidyFormat";s:7:"isAlias";b:1;}s:17:"Test.ForceNoIconv";i:7;s:18:"URI.AllowedSchemes";i:8;s:8:"URI.Base";i:-1;s:17:"URI.DefaultScheme";i:-1;s:16:"URI.DefinitionID";i:-1;s:17:"URI.DefinitionRev";i:5;s:11:"URI.Disable";i:7;s:15:"Attr.DisableURI";O:8:"stdClass":2:{s:3:"key";s:11:"URI.Disable";s:7:"isAlias";b:1;}s:19:"URI.DisableExternal";i:7;s:28:"URI.DisableExternalResources";i:7;s:20:"URI.DisableResources";i:7;s:8:"URI.Host";i:-1;s:17:"URI.HostBlacklist";i:9;s:16:"URI.MakeAbsolute";i:7;s:9:"URI.Munge";i:-1;s:18:"URI.MungeResources";i:7;s:18:"URI.MungeSecretKey";i:-1;s:26:"URI.OverrideAllowedSchemes";i:7;s:20:"URI.SafeIframeRegexp";i:-1;}} \ No newline at end of file diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini deleted file mode 100644 index 5de4505e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/schema/info.ini +++ /dev/null @@ -1,3 +0,0 @@ -name = "HTML Purifier" - -; vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php deleted file mode 100644 index 543e3f8f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ContentSets.php +++ /dev/null @@ -1,170 +0,0 @@ - true) indexed by name. - * @type array - * @note This is in HTMLPurifier_HTMLDefinition->info_content_sets - */ - public $lookup = array(); - - /** - * Synchronized list of defined content sets (keys of info). - * @type array - */ - protected $keys = array(); - /** - * Synchronized list of defined content values (values of info). - * @type array - */ - protected $values = array(); - - /** - * Merges in module's content sets, expands identifiers in the content - * sets and populates the keys, values and lookup member variables. - * @param HTMLPurifier_HTMLModule[] $modules List of HTMLPurifier_HTMLModule - */ - public function __construct($modules) - { - if (!is_array($modules)) { - $modules = array($modules); - } - // populate content_sets based on module hints - // sorry, no way of overloading - foreach ($modules as $module) { - foreach ($module->content_sets as $key => $value) { - $temp = $this->convertToLookup($value); - if (isset($this->lookup[$key])) { - // add it into the existing content set - $this->lookup[$key] = array_merge($this->lookup[$key], $temp); - } else { - $this->lookup[$key] = $temp; - } - } - } - $old_lookup = false; - while ($old_lookup !== $this->lookup) { - $old_lookup = $this->lookup; - foreach ($this->lookup as $i => $set) { - $add = array(); - foreach ($set as $element => $x) { - if (isset($this->lookup[$element])) { - $add += $this->lookup[$element]; - unset($this->lookup[$i][$element]); - } - } - $this->lookup[$i] += $add; - } - } - - foreach ($this->lookup as $key => $lookup) { - $this->info[$key] = implode(' | ', array_keys($lookup)); - } - $this->keys = array_keys($this->info); - $this->values = array_values($this->info); - } - - /** - * Accepts a definition; generates and assigns a ChildDef for it - * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef reference - * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef - */ - public function generateChildDef(&$def, $module) - { - if (!empty($def->child)) { // already done! - return; - } - $content_model = $def->content_model; - if (is_string($content_model)) { - // Assume that $this->keys is alphanumeric - $def->content_model = preg_replace_callback( - '/\b(' . implode('|', $this->keys) . ')\b/', - array($this, 'generateChildDefCallback'), - $content_model - ); - //$def->content_model = str_replace( - // $this->keys, $this->values, $content_model); - } - $def->child = $this->getChildDef($def, $module); - } - - public function generateChildDefCallback($matches) - { - return $this->info[$matches[0]]; - } - - /** - * Instantiates a ChildDef based on content_model and content_model_type - * member variables in HTMLPurifier_ElementDef - * @note This will also defer to modules for custom HTMLPurifier_ChildDef - * subclasses that need content set expansion - * @param HTMLPurifier_ElementDef $def HTMLPurifier_ElementDef to have ChildDef extracted - * @param HTMLPurifier_HTMLModule $module Module that defined the ElementDef - * @return HTMLPurifier_ChildDef corresponding to ElementDef - */ - public function getChildDef($def, $module) - { - $value = $def->content_model; - if (is_object($value)) { - trigger_error( - 'Literal object child definitions should be stored in '. - 'ElementDef->child not ElementDef->content_model', - E_USER_NOTICE - ); - return $value; - } - switch ($def->content_model_type) { - case 'required': - return new HTMLPurifier_ChildDef_Required($value); - case 'optional': - return new HTMLPurifier_ChildDef_Optional($value); - case 'empty': - return new HTMLPurifier_ChildDef_Empty(); - case 'custom': - return new HTMLPurifier_ChildDef_Custom($value); - } - // defer to its module - $return = false; - if ($module->defines_child_def) { // save a func call - $return = $module->getChildDef($def); - } - if ($return !== false) { - return $return; - } - // error-out - trigger_error( - 'Could not determine which ChildDef class to instantiate', - E_USER_ERROR - ); - return false; - } - - /** - * Converts a string list of elements separated by pipes into - * a lookup array. - * @param string $string List of elements - * @return array Lookup array of elements - */ - protected function convertToLookup($string) - { - $array = explode('|', str_replace(' ', '', $string)); - $ret = array(); - foreach ($array as $k) { - $ret[$k] = true; - } - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php deleted file mode 100644 index 00e509c8..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Context.php +++ /dev/null @@ -1,95 +0,0 @@ -_storage)) { - trigger_error( - "Name $name produces collision, cannot re-register", - E_USER_ERROR - ); - return; - } - $this->_storage[$name] =& $ref; - } - - /** - * Retrieves a variable reference from the context. - * @param string $name String name - * @param bool $ignore_error Boolean whether or not to ignore error - * @return mixed - */ - public function &get($name, $ignore_error = false) - { - if (!array_key_exists($name, $this->_storage)) { - if (!$ignore_error) { - trigger_error( - "Attempted to retrieve non-existent variable $name", - E_USER_ERROR - ); - } - $var = null; // so we can return by reference - return $var; - } - return $this->_storage[$name]; - } - - /** - * Destroys a variable in the context. - * @param string $name String name - */ - public function destroy($name) - { - if (!array_key_exists($name, $this->_storage)) { - trigger_error( - "Attempted to destroy non-existent variable $name", - E_USER_ERROR - ); - return; - } - unset($this->_storage[$name]); - } - - /** - * Checks whether or not the variable exists. - * @param string $name String name - * @return bool - */ - public function exists($name) - { - return array_key_exists($name, $this->_storage); - } - - /** - * Loads a series of variables from an associative array - * @param array $context_array Assoc array of variables to load - */ - public function loadArray($context_array) - { - foreach ($context_array as $key => $discard) { - $this->register($key, $context_array[$key]); - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php deleted file mode 100644 index bc6d4336..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Definition.php +++ /dev/null @@ -1,55 +0,0 @@ -setup) { - return; - } - $this->setup = true; - $this->doSetup($config); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php deleted file mode 100644 index 9aa8ff35..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache.php +++ /dev/null @@ -1,129 +0,0 @@ -type = $type; - } - - /** - * Generates a unique identifier for a particular configuration - * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config - * @return string - */ - public function generateKey($config) - { - return $config->version . ',' . // possibly replace with function calls - $config->getBatchSerial($this->type) . ',' . - $config->get($this->type . '.DefinitionRev'); - } - - /** - * Tests whether or not a key is old with respect to the configuration's - * version and revision number. - * @param string $key Key to test - * @param HTMLPurifier_Config $config Instance of HTMLPurifier_Config to test against - * @return bool - */ - public function isOld($key, $config) - { - if (substr_count($key, ',') < 2) { - return true; - } - list($version, $hash, $revision) = explode(',', $key, 3); - $compare = version_compare($version, $config->version); - // version mismatch, is always old - if ($compare != 0) { - return true; - } - // versions match, ids match, check revision number - if ($hash == $config->getBatchSerial($this->type) && - $revision < $config->get($this->type . '.DefinitionRev')) { - return true; - } - return false; - } - - /** - * Checks if a definition's type jives with the cache's type - * @note Throws an error on failure - * @param HTMLPurifier_Definition $def Definition object to check - * @return bool true if good, false if not - */ - public function checkDefType($def) - { - if ($def->type !== $this->type) { - trigger_error("Cannot use definition of type {$def->type} in cache for {$this->type}"); - return false; - } - return true; - } - - /** - * Adds a definition object to the cache - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - */ - abstract public function add($def, $config); - - /** - * Unconditionally saves a definition object to the cache - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - */ - abstract public function set($def, $config); - - /** - * Replace an object in the cache - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - */ - abstract public function replace($def, $config); - - /** - * Retrieves a definition object from the cache - * @param HTMLPurifier_Config $config - */ - abstract public function get($config); - - /** - * Removes a definition object to the cache - * @param HTMLPurifier_Config $config - */ - abstract public function remove($config); - - /** - * Clears all objects from cache - * @param HTMLPurifier_Config $config - */ - abstract public function flush($config); - - /** - * Clears all expired (older version or revision) objects from cache - * @note Be careful implementing this method as flush. Flush must - * not interfere with other Definition types, and cleanup() - * should not be repeatedly called by userland code. - * @param HTMLPurifier_Config $config - */ - abstract public function cleanup($config); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php deleted file mode 100644 index b57a51b6..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php +++ /dev/null @@ -1,112 +0,0 @@ -copy(); - // reference is necessary for mocks in PHP 4 - $decorator->cache =& $cache; - $decorator->type = $cache->type; - return $decorator; - } - - /** - * Cross-compatible clone substitute - * @return HTMLPurifier_DefinitionCache_Decorator - */ - public function copy() - { - return new HTMLPurifier_DefinitionCache_Decorator(); - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function add($def, $config) - { - return $this->cache->add($def, $config); - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function set($def, $config) - { - return $this->cache->set($def, $config); - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function replace($def, $config) - { - return $this->cache->replace($def, $config); - } - - /** - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function get($config) - { - return $this->cache->get($config); - } - - /** - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function remove($config) - { - return $this->cache->remove($config); - } - - /** - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function flush($config) - { - return $this->cache->flush($config); - } - - /** - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function cleanup($config) - { - return $this->cache->cleanup($config); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php deleted file mode 100644 index 4991777c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php +++ /dev/null @@ -1,78 +0,0 @@ -definitions[$this->generateKey($config)] = $def; - } - return $status; - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function set($def, $config) - { - $status = parent::set($def, $config); - if ($status) { - $this->definitions[$this->generateKey($config)] = $def; - } - return $status; - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function replace($def, $config) - { - $status = parent::replace($def, $config); - if ($status) { - $this->definitions[$this->generateKey($config)] = $def; - } - return $status; - } - - /** - * @param HTMLPurifier_Config $config - * @return mixed - */ - public function get($config) - { - $key = $this->generateKey($config); - if (isset($this->definitions[$key])) { - return $this->definitions[$key]; - } - $this->definitions[$key] = parent::get($config); - return $this->definitions[$key]; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in deleted file mode 100644 index b1fec8d3..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Template.php.in +++ /dev/null @@ -1,82 +0,0 @@ -checkDefType($def)) { - return; - } - $file = $this->generateFilePath($config); - if (file_exists($file)) { - return false; - } - if (!$this->_prepareDir($config)) { - return false; - } - return $this->_write($file, serialize($def), $config); - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return int|bool - */ - public function set($def, $config) - { - if (!$this->checkDefType($def)) { - return; - } - $file = $this->generateFilePath($config); - if (!$this->_prepareDir($config)) { - return false; - } - return $this->_write($file, serialize($def), $config); - } - - /** - * @param HTMLPurifier_Definition $def - * @param HTMLPurifier_Config $config - * @return int|bool - */ - public function replace($def, $config) - { - if (!$this->checkDefType($def)) { - return; - } - $file = $this->generateFilePath($config); - if (!file_exists($file)) { - return false; - } - if (!$this->_prepareDir($config)) { - return false; - } - return $this->_write($file, serialize($def), $config); - } - - /** - * @param HTMLPurifier_Config $config - * @return bool|HTMLPurifier_Config - */ - public function get($config) - { - $file = $this->generateFilePath($config); - if (!file_exists($file)) { - return false; - } - return unserialize(file_get_contents($file)); - } - - /** - * @param HTMLPurifier_Config $config - * @return bool - */ - public function remove($config) - { - $file = $this->generateFilePath($config); - if (!file_exists($file)) { - return false; - } - return unlink($file); - } - - /** - * @param HTMLPurifier_Config $config - * @return bool - */ - public function flush($config) - { - if (!$this->_prepareDir($config)) { - return false; - } - $dir = $this->generateDirectoryPath($config); - $dh = opendir($dir); - // Apparently, on some versions of PHP, readdir will return - // an empty string if you pass an invalid argument to readdir. - // So you need this test. See #49. - if (false === $dh) { - return false; - } - while (false !== ($filename = readdir($dh))) { - if (empty($filename)) { - continue; - } - if ($filename[0] === '.') { - continue; - } - unlink($dir . '/' . $filename); - } - closedir($dh); - return true; - } - - /** - * @param HTMLPurifier_Config $config - * @return bool - */ - public function cleanup($config) - { - if (!$this->_prepareDir($config)) { - return false; - } - $dir = $this->generateDirectoryPath($config); - $dh = opendir($dir); - // See #49 (and above). - if (false === $dh) { - return false; - } - while (false !== ($filename = readdir($dh))) { - if (empty($filename)) { - continue; - } - if ($filename[0] === '.') { - continue; - } - $key = substr($filename, 0, strlen($filename) - 4); - if ($this->isOld($key, $config)) { - unlink($dir . '/' . $filename); - } - } - closedir($dh); - return true; - } - - /** - * Generates the file path to the serial file corresponding to - * the configuration and definition name - * @param HTMLPurifier_Config $config - * @return string - * @todo Make protected - */ - public function generateFilePath($config) - { - $key = $this->generateKey($config); - return $this->generateDirectoryPath($config) . '/' . $key . '.ser'; - } - - /** - * Generates the path to the directory contain this cache's serial files - * @param HTMLPurifier_Config $config - * @return string - * @note No trailing slash - * @todo Make protected - */ - public function generateDirectoryPath($config) - { - $base = $this->generateBaseDirectoryPath($config); - return $base . '/' . $this->type; - } - - /** - * Generates path to base directory that contains all definition type - * serials - * @param HTMLPurifier_Config $config - * @return mixed|string - * @todo Make protected - */ - public function generateBaseDirectoryPath($config) - { - $base = $config->get('Cache.SerializerPath'); - $base = is_null($base) ? HTMLPURIFIER_PREFIX . '/HTMLPurifier/DefinitionCache/Serializer' : $base; - return $base; - } - - /** - * Convenience wrapper function for file_put_contents - * @param string $file File name to write to - * @param string $data Data to write into file - * @param HTMLPurifier_Config $config - * @return int|bool Number of bytes written if success, or false if failure. - */ - private function _write($file, $data, $config) - { - $result = file_put_contents($file, $data); - if ($result !== false) { - // set permissions of the new file (no execute) - $chmod = $config->get('Cache.SerializerPermissions'); - if ($chmod !== null) { - chmod($file, $chmod & 0666); - } - } - return $result; - } - - /** - * Prepares the directory that this type stores the serials in - * @param HTMLPurifier_Config $config - * @return bool True if successful - */ - private function _prepareDir($config) - { - $directory = $this->generateDirectoryPath($config); - $chmod = $config->get('Cache.SerializerPermissions'); - if ($chmod === null) { - if (!@mkdir($directory) && !is_dir($directory)) { - trigger_error( - 'Could not create directory ' . $directory . '', - E_USER_WARNING - ); - return false; - } - return true; - } - if (!is_dir($directory)) { - $base = $this->generateBaseDirectoryPath($config); - if (!is_dir($base)) { - trigger_error( - 'Base directory ' . $base . ' does not exist, - please create or change using %Cache.SerializerPath', - E_USER_WARNING - ); - return false; - } elseif (!$this->_testPermissions($base, $chmod)) { - return false; - } - if (!@mkdir($directory, $chmod) && !is_dir($directory)) { - trigger_error( - 'Could not create directory ' . $directory . '', - E_USER_WARNING - ); - return false; - } - if (!$this->_testPermissions($directory, $chmod)) { - return false; - } - } elseif (!$this->_testPermissions($directory, $chmod)) { - return false; - } - return true; - } - - /** - * Tests permissions on a directory and throws out friendly - * error messages and attempts to chmod it itself if possible - * @param string $dir Directory path - * @param int $chmod Permissions - * @return bool True if directory is writable - */ - private function _testPermissions($dir, $chmod) - { - // early abort, if it is writable, everything is hunky-dory - if (is_writable($dir)) { - return true; - } - if (!is_dir($dir)) { - // generally, you'll want to handle this beforehand - // so a more specific error message can be given - trigger_error( - 'Directory ' . $dir . ' does not exist', - E_USER_WARNING - ); - return false; - } - if (function_exists('posix_getuid') && $chmod !== null) { - // POSIX system, we can give more specific advice - if (fileowner($dir) === posix_getuid()) { - // we can chmod it ourselves - $chmod = $chmod | 0700; - if (chmod($dir, $chmod)) { - return true; - } - } elseif (filegroup($dir) === posix_getgid()) { - $chmod = $chmod | 0070; - } else { - // PHP's probably running as nobody, so we'll - // need to give global permissions - $chmod = $chmod | 0777; - } - trigger_error( - 'Directory ' . $dir . ' not writable, ' . - 'please chmod to ' . decoct($chmod), - E_USER_WARNING - ); - } else { - // generic error message - trigger_error( - 'Directory ' . $dir . ' not writable, ' . - 'please alter file permissions', - E_USER_WARNING - ); - } - return false; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README deleted file mode 100644 index 2e35c1c3..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer/README +++ /dev/null @@ -1,3 +0,0 @@ -This is a dummy file to prevent Git from ignoring this empty directory. - - vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php deleted file mode 100644 index fd1cc9be..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCacheFactory.php +++ /dev/null @@ -1,106 +0,0 @@ - array()); - - /** - * @type array - */ - protected $implementations = array(); - - /** - * @type HTMLPurifier_DefinitionCache_Decorator[] - */ - protected $decorators = array(); - - /** - * Initialize default decorators - */ - public function setup() - { - $this->addDecorator('Cleanup'); - } - - /** - * Retrieves an instance of global definition cache factory. - * @param HTMLPurifier_DefinitionCacheFactory $prototype - * @return HTMLPurifier_DefinitionCacheFactory - */ - public static function instance($prototype = null) - { - static $instance; - if ($prototype !== null) { - $instance = $prototype; - } elseif ($instance === null || $prototype === true) { - $instance = new HTMLPurifier_DefinitionCacheFactory(); - $instance->setup(); - } - return $instance; - } - - /** - * Registers a new definition cache object - * @param string $short Short name of cache object, for reference - * @param string $long Full class name of cache object, for construction - */ - public function register($short, $long) - { - $this->implementations[$short] = $long; - } - - /** - * Factory method that creates a cache object based on configuration - * @param string $type Name of definitions handled by cache - * @param HTMLPurifier_Config $config Config instance - * @return mixed - */ - public function create($type, $config) - { - $method = $config->get('Cache.DefinitionImpl'); - if ($method === null) { - return new HTMLPurifier_DefinitionCache_Null($type); - } - if (!empty($this->caches[$method][$type])) { - return $this->caches[$method][$type]; - } - if (isset($this->implementations[$method]) && - class_exists($class = $this->implementations[$method], false)) { - $cache = new $class($type); - } else { - if ($method != 'Serializer') { - trigger_error("Unrecognized DefinitionCache $method, using Serializer instead", E_USER_WARNING); - } - $cache = new HTMLPurifier_DefinitionCache_Serializer($type); - } - foreach ($this->decorators as $decorator) { - $new_cache = $decorator->decorate($cache); - // prevent infinite recursion in PHP 4 - unset($cache); - $cache = $new_cache; - } - $this->caches[$method][$type] = $cache; - return $this->caches[$method][$type]; - } - - /** - * Registers a decorator to add to all new cache objects - * @param HTMLPurifier_DefinitionCache_Decorator|string $decorator An instance or the name of a decorator - */ - public function addDecorator($decorator) - { - if (is_string($decorator)) { - $class = "HTMLPurifier_DefinitionCache_Decorator_$decorator"; - $decorator = new $class; - } - $this->decorators[$decorator->name] = $decorator; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php deleted file mode 100644 index 4acd06e5..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Doctype.php +++ /dev/null @@ -1,73 +0,0 @@ -renderDoctype. - * If structure changes, please update that function. - */ -class HTMLPurifier_Doctype -{ - /** - * Full name of doctype - * @type string - */ - public $name; - - /** - * List of standard modules (string identifiers or literal objects) - * that this doctype uses - * @type array - */ - public $modules = array(); - - /** - * List of modules to use for tidying up code - * @type array - */ - public $tidyModules = array(); - - /** - * Is the language derived from XML (i.e. XHTML)? - * @type bool - */ - public $xml = true; - - /** - * List of aliases for this doctype - * @type array - */ - public $aliases = array(); - - /** - * Public DTD identifier - * @type string - */ - public $dtdPublic; - - /** - * System DTD identifier - * @type string - */ - public $dtdSystem; - - public function __construct( - $name = null, - $xml = true, - $modules = array(), - $tidyModules = array(), - $aliases = array(), - $dtd_public = null, - $dtd_system = null - ) { - $this->name = $name; - $this->xml = $xml; - $this->modules = $modules; - $this->tidyModules = $tidyModules; - $this->aliases = $aliases; - $this->dtdPublic = $dtd_public; - $this->dtdSystem = $dtd_system; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php deleted file mode 100644 index acc1d64a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DoctypeRegistry.php +++ /dev/null @@ -1,142 +0,0 @@ -doctypes[$doctype->name] = $doctype; - $name = $doctype->name; - // hookup aliases - foreach ($doctype->aliases as $alias) { - if (isset($this->doctypes[$alias])) { - continue; - } - $this->aliases[$alias] = $name; - } - // remove old aliases - if (isset($this->aliases[$name])) { - unset($this->aliases[$name]); - } - return $doctype; - } - - /** - * Retrieves reference to a doctype of a certain name - * @note This function resolves aliases - * @note When possible, use the more fully-featured make() - * @param string $doctype Name of doctype - * @return HTMLPurifier_Doctype Editable doctype object - */ - public function get($doctype) - { - if (isset($this->aliases[$doctype])) { - $doctype = $this->aliases[$doctype]; - } - if (!isset($this->doctypes[$doctype])) { - trigger_error('Doctype ' . htmlspecialchars($doctype) . ' does not exist', E_USER_ERROR); - $anon = new HTMLPurifier_Doctype($doctype); - return $anon; - } - return $this->doctypes[$doctype]; - } - - /** - * Creates a doctype based on a configuration object, - * will perform initialization on the doctype - * @note Use this function to get a copy of doctype that config - * can hold on to (this is necessary in order to tell - * Generator whether or not the current document is XML - * based or not). - * @param HTMLPurifier_Config $config - * @return HTMLPurifier_Doctype - */ - public function make($config) - { - return clone $this->get($this->getDoctypeFromConfig($config)); - } - - /** - * Retrieves the doctype from the configuration object - * @param HTMLPurifier_Config $config - * @return string - */ - public function getDoctypeFromConfig($config) - { - // recommended test - $doctype = $config->get('HTML.Doctype'); - if (!empty($doctype)) { - return $doctype; - } - $doctype = $config->get('HTML.CustomDoctype'); - if (!empty($doctype)) { - return $doctype; - } - // backwards-compatibility - if ($config->get('HTML.XHTML')) { - $doctype = 'XHTML 1.0'; - } else { - $doctype = 'HTML 4.01'; - } - if ($config->get('HTML.Strict')) { - $doctype .= ' Strict'; - } else { - $doctype .= ' Transitional'; - } - return $doctype; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php deleted file mode 100644 index 57cfd2bb..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ElementDef.php +++ /dev/null @@ -1,216 +0,0 @@ -setup(), this array may also - * contain an array at index 0 that indicates which attribute - * collections to load into the full array. It may also - * contain string indentifiers in lieu of HTMLPurifier_AttrDef, - * see HTMLPurifier_AttrTypes on how they are expanded during - * HTMLPurifier_HTMLDefinition->setup() processing. - */ - public $attr = array(); - - // XXX: Design note: currently, it's not possible to override - // previously defined AttrTransforms without messing around with - // the final generated config. This is by design; a previous version - // used an associated list of attr_transform, but it was extremely - // easy to accidentally override other attribute transforms by - // forgetting to specify an index (and just using 0.) While we - // could check this by checking the index number and complaining, - // there is a second problem which is that it is not at all easy to - // tell when something is getting overridden. Combine this with a - // codebase where this isn't really being used, and it's perfect for - // nuking. - - /** - * List of tags HTMLPurifier_AttrTransform to be done before validation. - * @type array - */ - public $attr_transform_pre = array(); - - /** - * List of tags HTMLPurifier_AttrTransform to be done after validation. - * @type array - */ - public $attr_transform_post = array(); - - /** - * HTMLPurifier_ChildDef of this tag. - * @type HTMLPurifier_ChildDef - */ - public $child; - - /** - * Abstract string representation of internal ChildDef rules. - * @see HTMLPurifier_ContentSets for how this is parsed and then transformed - * into an HTMLPurifier_ChildDef. - * @warning This is a temporary variable that is not available after - * being processed by HTMLDefinition - * @type string - */ - public $content_model; - - /** - * Value of $child->type, used to determine which ChildDef to use, - * used in combination with $content_model. - * @warning This must be lowercase - * @warning This is a temporary variable that is not available after - * being processed by HTMLDefinition - * @type string - */ - public $content_model_type; - - /** - * Does the element have a content model (#PCDATA | Inline)*? This - * is important for chameleon ins and del processing in - * HTMLPurifier_ChildDef_Chameleon. Dynamically set: modules don't - * have to worry about this one. - * @type bool - */ - public $descendants_are_inline = false; - - /** - * List of the names of required attributes this element has. - * Dynamically populated by HTMLPurifier_HTMLDefinition::getElement() - * @type array - */ - public $required_attr = array(); - - /** - * Lookup table of tags excluded from all descendants of this tag. - * @type array - * @note SGML permits exclusions for all descendants, but this is - * not possible with DTDs or XML Schemas. W3C has elected to - * use complicated compositions of content_models to simulate - * exclusion for children, but we go the simpler, SGML-style - * route of flat-out exclusions, which correctly apply to - * all descendants and not just children. Note that the XHTML - * Modularization Abstract Modules are blithely unaware of such - * distinctions. - */ - public $excludes = array(); - - /** - * This tag is explicitly auto-closed by the following tags. - * @type array - */ - public $autoclose = array(); - - /** - * If a foreign element is found in this element, test if it is - * allowed by this sub-element; if it is, instead of closing the - * current element, place it inside this element. - * @type string - */ - public $wrap; - - /** - * Whether or not this is a formatting element affected by the - * "Active Formatting Elements" algorithm. - * @type bool - */ - public $formatting; - - /** - * Low-level factory constructor for creating new standalone element defs - */ - public static function create($content_model, $content_model_type, $attr) - { - $def = new HTMLPurifier_ElementDef(); - $def->content_model = $content_model; - $def->content_model_type = $content_model_type; - $def->attr = $attr; - return $def; - } - - /** - * Merges the values of another element definition into this one. - * Values from the new element def take precedence if a value is - * not mergeable. - * @param HTMLPurifier_ElementDef $def - */ - public function mergeIn($def) - { - // later keys takes precedence - foreach ($def->attr as $k => $v) { - if ($k === 0) { - // merge in the includes - // sorry, no way to override an include - foreach ($v as $v2) { - $this->attr[0][] = $v2; - } - continue; - } - if ($v === false) { - if (isset($this->attr[$k])) { - unset($this->attr[$k]); - } - continue; - } - $this->attr[$k] = $v; - } - $this->_mergeAssocArray($this->excludes, $def->excludes); - $this->attr_transform_pre = array_merge($this->attr_transform_pre, $def->attr_transform_pre); - $this->attr_transform_post = array_merge($this->attr_transform_post, $def->attr_transform_post); - - if (!empty($def->content_model)) { - $this->content_model = - str_replace("#SUPER", (string)$this->content_model, $def->content_model); - $this->child = false; - } - if (!empty($def->content_model_type)) { - $this->content_model_type = $def->content_model_type; - $this->child = false; - } - if (!is_null($def->child)) { - $this->child = $def->child; - } - if (!is_null($def->formatting)) { - $this->formatting = $def->formatting; - } - if ($def->descendants_are_inline) { - $this->descendants_are_inline = $def->descendants_are_inline; - } - } - - /** - * Merges one array into another, removes values which equal false - * @param $a1 Array by reference that is merged into - * @param $a2 Array that merges into $a1 - */ - private function _mergeAssocArray(&$a1, $a2) - { - foreach ($a2 as $k => $v) { - if ($v === false) { - if (isset($a1[$k])) { - unset($a1[$k]); - } - continue; - } - $a1[$k] = $v; - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php deleted file mode 100644 index d4791cc1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Encoder.php +++ /dev/null @@ -1,617 +0,0 @@ -= $c) { - $r .= self::unsafeIconv($in, $out, substr($text, $i)); - break; - } - // wibble the boundary - if (0x80 != (0xC0 & ord($text[$i + $max_chunk_size]))) { - $chunk_size = $max_chunk_size; - } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 1]))) { - $chunk_size = $max_chunk_size - 1; - } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 2]))) { - $chunk_size = $max_chunk_size - 2; - } elseif (0x80 != (0xC0 & ord($text[$i + $max_chunk_size - 3]))) { - $chunk_size = $max_chunk_size - 3; - } else { - return false; // rather confusing UTF-8... - } - $chunk = substr($text, $i, $chunk_size); // substr doesn't mind overlong lengths - $r .= self::unsafeIconv($in, $out, $chunk); - $i += $chunk_size; - } - return $r; - } else { - return false; - } - } else { - return false; - } - } - - /** - * Cleans a UTF-8 string for well-formedness and SGML validity - * - * It will parse according to UTF-8 and return a valid UTF8 string, with - * non-SGML codepoints excluded. - * - * Specifically, it will permit: - * \x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF} - * Source: https://www.w3.org/TR/REC-xml/#NT-Char - * Arguably this function should be modernized to the HTML5 set - * of allowed characters: - * https://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream - * which simultaneously expand and restrict the set of allowed characters. - * - * @param string $str The string to clean - * @param bool $force_php - * @return string - * - * @note Just for reference, the non-SGML code points are 0 to 31 and - * 127 to 159, inclusive. However, we allow code points 9, 10 - * and 13, which are the tab, line feed and carriage return - * respectively. 128 and above the code points map to multibyte - * UTF-8 representations. - * - * @note Fallback code adapted from utf8ToUnicode by Henri Sivonen and - * hsivonen@iki.fi at under the - * LGPL license. Notes on what changed are inside, but in general, - * the original code transformed UTF-8 text into an array of integer - * Unicode codepoints. Understandably, transforming that back to - * a string would be somewhat expensive, so the function was modded to - * directly operate on the string. However, this discourages code - * reuse, and the logic enumerated here would be useful for any - * function that needs to be able to understand UTF-8 characters. - * As of right now, only smart lossless character encoding converters - * would need that, and I'm probably not going to implement them. - */ - public static function cleanUTF8($str, $force_php = false) - { - // UTF-8 validity is checked since PHP 4.3.5 - // This is an optimization: if the string is already valid UTF-8, no - // need to do PHP stuff. 99% of the time, this will be the case. - if (preg_match( - '/^[\x{9}\x{A}\x{D}\x{20}-\x{7E}\x{A0}-\x{D7FF}\x{E000}-\x{FFFD}\x{10000}-\x{10FFFF}]*$/Du', - $str - )) { - return $str; - } - - $mState = 0; // cached expected number of octets after the current octet - // until the beginning of the next UTF8 character sequence - $mUcs4 = 0; // cached Unicode character - $mBytes = 1; // cached expected number of octets in the current sequence - - // original code involved an $out that was an array of Unicode - // codepoints. Instead of having to convert back into UTF-8, we've - // decided to directly append valid UTF-8 characters onto a string - // $out once they're done. $char accumulates raw bytes, while $mUcs4 - // turns into the Unicode code point, so there's some redundancy. - - $out = ''; - $char = ''; - - $len = strlen($str); - for ($i = 0; $i < $len; $i++) { - $in = ord($str[$i]); - $char .= $str[$i]; // append byte to char - if (0 == $mState) { - // When mState is zero we expect either a US-ASCII character - // or a multi-octet sequence. - if (0 == (0x80 & ($in))) { - // US-ASCII, pass straight through. - if (($in <= 31 || $in == 127) && - !($in == 9 || $in == 13 || $in == 10) // save \r\t\n - ) { - // control characters, remove - } else { - $out .= $char; - } - // reset - $char = ''; - $mBytes = 1; - } elseif (0xC0 == (0xE0 & ($in))) { - // First octet of 2 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x1F) << 6; - $mState = 1; - $mBytes = 2; - } elseif (0xE0 == (0xF0 & ($in))) { - // First octet of 3 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x0F) << 12; - $mState = 2; - $mBytes = 3; - } elseif (0xF0 == (0xF8 & ($in))) { - // First octet of 4 octet sequence - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x07) << 18; - $mState = 3; - $mBytes = 4; - } elseif (0xF8 == (0xFC & ($in))) { - // First octet of 5 octet sequence. - // - // This is illegal because the encoded codepoint must be - // either: - // (a) not the shortest form or - // (b) outside the Unicode range of 0-0x10FFFF. - // Rather than trying to resynchronize, we will carry on - // until the end of the sequence and let the later error - // handling code catch it. - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 0x03) << 24; - $mState = 4; - $mBytes = 5; - } elseif (0xFC == (0xFE & ($in))) { - // First octet of 6 octet sequence, see comments for 5 - // octet sequence. - $mUcs4 = ($in); - $mUcs4 = ($mUcs4 & 1) << 30; - $mState = 5; - $mBytes = 6; - } else { - // Current octet is neither in the US-ASCII range nor a - // legal first octet of a multi-octet sequence. - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char = ''; - } - } else { - // When mState is non-zero, we expect a continuation of the - // multi-octet sequence - if (0x80 == (0xC0 & ($in))) { - // Legal continuation. - $shift = ($mState - 1) * 6; - $tmp = $in; - $tmp = ($tmp & 0x0000003F) << $shift; - $mUcs4 |= $tmp; - - if (0 == --$mState) { - // End of the multi-octet sequence. mUcs4 now contains - // the final Unicode codepoint to be output - - // Check for illegal sequences and codepoints. - - // From Unicode 3.1, non-shortest form is illegal - if (((2 == $mBytes) && ($mUcs4 < 0x0080)) || - ((3 == $mBytes) && ($mUcs4 < 0x0800)) || - ((4 == $mBytes) && ($mUcs4 < 0x10000)) || - (4 < $mBytes) || - // From Unicode 3.2, surrogate characters = illegal - (($mUcs4 & 0xFFFFF800) == 0xD800) || - // Codepoints outside the Unicode range are illegal - ($mUcs4 > 0x10FFFF) - ) { - - } elseif (0xFEFF != $mUcs4 && // omit BOM - // check for valid Char unicode codepoints - ( - 0x9 == $mUcs4 || - 0xA == $mUcs4 || - 0xD == $mUcs4 || - (0x20 <= $mUcs4 && 0x7E >= $mUcs4) || - // 7F-9F is not strictly prohibited by XML, - // but it is non-SGML, and thus we don't allow it - (0xA0 <= $mUcs4 && 0xD7FF >= $mUcs4) || - (0xE000 <= $mUcs4 && 0xFFFD >= $mUcs4) || - (0x10000 <= $mUcs4 && 0x10FFFF >= $mUcs4) - ) - ) { - $out .= $char; - } - // initialize UTF8 cache (reset) - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char = ''; - } - } else { - // ((0xC0 & (*in) != 0x80) && (mState != 0)) - // Incomplete multi-octet sequence. - // used to result in complete fail, but we'll reset - $mState = 0; - $mUcs4 = 0; - $mBytes = 1; - $char =''; - } - } - } - return $out; - } - - /** - * Translates a Unicode codepoint into its corresponding UTF-8 character. - * @note Based on Feyd's function at - * , - * which is in public domain. - * @note While we're going to do code point parsing anyway, a good - * optimization would be to refuse to translate code points that - * are non-SGML characters. However, this could lead to duplication. - * @note This is very similar to the unichr function in - * maintenance/generate-entity-file.php (although this is superior, - * due to its sanity checks). - */ - - // +----------+----------+----------+----------+ - // | 33222222 | 22221111 | 111111 | | - // | 10987654 | 32109876 | 54321098 | 76543210 | bit - // +----------+----------+----------+----------+ - // | | | | 0xxxxxxx | 1 byte 0x00000000..0x0000007F - // | | | 110yyyyy | 10xxxxxx | 2 byte 0x00000080..0x000007FF - // | | 1110zzzz | 10yyyyyy | 10xxxxxx | 3 byte 0x00000800..0x0000FFFF - // | 11110www | 10wwzzzz | 10yyyyyy | 10xxxxxx | 4 byte 0x00010000..0x0010FFFF - // +----------+----------+----------+----------+ - // | 00000000 | 00011111 | 11111111 | 11111111 | Theoretical upper limit of legal scalars: 2097151 (0x001FFFFF) - // | 00000000 | 00010000 | 11111111 | 11111111 | Defined upper limit of legal scalar codes - // +----------+----------+----------+----------+ - - public static function unichr($code) - { - if ($code > 1114111 or $code < 0 or - ($code >= 55296 and $code <= 57343) ) { - // bits are set outside the "valid" range as defined - // by UNICODE 4.1.0 - return ''; - } - - $x = $y = $z = $w = 0; - if ($code < 128) { - // regular ASCII character - $x = $code; - } else { - // set up bits for UTF-8 - $x = ($code & 63) | 128; - if ($code < 2048) { - $y = (($code & 2047) >> 6) | 192; - } else { - $y = (($code & 4032) >> 6) | 128; - if ($code < 65536) { - $z = (($code >> 12) & 15) | 224; - } else { - $z = (($code >> 12) & 63) | 128; - $w = (($code >> 18) & 7) | 240; - } - } - } - // set up the actual character - $ret = ''; - if ($w) { - $ret .= chr($w); - } - if ($z) { - $ret .= chr($z); - } - if ($y) { - $ret .= chr($y); - } - $ret .= chr($x); - - return $ret; - } - - /** - * @return bool - */ - public static function iconvAvailable() - { - static $iconv = null; - if ($iconv === null) { - $iconv = function_exists('iconv') && self::testIconvTruncateBug() != self::ICONV_UNUSABLE; - } - return $iconv; - } - - /** - * Convert a string to UTF-8 based on configuration. - * @param string $str The string to convert - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string - */ - public static function convertToUTF8($str, $config, $context) - { - $encoding = $config->get('Core.Encoding'); - if ($encoding === 'utf-8') { - return $str; - } - static $iconv = null; - if ($iconv === null) { - $iconv = self::iconvAvailable(); - } - if ($iconv && !$config->get('Test.ForceNoIconv')) { - // unaffected by bugs, since UTF-8 support all characters - $str = self::unsafeIconv($encoding, 'utf-8//IGNORE', $str); - if ($str === false) { - // $encoding is not a valid encoding - trigger_error('Invalid encoding ' . $encoding, E_USER_ERROR); - return ''; - } - // If the string is bjorked by Shift_JIS or a similar encoding - // that doesn't support all of ASCII, convert the naughty - // characters to their true byte-wise ASCII/UTF-8 equivalents. - $str = strtr($str, self::testEncodingSupportsASCII($encoding)); - return $str; - } elseif ($encoding === 'iso-8859-1' && function_exists('mb_convert_encoding')) { - $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1'); - return $str; - } - $bug = HTMLPurifier_Encoder::testIconvTruncateBug(); - if ($bug == self::ICONV_OK) { - trigger_error('Encoding not supported, please install iconv', E_USER_ERROR); - } else { - trigger_error( - 'You have a buggy version of iconv, see https://bugs.php.net/bug.php?id=48147 ' . - 'and http://sourceware.org/bugzilla/show_bug.cgi?id=13541', - E_USER_ERROR - ); - } - } - - /** - * Converts a string from UTF-8 based on configuration. - * @param string $str The string to convert - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string - * @note Currently, this is a lossy conversion, with unexpressable - * characters being omitted. - */ - public static function convertFromUTF8($str, $config, $context) - { - $encoding = $config->get('Core.Encoding'); - if ($escape = $config->get('Core.EscapeNonASCIICharacters')) { - $str = self::convertToASCIIDumbLossless($str); - } - if ($encoding === 'utf-8') { - return $str; - } - static $iconv = null; - if ($iconv === null) { - $iconv = self::iconvAvailable(); - } - if ($iconv && !$config->get('Test.ForceNoIconv')) { - // Undo our previous fix in convertToUTF8, otherwise iconv will barf - $ascii_fix = self::testEncodingSupportsASCII($encoding); - if (!$escape && !empty($ascii_fix)) { - $clear_fix = array(); - foreach ($ascii_fix as $utf8 => $native) { - $clear_fix[$utf8] = ''; - } - $str = strtr($str, $clear_fix); - } - $str = strtr($str, array_flip($ascii_fix)); - // Normal stuff - $str = self::iconv('utf-8', $encoding . '//IGNORE', $str); - return $str; - } elseif ($encoding === 'iso-8859-1' && function_exists('mb_convert_encoding')) { - $str = mb_convert_encoding($str, 'ISO-8859-1', 'UTF-8'); - return $str; - } - trigger_error('Encoding not supported', E_USER_ERROR); - // You might be tempted to assume that the ASCII representation - // might be OK, however, this is *not* universally true over all - // encodings. So we take the conservative route here, rather - // than forcibly turn on %Core.EscapeNonASCIICharacters - } - - /** - * Lossless (character-wise) conversion of HTML to ASCII - * @param string $str UTF-8 string to be converted to ASCII - * @return string ASCII encoded string with non-ASCII character entity-ized - * @warning Adapted from MediaWiki, claiming fair use: this is a common - * algorithm. If you disagree with this license fudgery, - * implement it yourself. - * @note Uses decimal numeric entities since they are best supported. - * @note This is a DUMB function: it has no concept of keeping - * character entities that the projected character encoding - * can allow. We could possibly implement a smart version - * but that would require it to also know which Unicode - * codepoints the charset supported (not an easy task). - * @note Sort of with cleanUTF8() but it assumes that $str is - * well-formed UTF-8 - */ - public static function convertToASCIIDumbLossless($str) - { - $bytesleft = 0; - $result = ''; - $working = 0; - $len = strlen($str); - for ($i = 0; $i < $len; $i++) { - $bytevalue = ord($str[$i]); - if ($bytevalue <= 0x7F) { //0xxx xxxx - $result .= chr($bytevalue); - $bytesleft = 0; - } elseif ($bytevalue <= 0xBF) { //10xx xxxx - $working = $working << 6; - $working += ($bytevalue & 0x3F); - $bytesleft--; - if ($bytesleft <= 0) { - $result .= "&#" . $working . ";"; - } - } elseif ($bytevalue <= 0xDF) { //110x xxxx - $working = $bytevalue & 0x1F; - $bytesleft = 1; - } elseif ($bytevalue <= 0xEF) { //1110 xxxx - $working = $bytevalue & 0x0F; - $bytesleft = 2; - } else { //1111 0xxx - $working = $bytevalue & 0x07; - $bytesleft = 3; - } - } - return $result; - } - - /** No bugs detected in iconv. */ - const ICONV_OK = 0; - - /** Iconv truncates output if converting from UTF-8 to another - * character set with //IGNORE, and a non-encodable character is found */ - const ICONV_TRUNCATES = 1; - - /** Iconv does not support //IGNORE, making it unusable for - * transcoding purposes */ - const ICONV_UNUSABLE = 2; - - /** - * glibc iconv has a known bug where it doesn't handle the magic - * //IGNORE stanza correctly. In particular, rather than ignore - * characters, it will return an EILSEQ after consuming some number - * of characters, and expect you to restart iconv as if it were - * an E2BIG. Old versions of PHP did not respect the errno, and - * returned the fragment, so as a result you would see iconv - * mysteriously truncating output. We can work around this by - * manually chopping our input into segments of about 8000 - * characters, as long as PHP ignores the error code. If PHP starts - * paying attention to the error code, iconv becomes unusable. - * - * @return int Error code indicating severity of bug. - */ - public static function testIconvTruncateBug() - { - static $code = null; - if ($code === null) { - // better not use iconv, otherwise infinite loop! - $r = self::unsafeIconv('utf-8', 'ascii//IGNORE', "\xCE\xB1" . str_repeat('a', 9000)); - if ($r === false) { - $code = self::ICONV_UNUSABLE; - } elseif (($c = strlen($r)) < 9000) { - $code = self::ICONV_TRUNCATES; - } elseif ($c > 9000) { - trigger_error( - 'Your copy of iconv is extremely buggy. Please notify HTML Purifier maintainers: ' . - 'include your iconv version as per phpversion()', - E_USER_ERROR - ); - } else { - $code = self::ICONV_OK; - } - } - return $code; - } - - /** - * This expensive function tests whether or not a given character - * encoding supports ASCII. 7/8-bit encodings like Shift_JIS will - * fail this test, and require special processing. Variable width - * encodings shouldn't ever fail. - * - * @param string $encoding Encoding name to test, as per iconv format - * @param bool $bypass Whether or not to bypass the precompiled arrays. - * @return Array of UTF-8 characters to their corresponding ASCII, - * which can be used to "undo" any overzealous iconv action. - */ - public static function testEncodingSupportsASCII($encoding, $bypass = false) - { - // All calls to iconv here are unsafe, proof by case analysis: - // If ICONV_OK, no difference. - // If ICONV_TRUNCATE, all calls involve one character inputs, - // so bug is not triggered. - // If ICONV_UNUSABLE, this call is irrelevant - static $encodings = array(); - if (!$bypass) { - if (isset($encodings[$encoding])) { - return $encodings[$encoding]; - } - $lenc = strtolower($encoding); - switch ($lenc) { - case 'shift_jis': - return array("\xC2\xA5" => '\\', "\xE2\x80\xBE" => '~'); - case 'johab': - return array("\xE2\x82\xA9" => '\\'); - } - if (strpos($lenc, 'iso-8859-') === 0) { - return array(); - } - } - $ret = array(); - if (self::unsafeIconv('UTF-8', $encoding, 'a') === false) { - return false; - } - for ($i = 0x20; $i <= 0x7E; $i++) { // all printable ASCII chars - $c = chr($i); // UTF-8 char - $r = self::unsafeIconv('UTF-8', "$encoding//IGNORE", $c); // initial conversion - if ($r === '' || - // This line is needed for iconv implementations that do not - // omit characters that do not exist in the target character set - ($r === $c && self::unsafeIconv($encoding, 'UTF-8//IGNORE', $r) !== $c) - ) { - // Reverse engineer: what's the UTF-8 equiv of this byte - // sequence? This assumes that there's no variable width - // encoding that doesn't support ASCII. - $ret[self::unsafeIconv($encoding, 'UTF-8//IGNORE', $c)] = $c; - } - } - $encodings[$encoding] = $ret; - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php deleted file mode 100644 index f12ff13a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup.php +++ /dev/null @@ -1,48 +0,0 @@ -table = unserialize(file_get_contents($file)); - } - - /** - * Retrieves sole instance of the object. - * @param bool|HTMLPurifier_EntityLookup $prototype Optional prototype of custom lookup table to overload with. - * @return HTMLPurifier_EntityLookup - */ - public static function instance($prototype = false) - { - // no references, since PHP doesn't copy unless modified - static $instance = null; - if ($prototype) { - $instance = $prototype; - } elseif (!$instance) { - $instance = new HTMLPurifier_EntityLookup(); - $instance->setup(); - } - return $instance; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser deleted file mode 100644 index e8b08128..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityLookup/entities.ser +++ /dev/null @@ -1 +0,0 @@ -a:253:{s:4:"fnof";s:2:"ƒ";s:5:"Alpha";s:2:"Α";s:4:"Beta";s:2:"Β";s:5:"Gamma";s:2:"Γ";s:5:"Delta";s:2:"Δ";s:7:"Epsilon";s:2:"Ε";s:4:"Zeta";s:2:"Ζ";s:3:"Eta";s:2:"Η";s:5:"Theta";s:2:"Θ";s:4:"Iota";s:2:"Ι";s:5:"Kappa";s:2:"Κ";s:6:"Lambda";s:2:"Λ";s:2:"Mu";s:2:"Μ";s:2:"Nu";s:2:"Ν";s:2:"Xi";s:2:"Ξ";s:7:"Omicron";s:2:"Ο";s:2:"Pi";s:2:"Π";s:3:"Rho";s:2:"Ρ";s:5:"Sigma";s:2:"Σ";s:3:"Tau";s:2:"Τ";s:7:"Upsilon";s:2:"Υ";s:3:"Phi";s:2:"Φ";s:3:"Chi";s:2:"Χ";s:3:"Psi";s:2:"Ψ";s:5:"Omega";s:2:"Ω";s:5:"alpha";s:2:"α";s:4:"beta";s:2:"β";s:5:"gamma";s:2:"γ";s:5:"delta";s:2:"δ";s:7:"epsilon";s:2:"ε";s:4:"zeta";s:2:"ζ";s:3:"eta";s:2:"η";s:5:"theta";s:2:"θ";s:4:"iota";s:2:"ι";s:5:"kappa";s:2:"κ";s:6:"lambda";s:2:"λ";s:2:"mu";s:2:"μ";s:2:"nu";s:2:"ν";s:2:"xi";s:2:"ξ";s:7:"omicron";s:2:"ο";s:2:"pi";s:2:"π";s:3:"rho";s:2:"ρ";s:6:"sigmaf";s:2:"ς";s:5:"sigma";s:2:"σ";s:3:"tau";s:2:"τ";s:7:"upsilon";s:2:"υ";s:3:"phi";s:2:"φ";s:3:"chi";s:2:"χ";s:3:"psi";s:2:"ψ";s:5:"omega";s:2:"ω";s:8:"thetasym";s:2:"ϑ";s:5:"upsih";s:2:"ϒ";s:3:"piv";s:2:"ϖ";s:4:"bull";s:3:"•";s:6:"hellip";s:3:"…";s:5:"prime";s:3:"′";s:5:"Prime";s:3:"″";s:5:"oline";s:3:"‾";s:5:"frasl";s:3:"⁄";s:6:"weierp";s:3:"℘";s:5:"image";s:3:"ℑ";s:4:"real";s:3:"ℜ";s:5:"trade";s:3:"™";s:7:"alefsym";s:3:"ℵ";s:4:"larr";s:3:"←";s:4:"uarr";s:3:"↑";s:4:"rarr";s:3:"→";s:4:"darr";s:3:"↓";s:4:"harr";s:3:"↔";s:5:"crarr";s:3:"↵";s:4:"lArr";s:3:"⇐";s:4:"uArr";s:3:"⇑";s:4:"rArr";s:3:"⇒";s:4:"dArr";s:3:"⇓";s:4:"hArr";s:3:"⇔";s:6:"forall";s:3:"∀";s:4:"part";s:3:"∂";s:5:"exist";s:3:"∃";s:5:"empty";s:3:"∅";s:5:"nabla";s:3:"∇";s:4:"isin";s:3:"∈";s:5:"notin";s:3:"∉";s:2:"ni";s:3:"∋";s:4:"prod";s:3:"∏";s:3:"sum";s:3:"∑";s:5:"minus";s:3:"−";s:6:"lowast";s:3:"∗";s:5:"radic";s:3:"√";s:4:"prop";s:3:"∝";s:5:"infin";s:3:"∞";s:3:"ang";s:3:"∠";s:3:"and";s:3:"∧";s:2:"or";s:3:"∨";s:3:"cap";s:3:"∩";s:3:"cup";s:3:"∪";s:3:"int";s:3:"∫";s:6:"there4";s:3:"∴";s:3:"sim";s:3:"∼";s:4:"cong";s:3:"≅";s:5:"asymp";s:3:"≈";s:2:"ne";s:3:"≠";s:5:"equiv";s:3:"≡";s:2:"le";s:3:"≤";s:2:"ge";s:3:"≥";s:3:"sub";s:3:"⊂";s:3:"sup";s:3:"⊃";s:4:"nsub";s:3:"⊄";s:4:"sube";s:3:"⊆";s:4:"supe";s:3:"⊇";s:5:"oplus";s:3:"⊕";s:6:"otimes";s:3:"⊗";s:4:"perp";s:3:"⊥";s:4:"sdot";s:3:"⋅";s:5:"lceil";s:3:"⌈";s:5:"rceil";s:3:"⌉";s:6:"lfloor";s:3:"⌊";s:6:"rfloor";s:3:"⌋";s:4:"lang";s:3:"〈";s:4:"rang";s:3:"〉";s:3:"loz";s:3:"◊";s:6:"spades";s:3:"♠";s:5:"clubs";s:3:"♣";s:6:"hearts";s:3:"♥";s:5:"diams";s:3:"♦";s:4:"quot";s:1:""";s:3:"amp";s:1:"&";s:2:"lt";s:1:"<";s:2:"gt";s:1:">";s:4:"apos";s:1:"'";s:5:"OElig";s:2:"Œ";s:5:"oelig";s:2:"œ";s:6:"Scaron";s:2:"Š";s:6:"scaron";s:2:"š";s:4:"Yuml";s:2:"Ÿ";s:4:"circ";s:2:"ˆ";s:5:"tilde";s:2:"˜";s:4:"ensp";s:3:" ";s:4:"emsp";s:3:" ";s:6:"thinsp";s:3:" ";s:4:"zwnj";s:3:"‌";s:3:"zwj";s:3:"‍";s:3:"lrm";s:3:"‎";s:3:"rlm";s:3:"‏";s:5:"ndash";s:3:"–";s:5:"mdash";s:3:"—";s:5:"lsquo";s:3:"‘";s:5:"rsquo";s:3:"’";s:5:"sbquo";s:3:"‚";s:5:"ldquo";s:3:"“";s:5:"rdquo";s:3:"”";s:5:"bdquo";s:3:"„";s:6:"dagger";s:3:"†";s:6:"Dagger";s:3:"‡";s:6:"permil";s:3:"‰";s:6:"lsaquo";s:3:"‹";s:6:"rsaquo";s:3:"›";s:4:"euro";s:3:"€";s:4:"nbsp";s:2:" ";s:5:"iexcl";s:2:"¡";s:4:"cent";s:2:"¢";s:5:"pound";s:2:"£";s:6:"curren";s:2:"¤";s:3:"yen";s:2:"¥";s:6:"brvbar";s:2:"¦";s:4:"sect";s:2:"§";s:3:"uml";s:2:"¨";s:4:"copy";s:2:"©";s:4:"ordf";s:2:"ª";s:5:"laquo";s:2:"«";s:3:"not";s:2:"¬";s:3:"shy";s:2:"­";s:3:"reg";s:2:"®";s:4:"macr";s:2:"¯";s:3:"deg";s:2:"°";s:6:"plusmn";s:2:"±";s:4:"sup2";s:2:"²";s:4:"sup3";s:2:"³";s:5:"acute";s:2:"´";s:5:"micro";s:2:"µ";s:4:"para";s:2:"¶";s:6:"middot";s:2:"·";s:5:"cedil";s:2:"¸";s:4:"sup1";s:2:"¹";s:4:"ordm";s:2:"º";s:5:"raquo";s:2:"»";s:6:"frac14";s:2:"¼";s:6:"frac12";s:2:"½";s:6:"frac34";s:2:"¾";s:6:"iquest";s:2:"¿";s:6:"Agrave";s:2:"À";s:6:"Aacute";s:2:"Á";s:5:"Acirc";s:2:"Â";s:6:"Atilde";s:2:"Ã";s:4:"Auml";s:2:"Ä";s:5:"Aring";s:2:"Å";s:5:"AElig";s:2:"Æ";s:6:"Ccedil";s:2:"Ç";s:6:"Egrave";s:2:"È";s:6:"Eacute";s:2:"É";s:5:"Ecirc";s:2:"Ê";s:4:"Euml";s:2:"Ë";s:6:"Igrave";s:2:"Ì";s:6:"Iacute";s:2:"Í";s:5:"Icirc";s:2:"Î";s:4:"Iuml";s:2:"Ï";s:3:"ETH";s:2:"Ð";s:6:"Ntilde";s:2:"Ñ";s:6:"Ograve";s:2:"Ò";s:6:"Oacute";s:2:"Ó";s:5:"Ocirc";s:2:"Ô";s:6:"Otilde";s:2:"Õ";s:4:"Ouml";s:2:"Ö";s:5:"times";s:2:"×";s:6:"Oslash";s:2:"Ø";s:6:"Ugrave";s:2:"Ù";s:6:"Uacute";s:2:"Ú";s:5:"Ucirc";s:2:"Û";s:4:"Uuml";s:2:"Ü";s:6:"Yacute";s:2:"Ý";s:5:"THORN";s:2:"Þ";s:5:"szlig";s:2:"ß";s:6:"agrave";s:2:"à";s:6:"aacute";s:2:"á";s:5:"acirc";s:2:"â";s:6:"atilde";s:2:"ã";s:4:"auml";s:2:"ä";s:5:"aring";s:2:"å";s:5:"aelig";s:2:"æ";s:6:"ccedil";s:2:"ç";s:6:"egrave";s:2:"è";s:6:"eacute";s:2:"é";s:5:"ecirc";s:2:"ê";s:4:"euml";s:2:"ë";s:6:"igrave";s:2:"ì";s:6:"iacute";s:2:"í";s:5:"icirc";s:2:"î";s:4:"iuml";s:2:"ï";s:3:"eth";s:2:"ð";s:6:"ntilde";s:2:"ñ";s:6:"ograve";s:2:"ò";s:6:"oacute";s:2:"ó";s:5:"ocirc";s:2:"ô";s:6:"otilde";s:2:"õ";s:4:"ouml";s:2:"ö";s:6:"divide";s:2:"÷";s:6:"oslash";s:2:"ø";s:6:"ugrave";s:2:"ù";s:6:"uacute";s:2:"ú";s:5:"ucirc";s:2:"û";s:4:"uuml";s:2:"ü";s:6:"yacute";s:2:"ý";s:5:"thorn";s:2:"þ";s:4:"yuml";s:2:"ÿ";} \ No newline at end of file diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php deleted file mode 100644 index 3ef2d09e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/EntityParser.php +++ /dev/null @@ -1,285 +0,0 @@ -_semiOptionalPrefixRegex = "/&()()()($semi_optional)/"; - - $this->_textEntitiesRegex = - '/&(?:'. - // hex - '[#]x([a-fA-F0-9]+);?|'. - // dec - '[#]0*(\d+);?|'. - // string (mandatory semicolon) - // NB: order matters: match semicolon preferentially - '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'. - // string (optional semicolon) - "($semi_optional)". - ')/'; - - $this->_attrEntitiesRegex = - '/&(?:'. - // hex - '[#]x([a-fA-F0-9]+);?|'. - // dec - '[#]0*(\d+);?|'. - // string (mandatory semicolon) - // NB: order matters: match semicolon preferentially - '([A-Za-z_:][A-Za-z0-9.\-_:]*);|'. - // string (optional semicolon) - // don't match if trailing is equals or alphanumeric (URL - // like) - "($semi_optional)(?![=;A-Za-z0-9])". - ')/'; - - } - - /** - * Substitute entities with the parsed equivalents. Use this on - * textual data in an HTML document (as opposed to attributes.) - * - * @param string $string String to have entities parsed. - * @return string Parsed string. - */ - public function substituteTextEntities($string) - { - return preg_replace_callback( - $this->_textEntitiesRegex, - array($this, 'entityCallback'), - $string - ); - } - - /** - * Substitute entities with the parsed equivalents. Use this on - * attribute contents in documents. - * - * @param string $string String to have entities parsed. - * @return string Parsed string. - */ - public function substituteAttrEntities($string) - { - return preg_replace_callback( - $this->_attrEntitiesRegex, - array($this, 'entityCallback'), - $string - ); - } - - /** - * Callback function for substituteNonSpecialEntities() that does the work. - * - * @param array $matches PCRE matches array, with 0 the entire match, and - * either index 1, 2 or 3 set with a hex value, dec value, - * or string (respectively). - * @return string Replacement string. - */ - - protected function entityCallback($matches) - { - $entity = $matches[0]; - $hex_part = @$matches[1]; - $dec_part = @$matches[2]; - $named_part = empty($matches[3]) ? (empty($matches[4]) ? "" : $matches[4]) : $matches[3]; - if ($hex_part !== NULL && $hex_part !== "") { - return HTMLPurifier_Encoder::unichr(hexdec($hex_part)); - } elseif ($dec_part !== NULL && $dec_part !== "") { - return HTMLPurifier_Encoder::unichr((int) $dec_part); - } else { - if (!$this->_entity_lookup) { - $this->_entity_lookup = HTMLPurifier_EntityLookup::instance(); - } - if (isset($this->_entity_lookup->table[$named_part])) { - return $this->_entity_lookup->table[$named_part]; - } else { - // exact match didn't match anything, so test if - // any of the semicolon optional match the prefix. - // Test that this is an EXACT match is important to - // prevent infinite loop - if (!empty($matches[3])) { - return preg_replace_callback( - $this->_semiOptionalPrefixRegex, - array($this, 'entityCallback'), - $entity - ); - } - return $entity; - } - } - } - - // LEGACY CODE BELOW - - /** - * Callback regex string for parsing entities. - * @type string - */ - protected $_substituteEntitiesRegex = - '/&(?:[#]x([a-fA-F0-9]+)|[#]0*(\d+)|([A-Za-z_:][A-Za-z0-9.\-_:]*));?/'; - // 1. hex 2. dec 3. string (XML style) - - /** - * Decimal to parsed string conversion table for special entities. - * @type array - */ - protected $_special_dec2str = - array( - 34 => '"', - 38 => '&', - 39 => "'", - 60 => '<', - 62 => '>' - ); - - /** - * Stripped entity names to decimal conversion table for special entities. - * @type array - */ - protected $_special_ent2dec = - array( - 'quot' => 34, - 'amp' => 38, - 'lt' => 60, - 'gt' => 62 - ); - - /** - * Substitutes non-special entities with their parsed equivalents. Since - * running this whenever you have parsed character is t3h 5uck, we run - * it before everything else. - * - * @param string $string String to have non-special entities parsed. - * @return string Parsed string. - */ - public function substituteNonSpecialEntities($string) - { - // it will try to detect missing semicolons, but don't rely on it - return preg_replace_callback( - $this->_substituteEntitiesRegex, - array($this, 'nonSpecialEntityCallback'), - $string - ); - } - - /** - * Callback function for substituteNonSpecialEntities() that does the work. - * - * @param array $matches PCRE matches array, with 0 the entire match, and - * either index 1, 2 or 3 set with a hex value, dec value, - * or string (respectively). - * @return string Replacement string. - */ - - protected function nonSpecialEntityCallback($matches) - { - // replaces all but big five - $entity = $matches[0]; - $is_num = (@$matches[0][1] === '#'); - if ($is_num) { - $is_hex = (@$entity[2] === 'x'); - $code = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; - // abort for special characters - if (isset($this->_special_dec2str[$code])) { - return $entity; - } - return HTMLPurifier_Encoder::unichr($code); - } else { - if (isset($this->_special_ent2dec[$matches[3]])) { - return $entity; - } - if (!$this->_entity_lookup) { - $this->_entity_lookup = HTMLPurifier_EntityLookup::instance(); - } - if (isset($this->_entity_lookup->table[$matches[3]])) { - return $this->_entity_lookup->table[$matches[3]]; - } else { - return $entity; - } - } - } - - /** - * Substitutes only special entities with their parsed equivalents. - * - * @notice We try to avoid calling this function because otherwise, it - * would have to be called a lot (for every parsed section). - * - * @param string $string String to have non-special entities parsed. - * @return string Parsed string. - */ - public function substituteSpecialEntities($string) - { - return preg_replace_callback( - $this->_substituteEntitiesRegex, - array($this, 'specialEntityCallback'), - $string - ); - } - - /** - * Callback function for substituteSpecialEntities() that does the work. - * - * This callback has same syntax as nonSpecialEntityCallback(). - * - * @param array $matches PCRE-style matches array, with 0 the entire match, and - * either index 1, 2 or 3 set with a hex value, dec value, - * or string (respectively). - * @return string Replacement string. - */ - protected function specialEntityCallback($matches) - { - $entity = $matches[0]; - $is_num = (@$matches[0][1] === '#'); - if ($is_num) { - $is_hex = (@$entity[2] === 'x'); - $int = $is_hex ? hexdec($matches[1]) : (int) $matches[2]; - return isset($this->_special_dec2str[$int]) ? - $this->_special_dec2str[$int] : - $entity; - } else { - return isset($this->_special_ent2dec[$matches[3]]) ? - $this->_special_dec2str[$this->_special_ent2dec[$matches[3]]] : - $entity; - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php deleted file mode 100644 index d47e3f2e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorCollector.php +++ /dev/null @@ -1,244 +0,0 @@ -locale =& $context->get('Locale'); - $this->context = $context; - $this->_current =& $this->_stacks[0]; - $this->errors =& $this->_stacks[0]; - } - - /** - * Sends an error message to the collector for later use - * @param int $severity Error severity, PHP error style (don't use E_USER_) - * @param string $msg Error message text - */ - public function send($severity, $msg) - { - $args = array(); - if (func_num_args() > 2) { - $args = func_get_args(); - array_shift($args); - unset($args[0]); - } - - $token = $this->context->get('CurrentToken', true); - $line = $token ? $token->line : $this->context->get('CurrentLine', true); - $col = $token ? $token->col : $this->context->get('CurrentCol', true); - $attr = $this->context->get('CurrentAttr', true); - - // perform special substitutions, also add custom parameters - $subst = array(); - if (!is_null($token)) { - $args['CurrentToken'] = $token; - } - if (!is_null($attr)) { - $subst['$CurrentAttr.Name'] = $attr; - if (isset($token->attr[$attr])) { - $subst['$CurrentAttr.Value'] = $token->attr[$attr]; - } - } - - if (empty($args)) { - $msg = $this->locale->getMessage($msg); - } else { - $msg = $this->locale->formatMessage($msg, $args); - } - - if (!empty($subst)) { - $msg = strtr($msg, $subst); - } - - // (numerically indexed) - $error = array( - self::LINENO => $line, - self::SEVERITY => $severity, - self::MESSAGE => $msg, - self::CHILDREN => array() - ); - $this->_current[] = $error; - - // NEW CODE BELOW ... - // Top-level errors are either: - // TOKEN type, if $value is set appropriately, or - // "syntax" type, if $value is null - $new_struct = new HTMLPurifier_ErrorStruct(); - $new_struct->type = HTMLPurifier_ErrorStruct::TOKEN; - if ($token) { - $new_struct->value = clone $token; - } - if (is_int($line) && is_int($col)) { - if (isset($this->lines[$line][$col])) { - $struct = $this->lines[$line][$col]; - } else { - $struct = $this->lines[$line][$col] = $new_struct; - } - // These ksorts may present a performance problem - ksort($this->lines[$line], SORT_NUMERIC); - } else { - if (isset($this->lines[-1])) { - $struct = $this->lines[-1]; - } else { - $struct = $this->lines[-1] = $new_struct; - } - } - ksort($this->lines, SORT_NUMERIC); - - // Now, check if we need to operate on a lower structure - if (!empty($attr)) { - $struct = $struct->getChild(HTMLPurifier_ErrorStruct::ATTR, $attr); - if (!$struct->value) { - $struct->value = array($attr, 'PUT VALUE HERE'); - } - } - if (!empty($cssprop)) { - $struct = $struct->getChild(HTMLPurifier_ErrorStruct::CSSPROP, $cssprop); - if (!$struct->value) { - // if we tokenize CSS this might be a little more difficult to do - $struct->value = array($cssprop, 'PUT VALUE HERE'); - } - } - - // Ok, structs are all setup, now time to register the error - $struct->addError($severity, $msg); - } - - /** - * Retrieves raw error data for custom formatter to use - */ - public function getRaw() - { - return $this->errors; - } - - /** - * Default HTML formatting implementation for error messages - * @param HTMLPurifier_Config $config Configuration, vital for HTML output nature - * @param array $errors Errors array to display; used for recursion. - * @return string - */ - public function getHTMLFormatted($config, $errors = null) - { - $ret = array(); - - $this->generator = new HTMLPurifier_Generator($config, $this->context); - if ($errors === null) { - $errors = $this->errors; - } - - // 'At line' message needs to be removed - - // generation code for new structure goes here. It needs to be recursive. - foreach ($this->lines as $line => $col_array) { - if ($line == -1) { - continue; - } - foreach ($col_array as $col => $struct) { - $this->_renderStruct($ret, $struct, $line, $col); - } - } - if (isset($this->lines[-1])) { - $this->_renderStruct($ret, $this->lines[-1]); - } - - if (empty($errors)) { - return '

' . $this->locale->getMessage('ErrorCollector: No errors') . '

'; - } else { - return '
  • ' . implode('
  • ', $ret) . '
'; - } - - } - - private function _renderStruct(&$ret, $struct, $line = null, $col = null) - { - $stack = array($struct); - $context_stack = array(array()); - while ($current = array_pop($stack)) { - $context = array_pop($context_stack); - foreach ($current->errors as $error) { - list($severity, $msg) = $error; - $string = ''; - $string .= '
'; - // W3C uses an icon to indicate the severity of the error. - $error = $this->locale->getErrorName($severity); - $string .= "$error "; - if (!is_null($line) && !is_null($col)) { - $string .= "Line $line, Column $col: "; - } else { - $string .= 'End of Document: '; - } - $string .= '' . $this->generator->escape($msg) . ' '; - $string .= '
'; - // Here, have a marker for the character on the column appropriate. - // Be sure to clip extremely long lines. - //$string .= '
';
-                //$string .= '';
-                //$string .= '
'; - $ret[] = $string; - } - foreach ($current->children as $array) { - $context[] = $current; - $stack = array_merge($stack, array_reverse($array, true)); - for ($i = count($array); $i > 0; $i--) { - $context_stack[] = $context; - } - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php deleted file mode 100644 index cf869d32..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/ErrorStruct.php +++ /dev/null @@ -1,74 +0,0 @@ -children[$type][$id])) { - $this->children[$type][$id] = new HTMLPurifier_ErrorStruct(); - $this->children[$type][$id]->type = $type; - } - return $this->children[$type][$id]; - } - - /** - * @param int $severity - * @param string $message - */ - public function addError($severity, $message) - { - $this->errors[] = array($severity, $message); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php deleted file mode 100644 index be85b4c5..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Exception.php +++ /dev/null @@ -1,12 +0,0 @@ -preFilter, - * 2->preFilter, 3->preFilter, purify, 3->postFilter, 2->postFilter, - * 1->postFilter. - * - * @note Methods are not declared abstract as it is perfectly legitimate - * for an implementation not to want anything to happen on a step - */ - -class HTMLPurifier_Filter -{ - - /** - * Name of the filter for identification purposes. - * @type string - */ - public $name; - - /** - * Pre-processor function, handles HTML before HTML Purifier - * @param string $html - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string - */ - public function preFilter($html, $config, $context) - { - return $html; - } - - /** - * Post-processor function, handles HTML after HTML Purifier - * @param string $html - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string - */ - public function postFilter($html, $config, $context) - { - return $html; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php deleted file mode 100644 index 66f70b0f..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/ExtractStyleBlocks.php +++ /dev/null @@ -1,341 +0,0 @@ - blocks from input HTML, cleans them up - * using CSSTidy, and then places them in $purifier->context->get('StyleBlocks') - * so they can be used elsewhere in the document. - * - * @note - * See tests/HTMLPurifier/Filter/ExtractStyleBlocksTest.php for - * sample usage. - * - * @note - * This filter can also be used on stylesheets not included in the - * document--something purists would probably prefer. Just directly - * call HTMLPurifier_Filter_ExtractStyleBlocks->cleanCSS() - */ -class HTMLPurifier_Filter_ExtractStyleBlocks extends HTMLPurifier_Filter -{ - /** - * @type string - */ - public $name = 'ExtractStyleBlocks'; - - /** - * @type array - */ - private $_styleMatches = array(); - - /** - * @type csstidy - */ - private $_tidy; - - /** - * @type HTMLPurifier_AttrDef_HTML_ID - */ - private $_id_attrdef; - - /** - * @type HTMLPurifier_AttrDef_CSS_Ident - */ - private $_class_attrdef; - - /** - * @type HTMLPurifier_AttrDef_Enum - */ - private $_enum_attrdef; - - public function __construct() - { - $this->_tidy = new csstidy(); - $this->_tidy->set_cfg('lowercase_s', false); - $this->_id_attrdef = new HTMLPurifier_AttrDef_HTML_ID(true); - $this->_class_attrdef = new HTMLPurifier_AttrDef_CSS_Ident(); - $this->_enum_attrdef = new HTMLPurifier_AttrDef_Enum( - array( - 'first-child', - 'link', - 'visited', - 'active', - 'hover', - 'focus' - ) - ); - } - - /** - * Save the contents of CSS blocks to style matches - * @param array $matches preg_replace style $matches array - */ - protected function styleCallback($matches) - { - $this->_styleMatches[] = $matches[1]; - } - - /** - * Removes inline - // we must not grab foo in a font-family prop). - if ($config->get('Filter.ExtractStyleBlocks.Escaping')) { - $css = str_replace( - array('<', '>', '&'), - array('\3C ', '\3E ', '\26 '), - $css - ); - } - return $css; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php deleted file mode 100644 index 276d8362..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Filter/YouTube.php +++ /dev/null @@ -1,65 +0,0 @@ -]+>.+?' . - '(?:http:)?//www.youtube.com/((?:v|cp)/[A-Za-z0-9\-_=]+).+?#s'; - $pre_replace = '\1'; - return preg_replace($pre_regex, $pre_replace, $html); - } - - /** - * @param string $html - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return string - */ - public function postFilter($html, $config, $context) - { - $post_regex = '#((?:v|cp)/[A-Za-z0-9\-_=]+)#'; - return preg_replace_callback($post_regex, array($this, 'postFilterCallback'), $html); - } - - /** - * @param $url - * @return string - */ - protected function armorUrl($url) - { - return str_replace('--', '--', $url); - } - - /** - * @param array $matches - * @return string - */ - protected function postFilterCallback($matches) - { - $url = $this->armorUrl($matches[1]); - return '' . - '' . - '' . - ''; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php deleted file mode 100644 index eb56e2df..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Generator.php +++ /dev/null @@ -1,286 +0,0 @@ - tags. - * @type bool - */ - private $_scriptFix = false; - - /** - * Cache of HTMLDefinition during HTML output to determine whether or - * not attributes should be minimized. - * @type HTMLPurifier_HTMLDefinition - */ - private $_def; - - /** - * Cache of %Output.SortAttr. - * @type bool - */ - private $_sortAttr; - - /** - * Cache of %Output.FlashCompat. - * @type bool - */ - private $_flashCompat; - - /** - * Cache of %Output.FixInnerHTML. - * @type bool - */ - private $_innerHTMLFix; - - /** - * Stack for keeping track of object information when outputting IE - * compatibility code. - * @type array - */ - private $_flashStack = array(); - - /** - * Configuration for the generator - * @type HTMLPurifier_Config - */ - protected $config; - - /** - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - */ - public function __construct($config, $context) - { - $this->config = $config; - $this->_scriptFix = $config->get('Output.CommentScriptContents'); - $this->_innerHTMLFix = $config->get('Output.FixInnerHTML'); - $this->_sortAttr = $config->get('Output.SortAttr'); - $this->_flashCompat = $config->get('Output.FlashCompat'); - $this->_def = $config->getHTMLDefinition(); - $this->_xhtml = $this->_def->doctype->xml; - } - - /** - * Generates HTML from an array of tokens. - * @param HTMLPurifier_Token[] $tokens Array of HTMLPurifier_Token - * @return string Generated HTML - */ - public function generateFromTokens($tokens) - { - if (!$tokens) { - return ''; - } - - // Basic algorithm - $html = ''; - for ($i = 0, $size = count($tokens); $i < $size; $i++) { - if ($this->_scriptFix && $tokens[$i]->name === 'script' - && $i + 2 < $size && $tokens[$i+2] instanceof HTMLPurifier_Token_End) { - // script special case - // the contents of the script block must be ONE token - // for this to work. - $html .= $this->generateFromToken($tokens[$i++]); - $html .= $this->generateScriptFromToken($tokens[$i++]); - } - $html .= $this->generateFromToken($tokens[$i]); - } - - // Tidy cleanup - if (extension_loaded('tidy') && $this->config->get('Output.TidyFormat')) { - $tidy = new Tidy; - $tidy->parseString( - $html, - array( - 'indent'=> true, - 'output-xhtml' => $this->_xhtml, - 'show-body-only' => true, - 'indent-spaces' => 2, - 'wrap' => 68, - ), - 'utf8' - ); - $tidy->cleanRepair(); - $html = (string) $tidy; // explicit cast necessary - } - - // Normalize newlines to system defined value - if ($this->config->get('Core.NormalizeNewlines')) { - $nl = $this->config->get('Output.Newline'); - if ($nl === null) { - $nl = PHP_EOL; - } - if ($nl !== "\n") { - $html = str_replace("\n", $nl, $html); - } - } - return $html; - } - - /** - * Generates HTML from a single token. - * @param HTMLPurifier_Token $token HTMLPurifier_Token object. - * @return string Generated HTML - */ - public function generateFromToken($token) - { - if (!$token instanceof HTMLPurifier_Token) { - trigger_error('Cannot generate HTML from non-HTMLPurifier_Token object', E_USER_WARNING); - return ''; - - } elseif ($token instanceof HTMLPurifier_Token_Start) { - $attr = $this->generateAttributes($token->attr, $token->name); - if ($this->_flashCompat) { - if ($token->name == "object") { - $flash = new stdClass(); - $flash->attr = $token->attr; - $flash->param = array(); - $this->_flashStack[] = $flash; - } - } - return '<' . $token->name . ($attr ? ' ' : '') . $attr . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_End) { - $_extra = ''; - if ($this->_flashCompat) { - if ($token->name == "object" && !empty($this->_flashStack)) { - // doesn't do anything for now - } - } - return $_extra . 'name . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_Empty) { - if ($this->_flashCompat && $token->name == "param" && !empty($this->_flashStack)) { - $this->_flashStack[count($this->_flashStack)-1]->param[$token->attr['name']] = $token->attr['value']; - } - $attr = $this->generateAttributes($token->attr, $token->name); - return '<' . $token->name . ($attr ? ' ' : '') . $attr . - ( $this->_xhtml ? ' /': '' ) //
v.
- . '>'; - - } elseif ($token instanceof HTMLPurifier_Token_Text) { - return $this->escape($token->data, ENT_NOQUOTES); - - } elseif ($token instanceof HTMLPurifier_Token_Comment) { - return ''; - } else { - return ''; - - } - } - - /** - * Special case processor for the contents of script tags - * @param HTMLPurifier_Token $token HTMLPurifier_Token object. - * @return string - * @warning This runs into problems if there's already a literal - * --> somewhere inside the script contents. - */ - public function generateScriptFromToken($token) - { - if (!$token instanceof HTMLPurifier_Token_Text) { - return $this->generateFromToken($token); - } - // Thanks - $data = preg_replace('#//\s*$#', '', $token->data); - return ''; - } - - /** - * Generates attribute declarations from attribute array. - * @note This does not include the leading or trailing space. - * @param array $assoc_array_of_attributes Attribute array - * @param string $element Name of element attributes are for, used to check - * attribute minimization. - * @return string Generated HTML fragment for insertion. - */ - public function generateAttributes($assoc_array_of_attributes, $element = '') - { - $html = ''; - if ($this->_sortAttr) { - ksort($assoc_array_of_attributes); - } - foreach ($assoc_array_of_attributes as $key => $value) { - if (!$this->_xhtml) { - // Remove namespaced attributes - if (strpos($key, ':') !== false) { - continue; - } - // Check if we should minimize the attribute: val="val" -> val - if ($element && !empty($this->_def->info[$element]->attr[$key]->minimized)) { - $html .= $key . ' '; - continue; - } - } - // Workaround for Internet Explorer innerHTML bug. - // Essentially, Internet Explorer, when calculating - // innerHTML, omits quotes if there are no instances of - // angled brackets, quotes or spaces. However, when parsing - // HTML (for example, when you assign to innerHTML), it - // treats backticks as quotes. Thus, - // `` - // becomes - // `` - // becomes - // - // Fortunately, all we need to do is trigger an appropriate - // quoting style, which we do by adding an extra space. - // This also is consistent with the W3C spec, which states - // that user agents may ignore leading or trailing - // whitespace (in fact, most don't, at least for attributes - // like alt, but an extra space at the end is barely - // noticeable). Still, we have a configuration knob for - // this, since this transformation is not necesary if you - // don't process user input with innerHTML or you don't plan - // on supporting Internet Explorer. - if ($this->_innerHTMLFix) { - if (strpos($value, '`') !== false) { - // check if correct quoting style would not already be - // triggered - if (strcspn($value, '"\' <>') === strlen($value)) { - // protect! - $value .= ' '; - } - } - } - $html .= $key.'="'.$this->escape($value).'" '; - } - return rtrim($html); - } - - /** - * Escapes raw text data. - * @todo This really ought to be protected, but until we have a facility - * for properly generating HTML here w/o using tokens, it stays - * public. - * @param string $string String data to escape for HTML. - * @param int $quote Quoting style, like htmlspecialchars. ENT_NOQUOTES is - * permissible for non-attribute output. - * @return string escaped data. - */ - public function escape($string, $quote = null) - { - // Workaround for APC bug on Mac Leopard reported by sidepodcast - // http://htmlpurifier.org/phorum/read.php?3,4823,4846 - if ($quote === null) { - $quote = ENT_COMPAT; - } - return htmlspecialchars($string, $quote, 'UTF-8'); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php deleted file mode 100644 index 9b7b334d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLDefinition.php +++ /dev/null @@ -1,493 +0,0 @@ -getAnonymousModule(); - if (!isset($module->info[$element_name])) { - $element = $module->addBlankElement($element_name); - } else { - $element = $module->info[$element_name]; - } - $element->attr[$attr_name] = $def; - } - - /** - * Adds a custom element to your HTML definition - * @see HTMLPurifier_HTMLModule::addElement() for detailed - * parameter and return value descriptions. - */ - public function addElement($element_name, $type, $contents, $attr_collections, $attributes = array()) - { - $module = $this->getAnonymousModule(); - // assume that if the user is calling this, the element - // is safe. This may not be a good idea - $element = $module->addElement($element_name, $type, $contents, $attr_collections, $attributes); - return $element; - } - - /** - * Adds a blank element to your HTML definition, for overriding - * existing behavior - * @param string $element_name - * @return HTMLPurifier_ElementDef - * @see HTMLPurifier_HTMLModule::addBlankElement() for detailed - * parameter and return value descriptions. - */ - public function addBlankElement($element_name) - { - $module = $this->getAnonymousModule(); - $element = $module->addBlankElement($element_name); - return $element; - } - - /** - * Retrieves a reference to the anonymous module, so you can - * bust out advanced features without having to make your own - * module. - * @return HTMLPurifier_HTMLModule - */ - public function getAnonymousModule() - { - if (!$this->_anonModule) { - $this->_anonModule = new HTMLPurifier_HTMLModule(); - $this->_anonModule->name = 'Anonymous'; - } - return $this->_anonModule; - } - - private $_anonModule = null; - - // PUBLIC BUT INTERNAL VARIABLES -------------------------------------- - - /** - * @type string - */ - public $type = 'HTML'; - - /** - * @type HTMLPurifier_HTMLModuleManager - */ - public $manager; - - /** - * Performs low-cost, preliminary initialization. - */ - public function __construct() - { - $this->manager = new HTMLPurifier_HTMLModuleManager(); - } - - /** - * @param HTMLPurifier_Config $config - */ - protected function doSetup($config) - { - $this->processModules($config); - $this->setupConfigStuff($config); - unset($this->manager); - - // cleanup some of the element definitions - foreach ($this->info as $k => $v) { - unset($this->info[$k]->content_model); - unset($this->info[$k]->content_model_type); - } - } - - /** - * Extract out the information from the manager - * @param HTMLPurifier_Config $config - */ - protected function processModules($config) - { - if ($this->_anonModule) { - // for user specific changes - // this is late-loaded so we don't have to deal with PHP4 - // reference wonky-ness - $this->manager->addModule($this->_anonModule); - unset($this->_anonModule); - } - - $this->manager->setup($config); - $this->doctype = $this->manager->doctype; - - foreach ($this->manager->modules as $module) { - foreach ($module->info_tag_transform as $k => $v) { - if ($v === false) { - unset($this->info_tag_transform[$k]); - } else { - $this->info_tag_transform[$k] = $v; - } - } - foreach ($module->info_attr_transform_pre as $k => $v) { - if ($v === false) { - unset($this->info_attr_transform_pre[$k]); - } else { - $this->info_attr_transform_pre[$k] = $v; - } - } - foreach ($module->info_attr_transform_post as $k => $v) { - if ($v === false) { - unset($this->info_attr_transform_post[$k]); - } else { - $this->info_attr_transform_post[$k] = $v; - } - } - foreach ($module->info_injector as $k => $v) { - if ($v === false) { - unset($this->info_injector[$k]); - } else { - $this->info_injector[$k] = $v; - } - } - } - $this->info = $this->manager->getElements(); - $this->info_content_sets = $this->manager->contentSets->lookup; - } - - /** - * Sets up stuff based on config. We need a better way of doing this. - * @param HTMLPurifier_Config $config - */ - protected function setupConfigStuff($config) - { - $block_wrapper = $config->get('HTML.BlockWrapper'); - if (isset($this->info_content_sets['Block'][$block_wrapper])) { - $this->info_block_wrapper = $block_wrapper; - } else { - trigger_error( - 'Cannot use non-block element as block wrapper', - E_USER_ERROR - ); - } - - $parent = $config->get('HTML.Parent'); - $def = $this->manager->getElement($parent, true); - if ($def) { - $this->info_parent = $parent; - $this->info_parent_def = $def; - } else { - trigger_error( - 'Cannot use unrecognized element as parent', - E_USER_ERROR - ); - $this->info_parent_def = $this->manager->getElement($this->info_parent, true); - } - - // support template text - $support = "(for information on implementing this, see the support forums) "; - - // setup allowed elements ----------------------------------------- - - $allowed_elements = $config->get('HTML.AllowedElements'); - $allowed_attributes = $config->get('HTML.AllowedAttributes'); // retrieve early - - if (!is_array($allowed_elements) && !is_array($allowed_attributes)) { - $allowed = $config->get('HTML.Allowed'); - if (is_string($allowed)) { - list($allowed_elements, $allowed_attributes) = $this->parseTinyMCEAllowedList($allowed); - } - } - - if (is_array($allowed_elements)) { - foreach ($this->info as $name => $d) { - if (!isset($allowed_elements[$name])) { - unset($this->info[$name]); - } - unset($allowed_elements[$name]); - } - // emit errors - foreach ($allowed_elements as $element => $d) { - $element = htmlspecialchars($element); // PHP doesn't escape errors, be careful! - trigger_error("Element '$element' is not supported $support", E_USER_WARNING); - } - } - - // setup allowed attributes --------------------------------------- - - $allowed_attributes_mutable = $allowed_attributes; // by copy! - if (is_array($allowed_attributes)) { - // This actually doesn't do anything, since we went away from - // global attributes. It's possible that userland code uses - // it, but HTMLModuleManager doesn't! - foreach ($this->info_global_attr as $attr => $x) { - $keys = array($attr, "*@$attr", "*.$attr"); - $delete = true; - foreach ($keys as $key) { - if ($delete && isset($allowed_attributes[$key])) { - $delete = false; - } - if (isset($allowed_attributes_mutable[$key])) { - unset($allowed_attributes_mutable[$key]); - } - } - if ($delete) { - unset($this->info_global_attr[$attr]); - } - } - - foreach ($this->info as $tag => $info) { - foreach ($info->attr as $attr => $x) { - $keys = array("$tag@$attr", $attr, "*@$attr", "$tag.$attr", "*.$attr"); - $delete = true; - foreach ($keys as $key) { - if ($delete && isset($allowed_attributes[$key])) { - $delete = false; - } - if (isset($allowed_attributes_mutable[$key])) { - unset($allowed_attributes_mutable[$key]); - } - } - if ($delete) { - if ($this->info[$tag]->attr[$attr]->required) { - trigger_error( - "Required attribute '$attr' in element '$tag' " . - "was not allowed, which means '$tag' will not be allowed either", - E_USER_WARNING - ); - } - unset($this->info[$tag]->attr[$attr]); - } - } - } - // emit errors - foreach ($allowed_attributes_mutable as $elattr => $d) { - $bits = preg_split('/[.@]/', $elattr, 2); - $c = count($bits); - switch ($c) { - case 2: - if ($bits[0] !== '*') { - $element = htmlspecialchars($bits[0]); - $attribute = htmlspecialchars($bits[1]); - if (!isset($this->info[$element])) { - trigger_error( - "Cannot allow attribute '$attribute' if element " . - "'$element' is not allowed/supported $support" - ); - } else { - trigger_error( - "Attribute '$attribute' in element '$element' not supported $support", - E_USER_WARNING - ); - } - break; - } - // otherwise fall through - case 1: - $attribute = htmlspecialchars($bits[0]); - trigger_error( - "Global attribute '$attribute' is not ". - "supported in any elements $support", - E_USER_WARNING - ); - break; - } - } - } - - // setup forbidden elements --------------------------------------- - - $forbidden_elements = $config->get('HTML.ForbiddenElements'); - $forbidden_attributes = $config->get('HTML.ForbiddenAttributes'); - - foreach ($this->info as $tag => $info) { - if (isset($forbidden_elements[$tag])) { - unset($this->info[$tag]); - continue; - } - foreach ($info->attr as $attr => $x) { - if (isset($forbidden_attributes["$tag@$attr"]) || - isset($forbidden_attributes["*@$attr"]) || - isset($forbidden_attributes[$attr]) - ) { - unset($this->info[$tag]->attr[$attr]); - continue; - } elseif (isset($forbidden_attributes["$tag.$attr"])) { // this segment might get removed eventually - // $tag.$attr are not user supplied, so no worries! - trigger_error( - "Error with $tag.$attr: tag.attr syntax not supported for " . - "HTML.ForbiddenAttributes; use tag@attr instead", - E_USER_WARNING - ); - } - } - } - foreach ($forbidden_attributes as $key => $v) { - if (strlen($key) < 2) { - continue; - } - if ($key[0] != '*') { - continue; - } - if ($key[1] == '.') { - trigger_error( - "Error with $key: *.attr syntax not supported for HTML.ForbiddenAttributes; use attr instead", - E_USER_WARNING - ); - } - } - - // setup injectors ----------------------------------------------------- - foreach ($this->info_injector as $i => $injector) { - if ($injector->checkNeeded($config) !== false) { - // remove injector that does not have it's required - // elements/attributes present, and is thus not needed. - unset($this->info_injector[$i]); - } - } - } - - /** - * Parses a TinyMCE-flavored Allowed Elements and Attributes list into - * separate lists for processing. Format is element[attr1|attr2],element2... - * @warning Although it's largely drawn from TinyMCE's implementation, - * it is different, and you'll probably have to modify your lists - * @param array $list String list to parse - * @return array - * @todo Give this its own class, probably static interface - */ - public function parseTinyMCEAllowedList($list) - { - $list = str_replace(array(' ', "\t"), '', $list); - - $elements = array(); - $attributes = array(); - - $chunks = preg_split('/(,|[\n\r]+)/', $list); - foreach ($chunks as $chunk) { - if (empty($chunk)) { - continue; - } - // remove TinyMCE element control characters - if (!strpos($chunk, '[')) { - $element = $chunk; - $attr = false; - } else { - list($element, $attr) = explode('[', $chunk); - } - if ($element !== '*') { - $elements[$element] = true; - } - if (!$attr) { - continue; - } - $attr = substr($attr, 0, strlen($attr) - 1); // remove trailing ] - $attr = explode('|', $attr); - foreach ($attr as $key) { - $attributes["$element.$key"] = true; - } - } - return array($elements, $attributes); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php deleted file mode 100644 index 9dbb9872..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule.php +++ /dev/null @@ -1,285 +0,0 @@ -info, since the object's data is only info, - * with extra behavior associated with it. - * @type array - */ - public $attr_collections = array(); - - /** - * Associative array of deprecated tag name to HTMLPurifier_TagTransform. - * @type array - */ - public $info_tag_transform = array(); - - /** - * List of HTMLPurifier_AttrTransform to be performed before validation. - * @type array - */ - public $info_attr_transform_pre = array(); - - /** - * List of HTMLPurifier_AttrTransform to be performed after validation. - * @type array - */ - public $info_attr_transform_post = array(); - - /** - * List of HTMLPurifier_Injector to be performed during well-formedness fixing. - * An injector will only be invoked if all of it's pre-requisites are met; - * if an injector fails setup, there will be no error; it will simply be - * silently disabled. - * @type array - */ - public $info_injector = array(); - - /** - * Boolean flag that indicates whether or not getChildDef is implemented. - * For optimization reasons: may save a call to a function. Be sure - * to set it if you do implement getChildDef(), otherwise it will have - * no effect! - * @type bool - */ - public $defines_child_def = false; - - /** - * Boolean flag whether or not this module is safe. If it is not safe, all - * of its members are unsafe. Modules are safe by default (this might be - * slightly dangerous, but it doesn't make much sense to force HTML Purifier, - * which is based off of safe HTML, to explicitly say, "This is safe," even - * though there are modules which are "unsafe") - * - * @type bool - * @note Previously, safety could be applied at an element level granularity. - * We've removed this ability, so in order to add "unsafe" elements - * or attributes, a dedicated module with this property set to false - * must be used. - */ - public $safe = true; - - /** - * Retrieves a proper HTMLPurifier_ChildDef subclass based on - * content_model and content_model_type member variables of - * the HTMLPurifier_ElementDef class. There is a similar function - * in HTMLPurifier_HTMLDefinition. - * @param HTMLPurifier_ElementDef $def - * @return HTMLPurifier_ChildDef subclass - */ - public function getChildDef($def) - { - return false; - } - - // -- Convenience ----------------------------------------------------- - - /** - * Convenience function that sets up a new element - * @param string $element Name of element to add - * @param string|bool $type What content set should element be registered to? - * Set as false to skip this step. - * @param string|HTMLPurifier_ChildDef $contents Allowed children in form of: - * "$content_model_type: $content_model" - * @param array|string $attr_includes What attribute collections to register to - * element? - * @param array $attr What unique attributes does the element define? - * @see HTMLPurifier_ElementDef:: for in-depth descriptions of these parameters. - * @return HTMLPurifier_ElementDef Created element definition object, so you - * can set advanced parameters - */ - public function addElement($element, $type, $contents, $attr_includes = array(), $attr = array()) - { - $this->elements[] = $element; - // parse content_model - list($content_model_type, $content_model) = $this->parseContents($contents); - // merge in attribute inclusions - $this->mergeInAttrIncludes($attr, $attr_includes); - // add element to content sets - if ($type) { - $this->addElementToContentSet($element, $type); - } - // create element - $this->info[$element] = HTMLPurifier_ElementDef::create( - $content_model, - $content_model_type, - $attr - ); - // literal object $contents means direct child manipulation - if (!is_string($contents)) { - $this->info[$element]->child = $contents; - } - return $this->info[$element]; - } - - /** - * Convenience function that creates a totally blank, non-standalone - * element. - * @param string $element Name of element to create - * @return HTMLPurifier_ElementDef Created element - */ - public function addBlankElement($element) - { - if (!isset($this->info[$element])) { - $this->elements[] = $element; - $this->info[$element] = new HTMLPurifier_ElementDef(); - $this->info[$element]->standalone = false; - } else { - trigger_error("Definition for $element already exists in module, cannot redefine"); - } - return $this->info[$element]; - } - - /** - * Convenience function that registers an element to a content set - * @param string $element Element to register - * @param string $type Name content set (warning: case sensitive, usually upper-case - * first letter) - */ - public function addElementToContentSet($element, $type) - { - if (!isset($this->content_sets[$type])) { - $this->content_sets[$type] = ''; - } else { - $this->content_sets[$type] .= ' | '; - } - $this->content_sets[$type] .= $element; - } - - /** - * Convenience function that transforms single-string contents - * into separate content model and content model type - * @param string $contents Allowed children in form of: - * "$content_model_type: $content_model" - * @return array - * @note If contents is an object, an array of two nulls will be - * returned, and the callee needs to take the original $contents - * and use it directly. - */ - public function parseContents($contents) - { - if (!is_string($contents)) { - return array(null, null); - } // defer - switch ($contents) { - // check for shorthand content model forms - case 'Empty': - return array('empty', ''); - case 'Inline': - return array('optional', 'Inline | #PCDATA'); - case 'Flow': - return array('optional', 'Flow | #PCDATA'); - } - list($content_model_type, $content_model) = explode(':', $contents); - $content_model_type = strtolower(trim($content_model_type)); - $content_model = trim($content_model); - return array($content_model_type, $content_model); - } - - /** - * Convenience function that merges a list of attribute includes into - * an attribute array. - * @param array $attr Reference to attr array to modify - * @param array $attr_includes Array of includes / string include to merge in - */ - public function mergeInAttrIncludes(&$attr, $attr_includes) - { - if (!is_array($attr_includes)) { - if (empty($attr_includes)) { - $attr_includes = array(); - } else { - $attr_includes = array($attr_includes); - } - } - $attr[0] = $attr_includes; - } - - /** - * Convenience function that generates a lookup table with boolean - * true as value. - * @param string $list List of values to turn into a lookup - * @note You can also pass an arbitrary number of arguments in - * place of the regular argument - * @return array array equivalent of list - */ - public function makeLookup($list) - { - $args = func_get_args(); - if (is_string($list)) { - $list = $args; - } - $ret = array(); - foreach ($list as $value) { - if (is_null($value)) { - continue; - } - $ret[$value] = true; - } - return $ret; - } - - /** - * Lazy load construction of the module after determining whether - * or not it's needed, and also when a finalized configuration object - * is available. - * @param HTMLPurifier_Config $config - */ - public function setup($config) - { - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php deleted file mode 100644 index 1e67c790..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Bdo.php +++ /dev/null @@ -1,44 +0,0 @@ - array('dir' => false) - ); - - /** - * @param HTMLPurifier_Config $config - */ - public function setup($config) - { - $bdo = $this->addElement( - 'bdo', - 'Inline', - 'Inline', - array('Core', 'Lang'), - array( - 'dir' => 'Enum#ltr,rtl', // required - // The Abstract Module specification has the attribute - // inclusions wrong for bdo: bdo allows Lang - ) - ); - $bdo->attr_transform_post[] = new HTMLPurifier_AttrTransform_BdoDir(); - - $this->attr_collections['I18N']['dir'] = 'Enum#ltr,rtl'; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php deleted file mode 100644 index 7220c14c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/CommonAttributes.php +++ /dev/null @@ -1,32 +0,0 @@ - array( - 0 => array('Style'), - // 'xml:space' => false, - 'class' => 'Class', - 'id' => 'ID', - 'title' => 'CDATA', - 'contenteditable' => 'ContentEditable', - ), - 'Lang' => array(), - 'I18N' => array( - 0 => array('Lang'), // proprietary, for xml:lang/lang - ), - 'Common' => array( - 0 => array('Core', 'I18N') - ) - ); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php deleted file mode 100644 index a9042a35..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Edit.php +++ /dev/null @@ -1,55 +0,0 @@ - 'URI', - // 'datetime' => 'Datetime', // not implemented - ); - $this->addElement('del', 'Inline', $contents, 'Common', $attr); - $this->addElement('ins', 'Inline', $contents, 'Common', $attr); - } - - // HTML 4.01 specifies that ins/del must not contain block - // elements when used in an inline context, chameleon is - // a complicated workaround to acheive this effect - - // Inline context ! Block context (exclamation mark is - // separator, see getChildDef for parsing) - - /** - * @type bool - */ - public $defines_child_def = true; - - /** - * @param HTMLPurifier_ElementDef $def - * @return HTMLPurifier_ChildDef_Chameleon - */ - public function getChildDef($def) - { - if ($def->content_model_type != 'chameleon') { - return false; - } - $value = explode('!', $def->content_model); - return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php deleted file mode 100644 index eb0edcff..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Forms.php +++ /dev/null @@ -1,194 +0,0 @@ - 'Form', - 'Inline' => 'Formctrl', - ); - - /** - * @param HTMLPurifier_Config $config - */ - public function setup($config) - { - if ($config->get('HTML.Forms')) { - $this->safe = true; - } - - $form = $this->addElement( - 'form', - 'Form', - 'Required: Heading | List | Block | fieldset', - 'Common', - array( - 'accept' => 'ContentTypes', - 'accept-charset' => 'Charsets', - 'action*' => 'URI', - 'method' => 'Enum#get,post', - // really ContentType, but these two are the only ones used today - 'enctype' => 'Enum#application/x-www-form-urlencoded,multipart/form-data', - ) - ); - $form->excludes = array('form' => true); - - $input = $this->addElement( - 'input', - 'Formctrl', - 'Empty', - 'Common', - array( - 'accept' => 'ContentTypes', - 'accesskey' => 'Character', - 'alt' => 'Text', - 'checked' => 'Bool#checked', - 'disabled' => 'Bool#disabled', - 'maxlength' => 'Number', - 'name' => 'CDATA', - 'readonly' => 'Bool#readonly', - 'size' => 'Number', - 'src' => 'URI#embedded', - 'tabindex' => 'Number', - 'type' => 'Enum#text,password,checkbox,button,radio,submit,reset,file,hidden,image', - 'value' => 'CDATA', - ) - ); - $input->attr_transform_post[] = new HTMLPurifier_AttrTransform_Input(); - - $this->addElement( - 'select', - 'Formctrl', - 'Required: optgroup | option', - 'Common', - array( - 'disabled' => 'Bool#disabled', - 'multiple' => 'Bool#multiple', - 'name' => 'CDATA', - 'size' => 'Number', - 'tabindex' => 'Number', - ) - ); - - $this->addElement( - 'option', - false, - 'Optional: #PCDATA', - 'Common', - array( - 'disabled' => 'Bool#disabled', - 'label' => 'Text', - 'selected' => 'Bool#selected', - 'value' => 'CDATA', - ) - ); - // It's illegal for there to be more than one selected, but not - // be multiple. Also, no selected means undefined behavior. This might - // be difficult to implement; perhaps an injector, or a context variable. - - $textarea = $this->addElement( - 'textarea', - 'Formctrl', - 'Optional: #PCDATA', - 'Common', - array( - 'accesskey' => 'Character', - 'cols*' => 'Number', - 'disabled' => 'Bool#disabled', - 'name' => 'CDATA', - 'readonly' => 'Bool#readonly', - 'rows*' => 'Number', - 'tabindex' => 'Number', - ) - ); - $textarea->attr_transform_pre[] = new HTMLPurifier_AttrTransform_Textarea(); - - $button = $this->addElement( - 'button', - 'Formctrl', - 'Optional: #PCDATA | Heading | List | Block | Inline', - 'Common', - array( - 'accesskey' => 'Character', - 'disabled' => 'Bool#disabled', - 'name' => 'CDATA', - 'tabindex' => 'Number', - 'type' => 'Enum#button,submit,reset', - 'value' => 'CDATA', - ) - ); - - // For exclusions, ideally we'd specify content sets, not literal elements - $button->excludes = $this->makeLookup( - 'form', - 'fieldset', // Form - 'input', - 'select', - 'textarea', - 'label', - 'button', // Formctrl - 'a', // as per HTML 4.01 spec, this is omitted by modularization - 'isindex', - 'iframe' // legacy items - ); - - // Extra exclusion: img usemap="" is not permitted within this element. - // We'll omit this for now, since we don't have any good way of - // indicating it yet. - - // This is HIGHLY user-unfriendly; we need a custom child-def for this - $this->addElement('fieldset', 'Form', 'Custom: (#WS?,legend,(Flow|#PCDATA)*)', 'Common'); - - $label = $this->addElement( - 'label', - 'Formctrl', - 'Optional: #PCDATA | Inline', - 'Common', - array( - 'accesskey' => 'Character', - // 'for' => 'IDREF', // IDREF not implemented, cannot allow - ) - ); - $label->excludes = array('label' => true); - - $this->addElement( - 'legend', - false, - 'Optional: #PCDATA | Inline', - 'Common', - array( - 'accesskey' => 'Character', - ) - ); - - $this->addElement( - 'optgroup', - false, - 'Required: option', - 'Common', - array( - 'disabled' => 'Bool#disabled', - 'label*' => 'Text', - ) - ); - // Don't forget an injector for . This one's a little complex - // because it maps to multiple elements. - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php deleted file mode 100644 index 72d7a31e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Hypertext.php +++ /dev/null @@ -1,40 +0,0 @@ -addElement( - 'a', - 'Inline', - 'Inline', - 'Common', - array( - // 'accesskey' => 'Character', - // 'charset' => 'Charset', - 'href' => 'URI', - // 'hreflang' => 'LanguageCode', - 'rel' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rel'), - 'rev' => new HTMLPurifier_AttrDef_HTML_LinkTypes('rev'), - // 'tabindex' => 'Number', - // 'type' => 'ContentType', - ) - ); - $a->formatting = true; - $a->excludes = array('a' => true); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php deleted file mode 100644 index f7e7c91c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Iframe.php +++ /dev/null @@ -1,51 +0,0 @@ -get('HTML.SafeIframe')) { - $this->safe = true; - } - $this->addElement( - 'iframe', - 'Inline', - 'Flow', - 'Common', - array( - 'src' => 'URI#embedded', - 'width' => 'Length', - 'height' => 'Length', - 'name' => 'ID', - 'scrolling' => 'Enum#yes,no,auto', - 'frameborder' => 'Enum#0,1', - 'longdesc' => 'URI', - 'marginheight' => 'Pixels', - 'marginwidth' => 'Pixels', - ) - ); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php deleted file mode 100644 index 0f5fdb3b..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Image.php +++ /dev/null @@ -1,49 +0,0 @@ -get('HTML.MaxImgLength'); - $img = $this->addElement( - 'img', - 'Inline', - 'Empty', - 'Common', - array( - 'alt*' => 'Text', - // According to the spec, it's Length, but percents can - // be abused, so we allow only Pixels. - 'height' => 'Pixels#' . $max, - 'width' => 'Pixels#' . $max, - 'longdesc' => 'URI', - 'src*' => new HTMLPurifier_AttrDef_URI(true), // embedded - ) - ); - if ($max === null || $config->get('HTML.Trusted')) { - $img->attr['height'] = - $img->attr['width'] = 'Length'; - } - - // kind of strange, but splitting things up would be inefficient - $img->attr_transform_pre[] = - $img->attr_transform_post[] = - new HTMLPurifier_AttrTransform_ImgRequired(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php deleted file mode 100644 index 86b52995..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Legacy.php +++ /dev/null @@ -1,186 +0,0 @@ -addElement( - 'basefont', - 'Inline', - 'Empty', - null, - array( - 'color' => 'Color', - 'face' => 'Text', // extremely broad, we should - 'size' => 'Text', // tighten it - 'id' => 'ID' - ) - ); - $this->addElement('center', 'Block', 'Flow', 'Common'); - $this->addElement( - 'dir', - 'Block', - 'Required: li', - 'Common', - array( - 'compact' => 'Bool#compact' - ) - ); - $this->addElement( - 'font', - 'Inline', - 'Inline', - array('Core', 'I18N'), - array( - 'color' => 'Color', - 'face' => 'Text', // extremely broad, we should - 'size' => 'Text', // tighten it - ) - ); - $this->addElement( - 'menu', - 'Block', - 'Required: li', - 'Common', - array( - 'compact' => 'Bool#compact' - ) - ); - - $s = $this->addElement('s', 'Inline', 'Inline', 'Common'); - $s->formatting = true; - - $strike = $this->addElement('strike', 'Inline', 'Inline', 'Common'); - $strike->formatting = true; - - $u = $this->addElement('u', 'Inline', 'Inline', 'Common'); - $u->formatting = true; - - // setup modifications to old elements - - $align = 'Enum#left,right,center,justify'; - - $address = $this->addBlankElement('address'); - $address->content_model = 'Inline | #PCDATA | p'; - $address->content_model_type = 'optional'; - $address->child = false; - - $blockquote = $this->addBlankElement('blockquote'); - $blockquote->content_model = 'Flow | #PCDATA'; - $blockquote->content_model_type = 'optional'; - $blockquote->child = false; - - $br = $this->addBlankElement('br'); - $br->attr['clear'] = 'Enum#left,all,right,none'; - - $caption = $this->addBlankElement('caption'); - $caption->attr['align'] = 'Enum#top,bottom,left,right'; - - $div = $this->addBlankElement('div'); - $div->attr['align'] = $align; - - $dl = $this->addBlankElement('dl'); - $dl->attr['compact'] = 'Bool#compact'; - - for ($i = 1; $i <= 6; $i++) { - $h = $this->addBlankElement("h$i"); - $h->attr['align'] = $align; - } - - $hr = $this->addBlankElement('hr'); - $hr->attr['align'] = $align; - $hr->attr['noshade'] = 'Bool#noshade'; - $hr->attr['size'] = 'Pixels'; - $hr->attr['width'] = 'Length'; - - $img = $this->addBlankElement('img'); - $img->attr['align'] = 'IAlign'; - $img->attr['border'] = 'Pixels'; - $img->attr['hspace'] = 'Pixels'; - $img->attr['vspace'] = 'Pixels'; - - // figure out this integer business - - $li = $this->addBlankElement('li'); - $li->attr['value'] = new HTMLPurifier_AttrDef_Integer(); - $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle'; - - $ol = $this->addBlankElement('ol'); - $ol->attr['compact'] = 'Bool#compact'; - $ol->attr['start'] = new HTMLPurifier_AttrDef_Integer(); - $ol->attr['type'] = 'Enum#s:1,i,I,a,A'; - - $p = $this->addBlankElement('p'); - $p->attr['align'] = $align; - - $pre = $this->addBlankElement('pre'); - $pre->attr['width'] = 'Number'; - - // script omitted - - $table = $this->addBlankElement('table'); - $table->attr['align'] = 'Enum#left,center,right'; - $table->attr['bgcolor'] = 'Color'; - - $tr = $this->addBlankElement('tr'); - $tr->attr['bgcolor'] = 'Color'; - - $th = $this->addBlankElement('th'); - $th->attr['bgcolor'] = 'Color'; - $th->attr['height'] = 'Length'; - $th->attr['nowrap'] = 'Bool#nowrap'; - $th->attr['width'] = 'Length'; - - $td = $this->addBlankElement('td'); - $td->attr['bgcolor'] = 'Color'; - $td->attr['height'] = 'Length'; - $td->attr['nowrap'] = 'Bool#nowrap'; - $td->attr['width'] = 'Length'; - - $ul = $this->addBlankElement('ul'); - $ul->attr['compact'] = 'Bool#compact'; - $ul->attr['type'] = 'Enum#square,disc,circle'; - - // "safe" modifications to "unsafe" elements - // WARNING: If you want to add support for an unsafe, legacy - // attribute, make a new TrustedLegacy module with the trusted - // bit set appropriately - - $form = $this->addBlankElement('form'); - $form->content_model = 'Flow | #PCDATA'; - $form->content_model_type = 'optional'; - $form->attr['target'] = 'FrameTarget'; - - $input = $this->addBlankElement('input'); - $input->attr['align'] = 'IAlign'; - - $legend = $this->addBlankElement('legend'); - $legend->attr['align'] = 'LAlign'; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php deleted file mode 100644 index 7a20ff70..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/List.php +++ /dev/null @@ -1,51 +0,0 @@ - 'List'); - - /** - * @param HTMLPurifier_Config $config - */ - public function setup($config) - { - $ol = $this->addElement('ol', 'List', new HTMLPurifier_ChildDef_List(), 'Common'); - $ul = $this->addElement('ul', 'List', new HTMLPurifier_ChildDef_List(), 'Common'); - // XXX The wrap attribute is handled by MakeWellFormed. This is all - // quite unsatisfactory, because we generated this - // *specifically* for lists, and now a big chunk of the handling - // is done properly by the List ChildDef. So actually, we just - // want enough information to make autoclosing work properly, - // and then hand off the tricky stuff to the ChildDef. - $ol->wrap = 'li'; - $ul->wrap = 'li'; - $this->addElement('dl', 'List', 'Required: dt | dd', 'Common'); - - $this->addElement('li', false, 'Flow', 'Common'); - - $this->addElement('dd', false, 'Flow', 'Common'); - $this->addElement('dt', false, 'Inline', 'Common'); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php deleted file mode 100644 index 60c05451..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Name.php +++ /dev/null @@ -1,26 +0,0 @@ -addBlankElement($name); - $element->attr['name'] = 'CDATA'; - if (!$config->get('HTML.Attr.Name.UseCDATA')) { - $element->attr_transform_post[] = new HTMLPurifier_AttrTransform_NameSync(); - } - } - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php deleted file mode 100644 index dc9410a8..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Nofollow.php +++ /dev/null @@ -1,25 +0,0 @@ -addBlankElement('a'); - $a->attr_transform_post[] = new HTMLPurifier_AttrTransform_Nofollow(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php deleted file mode 100644 index da722253..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/NonXMLCommonAttributes.php +++ /dev/null @@ -1,20 +0,0 @@ - array( - 'lang' => 'LanguageCode', - ) - ); -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php deleted file mode 100644 index 2f9efc5c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Object.php +++ /dev/null @@ -1,62 +0,0 @@ - to cater to legacy browsers: this - * module does not allow this sort of behavior - */ -class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule -{ - /** - * @type string - */ - public $name = 'Object'; - - /** - * @type bool - */ - public $safe = false; - - /** - * @param HTMLPurifier_Config $config - */ - public function setup($config) - { - $this->addElement( - 'object', - 'Inline', - 'Optional: #PCDATA | Flow | param', - 'Common', - array( - 'archive' => 'URI', - 'classid' => 'URI', - 'codebase' => 'URI', - 'codetype' => 'Text', - 'data' => 'URI', - 'declare' => 'Bool#declare', - 'height' => 'Length', - 'name' => 'CDATA', - 'standby' => 'Text', - 'tabindex' => 'Number', - 'type' => 'ContentType', - 'width' => 'Length' - ) - ); - - $this->addElement( - 'param', - false, - 'Empty', - null, - array( - 'id' => 'ID', - 'name*' => 'Text', - 'type' => 'Text', - 'value' => 'Text', - 'valuetype' => 'Enum#data,ref,object' - ) - ); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php deleted file mode 100644 index 6458ce9d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Presentation.php +++ /dev/null @@ -1,42 +0,0 @@ -addElement('hr', 'Block', 'Empty', 'Common'); - $this->addElement('sub', 'Inline', 'Inline', 'Common'); - $this->addElement('sup', 'Inline', 'Inline', 'Common'); - $b = $this->addElement('b', 'Inline', 'Inline', 'Common'); - $b->formatting = true; - $big = $this->addElement('big', 'Inline', 'Inline', 'Common'); - $big->formatting = true; - $i = $this->addElement('i', 'Inline', 'Inline', 'Common'); - $i->formatting = true; - $small = $this->addElement('small', 'Inline', 'Inline', 'Common'); - $small->formatting = true; - $tt = $this->addElement('tt', 'Inline', 'Inline', 'Common'); - $tt->formatting = true; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php deleted file mode 100644 index 5ee3c8e6..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Proprietary.php +++ /dev/null @@ -1,40 +0,0 @@ -addElement( - 'marquee', - 'Inline', - 'Flow', - 'Common', - array( - 'direction' => 'Enum#left,right,up,down', - 'behavior' => 'Enum#alternate', - 'width' => 'Length', - 'height' => 'Length', - 'scrolldelay' => 'Number', - 'scrollamount' => 'Number', - 'loop' => 'Number', - 'bgcolor' => 'Color', - 'hspace' => 'Pixels', - 'vspace' => 'Pixels', - ) - ); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php deleted file mode 100644 index a0d48924..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/Ruby.php +++ /dev/null @@ -1,36 +0,0 @@ -addElement( - 'ruby', - 'Inline', - 'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))', - 'Common' - ); - $this->addElement('rbc', false, 'Required: rb', 'Common'); - $this->addElement('rtc', false, 'Required: rt', 'Common'); - $rb = $this->addElement('rb', false, 'Inline', 'Common'); - $rb->excludes = array('ruby' => true); - $rt = $this->addElement('rt', false, 'Inline', 'Common', array('rbspan' => 'Number')); - $rt->excludes = array('ruby' => true); - $this->addElement('rp', false, 'Optional: #PCDATA', 'Common'); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php deleted file mode 100644 index 04e6689e..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeEmbed.php +++ /dev/null @@ -1,40 +0,0 @@ -get('HTML.MaxImgLength'); - $embed = $this->addElement( - 'embed', - 'Inline', - 'Empty', - 'Common', - array( - 'src*' => 'URI#embedded', - 'type' => 'Enum#application/x-shockwave-flash', - 'width' => 'Pixels#' . $max, - 'height' => 'Pixels#' . $max, - 'allowscriptaccess' => 'Enum#never', - 'allownetworking' => 'Enum#internal', - 'flashvars' => 'Text', - 'wmode' => 'Enum#window,transparent,opaque', - 'name' => 'ID', - ) - ); - $embed->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeEmbed(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php deleted file mode 100644 index 1297f80a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeObject.php +++ /dev/null @@ -1,62 +0,0 @@ -get('HTML.MaxImgLength'); - $object = $this->addElement( - 'object', - 'Inline', - 'Optional: param | Flow | #PCDATA', - 'Common', - array( - // While technically not required by the spec, we're forcing - // it to this value. - 'type' => 'Enum#application/x-shockwave-flash', - 'width' => 'Pixels#' . $max, - 'height' => 'Pixels#' . $max, - 'data' => 'URI#embedded', - 'codebase' => new HTMLPurifier_AttrDef_Enum( - array( - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0' - ) - ), - ) - ); - $object->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeObject(); - - $param = $this->addElement( - 'param', - false, - 'Empty', - false, - array( - 'id' => 'ID', - 'name*' => 'Text', - 'value' => 'Text' - ) - ); - $param->attr_transform_post[] = new HTMLPurifier_AttrTransform_SafeParam(); - $this->info_injector[] = 'SafeObject'; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php deleted file mode 100644 index aea7584c..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/HTMLModule/SafeScripting.php +++ /dev/null @@ -1,40 +0,0 @@ -get('HTML.SafeScripting'); - $script = $this->addElement( - 'script', - 'Inline', - 'Optional:', // Not `Empty` to not allow to autoclose the #i', '', $html); - } - - return $html; - } - - /** - * Takes a string of HTML (fragment or document) and returns the content - * @todo Consider making protected - */ - public function extractBody($html) - { - $matches = array(); - $result = preg_match('|(.*?)]*>(.*)|is', $html, $matches); - if ($result) { - // Make sure it's not in a comment - $comment_start = strrpos($matches[1], ''); - if ($comment_start === false || - ($comment_end !== false && $comment_end > $comment_start)) { - return $matches[2]; - } - } - return $html; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php deleted file mode 100644 index ca5f25b8..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/DOMLex.php +++ /dev/null @@ -1,338 +0,0 @@ -factory = new HTMLPurifier_TokenFactory(); - } - - /** - * @param string $html - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return HTMLPurifier_Token[] - */ - public function tokenizeHTML($html, $config, $context) - { - $html = $this->normalize($html, $config, $context); - - // attempt to armor stray angled brackets that cannot possibly - // form tags and thus are probably being used as emoticons - if ($config->get('Core.AggressivelyFixLt')) { - $char = '[^a-z!\/]'; - $comment = "/|\z)/is"; - $html = preg_replace_callback($comment, array($this, 'callbackArmorCommentEntities'), $html); - do { - $old = $html; - $html = preg_replace("/<($char)/i", '<\\1', $html); - } while ($html !== $old); - $html = preg_replace_callback($comment, array($this, 'callbackUndoCommentSubst'), $html); // fix comments - } - - // preprocess html, essential for UTF-8 - $html = $this->wrapHTML($html, $config, $context); - - $doc = new DOMDocument(); - $doc->encoding = 'UTF-8'; // theoretically, the above has this covered - - $options = 0; - if ($config->get('Core.AllowParseManyTags') && defined('LIBXML_PARSEHUGE')) { - $options |= LIBXML_PARSEHUGE; - } - - set_error_handler(array($this, 'muteErrorHandler')); - // loadHTML() fails on PHP 5.3 when second parameter is given - if ($options) { - $doc->loadHTML($html, $options); - } else { - $doc->loadHTML($html); - } - restore_error_handler(); - - $body = $doc->getElementsByTagName('html')->item(0)-> // - getElementsByTagName('body')->item(0); // - - $div = $body->getElementsByTagName('div')->item(0); //
- $tokens = array(); - $this->tokenizeDOM($div, $tokens, $config); - // If the div has a sibling, that means we tripped across - // a premature
tag. So remove the div we parsed, - // and then tokenize the rest of body. We can't tokenize - // the sibling directly as we'll lose the tags in that case. - if ($div->nextSibling) { - $body->removeChild($div); - $this->tokenizeDOM($body, $tokens, $config); - } - return $tokens; - } - - /** - * Iterative function that tokenizes a node, putting it into an accumulator. - * To iterate is human, to recurse divine - L. Peter Deutsch - * @param DOMNode $node DOMNode to be tokenized. - * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens. - * @return HTMLPurifier_Token of node appended to previously passed tokens. - */ - protected function tokenizeDOM($node, &$tokens, $config) - { - $level = 0; - $nodes = array($level => new HTMLPurifier_Queue(array($node))); - $closingNodes = array(); - do { - while (!$nodes[$level]->isEmpty()) { - $node = $nodes[$level]->shift(); // FIFO - $collect = $level > 0 ? true : false; - $needEndingTag = $this->createStartNode($node, $tokens, $collect, $config); - if ($needEndingTag) { - $closingNodes[$level][] = $node; - } - if ($node->childNodes && $node->childNodes->length) { - $level++; - $nodes[$level] = new HTMLPurifier_Queue(); - foreach ($node->childNodes as $childNode) { - $nodes[$level]->push($childNode); - } - } - } - $level--; - if ($level && isset($closingNodes[$level])) { - while ($node = array_pop($closingNodes[$level])) { - $this->createEndNode($node, $tokens); - } - } - } while ($level > 0); - } - - /** - * Portably retrieve the tag name of a node; deals with older versions - * of libxml like 2.7.6 - * @param DOMNode $node - */ - protected function getTagName($node) - { - if (isset($node->tagName)) { - return $node->tagName; - } else if (isset($node->nodeName)) { - return $node->nodeName; - } else if (isset($node->localName)) { - return $node->localName; - } - return null; - } - - /** - * Portably retrieve the data of a node; deals with older versions - * of libxml like 2.7.6 - * @param DOMNode $node - */ - protected function getData($node) - { - if (isset($node->data)) { - return $node->data; - } else if (isset($node->nodeValue)) { - return $node->nodeValue; - } else if (isset($node->textContent)) { - return $node->textContent; - } - return null; - } - - - /** - * @param DOMNode $node DOMNode to be tokenized. - * @param HTMLPurifier_Token[] $tokens Array-list of already tokenized tokens. - * @param bool $collect Says whether or start and close are collected, set to - * false at first recursion because it's the implicit DIV - * tag you're dealing with. - * @return bool if the token needs an endtoken - * @todo data and tagName properties don't seem to exist in DOMNode? - */ - protected function createStartNode($node, &$tokens, $collect, $config) - { - // intercept non element nodes. WE MUST catch all of them, - // but we're not getting the character reference nodes because - // those should have been preprocessed - if ($node->nodeType === XML_TEXT_NODE) { - $data = $this->getData($node); // Handle variable data property - if ($data !== null) { - $tokens[] = $this->factory->createText($data); - } - return false; - } elseif ($node->nodeType === XML_CDATA_SECTION_NODE) { - // undo libxml's special treatment of )#si', - array($this, 'scriptCallback'), - $html - ); - } - - $html = $this->normalize($html, $config, $context); - - $cursor = 0; // our location in the text - $inside_tag = false; // whether or not we're parsing the inside of a tag - $array = array(); // result array - - // This is also treated to mean maintain *column* numbers too - $maintain_line_numbers = $config->get('Core.MaintainLineNumbers'); - - if ($maintain_line_numbers === null) { - // automatically determine line numbering by checking - // if error collection is on - $maintain_line_numbers = $config->get('Core.CollectErrors'); - } - - if ($maintain_line_numbers) { - $current_line = 1; - $current_col = 0; - $length = strlen($html); - } else { - $current_line = false; - $current_col = false; - $length = false; - } - $context->register('CurrentLine', $current_line); - $context->register('CurrentCol', $current_col); - $nl = "\n"; - // how often to manually recalculate. This will ALWAYS be right, - // but it's pretty wasteful. Set to 0 to turn off - $synchronize_interval = $config->get('Core.DirectLexLineNumberSyncInterval'); - - $e = false; - if ($config->get('Core.CollectErrors')) { - $e =& $context->get('ErrorCollector'); - } - - // for testing synchronization - $loops = 0; - - while (++$loops) { - // $cursor is either at the start of a token, or inside of - // a tag (i.e. there was a < immediately before it), as indicated - // by $inside_tag - - if ($maintain_line_numbers) { - // $rcursor, however, is always at the start of a token. - $rcursor = $cursor - (int)$inside_tag; - - // Column number is cheap, so we calculate it every round. - // We're interested at the *end* of the newline string, so - // we need to add strlen($nl) == 1 to $nl_pos before subtracting it - // from our "rcursor" position. - $nl_pos = strrpos($html, $nl, $rcursor - $length); - $current_col = $rcursor - (is_bool($nl_pos) ? 0 : $nl_pos + 1); - - // recalculate lines - if ($synchronize_interval && // synchronization is on - $cursor > 0 && // cursor is further than zero - $loops % $synchronize_interval === 0) { // time to synchronize! - $current_line = 1 + $this->substrCount($html, $nl, 0, $cursor); - } - } - - $position_next_lt = strpos($html, '<', $cursor); - $position_next_gt = strpos($html, '>', $cursor); - - // triggers on "asdf" but not "asdf " - // special case to set up context - if ($position_next_lt === $cursor) { - $inside_tag = true; - $cursor++; - } - - if (!$inside_tag && $position_next_lt !== false) { - // We are not inside tag and there still is another tag to parse - $token = new - HTMLPurifier_Token_Text( - $this->parseText( - substr( - $html, - $cursor, - $position_next_lt - $cursor - ), $config - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_lt - $cursor); - } - $array[] = $token; - $cursor = $position_next_lt + 1; - $inside_tag = true; - continue; - } elseif (!$inside_tag) { - // We are not inside tag but there are no more tags - // If we're already at the end, break - if ($cursor === strlen($html)) { - break; - } - // Create Text of rest of string - $token = new - HTMLPurifier_Token_Text( - $this->parseText( - substr( - $html, - $cursor - ), $config - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - } - $array[] = $token; - break; - } elseif ($inside_tag && $position_next_gt !== false) { - // We are in tag and it is well formed - // Grab the internals of the tag - $strlen_segment = $position_next_gt - $cursor; - - if ($strlen_segment < 1) { - // there's nothing to process! - $token = new HTMLPurifier_Token_Text('<'); - $cursor++; - continue; - } - - $segment = substr($html, $cursor, $strlen_segment); - - if ($segment === false) { - // somehow, we attempted to access beyond the end of - // the string, defense-in-depth, reported by Nate Abele - break; - } - - // Check if it's a comment - if (substr($segment, 0, 3) === '!--') { - // re-determine segment length, looking for --> - $position_comment_end = strpos($html, '-->', $cursor); - if ($position_comment_end === false) { - // uh oh, we have a comment that extends to - // infinity. Can't be helped: set comment - // end position to end of string - if ($e) { - $e->send(E_WARNING, 'Lexer: Unclosed comment'); - } - $position_comment_end = strlen($html); - $end = true; - } else { - $end = false; - } - $strlen_segment = $position_comment_end - $cursor; - $segment = substr($html, $cursor, $strlen_segment); - $token = new - HTMLPurifier_Token_Comment( - substr( - $segment, - 3, - $strlen_segment - 3 - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $strlen_segment); - } - $array[] = $token; - $cursor = $end ? $position_comment_end : $position_comment_end + 3; - $inside_tag = false; - continue; - } - - // Check if it's an end tag - $is_end_tag = (strpos($segment, '/') === 0); - if ($is_end_tag) { - $type = substr($segment, 1); - $token = new HTMLPurifier_Token_End($type); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - $cursor = $position_next_gt + 1; - continue; - } - - // Check leading character is alnum, if not, we may - // have accidently grabbed an emoticon. Translate into - // text and go our merry way - if (!ctype_alpha($segment[0])) { - // XML: $segment[0] !== '_' && $segment[0] !== ':' - if ($e) { - $e->send(E_NOTICE, 'Lexer: Unescaped lt'); - } - $token = new HTMLPurifier_Token_Text('<'); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - continue; - } - - // Check if it is explicitly self closing, if so, remove - // trailing slash. Remember, we could have a tag like
, so - // any later token processing scripts must convert improperly - // classified EmptyTags from StartTags. - $is_self_closing = (strrpos($segment, '/') === $strlen_segment - 1); - if ($is_self_closing) { - $strlen_segment--; - $segment = substr($segment, 0, $strlen_segment); - } - - // Check if there are any attributes - $position_first_space = strcspn($segment, $this->_whitespace); - - if ($position_first_space >= $strlen_segment) { - if ($is_self_closing) { - $token = new HTMLPurifier_Token_Empty($segment); - } else { - $token = new HTMLPurifier_Token_Start($segment); - } - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $inside_tag = false; - $cursor = $position_next_gt + 1; - continue; - } - - // Grab out all the data - $type = substr($segment, 0, $position_first_space); - $attribute_string = - trim( - substr( - $segment, - $position_first_space - ) - ); - if ($attribute_string) { - $attr = $this->parseAttributeString( - $attribute_string, - $config, - $context - ); - } else { - $attr = array(); - } - - if ($is_self_closing) { - $token = new HTMLPurifier_Token_Empty($type, $attr); - } else { - $token = new HTMLPurifier_Token_Start($type, $attr); - } - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - $current_line += $this->substrCount($html, $nl, $cursor, $position_next_gt - $cursor); - } - $array[] = $token; - $cursor = $position_next_gt + 1; - $inside_tag = false; - continue; - } else { - // inside tag, but there's no ending > sign - if ($e) { - $e->send(E_WARNING, 'Lexer: Missing gt'); - } - $token = new - HTMLPurifier_Token_Text( - '<' . - $this->parseText( - substr($html, $cursor), $config - ) - ); - if ($maintain_line_numbers) { - $token->rawPosition($current_line, $current_col); - } - // no cursor scroll? Hmm... - $array[] = $token; - break; - } - break; - } - - $context->destroy('CurrentLine'); - $context->destroy('CurrentCol'); - return $array; - } - - /** - * PHP 5.0.x compatible substr_count that implements offset and length - * @param string $haystack - * @param string $needle - * @param int $offset - * @param int $length - * @return int - */ - protected function substrCount($haystack, $needle, $offset, $length) - { - static $oldVersion; - if ($oldVersion === null) { - $oldVersion = version_compare(PHP_VERSION, '5.1', '<'); - } - if ($oldVersion) { - $haystack = substr($haystack, $offset, $length); - return substr_count($haystack, $needle); - } else { - return substr_count($haystack, $needle, $offset, $length); - } - } - - /** - * Takes the inside of an HTML tag and makes an assoc array of attributes. - * - * @param string $string Inside of tag excluding name. - * @param HTMLPurifier_Config $config - * @param HTMLPurifier_Context $context - * @return array Assoc array of attributes. - */ - public function parseAttributeString($string, $config, $context) - { - $string = (string)$string; // quick typecast - - if ($string == '') { - return array(); - } // no attributes - - $e = false; - if ($config->get('Core.CollectErrors')) { - $e =& $context->get('ErrorCollector'); - } - - // let's see if we can abort as quickly as possible - // one equal sign, no spaces => one attribute - $num_equal = substr_count($string, '='); - $has_space = strpos($string, ' '); - if ($num_equal === 0 && !$has_space) { - // bool attribute - return array($string => $string); - } elseif ($num_equal === 1 && !$has_space) { - // only one attribute - list($key, $quoted_value) = explode('=', $string); - $quoted_value = trim($quoted_value); - if (!$key) { - if ($e) { - $e->send(E_ERROR, 'Lexer: Missing attribute key'); - } - return array(); - } - if (!$quoted_value) { - return array($key => ''); - } - $first_char = @$quoted_value[0]; - $last_char = @$quoted_value[strlen($quoted_value) - 1]; - - $same_quote = ($first_char == $last_char); - $open_quote = ($first_char == '"' || $first_char == "'"); - - if ($same_quote && $open_quote) { - // well behaved - $value = substr($quoted_value, 1, strlen($quoted_value) - 2); - } else { - // not well behaved - if ($open_quote) { - if ($e) { - $e->send(E_ERROR, 'Lexer: Missing end quote'); - } - $value = substr($quoted_value, 1); - } else { - $value = $quoted_value; - } - } - if ($value === false) { - $value = ''; - } - return array($key => $this->parseAttr($value, $config)); - } - - // setup loop environment - $array = array(); // return assoc array of attributes - $cursor = 0; // current position in string (moves forward) - $size = strlen($string); // size of the string (stays the same) - - // if we have unquoted attributes, the parser expects a terminating - // space, so let's guarantee that there's always a terminating space. - $string .= ' '; - - $old_cursor = -1; - while ($cursor < $size) { - if ($old_cursor >= $cursor) { - throw new Exception("Infinite loop detected"); - } - $old_cursor = $cursor; - - $cursor += ($value = strspn($string, $this->_whitespace, $cursor)); - // grab the key - - $key_begin = $cursor; //we're currently at the start of the key - - // scroll past all characters that are the key (not whitespace or =) - $cursor += strcspn($string, $this->_whitespace . '=', $cursor); - - $key_end = $cursor; // now at the end of the key - - $key = substr($string, $key_begin, $key_end - $key_begin); - - if (!$key) { - if ($e) { - $e->send(E_ERROR, 'Lexer: Missing attribute key'); - } - $cursor += 1 + strcspn($string, $this->_whitespace, $cursor + 1); // prevent infinite loop - continue; // empty key - } - - // scroll past all whitespace - $cursor += strspn($string, $this->_whitespace, $cursor); - - if ($cursor >= $size) { - $array[$key] = $key; - break; - } - - // if the next character is an equal sign, we've got a regular - // pair, otherwise, it's a bool attribute - $first_char = @$string[$cursor]; - - if ($first_char == '=') { - // key="value" - - $cursor++; - $cursor += strspn($string, $this->_whitespace, $cursor); - - if ($cursor === false) { - $array[$key] = ''; - break; - } - - // we might be in front of a quote right now - - $char = @$string[$cursor]; - - if ($char == '"' || $char == "'") { - // it's quoted, end bound is $char - $cursor++; - $value_begin = $cursor; - $cursor = strpos($string, $char, $cursor); - $value_end = $cursor; - } else { - // it's not quoted, end bound is whitespace - $value_begin = $cursor; - $cursor += strcspn($string, $this->_whitespace, $cursor); - $value_end = $cursor; - } - - // we reached a premature end - if ($cursor === false) { - $cursor = $size; - $value_end = $cursor; - } - - $value = substr($string, $value_begin, $value_end - $value_begin); - if ($value === false) { - $value = ''; - } - $array[$key] = $this->parseAttr($value, $config); - $cursor++; - } else { - // boolattr - if ($key !== '') { - $array[$key] = $key; - } else { - // purely theoretical - if ($e) { - $e->send(E_ERROR, 'Lexer: Missing attribute key'); - } - } - } - } - return $array; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php deleted file mode 100644 index 1564f283..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Lexer/PH5P.php +++ /dev/null @@ -1,4788 +0,0 @@ -normalize($html, $config, $context); - $new_html = $this->wrapHTML($new_html, $config, $context, false /* no div */); - try { - $parser = new HTML5($new_html); - $doc = $parser->save(); - } catch (DOMException $e) { - // Uh oh, it failed. Punt to DirectLex. - $lexer = new HTMLPurifier_Lexer_DirectLex(); - $context->register('PH5PError', $e); // save the error, so we can detect it - return $lexer->tokenizeHTML($html, $config, $context); // use original HTML - } - $tokens = array(); - $this->tokenizeDOM( - $doc->getElementsByTagName('html')->item(0)-> // - getElementsByTagName('body')->item(0) // - , - $tokens, $config - ); - return $tokens; - } -} - -/* - -Copyright 2007 Jeroen van der Meer - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - -class HTML5 -{ - private $data; - private $char; - private $EOF; - private $state; - private $tree; - private $token; - private $content_model; - private $escape = false; - private $entities = array( - 'AElig;', - 'AElig', - 'AMP;', - 'AMP', - 'Aacute;', - 'Aacute', - 'Acirc;', - 'Acirc', - 'Agrave;', - 'Agrave', - 'Alpha;', - 'Aring;', - 'Aring', - 'Atilde;', - 'Atilde', - 'Auml;', - 'Auml', - 'Beta;', - 'COPY;', - 'COPY', - 'Ccedil;', - 'Ccedil', - 'Chi;', - 'Dagger;', - 'Delta;', - 'ETH;', - 'ETH', - 'Eacute;', - 'Eacute', - 'Ecirc;', - 'Ecirc', - 'Egrave;', - 'Egrave', - 'Epsilon;', - 'Eta;', - 'Euml;', - 'Euml', - 'GT;', - 'GT', - 'Gamma;', - 'Iacute;', - 'Iacute', - 'Icirc;', - 'Icirc', - 'Igrave;', - 'Igrave', - 'Iota;', - 'Iuml;', - 'Iuml', - 'Kappa;', - 'LT;', - 'LT', - 'Lambda;', - 'Mu;', - 'Ntilde;', - 'Ntilde', - 'Nu;', - 'OElig;', - 'Oacute;', - 'Oacute', - 'Ocirc;', - 'Ocirc', - 'Ograve;', - 'Ograve', - 'Omega;', - 'Omicron;', - 'Oslash;', - 'Oslash', - 'Otilde;', - 'Otilde', - 'Ouml;', - 'Ouml', - 'Phi;', - 'Pi;', - 'Prime;', - 'Psi;', - 'QUOT;', - 'QUOT', - 'REG;', - 'REG', - 'Rho;', - 'Scaron;', - 'Sigma;', - 'THORN;', - 'THORN', - 'TRADE;', - 'Tau;', - 'Theta;', - 'Uacute;', - 'Uacute', - 'Ucirc;', - 'Ucirc', - 'Ugrave;', - 'Ugrave', - 'Upsilon;', - 'Uuml;', - 'Uuml', - 'Xi;', - 'Yacute;', - 'Yacute', - 'Yuml;', - 'Zeta;', - 'aacute;', - 'aacute', - 'acirc;', - 'acirc', - 'acute;', - 'acute', - 'aelig;', - 'aelig', - 'agrave;', - 'agrave', - 'alefsym;', - 'alpha;', - 'amp;', - 'amp', - 'and;', - 'ang;', - 'apos;', - 'aring;', - 'aring', - 'asymp;', - 'atilde;', - 'atilde', - 'auml;', - 'auml', - 'bdquo;', - 'beta;', - 'brvbar;', - 'brvbar', - 'bull;', - 'cap;', - 'ccedil;', - 'ccedil', - 'cedil;', - 'cedil', - 'cent;', - 'cent', - 'chi;', - 'circ;', - 'clubs;', - 'cong;', - 'copy;', - 'copy', - 'crarr;', - 'cup;', - 'curren;', - 'curren', - 'dArr;', - 'dagger;', - 'darr;', - 'deg;', - 'deg', - 'delta;', - 'diams;', - 'divide;', - 'divide', - 'eacute;', - 'eacute', - 'ecirc;', - 'ecirc', - 'egrave;', - 'egrave', - 'empty;', - 'emsp;', - 'ensp;', - 'epsilon;', - 'equiv;', - 'eta;', - 'eth;', - 'eth', - 'euml;', - 'euml', - 'euro;', - 'exist;', - 'fnof;', - 'forall;', - 'frac12;', - 'frac12', - 'frac14;', - 'frac14', - 'frac34;', - 'frac34', - 'frasl;', - 'gamma;', - 'ge;', - 'gt;', - 'gt', - 'hArr;', - 'harr;', - 'hearts;', - 'hellip;', - 'iacute;', - 'iacute', - 'icirc;', - 'icirc', - 'iexcl;', - 'iexcl', - 'igrave;', - 'igrave', - 'image;', - 'infin;', - 'int;', - 'iota;', - 'iquest;', - 'iquest', - 'isin;', - 'iuml;', - 'iuml', - 'kappa;', - 'lArr;', - 'lambda;', - 'lang;', - 'laquo;', - 'laquo', - 'larr;', - 'lceil;', - 'ldquo;', - 'le;', - 'lfloor;', - 'lowast;', - 'loz;', - 'lrm;', - 'lsaquo;', - 'lsquo;', - 'lt;', - 'lt', - 'macr;', - 'macr', - 'mdash;', - 'micro;', - 'micro', - 'middot;', - 'middot', - 'minus;', - 'mu;', - 'nabla;', - 'nbsp;', - 'nbsp', - 'ndash;', - 'ne;', - 'ni;', - 'not;', - 'not', - 'notin;', - 'nsub;', - 'ntilde;', - 'ntilde', - 'nu;', - 'oacute;', - 'oacute', - 'ocirc;', - 'ocirc', - 'oelig;', - 'ograve;', - 'ograve', - 'oline;', - 'omega;', - 'omicron;', - 'oplus;', - 'or;', - 'ordf;', - 'ordf', - 'ordm;', - 'ordm', - 'oslash;', - 'oslash', - 'otilde;', - 'otilde', - 'otimes;', - 'ouml;', - 'ouml', - 'para;', - 'para', - 'part;', - 'permil;', - 'perp;', - 'phi;', - 'pi;', - 'piv;', - 'plusmn;', - 'plusmn', - 'pound;', - 'pound', - 'prime;', - 'prod;', - 'prop;', - 'psi;', - 'quot;', - 'quot', - 'rArr;', - 'radic;', - 'rang;', - 'raquo;', - 'raquo', - 'rarr;', - 'rceil;', - 'rdquo;', - 'real;', - 'reg;', - 'reg', - 'rfloor;', - 'rho;', - 'rlm;', - 'rsaquo;', - 'rsquo;', - 'sbquo;', - 'scaron;', - 'sdot;', - 'sect;', - 'sect', - 'shy;', - 'shy', - 'sigma;', - 'sigmaf;', - 'sim;', - 'spades;', - 'sub;', - 'sube;', - 'sum;', - 'sup1;', - 'sup1', - 'sup2;', - 'sup2', - 'sup3;', - 'sup3', - 'sup;', - 'supe;', - 'szlig;', - 'szlig', - 'tau;', - 'there4;', - 'theta;', - 'thetasym;', - 'thinsp;', - 'thorn;', - 'thorn', - 'tilde;', - 'times;', - 'times', - 'trade;', - 'uArr;', - 'uacute;', - 'uacute', - 'uarr;', - 'ucirc;', - 'ucirc', - 'ugrave;', - 'ugrave', - 'uml;', - 'uml', - 'upsih;', - 'upsilon;', - 'uuml;', - 'uuml', - 'weierp;', - 'xi;', - 'yacute;', - 'yacute', - 'yen;', - 'yen', - 'yuml;', - 'yuml', - 'zeta;', - 'zwj;', - 'zwnj;' - ); - - const PCDATA = 0; - const RCDATA = 1; - const CDATA = 2; - const PLAINTEXT = 3; - - const DOCTYPE = 0; - const STARTTAG = 1; - const ENDTAG = 2; - const COMMENT = 3; - const CHARACTR = 4; - const EOF = 5; - - public function __construct($data) - { - $this->data = $data; - $this->char = -1; - $this->EOF = strlen($data); - $this->tree = new HTML5TreeConstructer; - $this->content_model = self::PCDATA; - - $this->state = 'data'; - - while ($this->state !== null) { - $this->{$this->state . 'State'}(); - } - } - - public function save() - { - return $this->tree->save(); - } - - private function char() - { - return ($this->char < $this->EOF) - ? $this->data[$this->char] - : false; - } - - private function character($s, $l = 0) - { - if ($s + $l < $this->EOF) { - if ($l === 0) { - return $this->data[$s]; - } else { - return substr($this->data, $s, $l); - } - } - } - - private function characters($char_class, $start) - { - return preg_replace('#^([' . $char_class . ']+).*#s', '\\1', substr($this->data, $start)); - } - - private function dataState() - { - // Consume the next input character - $this->char++; - $char = $this->char(); - - if ($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) { - /* U+0026 AMPERSAND (&) - When the content model flag is set to one of the PCDATA or RCDATA - states: switch to the entity data state. Otherwise: treat it as per - the "anything else" entry below. */ - $this->state = 'entityData'; - - } elseif ($char === '-') { - /* If the content model flag is set to either the RCDATA state or - the CDATA state, and the escape flag is false, and there are at - least three characters before this one in the input stream, and the - last four characters in the input stream, including this one, are - U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, - and U+002D HYPHEN-MINUS (""), - set the escape flag to false. */ - if (($this->content_model === self::RCDATA || - $this->content_model === self::CDATA) && $this->escape === true && - $this->character($this->char, 3) === '-->' - ) { - $this->escape = false; - } - - /* In any case, emit the input character as a character token. - Stay in the data state. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => $char - ) - ); - - } elseif ($this->char === $this->EOF) { - /* EOF - Emit an end-of-file token. */ - $this->EOF(); - - } elseif ($this->content_model === self::PLAINTEXT) { - /* When the content model flag is set to the PLAINTEXT state - THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of - the text and emit it as a character token. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => substr($this->data, $this->char) - ) - ); - - $this->EOF(); - - } else { - /* Anything else - THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that - otherwise would also be treated as a character token and emit it - as a single character token. Stay in the data state. */ - $len = strcspn($this->data, '<&', $this->char); - $char = substr($this->data, $this->char, $len); - $this->char += $len - 1; - - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => $char - ) - ); - - $this->state = 'data'; - } - } - - private function entityDataState() - { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, emit a U+0026 AMPERSAND character token. - // Otherwise, emit the character token that was returned. - $char = (!$entity) ? '&' : $entity; - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => $char - ) - ); - - // Finally, switch to the data state. - $this->state = 'data'; - } - - private function tagOpenState() - { - switch ($this->content_model) { - case self::RCDATA: - case self::CDATA: - /* If the next input character is a U+002F SOLIDUS (/) character, - consume it and switch to the close tag open state. If the next - input character is not a U+002F SOLIDUS (/) character, emit a - U+003C LESS-THAN SIGN character token and switch to the data - state to process the next input character. */ - if ($this->character($this->char + 1) === '/') { - $this->char++; - $this->state = 'closeTagOpen'; - - } else { - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => '<' - ) - ); - - $this->state = 'data'; - } - break; - - case self::PCDATA: - // If the content model flag is set to the PCDATA state - // Consume the next input character: - $this->char++; - $char = $this->char(); - - if ($char === '!') { - /* U+0021 EXCLAMATION MARK (!) - Switch to the markup declaration open state. */ - $this->state = 'markupDeclarationOpen'; - - } elseif ($char === '/') { - /* U+002F SOLIDUS (/) - Switch to the close tag open state. */ - $this->state = 'closeTagOpen'; - - } elseif (preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new start tag token, set its tag name to the lowercase - version of the input character (add 0x0020 to the character's code - point), then switch to the tag name state. (Don't emit the token - yet; further details will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::STARTTAG, - 'attr' => array() - ); - - $this->state = 'tagName'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Emit a U+003C LESS-THAN SIGN character token and a - U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => '<>' - ) - ); - - $this->state = 'data'; - - } elseif ($char === '?') { - /* U+003F QUESTION MARK (?) - Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - - } else { - /* Anything else - Parse error. Emit a U+003C LESS-THAN SIGN character token and - reconsume the current input character in the data state. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => '<' - ) - ); - - $this->char--; - $this->state = 'data'; - } - break; - } - } - - private function closeTagOpenState() - { - $next_node = strtolower($this->characters('A-Za-z', $this->char + 1)); - $the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName; - - if (($this->content_model === self::RCDATA || $this->content_model === self::CDATA) && - (!$the_same || ($the_same && (!preg_match( - '/[\t\n\x0b\x0c >\/]/', - $this->character($this->char + 1 + strlen($next_node)) - ) || $this->EOF === $this->char))) - ) { - /* If the content model flag is set to the RCDATA or CDATA states then - examine the next few characters. If they do not match the tag name of - the last start tag token emitted (case insensitively), or if they do but - they are not immediately followed by one of the following characters: - * U+0009 CHARACTER TABULATION - * U+000A LINE FEED (LF) - * U+000B LINE TABULATION - * U+000C FORM FEED (FF) - * U+0020 SPACE - * U+003E GREATER-THAN SIGN (>) - * U+002F SOLIDUS (/) - * EOF - ...then there is a parse error. Emit a U+003C LESS-THAN SIGN character - token, a U+002F SOLIDUS character token, and switch to the data state - to process the next input character. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => 'state = 'data'; - - } else { - /* Otherwise, if the content model flag is set to the PCDATA state, - or if the next few characters do match that tag name, consume the - next input character: */ - $this->char++; - $char = $this->char(); - - if (preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new end tag token, set its tag name to the lowercase version - of the input character (add 0x0020 to the character's code point), then - switch to the tag name state. (Don't emit the token yet; further details - will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::ENDTAG - ); - - $this->state = 'tagName'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Switch to the data state. */ - $this->state = 'data'; - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F - SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken( - array( - 'type' => self::CHARACTR, - 'data' => 'char--; - $this->state = 'data'; - - } else { - /* Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - } - } - } - - private function tagNameState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } elseif ($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } else { - /* Anything else - Append the current input character to the current tag token's tag name. - Stay in the tag name state. */ - $this->token['name'] .= strtolower($char); - $this->state = 'tagName'; - } - } - - private function beforeAttributeNameState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Stay in the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function attributeNameState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif ($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's name. - Stay in the attribute name state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['name'] .= strtolower($char); - - $this->state = 'attributeName'; - } - } - - private function afterAttributeNameState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the after attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif ($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the - before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function beforeAttributeValueState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif ($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the attribute value (double-quoted) state. */ - $this->state = 'attributeValueDoubleQuoted'; - - } elseif ($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the attribute value (unquoted) state and reconsume - this input character. */ - $this->char--; - $this->state = 'attributeValueUnquoted'; - - } elseif ($char === '\'') { - /* U+0027 APOSTROPHE (') - Switch to the attribute value (single-quoted) state. */ - $this->state = 'attributeValueSingleQuoted'; - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Switch to the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function attributeValueDoubleQuotedState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if ($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('double'); - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (double-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueDoubleQuoted'; - } - } - - private function attributeValueSingleQuotedState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if ($char === '\'') { - /* U+0022 QUOTATION MARK (') - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('single'); - - } elseif ($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (single-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueSingleQuoted'; - } - } - - private function attributeValueUnquotedState() - { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif ($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState(); - - } elseif ($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function entityInAttributeValueState() - { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, append a U+0026 AMPERSAND character to the - // current attribute's value. Otherwise, emit the character token that - // was returned. - $char = (!$entity) - ? '&' - : $entity; - - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - } - - private function bogusCommentState() - { - /* Consume every character up to the first U+003E GREATER-THAN SIGN - character (>) or the end of the file (EOF), whichever comes first. Emit - a comment token whose data is the concatenation of all the characters - starting from and including the character that caused the state machine - to switch into the bogus comment state, up to and including the last - consumed character before the U+003E character, if any, or up to the - end of the file otherwise. (If the comment was started by the end of - the file (EOF), the token is empty.) */ - $data = $this->characters('^>', $this->char); - $this->emitToken( - array( - 'data' => $data, - 'type' => self::COMMENT - ) - ); - - $this->char += strlen($data); - - /* Switch to the data state. */ - $this->state = 'data'; - - /* If the end of the file was reached, reconsume the EOF character. */ - if ($this->char === $this->EOF) { - $this->char = $this->EOF - 1; - } - } - - private function markupDeclarationOpenState() - { - /* If the next two characters are both U+002D HYPHEN-MINUS (-) - characters, consume those two characters, create a comment token whose - data is the empty string, and switch to the comment state. */ - if ($this->character($this->char + 1, 2) === '--') { - $this->char += 2; - $this->state = 'comment'; - $this->token = array( - 'data' => null, - 'type' => self::COMMENT - ); - - /* Otherwise if the next seven chacacters are a case-insensitive match - for the word "DOCTYPE", then consume those characters and switch to the - DOCTYPE state. */ - } elseif (strtolower($this->character($this->char + 1, 7)) === 'doctype') { - $this->char += 7; - $this->state = 'doctype'; - - /* Otherwise, is is a parse error. Switch to the bogus comment state. - The next character that is consumed, if any, is the first character - that will be in the comment. */ - } else { - $this->char++; - $this->state = 'bogusComment'; - } - } - - private function commentState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if ($char === '-') { - /* Switch to the comment dash state */ - $this->state = 'commentDash'; - - /* EOF */ - } elseif ($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append the input character to the comment token's data. Stay in - the comment state. */ - $this->token['data'] .= $char; - } - } - - private function commentDashState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if ($char === '-') { - /* Switch to the comment end state */ - $this->state = 'commentEnd'; - - /* EOF */ - } elseif ($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append a U+002D HYPHEN-MINUS (-) character and the input - character to the comment token's data. Switch to the comment state. */ - $this->token['data'] .= '-' . $char; - $this->state = 'comment'; - } - } - - private function commentEndState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if ($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($char === '-') { - $this->token['data'] .= '-'; - - } elseif ($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['data'] .= '--' . $char; - $this->state = 'comment'; - } - } - - private function doctypeState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'beforeDoctypeName'; - - } else { - $this->char--; - $this->state = 'beforeDoctypeName'; - } - } - - private function beforeDoctypeNameState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the before DOCTYPE name state. - - } elseif (preg_match('/^[a-z]$/', $char)) { - $this->token = array( - 'name' => strtoupper($char), - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - - } elseif ($char === '>') { - $this->emitToken( - array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - ) - ); - - $this->state = 'data'; - - } elseif ($this->char === $this->EOF) { - $this->emitToken( - array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - ) - ); - - $this->char--; - $this->state = 'data'; - - } else { - $this->token = array( - 'name' => $char, - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - } - } - - private function doctypeNameState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'AfterDoctypeName'; - - } elseif ($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif (preg_match('/^[a-z]$/', $char)) { - $this->token['name'] .= strtoupper($char); - - } elseif ($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['name'] .= $char; - } - - $this->token['error'] = ($this->token['name'] === 'HTML') - ? false - : true; - } - - private function afterDoctypeNameState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if (preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the DOCTYPE name state. - - } elseif ($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['error'] = true; - $this->state = 'bogusDoctype'; - } - } - - private function bogusDoctypeState() - { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if ($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif ($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - // Stay in the bogus DOCTYPE state. - } - } - - private function entity() - { - $start = $this->char; - - // This section defines how to consume an entity. This definition is - // used when parsing entities in text and in attributes. - - // The behaviour depends on the identity of the next character (the - // one immediately after the U+0026 AMPERSAND character): - - switch ($this->character($this->char + 1)) { - // U+0023 NUMBER SIGN (#) - case '#': - - // The behaviour further depends on the character after the - // U+0023 NUMBER SIGN: - switch ($this->character($this->char + 1)) { - // U+0078 LATIN SMALL LETTER X - // U+0058 LATIN CAPITAL LETTER X - case 'x': - case 'X': - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE, U+0061 LATIN SMALL LETTER A through to U+0066 - // LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER - // A, through to U+0046 LATIN CAPITAL LETTER F (in other - // words, 0-9, A-F, a-f). - $char = 1; - $char_class = '0-9A-Fa-f'; - break; - - // Anything else - default: - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE (i.e. just 0-9). - $char = 0; - $char_class = '0-9'; - break; - } - - // Consume as many characters as match the range of characters - // given above. - $this->char++; - $e_name = $this->characters($char_class, $this->char + $char + 1); - $entity = $this->character($start, $this->char); - $cond = strlen($e_name) > 0; - - // The rest of the parsing happens below. - break; - - // Anything else - default: - // Consume the maximum number of characters possible, with the - // consumed characters case-sensitively matching one of the - // identifiers in the first column of the entities table. - - $e_name = $this->characters('0-9A-Za-z;', $this->char + 1); - $len = strlen($e_name); - - for ($c = 1; $c <= $len; $c++) { - $id = substr($e_name, 0, $c); - $this->char++; - - if (in_array($id, $this->entities)) { - if ($e_name[$c - 1] !== ';') { - if ($c < $len && $e_name[$c] == ';') { - $this->char++; // consume extra semicolon - } - } - $entity = $id; - break; - } - } - - $cond = isset($entity); - // The rest of the parsing happens below. - break; - } - - if (!$cond) { - // If no match can be made, then this is a parse error. No - // characters are consumed, and nothing is returned. - $this->char = $start; - return false; - } - - // Return a character token for the character corresponding to the - // entity name (as given by the second column of the entities table). - return html_entity_decode('&' . rtrim($entity, ';') . ';', ENT_QUOTES, 'UTF-8'); - } - - private function emitToken($token) - { - $emit = $this->tree->emitToken($token); - - if (is_int($emit)) { - $this->content_model = $emit; - - } elseif ($token['type'] === self::ENDTAG) { - $this->content_model = self::PCDATA; - } - } - - private function EOF() - { - $this->state = null; - $this->tree->emitToken( - array( - 'type' => self::EOF - ) - ); - } -} - -class HTML5TreeConstructer -{ - public $stack = array(); - - private $phase; - private $mode; - private $dom; - private $foster_parent = null; - private $a_formatting = array(); - - private $head_pointer = null; - private $form_pointer = null; - - private $scoping = array('button', 'caption', 'html', 'marquee', 'object', 'table', 'td', 'th'); - private $formatting = array( - 'a', - 'b', - 'big', - 'em', - 'font', - 'i', - 'nobr', - 's', - 'small', - 'strike', - 'strong', - 'tt', - 'u' - ); - private $special = array( - 'address', - 'area', - 'base', - 'basefont', - 'bgsound', - 'blockquote', - 'body', - 'br', - 'center', - 'col', - 'colgroup', - 'dd', - 'dir', - 'div', - 'dl', - 'dt', - 'embed', - 'fieldset', - 'form', - 'frame', - 'frameset', - 'h1', - 'h2', - 'h3', - 'h4', - 'h5', - 'h6', - 'head', - 'hr', - 'iframe', - 'image', - 'img', - 'input', - 'isindex', - 'li', - 'link', - 'listing', - 'menu', - 'meta', - 'noembed', - 'noframes', - 'noscript', - 'ol', - 'optgroup', - 'option', - 'p', - 'param', - 'plaintext', - 'pre', - 'script', - 'select', - 'spacer', - 'style', - 'tbody', - 'textarea', - 'tfoot', - 'thead', - 'title', - 'tr', - 'ul', - 'wbr' - ); - - // The different phases. - const INIT_PHASE = 0; - const ROOT_PHASE = 1; - const MAIN_PHASE = 2; - const END_PHASE = 3; - - // The different insertion modes for the main phase. - const BEFOR_HEAD = 0; - const IN_HEAD = 1; - const AFTER_HEAD = 2; - const IN_BODY = 3; - const IN_TABLE = 4; - const IN_CAPTION = 5; - const IN_CGROUP = 6; - const IN_TBODY = 7; - const IN_ROW = 8; - const IN_CELL = 9; - const IN_SELECT = 10; - const AFTER_BODY = 11; - const IN_FRAME = 12; - const AFTR_FRAME = 13; - - // The different types of elements. - const SPECIAL = 0; - const SCOPING = 1; - const FORMATTING = 2; - const PHRASING = 3; - - const MARKER = 0; - - public function __construct() - { - $this->phase = self::INIT_PHASE; - $this->mode = self::BEFOR_HEAD; - $this->dom = new DOMDocument; - - $this->dom->encoding = 'UTF-8'; - $this->dom->preserveWhiteSpace = true; - $this->dom->substituteEntities = true; - $this->dom->strictErrorChecking = false; - } - - // Process tag tokens - public function emitToken($token) - { - switch ($this->phase) { - case self::INIT_PHASE: - return $this->initPhase($token); - break; - case self::ROOT_PHASE: - return $this->rootElementPhase($token); - break; - case self::MAIN_PHASE: - return $this->mainPhase($token); - break; - case self::END_PHASE : - return $this->trailingEndPhase($token); - break; - } - } - - private function initPhase($token) - { - /* Initially, the tree construction stage must handle each token - emitted from the tokenisation stage as follows: */ - - /* A DOCTYPE token that is marked as being in error - A comment token - A start tag token - An end tag token - A character token that is not one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE - An end-of-file token */ - if ((isset($token['error']) && $token['error']) || - $token['type'] === HTML5::COMMENT || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF || - ($token['type'] === HTML5::CHARACTR && isset($token['data']) && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) - ) { - /* This specification does not define how to handle this case. In - particular, user agents may ignore the entirety of this specification - altogether for such documents, and instead invoke special parse modes - with a greater emphasis on backwards compatibility. */ - - $this->phase = self::ROOT_PHASE; - return $this->rootElementPhase($token); - - /* A DOCTYPE token marked as being correct */ - } elseif (isset($token['error']) && !$token['error']) { - /* Append a DocumentType node to the Document node, with the name - attribute set to the name given in the DOCTYPE token (which will be - "HTML"), and the other attributes specific to DocumentType objects - set to null, empty lists, or the empty string as appropriate. */ - $doctype = new DOMDocumentType(null, null, 'HTML'); - - /* Then, switch to the root element phase of the tree construction - stage. */ - $this->phase = self::ROOT_PHASE; - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif (isset($token['data']) && preg_match( - '/^[\t\n\x0b\x0c ]+$/', - $token['data'] - ) - ) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - } - } - - private function rootElementPhase($token) - { - /* After the initial phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if ($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED - (FF), or U+0020 SPACE - A start tag token - An end tag token - An end-of-file token */ - } elseif (($token['type'] === HTML5::CHARACTR && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF - ) { - /* Create an HTMLElement node with the tag name html, in the HTML - namespace. Append it to the Document object. Switch to the main - phase and reprocess the current token. */ - $html = $this->dom->createElement('html'); - $this->dom->appendChild($html); - $this->stack[] = $html; - - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - } - } - - private function mainPhase($token) - { - /* Tokens in the main phase must be handled as follows: */ - - /* A DOCTYPE token */ - if ($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A start tag token with the tag name "html" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') { - /* If this start tag token was not the first start tag token, then - it is a parse error. */ - - /* For each attribute on the token, check to see if the attribute - is already present on the top element of the stack of open elements. - If it is not, add the attribute and its corresponding value to that - element. */ - foreach ($token['attr'] as $attr) { - if (!$this->stack[0]->hasAttribute($attr['name'])) { - $this->stack[0]->setAttribute($attr['name'], $attr['value']); - } - } - - /* An end-of-file token */ - } elseif ($token['type'] === HTML5::EOF) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Anything else. */ - } else { - /* Depends on the insertion mode: */ - switch ($this->mode) { - case self::BEFOR_HEAD: - return $this->beforeHead($token); - break; - case self::IN_HEAD: - return $this->inHead($token); - break; - case self::AFTER_HEAD: - return $this->afterHead($token); - break; - case self::IN_BODY: - return $this->inBody($token); - break; - case self::IN_TABLE: - return $this->inTable($token); - break; - case self::IN_CAPTION: - return $this->inCaption($token); - break; - case self::IN_CGROUP: - return $this->inColumnGroup($token); - break; - case self::IN_TBODY: - return $this->inTableBody($token); - break; - case self::IN_ROW: - return $this->inRow($token); - break; - case self::IN_CELL: - return $this->inCell($token); - break; - case self::IN_SELECT: - return $this->inSelect($token); - break; - case self::AFTER_BODY: - return $this->afterBody($token); - break; - case self::IN_FRAME: - return $this->inFrameset($token); - break; - case self::AFTR_FRAME: - return $this->afterFrameset($token); - break; - case self::END_PHASE: - return $this->trailingEndPhase($token); - break; - } - } - } - - private function beforeHead($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "head" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') { - /* Create an element for the token, append the new element to the - current node and push it onto the stack of open elements. */ - $element = $this->insertElement($token); - - /* Set the head element pointer to this new element node. */ - $this->head_pointer = $element; - - /* Change the insertion mode to "in head". */ - $this->mode = self::IN_HEAD; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title". Or an end tag with the tag name "html". - Or a character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or any other start tag token */ - } elseif ($token['type'] === HTML5::STARTTAG || - ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') || - ($token['type'] === HTML5::CHARACTR && !preg_match( - '/^[\t\n\x0b\x0c ]$/', - $token['data'] - )) - ) { - /* Act as if a start tag token with the tag name "head" and no - attributes had been seen, then reprocess the current token. */ - $this->beforeHead( - array( - 'name' => 'head', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - return $this->inHead($token); - - /* Any other end tag */ - } elseif ($token['type'] === HTML5::ENDTAG) { - /* Parse error. Ignore the token. */ - } - } - - private function inHead($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. - - THIS DIFFERS FROM THE SPEC: If the current node is either a title, style - or script element, append the character to the current node regardless - of its content. */ - if (($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || ( - $token['type'] === HTML5::CHARACTR && in_array( - end($this->stack)->nodeName, - array('title', 'style', 'script') - )) - ) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - } elseif ($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('title', 'style', 'script')) - ) { - array_pop($this->stack); - return HTML5::PCDATA; - - /* A start tag with the tag name "title" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if ($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $element = $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the RCDATA state. */ - return HTML5::RCDATA; - - /* A start tag with the tag name "style" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if ($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "script" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') { - /* Create an element for the token. */ - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "base", "link", or "meta" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array('base', 'link', 'meta') - ) - ) { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if ($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - array_pop($this->stack); - - } else { - $this->insertElement($token); - } - - /* An end tag with the tag name "head" */ - } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') { - /* If the current node is a head element, pop the current node off - the stack of open elements. */ - if ($this->head_pointer->isSameNode(end($this->stack))) { - array_pop($this->stack); - - /* Otherwise, this is a parse error. */ - } else { - // k - } - - /* Change the insertion mode to "after head". */ - $this->mode = self::AFTER_HEAD; - - /* A start tag with the tag name "head" or an end tag except "html". */ - } elseif (($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') || - ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html') - ) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* If the current node is a head element, act as if an end tag - token with the tag name "head" had been seen. */ - if ($this->head_pointer->isSameNode(end($this->stack))) { - $this->inHead( - array( - 'name' => 'head', - 'type' => HTML5::ENDTAG - ) - ); - - /* Otherwise, change the insertion mode to "after head". */ - } else { - $this->mode = self::AFTER_HEAD; - } - - /* Then, reprocess the current token. */ - return $this->afterHead($token); - } - } - - private function afterHead($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "body" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') { - /* Insert a body element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in body". */ - $this->mode = self::IN_BODY; - - /* A start tag token with the tag name "frameset" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') { - /* Insert a frameset element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in frameset". */ - $this->mode = self::IN_FRAME; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array('base', 'link', 'meta', 'script', 'style', 'title') - ) - ) { - /* Parse error. Switch the insertion mode back to "in head" and - reprocess the token. */ - $this->mode = self::IN_HEAD; - return $this->inHead($token); - - /* Anything else */ - } else { - /* Act as if a start tag token with the tag name "body" and no - attributes had been seen, and then reprocess the current token. */ - $this->afterHead( - array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - return $this->inBody($token); - } - } - - private function inBody($token) - { - /* Handle the token as follows: */ - - switch ($token['type']) { - /* A character token */ - case HTML5::CHARACTR: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - break; - - /* A comment token */ - case HTML5::COMMENT: - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - break; - - case HTML5::STARTTAG: - switch ($token['name']) { - /* A start tag token whose tag name is one of: "script", - "style" */ - case 'script': - case 'style': - /* Process the token as if the insertion mode had been "in - head". */ - return $this->inHead($token); - break; - - /* A start tag token whose tag name is one of: "base", "link", - "meta", "title" */ - case 'base': - case 'link': - case 'meta': - case 'title': - /* Parse error. Process the token as if the insertion mode - had been "in head". */ - return $this->inHead($token); - break; - - /* A start tag token with the tag name "body" */ - case 'body': - /* Parse error. If the second element on the stack of open - elements is not a body element, or, if the stack of open - elements has only one node on it, then ignore the token. - (innerHTML case) */ - if (count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') { - // Ignore - - /* Otherwise, for each attribute on the token, check to see - if the attribute is already present on the body element (the - second element) on the stack of open elements. If it is not, - add the attribute and its corresponding value to that - element. */ - } else { - foreach ($token['attr'] as $attr) { - if (!$this->stack[1]->hasAttribute($attr['name'])) { - $this->stack[1]->setAttribute($attr['name'], $attr['value']); - } - } - } - break; - - /* A start tag whose tag name is one of: "address", - "blockquote", "center", "dir", "div", "dl", "fieldset", - "listing", "menu", "ol", "p", "ul" */ - case 'address': - case 'blockquote': - case 'center': - case 'dir': - case 'div': - case 'dl': - case 'fieldset': - case 'listing': - case 'menu': - case 'ol': - case 'p': - case 'ul': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "form" */ - case 'form': - /* If the form element pointer is not null, ignore the - token with a parse error. */ - if ($this->form_pointer !== null) { - // Ignore. - - /* Otherwise: */ - } else { - /* If the stack of open elements has a p element in - scope, then act as if an end tag with the tag name p - had been seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token, and set the - form element pointer to point to the element created. */ - $element = $this->insertElement($token); - $this->form_pointer = $element; - } - break; - - /* A start tag whose tag name is "li", "dd" or "dt" */ - case 'li': - case 'dd': - case 'dt': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - $stack_length = count($this->stack) - 1; - - for ($n = $stack_length; 0 <= $n; $n--) { - /* 1. Initialise node to be the current node (the - bottommost node of the stack). */ - $stop = false; - $node = $this->stack[$n]; - $cat = $this->getElementCategory($node->tagName); - - /* 2. If node is an li, dd or dt element, then pop all - the nodes from the current node up to node, including - node, then stop this algorithm. */ - if ($token['name'] === $node->tagName || ($token['name'] !== 'li' - && ($node->tagName === 'dd' || $node->tagName === 'dt')) - ) { - for ($x = $stack_length; $x >= $n; $x--) { - array_pop($this->stack); - } - - break; - } - - /* 3. If node is not in the formatting category, and is - not in the phrasing category, and is not an address or - div element, then stop this algorithm. */ - if ($cat !== self::FORMATTING && $cat !== self::PHRASING && - $node->tagName !== 'address' && $node->tagName !== 'div' - ) { - break; - } - } - - /* Finally, insert an HTML element with the same tag - name as the token's. */ - $this->insertElement($token); - break; - - /* A start tag token whose tag name is "plaintext" */ - case 'plaintext': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - return HTML5::PLAINTEXT; - break; - - /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': - case 'h2': - case 'h3': - case 'h4': - case 'h5': - case 'h6': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - this is a parse error; pop elements from the stack until an - element with one of those tag names has been popped from the - stack. */ - while ($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) { - array_pop($this->stack); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "a" */ - case 'a': - /* If the list of active formatting elements contains - an element whose tag name is "a" between the end of the - list and the last marker on the list (or the start of - the list if there is no marker on the list), then this - is a parse error; act as if an end tag with the tag name - "a" had been seen, then remove that element from the list - of active formatting elements and the stack of open - elements if the end tag didn't already remove it (it - might not have if the element is not in table scope). */ - $leng = count($this->a_formatting); - - for ($n = $leng - 1; $n >= 0; $n--) { - if ($this->a_formatting[$n] === self::MARKER) { - break; - - } elseif ($this->a_formatting[$n]->nodeName === 'a') { - $this->emitToken( - array( - 'name' => 'a', - 'type' => HTML5::ENDTAG - ) - ); - break; - } - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag whose tag name is one of: "b", "big", "em", "font", - "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'b': - case 'big': - case 'em': - case 'font': - case 'i': - case 'nobr': - case 's': - case 'small': - case 'strike': - case 'strong': - case 'tt': - case 'u': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag token whose tag name is "button" */ - case 'button': - /* If the stack of open elements has a button element in scope, - then this is a parse error; act as if an end tag with the tag - name "button" had been seen, then reprocess the token. (We don't - do that. Unnecessary.) */ - if ($this->elementInScope('button')) { - $this->inBody( - array( - 'name' => 'button', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is one of: "marquee", "object" */ - case 'marquee': - case 'object': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is "xmp" */ - case 'xmp': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Switch the content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "table" */ - case 'table': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - break; - - /* A start tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */ - case 'area': - case 'basefont': - case 'bgsound': - case 'br': - case 'embed': - case 'img': - case 'param': - case 'spacer': - case 'wbr': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "hr" */ - case 'hr': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if ($this->elementInScope('p')) { - $this->emitToken( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "image" */ - case 'image': - /* Parse error. Change the token's tag name to "img" and - reprocess it. (Don't ask.) */ - $token['name'] = 'img'; - return $this->inBody($token); - break; - - /* A start tag whose tag name is "input" */ - case 'input': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an input element for the token. */ - $element = $this->insertElement($token, false); - - /* If the form element pointer is not null, then associate the - input element with the form element pointed to by the form - element pointer. */ - $this->form_pointer !== null - ? $this->form_pointer->appendChild($element) - : end($this->stack)->appendChild($element); - - /* Pop that input element off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "isindex" */ - case 'isindex': - /* Parse error. */ - // w/e - - /* If the form element pointer is not null, - then ignore the token. */ - if ($this->form_pointer === null) { - /* Act as if a start tag token with the tag name "form" had - been seen. */ - $this->inBody( - array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody( - array( - 'name' => 'hr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - /* Act as if a start tag token with the tag name "p" had - been seen. */ - $this->inBody( - array( - 'name' => 'p', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - /* Act as if a start tag token with the tag name "label" - had been seen. */ - $this->inBody( - array( - 'name' => 'label', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - /* Act as if a stream of character tokens had been seen. */ - $this->insertText( - 'This is a searchable index. ' . - 'Insert your search keywords here: ' - ); - - /* Act as if a start tag token with the tag name "input" - had been seen, with all the attributes from the "isindex" - token, except with the "name" attribute set to the value - "isindex" (ignoring any explicit "name" attribute). */ - $attr = $token['attr']; - $attr[] = array('name' => 'name', 'value' => 'isindex'); - - $this->inBody( - array( - 'name' => 'input', - 'type' => HTML5::STARTTAG, - 'attr' => $attr - ) - ); - - /* Act as if a stream of character tokens had been seen - (see below for what they should say). */ - $this->insertText( - 'This is a searchable index. ' . - 'Insert your search keywords here: ' - ); - - /* Act as if an end tag token with the tag name "label" - had been seen. */ - $this->inBody( - array( - 'name' => 'label', - 'type' => HTML5::ENDTAG - ) - ); - - /* Act as if an end tag token with the tag name "p" had - been seen. */ - $this->inBody( - array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - ) - ); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody( - array( - 'name' => 'hr', - 'type' => HTML5::ENDTAG - ) - ); - - /* Act as if an end tag token with the tag name "form" had - been seen. */ - $this->inBody( - array( - 'name' => 'form', - 'type' => HTML5::ENDTAG - ) - ); - } - break; - - /* A start tag whose tag name is "textarea" */ - case 'textarea': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the - RCDATA state. */ - return HTML5::RCDATA; - break; - - /* A start tag whose tag name is one of: "iframe", "noembed", - "noframes" */ - case 'iframe': - case 'noembed': - case 'noframes': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "select" */ - case 'select': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in select". */ - $this->mode = self::IN_SELECT; - break; - - /* A start or end tag whose tag name is one of: "caption", "col", - "colgroup", "frame", "frameset", "head", "option", "optgroup", - "tbody", "td", "tfoot", "th", "thead", "tr". */ - case 'caption': - case 'col': - case 'colgroup': - case 'frame': - case 'frameset': - case 'head': - case 'option': - case 'optgroup': - case 'tbody': - case 'td': - case 'tfoot': - case 'th': - case 'thead': - case 'tr': - // Parse error. Ignore the token. - break; - - /* A start or end tag whose tag name is one of: "event-source", - "section", "nav", "article", "aside", "header", "footer", - "datagrid", "command" */ - case 'event-source': - case 'section': - case 'nav': - case 'article': - case 'aside': - case 'header': - case 'footer': - case 'datagrid': - case 'command': - // Work in progress! - break; - - /* A start tag token not covered by the previous entries */ - default: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - $this->insertElement($token, true, true); - break; - } - break; - - case HTML5::ENDTAG: - switch ($token['name']) { - /* An end tag with the tag name "body" */ - case 'body': - /* If the second element in the stack of open elements is - not a body element, this is a parse error. Ignore the token. - (innerHTML case) */ - if (count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') { - // Ignore. - - /* If the current node is not the body element, then this - is a parse error. */ - } elseif (end($this->stack)->nodeName !== 'body') { - // Parse error. - } - - /* Change the insertion mode to "after body". */ - $this->mode = self::AFTER_BODY; - break; - - /* An end tag with the tag name "html" */ - case 'html': - /* Act as if an end tag with tag name "body" had been seen, - then, if that token wasn't ignored, reprocess the current - token. */ - $this->inBody( - array( - 'name' => 'body', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->afterBody($token); - break; - - /* An end tag whose tag name is one of: "address", "blockquote", - "center", "dir", "div", "dl", "fieldset", "listing", "menu", - "ol", "pre", "ul" */ - case 'address': - case 'blockquote': - case 'center': - case 'dir': - case 'div': - case 'dl': - case 'fieldset': - case 'listing': - case 'menu': - case 'ol': - case 'pre': - case 'ul': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with - the same tag name as that of the token, then this - is a parse error. */ - // w/e - - /* If the stack of open elements has an element in - scope with the same tag name as that of the token, - then pop elements from this stack until an element - with that tag name has been popped from the stack. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is "form" */ - case 'form': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - } - - if (end($this->stack)->nodeName !== $token['name']) { - /* Now, if the current node is not an element with the - same tag name as that of the token, then this is a parse - error. */ - // w/e - - } else { - /* Otherwise, if the current node is an element with - the same tag name as that of the token pop that element - from the stack. */ - array_pop($this->stack); - } - - /* In any case, set the form element pointer to null. */ - $this->form_pointer = null; - break; - - /* An end tag whose tag name is "p" */ - case 'p': - /* If the stack of open elements has a p element in scope, - then generate implied end tags, except for p elements. */ - if ($this->elementInScope('p')) { - $this->generateImpliedEndTags(array('p')); - - /* If the current node is not a p element, then this is - a parse error. */ - // k - - /* If the stack of open elements has a p element in - scope, then pop elements from this stack until the stack - no longer has a p element in scope. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->elementInScope('p')) { - array_pop($this->stack); - - } else { - break; - } - } - } - break; - - /* An end tag whose tag name is "dd", "dt", or "li" */ - case 'dd': - case 'dt': - case 'li': - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - generate implied end tags, except for elements with the - same tag name as the token. */ - if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); - - /* If the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - pop elements from this stack until an element with that - tag name has been popped from the stack. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': - case 'h2': - case 'h3': - case 'h4': - case 'h5': - case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - generate implied end tags. */ - if ($this->elementInScope($elements)) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as that of the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has in scope an element - whose tag name is one of "h1", "h2", "h3", "h4", "h5", or - "h6", then pop elements from the stack until an element - with one of those tag names has been popped from the stack. */ - while ($this->elementInScope($elements)) { - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "a", "b", "big", "em", - "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'a': - case 'b': - case 'big': - case 'em': - case 'font': - case 'i': - case 'nobr': - case 's': - case 'small': - case 'strike': - case 'strong': - case 'tt': - case 'u': - /* 1. Let the formatting element be the last element in - the list of active formatting elements that: - * is between the end of the list and the last scope - marker in the list, if any, or the start of the list - otherwise, and - * has the same tag name as the token. - */ - while (true) { - for ($a = count($this->a_formatting) - 1; $a >= 0; $a--) { - if ($this->a_formatting[$a] === self::MARKER) { - break; - - } elseif ($this->a_formatting[$a]->tagName === $token['name']) { - $formatting_element = $this->a_formatting[$a]; - $in_stack = in_array($formatting_element, $this->stack, true); - $fe_af_pos = $a; - break; - } - } - - /* If there is no such node, or, if that node is - also in the stack of open elements but the element - is not in scope, then this is a parse error. Abort - these steps. The token is ignored. */ - if (!isset($formatting_element) || ($in_stack && - !$this->elementInScope($token['name'])) - ) { - break; - - /* Otherwise, if there is such a node, but that node - is not in the stack of open elements, then this is a - parse error; remove the element from the list, and - abort these steps. */ - } elseif (isset($formatting_element) && !$in_stack) { - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 2. Let the furthest block be the topmost node in the - stack of open elements that is lower in the stack - than the formatting element, and is not an element in - the phrasing or formatting categories. There might - not be one. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $length = count($this->stack); - - for ($s = $fe_s_pos + 1; $s < $length; $s++) { - $category = $this->getElementCategory($this->stack[$s]->nodeName); - - if ($category !== self::PHRASING && $category !== self::FORMATTING) { - $furthest_block = $this->stack[$s]; - } - } - - /* 3. If there is no furthest block, then the UA must - skip the subsequent steps and instead just pop all - the nodes from the bottom of the stack of open - elements, from the current node up to the formatting - element, and remove the formatting element from the - list of active formatting elements. */ - if (!isset($furthest_block)) { - for ($n = $length - 1; $n >= $fe_s_pos; $n--) { - array_pop($this->stack); - } - - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 4. Let the common ancestor be the element - immediately above the formatting element in the stack - of open elements. */ - $common_ancestor = $this->stack[$fe_s_pos - 1]; - - /* 5. If the furthest block has a parent node, then - remove the furthest block from its parent node. */ - if ($furthest_block->parentNode !== null) { - $furthest_block->parentNode->removeChild($furthest_block); - } - - /* 6. Let a bookmark note the position of the - formatting element in the list of active formatting - elements relative to the elements on either side - of it in the list. */ - $bookmark = $fe_af_pos; - - /* 7. Let node and last node be the furthest block. - Follow these steps: */ - $node = $furthest_block; - $last_node = $furthest_block; - - while (true) { - for ($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) { - /* 7.1 Let node be the element immediately - prior to node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 7.2 If node is not in the list of active - formatting elements, then remove node from - the stack of open elements and then go back - to step 1. */ - if (!in_array($node, $this->a_formatting, true)) { - unset($this->stack[$n]); - $this->stack = array_merge($this->stack); - - } else { - break; - } - } - - /* 7.3 Otherwise, if node is the formatting - element, then go to the next step in the overall - algorithm. */ - if ($node === $formatting_element) { - break; - - /* 7.4 Otherwise, if last node is the furthest - block, then move the aforementioned bookmark to - be immediately after the node in the list of - active formatting elements. */ - } elseif ($last_node === $furthest_block) { - $bookmark = array_search($node, $this->a_formatting, true) + 1; - } - - /* 7.5 If node has any children, perform a - shallow clone of node, replace the entry for - node in the list of active formatting elements - with an entry for the clone, replace the entry - for node in the stack of open elements with an - entry for the clone, and let node be the clone. */ - if ($node->hasChildNodes()) { - $clone = $node->cloneNode(); - $s_pos = array_search($node, $this->stack, true); - $a_pos = array_search($node, $this->a_formatting, true); - - $this->stack[$s_pos] = $clone; - $this->a_formatting[$a_pos] = $clone; - $node = $clone; - } - - /* 7.6 Insert last node into node, first removing - it from its previous parent node if any. */ - if ($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $node->appendChild($last_node); - - /* 7.7 Let last node be node. */ - $last_node = $node; - } - - /* 8. Insert whatever last node ended up being in - the previous step into the common ancestor node, - first removing it from its previous parent node if - any. */ - if ($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $common_ancestor->appendChild($last_node); - - /* 9. Perform a shallow clone of the formatting - element. */ - $clone = $formatting_element->cloneNode(); - - /* 10. Take all of the child nodes of the furthest - block and append them to the clone created in the - last step. */ - while ($furthest_block->hasChildNodes()) { - $child = $furthest_block->firstChild; - $furthest_block->removeChild($child); - $clone->appendChild($child); - } - - /* 11. Append that clone to the furthest block. */ - $furthest_block->appendChild($clone); - - /* 12. Remove the formatting element from the list - of active formatting elements, and insert the clone - into the list of active formatting elements at the - position of the aforementioned bookmark. */ - $fe_af_pos = array_search($formatting_element, $this->a_formatting, true); - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - - $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); - $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting)); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); - - /* 13. Remove the formatting element from the stack - of open elements, and insert the clone into the stack - of open elements immediately after (i.e. in a more - deeply nested position than) the position of the - furthest block in that stack. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $fb_s_pos = array_search($furthest_block, $this->stack, true); - unset($this->stack[$fe_s_pos]); - - $s_part1 = array_slice($this->stack, 0, $fb_s_pos); - $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack)); - $this->stack = array_merge($s_part1, array($clone), $s_part2); - - /* 14. Jump back to step 1 in this series of steps. */ - unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); - } - break; - - /* An end tag token whose tag name is one of: "button", - "marquee", "object" */ - case 'button': - case 'marquee': - case 'object': - /* If the stack of open elements has an element in scope whose - tag name matches the tag name of the token, then generate implied - tags. */ - if ($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // k - - /* Now, if the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then pop - elements from the stack until that element has been popped from - the stack, and clear the list of active formatting elements up - to the last marker. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - - $marker = end(array_keys($this->a_formatting, self::MARKER, true)); - - for ($n = count($this->a_formatting) - 1; $n > $marker; $n--) { - array_pop($this->a_formatting); - } - } - break; - - /* Or an end tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "hr", "iframe", "image", "img", - "input", "isindex", "noembed", "noframes", "param", "select", - "spacer", "table", "textarea", "wbr" */ - case 'area': - case 'basefont': - case 'bgsound': - case 'br': - case 'embed': - case 'hr': - case 'iframe': - case 'image': - case 'img': - case 'input': - case 'isindex': - case 'noembed': - case 'noframes': - case 'param': - case 'select': - case 'spacer': - case 'table': - case 'textarea': - case 'wbr': - // Parse error. Ignore the token. - break; - - /* An end tag token not covered by the previous entries */ - default: - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - /* Initialise node to be the current node (the bottommost - node of the stack). */ - $node = end($this->stack); - - /* If node has the same tag name as the end tag token, - then: */ - if ($token['name'] === $node->nodeName) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* If the tag name of the end tag token does not - match the tag name of the current node, this is a - parse error. */ - // k - - /* Pop all the nodes from the current node up to - node, including node, then stop this algorithm. */ - for ($x = count($this->stack) - $n; $x >= $n; $x--) { - array_pop($this->stack); - } - - } else { - $category = $this->getElementCategory($node); - - if ($category !== self::SPECIAL && $category !== self::SCOPING) { - /* Otherwise, if node is in neither the formatting - category nor the phrasing category, then this is a - parse error. Stop this algorithm. The end tag token - is ignored. */ - return false; - } - } - } - break; - } - break; - } - } - - private function inTable($token) - { - $clear = array('html', 'table'); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "caption" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'caption' - ) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - - /* Insert an HTML element for the token, then switch the - insertion mode to "in caption". */ - $this->insertElement($token); - $this->mode = self::IN_CAPTION; - - /* A start tag whose tag name is "colgroup" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'colgroup' - ) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the - insertion mode to "in column group". */ - $this->insertElement($token); - $this->mode = self::IN_CGROUP; - - /* A start tag whose tag name is "col" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'col' - ) { - $this->inTable( - array( - 'name' => 'colgroup', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - $this->inColumnGroup($token); - - /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array('tbody', 'tfoot', 'thead') - ) - ) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in table body". */ - $this->insertElement($token); - $this->mode = self::IN_TBODY; - - /* A start tag whose tag name is one of: "td", "th", "tr" */ - } elseif ($token['type'] === HTML5::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr')) - ) { - /* Act as if a start tag token with the tag name "tbody" had been - seen, then reprocess the current token. */ - $this->inTable( - array( - 'name' => 'tbody', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - return $this->inTableBody($token); - - /* A start tag whose tag name is "table" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'table' - ) { - /* Parse error. Act as if an end tag token with the tag name "table" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inTable( - array( - 'name' => 'table', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->mainPhase($token); - - /* An end tag whose tag name is "table" */ - } elseif ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table' - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if (!$this->elementInScope($token['name'], true)) { - return false; - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a table element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a table element has been - popped from the stack. */ - while (true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if ($current === 'table') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array( - 'body', - 'caption', - 'col', - 'colgroup', - 'html', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'tr' - ) - ) - ) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Parse error. Process the token as if the insertion mode was "in - body", with the following exception: */ - - /* If the current node is a table, tbody, tfoot, thead, or tr - element, then, whenever a node would be inserted into the current - node, it must instead be inserted into the foster parent element. */ - if (in_array( - end($this->stack)->nodeName, - array('table', 'tbody', 'tfoot', 'thead', 'tr') - ) - ) { - /* The foster parent element is the parent element of the last - table element in the stack of open elements, if there is a - table element and it has such a parent element. If there is no - table element in the stack of open elements (innerHTML case), - then the foster parent element is the first element in the - stack of open elements (the html element). Otherwise, if there - is a table element in the stack of open elements, but the last - table element in the stack of open elements has no parent, or - its parent node is not an element, then the foster parent - element is the element before the last table element in the - stack of open elements. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->stack[$n]->nodeName === 'table') { - $table = $this->stack[$n]; - break; - } - } - - if (isset($table) && $table->parentNode !== null) { - $this->foster_parent = $table->parentNode; - - } elseif (!isset($table)) { - $this->foster_parent = $this->stack[0]; - - } elseif (isset($table) && ($table->parentNode === null || - $table->parentNode->nodeType !== XML_ELEMENT_NODE) - ) { - $this->foster_parent = $this->stack[$n - 1]; - } - } - - $this->inBody($token); - } - } - - private function inCaption($token) - { - /* An end tag whose tag name is "caption" */ - if ($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a caption element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a caption element has - been popped from the stack. */ - while (true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if ($node === 'caption') { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag - name is "table" */ - } elseif (($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array( - 'caption', - 'col', - 'colgroup', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'tr' - ) - )) || ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table') - ) { - /* Parse error. Act as if an end tag with the tag name "caption" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inCaption( - array( - 'name' => 'caption', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->inTable($token); - - /* An end tag whose tag name is one of: "body", "col", "colgroup", - "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array( - 'body', - 'col', - 'colgroup', - 'html', - 'tbody', - 'tfoot', - 'th', - 'thead', - 'tr' - ) - ) - ) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inColumnGroup($token) - { - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "col" */ - } elseif ($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') { - /* Insert a col element for the token. Immediately pop the current - node off the stack of open elements. */ - $this->insertElement($token); - array_pop($this->stack); - - /* An end tag whose tag name is "colgroup" */ - } elseif ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'colgroup' - ) { - /* If the current node is the root html element, then this is a - parse error, ignore the token. (innerHTML case) */ - if (end($this->stack)->nodeName === 'html') { - // Ignore - - /* Otherwise, pop the current node (which will be a colgroup - element) from the stack of open elements. Switch the insertion - mode to "in table". */ - } else { - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* An end tag whose tag name is "col" */ - } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Act as if an end tag with the tag name "colgroup" had been seen, - and then, if that token wasn't ignored, reprocess the current token. */ - $this->inColumnGroup( - array( - 'name' => 'colgroup', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->inTable($token); - } - } - - private function inTableBody($token) - { - $clear = array('tbody', 'tfoot', 'thead', 'html'); - - /* A start tag whose tag name is "tr" */ - if ($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Insert a tr element for the token, then switch the insertion - mode to "in row". */ - $this->insertElement($token); - $this->mode = self::IN_ROW; - - /* A start tag whose tag name is one of: "th", "td" */ - } elseif ($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td') - ) { - /* Parse error. Act as if a start tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inTableBody( - array( - 'name' => 'tr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - ) - ); - - return $this->inRow($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif ($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead')) - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node from the stack of open elements. Switch - the insertion mode to "in table". */ - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ - } elseif (($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead') - )) || - ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table') - ) { - /* If the stack of open elements does not have a tbody, thead, or - tfoot element in table scope, this is a parse error. Ignore the - token. (innerHTML case) */ - if (!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Act as if an end tag with the same tag name as the current - node ("tbody", "tfoot", or "thead") had been seen, then - reprocess the current token. */ - $this->inTableBody( - array( - 'name' => end($this->stack)->nodeName, - 'type' => HTML5::ENDTAG - ) - ); - - return $this->mainPhase($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th", "tr" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr') - ) - ) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inRow($token) - { - $clear = array('tr', 'html'); - - /* A start tag whose tag name is one of: "th", "td" */ - if ($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td') - ) { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in cell". */ - $this->insertElement($token); - $this->mode = self::IN_CELL; - - /* Insert a marker at the end of the list of active formatting - elements. */ - $this->a_formatting[] = self::MARKER; - - /* An end tag whose tag name is "tr" */ - } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node (which will be a tr element) from the - stack of open elements. Switch the insertion mode to "in table - body". */ - array_pop($this->stack); - $this->mode = self::IN_TBODY; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr') - ) - ) { - /* Act as if an end tag with the tag name "tr" had been seen, then, - if that token wasn't ignored, reprocess the current token. */ - $this->inRow( - array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->inCell($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif ($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead')) - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Otherwise, act as if an end tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inRow( - array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - ) - ); - - return $this->inCell($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr') - ) - ) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inCell($token) - { - /* An end tag whose tag name is one of: "td", "th" */ - if ($token['type'] === HTML5::ENDTAG && - ($token['name'] === 'td' || $token['name'] === 'th') - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token, then this is a - parse error and the token must be ignored. */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Generate implied end tags, except for elements with the same - tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); - - /* Now, if the current node is not an element with the same tag - name as the token, then this is a parse error. */ - // k - - /* Pop elements from this stack until an element with the same - tag name as the token has been popped from the stack. */ - while (true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if ($node === $token['name']) { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in row". (The current node - will be a tr element at this point.) */ - $this->mode = self::IN_ROW; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array( - 'caption', - 'col', - 'colgroup', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'tr' - ) - ) - ) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if (!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif ($token['type'] === HTML5::STARTTAG && in_array( - $token['name'], - array( - 'caption', - 'col', - 'colgroup', - 'tbody', - 'td', - 'tfoot', - 'th', - 'thead', - 'tr' - ) - ) - ) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if (!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array('body', 'caption', 'col', 'colgroup', 'html') - ) - ) { - /* Parse error. Ignore the token. */ - - /* An end tag whose tag name is one of: "table", "tbody", "tfoot", - "thead", "tr" */ - } elseif ($token['type'] === HTML5::ENDTAG && in_array( - $token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr') - ) - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token (which can only - happen for "tbody", "tfoot" and "thead", or, in the innerHTML case), - then this is a parse error and the token must be ignored. */ - if (!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inSelect($token) - { - /* Handle the token as follows: */ - - /* A character token */ - if ($token['type'] === HTML5::CHARACTR) { - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token whose tag name is "option" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'option' - ) { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if (end($this->stack)->nodeName === 'option') { - $this->inSelect( - array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* A start tag token whose tag name is "optgroup" */ - } elseif ($token['type'] === HTML5::STARTTAG && - $token['name'] === 'optgroup' - ) { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if (end($this->stack)->nodeName === 'option') { - $this->inSelect( - array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* If the current node is an optgroup element, act as if an end tag - with the tag name "optgroup" had been seen. */ - if (end($this->stack)->nodeName === 'optgroup') { - $this->inSelect( - array( - 'name' => 'optgroup', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* An end tag token whose tag name is "optgroup" */ - } elseif ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'optgroup' - ) { - /* First, if the current node is an option element, and the node - immediately before it in the stack of open elements is an optgroup - element, then act as if an end tag with the tag name "option" had - been seen. */ - $elements_in_stack = count($this->stack); - - if ($this->stack[$elements_in_stack - 1]->nodeName === 'option' && - $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup' - ) { - $this->inSelect( - array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - ) - ); - } - - /* If the current node is an optgroup element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if ($this->stack[$elements_in_stack - 1] === 'optgroup') { - array_pop($this->stack); - } - - /* An end tag token whose tag name is "option" */ - } elseif ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'option' - ) { - /* If the current node is an option element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if (end($this->stack)->nodeName === 'option') { - array_pop($this->stack); - } - - /* An end tag whose tag name is "select" */ - } elseif ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'select' - ) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if (!$this->elementInScope($token['name'], true)) { - // w/e - - /* Otherwise: */ - } else { - /* Pop elements from the stack of open elements until a select - element has been popped from the stack. */ - while (true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if ($current === 'select') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* A start tag whose tag name is "select" */ - } elseif ($token['name'] === 'select' && - $token['type'] === HTML5::STARTTAG - ) { - /* Parse error. Act as if the token had been an end tag with the - tag name "select" instead. */ - $this->inSelect( - array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - ) - ); - - /* An end tag whose tag name is one of: "caption", "table", "tbody", - "tfoot", "thead", "tr", "td", "th" */ - } elseif (in_array( - $token['name'], - array( - 'caption', - 'table', - 'tbody', - 'tfoot', - 'thead', - 'tr', - 'td', - 'th' - ) - ) && $token['type'] === HTML5::ENDTAG - ) { - /* Parse error. */ - // w/e - - /* If the stack of open elements has an element in table scope with - the same tag name as that of the token, then act as if an end tag - with the tag name "select" had been seen, and reprocess the token. - Otherwise, ignore the token. */ - if ($this->elementInScope($token['name'], true)) { - $this->inSelect( - array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - ) - ); - - $this->mainPhase($token); - } - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterBody($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Process the token as it would be processed if the insertion mode - was "in body". */ - $this->inBody($token); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the first element in the stack of open - elements (the html element), with the data attribute set to the - data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->stack[0]->appendChild($comment); - - /* An end tag with the tag name "html" */ - } elseif ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') { - /* If the parser was originally created in order to handle the - setting of an element's innerHTML attribute, this is a parse error; - ignore the token. (The element will be an html element in this - case.) (innerHTML case) */ - - /* Otherwise, switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* Anything else */ - } else { - /* Parse error. Set the insertion mode to "in body" and reprocess - the token. */ - $this->mode = self::IN_BODY; - return $this->inBody($token); - } - } - - private function inFrameset($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag with the tag name "frameset" */ - } elseif ($token['name'] === 'frameset' && - $token['type'] === HTML5::STARTTAG - ) { - $this->insertElement($token); - - /* An end tag with the tag name "frameset" */ - } elseif ($token['name'] === 'frameset' && - $token['type'] === HTML5::ENDTAG - ) { - /* If the current node is the root html element, then this is a - parse error; ignore the token. (innerHTML case) */ - if (end($this->stack)->nodeName === 'html') { - // Ignore - - } else { - /* Otherwise, pop the current node from the stack of open - elements. */ - array_pop($this->stack); - - /* If the parser was not originally created in order to handle - the setting of an element's innerHTML attribute (innerHTML case), - and the current node is no longer a frameset element, then change - the insertion mode to "after frameset". */ - $this->mode = self::AFTR_FRAME; - } - - /* A start tag with the tag name "frame" */ - } elseif ($token['name'] === 'frame' && - $token['type'] === HTML5::STARTTAG - ) { - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - - /* A start tag with the tag name "noframes" */ - } elseif ($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG - ) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterFrameset($token) - { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* An end tag with the tag name "html" */ - } elseif ($token['name'] === 'html' && - $token['type'] === HTML5::ENDTAG - ) { - /* Switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* A start tag with the tag name "noframes" */ - } elseif ($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG - ) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function trailingEndPhase($token) - { - /* After the main phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if ($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif ($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif ($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']) - ) { - /* Process the token as it would be processed in the main phase. */ - $this->mainPhase($token); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or a start tag token. Or an end tag token. */ - } elseif (($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG - ) { - /* Parse error. Switch back to the main phase and reprocess the - token. */ - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - - /* An end-of-file token */ - } elseif ($token['type'] === HTML5::EOF) { - /* OMG DONE!! */ - } - } - - private function insertElement($token, $append = true, $check = false) - { - // Proprietary workaround for libxml2's limitations with tag names - if ($check) { - // Slightly modified HTML5 tag-name modification, - // removing anything that's not an ASCII letter, digit, or hyphen - $token['name'] = preg_replace('/[^a-z0-9-]/i', '', $token['name']); - // Remove leading hyphens and numbers - $token['name'] = ltrim($token['name'], '-0..9'); - // In theory, this should ever be needed, but just in case - if ($token['name'] === '') { - $token['name'] = 'span'; - } // arbitrary generic choice - } - - $el = $this->dom->createElement($token['name']); - - foreach ($token['attr'] as $attr) { - if (!$el->hasAttribute($attr['name'])) { - $el->setAttribute($attr['name'], (string)$attr['value']); - } - } - - $this->appendToRealParent($el); - $this->stack[] = $el; - - return $el; - } - - private function insertText($data) - { - $text = $this->dom->createTextNode($data); - $this->appendToRealParent($text); - } - - private function insertComment($data) - { - $comment = $this->dom->createComment($data); - $this->appendToRealParent($comment); - } - - private function appendToRealParent($node) - { - if ($this->foster_parent === null) { - end($this->stack)->appendChild($node); - - } elseif ($this->foster_parent !== null) { - /* If the foster parent element is the parent element of the - last table element in the stack of open elements, then the new - node must be inserted immediately before the last table element - in the stack of open elements in the foster parent element; - otherwise, the new node must be appended to the foster parent - element. */ - for ($n = count($this->stack) - 1; $n >= 0; $n--) { - if ($this->stack[$n]->nodeName === 'table' && - $this->stack[$n]->parentNode !== null - ) { - $table = $this->stack[$n]; - break; - } - } - - if (isset($table) && $this->foster_parent->isSameNode($table->parentNode)) { - $this->foster_parent->insertBefore($node, $table); - } else { - $this->foster_parent->appendChild($node); - } - - $this->foster_parent = null; - } - } - - private function elementInScope($el, $table = false) - { - if (is_array($el)) { - foreach ($el as $element) { - if ($this->elementInScope($element, $table)) { - return true; - } - } - - return false; - } - - $leng = count($this->stack); - - for ($n = 0; $n < $leng; $n++) { - /* 1. Initialise node to be the current node (the bottommost node of - the stack). */ - $node = $this->stack[$leng - 1 - $n]; - - if ($node->tagName === $el) { - /* 2. If node is the target node, terminate in a match state. */ - return true; - - } elseif ($node->tagName === 'table') { - /* 3. Otherwise, if node is a table element, terminate in a failure - state. */ - return false; - - } elseif ($table === true && in_array( - $node->tagName, - array( - 'caption', - 'td', - 'th', - 'button', - 'marquee', - 'object' - ) - ) - ) { - /* 4. Otherwise, if the algorithm is the "has an element in scope" - variant (rather than the "has an element in table scope" variant), - and node is one of the following, terminate in a failure state. */ - return false; - - } elseif ($node === $node->ownerDocument->documentElement) { - /* 5. Otherwise, if node is an html element (root element), terminate - in a failure state. (This can only happen if the node is the topmost - node of the stack of open elements, and prevents the next step from - being invoked if there are no more elements in the stack.) */ - return false; - } - - /* Otherwise, set node to the previous entry in the stack of open - elements and return to step 2. (This will never fail, since the loop - will always terminate in the previous step if the top of the stack - is reached.) */ - } - } - - private function reconstructActiveFormattingElements() - { - /* 1. If there are no entries in the list of active formatting elements, - then there is nothing to reconstruct; stop this algorithm. */ - $formatting_elements = count($this->a_formatting); - - if ($formatting_elements === 0) { - return false; - } - - /* 3. Let entry be the last (most recently added) element in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. If the last (most recently added) entry in the list of active - formatting elements is a marker, or if it is an element that is in the - stack of open elements, then there is nothing to reconstruct; stop this - algorithm. */ - if ($entry === self::MARKER || in_array($entry, $this->stack, true)) { - return false; - } - - for ($a = $formatting_elements - 1; $a >= 0; true) { - /* 4. If there are no entries before entry in the list of active - formatting elements, then jump to step 8. */ - if ($a === 0) { - $step_seven = false; - break; - } - - /* 5. Let entry be the entry one earlier than entry in the list of - active formatting elements. */ - $a--; - $entry = $this->a_formatting[$a]; - - /* 6. If entry is neither a marker nor an element that is also in - thetack of open elements, go to step 4. */ - if ($entry === self::MARKER || in_array($entry, $this->stack, true)) { - break; - } - } - - while (true) { - /* 7. Let entry be the element one later than entry in the list of - active formatting elements. */ - if (isset($step_seven) && $step_seven === true) { - $a++; - $entry = $this->a_formatting[$a]; - } - - /* 8. Perform a shallow clone of the element entry to obtain clone. */ - $clone = $entry->cloneNode(); - - /* 9. Append clone to the current node and push it onto the stack - of open elements so that it is the new current node. */ - end($this->stack)->appendChild($clone); - $this->stack[] = $clone; - - /* 10. Replace the entry for entry in the list with an entry for - clone. */ - $this->a_formatting[$a] = $clone; - - /* 11. If the entry for clone in the list of active formatting - elements is not the last entry in the list, return to step 7. */ - if (end($this->a_formatting) !== $clone) { - $step_seven = true; - } else { - break; - } - } - } - - private function clearTheActiveFormattingElementsUpToTheLastMarker() - { - /* When the steps below require the UA to clear the list of active - formatting elements up to the last marker, the UA must perform the - following steps: */ - - while (true) { - /* 1. Let entry be the last (most recently added) entry in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. Remove entry from the list of active formatting elements. */ - array_pop($this->a_formatting); - - /* 3. If entry was a marker, then stop the algorithm at this point. - The list has been cleared up to the last marker. */ - if ($entry === self::MARKER) { - break; - } - } - } - - private function generateImpliedEndTags($exclude = array()) - { - /* When the steps below require the UA to generate implied end tags, - then, if the current node is a dd element, a dt element, an li element, - a p element, a td element, a th element, or a tr element, the UA must - act as if an end tag with the respective tag name had been seen and - then generate implied end tags again. */ - $node = end($this->stack); - $elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); - - while (in_array(end($this->stack)->nodeName, $elements)) { - array_pop($this->stack); - } - } - - private function getElementCategory($node) - { - $name = $node->tagName; - if (in_array($name, $this->special)) { - return self::SPECIAL; - } elseif (in_array($name, $this->scoping)) { - return self::SCOPING; - } elseif (in_array($name, $this->formatting)) { - return self::FORMATTING; - } else { - return self::PHRASING; - } - } - - private function clearStackToTableContext($elements) - { - /* When the steps above require the UA to clear the stack back to a - table context, it means that the UA must, while the current node is not - a table element or an html element, pop elements from the stack of open - elements. If this causes any elements to be popped from the stack, then - this is a parse error. */ - while (true) { - $node = end($this->stack)->nodeName; - - if (in_array($node, $elements)) { - break; - } else { - array_pop($this->stack); - } - } - } - - private function resetInsertionMode() - { - /* 1. Let last be false. */ - $last = false; - $leng = count($this->stack); - - for ($n = $leng - 1; $n >= 0; $n--) { - /* 2. Let node be the last node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 3. If node is the first node in the stack of open elements, then - set last to true. If the element whose innerHTML attribute is being - set is neither a td element nor a th element, then set node to the - element whose innerHTML attribute is being set. (innerHTML case) */ - if ($this->stack[0]->isSameNode($node)) { - $last = true; - } - - /* 4. If node is a select element, then switch the insertion mode to - "in select" and abort these steps. (innerHTML case) */ - if ($node->nodeName === 'select') { - $this->mode = self::IN_SELECT; - break; - - /* 5. If node is a td or th element, then switch the insertion mode - to "in cell" and abort these steps. */ - } elseif ($node->nodeName === 'td' || $node->nodeName === 'th') { - $this->mode = self::IN_CELL; - break; - - /* 6. If node is a tr element, then switch the insertion mode to - "in row" and abort these steps. */ - } elseif ($node->nodeName === 'tr') { - $this->mode = self::IN_ROW; - break; - - /* 7. If node is a tbody, thead, or tfoot element, then switch the - insertion mode to "in table body" and abort these steps. */ - } elseif (in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) { - $this->mode = self::IN_TBODY; - break; - - /* 8. If node is a caption element, then switch the insertion mode - to "in caption" and abort these steps. */ - } elseif ($node->nodeName === 'caption') { - $this->mode = self::IN_CAPTION; - break; - - /* 9. If node is a colgroup element, then switch the insertion mode - to "in column group" and abort these steps. (innerHTML case) */ - } elseif ($node->nodeName === 'colgroup') { - $this->mode = self::IN_CGROUP; - break; - - /* 10. If node is a table element, then switch the insertion mode - to "in table" and abort these steps. */ - } elseif ($node->nodeName === 'table') { - $this->mode = self::IN_TABLE; - break; - - /* 11. If node is a head element, then switch the insertion mode - to "in body" ("in body"! not "in head"!) and abort these steps. - (innerHTML case) */ - } elseif ($node->nodeName === 'head') { - $this->mode = self::IN_BODY; - break; - - /* 12. If node is a body element, then switch the insertion mode to - "in body" and abort these steps. */ - } elseif ($node->nodeName === 'body') { - $this->mode = self::IN_BODY; - break; - - /* 13. If node is a frameset element, then switch the insertion - mode to "in frameset" and abort these steps. (innerHTML case) */ - } elseif ($node->nodeName === 'frameset') { - $this->mode = self::IN_FRAME; - break; - - /* 14. If node is an html element, then: if the head element - pointer is null, switch the insertion mode to "before head", - otherwise, switch the insertion mode to "after head". In either - case, abort these steps. (innerHTML case) */ - } elseif ($node->nodeName === 'html') { - $this->mode = ($this->head_pointer === null) - ? self::BEFOR_HEAD - : self::AFTER_HEAD; - - break; - - /* 15. If last is true, then set the insertion mode to "in body" - and abort these steps. (innerHTML case) */ - } elseif ($last) { - $this->mode = self::IN_BODY; - break; - } - } - } - - private function closeCell() - { - /* If the stack of open elements has a td or th element in table scope, - then act as if an end tag token with that tag name had been seen. */ - foreach (array('td', 'th') as $cell) { - if ($this->elementInScope($cell, true)) { - $this->inCell( - array( - 'name' => $cell, - 'type' => HTML5::ENDTAG - ) - ); - - break; - } - } - } - - public function save() - { - return $this->dom; - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php deleted file mode 100644 index 3995fec9..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node.php +++ /dev/null @@ -1,49 +0,0 @@ -data = $data; - $this->line = $line; - $this->col = $col; - } - - public function toTokenPair() { - return array(new HTMLPurifier_Token_Comment($this->data, $this->line, $this->col), null); - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php deleted file mode 100644 index 6cbf56da..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Element.php +++ /dev/null @@ -1,59 +0,0 @@ - form or the form, i.e. - * is it a pair of start/end tokens or an empty token. - * @bool - */ - public $empty = false; - - public $endCol = null, $endLine = null, $endArmor = array(); - - public function __construct($name, $attr = array(), $line = null, $col = null, $armor = array()) { - $this->name = $name; - $this->attr = $attr; - $this->line = $line; - $this->col = $col; - $this->armor = $armor; - } - - public function toTokenPair() { - // XXX inefficiency here, normalization is not necessary - if ($this->empty) { - return array(new HTMLPurifier_Token_Empty($this->name, $this->attr, $this->line, $this->col, $this->armor), null); - } else { - $start = new HTMLPurifier_Token_Start($this->name, $this->attr, $this->line, $this->col, $this->armor); - $end = new HTMLPurifier_Token_End($this->name, array(), $this->endLine, $this->endCol, $this->endArmor); - //$end->start = $start; - return array($start, $end); - } - } -} - diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php deleted file mode 100644 index aec91664..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Node/Text.php +++ /dev/null @@ -1,54 +0,0 @@ -data = $data; - $this->is_whitespace = $is_whitespace; - $this->line = $line; - $this->col = $col; - } - - public function toTokenPair() { - return array(new HTMLPurifier_Token_Text($this->data, $this->line, $this->col), null); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php deleted file mode 100644 index 18c8bbb0..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PercentEncoder.php +++ /dev/null @@ -1,111 +0,0 @@ -preserve[$i] = true; - } - for ($i = 65; $i <= 90; $i++) { // upper-case - $this->preserve[$i] = true; - } - for ($i = 97; $i <= 122; $i++) { // lower-case - $this->preserve[$i] = true; - } - $this->preserve[45] = true; // Dash - - $this->preserve[46] = true; // Period . - $this->preserve[95] = true; // Underscore _ - $this->preserve[126]= true; // Tilde ~ - - // extra letters not to escape - if ($preserve !== false) { - for ($i = 0, $c = strlen($preserve); $i < $c; $i++) { - $this->preserve[ord($preserve[$i])] = true; - } - } - } - - /** - * Our replacement for urlencode, it encodes all non-reserved characters, - * as well as any extra characters that were instructed to be preserved. - * @note - * Assumes that the string has already been normalized, making any - * and all percent escape sequences valid. Percents will not be - * re-escaped, regardless of their status in $preserve - * @param string $string String to be encoded - * @return string Encoded string. - */ - public function encode($string) - { - $ret = ''; - for ($i = 0, $c = strlen($string); $i < $c; $i++) { - if ($string[$i] !== '%' && !isset($this->preserve[$int = ord($string[$i])])) { - $ret .= '%' . sprintf('%02X', $int); - } else { - $ret .= $string[$i]; - } - } - return $ret; - } - - /** - * Fix up percent-encoding by decoding unreserved characters and normalizing. - * @warning This function is affected by $preserve, even though the - * usual desired behavior is for this not to preserve those - * characters. Be careful when reusing instances of PercentEncoder! - * @param string $string String to normalize - * @return string - */ - public function normalize($string) - { - if ($string == '') { - return ''; - } - $parts = explode('%', $string); - $ret = array_shift($parts); - foreach ($parts as $part) { - $length = strlen($part); - if ($length < 2) { - $ret .= '%25' . $part; - continue; - } - $encoding = substr($part, 0, 2); - $text = substr($part, 2); - if (!ctype_xdigit($encoding)) { - $ret .= '%25' . $part; - continue; - } - $int = hexdec($encoding); - if (isset($this->preserve[$int])) { - $ret .= chr($int) . $text; - continue; - } - $encoding = strtoupper($encoding); - $ret .= '%' . $encoding . $text; - } - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php deleted file mode 100644 index 549e4cea..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer.php +++ /dev/null @@ -1,218 +0,0 @@ -getAll(); - $context = new HTMLPurifier_Context(); - $this->generator = new HTMLPurifier_Generator($config, $context); - } - - /** - * Main function that renders object or aspect of that object - * @note Parameters vary depending on printer - */ - // function render() {} - - /** - * Returns a start tag - * @param string $tag Tag name - * @param array $attr Attribute array - * @return string - */ - protected function start($tag, $attr = array()) - { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Start($tag, $attr ? $attr : array()) - ); - } - - /** - * Returns an end tag - * @param string $tag Tag name - * @return string - */ - protected function end($tag) - { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_End($tag) - ); - } - - /** - * Prints a complete element with content inside - * @param string $tag Tag name - * @param string $contents Element contents - * @param array $attr Tag attributes - * @param bool $escape whether or not to escape contents - * @return string - */ - protected function element($tag, $contents, $attr = array(), $escape = true) - { - return $this->start($tag, $attr) . - ($escape ? $this->escape($contents) : $contents) . - $this->end($tag); - } - - /** - * @param string $tag - * @param array $attr - * @return string - */ - protected function elementEmpty($tag, $attr = array()) - { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Empty($tag, $attr) - ); - } - - /** - * @param string $text - * @return string - */ - protected function text($text) - { - return $this->generator->generateFromToken( - new HTMLPurifier_Token_Text($text) - ); - } - - /** - * Prints a simple key/value row in a table. - * @param string $name Key - * @param mixed $value Value - * @return string - */ - protected function row($name, $value) - { - if (is_bool($value)) { - $value = $value ? 'On' : 'Off'; - } - return - $this->start('tr') . "\n" . - $this->element('th', $name) . "\n" . - $this->element('td', $value) . "\n" . - $this->end('tr'); - } - - /** - * Escapes a string for HTML output. - * @param string $string String to escape - * @return string - */ - protected function escape($string) - { - $string = HTMLPurifier_Encoder::cleanUTF8($string); - $string = htmlspecialchars($string, ENT_COMPAT, 'UTF-8'); - return $string; - } - - /** - * Takes a list of strings and turns them into a single list - * @param string[] $array List of strings - * @param bool $polite Bool whether or not to add an end before the last - * @return string - */ - protected function listify($array, $polite = false) - { - if (empty($array)) { - return 'None'; - } - $ret = ''; - $i = count($array); - foreach ($array as $value) { - $i--; - $ret .= $value; - if ($i > 0 && !($polite && $i == 1)) { - $ret .= ', '; - } - if ($polite && $i == 1) { - $ret .= 'and '; - } - } - return $ret; - } - - /** - * Retrieves the class of an object without prefixes, as well as metadata - * @param object $obj Object to determine class of - * @param string $sec_prefix Further prefix to remove - * @return string - */ - protected function getClass($obj, $sec_prefix = '') - { - static $five = null; - if ($five === null) { - $five = version_compare(PHP_VERSION, '5', '>='); - } - $prefix = 'HTMLPurifier_' . $sec_prefix; - if (!$five) { - $prefix = strtolower($prefix); - } - $class = str_replace($prefix, '', get_class($obj)); - $lclass = strtolower($class); - $class .= '('; - switch ($lclass) { - case 'enum': - $values = array(); - foreach ($obj->valid_values as $value => $bool) { - $values[] = $value; - } - $class .= implode(', ', $values); - break; - case 'css_composite': - $values = array(); - foreach ($obj->defs as $def) { - $values[] = $this->getClass($def, $sec_prefix); - } - $class .= implode(', ', $values); - break; - case 'css_multiple': - $class .= $this->getClass($obj->single, $sec_prefix) . ', '; - $class .= $obj->max; - break; - case 'css_denyelementdecorator': - $class .= $this->getClass($obj->def, $sec_prefix) . ', '; - $class .= $obj->element; - break; - case 'css_importantdecorator': - $class .= $this->getClass($obj->def, $sec_prefix); - if ($obj->allow) { - $class .= ', !important'; - } - break; - } - $class .= ')'; - return $class; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php deleted file mode 100644 index 29505fe1..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/CSSDefinition.php +++ /dev/null @@ -1,44 +0,0 @@ -def = $config->getCSSDefinition(); - $ret = ''; - - $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer')); - $ret .= $this->start('table'); - - $ret .= $this->element('caption', 'Properties ($info)'); - - $ret .= $this->start('thead'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Property', array('class' => 'heavy')); - $ret .= $this->element('th', 'Definition', array('class' => 'heavy', 'style' => 'width:auto;')); - $ret .= $this->end('tr'); - $ret .= $this->end('thead'); - - ksort($this->def->info); - foreach ($this->def->info as $property => $obj) { - $name = $this->getClass($obj, 'AttrDef_'); - $ret .= $this->row($property, $name); - } - - $ret .= $this->end('table'); - $ret .= $this->end('div'); - - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css deleted file mode 100644 index 3ff1a88a..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.css +++ /dev/null @@ -1,10 +0,0 @@ - -.hp-config {} - -.hp-config tbody th {text-align:right; padding-right:0.5em;} -.hp-config thead, .hp-config .namespace {background:#3C578C; color:#FFF;} -.hp-config .namespace th {text-align:center;} -.hp-config .verbose {display:none;} -.hp-config .controls {text-align:center;} - -/* vim: et sw=4 sts=4 */ diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js deleted file mode 100644 index cba00c9b..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.js +++ /dev/null @@ -1,5 +0,0 @@ -function toggleWriteability(id_of_patient, checked) { - document.getElementById(id_of_patient).disabled = checked; -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php deleted file mode 100644 index 33ae1139..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/ConfigForm.php +++ /dev/null @@ -1,451 +0,0 @@ -docURL = $doc_url; - $this->name = $name; - $this->compress = $compress; - // initialize sub-printers - $this->fields[0] = new HTMLPurifier_Printer_ConfigForm_default(); - $this->fields[HTMLPurifier_VarParser::C_BOOL] = new HTMLPurifier_Printer_ConfigForm_bool(); - } - - /** - * Sets default column and row size for textareas in sub-printers - * @param $cols Integer columns of textarea, null to use default - * @param $rows Integer rows of textarea, null to use default - */ - public function setTextareaDimensions($cols = null, $rows = null) - { - if ($cols) { - $this->fields['default']->cols = $cols; - } - if ($rows) { - $this->fields['default']->rows = $rows; - } - } - - /** - * Retrieves styling, in case it is not accessible by webserver - */ - public static function getCSS() - { - return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.css'); - } - - /** - * Retrieves JavaScript, in case it is not accessible by webserver - */ - public static function getJavaScript() - { - return file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/Printer/ConfigForm.js'); - } - - /** - * Returns HTML output for a configuration form - * @param HTMLPurifier_Config|array $config Configuration object of current form state, or an array - * where [0] has an HTML namespace and [1] is being rendered. - * @param array|bool $allowed Optional namespace(s) and directives to restrict form to. - * @param bool $render_controls - * @return string - */ - public function render($config, $allowed = true, $render_controls = true) - { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - - $this->config = $config; - $this->genConfig = $gen_config; - $this->prepareGenerator($gen_config); - - $allowed = HTMLPurifier_Config::getAllowedDirectivesForForm($allowed, $config->def); - $all = array(); - foreach ($allowed as $key) { - list($ns, $directive) = $key; - $all[$ns][$directive] = $config->get($ns . '.' . $directive); - } - - $ret = ''; - $ret .= $this->start('table', array('class' => 'hp-config')); - $ret .= $this->start('thead'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Directive', array('class' => 'hp-directive')); - $ret .= $this->element('th', 'Value', array('class' => 'hp-value')); - $ret .= $this->end('tr'); - $ret .= $this->end('thead'); - foreach ($all as $ns => $directives) { - $ret .= $this->renderNamespace($ns, $directives); - } - if ($render_controls) { - $ret .= $this->start('tbody'); - $ret .= $this->start('tr'); - $ret .= $this->start('td', array('colspan' => 2, 'class' => 'controls')); - $ret .= $this->elementEmpty('input', array('type' => 'submit', 'value' => 'Submit')); - $ret .= '[Reset]'; - $ret .= $this->end('td'); - $ret .= $this->end('tr'); - $ret .= $this->end('tbody'); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders a single namespace - * @param $ns String namespace name - * @param array $directives array of directives to values - * @return string - */ - protected function renderNamespace($ns, $directives) - { - $ret = ''; - $ret .= $this->start('tbody', array('class' => 'namespace')); - $ret .= $this->start('tr'); - $ret .= $this->element('th', $ns, array('colspan' => 2)); - $ret .= $this->end('tr'); - $ret .= $this->end('tbody'); - $ret .= $this->start('tbody'); - foreach ($directives as $directive => $value) { - $ret .= $this->start('tr'); - $ret .= $this->start('th'); - if ($this->docURL) { - $url = str_replace('%s', urlencode("$ns.$directive"), $this->docURL); - $ret .= $this->start('a', array('href' => $url)); - } - $attr = array('for' => "{$this->name}:$ns.$directive"); - - // crop directive name if it's too long - if (!$this->compress || (strlen($directive) < $this->compress)) { - $directive_disp = $directive; - } else { - $directive_disp = substr($directive, 0, $this->compress - 2) . '...'; - $attr['title'] = $directive; - } - - $ret .= $this->element( - 'label', - $directive_disp, - // component printers must create an element with this id - $attr - ); - if ($this->docURL) { - $ret .= $this->end('a'); - } - $ret .= $this->end('th'); - - $ret .= $this->start('td'); - $def = $this->config->def->info["$ns.$directive"]; - if (is_int($def)) { - $allow_null = $def < 0; - $type = abs($def); - } else { - $type = $def->type; - $allow_null = isset($def->allow_null); - } - if (!isset($this->fields[$type])) { - $type = 0; - } // default - $type_obj = $this->fields[$type]; - if ($allow_null) { - $type_obj = new HTMLPurifier_Printer_ConfigForm_NullDecorator($type_obj); - } - $ret .= $type_obj->render($ns, $directive, $value, $this->name, array($this->genConfig, $this->config)); - $ret .= $this->end('td'); - $ret .= $this->end('tr'); - } - $ret .= $this->end('tbody'); - return $ret; - } - -} - -/** - * Printer decorator for directives that accept null - */ -class HTMLPurifier_Printer_ConfigForm_NullDecorator extends HTMLPurifier_Printer -{ - /** - * Printer being decorated - * @type HTMLPurifier_Printer - */ - protected $obj; - - /** - * @param HTMLPurifier_Printer $obj Printer to decorate - */ - public function __construct($obj) - { - parent::__construct(); - $this->obj = $obj; - } - - /** - * @param string $ns - * @param string $directive - * @param string $value - * @param string $name - * @param HTMLPurifier_Config|array $config - * @return string - */ - public function render($ns, $directive, $value, $name, $config) - { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - - $ret = ''; - $ret .= $this->start('label', array('for' => "$name:Null_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' Null/Disabled'); - $ret .= $this->end('label'); - $attr = array( - 'type' => 'checkbox', - 'value' => '1', - 'class' => 'null-toggle', - 'name' => "$name" . "[Null_$ns.$directive]", - 'id' => "$name:Null_$ns.$directive", - 'onclick' => "toggleWriteability('$name:$ns.$directive',checked)" // INLINE JAVASCRIPT!!!! - ); - if ($this->obj instanceof HTMLPurifier_Printer_ConfigForm_bool) { - // modify inline javascript slightly - $attr['onclick'] = - "toggleWriteability('$name:Yes_$ns.$directive',checked);" . - "toggleWriteability('$name:No_$ns.$directive',checked)"; - } - if ($value === null) { - $attr['checked'] = 'checked'; - } - $ret .= $this->elementEmpty('input', $attr); - $ret .= $this->text(' or '); - $ret .= $this->elementEmpty('br'); - $ret .= $this->obj->render($ns, $directive, $value, $name, array($gen_config, $config)); - return $ret; - } -} - -/** - * Swiss-army knife configuration form field printer - */ -class HTMLPurifier_Printer_ConfigForm_default extends HTMLPurifier_Printer -{ - /** - * @type int - */ - public $cols = 18; - - /** - * @type int - */ - public $rows = 5; - - /** - * @param string $ns - * @param string $directive - * @param string $value - * @param string $name - * @param HTMLPurifier_Config|array $config - * @return string - */ - public function render($ns, $directive, $value, $name, $config) - { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - // this should probably be split up a little - $ret = ''; - $def = $config->def->info["$ns.$directive"]; - if (is_int($def)) { - $type = abs($def); - } else { - $type = $def->type; - } - if (is_array($value)) { - switch ($type) { - case HTMLPurifier_VarParser::LOOKUP: - $array = $value; - $value = array(); - foreach ($array as $val => $b) { - $value[] = $val; - } - //TODO does this need a break? - case HTMLPurifier_VarParser::ALIST: - $value = implode(PHP_EOL, $value); - break; - case HTMLPurifier_VarParser::HASH: - $nvalue = ''; - foreach ($value as $i => $v) { - if (is_array($v)) { - // HACK - $v = implode(";", $v); - } - $nvalue .= "$i:$v" . PHP_EOL; - } - $value = $nvalue; - break; - default: - $value = ''; - } - } - if ($type === HTMLPurifier_VarParser::C_MIXED) { - return 'Not supported'; - $value = serialize($value); - } - $attr = array( - 'name' => "$name" . "[$ns.$directive]", - 'id' => "$name:$ns.$directive" - ); - if ($value === null) { - $attr['disabled'] = 'disabled'; - } - if (isset($def->allowed)) { - $ret .= $this->start('select', $attr); - foreach ($def->allowed as $val => $b) { - $attr = array(); - if ($value == $val) { - $attr['selected'] = 'selected'; - } - $ret .= $this->element('option', $val, $attr); - } - $ret .= $this->end('select'); - } elseif ($type === HTMLPurifier_VarParser::TEXT || - $type === HTMLPurifier_VarParser::ITEXT || - $type === HTMLPurifier_VarParser::ALIST || - $type === HTMLPurifier_VarParser::HASH || - $type === HTMLPurifier_VarParser::LOOKUP) { - $attr['cols'] = $this->cols; - $attr['rows'] = $this->rows; - $ret .= $this->start('textarea', $attr); - $ret .= $this->text($value); - $ret .= $this->end('textarea'); - } else { - $attr['value'] = $value; - $attr['type'] = 'text'; - $ret .= $this->elementEmpty('input', $attr); - } - return $ret; - } -} - -/** - * Bool form field printer - */ -class HTMLPurifier_Printer_ConfigForm_bool extends HTMLPurifier_Printer -{ - /** - * @param string $ns - * @param string $directive - * @param string $value - * @param string $name - * @param HTMLPurifier_Config|array $config - * @return string - */ - public function render($ns, $directive, $value, $name, $config) - { - if (is_array($config) && isset($config[0])) { - $gen_config = $config[0]; - $config = $config[1]; - } else { - $gen_config = $config; - } - $this->prepareGenerator($gen_config); - $ret = ''; - $ret .= $this->start('div', array('id' => "$name:$ns.$directive")); - - $ret .= $this->start('label', array('for' => "$name:Yes_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' Yes'); - $ret .= $this->end('label'); - - $attr = array( - 'type' => 'radio', - 'name' => "$name" . "[$ns.$directive]", - 'id' => "$name:Yes_$ns.$directive", - 'value' => '1' - ); - if ($value === true) { - $attr['checked'] = 'checked'; - } - if ($value === null) { - $attr['disabled'] = 'disabled'; - } - $ret .= $this->elementEmpty('input', $attr); - - $ret .= $this->start('label', array('for' => "$name:No_$ns.$directive")); - $ret .= $this->element('span', "$ns.$directive:", array('class' => 'verbose')); - $ret .= $this->text(' No'); - $ret .= $this->end('label'); - - $attr = array( - 'type' => 'radio', - 'name' => "$name" . "[$ns.$directive]", - 'id' => "$name:No_$ns.$directive", - 'value' => '0' - ); - if ($value === false) { - $attr['checked'] = 'checked'; - } - if ($value === null) { - $attr['disabled'] = 'disabled'; - } - $ret .= $this->elementEmpty('input', $attr); - - $ret .= $this->end('div'); - - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php deleted file mode 100644 index ae863917..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Printer/HTMLDefinition.php +++ /dev/null @@ -1,324 +0,0 @@ -config =& $config; - - $this->def = $config->getHTMLDefinition(); - - $ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer')); - - $ret .= $this->renderDoctype(); - $ret .= $this->renderEnvironment(); - $ret .= $this->renderContentSets(); - $ret .= $this->renderInfo(); - - $ret .= $this->end('div'); - - return $ret; - } - - /** - * Renders the Doctype table - * @return string - */ - protected function renderDoctype() - { - $doctype = $this->def->doctype; - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Doctype'); - $ret .= $this->row('Name', $doctype->name); - $ret .= $this->row('XML', $doctype->xml ? 'Yes' : 'No'); - $ret .= $this->row('Default Modules', implode(', ', $doctype->modules)); - $ret .= $this->row('Default Tidy Modules', implode(', ', $doctype->tidyModules)); - $ret .= $this->end('table'); - return $ret; - } - - - /** - * Renders environment table, which is miscellaneous info - * @return string - */ - protected function renderEnvironment() - { - $def = $this->def; - - $ret = ''; - - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Environment'); - - $ret .= $this->row('Parent of fragment', $def->info_parent); - $ret .= $this->renderChildren($def->info_parent_def->child); - $ret .= $this->row('Block wrap name', $def->info_block_wrapper); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Global attributes'); - $ret .= $this->element('td', $this->listifyAttr($def->info_global_attr), null, 0); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Tag transforms'); - $list = array(); - foreach ($def->info_tag_transform as $old => $new) { - $new = $this->getClass($new, 'TagTransform_'); - $list[] = "<$old> with $new"; - } - $ret .= $this->element('td', $this->listify($list)); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Pre-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_pre)); - $ret .= $this->end('tr'); - - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Post-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->info_attr_transform_post)); - $ret .= $this->end('tr'); - - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders the Content Sets table - * @return string - */ - protected function renderContentSets() - { - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Content Sets'); - foreach ($this->def->info_content_sets as $name => $lookup) { - $ret .= $this->heavyHeader($name); - $ret .= $this->start('tr'); - $ret .= $this->element('td', $this->listifyTagLookup($lookup)); - $ret .= $this->end('tr'); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders the Elements ($info) table - * @return string - */ - protected function renderInfo() - { - $ret = ''; - $ret .= $this->start('table'); - $ret .= $this->element('caption', 'Elements ($info)'); - ksort($this->def->info); - $ret .= $this->heavyHeader('Allowed tags', 2); - $ret .= $this->start('tr'); - $ret .= $this->element('td', $this->listifyTagLookup($this->def->info), array('colspan' => 2)); - $ret .= $this->end('tr'); - foreach ($this->def->info as $name => $def) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', "<$name>", array('class' => 'heavy', 'colspan' => 2)); - $ret .= $this->end('tr'); - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Inline content'); - $ret .= $this->element('td', $def->descendants_are_inline ? 'Yes' : 'No'); - $ret .= $this->end('tr'); - if (!empty($def->excludes)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Excludes'); - $ret .= $this->element('td', $this->listifyTagLookup($def->excludes)); - $ret .= $this->end('tr'); - } - if (!empty($def->attr_transform_pre)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Pre-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_pre)); - $ret .= $this->end('tr'); - } - if (!empty($def->attr_transform_post)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Post-AttrTransform'); - $ret .= $this->element('td', $this->listifyObjectList($def->attr_transform_post)); - $ret .= $this->end('tr'); - } - if (!empty($def->auto_close)) { - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Auto closed by'); - $ret .= $this->element('td', $this->listifyTagLookup($def->auto_close)); - $ret .= $this->end('tr'); - } - $ret .= $this->start('tr'); - $ret .= $this->element('th', 'Allowed attributes'); - $ret .= $this->element('td', $this->listifyAttr($def->attr), array(), 0); - $ret .= $this->end('tr'); - - if (!empty($def->required_attr)) { - $ret .= $this->row('Required attributes', $this->listify($def->required_attr)); - } - - $ret .= $this->renderChildren($def->child); - } - $ret .= $this->end('table'); - return $ret; - } - - /** - * Renders a row describing the allowed children of an element - * @param HTMLPurifier_ChildDef $def HTMLPurifier_ChildDef of pertinent element - * @return string - */ - protected function renderChildren($def) - { - $context = new HTMLPurifier_Context(); - $ret = ''; - $ret .= $this->start('tr'); - $elements = array(); - $attr = array(); - if (isset($def->elements)) { - if ($def->type == 'strictblockquote') { - $def->validateChildren(array(), $this->config, $context); - } - $elements = $def->elements; - } - if ($def->type == 'chameleon') { - $attr['rowspan'] = 2; - } elseif ($def->type == 'empty') { - $elements = array(); - } elseif ($def->type == 'table') { - $elements = array_flip( - array( - 'col', - 'caption', - 'colgroup', - 'thead', - 'tfoot', - 'tbody', - 'tr' - ) - ); - } - $ret .= $this->element('th', 'Allowed children', $attr); - - if ($def->type == 'chameleon') { - - $ret .= $this->element( - 'td', - 'Block: ' . - $this->escape($this->listifyTagLookup($def->block->elements)), - null, - 0 - ); - $ret .= $this->end('tr'); - $ret .= $this->start('tr'); - $ret .= $this->element( - 'td', - 'Inline: ' . - $this->escape($this->listifyTagLookup($def->inline->elements)), - null, - 0 - ); - - } elseif ($def->type == 'custom') { - - $ret .= $this->element( - 'td', - '' . ucfirst($def->type) . ': ' . - $def->dtd_regex - ); - - } else { - $ret .= $this->element( - 'td', - '' . ucfirst($def->type) . ': ' . - $this->escape($this->listifyTagLookup($elements)), - null, - 0 - ); - } - $ret .= $this->end('tr'); - return $ret; - } - - /** - * Listifies a tag lookup table. - * @param array $array Tag lookup array in form of array('tagname' => true) - * @return string - */ - protected function listifyTagLookup($array) - { - ksort($array); - $list = array(); - foreach ($array as $name => $discard) { - if ($name !== '#PCDATA' && !isset($this->def->info[$name])) { - continue; - } - $list[] = $name; - } - return $this->listify($list); - } - - /** - * Listifies a list of objects by retrieving class names and internal state - * @param array $array List of objects - * @return string - * @todo Also add information about internal state - */ - protected function listifyObjectList($array) - { - ksort($array); - $list = array(); - foreach ($array as $obj) { - $list[] = $this->getClass($obj, 'AttrTransform_'); - } - return $this->listify($list); - } - - /** - * Listifies a hash of attributes to AttrDef classes - * @param array $array Array hash in form of array('attrname' => HTMLPurifier_AttrDef) - * @return string - */ - protected function listifyAttr($array) - { - ksort($array); - $list = array(); - foreach ($array as $name => $obj) { - if ($obj === false) { - continue; - } - $list[] = "$name = " . $this->getClass($obj, 'AttrDef_') . ''; - } - return $this->listify($list); - } - - /** - * Creates a heavy header row - * @param string $text - * @param int $num - * @return string - */ - protected function heavyHeader($text, $num = 1) - { - $ret = ''; - $ret .= $this->start('tr'); - $ret .= $this->element('th', $text, array('colspan' => $num, 'class' => 'heavy')); - $ret .= $this->end('tr'); - return $ret; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php deleted file mode 100644 index 189348fd..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyList.php +++ /dev/null @@ -1,122 +0,0 @@ -parent = $parent; - } - - /** - * Recursively retrieves the value for a key - * @param string $name - * @throws HTMLPurifier_Exception - */ - public function get($name) - { - if ($this->has($name)) { - return $this->data[$name]; - } - // possible performance bottleneck, convert to iterative if necessary - if ($this->parent) { - return $this->parent->get($name); - } - throw new HTMLPurifier_Exception("Key '$name' not found"); - } - - /** - * Sets the value of a key, for this plist - * @param string $name - * @param mixed $value - */ - public function set($name, $value) - { - $this->data[$name] = $value; - } - - /** - * Returns true if a given key exists - * @param string $name - * @return bool - */ - public function has($name) - { - return array_key_exists($name, $this->data); - } - - /** - * Resets a value to the value of it's parent, usually the default. If - * no value is specified, the entire plist is reset. - * @param string $name - */ - public function reset($name = null) - { - if ($name == null) { - $this->data = array(); - } else { - unset($this->data[$name]); - } - } - - /** - * Squashes this property list and all of its property lists into a single - * array, and returns the array. This value is cached by default. - * @param bool $force If true, ignores the cache and regenerates the array. - * @return array - */ - public function squash($force = false) - { - if ($this->cache !== null && !$force) { - return $this->cache; - } - if ($this->parent) { - return $this->cache = array_merge($this->parent->squash($force), $this->data); - } else { - return $this->cache = $this->data; - } - } - - /** - * Returns the parent plist. - * @return HTMLPurifier_PropertyList - */ - public function getParent() - { - return $this->parent; - } - - /** - * Sets the parent plist. - * @param HTMLPurifier_PropertyList $plist Parent plist - */ - public function setParent($plist) - { - $this->parent = $plist; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php deleted file mode 100644 index f68fc8c3..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/PropertyListIterator.php +++ /dev/null @@ -1,43 +0,0 @@ -l = strlen($filter); - $this->filter = $filter; - } - - /** - * @return bool - */ - #[\ReturnTypeWillChange] - public function accept() - { - $key = $this->getInnerIterator()->key(); - if (strncmp($key, $this->filter, $this->l) !== 0) { - return false; - } - return true; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php deleted file mode 100644 index f58db904..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Queue.php +++ /dev/null @@ -1,56 +0,0 @@ -input = $input; - $this->output = array(); - } - - /** - * Shifts an element off the front of the queue. - */ - public function shift() { - if (empty($this->output)) { - $this->output = array_reverse($this->input); - $this->input = array(); - } - if (empty($this->output)) { - return NULL; - } - return array_pop($this->output); - } - - /** - * Pushes an element onto the front of the queue. - */ - public function push($x) { - array_push($this->input, $x); - } - - /** - * Checks if it's empty. - */ - public function isEmpty() { - return empty($this->input) && empty($this->output); - } -} diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php deleted file mode 100644 index e1ff3b72..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy.php +++ /dev/null @@ -1,26 +0,0 @@ -strategies as $strategy) { - $tokens = $strategy->execute($tokens, $config, $context); - } - return $tokens; - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php deleted file mode 100644 index 4414c17d..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/Core.php +++ /dev/null @@ -1,17 +0,0 @@ -strategies[] = new HTMLPurifier_Strategy_RemoveForeignElements(); - $this->strategies[] = new HTMLPurifier_Strategy_MakeWellFormed(); - $this->strategies[] = new HTMLPurifier_Strategy_FixNesting(); - $this->strategies[] = new HTMLPurifier_Strategy_ValidateAttributes(); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php deleted file mode 100644 index 6fa673db..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/FixNesting.php +++ /dev/null @@ -1,181 +0,0 @@ -getHTMLDefinition(); - - $excludes_enabled = !$config->get('Core.DisableExcludes'); - - // setup the context variable 'IsInline', for chameleon processing - // is 'false' when we are not inline, 'true' when it must always - // be inline, and an integer when it is inline for a certain - // branch of the document tree - $is_inline = $definition->info_parent_def->descendants_are_inline; - $context->register('IsInline', $is_inline); - - // setup error collector - $e =& $context->get('ErrorCollector', true); - - //####################################################################// - // Loop initialization - - // stack that contains all elements that are excluded - // it is organized by parent elements, similar to $stack, - // but it is only populated when an element with exclusions is - // processed, i.e. there won't be empty exclusions. - $exclude_stack = array($definition->info_parent_def->excludes); - - // variable that contains the start token while we are processing - // nodes. This enables error reporting to do its job - $node = $top_node; - // dummy token - list($token, $d) = $node->toTokenPair(); - $context->register('CurrentNode', $node); - $context->register('CurrentToken', $token); - - //####################################################################// - // Loop - - // We need to implement a post-order traversal iteratively, to - // avoid running into stack space limits. This is pretty tricky - // to reason about, so we just manually stack-ify the recursive - // variant: - // - // function f($node) { - // foreach ($node->children as $child) { - // f($child); - // } - // validate($node); - // } - // - // Thus, we will represent a stack frame as array($node, - // $is_inline, stack of children) - // e.g. array_reverse($node->children) - already processed - // children. - - $parent_def = $definition->info_parent_def; - $stack = array( - array($top_node, - $parent_def->descendants_are_inline, - $parent_def->excludes, // exclusions - 0) - ); - - while (!empty($stack)) { - list($node, $is_inline, $excludes, $ix) = array_pop($stack); - // recursive call - $go = false; - $def = empty($stack) ? $definition->info_parent_def : $definition->info[$node->name]; - while (isset($node->children[$ix])) { - $child = $node->children[$ix++]; - if ($child instanceof HTMLPurifier_Node_Element) { - $go = true; - $stack[] = array($node, $is_inline, $excludes, $ix); - $stack[] = array($child, - // ToDo: I don't think it matters if it's def or - // child_def, but double check this... - $is_inline || $def->descendants_are_inline, - empty($def->excludes) ? $excludes - : array_merge($excludes, $def->excludes), - 0); - break; - } - }; - if ($go) continue; - list($token, $d) = $node->toTokenPair(); - // base case - if ($excludes_enabled && isset($excludes[$node->name])) { - $node->dead = true; - if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node excluded'); - } else { - // XXX I suppose it would be slightly more efficient to - // avoid the allocation here and have children - // strategies handle it - $children = array(); - foreach ($node->children as $child) { - if (!$child->dead) $children[] = $child; - } - $result = $def->child->validateChildren($children, $config, $context); - if ($result === true) { - // nop - $node->children = $children; - } elseif ($result === false) { - $node->dead = true; - if ($e) $e->send(E_ERROR, 'Strategy_FixNesting: Node removed'); - } else { - $node->children = $result; - if ($e) { - // XXX This will miss mutations of internal nodes. Perhaps defer to the child validators - if (empty($result) && !empty($children)) { - $e->send(E_ERROR, 'Strategy_FixNesting: Node contents removed'); - } else if ($result != $children) { - $e->send(E_WARNING, 'Strategy_FixNesting: Node reorganized'); - } - } - } - } - } - - //####################################################################// - // Post-processing - - // remove context variables - $context->destroy('IsInline'); - $context->destroy('CurrentNode'); - $context->destroy('CurrentToken'); - - //####################################################################// - // Return - - return HTMLPurifier_Arborize::flatten($node, $config, $context); - } -} - -// vim: et sw=4 sts=4 diff --git a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php b/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php deleted file mode 100644 index a6eb09e4..00000000 --- a/niucloud/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Strategy/MakeWellFormed.php +++ /dev/null @@ -1,659 +0,0 @@ -getHTMLDefinition(); - - // local variables - $generator = new HTMLPurifier_Generator($config, $context); - $escape_invalid_tags = $config->get('Core.EscapeInvalidTags'); - // used for autoclose early abortion - $global_parent_allowed_elements = $definition->info_parent_def->child->getAllowedElements($config); - $e = $context->get('ErrorCollector', true); - $i = false; // injector index - list($zipper, $token) = HTMLPurifier_Zipper::fromArray($tokens); - if ($token === NULL) { - return array(); - } - $reprocess = false; // whether or not to reprocess the same token - $stack = array(); - - // member variables - $this->stack =& $stack; - $this->tokens =& $tokens; - $this->token =& $token; - $this->zipper =& $zipper; - $this->config = $config; - $this->context = $context; - - // context variables - $context->register('CurrentNesting', $stack); - $context->register('InputZipper', $zipper); - $context->register('CurrentToken', $token); - - // -- begin INJECTOR -- - - $this->injectors = array(); - - $injectors = $config->getBatch('AutoFormat'); - $def_injectors = $definition->info_injector; - $custom_injectors = $injectors['Custom']; - unset($injectors['Custom']); // special case - foreach ($injectors as $injector => $b) { - // XXX: Fix with a legitimate lookup table of enabled filters - if (strpos($injector, '.') !== false) { - continue; - } - $injector = "HTMLPurifier_Injector_$injector"; - if (!$b) { - continue; - } - $this->injectors[] = new $injector; - } - foreach ($def_injectors as $injector) { - // assumed to be objects - $this->injectors[] = $injector; - } - foreach ($custom_injectors as $injector) { - if (!$injector) { - continue; - } - if (is_string($injector)) { - $injector = "HTMLPurifier_Injector_$injector"; - $injector = new $injector; - } - $this->injectors[] = $injector; - } - - // give the injectors references to the definition and context - // variables for performance reasons - foreach ($this->injectors as $ix => $injector) { - $error = $injector->prepare($config, $context); - if (!$error) { - continue; - } - array_splice($this->injectors, $ix, 1); // rm the injector - trigger_error("Cannot enable {$injector->name} injector because $error is not allowed", E_USER_WARNING); - } - - // -- end INJECTOR -- - - // a note on reprocessing: - // In order to reduce code duplication, whenever some code needs - // to make HTML changes in order to make things "correct", the - // new HTML gets sent through the purifier, regardless of its - // status. This means that if we add a start token, because it - // was totally necessary, we don't have to update nesting; we just - // punt ($reprocess = true; continue;) and it does that for us. - - // isset is in loop because $tokens size changes during loop exec - for (;; - // only increment if we don't need to reprocess - $reprocess ? $reprocess = false : $token = $zipper->next($token)) { - - // check for a rewind - if (is_int($i)) { - // possibility: disable rewinding if the current token has a - // rewind set on it already. This would offer protection from - // infinite loop, but might hinder some advanced rewinding. - $rewind_offset = $this->injectors[$i]->getRewindOffset(); - if (is_int($rewind_offset)) { - for ($j = 0; $j < $rewind_offset; $j++) { - if (empty($zipper->front)) break; - $token = $zipper->prev($token); - // indicate that other injectors should not process this token, - // but we need to reprocess it. See Note [Injector skips] - unset($token->skip[$i]); - $token->rewind = $i; - if ($token instanceof HTMLPurifier_Token_Start) { - array_pop($this->stack); - } elseif ($token instanceof HTMLPurifier_Token_End) { - $this->stack[] = $token->start; - } - } - } - $i = false; - } - - // handle case of document end - if ($token === NULL) { - // kill processing if stack is empty - if (empty($this->stack)) { - break; - } - - // peek - $top_nesting = array_pop($this->stack); - $this->stack[] = $top_nesting; - - // send error [TagClosedSuppress] - if ($e && !isset($top_nesting->armor['MakeWellFormed_TagClosedError'])) { - $e->send(E_NOTICE, 'Strategy_MakeWellFormed: Tag closed by document end', $top_nesting); - } - - // append, don't splice, since this is the end - $token = new HTMLPurifier_Token_End($top_nesting->name); - - // punt! - $reprocess = true; - continue; - } - - //echo '
'; printZipper($zipper, $token);//printTokens($this->stack); - //flush(); - - // quick-check: if it's not a tag, no need to process - if (empty($token->is_tag)) { - if ($token instanceof HTMLPurifier_Token_Text) { - foreach ($this->injectors as $i => $injector) { - if (isset($token->skip[$i])) { - // See Note [Injector skips] - continue; - } - if ($token->rewind !== null && $token->rewind !== $i) { - continue; - } - // XXX fuckup - $r = $token; - $injector->handleText($r); - $token = $this->processToken($r, $i); - $reprocess = true; - break; - } - } - // another possibility is a comment - continue; - } - - if (isset($definition->info[$token->name])) { - $type = $definition->info[$token->name]->child->type; - } else { - $type = false; // Type is unknown, treat accordingly - } - - // quick tag checks: anything that's *not* an end tag - $ok = false; - if ($type === 'empty' && $token instanceof HTMLPurifier_Token_Start) { - // claims to be a start tag but is empty - $token = new HTMLPurifier_Token_Empty( - $token->name, - $token->attr, - $token->line, - $token->col, - $token->armor - ); - $ok = true; - } elseif ($type && $type !== 'empty' && $token instanceof HTMLPurifier_Token_Empty) { - // claims to be empty but really is a start tag - // NB: this assignment is required - $old_token = $token; - $token = new HTMLPurifier_Token_End($token->name); - $token = $this->insertBefore( - new HTMLPurifier_Token_Start($old_token->name, $old_token->attr, $old_token->line, $old_token->col, $old_token->armor) - ); - // punt (since we had to modify the input stream in a non-trivial way) - $reprocess = true; - continue; - } elseif ($token instanceof HTMLPurifier_Token_Empty) { - // real empty token - $ok = true; - } elseif ($token instanceof HTMLPurifier_Token_Start) { - // start tag - - // ...unless they also have to close their parent - if (!empty($this->stack)) { - - // Performance note: you might think that it's rather - // inefficient, recalculating the autoclose information - // for every tag that a token closes (since when we - // do an autoclose, we push a new token into the - // stream and then /process/ that, before - // re-processing this token.) But this is - // necessary, because an injector can make an - // arbitrary transformations to the autoclosing - // tokens we introduce, so things may have changed - // in the meantime. Also, doing the inefficient thing is - // "easy" to reason about (for certain perverse definitions - // of "easy") - - $parent = array_pop($this->stack); - $this->stack[] = $parent; - - $parent_def = null; - $parent_elements = null; - $autoclose = false; - if (isset($definition->info[$parent->name])) { - $parent_def = $definition->info[$parent->name]; - $parent_elements = $parent_def->child->getAllowedElements($config); - $autoclose = !isset($parent_elements[$token->name]); - } - - if ($autoclose && $definition->info[$token->name]->wrap) { - // Check if an element can be wrapped by another - // element to make it valid in a context (for - // example,