From 250885b52f62757649d4986ac9f744e4af4a5960 Mon Sep 17 00:00:00 2001 From: weijiansdlx Date: Fri, 17 Mar 2017 16:11:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91yii2-extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AliyunDayu.php | 14 + AliyunLog.php | 76 + AliyunMns.php | 159 + AliyunOss.php | 90 + README.md | 157 +- .../Aliyun/Log/Client.php | 890 ++ .../Aliyun/Log/Exception.php | 72 + .../Aliyun/Log/Models/ACL.php | 110 + .../ApplyConfigToMachineGroupRequest.php | 39 + .../ApplyConfigToMachineGroupResponse.php | 29 + .../Aliyun/Log/Models/BatchGetLogsRequest.php | 134 + .../Log/Models/BatchGetLogsResponse.php | 73 + .../Aliyun/Log/Models/CompressedLogGroup.php | 38 + .../Aliyun/Log/Models/Config.php | 198 + .../Aliyun/Log/Models/CreateACLRequest.php | 32 + .../Aliyun/Log/Models/CreateACLResponse.php | 33 + .../Aliyun/Log/Models/CreateConfigRequest.php | 35 + .../Log/Models/CreateConfigResponse.php | 29 + .../Log/Models/CreateLogstoreRequest.php | 42 + .../Log/Models/CreateLogstoreResponse.php | 28 + .../Log/Models/CreateMachineGroupRequest.php | 31 + .../Log/Models/CreateMachineGroupResponse.php | 29 + .../Aliyun/Log/Models/DeleteACLRequest.php | 31 + .../Aliyun/Log/Models/DeleteACLResponse.php | 29 + .../Aliyun/Log/Models/DeleteConfigRequest.php | 33 + .../Log/Models/DeleteConfigResponse.php | 28 + .../Log/Models/DeleteLogstoreRequest.php | 30 + .../Log/Models/DeleteLogstoreResponse.php | 28 + .../Log/Models/DeleteMachineGroupRequest.php | 34 + .../Log/Models/DeleteMachineGroupResponse.php | 29 + .../Aliyun/Log/Models/DeleteShardRequest.php | 39 + .../Aliyun/Log/Models/DeleteShardResponse.php | 24 + .../Aliyun/Log/Models/GetACLRequest.php | 30 + .../Aliyun/Log/Models/GetACLResponse.php | 40 + .../Aliyun/Log/Models/GetConfigRequest.php | 34 + .../Aliyun/Log/Models/GetConfigResponse.php | 37 + .../Aliyun/Log/Models/GetCursorRequest.php | 138 + .../Aliyun/Log/Models/GetCursorResponse.php | 41 + .../Log/Models/GetHistogramsRequest.php | 161 + .../Log/Models/GetHistogramsResponse.php | 77 + .../Aliyun/Log/Models/GetLogsRequest.php | 242 + .../Aliyun/Log/Models/GetLogsResponse.php | 81 + .../Log/Models/GetMachineGroupRequest.php | 31 + .../Log/Models/GetMachineGroupResponse.php | 36 + .../Aliyun/Log/Models/GetMachineRequest.php | 34 + .../Aliyun/Log/Models/GetMachineResponse.php | 38 + .../Aliyun/Log/Models/Histogram.php | 90 + .../Aliyun/Log/Models/ListACLsRequest.php | 51 + .../Aliyun/Log/Models/ListACLsResponse.php | 44 + .../Aliyun/Log/Models/ListConfigsRequest.php | 54 + .../Aliyun/Log/Models/ListConfigsResponse.php | 44 + .../Log/Models/ListLogstoresRequest.php | 24 + .../Log/Models/ListLogstoresResponse.php | 57 + .../Log/Models/ListMachineGroupsRequest.php | 53 + .../Log/Models/ListMachineGroupsResponse.php | 45 + .../Aliyun/Log/Models/ListShardsRequest.php | 36 + .../Aliyun/Log/Models/ListShardsResponse.php | 43 + .../Aliyun/Log/Models/ListTopicsRequest.php | 102 + .../Aliyun/Log/Models/ListTopicsResponse.php | 73 + .../Aliyun/Log/Models/LogItem.php | 92 + .../Aliyun/Log/Models/Machine.php | 173 + .../Aliyun/Log/Models/MachineGroup.php | 132 + .../Aliyun/Log/Models/MergeShardsRequest.php | 39 + .../Aliyun/Log/Models/PutLogsRequest.php | 156 + .../Aliyun/Log/Models/PutLogsResponse.php | 24 + .../Aliyun/Log/Models/QueriedLog.php | 72 + .../RemoveConfigFromMachineGroupRequest.php | 40 + .../RemoveConfigFromMachineGroupResponse.php | 28 + .../Aliyun/Log/Models/Request.php | 47 + .../Aliyun/Log/Models/Response.php | 58 + .../Aliyun/Log/Models/Shard.php | 95 + .../Aliyun/Log/Models/SplitShardRequest.php | 44 + .../Aliyun/Log/Models/UpdateACLRequest.php | 31 + .../Aliyun/Log/Models/UpdateACLResponse.php | 29 + .../Aliyun/Log/Models/UpdateConfigRequest.php | 33 + .../Log/Models/UpdateConfigResponse.php | 29 + .../Log/Models/UpdateLogstoreRequest.php | 42 + .../Log/Models/UpdateLogstoreResponse.php | 28 + .../Log/Models/UpdateMachineGroupRequest.php | 34 + .../Log/Models/UpdateMachineGroupResponse.php | 29 + aliyun-log-php-sdk-master/Aliyun/Log/Util.php | 220 + .../Aliyun/Log/log.proto.php | 629 ++ .../Aliyun/Log/protocolbuffers.inc.php | 315 + .../Aliyun/Log/requestcore.class.php | 1026 ++ .../Aliyun/Log/sls.proto.php | 515 + aliyun-log-php-sdk-master/License.txt | 26 + aliyun-log-php-sdk-master/Log_Autoload.php | 20 + aliyun-log-php-sdk-master/README.md | 37 + aliyun-log-php-sdk-master/build.bat | 119 + aliyun-log-php-sdk-master/build.md | 54 + aliyun-log-php-sdk-master/build.sh | 116 + aliyun-log-php-sdk-master/docs/classes.svg | 806 ++ .../docs/classes/Aliyun_Log_Client.html | 2183 ++++ .../docs/classes/Aliyun_Log_Exception.html | 414 + .../docs/classes/Aliyun_Log_Models_ACL.html | 1114 ++ ...dels_ApplyConfigToMachineGroupRequest.html | 556 + ...els_ApplyConfigToMachineGroupResponse.html | 366 + ...Aliyun_Log_Models_BatchGetLogsRequest.html | 732 ++ ...liyun_Log_Models_BatchGetLogsResponse.html | 667 ++ .../Aliyun_Log_Models_CompressedLogGroup.html | 300 + .../classes/Aliyun_Log_Models_Config.html | 1113 ++ .../Aliyun_Log_Models_Config_InputDetail.html | 590 ++ ...Aliyun_Log_Models_Config_OutputDetail.html | 328 + .../Aliyun_Log_Models_CreateACLRequest.html | 446 + .../Aliyun_Log_Models_CreateACLResponse.html | 431 + ...Aliyun_Log_Models_CreateConfigRequest.html | 446 + ...liyun_Log_Models_CreateConfigResponse.html | 366 + ...iyun_Log_Models_CreateLogstoreRequest.html | 531 + ...yun_Log_Models_CreateLogstoreResponse.html | 366 + ..._Log_Models_CreateMachineGroupRequest.html | 446 + ...Log_Models_CreateMachineGroupResponse.html | 366 + .../Aliyun_Log_Models_DeleteACLRequest.html | 446 + .../Aliyun_Log_Models_DeleteACLResponse.html | 366 + ...Aliyun_Log_Models_DeleteConfigRequest.html | 446 + ...liyun_Log_Models_DeleteConfigResponse.html | 366 + ...iyun_Log_Models_DeleteLogstoreRequest.html | 401 + ...yun_Log_Models_DeleteLogstoreResponse.html | 366 + ..._Log_Models_DeleteMachineGroupRequest.html | 446 + ...Log_Models_DeleteMachineGroupResponse.html | 366 + .../Aliyun_Log_Models_DeleteShardRequest.html | 486 + ...Aliyun_Log_Models_DeleteShardResponse.html | 366 + .../Aliyun_Log_Models_GetACLRequest.html | 446 + .../Aliyun_Log_Models_GetACLResponse.html | 431 + .../Aliyun_Log_Models_GetConfigRequest.html | 446 + .../Aliyun_Log_Models_GetConfigResponse.html | 431 + .../Aliyun_Log_Models_GetCursorRequest.html | 740 ++ .../Aliyun_Log_Models_GetCursorResponse.html | 427 + ...liyun_Log_Models_GetHistogramsRequest.html | 831 ++ ...iyun_Log_Models_GetHistogramsResponse.html | 549 + .../Aliyun_Log_Models_GetLogsRequest.html | 1128 ++ .../Aliyun_Log_Models_GetLogsResponse.html | 549 + ...yun_Log_Models_GetMachineGroupRequest.html | 446 + ...un_Log_Models_GetMachineGroupResponse.html | 431 + .../Aliyun_Log_Models_GetMachineRequest.html | 446 + .../Aliyun_Log_Models_GetMachineResponse.html | 431 + .../classes/Aliyun_Log_Models_Histogram.html | 494 + .../Aliyun_Log_Models_ListACLsRequest.html | 666 ++ .../Aliyun_Log_Models_ListACLsResponse.html | 431 + .../Aliyun_Log_Models_ListConfigsRequest.html | 666 ++ ...liyun_Log_Models_ListLogstoresRequest.html | 336 + ...iyun_Log_Models_ListLogstoresResponse.html | 488 + ...n_Log_Models_ListMachineGroupsRequest.html | 666 ++ ..._Log_Models_ListMachineGroupsResponse.html | 561 + .../Aliyun_Log_Models_ListShardsRequest.html | 446 + .../Aliyun_Log_Models_ListShardsResponse.html | 471 + .../Aliyun_Log_Models_ListTopicsRequest.html | 633 ++ .../Aliyun_Log_Models_ListTopicsResponse.html | 549 + .../classes/Aliyun_Log_Models_LogItem.html | 481 + .../classes/Aliyun_Log_Models_Machine.html | 999 ++ .../Aliyun_Log_Models_MachineGroup.html | 999 ++ ...og_Models_MachineGroup_GroupAttribute.html | 329 + .../Aliyun_Log_Models_Machine_Info.html | 613 ++ .../Aliyun_Log_Models_Machine_Status.html | 328 + .../Aliyun_Log_Models_MergeShardsRequest.html | 486 + .../Aliyun_Log_Models_PutLogsRequest.html | 831 ++ .../Aliyun_Log_Models_PutLogsResponse.html | 366 + .../classes/Aliyun_Log_Models_QueriedLog.html | 427 + ...s_RemoveConfigFromMachineGroupRequest.html | 556 + ..._RemoveConfigFromMachineGroupResponse.html | 366 + .../classes/Aliyun_Log_Models_Request.html | 335 + .../classes/Aliyun_Log_Models_Response.html | 365 + .../docs/classes/Aliyun_Log_Models_Shard.html | 567 + .../Aliyun_Log_Models_SplitShardRequest.html | 526 + .../Aliyun_Log_Models_UpdateACLRequest.html | 446 + .../Aliyun_Log_Models_UpdateACLResponse.html | 366 + ...Aliyun_Log_Models_UpdateConfigRequest.html | 446 + ...liyun_Log_Models_UpdateConfigResponse.html | 366 + ...iyun_Log_Models_UpdateLogstoreRequest.html | 531 + ...yun_Log_Models_UpdateLogstoreResponse.html | 366 + ..._Log_Models_UpdateMachineGroupRequest.html | 446 + ...Log_Models_UpdateMachineGroupResponse.html | 366 + .../docs/classes/Aliyun_Log_Util.html | 612 ++ .../docs/classes/Aliyun_Sls_Client.html | 427 + .../docs/classes/Aliyun_Sls_Exception.html | 188 + ...liyun_Sls_Models_GetHistogramsRequest.html | 378 + ...iyun_Sls_Models_GetHistogramsResponse.html | 268 + .../Aliyun_Sls_Models_GetLogsRequest.html | 493 + .../Aliyun_Sls_Models_GetLogsResponse.html | 268 + .../classes/Aliyun_Sls_Models_Histogram.html | 229 + ...liyun_Sls_Models_ListLogstoresRequest.html | 181 + ...iyun_Sls_Models_ListLogstoresResponse.html | 245 + .../Aliyun_Sls_Models_ListTopicsRequest.html | 300 + .../Aliyun_Sls_Models_ListTopicsResponse.html | 268 + .../classes/Aliyun_Sls_Models_LogItem.html | 218 + .../Aliyun_Sls_Models_PutLogsRequest.html | 339 + .../Aliyun_Sls_Models_PutLogsResponse.html | 192 + .../classes/Aliyun_Sls_Models_QueriedLog.html | 201 + .../classes/Aliyun_Sls_Models_Request.html | 160 + .../classes/Aliyun_Sls_Models_Response.html | 173 + .../docs/classes/Aliyun_Sls_Util.html | 230 + .../docs/classes/Log.html | 996 ++ .../docs/classes/LogGroup.html | 1376 +++ .../docs/classes/LogGroupList.html | 806 ++ .../docs/classes/LogPackage.html | 857 ++ .../docs/classes/LogPackageList.html | 806 ++ .../docs/classes/Log_Content.html | 857 ++ .../docs/classes/Protobuf.html | 1880 ++++ .../docs/classes/ProtobufEnum.html | 233 + .../docs/classes/ProtobufMessage.html | 237 + .../docs/classes/RequestCore.html | 2112 ++++ .../docs/classes/RequestCore_Exception.html | 189 + .../docs/classes/ResponseCore.html | 338 + .../docs/css/bootstrap-responsive.css | 567 + .../docs/css/bootstrap-responsive.min.css | 3 + .../docs/css/bootstrap.css | 3370 ++++++ .../docs/css/bootstrap.min.css | 611 ++ .../docs/css/jquery.iviewer.css | 91 + .../docs/css/prettify.css | 1 + .../docs/css/template.css | 530 + .../docs/deprecated.html | 126 + aliyun-log-php-sdk-master/docs/errors.html | 6512 ++++++++++++ .../docs/graph_class.html | 127 + .../docs/img/apple-touch-icon-114x114.png | Bin 0 -> 28338 bytes .../docs/img/apple-touch-icon-72x72.png | Bin 0 -> 12751 bytes .../docs/img/apple-touch-icon.png | Bin 0 -> 8358 bytes .../docs/img/favicon.ico | Bin 0 -> 1150 bytes .../docs/img/glyphicons-halflings-white.png | Bin 0 -> 4352 bytes .../docs/img/glyphicons-halflings.png | Bin 0 -> 4352 bytes .../docs/img/icons/arrow_down.png | Bin 0 -> 606 bytes .../docs/img/icons/arrow_right.png | Bin 0 -> 628 bytes .../docs/img/icons/class.png | Bin 0 -> 395 bytes .../docs/img/icons/constant.png | Bin 0 -> 496 bytes .../docs/img/icons/favicon.ico | Bin 0 -> 1150 bytes .../docs/img/icons/file-php.png | Bin 0 -> 4017 bytes .../docs/img/icons/file.gif | Bin 0 -> 110 bytes .../docs/img/icons/folder.gif | Bin 0 -> 106 bytes .../docs/img/icons/function.png | Bin 0 -> 338 bytes .../docs/img/icons/icon-folder-open-big.png | Bin 0 -> 232 bytes .../docs/img/icons/icon-th-big.png | Bin 0 -> 106 bytes .../docs/img/icons/icon_template.svg | 93 + .../docs/img/icons/interface.png | Bin 0 -> 281 bytes .../docs/img/icons/method.png | Bin 0 -> 377 bytes .../docs/img/icons/ok.png | Bin 0 -> 3685 bytes .../docs/img/icons/property.png | Bin 0 -> 360 bytes .../docs/img/icons/search.gif | Bin 0 -> 152 bytes .../docs/img/icons/variable.png | Bin 0 -> 829 bytes .../docs/img/icons/view_source.png | Bin 0 -> 603 bytes .../docs/img/icons/visibility_private.png | Bin 0 -> 3433 bytes .../docs/img/icons/visibility_protected.png | Bin 0 -> 764 bytes .../docs/img/icons/visibility_public.png | Bin 0 -> 3451 bytes .../docs/img/iviewer/grab.cur | Bin 0 -> 1150 bytes .../docs/img/iviewer/hand.cur | Bin 0 -> 1150 bytes .../docs/img/iviewer/iviewer.rotate_left.png | Bin 0 -> 1493 bytes .../docs/img/iviewer/iviewer.rotate_right.png | Bin 0 -> 1482 bytes .../docs/img/iviewer/iviewer.zoom_fit.png | Bin 0 -> 1252 bytes .../docs/img/iviewer/iviewer.zoom_fit2.gif | Bin 0 -> 95 bytes .../docs/img/iviewer/iviewer.zoom_in.png | Bin 0 -> 1420 bytes .../docs/img/iviewer/iviewer.zoom_in2.gif | Bin 0 -> 90 bytes .../docs/img/iviewer/iviewer.zoom_out.png | Bin 0 -> 1416 bytes .../docs/img/iviewer/iviewer.zoom_out2.gif | Bin 0 -> 69 bytes .../docs/img/iviewer/iviewer.zoom_zero.png | Bin 0 -> 1091 bytes .../docs/img/iviewer/iviewer.zoom_zero2.gif | Bin 0 -> 98 bytes aliyun-log-php-sdk-master/docs/img/loader.gif | Bin 0 -> 4726 bytes aliyun-log-php-sdk-master/docs/index.html | 160 + aliyun-log-php-sdk-master/docs/js/SVGPan.js | 232 + .../docs/js/bootstrap.js | 1722 +++ .../docs/js/bootstrap.min.js | 1 + .../docs/js/jqplot/MIT-LICENSE.txt | 21 + .../docs/js/jqplot/README.txt | 77 + .../docs/js/jqplot/changes.txt | 458 + .../docs/js/jqplot/copyright.txt | 56 + .../docs/js/jqplot/excanvas.min.js | 3 + .../docs/js/jqplot/gpl-2.0.txt | 280 + .../docs/js/jqplot/jquery.jqplot.min.css | 1 + .../docs/js/jqplot/jquery.jqplot.min.js | 3 + .../plugins/jqplot.BezierCurveRenderer.min.js | 3 + .../jqplot/plugins/jqplot.barRenderer.min.js | 3 + .../plugins/jqplot.blockRenderer.min.js | 3 + .../plugins/jqplot.bubbleRenderer.min.js | 3 + .../jqplot.canvasAxisLabelRenderer.min.js | 3 + .../jqplot.canvasAxisTickRenderer.min.js | 3 + .../plugins/jqplot.canvasOverlay.min.js | 3 + .../plugins/jqplot.canvasTextRenderer.min.js | 3 + .../jqplot.categoryAxisRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.ciParser.min.js | 3 + .../js/jqplot/plugins/jqplot.cursor.min.js | 3 + .../plugins/jqplot.dateAxisRenderer.min.js | 3 + .../plugins/jqplot.donutRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.dragable.min.js | 3 + .../jqplot.enhancedLegendRenderer.min.js | 3 + .../plugins/jqplot.funnelRenderer.min.js | 3 + .../jqplot/plugins/jqplot.highlighter.min.js | 3 + .../js/jqplot/plugins/jqplot.json2.min.js | 3 + .../plugins/jqplot.logAxisRenderer.min.js | 3 + .../plugins/jqplot.mekkoAxisRenderer.min.js | 3 + .../plugins/jqplot.mekkoRenderer.min.js | 3 + .../plugins/jqplot.meterGaugeRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.mobile.min.js | 3 + .../jqplot/plugins/jqplot.ohlcRenderer.min.js | 3 + .../jqplot/plugins/jqplot.pieRenderer.min.js | 3 + .../jqplot/plugins/jqplot.pointLabels.min.js | 3 + .../plugins/jqplot.pyramidAxisRenderer.min.js | 3 + .../plugins/jqplot.pyramidGridRenderer.min.js | 3 + .../plugins/jqplot.pyramidRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.trendline.min.js | 3 + .../docs/js/jquery-1.4.2.min.js | 154 + .../docs/js/jquery-1.7.1.min.js | 9270 +++++++++++++++++ .../docs/js/jquery-ui-1.8.2.custom.min.js | 1012 ++ .../docs/js/jquery.cookie.js | 104 + .../docs/js/jquery.iviewer.js | 1045 ++ .../docs/js/jquery.iviewer.min.js | 42 + .../docs/js/jquery.mousewheel.min.js | 13 + .../docs/js/jquery.panzoom.js | 467 + .../docs/js/jquery.splitter.js | 228 + .../docs/js/jquery.tools.min.js | 115 + .../docs/js/jquery.treeview.js | 256 + .../docs/js/jquery.xml2json.js | 193 + aliyun-log-php-sdk-master/docs/js/menu.js | 31 + .../docs/js/prettify/lang-apollo.js | 2 + .../docs/js/prettify/lang-clj.js | 18 + .../docs/js/prettify/lang-css.js | 2 + .../docs/js/prettify/lang-go.js | 1 + .../docs/js/prettify/lang-hs.js | 2 + .../docs/js/prettify/lang-lisp.js | 3 + .../docs/js/prettify/lang-lua.js | 2 + .../docs/js/prettify/lang-ml.js | 2 + .../docs/js/prettify/lang-n.js | 4 + .../docs/js/prettify/lang-proto.js | 1 + .../docs/js/prettify/lang-scala.js | 2 + .../docs/js/prettify/lang-sql.js | 2 + .../docs/js/prettify/lang-tex.js | 1 + .../docs/js/prettify/lang-vb.js | 2 + .../docs/js/prettify/lang-vhdl.js | 3 + .../docs/js/prettify/lang-wiki.js | 2 + .../docs/js/prettify/lang-xq.js | 3 + .../docs/js/prettify/lang-yaml.js | 2 + .../docs/js/prettify/prettify.min.js | 28 + aliyun-log-php-sdk-master/docs/js/sidebar.js | 45 + aliyun-log-php-sdk-master/docs/js/template.js | 205 + aliyun-log-php-sdk-master/docs/markers.html | 149 + .../docs/namespaces/default.html | 946 ++ .../docs/namespaces/global.html | 64 + .../docs/packages/LOG.PHP.SDK.html | 849 ++ .../docs/packages/SLS_PHP_SDK.html | 341 + .../docs/packages/default.html | 871 ++ .../docs/packages/global.html | 71 + ...-file_424e0cdbe1d8550cc6c3e07815137cf1.dat | Bin 0 -> 11541 bytes ...-file_239fdc416f469298cd1d8b3894560f8f.dat | Bin 0 -> 11461 bytes ...-file_e950411f3233965341425c00386f74b6.dat | Bin 0 -> 25663 bytes ...-file_1c392768ee1a3da61f3d0da0697fea34.dat | Bin 0 -> 11844 bytes ...-file_4a330a9886b7d589ce4e8e58d44ba117.dat | Bin 0 -> 8614 bytes ...-file_db8b17c85c92f5cd1dc7bcebb8b51a91.dat | Bin 0 -> 11077 bytes ...-file_9cfae108f097ba834f8a70c4d750ed49.dat | Bin 0 -> 11826 bytes ...-file_42d5b12b53b855f9c9dfdc8ecfbea730.dat | Bin 0 -> 12047 bytes ...-file_d04ca1a3e5b98be562c06133b85c6bed.dat | Bin 0 -> 8112 bytes ...-file_0fc03e122a99c30ce16ac816aa8499b6.dat | Bin 0 -> 77331 bytes ...-file_043c0d130c3959f07f50004ac3be54cb.dat | Bin 0 -> 12091 bytes ...-file_5cae177591fe5ac0a1dab9ac209c1c1b.dat | Bin 0 -> 21959 bytes ...-file_befea0fb710377d3d74384acc8ac6f73.dat | Bin 0 -> 9321 bytes ...-file_d8d56dabae20fabbe5c6da0b12819779.dat | Bin 0 -> 170865 bytes .../phpdoc-cache-2e/phpdoc-cache-settings.dat | Bin 0 -> 113 bytes ...-file_f5405c3c5c5fc494748cb07df138322d.dat | Bin 0 -> 88510 bytes ...-file_6313c8684ed97495cd6c85612f310684.dat | Bin 0 -> 2858 bytes ...-file_a31d8d8bdbf8bc378c56fd06b3122622.dat | Bin 0 -> 12216 bytes ...-file_d6cb4bffbb7093993c2e3ddd7464211f.dat | Bin 0 -> 24565 bytes ...-file_efb52bdd9e5022f63e1f5c5b16204894.dat | Bin 0 -> 31927 bytes ...-file_6ff3a57f72c80f7c257907a164767deb.dat | Bin 0 -> 13243 bytes ...-file_7dd5a8a267c2bb3bb22a532edb9c4890.dat | Bin 0 -> 19708 bytes ...-file_c58271b0facec38e308da7b508fe9746.dat | Bin 0 -> 21925 bytes ...-file_b56043cecf89b902d8b52925d416c591.dat | Bin 0 -> 11806 bytes ...-file_35ce96c5f13282e37883b76fbc3700ba.dat | Bin 0 -> 15743 bytes ...-file_7776662ea84a69e69d9d5da728a7cea9.dat | Bin 0 -> 11954 bytes ...-file_057ef5bd7fe349062dc95ad9a8773e29.dat | Bin 0 -> 17935 bytes ...-file_61a90ff181c5c772e32ae8fddfdb312a.dat | Bin 0 -> 10179 bytes ...-file_d8f2b64012850a915be7e15614534768.dat | Bin 0 -> 17011 bytes ...-file_d6dd53c34462d9757a033733092fd717.dat | Bin 0 -> 15820 bytes ...-file_d9eb40c32fd684d682ba1c38f2f2057e.dat | Bin 0 -> 17080 bytes ...-file_907e5981bb6d352820e9c887f71ad4b2.dat | Bin 0 -> 65649 bytes ...-file_ae48161c1a610ae22e59f425554923a2.dat | Bin 0 -> 9150 bytes ...-file_0e2b1834343fe7493719b38219495707.dat | Bin 0 -> 8727 bytes ...-file_ac70b900963477bd571a40889a8222e3.dat | Bin 0 -> 8164 bytes ...-file_64fbfaecce4182adaeea7db58c8c7078.dat | Bin 0 -> 14952 bytes ...-file_33bab02b6179f04997b58b65c132c68c.dat | Bin 0 -> 8043 bytes ...-file_0b420644fbf2dc3fcb1bcd516a3a5cef.dat | Bin 0 -> 17373 bytes ...-file_3b288dc7f24c47367f12d4377ea730b2.dat | Bin 0 -> 11942 bytes ...-file_d8a9fc52043a78382d8e14f41cb4ec8c.dat | Bin 0 -> 47781 bytes ...-file_20a8145ca319876006e349323015ecf9.dat | Bin 0 -> 36921 bytes ...-file_308f8f3c212c2a3ab519e7c91d57777c.dat | Bin 0 -> 9321 bytes ...-file_658549a7f082125e0eccd85d6fb3c889.dat | Bin 0 -> 142613 bytes ...-file_bfb95c6f671d3e9487a47457d389c963.dat | Bin 0 -> 8641 bytes ...-file_8470790d20462f59d0d601de5a2fff98.dat | Bin 0 -> 11564 bytes ...-file_c4b83b19700ccd0f3e482c222d230634.dat | Bin 0 -> 36884 bytes ...-file_e29975f434337874926cc56f83f46a53.dat | Bin 0 -> 14952 bytes ...-file_e211465a4afaa5dfd432e771e219506d.dat | Bin 0 -> 14895 bytes ...-file_5f722231448e1dfaeeaf275837449ebb.dat | Bin 0 -> 21844 bytes ...-file_20584308410b4d1dabc28f547db8f494.dat | Bin 0 -> 9321 bytes ...-file_19962b08746064d77e3a2f26cf9b714e.dat | Bin 0 -> 11291 bytes ...-file_723d90661ec6aa78643b6d35954dbe79.dat | Bin 0 -> 19772 bytes ...-file_848c2b437f0a852db6d20f78b1383ee1.dat | Bin 0 -> 8636 bytes ...-file_3f9912308a2f021882d8a049327e55e2.dat | Bin 0 -> 8614 bytes ...-file_e14c7a62929e97cc1ff762113b7ee3a5.dat | Bin 0 -> 8695 bytes ...-file_ef8ef9fdc27c9460f71596ff2324ae8c.dat | Bin 0 -> 8695 bytes ...-file_0fd650466eea1b8cc68d0ae25a1c0f82.dat | Bin 0 -> 8695 bytes ...-file_47574feaa2e9cbf683781c5a22d018a0.dat | Bin 0 -> 17320 bytes ...-file_6ed2a9f60ef6cdc647b28ddc2244993c.dat | Bin 0 -> 15412 bytes ...-file_2cb88af744a097f913a23624bb5619d2.dat | Bin 0 -> 149418 bytes ...-file_716db9981f9e7bc7f6c92df08f9409a3.dat | Bin 0 -> 12535 bytes ...-file_7cb90261b19c7e04da8ec60f354801c9.dat | Bin 0 -> 23779 bytes ...-file_88763950b80fc33089a62fc59b497cca.dat | Bin 0 -> 12084 bytes ...-file_47bc050b33010792ff800281f9ab6dc9.dat | Bin 0 -> 8641 bytes ...-file_67e08eec21427b946ae9f8ead3ff6c16.dat | Bin 0 -> 14653 bytes ...-file_52fa4255ca51e497353b3f3515b12b95.dat | Bin 0 -> 35161 bytes ...-file_ad9decfd35298d5bab34675b2280d19c.dat | Bin 0 -> 11876 bytes ...-file_3f199544b9edab0d74f9448763ba52db.dat | Bin 0 -> 20173 bytes ...-file_38819c6dd08be809a9c72f4b982ecf3e.dat | Bin 0 -> 43857 bytes ...-file_5e197af49407fac1911a3ef5a4a6ad18.dat | Bin 0 -> 54819 bytes ...-file_d506ea9bbbc4f3d805844520d3ec0efe.dat | Bin 0 -> 164636 bytes ...-file_ed3435d0e8e77045c2a1ff0b58e73a53.dat | Bin 0 -> 11393 bytes ...-file_06ec2c5b068f0ae1b722c99c2490f351.dat | Bin 0 -> 12881 bytes ...-file_38b90a17812e1f65c338aff8358743a4.dat | Bin 0 -> 12211 bytes ...-file_8e8db8f681c785206efde8c4713d9f33.dat | Bin 0 -> 20361 bytes ...-file_9f56fc28a2fbf022c08546d3cf110bbf.dat | Bin 0 -> 31407 bytes ...-file_2806c1b43d62b4a0733db0ddb4db1b9c.dat | Bin 0 -> 11832 bytes ...-file_d766c13060c61fa4aa7df4e997460371.dat | Bin 0 -> 11884 bytes ...-file_072385bdf5603e202c735bd51ac26c6d.dat | Bin 0 -> 17080 bytes ...-file_5dda9d326f95130c506937e970e32e5c.dat | Bin 0 -> 8758 bytes ...-file_364006e4e5cb229119c1ce811eac4432.dat | Bin 0 -> 12122 bytes aliyun-log-php-sdk-master/docs/structure.xml | 6361 +++++++++++ aliyun-log-php-sdk-master/sample/sample.php | 203 + .../AliyunMNS/AsyncCallback.php | 29 + aliyun-mns-php-sdk-1.3.3/AliyunMNS/Client.php | 249 + .../AliyunMNS/Common/XMLParser.php | 51 + aliyun-mns-php-sdk-1.3.3/AliyunMNS/Config.php | 74 + .../AliyunMNS/Constants.php | 76 + .../Exception/BatchDeleteFailException.php | 35 + .../Exception/BatchSendFailException.php | 35 + .../Exception/InvalidArgumentException.php | 10 + .../Exception/MalformedXMLException.php | 10 + .../Exception/MessageNotExistException.php | 10 + .../AliyunMNS/Exception/MnsException.php | 65 + .../Exception/QueueAlreadyExistException.php | 10 + .../Exception/QueueNotExistException.php | 10 + .../Exception/ReceiptHandleErrorException.php | 10 + .../SubscriptionAlreadyExistException.php | 10 + .../SubscriptionNotExistException.php | 9 + .../Exception/TopicAlreadyExistException.php | 10 + .../Exception/TopicNotExistException.php | 10 + .../AliyunMNS/Http/HttpClient.php | 167 + .../AliyunMNS/Model/AccountAttributes.php | 64 + .../AliyunMNS/Model/BatchSmsAttributes.php | 97 + .../Model/DeleteMessageErrorItem.php | 83 + .../AliyunMNS/Model/MailAttributes.php | 128 + .../AliyunMNS/Model/Message.php | 145 + .../AliyunMNS/Model/MessageAttributes.php | 53 + .../AliyunMNS/Model/QueueAttributes.php | 308 + .../Model/SendMessageRequestItem.php | 27 + .../Model/SendMessageResponseItem.php | 119 + .../AliyunMNS/Model/SmsAttributes.php | 103 + .../Model/SubscriptionAttributes.php | 207 + .../AliyunMNS/Model/TopicAttributes.php | 179 + .../Model/UpdateSubscriptionAttributes.php | 58 + .../AliyunMNS/Model/WebSocketAttributes.php | 33 + aliyun-mns-php-sdk-1.3.3/AliyunMNS/Queue.php | 377 + .../AliyunMNS/Requests/BaseRequest.php | 75 + .../Requests/BatchDeleteMessageRequest.php | 50 + .../Requests/BatchPeekMessageRequest.php | 41 + .../Requests/BatchReceiveMessageRequest.php | 58 + .../Requests/BatchSendMessageRequest.php | 76 + .../ChangeMessageVisibilityRequest.php | 47 + .../AliyunMNS/Requests/CreateQueueRequest.php | 53 + .../AliyunMNS/Requests/CreateTopicRequest.php | 53 + .../Requests/DeleteMessageRequest.php | 40 + .../AliyunMNS/Requests/DeleteQueueRequest.php | 33 + .../AliyunMNS/Requests/DeleteTopicRequest.php | 33 + .../Requests/GetAccountAttributesRequest.php | 23 + .../Requests/GetQueueAttributeRequest.php | 32 + .../GetSubscriptionAttributeRequest.php | 39 + .../Requests/GetTopicAttributeRequest.php | 32 + .../AliyunMNS/Requests/ListQueueRequest.php | 86 + .../Requests/ListSubscriptionRequest.php | 97 + .../AliyunMNS/Requests/ListTopicRequest.php | 86 + .../AliyunMNS/Requests/PeekMessageRequest.php | 33 + .../Requests/PublishMessageRequest.php | 51 + .../Requests/ReceiveMessageRequest.php | 43 + .../AliyunMNS/Requests/SendMessageRequest.php | 67 + .../Requests/SetAccountAttributesRequest.php | 46 + .../Requests/SetQueueAttributeRequest.php | 53 + .../SetSubscriptionAttributeRequest.php | 46 + .../Requests/SetTopicAttributeRequest.php | 53 + .../AliyunMNS/Requests/SubscribeRequest.php | 42 + .../AliyunMNS/Requests/UnsubscribeRequest.php | 39 + .../AliyunMNS/Responses/BaseResponse.php | 33 + .../Responses/BatchDeleteMessageResponse.php | 95 + .../Responses/BatchPeekMessageResponse.php | 97 + .../Responses/BatchReceiveMessageResponse.php | 98 + .../Responses/BatchSendMessageResponse.php | 117 + .../ChangeMessageVisibilityResponse.php | 96 + .../Responses/CreateQueueResponse.php | 66 + .../Responses/CreateTopicResponse.php | 66 + .../Responses/DeleteMessageResponse.php | 64 + .../Responses/DeleteQueueResponse.php | 46 + .../Responses/DeleteTopicResponse.php | 46 + .../GetAccountAttributesResponse.php | 68 + .../Responses/GetQueueAttributeResponse.php | 73 + .../GetSubscriptionAttributeResponse.php | 88 + .../Responses/GetTopicAttributeResponse.php | 88 + .../AliyunMNS/Responses/ListQueueResponse.php | 109 + .../Responses/ListSubscriptionResponse.php | 121 + .../AliyunMNS/Responses/ListTopicResponse.php | 124 + .../AliyunMNS/Responses/MnsPromise.php | 50 + .../Responses/PeekMessageResponse.php | 85 + .../Responses/PublishMessageResponse.php | 74 + .../Responses/ReceiveMessageResponse.php | 83 + .../Responses/SendMessageResponse.php | 74 + .../SetAccountAttributesResponse.php | 47 + .../Responses/SetQueueAttributeResponse.php | 57 + .../SetSubscriptionAttributeResponse.php | 63 + .../Responses/SetTopicAttributeResponse.php | 66 + .../AliyunMNS/Responses/SubscribeResponse.php | 66 + .../Responses/UnsubscribeResponse.php | 48 + .../AliyunMNS/Signature/Signature.php | 53 + aliyun-mns-php-sdk-1.3.3/AliyunMNS/Topic.php | 128 + .../AliyunMNS/Traits/MessageIdAndMD5.php | 30 + .../Traits/MessagePropertiesForPeek.php | 63 + .../Traits/MessagePropertiesForPublish.php | 45 + .../Traits/MessagePropertiesForReceive.php | 33 + .../Traits/MessagePropertiesForSend.php | 63 + .../GuzzleHttp/Client.php | 397 + .../GuzzleHttp/ClientInterface.php | 84 + .../GuzzleHttp/Cookie/CookieJar.php | 277 + .../GuzzleHttp/Cookie/CookieJarInterface.php | 84 + .../GuzzleHttp/Cookie/FileCookieJar.php | 87 + .../GuzzleHttp/Cookie/SessionCookieJar.php | 72 + .../GuzzleHttp/Cookie/SetCookie.php | 404 + .../Exception/BadResponseException.php | 7 + .../GuzzleHttp/Exception/ClientException.php | 7 + .../GuzzleHttp/Exception/ConnectException.php | 37 + .../GuzzleHttp/Exception/GuzzleException.php | 4 + .../GuzzleHttp/Exception/RequestException.php | 144 + .../GuzzleHttp/Exception/SeekException.php | 27 + .../GuzzleHttp/Exception/ServerException.php | 7 + .../Exception/TooManyRedirectsException.php | 4 + .../Exception/TransferException.php | 4 + .../GuzzleHttp/Handler/CurlFactory.php | 532 + .../Handler/CurlFactoryInterface.php | 27 + .../GuzzleHttp/Handler/CurlHandler.php | 45 + .../GuzzleHttp/Handler/CurlMultiHandler.php | 197 + .../GuzzleHttp/Handler/EasyHandle.php | 87 + .../GuzzleHttp/Handler/MockHandler.php | 163 + .../GuzzleHttp/Handler/Proxy.php | 54 + .../GuzzleHttp/Handler/StreamHandler.php | 456 + .../GuzzleHttp/HandlerStack.php | 272 + .../GuzzleHttp/MessageFormatter.php | 182 + .../GuzzleHttp/Middleware.php | 253 + aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Pool.php | 123 + .../GuzzleHttp/PrepareBodyMiddleware.php | 112 + .../GuzzleHttp/Promise/AggregateException.php | 16 + .../Promise/CancellationException.php | 9 + .../GuzzleHttp/Promise/EachPromise.php | 202 + .../GuzzleHttp/Promise/FulfilledPromise.php | 80 + .../GuzzleHttp/Promise/Promise.php | 268 + .../GuzzleHttp/Promise/PromiseInterface.php | 93 + .../GuzzleHttp/Promise/PromisorInterface.php | 15 + .../GuzzleHttp/Promise/RejectedPromise.php | 84 + .../GuzzleHttp/Promise/RejectionException.php | 47 + .../GuzzleHttp/Promise/TaskQueue.php | 79 + .../GuzzleHttp/Promise/functions.php | 495 + .../GuzzleHttp/Promise/functions_include.php | 6 + .../GuzzleHttp/Psr7/AppendStream.php | 233 + .../GuzzleHttp/Psr7/BufferStream.php | 137 + .../GuzzleHttp/Psr7/CachingStream.php | 136 + .../GuzzleHttp/Psr7/DroppingStream.php | 42 + .../GuzzleHttp/Psr7/FnStream.php | 149 + .../GuzzleHttp/Psr7/InflateStream.php | 29 + .../GuzzleHttp/Psr7/LazyOpenStream.php | 39 + .../GuzzleHttp/Psr7/LimitStream.php | 155 + .../GuzzleHttp/Psr7/MessageTrait.php | 158 + .../GuzzleHttp/Psr7/MultipartStream.php | 153 + .../GuzzleHttp/Psr7/NoSeekStream.php | 22 + .../GuzzleHttp/Psr7/PumpStream.php | 165 + .../GuzzleHttp/Psr7/Request.php | 149 + .../GuzzleHttp/Psr7/Response.php | 130 + .../GuzzleHttp/Psr7/Stream.php | 245 + .../GuzzleHttp/Psr7/StreamDecoratorTrait.php | 149 + .../GuzzleHttp/Psr7/StreamWrapper.php | 121 + .../GuzzleHttp/Psr7/Uri.php | 599 ++ .../GuzzleHttp/Psr7/functions.php | 802 ++ .../GuzzleHttp/Psr7/functions_include.php | 6 + .../GuzzleHttp/RedirectMiddleware.php | 231 + .../GuzzleHttp/RequestOptions.php | 244 + .../GuzzleHttp/RetryMiddleware.php | 111 + .../GuzzleHttp/TransferStats.php | 126 + .../GuzzleHttp/UriTemplate.php | 241 + .../GuzzleHttp/functions.php | 280 + .../GuzzleHttp/functions_include.php | 6 + .../Psr/Http/Message/MessageInterface.php | 187 + .../Psr/Http/Message/RequestInterface.php | 129 + .../Psr/Http/Message/ResponseInterface.php | 68 + .../Http/Message/ServerRequestInterface.php | 261 + .../Psr/Http/Message/StreamInterface.php | 158 + .../Http/Message/UploadedFileInterface.php | 123 + .../Psr/Http/Message/UriInterface.php | 323 + aliyun-mns-php-sdk-1.3.3/README.md | 5 + .../Queue/CreateQueueAndSendMessage.php | 116 + .../Topic/CreateTopicAndPublishMessage.php | 125 + .../Samples/Topic/http_server_sample.php | 113 + aliyun-mns-php-sdk-1.3.3/Tests/ClientTest.php | 539 + aliyun-mns-php-sdk-1.3.3/Tests/QueueTest.php | 494 + aliyun-mns-php-sdk-1.3.3/Tests/TopicTest.php | 522 + aliyun-mns-php-sdk-1.3.3/Tests/aliyun-mns.ini | 3 + aliyun-mns-php-sdk-1.3.3/mns-autoloader.php | 187 + aliyun-oss-php-sdk-2.2.2/.coveralls.yml | 2 + aliyun-oss-php-sdk-2.2.2/.gitignore | 8 + aliyun-oss-php-sdk-2.2.2/.travis.yml | 20 + aliyun-oss-php-sdk-2.2.2/CHANGELOG.md | 74 + aliyun-oss-php-sdk-2.2.2/LICENSE.md | 21 + aliyun-oss-php-sdk-2.2.2/README.md | 152 + aliyun-oss-php-sdk-2.2.2/autoload.php | 11 + aliyun-oss-php-sdk-2.2.2/build-phar.sh | 13 + aliyun-oss-php-sdk-2.2.2/composer.json | 24 + aliyun-oss-php-sdk-2.2.2/example.jpg | Bin 0 -> 21839 bytes aliyun-oss-php-sdk-2.2.2/index.php | 3 + aliyun-oss-php-sdk-2.2.2/phpunit.xml | 19 + aliyun-oss-php-sdk-2.2.2/samples/Bucket.php | 167 + .../samples/BucketCors.php | 108 + .../samples/BucketLifecycle.php | 109 + .../samples/BucketLogging.php | 95 + .../samples/BucketReferer.php | 101 + .../samples/BucketWebsite.php | 92 + aliyun-oss-php-sdk-2.2.2/samples/Callback.php | 83 + aliyun-oss-php-sdk-2.2.2/samples/Common.php | 84 + aliyun-oss-php-sdk-2.2.2/samples/Config.php | 15 + aliyun-oss-php-sdk-2.2.2/samples/Image.php | 87 + .../samples/LiveChannel.php | 125 + .../samples/MultipartUpload.php | 182 + aliyun-oss-php-sdk-2.2.2/samples/Object.php | 451 + aliyun-oss-php-sdk-2.2.2/samples/RunAll.php | 13 + .../samples/Signature.php | 143 + .../src/OSS/Core/MimeTypes.php | 262 + .../src/OSS/Core/OssException.php | 54 + .../src/OSS/Core/OssUtil.php | 448 + aliyun-oss-php-sdk-2.2.2/src/OSS/Http/LICENSE | 25 + .../src/OSS/Http/RequestCore.php | 848 ++ .../src/OSS/Http/RequestCore_Exception.php | 8 + .../src/OSS/Http/ResponseCore.php | 56 + .../src/OSS/Model/BucketInfo.php | 78 + .../src/OSS/Model/BucketListInfo.php | 39 + .../src/OSS/Model/CnameConfig.php | 99 + .../src/OSS/Model/CorsConfig.php | 113 + .../src/OSS/Model/CorsRule.php | 150 + .../src/OSS/Model/GetLiveChannelHistory.php | 34 + .../src/OSS/Model/GetLiveChannelInfo.php | 68 + .../src/OSS/Model/GetLiveChannelStatus.php | 107 + .../src/OSS/Model/LifecycleAction.php | 88 + .../src/OSS/Model/LifecycleConfig.php | 107 + .../src/OSS/Model/LifecycleRule.php | 126 + .../src/OSS/Model/ListMultipartUploadInfo.php | 134 + .../src/OSS/Model/ListPartsInfo.php | 97 + .../src/OSS/Model/LiveChannelConfig.php | 121 + .../src/OSS/Model/LiveChannelHistory.php | 59 + .../src/OSS/Model/LiveChannelInfo.php | 107 + .../src/OSS/Model/LiveChannelListInfo.php | 107 + .../src/OSS/Model/LoggingConfig.php | 86 + .../src/OSS/Model/ObjectInfo.php | 93 + .../src/OSS/Model/ObjectListInfo.php | 126 + .../src/OSS/Model/PartInfo.php | 63 + .../src/OSS/Model/PrefixInfo.php | 36 + .../src/OSS/Model/RefererConfig.php | 93 + .../src/OSS/Model/UploadInfo.php | 55 + .../src/OSS/Model/WebsiteConfig.php | 76 + .../src/OSS/Model/XmlConfig.php | 27 + .../src/OSS/OssClient.php | 2533 +++++ .../src/OSS/Result/AclResult.php | 32 + .../src/OSS/Result/AppendResult.php | 27 + .../src/OSS/Result/BodyResult.php | 19 + .../src/OSS/Result/CallbackResult.php | 21 + .../src/OSS/Result/CopyObjectResult.php | 30 + .../src/OSS/Result/DeleteObjectsResult.php | 27 + .../src/OSS/Result/ExistResult.php | 35 + .../src/OSS/Result/GetCnameResult.php | 19 + .../src/OSS/Result/GetCorsResult.php | 35 + .../src/OSS/Result/GetLifecycleResult.php | 41 + .../Result/GetLiveChannelHistoryResult.php | 19 + .../OSS/Result/GetLiveChannelInfoResult.php | 19 + .../OSS/Result/GetLiveChannelStatusResult.php | 19 + .../src/OSS/Result/GetLoggingResult.php | 41 + .../src/OSS/Result/GetRefererResult.php | 41 + .../src/OSS/Result/GetWebsiteResult.php | 40 + .../src/OSS/Result/HeaderResult.php | 23 + .../Result/InitiateMultipartUploadResult.php | 29 + .../src/OSS/Result/ListBucketsResult.php | 33 + .../src/OSS/Result/ListLiveChannelResult.php | 16 + .../OSS/Result/ListMultipartUploadResult.php | 55 + .../src/OSS/Result/ListObjectsResult.php | 71 + .../src/OSS/Result/ListPartsResult.php | 42 + .../src/OSS/Result/PutLiveChannelResult.php | 16 + .../src/OSS/Result/PutSetDeleteResult.php | 20 + .../src/OSS/Result/Result.php | 175 + .../src/OSS/Result/UploadPartResult.php | 28 + .../tests/OSS/Tests/AclResultTest.php | 59 + .../tests/OSS/Tests/BodyResultTest.php | 26 + .../tests/OSS/Tests/BucketCnameTest.php | 77 + .../tests/OSS/Tests/BucketInfoTest.php | 21 + .../tests/OSS/Tests/BucketLiveChannelTest.php | 283 + .../tests/OSS/Tests/CallbackTest.php | 297 + .../tests/OSS/Tests/CnameConfigTest.php | 77 + .../tests/OSS/Tests/Common.php | 70 + .../tests/OSS/Tests/ContentTypeTest.php | 133 + .../tests/OSS/Tests/CopyObjectResult.php | 52 + .../tests/OSS/Tests/CorsConfigTest.php | 140 + .../tests/OSS/Tests/ExistResultTest.php | 38 + .../tests/OSS/Tests/GetCorsResultTest.php | 67 + .../OSS/Tests/GetLifecycleResultTest.php | 59 + .../tests/OSS/Tests/GetLoggingResultTest.php | 51 + .../tests/OSS/Tests/GetRefererResultTest.php | 51 + .../tests/OSS/Tests/GetWebsiteResultTest.php | 50 + .../tests/OSS/Tests/HeaderResultTest.php | 23 + .../tests/OSS/Tests/HttpTest.php | 77 + .../InitiateMultipartUploadResultTest.php | 47 + .../tests/OSS/Tests/LifecycleConfigTest.php | 130 + .../tests/OSS/Tests/ListBucketsResultTest.php | 97 + .../Tests/ListMultipartUploadResultTest.php | 114 + .../tests/OSS/Tests/ListObjectsResultTest.php | 151 + .../tests/OSS/Tests/ListPartsResultTest.php | 62 + .../tests/OSS/Tests/LiveChannelXmlTest.php | 249 + .../tests/OSS/Tests/LoggingConfigTest.php | 47 + .../tests/OSS/Tests/MimeTypesTest.php | 13 + .../tests/OSS/Tests/ObjectAclTest.php | 28 + .../OSS/Tests/OssClientBucketCorsTest.php | 84 + .../Tests/OssClientBucketLifecycleTest.php | 57 + .../OSS/Tests/OssClientBucketLoggingTest.php | 43 + .../OSS/Tests/OssClientBucketRefererTest.php | 48 + .../tests/OSS/Tests/OssClientBucketTest.php | 49 + .../OSS/Tests/OssClientBucketWebsiteTest.php | 46 + .../tests/OSS/Tests/OssClientImageTest.php | 101 + .../Tests/OssClientMultipartUploadTest.php | 277 + .../tests/OSS/Tests/OssClientObjectTest.php | 426 + .../OSS/Tests/OssClientSignatureTest.php | 111 + .../tests/OSS/Tests/OssClientTest.php | 111 + .../tests/OSS/Tests/OssExceptionTest.php | 19 + .../tests/OSS/Tests/OssUtilTest.php | 214 + .../OSS/Tests/PutSetDeleteResultTest.php | 66 + .../tests/OSS/Tests/RefererConfigTest.php | 54 + .../tests/OSS/Tests/TestOssClientBase.php | 51 + .../tests/OSS/Tests/UploadPartResultTest.php | 33 + .../tests/OSS/Tests/WebsiteConfigTest.php | 56 + composer.json | 26 + taobao-sdk-PHP-auto/Autoloader.php | 55 + taobao-sdk-PHP-auto/TopSdk.php | 40 + taobao-sdk-PHP-auto/aliyun/AliyunClient.php | 255 + taobao-sdk-PHP-auto/fileTest.php | 26 + taobao-sdk-PHP-auto/test.php | 10 + taobao-sdk-PHP-auto/top/ApplicationVar.php | 47 + taobao-sdk-PHP-auto/top/ClusterTopClient.php | 199 + taobao-sdk-PHP-auto/top/HttpdnsGetRequest.php | 23 + taobao-sdk-PHP-auto/top/RequestCheckUtil.php | 107 + taobao-sdk-PHP-auto/top/ResultSet.php | 21 + taobao-sdk-PHP-auto/top/SpiUtils.php | 214 + taobao-sdk-PHP-auto/top/TopClient.php | 375 + taobao-sdk-PHP-auto/top/TopLogger.php | 43 + taobao-sdk-PHP-auto/top/domain/Area.php | 35 + taobao-sdk-PHP-auto/top/domain/BizResult.php | 30 + .../top/domain/FcPartnerSmsDetailDto.php | 50 + .../top/domain/KfcSearchResult.php | 29 + taobao-sdk-PHP-auto/top/domain/Result.php | 30 + taobao-sdk-PHP-auto/top/domain/Subtask.php | 25 + taobao-sdk-PHP-auto/top/domain/Task.php | 52 + ...ibabaAliqinFcFlowChargeProvinceRequest.php | 98 + .../AlibabaAliqinFcFlowChargeRequest.php | 98 + .../AlibabaAliqinFcFlowGradeRequest.php | 32 + .../AlibabaAliqinFcFlowQueryRequest.php | 47 + .../AlibabaAliqinFcSmsNumQueryRequest.php | 115 + .../AlibabaAliqinFcSmsNumSendRequest.php | 131 + ...AlibabaAliqinFcTtsNumSinglecallRequest.php | 114 + ...ibabaAliqinFcVoiceNumDoublecallRequest.php | 131 + ...ibabaAliqinFcVoiceNumSinglecallRequest.php | 98 + .../top/request/AppipGetRequest.php | 32 + .../top/request/AreasGetRequest.php | 48 + .../top/request/HttpdnsGetRequest.php | 32 + .../top/request/KfcKeywordSearchRequest.php | 85 + .../top/request/TimeGetRequest.php | 32 + .../top/request/TopAuthTokenCreateRequest.php | 64 + .../request/TopAuthTokenRefreshRequest.php | 48 + .../top/request/TopIpoutGetRequest.php | 32 + .../top/request/TopSecretGetRequest.php | 64 + .../top/request/TopatsResultGetRequest.php | 48 + .../top/request/TopatsTaskDeleteRequest.php | 48 + 777 files changed, 143573 insertions(+), 2 deletions(-) create mode 100644 AliyunDayu.php create mode 100644 AliyunLog.php create mode 100644 AliyunMns.php create mode 100644 AliyunOss.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Client.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Exception.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ACL.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/BatchGetLogsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/BatchGetLogsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CompressedLogGroup.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Config.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateLogstoreRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateLogstoreResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteACLRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteACLResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteConfigRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteConfigResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteLogstoreRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteLogstoreResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteShardRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteShardResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetACLRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetACLResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Histogram.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListLogstoresRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListLogstoresResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/LogItem.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Machine.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/MachineGroup.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/MergeShardsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/QueriedLog.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Request.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Response.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/Shard.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/SplitShardRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateConfigRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateConfigResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateLogstoreRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateLogstoreResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateMachineGroupRequest.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateMachineGroupResponse.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/Util.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/log.proto.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/protocolbuffers.inc.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/requestcore.class.php create mode 100644 aliyun-log-php-sdk-master/Aliyun/Log/sls.proto.php create mode 100644 aliyun-log-php-sdk-master/License.txt create mode 100644 aliyun-log-php-sdk-master/Log_Autoload.php create mode 100644 aliyun-log-php-sdk-master/README.md create mode 100644 aliyun-log-php-sdk-master/build.bat create mode 100644 aliyun-log-php-sdk-master/build.md create mode 100644 aliyun-log-php-sdk-master/build.sh create mode 100644 aliyun-log-php-sdk-master/docs/classes.svg create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Client.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Exception.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ACL.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CompressedLogGroup.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_InputDetail.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_OutputDetail.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Histogram.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListConfigsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_LogItem.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup_GroupAttribute.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Info.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Status.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MergeShardsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_QueriedLog.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Request.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Response.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Shard.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_SplitShardRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Util.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Client.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Exception.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Histogram.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_LogItem.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsRequest.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsResponse.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_QueriedLog.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Request.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Response.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Util.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Log.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/LogGroup.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/LogGroupList.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/LogPackage.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/LogPackageList.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Log_Content.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/Protobuf.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/ProtobufEnum.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/ProtobufMessage.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/RequestCore.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/RequestCore_Exception.html create mode 100644 aliyun-log-php-sdk-master/docs/classes/ResponseCore.html create mode 100644 aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.css create mode 100644 aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.min.css create mode 100644 aliyun-log-php-sdk-master/docs/css/bootstrap.css create mode 100644 aliyun-log-php-sdk-master/docs/css/bootstrap.min.css create mode 100644 aliyun-log-php-sdk-master/docs/css/jquery.iviewer.css create mode 100644 aliyun-log-php-sdk-master/docs/css/prettify.css create mode 100644 aliyun-log-php-sdk-master/docs/css/template.css create mode 100644 aliyun-log-php-sdk-master/docs/deprecated.html create mode 100644 aliyun-log-php-sdk-master/docs/errors.html create mode 100644 aliyun-log-php-sdk-master/docs/graph_class.html create mode 100644 aliyun-log-php-sdk-master/docs/img/apple-touch-icon-114x114.png create mode 100644 aliyun-log-php-sdk-master/docs/img/apple-touch-icon-72x72.png create mode 100644 aliyun-log-php-sdk-master/docs/img/apple-touch-icon.png create mode 100644 aliyun-log-php-sdk-master/docs/img/favicon.ico create mode 100644 aliyun-log-php-sdk-master/docs/img/glyphicons-halflings-white.png create mode 100644 aliyun-log-php-sdk-master/docs/img/glyphicons-halflings.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/arrow_down.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/arrow_right.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/class.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/constant.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/favicon.ico create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/file-php.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/file.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/folder.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/function.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/icon-folder-open-big.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/icon-th-big.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/icon_template.svg create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/interface.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/method.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/ok.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/property.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/search.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/variable.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/view_source.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/visibility_private.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/visibility_protected.png create mode 100644 aliyun-log-php-sdk-master/docs/img/icons/visibility_public.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/grab.cur create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/hand.cur create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.rotate_left.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.rotate_right.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_fit.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_fit2.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in2.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out2.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero.png create mode 100644 aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero2.gif create mode 100644 aliyun-log-php-sdk-master/docs/img/loader.gif create mode 100644 aliyun-log-php-sdk-master/docs/index.html create mode 100644 aliyun-log-php-sdk-master/docs/js/SVGPan.js create mode 100644 aliyun-log-php-sdk-master/docs/js/bootstrap.js create mode 100644 aliyun-log-php-sdk-master/docs/js/bootstrap.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/MIT-LICENSE.txt create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/README.txt create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/changes.txt create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/copyright.txt create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/excanvas.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/gpl-2.0.txt create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/jquery.jqplot.min.css create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/jquery.jqplot.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.barRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.blockRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.bubbleRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.canvasOverlay.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.ciParser.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.cursor.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.donutRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.dragable.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.funnelRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.highlighter.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.json2.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.logAxisRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mobile.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.ohlcRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pieRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pointLabels.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidRenderer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.trendline.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery-1.4.2.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery-1.7.1.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery-ui-1.8.2.custom.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.cookie.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.iviewer.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.iviewer.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.mousewheel.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.panzoom.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.splitter.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.tools.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.treeview.js create mode 100644 aliyun-log-php-sdk-master/docs/js/jquery.xml2json.js create mode 100644 aliyun-log-php-sdk-master/docs/js/menu.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-apollo.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-clj.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-css.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-go.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-hs.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-lisp.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-lua.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-ml.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-n.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-proto.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-scala.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-sql.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-tex.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-vb.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-vhdl.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-wiki.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-xq.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/lang-yaml.js create mode 100644 aliyun-log-php-sdk-master/docs/js/prettify/prettify.min.js create mode 100644 aliyun-log-php-sdk-master/docs/js/sidebar.js create mode 100644 aliyun-log-php-sdk-master/docs/js/template.js create mode 100644 aliyun-log-php-sdk-master/docs/markers.html create mode 100644 aliyun-log-php-sdk-master/docs/namespaces/default.html create mode 100644 aliyun-log-php-sdk-master/docs/namespaces/global.html create mode 100644 aliyun-log-php-sdk-master/docs/packages/LOG.PHP.SDK.html create mode 100644 aliyun-log-php-sdk-master/docs/packages/SLS_PHP_SDK.html create mode 100644 aliyun-log-php-sdk-master/docs/packages/default.html create mode 100644 aliyun-log-php-sdk-master/docs/packages/global.html create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-00/phpdoc-cache-file_424e0cdbe1d8550cc6c3e07815137cf1.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-06/phpdoc-cache-file_239fdc416f469298cd1d8b3894560f8f.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-0e/phpdoc-cache-file_e950411f3233965341425c00386f74b6.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-18/phpdoc-cache-file_1c392768ee1a3da61f3d0da0697fea34.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-1a/phpdoc-cache-file_4a330a9886b7d589ce4e8e58d44ba117.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-1d/phpdoc-cache-file_db8b17c85c92f5cd1dc7bcebb8b51a91.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-23/phpdoc-cache-file_9cfae108f097ba834f8a70c4d750ed49.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-27/phpdoc-cache-file_42d5b12b53b855f9c9dfdc8ecfbea730.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2a/phpdoc-cache-file_d04ca1a3e5b98be562c06133b85c6bed.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2b/phpdoc-cache-file_0fc03e122a99c30ce16ac816aa8499b6.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2c/phpdoc-cache-file_043c0d130c3959f07f50004ac3be54cb.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2d/phpdoc-cache-file_5cae177591fe5ac0a1dab9ac209c1c1b.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2d/phpdoc-cache-file_befea0fb710377d3d74384acc8ac6f73.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-file_d8d56dabae20fabbe5c6da0b12819779.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-settings.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-30/phpdoc-cache-file_f5405c3c5c5fc494748cb07df138322d.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-34/phpdoc-cache-file_6313c8684ed97495cd6c85612f310684.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-35/phpdoc-cache-file_a31d8d8bdbf8bc378c56fd06b3122622.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-38/phpdoc-cache-file_d6cb4bffbb7093993c2e3ddd7464211f.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-38/phpdoc-cache-file_efb52bdd9e5022f63e1f5c5b16204894.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_6ff3a57f72c80f7c257907a164767deb.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_7dd5a8a267c2bb3bb22a532edb9c4890.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-3c/phpdoc-cache-file_c58271b0facec38e308da7b508fe9746.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-40/phpdoc-cache-file_b56043cecf89b902d8b52925d416c591.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-41/phpdoc-cache-file_35ce96c5f13282e37883b76fbc3700ba.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-41/phpdoc-cache-file_7776662ea84a69e69d9d5da728a7cea9.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-49/phpdoc-cache-file_057ef5bd7fe349062dc95ad9a8773e29.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-4c/phpdoc-cache-file_61a90ff181c5c772e32ae8fddfdb312a.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-4f/phpdoc-cache-file_d8f2b64012850a915be7e15614534768.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-50/phpdoc-cache-file_d6dd53c34462d9757a033733092fd717.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-51/phpdoc-cache-file_d9eb40c32fd684d682ba1c38f2f2057e.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-52/phpdoc-cache-file_907e5981bb6d352820e9c887f71ad4b2.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-58/phpdoc-cache-file_ae48161c1a610ae22e59f425554923a2.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-5f/phpdoc-cache-file_0e2b1834343fe7493719b38219495707.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-61/phpdoc-cache-file_ac70b900963477bd571a40889a8222e3.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-70/phpdoc-cache-file_64fbfaecce4182adaeea7db58c8c7078.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-74/phpdoc-cache-file_33bab02b6179f04997b58b65c132c68c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-78/phpdoc-cache-file_0b420644fbf2dc3fcb1bcd516a3a5cef.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-7c/phpdoc-cache-file_3b288dc7f24c47367f12d4377ea730b2.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-7d/phpdoc-cache-file_d8a9fc52043a78382d8e14f41cb4ec8c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-7f/phpdoc-cache-file_20a8145ca319876006e349323015ecf9.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-85/phpdoc-cache-file_308f8f3c212c2a3ab519e7c91d57777c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-85/phpdoc-cache-file_658549a7f082125e0eccd85d6fb3c889.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-85/phpdoc-cache-file_bfb95c6f671d3e9487a47457d389c963.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-87/phpdoc-cache-file_8470790d20462f59d0d601de5a2fff98.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_c4b83b19700ccd0f3e482c222d230634.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_e29975f434337874926cc56f83f46a53.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-8e/phpdoc-cache-file_e211465a4afaa5dfd432e771e219506d.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-90/phpdoc-cache-file_5f722231448e1dfaeeaf275837449ebb.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-99/phpdoc-cache-file_20584308410b4d1dabc28f547db8f494.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_19962b08746064d77e3a2f26cf9b714e.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_723d90661ec6aa78643b6d35954dbe79.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-a2/phpdoc-cache-file_848c2b437f0a852db6d20f78b1383ee1.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-a3/phpdoc-cache-file_3f9912308a2f021882d8a049327e55e2.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-a5/phpdoc-cache-file_e14c7a62929e97cc1ff762113b7ee3a5.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-a7/phpdoc-cache-file_ef8ef9fdc27c9460f71596ff2324ae8c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-ab/phpdoc-cache-file_0fd650466eea1b8cc68d0ae25a1c0f82.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-ab/phpdoc-cache-file_47574feaa2e9cbf683781c5a22d018a0.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-b1/phpdoc-cache-file_6ed2a9f60ef6cdc647b28ddc2244993c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_2cb88af744a097f913a23624bb5619d2.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_716db9981f9e7bc7f6c92df08f9409a3.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-bf/phpdoc-cache-file_7cb90261b19c7e04da8ec60f354801c9.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-c9/phpdoc-cache-file_88763950b80fc33089a62fc59b497cca.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-ce/phpdoc-cache-file_47bc050b33010792ff800281f9ab6dc9.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-cf/phpdoc-cache-file_67e08eec21427b946ae9f8ead3ff6c16.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-d1/phpdoc-cache-file_52fa4255ca51e497353b3f3515b12b95.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-d2/phpdoc-cache-file_ad9decfd35298d5bab34675b2280d19c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-d5/phpdoc-cache-file_3f199544b9edab0d74f9448763ba52db.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-dd/phpdoc-cache-file_38819c6dd08be809a9c72f4b982ecf3e.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e0/phpdoc-cache-file_5e197af49407fac1911a3ef5a4a6ad18.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e0/phpdoc-cache-file_d506ea9bbbc4f3d805844520d3ec0efe.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e0/phpdoc-cache-file_ed3435d0e8e77045c2a1ff0b58e73a53.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e1/phpdoc-cache-file_06ec2c5b068f0ae1b722c99c2490f351.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e2/phpdoc-cache-file_38b90a17812e1f65c338aff8358743a4.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e4/phpdoc-cache-file_8e8db8f681c785206efde8c4713d9f33.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e8/phpdoc-cache-file_9f56fc28a2fbf022c08546d3cf110bbf.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_2806c1b43d62b4a0733db0ddb4db1b9c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_d766c13060c61fa4aa7df4e997460371.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-ed/phpdoc-cache-file_072385bdf5603e202c735bd51ac26c6d.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-f1/phpdoc-cache-file_5dda9d326f95130c506937e970e32e5c.dat create mode 100644 aliyun-log-php-sdk-master/docs/phpdoc-cache-f7/phpdoc-cache-file_364006e4e5cb229119c1ce811eac4432.dat create mode 100644 aliyun-log-php-sdk-master/docs/structure.xml create mode 100644 aliyun-log-php-sdk-master/sample/sample.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/AsyncCallback.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Client.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Common/XMLParser.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Config.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Constants.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchDeleteFailException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchSendFailException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/InvalidArgumentException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MalformedXMLException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MessageNotExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MnsException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueAlreadyExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueNotExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/ReceiptHandleErrorException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionAlreadyExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionNotExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicAlreadyExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicNotExistException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Http/HttpClient.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/AccountAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/BatchSmsAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/DeleteMessageErrorItem.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MailAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/Message.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MessageAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/QueueAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageRequestItem.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageResponseItem.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SmsAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SubscriptionAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/TopicAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/UpdateSubscriptionAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/WebSocketAttributes.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Queue.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BaseRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchDeleteMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchPeekMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchReceiveMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchSendMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ChangeMessageVisibilityRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateQueueRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateTopicRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteQueueRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteTopicRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetAccountAttributesRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetQueueAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetSubscriptionAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetTopicAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListQueueRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListSubscriptionRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListTopicRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PeekMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PublishMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ReceiveMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SendMessageRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetAccountAttributesRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetQueueAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetSubscriptionAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetTopicAttributeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SubscribeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/UnsubscribeRequest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BaseResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchDeleteMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchPeekMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchReceiveMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchSendMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ChangeMessageVisibilityResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateQueueResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateTopicResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteQueueResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteTopicResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetAccountAttributesResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetQueueAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetSubscriptionAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetTopicAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListQueueResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListSubscriptionResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListTopicResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/MnsPromise.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PeekMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PublishMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ReceiveMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SendMessageResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetAccountAttributesResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetQueueAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetSubscriptionAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetTopicAttributeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SubscribeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/UnsubscribeResponse.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Signature/Signature.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Topic.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessageIdAndMD5.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPeek.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPublish.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForReceive.php create mode 100644 aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForSend.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Client.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/ClientInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/CookieJar.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/CookieJarInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/FileCookieJar.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SessionCookieJar.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SetCookie.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/BadResponseException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ClientException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ConnectException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/GuzzleException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/RequestException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/SeekException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ServerException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/TooManyRedirectsException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/TransferException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlFactory.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlFactoryInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlHandler.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlMultiHandler.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/EasyHandle.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/MockHandler.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/Proxy.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/StreamHandler.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/HandlerStack.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/MessageFormatter.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Middleware.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Pool.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/PrepareBodyMiddleware.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/AggregateException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/CancellationException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/EachPromise.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/FulfilledPromise.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/Promise.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/PromiseInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/PromisorInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/RejectedPromise.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/RejectionException.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/TaskQueue.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions_include.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/AppendStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/BufferStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/CachingStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/DroppingStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/FnStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/InflateStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LazyOpenStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LimitStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MessageTrait.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MultipartStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/NoSeekStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/PumpStream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Request.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Response.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Stream.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamDecoratorTrait.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamWrapper.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Uri.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions_include.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RedirectMiddleware.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RequestOptions.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RetryMiddleware.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/TransferStats.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/UriTemplate.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions.php create mode 100644 aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions_include.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/MessageInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/RequestInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/ResponseInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/ServerRequestInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/StreamInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/UploadedFileInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/UriInterface.php create mode 100644 aliyun-mns-php-sdk-1.3.3/README.md create mode 100644 aliyun-mns-php-sdk-1.3.3/Samples/Queue/CreateQueueAndSendMessage.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Samples/Topic/CreateTopicAndPublishMessage.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Samples/Topic/http_server_sample.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Tests/ClientTest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Tests/QueueTest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Tests/TopicTest.php create mode 100644 aliyun-mns-php-sdk-1.3.3/Tests/aliyun-mns.ini create mode 100644 aliyun-mns-php-sdk-1.3.3/mns-autoloader.php create mode 100644 aliyun-oss-php-sdk-2.2.2/.coveralls.yml create mode 100644 aliyun-oss-php-sdk-2.2.2/.gitignore create mode 100644 aliyun-oss-php-sdk-2.2.2/.travis.yml create mode 100644 aliyun-oss-php-sdk-2.2.2/CHANGELOG.md create mode 100644 aliyun-oss-php-sdk-2.2.2/LICENSE.md create mode 100644 aliyun-oss-php-sdk-2.2.2/README.md create mode 100644 aliyun-oss-php-sdk-2.2.2/autoload.php create mode 100644 aliyun-oss-php-sdk-2.2.2/build-phar.sh create mode 100644 aliyun-oss-php-sdk-2.2.2/composer.json create mode 100644 aliyun-oss-php-sdk-2.2.2/example.jpg create mode 100644 aliyun-oss-php-sdk-2.2.2/index.php create mode 100644 aliyun-oss-php-sdk-2.2.2/phpunit.xml create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Bucket.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/BucketCors.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/BucketLifecycle.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/BucketLogging.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/BucketReferer.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/BucketWebsite.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Callback.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Common.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Config.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Image.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/LiveChannel.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/MultipartUpload.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Object.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/RunAll.php create mode 100644 aliyun-oss-php-sdk-2.2.2/samples/Signature.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Core/MimeTypes.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssException.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssUtil.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Http/LICENSE create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore_Exception.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Http/ResponseCore.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketListInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CnameConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsRule.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelHistory.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelStatus.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleAction.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleRule.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListMultipartUploadInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListPartsInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelHistory.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelListInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LoggingConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectListInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PartInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PrefixInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/RefererConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/UploadInfo.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/WebsiteConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Model/XmlConfig.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/OssClient.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AclResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AppendResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/BodyResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CallbackResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CopyObjectResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/DeleteObjectsResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ExistResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCnameResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCorsResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLifecycleResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelHistoryResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelInfoResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelStatusResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLoggingResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetRefererResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetWebsiteResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/HeaderResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/InitiateMultipartUploadResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListBucketsResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListLiveChannelResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListMultipartUploadResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListObjectsResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListPartsResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutLiveChannelResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutSetDeleteResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/Result.php create mode 100644 aliyun-oss-php-sdk-2.2.2/src/OSS/Result/UploadPartResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/AclResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BodyResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketCnameTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketInfoTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketLiveChannelTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CallbackTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CnameConfigTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/Common.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ContentTypeTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CopyObjectResult.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CorsConfigTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ExistResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetCorsResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLifecycleResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLoggingResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetRefererResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetWebsiteResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HeaderResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HttpTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/InitiateMultipartUploadResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LifecycleConfigTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListBucketsResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListMultipartUploadResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListObjectsResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListPartsResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LiveChannelXmlTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LoggingConfigTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/MimeTypesTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ObjectAclTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketCorsTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLifecycleTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLoggingTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketRefererTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketWebsiteTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientImageTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientMultipartUploadTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientObjectTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientSignatureTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssExceptionTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssUtilTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/PutSetDeleteResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/RefererConfigTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/TestOssClientBase.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/UploadPartResultTest.php create mode 100644 aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/WebsiteConfigTest.php create mode 100644 composer.json create mode 100644 taobao-sdk-PHP-auto/Autoloader.php create mode 100644 taobao-sdk-PHP-auto/TopSdk.php create mode 100644 taobao-sdk-PHP-auto/aliyun/AliyunClient.php create mode 100644 taobao-sdk-PHP-auto/fileTest.php create mode 100644 taobao-sdk-PHP-auto/test.php create mode 100644 taobao-sdk-PHP-auto/top/ApplicationVar.php create mode 100644 taobao-sdk-PHP-auto/top/ClusterTopClient.php create mode 100644 taobao-sdk-PHP-auto/top/HttpdnsGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/RequestCheckUtil.php create mode 100644 taobao-sdk-PHP-auto/top/ResultSet.php create mode 100644 taobao-sdk-PHP-auto/top/SpiUtils.php create mode 100644 taobao-sdk-PHP-auto/top/TopClient.php create mode 100644 taobao-sdk-PHP-auto/top/TopLogger.php create mode 100644 taobao-sdk-PHP-auto/top/domain/Area.php create mode 100644 taobao-sdk-PHP-auto/top/domain/BizResult.php create mode 100644 taobao-sdk-PHP-auto/top/domain/FcPartnerSmsDetailDto.php create mode 100644 taobao-sdk-PHP-auto/top/domain/KfcSearchResult.php create mode 100644 taobao-sdk-PHP-auto/top/domain/Result.php create mode 100644 taobao-sdk-PHP-auto/top/domain/Subtask.php create mode 100644 taobao-sdk-PHP-auto/top/domain/Task.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeProvinceRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowGradeRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowQueryRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumQueryRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumSendRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcTtsNumSinglecallRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumDoublecallRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumSinglecallRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AppipGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/AreasGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/HttpdnsGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/KfcKeywordSearchRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TimeGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopAuthTokenCreateRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopAuthTokenRefreshRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopIpoutGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopSecretGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopatsResultGetRequest.php create mode 100644 taobao-sdk-PHP-auto/top/request/TopatsTaskDeleteRequest.php diff --git a/AliyunDayu.php b/AliyunDayu.php new file mode 100644 index 0000000..b9b8779 --- /dev/null +++ b/AliyunDayu.php @@ -0,0 +1,14 @@ +[ + * 'class'=>'aliyun\oss\AliyunLog', + * 'logstore'=>'', + * 'project'=>'', + * 'AccessKeyId' => '', + * 'AccessKeySecret' => '', + * 'endpoint'=>'oss-cn-hangzhou.aliyuncs.com', + * ], + */ +class AliyunLog extends Component +{ + public $endpoint = 'cn-hangzhou.sls.aliyuncs.com'; // 閫夋嫨涓庝笂闈㈡楠ゅ垱寤 project 鎵灞炲尯鍩熷尮閰嶇殑 Endpoint + public $AccessKeyId = 'your_access_key_id'; // 浣跨敤浣犵殑闃块噷浜戣闂閽 AccessKeyId + public $AccessKeySecret = 'your_access_key'; // 浣跨敤浣犵殑闃块噷浜戣闂閽 AccessKeySecret + public $project = 'your_project'; // 涓婇潰姝ラ鍒涘缓鐨勯」鐩悕绉 + public $logstore = 'your_logstore'; // 涓婇潰姝ラ鍒涘缓鐨勬棩蹇楀簱鍚嶇О + + private $client; + public function init() + { + parent::init(); + if (!isset($this->AccessKeyId)) { + throw new InvalidConfigException('璇峰厛閰嶇疆AccessKeyId'); + } + if (!isset($this->AccessKeySecret)) { + throw new InvalidConfigException('璇峰厛閰嶇疆AccessKeySecret'); + } + $this->client = new Aliyun_Log_Client($this->endpoint, $this->AccessKeyId, $this->AccessKeySecret); + } + + /** + * 鍒楀嚭褰撳墠 project 涓嬬殑鎵鏈夋棩蹇楀簱鍚嶇О + */ + public function listStores() + { + $req = new Aliyun_Log_Models_ListLogstoresRequest($this->project); + return $this->client->listLogstores($req); + } + + /** + * 鍒涘缓 logstore + */ + public function createStores() + { + $req = new Aliyun_Log_Models_CreateLogstoreRequest($this->project,$this->logstore,3,2); + return $this->client -> createLogstore($req); + } + + + /** + * 鍐欏叆鏃ュ織 + */ + public function putLogs($topic, $source, $logitems=[]) + { + for ($i = 0; $i < 5; $i++) + { + $contents = array('index1'=> strval($i)); + $logItem = new Aliyun_Log_Models_LogItem(); + $logItem->setTime(time()); + $logItem->setContents($contents); + array_push($logitems, $logItem); + } + $req = new Aliyun_Log_Models_PutLogsRequest($this->project, $this->logstore, $topic, $source, $logitems); + return $this->client->putLogs($req); + } + +} \ No newline at end of file diff --git a/AliyunMns.php b/AliyunMns.php new file mode 100644 index 0000000..5840852 --- /dev/null +++ b/AliyunMns.php @@ -0,0 +1,159 @@ +client = new Client($this->endpoint, $this->accessId, $this->accessKey); + return $this->client; + } + + public function __call($method_name, $args) + { + return call_user_func_array([$this->client, $method_name],$args); + } + + /** + * ==================================================================== + * 浠ヤ笅鎻愪緵涓浜涗究鎹锋柟娉曪紝涔熷彲浠ラ氳繃瀹樻柟SDK鐨勬柟娉曞仛鍚屾牱鐨勫鐞 + * -------------------------------------------------------------------- + */ + + + /** + * 鍙戦佹秷鎭埌闃熷垪 + * @param string $queueName 闃熷垪鍚嶇О + * @param string $messageBody 娑堟伅鍐呭 + * @return \AliyunMNS\SendMessageResponse: + * @example sendMessage("boss-dev", "content demo"); + */ + public function createQueue($queueName) + { + $request = new CreateQueueRequest($queueName); + try + { + return $this->client->createQueue($request); + } + catch (MnsException $e) + { + echo "CreateQueueFailed: " . $e; + return; + } + } + + /** + * 鍙戦佹秷鎭埌闃熷垪 + * @param string $queueName 闃熷垪鍚嶇О + * @param string $messageBody 娑堟伅鍐呭 + * @return \AliyunMNS\SendMessageResponse: + * @example sendMessage("boss-dev", "content demo"); + */ + public function sendMessage($queueName, $messageBody) + { + if (!is_string($messageBody)){ + $messageBody = json_encode($messageBody); + } + $queue = $this->client->getQueueRef($queueName); + try + { + $request = new SendMessageRequest($messageBody); + return $queue->sendMessage($request); + } + catch (MnsException $e) + { + echo "SendMessage Failed: " . $e; + return; + } + + } + + /** + * 浠庨槦鍒楅噷鑾峰彇娑堟伅 + * @param string $queueName 闃熷垪鍚嶇О + * @return \AliyunMNS\ReceiveMessageResponse: + * @example receiveMessage("boss-dev"); + */ + public function receiveMessage($queueName) + { + $receiptHandle = NULL; + $queue = $this->client->getQueueRef($queueName); + try + { + // when receiving messages, it's always a good practice to set the waitSeconds to be 30. + // it means to send one http-long-polling request which lasts 30 seconds at most. + return $queue->receiveMessage(30); + } + catch (MnsException $e) + { + echo "ReceiveMessage Failed: " . $e; + return; + } + } + + /** + * 鍒犻櫎娑堟伅 + * @param object $messageObject 娑堟伅瀹炰綋 + * @return \AliyunMNS\Responses\ReceiveMessageResponse + */ + public function deleteMessage($queueName, $messageObject) + { + $queue = $this->client->getQueueRef($queueName); + $receiptHandle = $messageObject->getReceiptHandle(); + return $queue->deleteMessage($receiptHandle); + } + + /** + * 鍙戝竷娑堟伅鍒癟opic + * @param string $topicName Toppic鍚嶇О + * @param string $messageBody 娑堟伅鍐呭 + * @example publishMessage('customer-login-dev', 'test content'); + * @return \AliyunMNS\Responses\BaseResponse + */ + public function publishMessage($topicName, $messageBody) + { + if (!is_string($messageBody)){ + $messageBody = json_encode($messageBody); + } + $topic = $this->client->getTopicRef($topicName); + $request = new PublishMessageRequest($messageBody); + + return $topic->publishMessage($request); + } + + /** + * 娣诲姞璁㈤槄鍣 + * @param string $topicName Topic鍚嶇О + * @param string $subscriptionName 璁㈤槄鍣ㄥ悕绉 + * @param url $endPoint 鎺ユ敹鍐呭鐨刄RL锛屽寘鍚 http://,鍏跺畠鏂瑰紡鐪嬮樋閲屼簯鐨勬枃妗 + * @return \AliyunMNS\Responses\BaseResponse + */ + public function subscribeTopic($topicName, $subscriptionName, $endPoint) + { + $topic = $this->client->getTopicRef($topicName); + $attributes = new SubscriptionAttributes($subscriptionName, $endPoint); + + return $topic->subscribe($attributes); + } +} \ No newline at end of file diff --git a/AliyunOss.php b/AliyunOss.php new file mode 100644 index 0000000..b41d8b1 --- /dev/null +++ b/AliyunOss.php @@ -0,0 +1,90 @@ +[ + * 'class'=>'aliyun\oss\AliyunOss', + * 'bucket'=>'', + * 'prefix'=>'', + * 'AccessKeyId' => '', + * 'AccessKeySecret' => '', + * 'endpoint'=>'oss-cn-hangzhou.aliyuncs.com', + * 'imageHost' => 'http://bucket.img-cn-hangzhou.aliyuncs.com/' + * ], + */ +class AliyunOss extends Component +{ + public $bucket = ''; + public $prefix = ''; //璺緞鍓嶇紑 + public $AccessKeyId = ''; + public $AccessKeySecret = ''; + public $endpoint = 'oss-cn-hangzhou.aliyuncs.com'; + public $imageHost = 'http://bucket.img-cn-hangzhou.aliyuncs.com/'; + + private $client; + public function init() + { + if (empty($this->imageHost)) { + $this->imageHost = 'http://'.$this->bucket.'/'.$this->endpoint.'/'; + } + try { + $this->client = new \OSS\OssClient($this->AccessKeyId, $this->AccessKeySecret, $this->endpoint); + } catch (OssException $e) { + print $e->getMessage(); + } + } + + /** + * 涓婁紶鏂囦欢鍒癘SS + */ + public function upload2oss($tempName, $path=null) + { + try { + $stream = file_get_contents($tempName); + if (empty($path)){ + $path = date('Ymd').mb_substr(md5($stream), -8); + } + $this->client->putObject($this->bucket, $this->prefix.$path, $stream); + return $path; + } catch (OssException $ex) { + throw new \ErrorException( "Error: " . $ex->getMessage() . "\n"); + } + } + + /** + * 涓婁紶鏂囦欢娴佸埌OSS + */ + public function uploadStream2oss($stream,$filename) + { + try { + return $this->client->putObject( $this->bucket, $this->prefix.$filename, $stream); + } catch (OSSException $ex) { + throw new \ErrorException( "Error: " . $ex->getMessage() . "\n"); + } + } + + /** + * 鑾峰彇鍥剧墖鍦板潃 + * @param string $path 璺緞 + * @param string $style 鏍峰紡 + */ + public function getImageUrl($path, $style=null) + { + if (empty($style)){ + return $this->imageHost.$this->prefix.$path; + } + return $this->imageHost.$this->prefix.$path.'@!'.$style; + } + + public function __call($method_name, $args) + { + if(empty($args['Bucket'])){ + $args['Bucket'] = $this->bucket; + } + return call_user_func_array([$this->client, $method_name],$args); + } +} \ No newline at end of file diff --git a/README.md b/README.md index 7c4d250..2f60fca 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,155 @@ -# aliyun -aliyun dayu,log,mns,oss +###闃块噷浜慬OSS,DAYU,LOG,MNS] + +闃块噷浜戝畼鏂筍DK鐨凜omposer灏佽锛屾敮鎸乊ii2銆 +娣诲姞鍒犻櫎鏂囦欢鐨勫姛鑳斤紝淇敼getUrl锛堝彧杩斿洖鏂囦欢澶栭摼url锛屼笉甯﹀叾浠栧弬鏁帮級銆 + + +###瀹夎 + +$ php composer.phar require gulltour/aliyun "~1.0.0" + +###OSS Yii2浣跨敤 + +淇敼config/params.php + +娣诲姞锛 +```php + 'oss'=>array( + 'ossServer' => '', //鏈嶅姟鍣ㄥ缃戝湴鍧锛屾繁鍦充负 http://oss-cn-shenzhen.aliyuncs.com + 'ossServerInternal' => '', //鏈嶅姟鍣ㄥ唴缃戝湴鍧锛屾繁鍦充负 http://oss-cn-shenzhen-internal.aliyuncs.com + 'AccessKeyId' => '', //闃块噷浜戠粰鐨凙ccessKeyId + 'AccessKeySecret' => '', //闃块噷浜戠粰鐨凙ccessKeySecret + 'Bucket' => '' //鍒涘缓鐨勭┖闂村悕 + ), +``` + +鍦╟omponents涓垱寤篛ss.php锛屽唴瀹瑰涓嬶細 + +```php + +namespace app\components; + +use gulltour\AliyunOss\AliyunOSS; +use Yii; + +class OSS { + + private $ossClient; + + public function __construct($isInternal = false) + { + $serverAddress = $isInternal ? Yii::$app->params['oss']['ossServerInternal'] : Yii::$app->params['oss']['ossServer']; + $this->ossClient = AliyunOSS::boot( + $serverAddress, + Yii::$app->params['oss']['AccessKeyId'], + Yii::$app->params['oss']['AccessKeySecret'] + ); + } + + public static function upload($ossKey, $filePath) + { + //$oss = new OSS(true); // 涓婁紶鏂囦欢浣跨敤鍐呯綉锛屽厤娴侀噺璐 + $oss = new OSS(); + $oss->ossClient->setBucket(Yii::$app->params['oss']['Bucket']); + $oss->ossClient->uploadFile($ossKey, $filePath); + } + + public static function getUrl($ossKey) + { + $oss = new OSS(); + $oss->ossClient->setBucket(Yii::$app->params['oss']['Bucket']); + return preg_replace('/(.*)\?OSSAccessKeyId=.*/', '$1', $oss->ossClient->getUrl($ossKey, new \DateTime("+1 day"))); + } + + public static function delFile($ossKey) + { + $oss = new OSS(); + $oss->ossClient->setBucket(Yii::$app->params['oss']['Bucket']); + $oss->ossClient->delFile($ossKey); + } + + public static function createBucket($bucketName) + { + $oss = new OSS(); + return $oss->ossClient->createBucket($bucketName); + } + + public static function getAllObjectKey($bucketName) + { + $oss = new OSS(); + return $oss->ossClient->getAllObjectKey($bucketName); + } + +} + +``` + + +###浣跨敤 + +```php + +use app\components\Oss; + +OSS::upload('鏂囦欢鍚', '鏈湴璺緞'); // 涓婁紶涓涓枃浠 + +echo OSS::getUrl('鏌愪釜鏂囦欢鐨勫悕绉'); // 鎵撳嵃鍑烘煇涓枃浠剁殑澶栫綉閾炬帴 + +OSS::createBucket('涓涓瓧绗︿覆'); // 鏂板涓涓 Bucket銆傛敞鎰忥紝Bucket 鍚嶇О鍏锋湁鍏ㄥ眬鍞竴鎬э紝涔熷氨鏄璺熷叾浠栦汉鐨 Bucket 鍚嶇О涔熶笉鑳界浉鍚屻 + +OSS::getAllObjectKey('鏌愪釜 Bucket 鍚嶇О'); // 鑾峰彇璇 Bucket 涓墍鏈夋枃浠剁殑鏂囦欢鍚嶏紝杩斿洖 Array銆 + +``` + +###LOG Yii2浣跨敤 + + +```php + 'log'=>[ + 'class'=>'aliyun\oss\AliyunLog', + 'logstore'=>'gulltour', + 'project'=>'', + 'AccessKeyId' => '', + 'AccessKeySecret' => '', + 'endpoint'=>'oss-cn-hangzhou.aliyuncs.com', + ], + +``` + + +###MNS Yii2浣跨敤 + +YII2鎻掍欢-闃块噷浜戞秷鎭槦鍒桽DK +=== +閰嶇疆 +--- +```php +'mns'=>[ + 'class'=>'gulltour\aliyun\aliyunMns', + 'accessId' => '', + 'accessKey' => '', + 'endpoint' => 'http://.mns.cn-beijing.aliyuncs.com/', +], +``` +浣跨敤绀轰緥锛 +--- +```php +// 鍙戦佹秷鎭埌闃熷垪 +\Yii::$app->mns->sendMessage("QueueName", "content demo"); +// 鎺ユ敹闃熷垪娑堟伅 +$messageObject = \Yii::$app->mns->receiveMessage("QueueName"); +$data = $messageObject->getMessageBody(); +// 鍒犻櫎闃熷垪娑堟伅 +\Yii::$app->mns->->deleteMessage('QueueName', $messageObject); +//publish 娑堟伅鍒颁富棰 +\Yii::$app->mns->publishMessage('TopicName', $data); +//璁㈤槄涓婚锛屽湪Yii2鐨 controller 涓帴鏀舵帹閫佽繃鏉ョ殑鏁版嵁 +public function actionSubscribe() +{ + $message = \Yii::$app->request->getRawBody(); + $data = json_decode($message, true); //濡傛灉娑堟伅鏄疛SON锛孭HP涓渶瑕佽浆鎹㈡垚鏁扮粍 +锝 +``` + +###License +闄 鈥滅増鏉冩墍鏈夛紙C锛夐樋閲屼簯璁$畻鏈夐檺鍏徃鈥 鐨勪唬鐮佹枃浠跺锛岄伒寰 [MIT license](http://opensource.org/licenses/MIT) 寮婧愩 diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Client.php b/aliyun-log-php-sdk-master/Aliyun/Log/Client.php new file mode 100644 index 0000000..135641b --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Client.php @@ -0,0 +1,890 @@ +setEndpoint ( $endpoint ); // set $this->logHost + $this->accessKeyId = $accessKeyId; + $this->accessKey = $accessKey; + $this->stsToken = $token; + $this->source = Aliyun_Log_Util::getLocalIp(); + } + private function setEndpoint($endpoint) { + $pos = strpos ( $endpoint, "://" ); + if ($pos !== false) { // be careful, !== + $pos += 3; + $endpoint = substr ( $endpoint, $pos ); + } + $pos = strpos ( $endpoint, "/" ); + if ($pos !== false) // be careful, !== + $endpoint = substr ( $endpoint, 0, $pos ); + $pos = strpos ( $endpoint, ':' ); + if ($pos !== false) { // be careful, !== + $this->port = ( int ) substr ( $endpoint, $pos + 1 ); + $endpoint = substr ( $endpoint, 0, $pos ); + } else + $this->port = 80; + $this->isRowIp = Aliyun_Log_Util::isIp ( $endpoint ); + $this->logHost = $endpoint; + $this->endpoint = $endpoint . ':' . ( string ) $this->port; + } + + /** + * GMT format time string. + * + * @return string + */ + protected function getGMT() { + return gmdate ( 'D, d M Y H:i:s' ) . ' GMT'; + } + + + /** + * Decodes a JSON string to a JSON Object. + * Unsuccessful decode will cause an Aliyun_Log_Exception. + * + * @return string + * @throws Aliyun_Log_Exception + */ + protected function parseToJson($resBody, $requestId) { + if (! $resBody) + return NULL; + + $result = json_decode ( $resBody, true ); + if ($result === NULL){ + throw new Aliyun_Log_Exception ( 'BadResponse', "Bad format,not json: $resBody", $requestId ); + } + return $result; + } + + /** + * @return array + */ + protected function getHttpResponse($method, $url, $body, $headers) { + $request = new RequestCore ( $url ); + foreach ( $headers as $key => $value ) + $request->add_header ( $key, $value ); + $request->set_method ( $method ); + $request->set_useragent(USER_AGENT); + if ($method == "POST" || $method == "PUT") + $request->set_body ( $body ); + $request->send_request (); + $response = array (); + $response [] = ( int ) $request->get_response_code (); + $response [] = $request->get_response_header (); + $response [] = $request->get_response_body (); + return $response; + } + + /** + * @return array + * @throws Aliyun_Log_Exception + */ + private function sendRequest($method, $url, $body, $headers) { + try { + list ( $responseCode, $header, $resBody ) = + $this->getHttpResponse ( $method, $url, $body, $headers ); + } catch ( Exception $ex ) { + throw new Aliyun_Log_Exception ( $ex->getMessage (), $ex->__toString () ); + } + + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + + if ($responseCode == 200) { + return array ($resBody,$header); + } + else { + $exJson = $this->parseToJson ( $resBody, $requestId ); + if (isset($exJson ['error_code']) && isset($exJson ['error_message'])) { + throw new Aliyun_Log_Exception ( $exJson ['error_code'], + $exJson ['error_message'], $requestId ); + } else { + if ($exJson) { + $exJson = ' The return json is ' . json_encode($exJson); + } else { + $exJson = ''; + } + throw new Aliyun_Log_Exception ( 'RequestError', + "Request is failed. Http code is $responseCode.$exJson", $requestId ); + } + } + } + + /** + * @return array + * @throws Aliyun_Log_Exception + */ + private function send($method, $project, $body, $resource, $params, $headers) { + if ($body) { + $headers ['Content-Length'] = strlen ( $body ); + if(isset($headers ["x-log-bodyrawsize"])==false) + $headers ["x-log-bodyrawsize"] = 0; + $headers ['Content-MD5'] = Aliyun_Log_Util::calMD5 ( $body ); + } else { + $headers ['Content-Length'] = 0; + $headers ["x-log-bodyrawsize"] = 0; + $headers ['Content-Type'] = ''; // If not set, http request will add automatically. + } + + $headers ['x-log-apiversion'] = API_VERSION; + $headers ['x-log-signaturemethod'] = 'hmac-sha1'; + if(strlen($this->stsToken) >0) + $headers ['x-acs-security-token'] = $this -> stsToken; + if(is_null($project))$headers ['Host'] = $this->logHost; + else $headers ['Host'] = "$project.$this->logHost"; + $headers ['Date'] = $this->GetGMT (); + $signature = Aliyun_Log_Util::getRequestAuthorization ( $method, $resource, $this->accessKey,$this->stsToken, $params, $headers ); + $headers ['Authorization'] = "LOG $this->accessKeyId:$signature"; + + $url = $resource; + if ($params) + $url .= '?' . Aliyun_Log_Util::urlEncode ( $params ); + if ($this->isRowIp) + $url = "http://$this->endpoint$url"; + else{ + if(is_null($project)) + $url = "http://$this->endpoint$url"; + else $url = "http://$project.$this->endpoint$url"; + } + return $this->sendRequest ( $method, $url, $body, $headers ); + } + + /** + * Put logs to Log Service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_PutLogsRequest $request the PutLogs request parameters class + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_PutLogsResponse + */ + public function putLogs(Aliyun_Log_Models_PutLogsRequest $request) { + if (count ( $request->getLogitems () ) > 4096) + throw new Aliyun_Log_Exception ( 'InvalidLogSize', "logItems' length exceeds maximum limitation: 4096 lines." ); + + $logGroup = new LogGroup (); + $topic = $request->getTopic () !== null ? $request->getTopic () : ''; + $logGroup->setTopic ( $request->getTopic () ); + $source = $request->getSource (); + + if ( ! $source ) + $source = $this->source; + $logGroup->setSource ( $source ); + $logitems = $request->getLogitems (); + foreach ( $logitems as $logItem ) { + $log = new Log (); + $log->setTime ( $logItem->getTime () ); + $content = $logItem->getContents (); + foreach ( $content as $key => $value ) { + $content = new Log_Content (); + $content->setKey ( $key ); + $content->setValue ( $value ); + $log->addContents ( $content ); + } + + $logGroup->addLogs ( $log ); + } + + $body = Aliyun_Log_Util::toBytes ( $logGroup ); + unset ( $logGroup ); + + $bodySize = strlen ( $body ); + if ($bodySize > 3 * 1024 * 1024) // 3 MB + throw new Aliyun_Log_Exception ( 'InvalidLogSize', "logItems' size exceeds maximum limitation: 3 MB." ); + $params = array (); + $headers = array (); + $headers ["x-log-bodyrawsize"] = $bodySize; + $headers ['x-log-compresstype'] = 'deflate'; + $headers ['Content-Type'] = 'application/x-protobuf'; + $body = gzcompress ( $body, 6 ); + + $logstore = $request->getLogstore () !== null ? $request->getLogstore () : ''; + $project = $request->getProject () !== null ? $request->getProject () : ''; + $shardKey = $request -> getShardKey(); + $resource = "/logstores/" . $logstore.($shardKey== null?"/shards/lb":"/shards/route"); + if($shardKey) + $params["key"]=$shardKey; + list ( $resp, $header ) = $this->send ( "POST", $project, $body, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_PutLogsResponse ( $header ); + } + + /** + * create logstore + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_CreateLogstoreRequest $request the CreateLogStore request parameters class. + * @throws Aliyun_Log_Exception + * return Aliyun_Log_Models_CreateLogstoreResponse + */ + public function createLogstore(Aliyun_Log_Models_CreateLogstoreRequest $request){ + $headers = array (); + $params = array (); + $resource = '/logstores'; + $project = $request->getProject () !== null ? $request->getProject () : ''; + $headers["x-log-bodyrawsize"] = 0; + $headers["Content-Type"] = "application/json"; + $body = array( + "logstoreName" => $request -> getLogstore(), + "ttl" => (int)($request -> getTtl()), + "shardCount" => (int)($request -> getShardCount()) + ); + $body_str = json_encode($body); + list($resp,$header) = $this -> send("POST",$project,$body_str,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_CreateLogstoreResponse($resp,$header); + } + /** + * update logstore + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_UpdateLogstoreRequest $request the UpdateLogStore request parameters class. + * @throws Aliyun_Log_Exception + * return Aliyun_Log_Models_UpdateLogstoreResponse + */ + public function updateLogstore(Aliyun_Log_Models_UpdateLogstoreRequest $request){ + $headers = array (); + $params = array (); + $project = $request->getProject () !== null ? $request->getProject () : ''; + $headers["x-log-bodyrawsize"] = 0; + $headers["Content-Type"] = "application/json"; + $body = array( + "logstoreName" => $request -> getLogstore(), + "ttl" => (int)($request -> getTtl()), + "shardCount" => (int)($request -> getShardCount()) + ); + $resource = '/logstores/'.$request -> getLogstore(); + $body_str = json_encode($body); + list($resp,$header) = $this -> send("PUT",$project,$body_str,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_UpdateLogstoreResponse($resp,$header); + } + /** + * List all logstores of requested project. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_ListLogstoresRequest $request the ListLogstores request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListLogstoresResponse + */ + public function listLogstores(Aliyun_Log_Models_ListLogstoresRequest $request) { + $headers = array (); + $params = array (); + $resource = '/logstores'; + $project = $request->getProject () !== null ? $request->getProject () : ''; + list ( $resp, $header ) = $this->send ( "GET", $project, NULL, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListLogstoresResponse ( $resp, $header ); + } + + /** + * Delete logstore + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_DeleteLogstoreRequest $request the DeleteLogstores request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_DeleteLogstoresResponse + */ + public function deleteLogstore(Aliyun_Log_Models_DeleteLogstoreRequest $request) { + $headers = array (); + $params = array (); + $project = $request->getProject () !== null ? $request->getProject () : ''; + $logstore = $request -> getLogstore() != null ? $request -> getLogstore() :""; + $resource = "/logstores/$logstore"; + list ( $resp, $header ) = $this->send ( "DELETE", $project, NULL, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_DeleteLogstoreResponse ( $resp, $header ); + } + + /** + * List all topics in a logstore. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_ListTopicsRequest $request the ListTopics request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListTopicsResponse + */ + public function listTopics(Aliyun_Log_Models_ListTopicsRequest $request) { + $headers = array (); + $params = array (); + if ($request->getToken () !== null) + $params ['token'] = $request->getToken (); + if ($request->getLine () !== null) + $params ['line'] = $request->getLine (); + $params ['type'] = 'topic'; + $logstore = $request->getLogstore () !== null ? $request->getLogstore () : ''; + $project = $request->getProject () !== null ? $request->getProject () : ''; + $resource = "/logstores/$logstore"; + list ( $resp, $header ) = $this->send ( "GET", $project, NULL, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListTopicsResponse ( $resp, $header ); + } + + /** + * Get histograms of requested query from log service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_GetHistogramsRequest $request the GetHistograms request parameters class. + * @throws Aliyun_Log_Exception + * @return array(json body, http header) + */ + public function getHistogramsJson(Aliyun_Log_Models_GetHistogramsRequest $request) { + $headers = array (); + $params = array (); + if ($request->getTopic () !== null) + $params ['topic'] = $request->getTopic (); + if ($request->getFrom () !== null) + $params ['from'] = $request->getFrom (); + if ($request->getTo () !== null) + $params ['to'] = $request->getTo (); + if ($request->getQuery () !== null) + $params ['query'] = $request->getQuery (); + $params ['type'] = 'histogram'; + $logstore = $request->getLogstore () !== null ? $request->getLogstore () : ''; + $project = $request->getProject () !== null ? $request->getProject () : ''; + $resource = "/logstores/$logstore"; + list ( $resp, $header ) = $this->send ( "GET", $project, NULL, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return array($resp, $header); + } + + /** + * Get histograms of requested query from log service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_GetHistogramsRequest $request the GetHistograms request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_GetHistogramsResponse + */ + public function getHistograms(Aliyun_Log_Models_GetHistogramsRequest $request) { + $ret = $this->getHistogramsJson($request); + $resp = $ret[0]; + $header = $ret[1]; + return new Aliyun_Log_Models_GetHistogramsResponse ( $resp, $header ); + } + + /** + * Get logs from Log service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_GetLogsRequest $request the GetLogs request parameters class. + * @throws Aliyun_Log_Exception + * @return array(json body, http header) + */ + public function getLogsJson(Aliyun_Log_Models_GetLogsRequest $request) { + $headers = array (); + $params = array (); + if ($request->getTopic () !== null) + $params ['topic'] = $request->getTopic (); + if ($request->getFrom () !== null) + $params ['from'] = $request->getFrom (); + if ($request->getTo () !== null) + $params ['to'] = $request->getTo (); + if ($request->getQuery () !== null) + $params ['query'] = $request->getQuery (); + $params ['type'] = 'log'; + if ($request->getLine () !== null) + $params ['line'] = $request->getLine (); + if ($request->getOffset () !== null) + $params ['offset'] = $request->getOffset (); + if ($request->getOffset () !== null) + $params ['reverse'] = $request->getReverse () ? 'true' : 'false'; + $logstore = $request->getLogstore () !== null ? $request->getLogstore () : ''; + $project = $request->getProject () !== null ? $request->getProject () : ''; + $resource = "/logstores/$logstore"; + list ( $resp, $header ) = $this->send ( "GET", $project, NULL, $resource, $params, $headers ); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return array($resp, $header); + //return new Aliyun_Log_Models_GetLogsResponse ( $resp, $header ); + } + + /** + * Get logs from Log service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_GetLogsRequest $request the GetLogs request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_GetLogsResponse + */ + public function getLogs(Aliyun_Log_Models_GetLogsRequest $request) { + $ret = $this->getLogsJson($request); + $resp = $ret[0]; + $header = $ret[1]; + return new Aliyun_Log_Models_GetLogsResponse ( $resp, $header ); + } + + + /** + * Get logs from Log service with shardid conditions. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_BatchGetLogsRequest $request the BatchGetLogs request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_BatchGetLogsResponse + */ + public function batchGetLogs(Aliyun_Log_Models_BatchGetLogsRequest $request) { + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + $shardId = $request->getShardId()!==null?$request->getShardId():''; + if($request->getCount()!==null) + $params['count']=$request->getCount(); + if($request->getCursor()!==null) + $params['cursor']=$request->getCursor(); + $params['type']='log'; + $headers['Accept-Encoding']='gzip'; + $headers['accept']='application/x-protobuf'; + + $resource = "/logstores/$logstore/shards/$shardId"; + list($resp,$header) = $this->send("GET",$project,NULL,$resource,$params,$headers); + //$resp is a byteArray + $resp = gzuncompress($resp); + if($resp===false)$resp = new LogGroupList(); + + else { + $resp = new LogGroupList($resp); + } + return new Aliyun_Log_Models_BatchGetLogsResponse ( $resp, $header ); + } + + /** + * List Shards from Log service with Project and logstore conditions. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_ListShardsRequest $request the ListShards request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListShardsResponse + */ + public function listShards(Aliyun_Log_Models_ListShardsRequest $request) { + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + + $resource='/logstores/'.$logstore.'/shards'; + list($resp,$header) = $this->send("GET",$project,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListShardsResponse ( $resp, $header ); + } + + /** + * split a shard into two shards with Project and logstore and shardId and midHash conditions. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_SplitShardRequest $request the SplitShard request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListShardsResponse + */ + public function splitShard(Aliyun_Log_Models_SplitShardRequest $request) { + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + $shardId = $request -> getShardId()!= null ? $request -> getShardId():-1; + $midHash = $request -> getMidHash()!= null?$request -> getMidHash():""; + + $resource='/logstores/'.$logstore.'/shards/'.$shardId; + $params["action"] = "split"; + $params["key"] = $midHash; + list($resp,$header) = $this->send("POST",$project,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListShardsResponse ( $resp, $header ); + } + /** + * merge two shards into one shard with Project and logstore and shardId and conditions. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_MergeShardsRequest $request the MergeShards request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListShardsResponse + */ + public function MergeShards(Aliyun_Log_Models_MergeShardsRequest $request) { + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + $shardId = $request -> getShardId()!= null ? $request -> getShardId():-1; + + $resource='/logstores/'.$logstore.'/shards/'.$shardId; + $params["action"] = "merge"; + list($resp,$header) = $this->send("POST",$project,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListShardsResponse ( $resp, $header ); + } + /** + * delete a read only shard with Project and logstore and shardId conditions. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_DeleteShardRequest $request the DeleteShard request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_ListShardsResponse + */ + public function DeleteShard(Aliyun_Log_Models_DeleteShardRequest $request) { + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + $shardId = $request -> getShardId()!= null ? $request -> getShardId():-1; + + $resource='/logstores/'.$logstore.'/shards/'.$shardId; + list($resp,$header) = $this->send("DELETE",$project,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + return new Aliyun_Log_Models_DeleteShardResponse ( $header ); + } + + /** + * Get cursor from Log service. + * Unsuccessful opertaion will cause an Aliyun_Log_Exception. + * + * @param Aliyun_Log_Models_GetCursorRequest $request the GetCursor request parameters class. + * @throws Aliyun_Log_Exception + * @return Aliyun_Log_Models_GetCursorResponse + */ + public function getCursor(Aliyun_Log_Models_GetCursorRequest $request){ + $params = array(); + $headers = array(); + $project = $request->getProject()!==null?$request->getProject():''; + $logstore = $request->getLogstore()!==null?$request->getLogstore():''; + $shardId = $request->getShardId()!==null?$request->getShardId():''; + $mode = $request->getMode()!==null?$request->getMode():''; + $fromTime = $request->getFromTime()!==null?$request->getFromTime():-1; + + if((empty($mode) xor $fromTime==-1)==false){ + if(!empty($mode)) + throw new Aliyun_Log_Exception ( 'RequestError',"Request is failed. Mode and fromTime can not be not empty simultaneously"); + else + throw new Aliyun_Log_Exception ( 'RequestError',"Request is failed. Mode and fromTime can not be empty simultaneously"); + } + if(!empty($mode) && strcmp($mode,'begin')!==0 && strcmp($mode,'end')!==0) + throw new Aliyun_Log_Exception ( 'RequestError',"Request is failed. Mode value invalid:$mode"); + if($fromTime!==-1 && (is_integer($fromTime)==false || $fromTime<0)) + throw new Aliyun_Log_Exception ( 'RequestError',"Request is failed. FromTime value invalid:$fromTime"); + $params['type']='cursor'; + if($fromTime!==-1)$params['from']=$fromTime; + else $params['mode'] = $mode; + $resource='/logstores/'.$logstore.'/shards/'.$shardId; + list($resp,$header) = $this->send("GET",$project,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_GetCursorResponse($resp,$header); + } + + public function createConfig(Aliyun_Log_Models_CreateConfigRequest $request){ + $params = array(); + $headers = array(); + $body=null; + if($request->getConfig()!==null){ + $body = json_encode($request->getConfig()->toArray()); + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/configs'; + list($resp,$header) = $this->send("POST",NULL,$body,$resource,$params,$headers); + return new Aliyun_Log_Models_CreateConfigResponse($header); + } + + public function updateConfig(Aliyun_Log_Models_UpdateConfigRequest $request){ + $params = array(); + $headers = array(); + $body=null; + $configName=''; + if($request->getConfig()!==null){ + $body = json_encode($request->getConfig()->toArray()); + $configName=($request->getConfig()->getConfigName()!==null)?$request->getConfig()->getConfigName():''; + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/configs/'.$configName; + list($resp,$header) = $this->send("PUT",NULL,$body,$resource,$params,$headers); + return new Aliyun_Log_Models_UpdateConfigResponse($header); + } + + public function getConfig(Aliyun_Log_Models_GetConfigRequest $request){ + $params = array(); + $headers = array(); + + $configName = ($request->getConfigName()!==null)?$request->getConfigName():''; + + $resource = '/configs/'.$configName; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_GetConfigResponse($resp,$header); + } + + public function deleteConfig(Aliyun_Log_Models_DeleteConfigRequest $request){ + $params = array(); + $headers = array(); + $configName = ($request->getConfigName()!==null)?$request->getConfigName():''; + $resource = '/configs/'.$configName; + list($resp,$header) = $this->send("DELETE",NULL,NULL,$resource,$params,$headers); + return new Aliyun_Log_Models_DeleteConfigResponse($header); + } + + public function listConfigs(Aliyun_Log_Models_ListConfigsRequest $request){ + $params = array(); + $headers = array(); + + if($request->getConfigName()!==null)$params['configName'] = $request->getConfigName(); + if($request->getOffset()!==null)$params['offset'] = $request->getOffset(); + if($request->getSize()!==null)$params['size'] = $request->getSize(); + + $resource = '/configs'; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListConfigsResponse($resp,$header); + } + + public function createMachineGroup(Aliyun_Log_Models_CreateMachineGroupRequest $request){ + $params = array(); + $headers = array(); + $body=null; + if($request->getMachineGroup()!==null){ + $body = json_encode($request->getMachineGroup()->toArray()); + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/machinegroups'; + list($resp,$header) = $this->send("POST",NULL,$body,$resource,$params,$headers); + + return new Aliyun_Log_Models_CreateMachineGroupResponse($header); + } + + public function updateMachineGroup(Aliyun_Log_Models_UpdateMachineGroupRequest $request){ + $params = array(); + $headers = array(); + $body=null; + $groupName=''; + if($request->getMachineGroup()!==null){ + $body = json_encode($request->getMachineGroup()->toArray()); + $groupName=($request->getMachineGroup()->getGroupName()!==null)?$request->getMachineGroup()->getGroupName():''; + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/machinegroups/'.$groupName; + list($resp,$header) = $this->send("PUT",NULL,$body,$resource,$params,$headers); + return new Aliyun_Log_Models_UpdateMachineGroupResponse($header); + } + + public function getMachineGroup(Aliyun_Log_Models_GetMachineGroupRequest $request){ + $params = array(); + $headers = array(); + + $groupName = ($request->getGroupName()!==null)?$request->getGroupName():''; + + $resource = '/machinegroups/'.$groupName; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_GetMachineGroupResponse($resp,$header); + } + + public function deleteMachineGroup(Aliyun_Log_Models_DeleteMachineGroupRequest $request){ + $params = array(); + $headers = array(); + + $groupName = ($request->getGroupName()!==null)?$request->getGroupName():''; + $resource = '/machinegroups/'.$groupName; + list($resp,$header) = $this->send("DELETE",NULL,NULL,$resource,$params,$headers); + return new Aliyun_Log_Models_DeleteMachineGroupResponse($header); + } + + public function listMachineGroups(Aliyun_Log_Models_ListMachineGroupsRequest $request){ + $params = array(); + $headers = array(); + + if($request->getGroupName()!==null)$params['groupName'] = $request->getGroupName(); + if($request->getOffset()!==null)$params['offset'] = $request->getOffset(); + if($request->getSize()!==null)$params['size'] = $request->getSize(); + + $resource = '/machinegroups'; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + + return new Aliyun_Log_Models_ListMachineGroupsResponse($resp,$header); + } + + public function applyConfigToMachineGroup(Aliyun_Log_Models_ApplyConfigToMachineGroupRequest $request){ + $params = array(); + $headers = array(); + $configName=$request->getConfigName(); + $groupName=$request->getGroupName(); + $headers ['Content-Type'] = 'application/json'; + $resource = '/machinegroups/'.$groupName.'/configs/'.$configName; + list($resp,$header) = $this->send("PUT",NULL,NULL,$resource,$params,$headers); + return new Aliyun_Log_Models_ApplyConfigToMachineGroupResponse($header); + } + + public function removeConfigFromMachineGroup(Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest $request){ + $params = array(); + $headers = array(); + $configName=$request->getConfigName(); + $groupName=$request->getGroupName(); + $headers ['Content-Type'] = 'application/json'; + $resource = '/machinegroups/'.$groupName.'/configs/'.$configName; + list($resp,$header) = $this->send("DELETE",NULL,NULL,$resource,$params,$headers); + return new Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse($header); + } + + public function getMachine(Aliyun_Log_Models_GetMachineRequest $request){ + $params = array(); + $headers = array(); + + $uuid = ($request->getUuid()!==null)?$request->getUuid():''; + + $resource = '/machines/'.$uuid; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_GetMachineResponse($resp,$header); + } + + public function createACL(Aliyun_Log_Models_CreateACLRequest $request){ + $params = array(); + $headers = array(); + $body=null; + if($request->getAcl()!==null){ + $body = json_encode($request->getAcl()->toArray()); + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/acls'; + list($resp,$header) = $this->send("POST",NULL,$body,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_CreateACLResponse($resp,$header); + } + + public function updateACL(Aliyun_Log_Models_UpdateACLRequest $request){ + $params = array(); + $headers = array(); + $body=null; + $aclId=''; + if($request->getAcl()!==null){ + $body = json_encode($request->getAcl()->toArray()); + $aclId=($request->getAcl()->getAclId()!==null)?$request->getAcl()->getAclId():''; + } + $headers ['Content-Type'] = 'application/json'; + $resource = '/acls/'.$aclId; + list($resp,$header) = $this->send("PUT",NULL,$body,$resource,$params,$headers); + return new Aliyun_Log_Models_UpdateACLResponse($header); + } + + public function getACL(Aliyun_Log_Models_GetACLRequest $request){ + $params = array(); + $headers = array(); + + $aclId = ($request->getAclId()!==null)?$request->getAclId():''; + + $resource = '/acls/'.$aclId; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + + return new Aliyun_Log_Models_GetACLResponse($resp,$header); + } + + public function deleteACL(Aliyun_Log_Models_DeleteACLRequest $request){ + $params = array(); + $headers = array(); + $aclId = ($request->getAclId()!==null)?$request->getAclId():''; + $resource = '/acls/'.$aclId; + list($resp,$header) = $this->send("DELETE",NULL,NULL,$resource,$params,$headers); + return new Aliyun_Log_Models_DeleteACLResponse($header); + } + + public function listACLs(Aliyun_Log_Models_ListACLsRequest $request){ + $params = array(); + $headers = array(); + if($request->getPrincipleId()!==null)$params['principleId'] = $request->getPrincipleId(); + if($request->getOffset()!==null)$params['offset'] = $request->getOffset(); + if($request->getSize()!==null)$params['size'] = $request->getSize(); + + $resource = '/acls'; + list($resp,$header) = $this->send("GET",NULL,NULL,$resource,$params,$headers); + $requestId = isset ( $header ['x-log-requestid'] ) ? $header ['x-log-requestid'] : ''; + $resp = $this->parseToJson ( $resp, $requestId ); + return new Aliyun_Log_Models_ListACLsResponse($resp,$header); + } + +} + diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Exception.php b/aliyun-log-php-sdk-master/Aliyun/Log/Exception.php new file mode 100644 index 0000000..b1ac87e --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Exception.php @@ -0,0 +1,72 @@ +code = $code; + $this->message = $message; + $this->requestId = $requestId; + } + + /** + * The __toString() method allows a class to decide how it will react when + * it is treated like a string. + * + * @return string + */ + public function __toString() { + return "Aliyun_Log_Exception: \n{\n ErrorCode: $this->code,\n ErrorMessage: $this->message\n RequestId: $this->requestId\n}\n"; + } + + /** + * Get Aliyun_Log_Exception error code. + * + * @return string + */ + public function getErrorCode() { + return $this->code; + } + + /** + * Get Aliyun_Log_Exception error message. + * + * @return string + */ + public function getErrorMessage() { + return $this->message; + } + + /** + * Get log service sever requestid, '' is set if client or Http error. + * + * @return string + */ + public function getRequestId() { + return $this->requestId; + } +} + diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ACL.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ACL.php new file mode 100644 index 0000000..5b1169e --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ACL.php @@ -0,0 +1,110 @@ +principleType = $principleType; + $this->principleId = $principleId; + $this->object = $object; + $this->privilege = $privilege; + $this->aclId = $aclId; + + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + } + + public function getPrincipleType(){ + return $this->principleType; + } + public function setPrincipleType($principleType){ + $this->principleType = $principleType; + } + + public function getPrincipleId(){ + return $this->principleId; + } + public function setPrincipleId($principleId){ + $this->principleId = $principleId; + } + + public function getObject(){ + return $this->object; + } + public function setObject($object){ + $this->object = $object; + } + public function getPrivilege(){ + return $this->privilege; + } + public function setPrivilege($privilege){ + $this->privilege = $privilege; + } + public function getAclId(){ + return $this->aclId; + } + public function setAclId($aclId){ + $this->aclId = $aclId; + } + public function getCreateTime(){ + return $this->createTime; + } + public function setCreateTime($createTime){ + $this->createTime = $createTime; + } + public function getLastModifyTime(){ + return $this->lastModifyTime; + } + public function setLastModifyTime($lastModifyTime){ + $this->lastModifyTime = $lastModifyTime; + } + + public function toArray(){ + $format_array = array(); + if($this->principleType!==null) + $format_array['principleType'] = $this->principleType; + if($this->principleId!==null) + $format_array['principleId'] = $this->principleId; + if($this->object!==null) + $format_array['object'] = $this->object; + if($this->privilege!==null) + $format_array['privilege'] = $this->privilege; + if($this->aclId!==null) + $format_array['aclId'] = $this->aclId; + if($this->createTime!==null) + $format_array['createTime'] = $this->createTime; + if($this->lastModifyTime!==null) + $format_array['lastModifyTime'] = $this->lastModifyTime; + return $format_array; + } + + public function setFromArray($resp){ + $principleType = ($resp['principleType']!==null)?$resp['principleType']:null; + $principleId = ($resp['principleId']!==null)?$resp['principleId']:null; + $object = ($resp['object']!==null)?$resp['object']:null; + $privilege = ($resp['privilege']!==null)?$resp['privilege']:array(); + $aclId = ($resp['aclId']!==null)?$resp['aclId']:null; + $createTime = ($resp['createTime']!==null)?$resp['createTime']:null; + $lastModifyTime = ($resp['lastModifyTime']!==null)?$resp['lastModifyTime']:null; + + $this->setPrincipleType($principleType); + $this->setPrincipleId($principleId); + $this->setObject($object); + $this->setPrivilege($privilege); + $this->setAclId($aclId); + $this->setCreateTime($createTime); + $this->setLastModifyTime($lastModifyTime); + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupRequest.php new file mode 100644 index 0000000..28291ca --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupRequest.php @@ -0,0 +1,39 @@ +groupName = $groupName; + $this->configName = $configName; + } + public function getGroupName(){ + return $this->groupName; + } + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + + public function getConfigName(){ + return $this->configName; + } + public function setConfigName($configName){ + $this->configName = $configName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupResponse.php new file mode 100644 index 0000000..253e1ac --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ApplyConfigToMachineGroupResponse.php @@ -0,0 +1,29 @@ +logstore = $logstore; + $this->shardId = $shardId; + $this->count = $count; + $this->cursor = $cursor; + } + + /** + * Get logstore name + * + * @return string logstore name + */ + public function getLogstore() { + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore) { + $this->logstore = $logstore; + } + + /** + * Get shard ID + * + * @return string shardId + */ + public function getShardId() { + return $this->shardId; + } + + /** + * Set shard ID + * + * @param string $shardId + * shard ID + */ + public function setShardId($shardId) { + $this->shardId = $shardId; + } + + /** + * Get max return loggroup number + * + * @return integer count + */ + public function getCount() { + return $this->count; + } + + /** + * Set max return loggroup number + * + * @param integer $count + * max return loggroup number + */ + public function setCount($count) { + $this->count = $count; + } + + /** + * Get start cursor + * + * @return string cursor + */ + public function getCursor() { + return $this->cursor; + } + + /** + * Set start cursor + * + * @param string $cursor + * start cursor + */ + public function setCursor($cursor) { + $this->cursor = $cursor; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/BatchGetLogsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/BatchGetLogsResponse.php new file mode 100644 index 0000000..03278cd --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/BatchGetLogsResponse.php @@ -0,0 +1,73 @@ +logPackageList = $resp->getLogGroupListArray(); + $this->nextCursor = (isset($header['x-log-cursor']))?$header['x-log-cursor']:null; + + } + + public function getLogPackageList(){ + return $this->logPackageList; + } + + public function getNextCursor(){ + return $this->nextCursor; + } + + public function getCount() { + return count($this->logPackageList); + } + + public function getLogPackage($index){ + if($index<$this->getCount()){ + return $this->logPackageList[$index]; + } + else{ + throw new OutOfBoundsException('Index must less than size of logPackageList'); + } + } + + public function getLogGroupList(){ + return $this->logPackageList; + } + + public function getLogGroup($index){ + if($index<$this->getCount()){ + return $this->logPackageList[$index]; + } + else{ + throw new OutOfBoundsException('Index must less than size of logPackageList'); + } + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CompressedLogGroup.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CompressedLogGroup.php new file mode 100644 index 0000000..8f163b8 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CompressedLogGroup.php @@ -0,0 +1,38 @@ +time = $time; + if ($contents) + $this->contents = $contents; + else + $this->contents = array (); + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/Config.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Config.php new file mode 100644 index 0000000..585e95c --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Config.php @@ -0,0 +1,198 @@ +filePattern=$filePattern; + $this->key=$key; + $this->localStorage=$localStorage; + $this->logBeginRegex=$logBeginRegex; + $this->logPath=$logPath; + $this->logType=$logType; + $this->regex=$regex; + $this->timeFormat=$timeFormat; + $this->filterRegex=$filterRegex; + $this->filterKey=$filterKey; + $this->topicFormat=$topicFormat; + } + + public function toArray(){ + $resArray = array(); + if($this->filePattern!==null) + $resArray['filePattern'] = $this->filePattern; + if($this->key!==null) + $resArray['key'] = $this->key; + if($this->localStorage!==null) + $resArray['localStorage'] = $this->localStorage; + if($this->logBeginRegex!==null) + $resArray['logBeginRegex'] = $this->logBeginRegex; + if($this->logPath!==null) + $resArray['logPath'] = $this->logPath; + if($this->logType!==null) + $resArray['logType'] = $this->logType; + if($this->regex!==null) + $resArray['regex'] = $this->regex; + if($this->timeFormat!==null) + $resArray['timeFormat'] = $this->timeFormat; + if($this->filterRegex!==null) + $resArray['filterRegex'] = $this->filterRegex; + if($this->filterKey!==null) + $resArray['filterKey'] = $this->filterKey; + if($this->topicFormat!==null) + $resArray['topicFormat'] = $this->topicFormat; + return $resArray; + } +} + +class Aliyun_Log_Models_Config_OutputDetail { + public $projectName; + public $logstoreName; + + public function __construct($projectName='',$logstoreName=''){ + $this->projectName = $projectName; + $this->logstoreName = $logstoreName; + } + public function toArray(){ + $resArray = array(); + if($this->projectName!==null) + $resArray['projectName'] = $this->projectName; + if($this->logstoreName!==null) + $resArray['logstoreName'] = $this->logstoreName; + return $resArray; + } +} + +class Aliyun_Log_Models_Config { + + private $configName; + private $inputType; + private $inputDetail; + private $outputType; + private $outputDetail; + + private $createTime; + private $lastModifyTime; + + public function __construct($configName='',$inputType='',$inputDetail=null, + $outputType='',$outputDetail=null,$createTime=null,$lastModifyTime=null) { + $this->configName = $configName; + $this->inputType = $inputType; + $this->inputDetail = $inputDetail; + $this->outputType = $outputType; + $this->outputDetail = $outputDetail; + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + + } + + public function getConfigName(){ + return $this->configName; + } + public function setConfigName($configName){ + $this->configName = $configName; + } + public function getInputType(){ + return $this->inputType; + } + public function setInputType($inputType){ + $this->inputType = $inputType; + } + public function getInputDetail(){ + return $this->inputDetail; + } + public function setInputDetail($inputDetail){ + $this->inputDetail = $inputDetail; + } + public function getOutputType(){ + return $this->outputType; + } + public function setOutputType($outputType){ + $this->outputType = $outputType; + } + public function getOutputDetail(){ + return $this->outputDetail; + } + public function setOutputDetail($outputDetail){ + $this->outputDetail = $outputDetail; + } + public function getCreateTime(){ + return $this->createTime; + } + public function setCreateTime($createTime){ + $this->createTime = $createTime; + } + + public function getLastModifyTime(){ + return $this->lastModifyTime; + } + public function setLastModifyTime($lastModifyTime){ + $this->lastModifyTime = $lastModifyTime; + } + + public function toArray(){ + $format_array = array(); + if($this->configName!==null) + $format_array['configName'] = $this->configName; + if($this->inputType!==null) + $format_array['inputType'] = $this->inputType; + if($this->inputDetail!==null) + $format_array['inputDetail'] = $this->inputDetail->toArray(); + if($this->outputType!==null) + $format_array['outputType'] = $this->outputType; + if($this->outputDetail!==null) + $format_array['outputDetail'] = $this->outputDetail->toArray(); + if($this->createTime!==null) + $format_array['createTime'] = $this->createTime; + if($this->lastModifyTime!==null) + $format_array['lastModifyTime'] = $this->lastModifyTime; + return $format_array; + } + + public function setFromArray($resp){ + $inputDetail = new Aliyun_Log_Models_Config_InputDetail(); + $inputDetail->filePattern = $resp['inputDetail']['filePattern']; + $inputDetail->key = $resp['inputDetail']['key']; + $inputDetail->localStorage = $resp['inputDetail']['localStorage']; + $inputDetail->logBeginRegex = $resp['inputDetail']['logBeginRegex']; + $inputDetail->logPath = $resp['inputDetail']['logPath']; + $inputDetail->logType = $resp['inputDetail']['logType']; + $inputDetail->regex = $resp['inputDetail']['regex']; + $inputDetail->timeFormat = $resp['inputDetail']['timeFormat']; + $inputDetail->filterRegex = $resp['inputDetail']['filterRegex']; + $inputDetail->filterKey = $resp['inputDetail']['filterKey']; + $inputDetail->topicFormat = $resp['inputDetail']['topicFormat']; + + $outputDetail = new Aliyun_Log_Models_Config_OutputDetail(); + $outputDetail->projectName = $resp['outputDetail']['projectName']; + $outputDetail->logstoreName = $resp['outputDetail']['logstoreName']; + + $configName=$resp['configName']; + $inputType=$resp['inputType']; + $outputType=$resp['outputType']; + + $this->setConfigName($configName); + $this->setInputType($inputType); + $this->setInputDetail($inputDetail); + $this->setOutputType($outputType); + $this->setOutputDetail($outputDetail); + + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLRequest.php new file mode 100644 index 0000000..7b0892c --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLRequest.php @@ -0,0 +1,32 @@ +acl = $acl; + } + + public function getAcl(){ + return $this->acl; + } + public function setAcl($acl){ + $this->acl = $acl; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLResponse.php new file mode 100644 index 0000000..c075b60 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateACLResponse.php @@ -0,0 +1,33 @@ +aclId = $resp['aclId']; + } + public function getAclId(){ + return $this->aclId; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigRequest.php new file mode 100644 index 0000000..5ad80ca --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigRequest.php @@ -0,0 +1,35 @@ +config = $config; + } + + public function getConfig(){ + return $this->config; + + } + + public function setConfig($config){ + $this->config = $config; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigResponse.php new file mode 100644 index 0000000..99e2263 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateConfigResponse.php @@ -0,0 +1,29 @@ + logstore = $logstore; + $this -> ttl = $ttl; + $this -> shardCount = $shardCount; + } + public function getLogstore() + { + return $this -> logstore; + } + public function getTtl() + { + return $this -> ttl; + } + public function getShardCount() + { + return $this -> shardCount; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateLogstoreResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateLogstoreResponse.php new file mode 100644 index 0000000..7ea981a --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateLogstoreResponse.php @@ -0,0 +1,28 @@ +machineGroup = $machineGroup; + } + public function getMachineGroup(){ + return $this->machineGroup; + } + public function setMachineGroup($machineGroup){ + $this->machineGroup = $machineGroup; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateMachineGroupResponse.php new file mode 100644 index 0000000..19503bf --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/CreateMachineGroupResponse.php @@ -0,0 +1,29 @@ +aclId = $aclId; + } + public function getAclId(){ + return $this->aclId; + } + public function setAclId($aclId){ + $this->aclId = $aclId; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteACLResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteACLResponse.php new file mode 100644 index 0000000..1c3ffbb --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteACLResponse.php @@ -0,0 +1,29 @@ +configName = $configName; + } + + public function getConfigName(){ + return $this->configName; + } + + public function setConfigName($configName){ + $this->configName=$configName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteConfigResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteConfigResponse.php new file mode 100644 index 0000000..fc6c28d --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteConfigResponse.php @@ -0,0 +1,28 @@ + logstore = $logstore; + } + public function getLogstore() + { + return $this -> logstore; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteLogstoreResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteLogstoreResponse.php new file mode 100644 index 0000000..eb1294c --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteLogstoreResponse.php @@ -0,0 +1,28 @@ +groupName = $groupName; + } + + public function getGroupName(){ + return $this->groupName; + } + + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteMachineGroupResponse.php new file mode 100644 index 0000000..fdaa151 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteMachineGroupResponse.php @@ -0,0 +1,29 @@ +logstore = $logstore; + $this->shardId = $shardId; + } + + public function getLogstore(){ + return $this->logstore; + } + + public function setLogstore($logstore){ + $this->logstore = $logstore; + } + + public function getShardId(){ + return $this->shardId; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteShardResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteShardResponse.php new file mode 100644 index 0000000..85d6104 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/DeleteShardResponse.php @@ -0,0 +1,24 @@ +aclId = $aclId; + } + public function getAclId(){ + return $this->aclId; + } + public function setAclId($aclId){ + $this->aclId = $aclId; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetACLResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetACLResponse.php new file mode 100644 index 0000000..e96d6a7 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetACLResponse.php @@ -0,0 +1,40 @@ +acl = null; + if($resp!==null){ + $this->acl = new Aliyun_Log_Models_ACL(); + $this->acl->setFromArray($resp); + } + } + + public function getAcl(){ + return $this->acl; + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigRequest.php new file mode 100644 index 0000000..78a15d2 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigRequest.php @@ -0,0 +1,34 @@ +configName = $configName; + } + + public function getConfigName(){ + return $this->configName; + } + + public function setConfigName($configName){ + $this->configName = $configName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigResponse.php new file mode 100644 index 0000000..a4619a2 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetConfigResponse.php @@ -0,0 +1,37 @@ +config = new Aliyun_Log_Models_Config(); + $this->config->setFromArray($resp); + } + + public function getConfig(){ + return $this->config; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorRequest.php new file mode 100644 index 0000000..933b2e8 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorRequest.php @@ -0,0 +1,138 @@ +logstore = $logstore; + $this->shardId = $shardId; + $this->mode = $mode; + $this->fromTime = $fromTime; + } + + /** + * Get logstore name + * + * @return string logstore name + */ + public function getLogstore(){ + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore){ + $this->logstore = $logstore; + } + + /** + * Get shard id + * + * @return string shard id + */ + public function getShardId(){ + return $this->shardId; + } + + /** + * Set shard id + * + * @param string $shardId + * shard id + */ + public function setShardId($shardId){ + $this->shardId = $shardId; + } + + /** + * Get mode + * + * @return string mode + */ + public function getMode(){ + return $this->mode; + } + + /** + * Set mode + * + * @param string $mode + * value must be 'begin' or 'end' + */ + public function setMode($mode){ + $this->mode = $mode; + } + + /** + * Get from time + * + * @return integer(unix_timestamp) from time + */ + public function getFromTime(){ + return $this->fromTime; + } + + /** + * Set from time + * + * @param integer $fromTime + * from time (unix_timestamp) + */ + public function setFromTime($fromTime){ + $this->fromTime = $fromTime; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorResponse.php new file mode 100644 index 0000000..320c0e9 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetCursorResponse.php @@ -0,0 +1,41 @@ +cursor = $resp['cursor']; + } + + /** + * Get cursor from the response + * + * @return string cursor + */ + public function getCursor(){ + return $this->cursor; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsRequest.php new file mode 100644 index 0000000..8df75e6 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsRequest.php @@ -0,0 +1,161 @@ +logstore = $logstore; + $this->from = $from; + $this->to = $to; + $this->topic = $topic; + $this->query = $query; + } + + /** + * Get logstore name + * + * @return string logstore name + */ + public function getLogstore() { + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore) { + $this->logstore = $logstore; + } + + /** + * Get topic name + * + * @return string topic name + */ + public function getTopic() { + return $this->topic; + } + + /** + * Set topic name + * + * @param string $topic + * topic name + */ + public function setTopic($topic) { + $this->topic = $topic; + } + + /** + * Get begin time + * + * @return integer begin time + */ + public function getFrom() { + return $this->from; + } + + /** + * Set begin time + * + * @param integer $from + * begin time + */ + public function setFrom($from) { + $this->from = $from; + } + + /** + * Get end time + * + * @return integer end time + */ + public function getTo() { + return $this->to; + } + + /** + * Set end time + * + * @param integer $to + * end time + */ + public function setTo($to) { + $this->to = $to; + } + + /** + * Get user defined query + * + * @return string user defined query + */ + public function getQuery() { + return $this->query; + } + + /** + * Set user defined query + * + * @param string $query + * user defined query + */ + public function setQuery($query) { + $this->query = $query; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsResponse.php new file mode 100644 index 0000000..b5514f5 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetHistogramsResponse.php @@ -0,0 +1,77 @@ + + + /** + * Aliyun_Log_Models_GetHistogramsResponse constructor + * + * @param array $resp + * GetHistogramsResponse HTTP response body + * @param array $header + * GetHistogramsResponse HTTP response header + */ + public function __construct($resp, $header) { + parent::__construct ( $header ); + $this->progress = $header ['x-log-progress']; + $this->count = $header ['x-log-count']; + $this->histograms = array (); + foreach ( $resp as $data ) + $this->histograms [] = new Aliyun_Log_Models_Histogram ( $data ['from'], $data ['to'], $data ['count'], $data ['progress'] ); + } + + /** + * Check if the histogram is completed + * + * @return bool true if this histogram is completed + */ + public function isCompleted() { + return $this->progress == 'Complete'; + } + + /** + * Get total logs' count that current query hits + * + * @return integer total logs' count that current query hits + */ + public function getTotalCount() { + return $this->count; + } + + /** + * Get histograms on the requested time range: [from, to) + * + * @return array Aliyun_Log_Models_Histogram array, histograms on the requested time range + */ + public function getHistograms() { + return $this->histograms; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsRequest.php new file mode 100644 index 0000000..32ef467 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsRequest.php @@ -0,0 +1,242 @@ +logstore = $logstore; + $this->from = $from; + $this->to = $to; + $this->topic = $topic; + $this->query = $query; + $this->line = $line; + $this->offset = $offset; + $this->reverse = $reverse; + } + + /** + * Get logstore name + * + * @return string logstore name + */ + public function getLogstore() { + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore) { + $this->logstore = $logstore; + } + + /** + * Get topic name + * + * @return string topic name + */ + public function getTopic() { + return $this->topic; + } + + /** + * Set topic name + * + * @param string $topic + * topic name + */ + public function setTopic($topic) { + $this->topic = $topic; + } + + /** + * Get begin time + * + * @return integer begin time + */ + public function getFrom() { + return $this->from; + } + + /** + * Set begin time + * + * @param integer $from + * begin time + */ + public function setFrom($from) { + $this->from = $from; + } + + /** + * Get end time + * + * @return integer end time + */ + public function getTo() { + return $this->to; + } + + /** + * Set end time + * + * @param integer $to + * end time + */ + public function setTo($to) { + $this->to = $to; + } + + /** + * Get user defined query + * + * @return string user defined query + */ + public function getQuery() { + return $this->query; + } + + /** + * Set user defined query + * + * @param string $query + * user defined query + */ + public function setQuery($query) { + $this->query = $query; + } + + /** + * Get max line number of return logs + * + * @return integer max line number of return logs + */ + public function getLine() { + return $this->line; + } + + /** + * Set max line number of return logs + * + * @param integer $line + * max line number of return logs + */ + public function setLine($line) { + $this->line = $line; + } + + /** + * Get line offset of return logs + * + * @return integer line offset of return logs + */ + public function getOffset() { + return $this->offset; + } + + /** + * Set request line offset of return logs + * + * @param integer $offset + * line offset of return logs + */ + public function setOffset($offset) { + $this->offset = $offset; + } + + /** + * Get request reverse flag + * + * @return bool reverse flag + */ + public function getReverse() { + return $this->reverse; + } + + /** + * Set request reverse flag + * + * @param bool $reverse + * reverse flag + */ + public function setReverse($reverse) { + $this->reverse = $reverse; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsResponse.php new file mode 100644 index 0000000..d56dc0c --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetLogsResponse.php @@ -0,0 +1,81 @@ +count = $header['x-log-count']; + $this->progress = $header ['x-log-progress']; + $this->logs = array (); + foreach ( $resp as $data ) { + $contents = $data; + $time = $data ['__time__']; + $source = $data ['__source__']; + unset ( $contents ['__time__'] ); + unset ( $contents ['__source__'] ); + $this->logs [] = new Aliyun_Log_Models_QueriedLog ( $time, $source, $contents ); + } + } + + /** + * Get log number from the response + * + * @return integer log number + */ + public function getCount() { + return $this->count; + } + + /** + * Check if the get logs query is completed + * + * @return bool true if this logs query is completed + */ + public function isCompleted() { + return $this->progress == 'Complete'; + } + + /** + * Get all logs from the response + * + * @return array Aliyun_Log_Models_QueriedLog array, all log data + */ + public function getLogs() { + return $this->logs; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupRequest.php new file mode 100644 index 0000000..8df5b03 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupRequest.php @@ -0,0 +1,31 @@ +groupName = $groupName; + } + public function getGroupName(){ + return $this->groupName; + } + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupResponse.php new file mode 100644 index 0000000..3bb8b3c --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineGroupResponse.php @@ -0,0 +1,36 @@ +machineGroup = new Aliyun_Log_Models_MachineGroup(); + $this->machineGroup->setFromArray($resp); + } + + public function getMachineGroup(){ + return $this->machineGroup; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineRequest.php new file mode 100644 index 0000000..5100c22 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineRequest.php @@ -0,0 +1,34 @@ +uuid = $uuid; + } + + public function getUuid(){ + return $this->uuid; + } + + public function setUuid($uuid){ + $this->uuid = $uuid; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineResponse.php new file mode 100644 index 0000000..fe98f7f --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/GetMachineResponse.php @@ -0,0 +1,38 @@ +machine = new Aliyun_Log_Models_Machine(); + $this->machine->setFromArray($resp); + + } + + public function getMachine(){ + return $this->machine; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/Histogram.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Histogram.php new file mode 100644 index 0000000..b241ffb --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Histogram.php @@ -0,0 +1,90 @@ +from = $from; + $this->to = $to; + $this->count = $count; + $this->progress = $progress; + } + + /** + * Get begin time + * + * @return integer the begin time + */ + public function getFrom() { + return $this->from; + } + + /** + * Get the end time + * + * @return integer the end time + */ + public function getTo() { + return $this->to; + } + + /** + * Get log count of histogram that query hits + * + * @return integer log count of histogram that query hits + */ + public function getCount() { + return $this->count; + } + + /** + * Check if the histogram is completed + * + * @return bool true if this histogram is completed + */ + public function isCompleted() { + return $this->progress == 'Complete'; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsRequest.php new file mode 100644 index 0000000..d6311e1 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsRequest.php @@ -0,0 +1,51 @@ +offset = $offset; + $this->size = $size; + $this->principleId = $principleId; + } + + public function getOffset(){ + return $this->offset; + } + public function setOffset($offset){ + $this->offset = $offset; + } + + public function getSize(){ + return $this->size; + } + public function setSize($size){ + $this->size = $size; + } + + public function getPrincipleId(){ + return $this->principleId; + } + public function setPrincipleId($principleId){ + $this->principleId = $principleId; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsResponse.php new file mode 100644 index 0000000..ca3bf20 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListACLsResponse.php @@ -0,0 +1,44 @@ +setFromArray($value); + $aclArr[]=$aclObj; + } + } + $this->acls = $aclArr; + } + + public function getAcls(){ + return $this->acls; + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsRequest.php new file mode 100644 index 0000000..82049a2 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsRequest.php @@ -0,0 +1,54 @@ +configName = $configName; + $this->offset = $offset; + $this->size = $size; + } + + public function getConfigName(){ + return $this->configName; + } + + public function setConfigName($configName){ + $this->configName = $configName; + } + + public function getOffset(){ + return $this->offset; + } + + public function setOffset($offset){ + $this->offset = $offset; + } + + public function getSize(){ + return $this->size; + } + + public function setSize($size){ + $this->size = $size; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsResponse.php new file mode 100644 index 0000000..fcaf0a7 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListConfigsResponse.php @@ -0,0 +1,44 @@ +size = $resp['total']; + $this->configs = $resp['configs']; + } + + public function getSize(){ + return count($this->configs); + } + + public function getTotal(){ + return $this ->total; + } + + public function getConfigs(){ + return $this->configs; + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListLogstoresRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListLogstoresRequest.php new file mode 100644 index 0000000..497afd7 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListLogstoresRequest.php @@ -0,0 +1,24 @@ +count = $resp ['total']; + $this->logstores = $resp ['logstores']; + } + + /** + * Get total count of logstores from the response + * + * @return integer the number of total logstores from the response + */ + public function getCount() { + return $this->count; + } + + /** + * Get all the logstores from the response + * + * @return array all logstore + */ + public function getLogstores() { + return $this->logstores; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsRequest.php new file mode 100644 index 0000000..104f13b --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsRequest.php @@ -0,0 +1,53 @@ +groupName = $groupName; + $this->offset = $offset; + $this->size = $size; + } + + public function getGroupName(){ + return $this->groupName; + } + + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + + public function getOffset(){ + return $this->offset; + } + + public function setOffset($offset){ + $this->offset = $offset; + } + + public function getSize(){ + return $this->size; + } + + public function setSize($size){ + $this->size = $size; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsResponse.php new file mode 100644 index 0000000..84b3443 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListMachineGroupsResponse.php @@ -0,0 +1,45 @@ +offset = $resp['offset']; + $this->size = $resp['size']; + $this->machineGroups = $resp['machinegroups']; + } + + public function getOffset(){ + return $this->offset; + } + + public function getSize(){ + return $this->size; + } + + public function getMachineGroups(){ + return $this->machineGroups; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsRequest.php new file mode 100644 index 0000000..2bbf718 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsRequest.php @@ -0,0 +1,36 @@ +logstore = $logstore; + } + + public function getLogstore(){ + return $this->logstore; + } + + public function setLogstore($logstore){ + $this->logstore = $logstore; + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsResponse.php new file mode 100644 index 0000000..c1e2025 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListShardsResponse.php @@ -0,0 +1,43 @@ +$value){ + var_dump($value); + $this->shardIds[] = $value['shardID']; + $this->shards[] = new Aliyun_Log_Models_Shard($value['shardID'],$value["status"],$value["inclusiveBeginKey"],$value["exclusiveEndKey"],$value["createTime"]); + } + } + + public function getShardIds(){ + return $this->shardIds; + } + public function getShards() + { + return $this -> shards; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsRequest.php new file mode 100644 index 0000000..60882c1 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsRequest.php @@ -0,0 +1,102 @@ +logstore = $logstore; + $this->token = $token; + $this->line = $line; + } + + /** + * Get logstroe name + * + * @return string logstore name + */ + public function getLogstore() { + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore) { + $this->logstore = $logstore; + } + + + /** + * Get start token to list topics + * + * @return string start token to list topics + */ + public function getToken() { + return $this->token; + } + + /** + * Set start token to list topics + * + * @param string $token start token to list topics + */ + public function setToken($token) { + $this->token = $token; + } + + + /** + * Get max topic counts to return + * + * @return integer max topic counts to return + */ + public function getLine() { + return $this->line; + } + + /** + * Set max topic counts to return + * + * @param integer $line max topic counts to return + */ + public function setLine($line) { + $this->line = $line; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsResponse.php new file mode 100644 index 0000000..a41a9ed --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/ListTopicsResponse.php @@ -0,0 +1,73 @@ +count = $header['x-log-count']; + $this->topics = $resp ; + $this->nextToken = isset ( $header['x-log-nexttoken'] ) ? $header['x-log-nexttoken'] : NULL; + } + + /** + * Get the number of all the topics from the response + * + * @return integer the number of all the topics from the response + */ + public function getCount() { + return $this->count; + } + + /** + * Get all the topics from the response + * + * @return array topics list + */ + public function getTopics() { + return $this->topics; + } + + /** + * Return the next token from the response. If there is no more topic to list, it will return None + * + * @return string/null next token used to list more topics + */ + public function getNextToken() { + return $this->nextToken; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/LogItem.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/LogItem.php new file mode 100644 index 0000000..0eea811 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/LogItem.php @@ -0,0 +1,92 @@ +time = $time; + if ($contents) + $this->contents = $contents; + else + $this->contents = array (); + } + + /** + * Get log time + * + * @return integer log time + */ + public function getTime() { + return $this->time; + } + + /** + * Set log time + * + * @param integer $time + * log time + */ + public function setTime($time) { + $this->time = $time; + } + + /** + * Get log contents + * + * @return array log contents + */ + public function getContents() { + return $this->contents; + } + + /** + * Set log contents + * + * @param array $contents + * log contents + */ + public function setContents($contents) { + $this->contents = $contents; + } + + /** + * Add a key/value pair as log content to the log + * + * @param string $key + * log content key + * @param string $value + * log content value + */ + public function pushBack($key, $value) { + $this->contents [$key] = $value; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/Machine.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Machine.php new file mode 100644 index 0000000..dc8fce7 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Machine.php @@ -0,0 +1,173 @@ +ip = $ip; + $this->os = $os; + $this->hostName = $hostName; + } + + public function getIp(){ + return $this->ip; + } + public function setIp($ip){ + $this->ip = $ip; + } + + + public function getOs(){ + return $this->os; + } + public function setOs($os){ + $this->os = $os; + } + + public function getHostName(){ + return $this->hostName; + } + public function setHostName($hostname){ + $this->hostName = $hostName; + } + public function toArray(){ + $resArr = array(); + if($this->ip!==null) + $resArr['ip'] = $this->ip; + if($this->os!==null) + $resArr['os'] = $this->os; + if($this->hostName!==null) + $resArr['hostName'] = $this->hostName; + return $resArr; + } +} + +class Aliyun_Log_Models_Machine_Status{ + public $binaryCurVersion; + public $binaryDeployVersion; + + public function __construct($binaryCurVersion=null,$binaryDeployVersion=null){ + $this->binaryCurVersion = $binaryCurVersion; + $this->binaryDeployVersion = $binaryDeployVersion; + } + + public function toArray(){ + $resArr = array(); + if($this->binaryCurVersion!==null) + $resArr['binaryCurVersion'] = $this->binaryCurVersion; + if($this->binaryDeployVersion!==null) + $resArr['binaryDeployVersion'] = $this->binaryDeployVersion; + return $resArr; + } +} + + +class Aliyun_Log_Models_Machine { + private $uuid; + private $lastHeartbeatTime; + private $info; + private $status; + + private $createTime; + private $lastModifyTime; + + public function __construct($uuid=null,$lastHeartbeatTime=null,$info=null, + $status=null,$createTime=null,$lastModifyTime=null) { + $this->uuid = $uuid; + $this->lastHeartbeatTime = $lastHeartbeatTime; + $this->info = $info; + $this->status = $status; + + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + } + + public function getUuid(){ + return $this->uuid; + } + public function setUuid($uuid){ + $this->uuid = $uuid; + } + public function getLastHeartbeatTime(){ + return $this->lastHeartbeatTime; + } + public function setLastHeartbeatTime($lastHeartbeatTime){ + $this->lastHeartbeatTime = $lastHeartbeatTime; + } + public function getInfo(){ + return $this->info; + } + public function setInfo($info){ + $this->info = $info; + } + public function getStatus(){ + return $this->status; + } + public function setStatus($status){ + $this->status = $status; + } + + public function getCreateTime(){ + return $this->createTime; + } + public function setCreateTime($createTime){ + $this->createTime = $createTime; + } + public function getLastModifyTime(){ + return $this->lastModifyTime; + } + public function setLastModifyTime($lastModifyTime){ + $this->lastModifyTime = $lastModifyTime; + } + + public function toArray(){ + $resArr = array(); + if($this->uuid!==null) + $resArr['uuid'] = $this->uuid; + if($this->lastHeartbeatTime!==null) + $resArr['lastHeartbeatTime'] = $this->lastHeartbeatTime; + if($this->info!==null) + $resArr['info'] = $this->info->toArray(); + if($this->status!==null) + $resArr['status'] = $this->status->toArray(); + if($this->createTime!==null) + $resArr['createTime'] = $this->createTime; + if($this->lastModifyTime!==null) + $resArr['lastModifyTime'] = $this->lastModifyTime; + return $resArr; + } + + public function setFromArray($resp){ + $info=null; + if(isset($resp['info'])){ + $ip=(isset($resp['info']['ip']))?$resp['info']['ip']:null; + $os=(isset($resp['info']['os']))?$resp['info']['os']:null; + $hostName=(isset($resp['info']['hostName']))?$resp['info']['hostName']:null; + $info = new Aliyun_Log_Models_Machine_Info($ip,$os,$hostName); + } + $status = null; + if(isset($resp['status'])){ + $binaryCurVersion=(isset($resp['status']['binaryCurVersion']))?$resp['status']['binaryCurVersion']:null; + $binaryDeployVersion=(isset($resp['status']['binaryDeployVersion']))?$resp['status']['binaryDeployVersion']:null; + $status = new Aliyun_Log_Models_Machine_Status($binaryCurVersion,$binaryDeployVersion); + } + $uuid=(isset($resp['uuid']))?$resp['uuid']:null; + $lastHeartbeatTime=(isset($resp['lastHeartbeatTime']))?$resp['lastHeartbeatTime']:null; + $createTime=(isset($resp['createTime']))?$resp['createTime']:null; + $lastModifyTime=(isset($resp['lastModifyTime']))?$resp['lastModifyTime']:null; + + $this->setUuid($uuid); + $this->setLastHeartbeatTime($lastHeartbeatTime); + $this->setInfo($info); + $this->setStatus($status); + $this->setCreateTime($createTime); + $this->setLastModifyTime($lastModifyTime); + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/MachineGroup.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/MachineGroup.php new file mode 100644 index 0000000..6d724c9 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/MachineGroup.php @@ -0,0 +1,132 @@ +externalName = $externalName; + $this->groupTopic = $groupTopic; + } + public function toArray(){ + $resArray = array(); + if($this->externalName!==null) + $resArray['externalName'] = $this->externalName; + if($this->groupTopic!==null) + $resArray['groupTopic'] = $this->groupTopic; + return $resArray; + } +} + +class Aliyun_Log_Models_MachineGroup { + private $groupName; + private $groupType; + private $groupAttribute; + private $machineList; + + private $createTime; + private $lastModifyTime; + + public function __construct($groupName='',$groupType='',$groupAttribute=null, + $machineList=null,$createTime=null,$lastModifyTime=null) { + $this->groupName = $groupName; + $this->groupType = $groupType; + $this->groupAttribute = $groupAttribute; + $this->machineList = $machineList; + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + } + + public function getGroupName(){ + return $this->groupName; + } + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + public function getGroupType(){ + return $this->groupType; + } + public function setGroupType($groupType){ + $this->groupType = $groupType; + } + public function getGroupAttribute(){ + return $this->groupAttribute; + } + public function setGroupAttribute($groupAttribute){ + $this->groupAttribute = $groupAttribute; + } + public function getMachineList(){ + return $this->machineList; + } + public function setMachineList($machineList){ + $this->machineList = $machineList; + } + public function getCreateTime(){ + return $this->createTime; + } + public function setCreateTime($createTime){ + $this->createTime = $createTime; + } + public function getLastModifyTime(){ + return $this->lastModifyTime; + } + public function setLastModifyTime($lastModifyTime){ + $this->lastModifyTime = $lastModifyTime; + } + + public function toArray(){ + $format_array = array(); + if($this->groupName!==null) + $format_array['groupName'] = $this->groupName; + if($this->groupType!==null) + $format_array['groupType'] = $this->groupType; + if($this->groupAttribute!==null) + $format_array['groupAttribute'] = $this->groupAttribute->toArray(); + if($this->machineList!==null){ + $mlArr = array(); + foreach($this->machineList as $value){ + $mlArr[] = $value->toArray(); + } + $format_array['machineList'] = $mlArr; + } + if($this->createTime!==null) + $format_array['createTime'] = $this->createTime; + if($this->lastModifyTime!==null) + $format_array['lastModifyTime'] = $this->lastModifyTime; + return $format_array; + } + + public function setFromArray($resp){ + $groupAttribute = null; + if(isset($resp['groupAttribute'])){ + $groupAttributeArr = $resp['groupAttribute']; + $groupAttribute = new Aliyun_Log_Models_MachineGroup_GroupAttribute(); + if(isset($groupAttributeArr['externalName'])) + $groupAttribute->externalName = $groupAttributeArr['externalName']; + if(isset($groupAttributeArr['groupTopic'])) + $groupAttribute->groupTopic = $groupAttributeArr['groupTopic']; + } + $groupName = ($resp['groupName']!==null)?$resp['groupName']:null; + $groupType = ($resp['groupType']!==null)?$resp['groupType']:null; + $machineList = array(); + if(isset($resp['machineList']) && is_array($resp['machineList']) && count($resp['machineList'])>0){ + foreach($resp['machineList'] as $value){ + $machine = new Aliyun_Log_Models_Machine(); + $machine->setFromArray($value); + $machineList[] = $machine; + } + } + + $createTime = ($resp['createTime']!==null)?$resp['createTime']:null; + $lastModifyTime = ($resp['lastModifyTime']!==null)?$resp['lastModifyTime']:null; + $this->setGroupName($groupName); + $this->setGroupType($groupType); + $this->setGroupAttribute($groupAttribute); + $this->setMachineList($machineList); + $this->setCreateTime($createTime); + $this->setLastModifyTime($lastModifyTime); + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/MergeShardsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/MergeShardsRequest.php new file mode 100644 index 0000000..31512a6 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/MergeShardsRequest.php @@ -0,0 +1,39 @@ +logstore = $logstore; + $this->shardId = $shardId; + } + + public function getLogstore(){ + return $this->logstore; + } + + public function setLogstore($logstore){ + $this->logstore = $logstore; + } + + public function getShardId(){ + return $this->shardId; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsRequest.php new file mode 100644 index 0000000..f72ab4e --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsRequest.php @@ -0,0 +1,156 @@ +logstore = $logstore; + $this->topic = $topic; + $this->source = $source; + $this->logitems = $logitems; + $this->shardKey = $shardKey; + } + + /** + * Get logstroe name + * + * @return string logstore name + */ + public function getLogstore() { + return $this->logstore; + } + + /** + * Set logstore name + * + * @param string $logstore + * logstore name + */ + public function setLogstore($logstore) { + $this->logstore = $logstore; + } + + /** + * Get topic name + * + * @return string topic name + */ + public function getTopic() { + return $this->topic; + } + + /** + * Set topic name + * + * @param string $topic + * topic name + */ + public function setTopic($topic) { + $this->topic = $topic; + } + + /** + * Get all the log data + * + * @return array LogItem array, log data + */ + public function getLogItems() { + return $this->logitems; + } + + /** + * Set the log data + * + * @param array $logitems + * LogItem array, log data + */ + public function setLogItems($logitems) { + $this->logitems = $logitems; + } + + /** + * Get log source + * + * @return string log source + */ + public function getSource() { + return $this->source; + } + + /** + * set log source + * + * @param string $source + * log source + */ + public function setSource($source) { + $this->source = $source; + } + /** + * set shard key + * + * @param string shardkey + */ + public function setShardKey($key){ + $this -> shardKey=$key; + } + /** + * get shard key + * + * @return string shardKey + */ + public function getShardKey(){ + return $this ->shardKey; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsResponse.php new file mode 100644 index 0000000..c68191f --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/PutLogsResponse.php @@ -0,0 +1,24 @@ +time = $time; + $this->source = $source; + $this->contents = $contents; // deep copy + } + + /** + * Get log source + * + * @return string log source + */ + public function getSource() { + return $this->source; + } + + /** + * Get log time + * + * @return integer log time + */ + public function getTime() { + return $this->time; + } + + /** + * Get log contents, content many key/value pair. + * + * @return array log contents + */ + public function getContents() { + return $this->contents; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupRequest.php new file mode 100644 index 0000000..193c2f8 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupRequest.php @@ -0,0 +1,40 @@ +groupName = $groupName; + $this->configName = $configName; + } + public function getGroupName(){ + return $this->groupName; + } + public function setGroupName($groupName){ + $this->groupName = $groupName; + } + + public function getConfigName(){ + return $this->configName; + } + public function setConfigName($configName){ + $this->configName = $configName; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupResponse.php new file mode 100644 index 0000000..a4737f6 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/RemoveConfigFromMachineGroupResponse.php @@ -0,0 +1,28 @@ +project = $project; + } + + /** + * Get project name + * + * @return string project name + */ + public function getProject() { + return $this->project; + } + + /** + * Set project name + * + * @param string $project + * project name + */ + public function setProject($project) { + $this->project = $project; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/Response.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Response.php new file mode 100644 index 0000000..4d60812 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Response.php @@ -0,0 +1,58 @@ +headers = $headers; + } + + /** + * Get all http headers + * + * @return array HTTP response header + */ + public function getAllHeaders() { + return $this->headers; + } + + /** + * Get specified http header + * + * @param string $key + * key to get header + * + * @return string HTTP response header. '' will be return if not set. + */ + public function getHeader($key) { + return isset ($this->headers[$key]) ? $this->headers [$key] : ''; + } + + /** + * Get the request id of the response. '' will be return if not set. + * + * @return string request id + */ + public function getRequestId() { + return isset ( $this->headers ['x-log-requestid'] ) ? $this->headers ['x-log-requestid'] : ''; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/Shard.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Shard.php new file mode 100644 index 0000000..2ba42b4 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/Shard.php @@ -0,0 +1,95 @@ +shardId=$shardId; + $this->status = $status; + $this->inclusiveBeginKey = $inclusiveBeginKey; + $this->exclusiveEndKey = $exclusiveEndKey; + $this->createTime = $createTime; + } + + /** + * Get the shardId + * + * @return integer the shard id + */ + public function getShardId(){ + return $this -> shardId; + } + /** + * Get the shard status + * + * @return string the shard status + */ + public function getStatus(){ + return $this -> status; + } + /** + * Get the shard inclusive begin key + * + * @return string inclusive begin key + */ + public function getInclusiveBeginKey(){ + return $this -> inclusiveBeginKey; + } + /** + * Get the shard exclusive begin key + * + * @return string exclusive begin key + */ + public function getExclusiveBeginKey(){ + return $this -> exclusiveBeginKey; + } + /** + * Get the shard create time + * + * @return integer createTime + */ + public function getCreateTime(){ + return $this -> createTime; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/SplitShardRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/SplitShardRequest.php new file mode 100644 index 0000000..129b87e --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/SplitShardRequest.php @@ -0,0 +1,44 @@ +logstore = $logstore; + $this->shardId = $shardId; + $this->midHash = $midHash; + } + + public function getLogstore(){ + return $this->logstore; + } + + public function setLogstore($logstore){ + $this->logstore = $logstore; + } + + public function getShardId(){ + return $this->shardId; + } + public function getMidHash(){ + return $this->midHash; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLRequest.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLRequest.php new file mode 100644 index 0000000..f9cc97d --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLRequest.php @@ -0,0 +1,31 @@ +acl = $acl; + } + + public function getAcl(){ + return $this->acl; + } + public function setAcl($acl){ + $this->acl = $acl; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLResponse.php new file mode 100644 index 0000000..4c58a82 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateACLResponse.php @@ -0,0 +1,29 @@ +config = $config; + } + + public function getConfig(){ + return $this->config; + } + + public function setConfig($config){ + $this->config = $config; + } + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateConfigResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateConfigResponse.php new file mode 100644 index 0000000..8805510 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateConfigResponse.php @@ -0,0 +1,29 @@ + logstore = $logstore; + $this -> ttl = $ttl; + $this -> shardCount = $shardCount; + } + public function getLogstore() + { + return $this -> logstore; + } + public function getTtl() + { + return $this -> ttl; + } + public function getShardCount() + { + return $this -> shardCount; + } +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateLogstoreResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateLogstoreResponse.php new file mode 100644 index 0000000..a09ea86 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateLogstoreResponse.php @@ -0,0 +1,28 @@ +machineGroup = $machineGroup; + } + + public function getMachineGroup(){ + return $this->machineGroup; + } + + public function setMachineGroup($machineGroup){ + $this->machineGroup = $machineGroup; + } + + +} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateMachineGroupResponse.php b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateMachineGroupResponse.php new file mode 100644 index 0000000..9f8f98d --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/Models/UpdateMachineGroupResponse.php @@ -0,0 +1,29 @@ +255) + return 0; + return preg_match("/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $gonten); + } + + /** + * Calculate string $value MD5. + * + * @return string + */ + public static function calMD5($value) { + return strtoupper(md5($value)); + } + + /** + * Calculate string $content hmacSHA1 with secret key $key. + * + * @return string + */ + public static function hmacSHA1($content, $key) { + $signature = hash_hmac("sha1", $content, $key, true); + return base64_encode($signature); + } + + /** + * Change $logGroup to bytes. + * + * @return string + */ + public static function toBytes($logGroup) { + $mem = fopen("php://memory", "rwb"); + $logGroup->write($mem); + rewind($mem); + $bytes=""; + + if(feof($mem)===false){ + $bytes = fread($mem, 10*1024*1024); + } + fclose($mem); + + return $bytes; + + //$mem = fopen("php://memory", "wb"); + /* $fiveMBs = 5*1024*1024; + $mem = fopen("php://temp/maxmemory:$fiveMBs", 'rwb'); + $logGroup->write($mem); + // rewind($mem); + + // fclose($mem); + //d://logGroup.pdoc + // $mem = fopen("php://memory", "rb"); + // $mem = fopen("php://temp/maxmemory:$fiveMBs", 'r+'); + $bytes; + while(!feof($mem)) + $bytes = fread($mem, 10*1024*1024); + fclose($mem); + //test + if($bytes===false)echo "fread fail"; + return $bytes;*/ + + } + + + /** + * Get url encode. + * + * @return string + */ + public static function urlEncodeValue($value) { + return urlencode ( $value ); + } + + /** + * Get url encode. + * + * @return string + */ + public static function urlEncode($params) { + ksort ( $params ); + $url = ""; + $first = true; + foreach ( $params as $key => $value ) { + $val = Aliyun_Log_Util::urlEncodeValue ( $value ); + if ($first) { + $first = false; + $url = "$key=$val"; + } else + $url .= "&$key=$val"; + } + return $url; + } + + /** + * Get canonicalizedLOGHeaders string as defined. + * + * @return string + */ + public static function canonicalizedLOGHeaders($header) { + ksort ( $header ); + $content = ''; + $first = true; + foreach ( $header as $key => $value ) + if (strpos ( $key, "x-log-" ) === 0 || strpos ( $key, "x-acs-" ) === 0) { // x-log- header + if ($first) { + $content .= $key . ':' . $value; + $first = false; + } else + $content .= "\n" . $key . ':' . $value; + } + return $content; + } + + /** + * Get canonicalizedResource string as defined. + * + * @return string + */ + public static function canonicalizedResource($resource, $params) { + if ($params) { + ksort ( $params ); + $urlString = ""; + $first = true; + foreach ( $params as $key => $value ) { + if ($first) { + $first = false; + $urlString = "$key=$value"; + } else + $urlString .= "&$key=$value"; + } + return $resource . '?' . $urlString; + } + return $resource; + } + + /** + * Get request authorization string as defined. + * + * @return string + */ + public static function getRequestAuthorization($method, $resource, $key,$stsToken, $params, $headers) { + if (! $key) + return ''; + $content = $method . "\n"; + if (isset ( $headers ['Content-MD5'] )) + $content .= $headers ['Content-MD5']; + $content .= "\n"; + if (isset ( $headers ['Content-Type'] )) + $content .= $headers ['Content-Type']; + $content .= "\n"; + $content .= $headers ['Date'] . "\n"; + $content .= Aliyun_Log_Util::canonicalizedLOGHeaders ( $headers ) . "\n"; + $content .= Aliyun_Log_Util::canonicalizedResource ( $resource, $params ); + return Aliyun_Log_Util::hmacSHA1 ( $content, $key ); + } + +} + diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/log.proto.php b/aliyun-log-php-sdk-master/Aliyun/Log/log.proto.php new file mode 100644 index 0000000..2d8b952 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/log.proto.php @@ -0,0 +1,629 @@ +read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("Log_Content: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->key_ = $tmp; + $limit-=$len; + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->value_ = $tmp; + $limit-=$len; + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->key_)) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, strlen($this->key_)); + fwrite($fp, $this->key_); + } + if (!is_null($this->value_)) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, strlen($this->value_)); + fwrite($fp, $this->value_); + } + } + + public function size() { + $size = 0; + if (!is_null($this->key_)) { + $l = strlen($this->key_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->value_)) { + $l = strlen($this->value_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + if ($this->key_ === null) return false; + if ($this->value_ === null) return false; + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('key_', $this->key_) + . Protobuf::toString('value_', $this->value_); + } + + // required string key = 1; + + private $key_ = null; + public function clearKey() { $this->key_ = null; } + public function hasKey() { return $this->key_ !== null; } + public function getKey() { if($this->key_ === null) return ""; else return $this->key_; } + public function setKey($value) { $this->key_ = $value; } + + // required string value = 2; + + private $value_ = null; + public function clearValue() { $this->value_ = null; } + public function hasValue() { return $this->value_ !== null; } + public function getValue() { if($this->value_ === null) return ""; else return $this->value_; } + public function setValue($value) { $this->value_ = $value; } + + // @@protoc_insertion_point(class_scope:Log.Content) +} + +// message Log +class Log { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("Log: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 0'); + $tmp = Protobuf::read_varint($fp, $limit); + if ($tmp === false) + throw new Exception('Protobuf::read_varint returned false'); + $this->time_ = $tmp; + + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->contents_[] = new Log_Content($fp, $len); + ASSERT('$len == 0'); + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->time_)) { + fwrite($fp, "\x08"); + Protobuf::write_varint($fp, $this->time_); + } + if (!is_null($this->contents_)) + foreach($this->contents_ as $v) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + } + + public function size() { + $size = 0; + if (!is_null($this->time_)) { + $size += 1 + Protobuf::size_varint($this->time_); + } + if (!is_null($this->contents_)) + foreach($this->contents_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + if ($this->time_ === null) return false; + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('time_', $this->time_) + . Protobuf::toString('contents_', $this->contents_); + } + + // required uint32 time = 1; + + private $time_ = null; + public function clearTime() { $this->time_ = null; } + public function hasTime() { return $this->time_ !== null; } + public function getTime() { if($this->time_ === null) return 0; else return $this->time_; } + public function setTime($value) { $this->time_ = $value; } + + // repeated .Log.Content contents = 2; + + private $contents_ = null; + public function clearContents() { $this->contents_ = null; } + public function getContentsCount() { if ($this->contents_ === null ) return 0; else return count($this->contents_); } + public function getContents($index) { return $this->contents_[$index]; } + public function getContentsArray() { if ($this->contents_ === null ) return array(); else return $this->contents_; } + public function setContents($index, $value) {$this->contents_[$index] = $value; } + public function addContents($value) { $this->contents_[] = $value; } + public function addAllContents(array $values) { foreach($values as $value) {$this->contents_[] = $value;} } + + // @@protoc_insertion_point(class_scope:Log) +} + +// message LogGroup +class LogGroup { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("LogGroup: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->logs_[] = new Log($fp, $len); + ASSERT('$len == 0'); + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->reserved_ = $tmp; + $limit-=$len; + break; + case 3: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->topic_ = $tmp; + $limit-=$len; + break; + case 4: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->source_ = $tmp; + $limit-=$len; + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->logs_)) + foreach($this->logs_ as $v) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + if (!is_null($this->reserved_)) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, strlen($this->reserved_)); + fwrite($fp, $this->reserved_); + } + if (!is_null($this->topic_)) { + fwrite($fp, "\x1a"); + Protobuf::write_varint($fp, strlen($this->topic_)); + fwrite($fp, $this->topic_); + } + if (!is_null($this->source_)) { + fwrite($fp, "\""); + Protobuf::write_varint($fp, strlen($this->source_)); + fwrite($fp, $this->source_); + } + } + + public function size() { + $size = 0; + if (!is_null($this->logs_)) + foreach($this->logs_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->reserved_)) { + $l = strlen($this->reserved_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->topic_)) { + $l = strlen($this->topic_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->source_)) { + $l = strlen($this->source_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('logs_', $this->logs_) + . Protobuf::toString('reserved_', $this->reserved_) + . Protobuf::toString('topic_', $this->topic_) + . Protobuf::toString('source_', $this->source_); + } + + // repeated .Log logs = 1; + + private $logs_ = null; + public function clearLogs() { $this->logs_ = null; } + public function getLogsCount() { if ($this->logs_ === null ) return 0; else return count($this->logs_); } + public function getLogs($index) { return $this->logs_[$index]; } + public function getLogsArray() { if ($this->logs_ === null ) return array(); else return $this->logs_; } + public function setLogs($index, $value) {$this->logs_[$index] = $value; } + public function addLogs($value) { $this->logs_[] = $value; } + public function addAllLogs(array $values) { foreach($values as $value) {$this->logs_[] = $value;} } + + // optional string reserved = 2; + + private $reserved_ = null; + public function clearReserved() { $this->reserved_ = null; } + public function hasReserved() { return $this->reserved_ !== null; } + public function getReserved() { if($this->reserved_ === null) return ""; else return $this->reserved_; } + public function setReserved($value) { $this->reserved_ = $value; } + + // optional string topic = 3; + + private $topic_ = null; + public function clearTopic() { $this->topic_ = null; } + public function hasTopic() { return $this->topic_ !== null; } + public function getTopic() { if($this->topic_ === null) return ""; else return $this->topic_; } + public function setTopic($value) { $this->topic_ = $value; } + + // optional string source = 4; + + private $source_ = null; + public function clearSource() { $this->source_ = null; } + public function hasSource() { return $this->source_ !== null; } + public function getSource() { if($this->source_ === null) return ""; else return $this->source_; } + public function setSource($value) { $this->source_ = $value; } + + // @@protoc_insertion_point(class_scope:LogGroup) +} + +// message LogPackage +class LogPackage { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("LogPackage: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->data_ = $tmp; + $limit-=$len; + break; + case 2: + ASSERT('$wire == 0'); + $tmp = Protobuf::read_varint($fp, $limit); + if ($tmp === false) + throw new Exception('Protobuf::read_varint returned false'); + $this->uncompressSize_ = $tmp; + + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->data_)) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, strlen($this->data_)); + fwrite($fp, $this->data_); + } + if (!is_null($this->uncompressSize_)) { + fwrite($fp, "\x10"); + Protobuf::write_varint($fp, $this->uncompressSize_); + } + } + + public function size() { + $size = 0; + if (!is_null($this->data_)) { + $l = strlen($this->data_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->uncompressSize_)) { + $size += 1 + Protobuf::size_varint($this->uncompressSize_); + } + return $size; + } + + public function validateRequired() { + if ($this->data_ === null) return false; + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('data_', $this->data_) + . Protobuf::toString('uncompressSize_', $this->uncompressSize_); + } + + // required bytes data = 1; + + private $data_ = null; + public function clearData() { $this->data_ = null; } + public function hasData() { return $this->data_ !== null; } + public function getData() { if($this->data_ === null) return ""; else return $this->data_; } + public function setData($value) { $this->data_ = $value; } + + // optional int32 uncompress_size = 2; + + private $uncompressSize_ = null; + public function clearUncompressSize() { $this->uncompressSize_ = null; } + public function hasUncompressSize() { return $this->uncompressSize_ !== null; } + public function getUncompressSize() { if($this->uncompressSize_ === null) return 0; else return $this->uncompressSize_; } + public function setUncompressSize($value) { $this->uncompressSize_ = $value; } + + // @@protoc_insertion_point(class_scope:LogPackage) +} + +// message LogPackageList +class LogPackageList { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("LogPackageList: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->packages_[] = new LogPackage($fp, $len); + ASSERT('$len == 0'); + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->packages_)) + foreach($this->packages_ as $v) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + } + + public function size() { + $size = 0; + if (!is_null($this->packages_)) + foreach($this->packages_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('packages_', $this->packages_); + } + + // repeated .LogPackage packages = 1; + + private $packages_ = null; + public function clearPackages() { $this->packages_ = null; } + public function getPackagesCount() { if ($this->packages_ === null ) return 0; else return count($this->packages_); } + public function getPackages($index) { return $this->packages_[$index]; } + public function getPackagesArray() { if ($this->packages_ === null ) return array(); else return $this->packages_; } + public function setPackages($index, $value) {$this->packages_[$index] = $value; } + public function addPackages($value) { $this->packages_[] = $value; } + public function addAllPackages(array $values) { foreach($values as $value) {$this->packages_[] = $value;} } + + // @@protoc_insertion_point(class_scope:LogPackageList) +} + diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/protocolbuffers.inc.php b/aliyun-log-php-sdk-master/Aliyun/Log/protocolbuffers.inc.php new file mode 100644 index 0000000..ec4f326 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/protocolbuffers.inc.php @@ -0,0 +1,315 @@ +read($fp, $limit); + if (isset($str)) + fclose($fp); + } + } +} + +/** + * Class to aid in the parsing and creating of Protocol Buffer Messages + * This class should be included by the developer before they use a + * generated protobuf class. + * + * @author Andrew Brampton + * + */ +class Protobuf { + + const TYPE_DOUBLE = 1; // double, exactly eight bytes on the wire. + const TYPE_FLOAT = 2; // float, exactly four bytes on the wire. + const TYPE_INT64 = 3; // int64, varint on the wire. Negative numbers + // take 10 bytes. Use TYPE_SINT64 if negative + // values are likely. + const TYPE_UINT64 = 4; // uint64, varint on the wire. + const TYPE_INT32 = 5; // int32, varint on the wire. Negative numbers + // take 10 bytes. Use TYPE_SINT32 if negative + // values are likely. + const TYPE_FIXED64 = 6; // uint64, exactly eight bytes on the wire. + const TYPE_FIXED32 = 7; // uint32, exactly four bytes on the wire. + const TYPE_BOOL = 8; // bool, varint on the wire. + const TYPE_STRING = 9; // UTF-8 text. + const TYPE_GROUP = 10; // Tag-delimited message. Deprecated. + const TYPE_MESSAGE = 11; // Length-delimited message. + + const TYPE_BYTES = 12; // Arbitrary byte array. + const TYPE_UINT32 = 13; // uint32, varint on the wire + const TYPE_ENUM = 14; // Enum, varint on the wire + const TYPE_SFIXED32 = 15; // int32, exactly four bytes on the wire + const TYPE_SFIXED64 = 16; // int64, exactly eight bytes on the wire + const TYPE_SINT32 = 17; // int32, ZigZag-encoded varint on the wire + const TYPE_SINT64 = 18; // int64, ZigZag-encoded varint on the wire + + /** + * Returns a string representing this wiretype + */ + public static function get_wiretype($wire_type) { + switch ($wire_type) { + case 0: return 'varint'; + case 1: return '64-bit'; + case 2: return 'length-delimited'; + case 3: return 'group start'; + case 4: return 'group end'; + case 5: return '32-bit'; + default: return 'unknown'; + } + } + + /** + * Returns how big (in bytes) this number would be as a varint + */ + public static function size_varint($i) { +/* $len = 0; + do { + $i = $i >> 7; + $len++; + } while ($i != 0); + return $len; +*/ + // TODO Change to a binary search + if ($i < 0x80) + return 1; + if ($i < 0x4000) + return 2; + if ($i < 0x200000) + return 3; + if ($i < 0x10000000) + return 4; + if ($i < 0x800000000) + return 5; + if ($i < 0x40000000000) + return 6; + if ($i < 0x2000000000000) + return 7; + if ($i < 0x100000000000000) + return 8; + if ($i < 0x8000000000000000) + return 9; + } + + /** + * Tries to read a varint from $fp. + * @returns the Varint from the stream, or false if the stream has reached eof. + */ + public static function read_varint($fp, &$limit = null) { + $value = ''; + $len = 0; + do { // Keep reading until we find the last byte + $b = fread($fp, 1); + if ($b === false) + throw new Exception("read_varint(): Error reading byte"); + if (strlen($b) < 1) + break; + + $value .= $b; + $len++; + } while ($b >= "\x80"); + + if ($len == 0) { + if (feof($fp)) + return false; + throw new Exception("read_varint(): Error reading byte"); + } + + if ($limit !== null) + $limit -= $len; + + $i = 0; + $shift = 0; + for ($j = 0; $j < $len; $j++) { + $i |= ((ord($value[$j]) & 0x7F) << $shift); + $shift += 7; + } + + return $i; + } + + public static function read_double($fp){throw "I've not coded it yet Exception";} + public static function read_float ($fp){throw "I've not coded it yet Exception";} + public static function read_uint64($fp){throw "I've not coded it yet Exception";} + public static function read_int64 ($fp){throw "I've not coded it yet Exception";} + public static function read_uint32($fp){throw "I've not coded it yet Exception";} + public static function read_int32 ($fp){throw "I've not coded it yet Exception";} + public static function read_zint32($fp){throw "I've not coded it yet Exception";} + public static function read_zint64($fp){throw "I've not coded it yet Exception";} + + /** + * Writes a varint to $fp + * returns the number of bytes written + * @param $fp + * @param $i The int to encode + * @return The number of bytes written + */ + public static function write_varint($fp, $i) { + $len = 0; + do { + $v = $i & 0x7F; + $i = $i >> 7; + + if ($i != 0) + $v |= 0x80; + + if (fwrite($fp, chr($v)) !== 1) + throw new Exception("write_varint(): Error writing byte"); + + $len++; + } while ($i != 0); + + return $len; + } + + public static function write_double($fp, $d){throw "I've not coded it yet Exception";} + public static function write_float ($fp, $f){throw "I've not coded it yet Exception";} + public static function write_uint64($fp, $i){throw "I've not coded it yet Exception";} + public static function write_int64 ($fp, $i){throw "I've not coded it yet Exception";} + public static function write_uint32($fp, $i){throw "I've not coded it yet Exception";} + public static function write_int32 ($fp, $i){throw "I've not coded it yet Exception";} + public static function write_zint32($fp, $i){throw "I've not coded it yet Exception";} + public static function write_zint64($fp, $i){throw "I've not coded it yet Exception";} + + /** + * Seek past a varint + */ + public static function skip_varint($fp) { + $len = 0; + do { // Keep reading until we find the last byte + $b = fread($fp, 1); + if ($b === false) + throw new Exception("skip(varint): Error reading byte"); + $len++; + } while ($b >= "\x80"); + return $len; + } + + /** + * Seek past the current field + */ + public static function skip_field($fp, $wire_type) { + switch ($wire_type) { + case 0: // varint + return Protobuf::skip_varint($fp); + + case 1: // 64bit + if (fseek($fp, 8, SEEK_CUR) === -1) + throw new Exception('skip(' . ProtoBuf::get_wiretype(1) . '): Error seeking'); + return 8; + + case 2: // length delimited + $varlen = 0; + $len = Protobuf::read_varint($fp, $varlen); + if (fseek($fp, $len, SEEK_CUR) === -1) + throw new Exception('skip(' . ProtoBuf::get_wiretype(2) . '): Error seeking'); + return $len - $varlen; + + //case 3: // Start group TODO we must keep looping until we find the closing end grou + + //case 4: // End group - We should never skip a end group! + // return 0; // Do nothing + + case 5: // 32bit + if (fseek($fp, 4, SEEK_CUR) === -1) + throw new Exception('skip('. ProtoBuf::get_wiretype(5) . '): Error seeking'); + return 4; + + default: + throw new Exception('skip('. ProtoBuf::get_wiretype($wire_type) . '): Unsupported wire_type'); + } + } + + /** + * Read a unknown field from the stream and return its raw bytes + */ + public static function read_field($fp, $wire_type, &$limit = null) { + switch ($wire_type) { + case 0: // varint + return Protobuf::read_varint($fp, $limit); + + case 1: // 64bit + $limit -= 8; + return fread($fp, 8); + + case 2: // length delimited + $len = Protobuf::read_varint($fp, $limit); + $limit -= $len; + return fread($fp, $len); + + //case 3: // Start group TODO we must keep looping until we find the closing end grou + + //case 4: // End group - We should never skip a end group! + // return 0; // Do nothing + + case 5: // 32bit + $limit -= 4; + return fread($fp, 4); + + default: + throw new Exception('read_unknown('. ProtoBuf::get_wiretype($wire_type) . '): Unsupported wire_type'); + } + } + + /** + * Used to aid in pretty printing of Protobuf objects + */ + private static $print_depth = 0; + private static $indent_char = "\t"; + private static $print_limit = 50; + + public static function toString($key, $value) { + if (is_null($value)) + return; + $ret = str_repeat(self::$indent_char, self::$print_depth) . "$key=>"; + if (is_array($value)) { + $ret .= "array(\n"; + self::$print_depth++; + foreach($value as $i => $v) + $ret .= self::toString("[$i]", $v); + self::$print_depth--; + $ret .= str_repeat(self::$indent_char, self::$print_depth) . ")\n"; + } else { + if (is_object($value)) { + self::$print_depth++; + $ret .= get_class($value) . "(\n"; + $ret .= $value->__toString() . "\n"; + self::$print_depth--; + $ret .= str_repeat(self::$indent_char, self::$print_depth) . ")\n"; + } elseif (is_string($value)) { + $safevalue = addcslashes($value, "\0..\37\177..\377"); + if (strlen($safevalue) > self::$print_limit) { + $safevalue = substr($safevalue, 0, self::$print_limit) . '...'; + } + + $ret .= '"' . $safevalue . '" (' . strlen($value) . " bytes)\n"; + + } elseif (is_bool($value)) { + $ret .= ($value ? 'true' : 'false') . "\n"; + } else { + $ret .= (string)$value . "\n"; + } + } + return $ret; + } +} +?> diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/requestcore.class.php b/aliyun-log-php-sdk-master/Aliyun/Log/requestcore.class.php new file mode 100644 index 0000000..0f8a0b1 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/requestcore.class.php @@ -0,0 +1,1026 @@ +). + */ + public $request_class = 'RequestCore'; + + /** + * The default class to use for HTTP Responses (defaults to ). + */ + public $response_class = '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; + + + /*%******************************************************************************************%*/ + // 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 + + /** + * Constructs 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; + } + + /** + * Destructs 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 + + /** + * Sets 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; + } + + /** + * Adds 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; + } + + /** + * Removes 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; + } + + /** + * Sets 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; + } + + /** + * Sets 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; + } + + /** + * Sets 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); + } + + /** + * Sets 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); + } + + /** + * Sets 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; + } + + /** + * Sets 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; + $write_file_handle = fopen($location, 'w'); + + return $this->set_write_stream($write_file_handle); + } + + /** + * 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; + } + + /** + * 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) + { + $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; + } + + /** + * Prepares 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_MAXREDIRS, 5); + curl_setopt($curl_handle, CURLOPT_HEADER, true); + curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl_handle, CURLOPT_TIMEOUT, 5184000); + curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 120); + 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_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) + { + curl_setopt($curl_handle, CURLOPT_HTTPPROXYTUNNEL, true); + + $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; + } + + 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_POST, true); + 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)) + { + 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 $curl_handle (Optional) The reference to the already executed cURL request. + * @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) + { + if ($response) + { + $this->response = $response; + } + // As long as this came back as a valid resource... + if (is_resource($curl_handle)) + { + // 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); + + // 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 && $this->$response) + { + return new $this->response_class($this->response_headers, $this->response_body, $this->response_code, $curl_handle); + } + } + + // Return false + return false; + } + + /** + * Sends 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 resource: ' . (string) $curl_handle . '; cURL error: ' . curl_error($curl_handle) . ' (' . curl_errno($curl_handle) . ')'); + } + + $parsed_response = $this->process_response($curl_handle, $this->response); + + curl_close($curl_handle); + + if ($parse) + { + return $parsed_response; + } + + return $this->response; + } + + /** + * Sends the request using , enabling parallel requests. Uses the "rolling" method. + * + * @param array $handles (Required) An indexed array of cURL handles to process simultaneously. + * @param array $opt (Optional) An associative array of parameters that can have the following keys:
    + *
  • callback - string|array - Optional - The string name of a function to pass the response data to. If this is a method, pass an array where the [0] index is the class and the [1] index is the method name.
  • + *
  • limit - integer - Optional - The number of simultaneous requests to make. This can be useful for scaling around slow server responses. Defaults to trusting cURLs judgement as to how many to use.
+ * @return array Post-processed cURL responses. + */ + public function send_multi_request($handles, $opt = null) + { + set_time_limit(0); + + // Skip everything if there are no handles to process. + if (count($handles) === 0) return array(); + + if (!$opt) $opt = array(); + + // Initialize any missing options + $limit = isset($opt['limit']) ? $opt['limit'] : -1; + + // Initialize + $handle_list = $handles; + $http = new $this->request_class(); + $multi_handle = curl_multi_init(); + $handles_post = array(); + $added = count($handles); + $last_handle = null; + $count = 0; + $i = 0; + + // Loop through the cURL handles and add as many as it set by the limit parameter. + while ($i < $added) + { + if ($limit > 0 && $i >= $limit) break; + curl_multi_add_handle($multi_handle, array_shift($handles)); + $i++; + } + + do + { + $active = false; + + // Start executing and wait for a response. + while (($status = curl_multi_exec($multi_handle, $active)) === CURLM_CALL_MULTI_PERFORM) + { + // Start looking for possible responses immediately when we have to add more handles + if (count($handles) > 0) break; + } + + // Figure out which requests finished. + $to_process = array(); + + while ($done = curl_multi_info_read($multi_handle)) + { + // Since curl_errno() isn't reliable for handles that were in multirequests, we check the 'result' of the info read, which contains the curl error number, (listed here http://curl.haxx.se/libcurl/c/libcurl-errors.html ) + if ($done['result'] > 0) + { + throw new RequestCore_Exception('cURL resource: ' . (string) $done['handle'] . '; cURL error: ' . curl_error($done['handle']) . ' (' . $done['result'] . ')'); + } + + // Because curl_multi_info_read() might return more than one message about a request, we check to see if this request is already in our array of completed requests + elseif (!isset($to_process[(int) $done['handle']])) + { + $to_process[(int) $done['handle']] = $done; + } + } + + // Actually deal with the request + foreach ($to_process as $pkey => $done) + { + $response = $http->process_response($done['handle'], curl_multi_getcontent($done['handle'])); + $key = array_search($done['handle'], $handle_list, true); + $handles_post[$key] = $response; + + if (count($handles) > 0) + { + curl_multi_add_handle($multi_handle, array_shift($handles)); + } + + curl_multi_remove_handle($multi_handle, $done['handle']); + curl_close($done['handle']); + } + } + while ($active || count($handles_post) < $added); + + curl_multi_close($multi_handle); + + ksort($handles_post, SORT_NUMERIC); + return $handles_post; + } + + + /*%******************************************************************************************%*/ + // 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; + } +} + + +/** + * Container for all response-related methods. + */ +class ResponseCore +{ + /** + * Stores the HTTP header information. + */ + public $header; + + /** + * Stores the SimpleXML response. + */ + public $body; + + /** + * Stores the HTTP response code. + */ + public $status; + + /** + * Constructs a new instance of this class. + * + * @param array $header (Required) Associative array of HTTP headers (typically returned by ). + * @param string $body (Required) XML-formatted response from AWS. + * @param integer $status (Optional) HTTP response status code from the request. + * @return object 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; + } +} + +/** + * Default RequestCore Exception. + */ +class RequestCore_Exception extends Exception {} diff --git a/aliyun-log-php-sdk-master/Aliyun/Log/sls.proto.php b/aliyun-log-php-sdk-master/Aliyun/Log/sls.proto.php new file mode 100644 index 0000000..84e8189 --- /dev/null +++ b/aliyun-log-php-sdk-master/Aliyun/Log/sls.proto.php @@ -0,0 +1,515 @@ +read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("Log_Content: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->key_ = $tmp; + $limit-=$len; + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->value_ = $tmp; + $limit-=$len; + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->key_)) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, strlen($this->key_)); + fwrite($fp, $this->key_); + } + if (!is_null($this->value_)) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, strlen($this->value_)); + fwrite($fp, $this->value_); + } + } + + public function size() { + $size = 0; + if (!is_null($this->key_)) { + $l = strlen($this->key_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->value_)) { + $l = strlen($this->value_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + if ($this->key_ === null) return false; + if ($this->value_ === null) return false; + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('key_', $this->key_) + . Protobuf::toString('value_', $this->value_); + } + + // required string Key = 1; + + private $key_ = null; + public function clearKey() { $this->key_ = null; } + public function hasKey() { return $this->key_ !== null; } + public function getKey() { if($this->key_ === null) return ""; else return $this->key_; } + public function setKey($value) { $this->key_ = $value; } + + // required string Value = 2; + + private $value_ = null; + public function clearValue() { $this->value_ = null; } + public function hasValue() { return $this->value_ !== null; } + public function getValue() { if($this->value_ === null) return ""; else return $this->value_; } + public function setValue($value) { $this->value_ = $value; } + + // @@protoc_insertion_point(class_scope:Log.Content) +} + +// message Log +class Log { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("Log: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 0'); + $tmp = Protobuf::read_varint($fp, $limit); + if ($tmp === false) + throw new Exception('Protobuf::read_varint returned false'); + $this->time_ = $tmp; + + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->contents_[] = new Log_Content($fp, $len); + ASSERT('$len == 0'); + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->time_)) { + fwrite($fp, "\x08"); + Protobuf::write_varint($fp, $this->time_); + } + if (!is_null($this->contents_)) + foreach($this->contents_ as $v) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + } + + public function size() { + $size = 0; + if (!is_null($this->time_)) { + $size += 1 + Protobuf::size_varint($this->time_); + } + if (!is_null($this->contents_)) + foreach($this->contents_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + if ($this->time_ === null) return false; + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('time_', $this->time_) + . Protobuf::toString('contents_', $this->contents_); + } + + // required uint32 Time = 1; + + private $time_ = null; + public function clearTime() { $this->time_ = null; } + public function hasTime() { return $this->time_ !== null; } + public function getTime() { if($this->time_ === null) return 0; else return $this->time_; } + public function setTime($value) { $this->time_ = $value; } + + // repeated .Log.Content Contents = 2; + + private $contents_ = null; + public function clearContents() { $this->contents_ = null; } + public function getContentsCount() { if ($this->contents_ === null ) return 0; else return count($this->contents_); } + public function getContents($index) { return $this->contents_[$index]; } + public function getContentsArray() { if ($this->contents_ === null ) return array(); else return $this->contents_; } + public function setContents($index, $value) {$this->contents_[$index] = $value; } + public function addContents($value) { $this->contents_[] = $value; } + public function addAllContents(array $values) { foreach($values as $value) {$this->contents_[] = $value;} } + + // @@protoc_insertion_point(class_scope:Log) +} + +// message LogGroup +class LogGroup { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("LogGroup: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->logs_[] = new Log($fp, $len); + ASSERT('$len == 0'); + break; + case 2: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->category_ = $tmp; + $limit-=$len; + break; + case 3: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->topic_ = $tmp; + $limit-=$len; + break; + case 4: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + if ($len > 0) + $tmp = fread($fp, $len); + else + $tmp = ''; + if ($tmp === false) + throw new Exception("fread($len) returned false"); + $this->source_ = $tmp; + $limit-=$len; + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->logs_)) + foreach($this->logs_ as $v) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + if (!is_null($this->category_)) { + fwrite($fp, "\x12"); + Protobuf::write_varint($fp, strlen($this->category_)); + fwrite($fp, $this->category_); + } + if (!is_null($this->topic_)) { + fwrite($fp, "\x1a"); + Protobuf::write_varint($fp, strlen($this->topic_)); + fwrite($fp, $this->topic_); + } + if (!is_null($this->source_)) { + fwrite($fp, "\""); + Protobuf::write_varint($fp, strlen($this->source_)); + fwrite($fp, $this->source_); + } + } + + public function size() { + $size = 0; + if (!is_null($this->logs_)) + foreach($this->logs_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->category_)) { + $l = strlen($this->category_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->topic_)) { + $l = strlen($this->topic_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + if (!is_null($this->source_)) { + $l = strlen($this->source_); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('logs_', $this->logs_) + . Protobuf::toString('category_', $this->category_) + . Protobuf::toString('topic_', $this->topic_) + . Protobuf::toString('source_', $this->source_); + } + + // repeated .Log Logs = 1; + + private $logs_ = null; + public function clearLogs() { $this->logs_ = null; } + public function getLogsCount() { if ($this->logs_ === null ) return 0; else return count($this->logs_); } + public function getLogs($index) { return $this->logs_[$index]; } + public function getLogsArray() { if ($this->logs_ === null ) return array(); else return $this->logs_; } + public function setLogs($index, $value) {$this->logs_[$index] = $value; } + public function addLogs($value) { $this->logs_[] = $value; } + public function addAllLogs(array $values) { foreach($values as $value) {$this->logs_[] = $value;} } + + // optional string Category = 2; + + private $category_ = null; + public function clearCategory() { $this->category_ = null; } + public function hasCategory() { return $this->category_ !== null; } + public function getCategory() { if($this->category_ === null) return ""; else return $this->category_; } + public function setCategory($value) { $this->category_ = $value; } + + // optional string Topic = 3; + + private $topic_ = null; + public function clearTopic() { $this->topic_ = null; } + public function hasTopic() { return $this->topic_ !== null; } + public function getTopic() { if($this->topic_ === null) return ""; else return $this->topic_; } + public function setTopic($value) { $this->topic_ = $value; } + + // optional string Source = 4; + + private $source_ = null; + public function clearSource() { $this->source_ = null; } + public function hasSource() { return $this->source_ !== null; } + public function getSource() { if($this->source_ === null) return ""; else return $this->source_; } + public function setSource($value) { $this->source_ = $value; } + + // @@protoc_insertion_point(class_scope:LogGroup) +} + +// message LogGroupList +class LogGroupList { + private $_unknown; + + function __construct($in = NULL, &$limit = PHP_INT_MAX) { + if($in !== NULL) { + if (is_string($in)) { + $fp = fopen('php://memory', 'r+b'); + fwrite($fp, $in); + rewind($fp); + } else if (is_resource($in)) { + $fp = $in; + } else { + throw new Exception('Invalid in parameter'); + } + $this->read($fp, $limit); + } + } + + function read($fp, &$limit = PHP_INT_MAX) { + while(!feof($fp) && $limit > 0) { + $tag = Protobuf::read_varint($fp, $limit); + if ($tag === false) break; + $wire = $tag & 0x07; + $field = $tag >> 3; + //var_dump("LogGroupList: Found $field type " . Protobuf::get_wiretype($wire) . " $limit bytes left"); + switch($field) { + case 1: + ASSERT('$wire == 2'); + $len = Protobuf::read_varint($fp, $limit); + if ($len === false) + throw new Exception('Protobuf::read_varint returned false'); + $limit-=$len; + $this->logGroupList_[] = new LogGroup($fp, $len); + ASSERT('$len == 0'); + break; + default: + $this->_unknown[$field . '-' . Protobuf::get_wiretype($wire)][] = Protobuf::read_field($fp, $wire, $limit); + } + } + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + } + + function write($fp) { + if (!$this->validateRequired()) + throw new Exception('Required fields are missing'); + if (!is_null($this->logGroupList_)) + foreach($this->logGroupList_ as $v) { + fwrite($fp, "\x0a"); + Protobuf::write_varint($fp, $v->size()); // message + $v->write($fp); + } + } + + public function size() { + $size = 0; + if (!is_null($this->logGroupList_)) + foreach($this->logGroupList_ as $v) { + $l = $v->size(); + $size += 1 + Protobuf::size_varint($l) + $l; + } + return $size; + } + + public function validateRequired() { + return true; + } + + public function __toString() { + return '' + . Protobuf::toString('unknown', $this->_unknown) + . Protobuf::toString('logGroupList_', $this->logGroupList_); + } + + // repeated .LogGroup logGroupList = 1; + + private $logGroupList_ = null; + public function clearLogGroupList() { $this->logGroupList_ = null; } + public function getLogGroupListCount() { if ($this->logGroupList_ === null ) return 0; else return count($this->logGroupList_); } + public function getLogGroupList($index) { return $this->logGroupList_[$index]; } + public function getLogGroupListArray() { if ($this->logGroupList_ === null ) return array(); else return $this->logGroupList_; } + public function setLogGroupList($index, $value) {$this->logGroupList_[$index] = $value; } + public function addLogGroupList($value) { $this->logGroupList_[] = $value; } + public function addAllLogGroupList(array $values) { foreach($values as $value) {$this->logGroupList_[] = $value;} } + + // @@protoc_insertion_point(class_scope:LogGroupList) +} + diff --git a/aliyun-log-php-sdk-master/License.txt b/aliyun-log-php-sdk-master/License.txt new file mode 100644 index 0000000..bf0942e --- /dev/null +++ b/aliyun-log-php-sdk-master/License.txt @@ -0,0 +1,26 @@ +锘块樋閲屼簯璁$畻鏃ュ織鏈嶅姟杞欢寮鍙戝伐鍏峰寘Python璇█鐗 +Aliyun Log Service SDK for PHP + +鐗堟潈鎵鏈 锛圕锛夐樋閲屼簯璁$畻鏈夐檺鍏徃 +Copyright (C) Alibaba Cloud Computing +All rights reserved. +http://www.aliyun.com + +============================================================================== +鏈蒋浠跺寘杩樺寘鍚涓涓夋柟杞欢搴撱備娇鐢ㄦ湰杞欢鍖呬唬琛ㄤ綘鍚屾椂鍚屾剰濡備笅绗笁鏂硅蒋浠跺寘璁稿彲銆 + +This distribution contains multiple components, someof which fall +under different licenses. By using this package or any of the bundled +components enumerated below, you agree to be bound by the conditions +of the license for each respective component. + +protobuf +------------------ +License锛歋implified BSD License (http://opensource.org/licenses/BSD-2-Clause) +Website锛歨ttps://github.com/bramp/protoc-gen-php + + +requestcore +----------------- +License: BSD License (http://opensource.org/licenses/bsd-license.php) +Website锛歨ttps://github.com/pzb/requestcore/blob/master/requestcore.class.php diff --git a/aliyun-log-php-sdk-master/Log_Autoload.php b/aliyun-log-php-sdk-master/Log_Autoload.php new file mode 100644 index 0000000..a2644fe --- /dev/null +++ b/aliyun-log-php-sdk-master/Log_Autoload.php @@ -0,0 +1,20 @@ +4) + $classPath = array_slice($classPath, 0, 4); + $filePath = dirname(__FILE__) . '/' . implode('/', $classPath) . '.php'; + if (file_exists($filePath)) + require_once($filePath); + } +} + +spl_autoload_register('Aliyun_Log_PHP_Client_Autoload'); diff --git a/aliyun-log-php-sdk-master/README.md b/aliyun-log-php-sdk-master/README.md new file mode 100644 index 0000000..7297f68 --- /dev/null +++ b/aliyun-log-php-sdk-master/README.md @@ -0,0 +1,37 @@ +锘# 闃块噷浜戞棩蹇楁湇鍔HP SDK + +## 鐗堟湰 + +0.6.0 + +## 鍙戝竷鏃堕棿 + +2015-11-16 + +## 鍩烘湰浠嬬粛锛 + +杩欐槸Log Service SDK for PHP 鐨勭涓涓澶栧彂甯冪増鏈侺og Service SDK for PHP鏄樋閲屼簯鏃ュ織鏈嶅姟 +锛圠og Service锛堿PI鐨凱HP缂栫▼鎺ュ彛锛屾彁渚涗簡瀵逛簬Log Service Rest API鎵鏈夋帴鍙g殑灏佽 +鍜屾敮鎸侊紝甯姪PHP寮鍙戜汉鍛樻洿蹇紪绋嬩娇鐢ㄩ樋閲屼簯Log Service鏈嶅姟銆 + +### 鍏蜂綋鍔熻兘锛 + +1. 閫氳繃Request-Response椋庢牸鐨勬帴鍙e皝瑁匯est API銆 +2. 瀹炵幇API璇锋眰鐨勬暟瀛楃鍚 +3. 瀹炵幇API鐨凱rotocol Buffer鏍煎紡鍙戦佹棩蹇 +4. 鏀寔API瀹氫箟鐨勬暟鎹帇缂╂柟寮 +5. 浣跨敤PHP寮傚父缁熶竴澶勭悊閿欒 + +## 鐜瑕佹眰锛 + +1. PHP 5.2.1鍙婂叾浠ュ悗鐗堟湰 + +## 鏀寔API鐗堟湰锛 + +1. Log Service API 0.6.0 + +## 鍏朵粬璧勬簮锛 + +1. 鏃ュ織鏈嶅姟浜у搧浠嬬粛锛歨ttp://www.aliyun.com/product/sls/ +2. 鏃ュ織鏈嶅姟浜у搧鏂囨。锛歨ttp://docs.aliyun.com/#/sls +3. 鍏朵粬闂璇锋彁宸ュ崟 diff --git a/aliyun-log-php-sdk-master/build.bat b/aliyun-log-php-sdk-master/build.bat new file mode 100644 index 0000000..61c19e1 --- /dev/null +++ b/aliyun-log-php-sdk-master/build.bat @@ -0,0 +1,119 @@ +@ECHO OFF +setlocal EnableDelayedExpansion + +ECHO Start to package SLS php sdk... + +SET SUCCESS_RET=0 +SET ERROR_NO_SETUP_FILE=1 +SET ERROR_NO_VERSION=2 +SET ERROR_NO_DOCS=3 +SET ERROR_ROBOCOPY=4 + +:: +:: package all the output from php sdk source tree to release format (as bellow) +:: +:: |--Aliyun +:: |--docs +:: |--sample +:: |--test +:: |--License.txt +:: |--Readme.txt +:: |--Log_Autoload.php +:: |--build.md +:: +:: Usage: build.bat +:: +:: Notes: this script must be run under root folder of php SDK code base. + +::prepare environment variables +SET SOURCE_ROOT=Aliyun +SET DOCS_ROOT=docs +SET SAMPLE_ROOT=sample +SET TEST_ROOT=test +SET TITLE=SLS_PHP_SDK +SET PACKAGE_NAME=SLS_PHP_SDK + +::STEP-1: get current version information from source codes +SET VERSION_FILE=Log_Autoload.php + +IF NOT EXIST "%VERSION_FILE%" ( + ECHO Failed to file %VERSION_FILE% on current directory. + EXIT /B %ERROR_NO_SETUP_FILE% +) + +SET SDK_VERSION= +FOR /f "tokens=1-3 delims= " %%G in (%VERSION_FILE%) do ( + IF "%%G"=="$version" ( + IF "%%H"=="=" ( + SET SDK_VERSION=%%I + ) + ) +) + +::like $version = '0.4.4'; +::trim spaces and ; +SET SDK_VERSION=%SDK_VERSION:'=% +SET SDK_VERSION=%SDK_VERSION:;=% + +IF "SDK_VERSION"=="" ( + ECHO Failed to get version information from source codes... + EXIT /B %ERROR_NO_VERSION% +) + +::SETP-2: build documentation from latest php source codes by "phpDocumentor.phar" tool +SET PROD_VERSION=%SDK_VERSION:~0,3% +SET DOCS_AUTO_GENERATION_DIR=%DOCS_ROOT%\_build\html + +ECHO %PROD_VERSION% + +php tools\phpDocumentor.phar --title="%TITLE%" --defaultpackagename="%PACKAGE_NAME%" --template="responsive-twig" -d %SOURCE_ROOT% -t %DOCS_ROOT% + +IF NOT EXIST "%DOCS_ROOT%"\index.html ( + ECHO Failed to generate rst files for documentation. + EXIT /B %ERROR_NO_DOCS% +) + +SET DOCS_AUTO_GENERATION_DIR=docs + +::SETP-3: package all the files into output directory +SET OUTPUT_FOLDER=.\build\%SDK_VERSION% +SET OUTPUT_SOURCE_FOLDER=%OUTPUT_FOLDER%\%SOURCE_ROOT% +SET OUTPUT_DOCS_FOLDER=%OUTPUT_FOLDER%\%DOCS_ROOT% +SET OUTPUT_SAMPLE_FOLDER=%OUTPUT_FOLDER%\%SAMPLE_ROOT% +SET OUTPUT_API_REF_FOLDER=%OUTPUT_FOLDER%_API +SET OUTPUT_TEST_FOLDER=%OUTPUT_FOLDER%_TEST + +IF EXIST "%OUTPUT_FOLDER%" RMDIR /Q /S "%OUTPUT_FOLDER%" +MKDIR "%OUTPUT_FOLDER%" + +:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +ROBOCOPY ".\%SOURCE_ROOT%" "%OUTPUT_SOURCE_FOLDER%" *.php /S /NFL /NDL +IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +ROBOCOPY ".\%DOCS_AUTO_GENERATION_DIR%" "%OUTPUT_DOCS_FOLDER%" /S /NFL /NDL /XD .doctrees +IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +ROBOCOPY ".\%SAMPLE_ROOT%" "%OUTPUT_SAMPLE_FOLDER%" /S /NFL /NDL +IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +COPY /Y ".\*.txt" "%OUTPUT_FOLDER%" +COPY /Y ".\*.php" "%OUTPUT_FOLDER%" + +IF EXIST "%OUTPUT_API_REF_FOLDER%" RMDIR /Q /S "%OUTPUT_API_REF_FOLDER%" +MKDIR "%OUTPUT_API_REF_FOLDER%" + +:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +ROBOCOPY ".\%DOCS_AUTO_GENERATION_DIR%" "%OUTPUT_API_REF_FOLDER%" /S /NFL /NDL /XD .doctrees +IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +IF EXIST "%OUTPUT_TEST_FOLDER%" RMDIR /Q /S "%OUTPUT_TEST_FOLDER%" +MKDIR "%OUTPUT_TEST_FOLDER%" + +:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +ROBOCOPY ".\%TEST_ROOT%" "%OUTPUT_TEST_FOLDER%" /S /NFL /NDL +IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +:END +ECHO on +:: exit script with successful exit code +@EXIT /B %SUCCESS_RET% diff --git a/aliyun-log-php-sdk-master/build.md b/aliyun-log-php-sdk-master/build.md new file mode 100644 index 0000000..454b7a8 --- /dev/null +++ b/aliyun-log-php-sdk-master/build.md @@ -0,0 +1,54 @@ +Copyright +========= + +Copyright (C) Alibaba Cloud Computing +All rights reserved + + +Aliyun SLS Client SDK for PHP +============================= + +This project provides SLS client SDK libraries that make it easy to access Simple Log Service put logs, get log stores, get topics, get histograms and get logs. For more information about the SDK, you can see about the html files in the docs file. +The SDK supports PHP version>=5.2. + + +Sample +====== + +```PHP +ListLogstores($request); + var_dump($response); + } catch (SLSException $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +``` + +First, you need to require_once Log_Autoload.php wherever Log_Autoload.php is located. +Second, you need to declare Aliyun_Log_Client $client. +Third, you need to build a Aliyun_Log_Models_Request $request. +Fourth, you can make a function call like $client->ListLogstores($request), and get SLS response $response. +In the end, you can get what you want $response. +If you get SLSException, you can get the error code, error message, request id if SLS sever has a response. +You can see the sample/sample.php for more information about the key client features. + + +About the html files +==================== + +The html files were created by PHP Document. +http://www.phpdoc.org +php phpDocumentor.phar --title="SLS_PHP_SDK" --defaultpackagename="SLS_PHP_SDK" --template="responsive" -d Aliyun -t docs diff --git a/aliyun-log-php-sdk-master/build.sh b/aliyun-log-php-sdk-master/build.sh new file mode 100644 index 0000000..672a777 --- /dev/null +++ b/aliyun-log-php-sdk-master/build.sh @@ -0,0 +1,116 @@ +echo " Start to package SLS php sdk..." + +export SUCCESS_RET=0 +export ERROR_NO_SETUP_FILE=1 +export ERROR_NO_VERSION=2 +export ERROR_NO_DOCS=3 +export ERROR_ROBOCOPY=4 + +#:: +#:: package all the output from php sdk source tree to release format (as bellow) +#:: +#:: |--Aliyun +#:: |--docs +#:: |--sample +#:: |--test +#:: |--License.txt +#:: |--Readme.txt +#:: |--Log_Autoload.php +#:: |--build.md +#:: +#:: Usage: build.bat +#:: +#:: Notes: this script must be run under root folder of php SDK code base. + +#::prepare environment variables +export SOURCE_ROOT=Aliyun +export DOCS_ROOT=docs +export SAMPLE_ROOT=sample +export TEST_ROOT=test +export TITLE=LOG_PHP_SDK +export PACKAGE_NAME=LOG_PHP_SDK + +#::STEP-1: get current version information from source codes +export VERSION_FILE=Log_Autoload.php + +if [ ! -f $VERSION_FILE ]; then + echo 'Failed to file $VERSION_FILE on current directory.' + exit 0 +fi +SDK_VERSION=`grep '^\$version' $VERSION_FILE|cut -d "'" -f 2` + +#::like $version = '0.4.4'; +#::trim spaces and ; + +if [ "$SDK_VERSION" == "" ]; then + echo "Failed to get version information from source codes..." + exit +fi + +#::SETP-2: build documentation from latest php source codes by "phpDocumentor.phar" tool +export PROD_VERSION=${SDK_VERSION:0:3} +export DOCS_AUTO_GENERATION_DIR=$DOCS_ROOT/_build/html + +echo $PROD_VERSION + +php tools/phpDocumentor.phar --title="$TITLE" --defaultpackagename="$PACKAGE_NAME" --template="responsive-twig" -d $SOURCE_ROOT -t $DOCS_ROOT + +if [ ! -f $DOCS_ROOT/index.html ]; then + echo "Failed to generate rst files for documentation." + exit 0 +fi + +export DOCS_AUTO_GENERATION_DIR=docs + +#::SETP-3: package all the files into output directory +export OUTPUT_FOLDER=./build/$SDK_VERSION +export OUTPUT_SOURCE_FOLDER=$OUTPUT_FOLDER/$SOURCE_ROOT +export OUTPUT_DOCS_FOLDER=$OUTPUT_FOLDER/$DOCS_ROOT +export OUTPUT_SAMPLE_FOLDER=$OUTPUT_FOLDER/$SAMPLE_ROOT +export OUTPUT_API_REF_FOLDER=${OUTPUT_FOLDER}_API +export OUTPUT_TEST_FOLDER=${OUTPUT_FOLDER}_TEST + +if [ -d $OUTPUT_FOLDER ]; then + rm -rf $OUTPUT_FOLDER + mkdir $OUTPUT_FOLDER +fi + +#:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +find $SOURCE_ROOT/* -type f | grep \.php$ | cpio -pd $OUTPUT_SOURCE_FOLDER +#ROBOCOPY ".\%SOURCE_ROOT%" "%OUTPUT_SOURCE_FOLDER%" *.php /S /NFL /NDL + +find ./$DOCS_AUTO_GENERATION_DIR -type f |grep .doctrees |cpio -pd $OUTPUT_DOCS_FOLDER +#ROBOCOPY ".\%DOCS_AUTO_GENERATION_DIR%" "%OUTPUT_DOCS_FOLDER%" /S /NFL /NDL /XD .doctrees +#IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) + +cp -r ./$SAMPLE_ROOT $OUTPUT_SAMPLE_FOLDER +#ROBOCOPY ".\%SAMPLE_ROOT%" "%OUTPUT_SAMPLE_FOLDER%" /S /NFL /NDL +#IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) +cp -f ./*.txt $OUTPUT_FOLDER +cp -f ./*.php $OUTPUT_FOLDER +#COPY /Y ".\*.txt" "$OUTPUT_FOLDER" +#COPY /Y ".\*.php" "$OUTPUT_FOLDER" + +if [ -d $OUTPUT_API_REF_FOLDER ]; then + rm -rf $OUTPUT_API_REF_FOLDER + mkdir $OUTPUT_API_REF_FOLDER +fi +#IF EXIST "%OUTPUT_API_REF_FOLDER%" RMDIR /Q /S "%OUTPUT_API_REF_FOLDER%" +#MKDIR "%OUTPUT_API_REF_FOLDER%" + +#:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +find $DOCS_AUTO_GENERATION_DIR/* -type f | grep .doctrees|cpio -pd $OUTPUT_API_REF_FOLDER +#ROBOCOPY ".\%DOCS_AUTO_GENERATION_DIR%" "%OUTPUT_API_REF_FOLDER%" /S /NFL /NDL /XD .doctrees + +if [ -d $OUTPUT_TEST_FOLDER ]; then + rm -rf $OUTPUT_TEST_FOLDER + mkdir $OUTPUT_TEST_FOLDER +fi +#IF EXIST "%OUTPUT_TEST_FOLDER%" RMDIR /Q /S "%OUTPUT_TEST_FOLDER%" +#MKDIR "%OUTPUT_TEST_FOLDER%" + +##:: ROBOCOPY return code has special definition, please check http://ss64.com/nt/robocopy-exit.html +cp -r $TEST_ROOT $OUTPUT_TEST_FOLDER +#ROBOCOPY ".\%TEST_ROOT%" "%OUTPUT_TEST_FOLDER%" /S /NFL /NDL +#IF %ERRORLEVEL% GTR 1 ( EXIT /B %ERROR_ROBOCOPY% ) +exit 0 diff --git a/aliyun-log-php-sdk-master/docs/classes.svg b/aliyun-log-php-sdk-master/docs/classes.svg new file mode 100644 index 0000000..792832f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes.svg @@ -0,0 +1,806 @@ + + +]> + + + + +G + +cluster_Global + + + + + + + + +Global + + +\\Aliyun_Log_Models_GetMachineGroupResponse + +Aliyun_Log_Models_GetMachineGroupResponse + + +\\Aliyun_Log_Models_Response + +Aliyun_Log_Models_Response + + +\\Aliyun_Log_Models_GetMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_GetMachineResponse + +Aliyun_Log_Models_GetMachineResponse + + +\\Aliyun_Log_Models_GetMachineResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListTopicsRequest + +Aliyun_Log_Models_ListTopicsRequest + + +\\Aliyun_Log_Models_Request + +Aliyun_Log_Models_Request + + +\\Aliyun_Log_Models_ListTopicsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_GetACLRequest + +Aliyun_Log_Models_GetACLRequest + + +\\Aliyun_Log_Models_GetACLRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_DeleteACLResponse + +Aliyun_Log_Models_DeleteACLResponse + + +\\Aliyun_Log_Models_DeleteACLResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_DeleteLogstoreRequest + +Aliyun_Log_Models_DeleteLogstoreRequest + + +\\Aliyun_Log_Models_DeleteLogstoreRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_CreateACLRequest + +Aliyun_Log_Models_CreateACLRequest + + +\\Aliyun_Log_Models_CreateACLRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_GetConfigRequest + +Aliyun_Log_Models_GetConfigRequest + + +\\Aliyun_Log_Models_GetConfigRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_PutLogsResponse + +Aliyun_Log_Models_PutLogsResponse + + +\\Aliyun_Log_Models_PutLogsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_Config_InputDetail + +Aliyun_Log_Models_Config_InputDetail + + +\\Aliyun_Log_Models_Config_OutputDetail + +Aliyun_Log_Models_Config_OutputDetail + + +\\Aliyun_Log_Models_Config + +Aliyun_Log_Models_Config + + +\\Aliyun_Log_Models_GetMachineGroupRequest + +Aliyun_Log_Models_GetMachineGroupRequest + + +\\Aliyun_Log_Models_GetMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_ListMachineGroupsRequest + +Aliyun_Log_Models_ListMachineGroupsRequest + + +\\Aliyun_Log_Models_ListMachineGroupsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_UpdateLogstoreResponse + +Aliyun_Log_Models_UpdateLogstoreResponse + + +\\Aliyun_Log_Models_UpdateLogstoreResponse->\\Aliyun_Log_Models_Response + + + + +\\Log_Content + +Log_Content + + +\\Log + +Log + + +\\LogGroup + +LogGroup + + +\\LogPackage + +LogPackage + + +\\LogPackageList + +LogPackageList + + +\\ProtobufEnum + +ProtobufEnum + + +\\ProtobufMessage + +ProtobufMessage + + +\\Protobuf + +Protobuf + + +\\Aliyun_Log_Models_CreateMachineGroupRequest + +Aliyun_Log_Models_CreateMachineGroupRequest + + +\\Aliyun_Log_Models_CreateMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_BatchGetLogsResponse + +Aliyun_Log_Models_BatchGetLogsResponse + + +\\Aliyun_Log_Models_BatchGetLogsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_GetCursorRequest + +Aliyun_Log_Models_GetCursorRequest + + +\\Aliyun_Log_Models_GetCursorRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_GetConfigResponse + +Aliyun_Log_Models_GetConfigResponse + + +\\Aliyun_Log_Models_GetConfigResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_GetLogsResponse + +Aliyun_Log_Models_GetLogsResponse + + +\\Aliyun_Log_Models_GetLogsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListConfigsRequest + +Aliyun_Log_Models_ListConfigsRequest + + +\\Aliyun_Log_Models_ListConfigsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_UpdateACLRequest + +Aliyun_Log_Models_UpdateACLRequest + + +\\Aliyun_Log_Models_UpdateACLRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_ListMachineGroupsResponse + +Aliyun_Log_Models_ListMachineGroupsResponse + + +\\Aliyun_Log_Models_ListMachineGroupsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_CreateConfigRequest + +Aliyun_Log_Models_CreateConfigRequest + + +\\Aliyun_Log_Models_CreateConfigRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_ListTopicsResponse + +Aliyun_Log_Models_ListTopicsResponse + + +\\Aliyun_Log_Models_ListTopicsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_QueriedLog + +Aliyun_Log_Models_QueriedLog + + +\\Aliyun_Log_Models_UpdateLogstoreRequest + +Aliyun_Log_Models_UpdateLogstoreRequest + + +\\Aliyun_Log_Models_UpdateLogstoreRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_Machine_Info + +Aliyun_Log_Models_Machine_Info + + +\\Aliyun_Log_Models_Machine_Status + +Aliyun_Log_Models_Machine_Status + + +\\Aliyun_Log_Models_Machine + +Aliyun_Log_Models_Machine + + +\\Aliyun_Log_Models_CompressedLogGroup + +Aliyun_Log_Models_CompressedLogGroup + + +\\Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse + +Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse + + +\\Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListLogstoresRequest + +Aliyun_Log_Models_ListLogstoresRequest + + +\\Aliyun_Log_Models_ListLogstoresRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest + +Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest + + +\\Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_UpdateConfigRequest + +Aliyun_Log_Models_UpdateConfigRequest + + +\\Aliyun_Log_Models_UpdateConfigRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_MachineGroup_GroupAttribute + +Aliyun_Log_Models_MachineGroup_GroupAttribute + + +\\Aliyun_Log_Models_MachineGroup + +Aliyun_Log_Models_MachineGroup + + +\\Aliyun_Log_Models_PutLogsRequest + +Aliyun_Log_Models_PutLogsRequest + + +\\Aliyun_Log_Models_PutLogsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_CreateLogstoreResponse + +Aliyun_Log_Models_CreateLogstoreResponse + + +\\Aliyun_Log_Models_CreateLogstoreResponse->\\Aliyun_Log_Models_Response + + + + +\\LogGroupList + +LogGroupList + + +\\Aliyun_Log_Models_CreateConfigResponse + +Aliyun_Log_Models_CreateConfigResponse + + +\\Aliyun_Log_Models_CreateConfigResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListACLsResponse + +Aliyun_Log_Models_ListACLsResponse + + +\\Aliyun_Log_Models_ListACLsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_GetHistogramsRequest + +Aliyun_Log_Models_GetHistogramsRequest + + +\\Aliyun_Log_Models_GetHistogramsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_ListLogstoresResponse + +Aliyun_Log_Models_ListLogstoresResponse + + +\\Aliyun_Log_Models_ListLogstoresResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListACLsRequest + +Aliyun_Log_Models_ListACLsRequest + + +\\Aliyun_Log_Models_ListACLsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_DeleteLogstoreResponse + +Aliyun_Log_Models_DeleteLogstoreResponse + + +\\Aliyun_Log_Models_DeleteLogstoreResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_CreateACLResponse + +Aliyun_Log_Models_CreateACLResponse + + +\\Aliyun_Log_Models_CreateACLResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_Histogram + +Aliyun_Log_Models_Histogram + + +\\Aliyun_Log_Models_DeleteConfigResponse + +Aliyun_Log_Models_DeleteConfigResponse + + +\\Aliyun_Log_Models_DeleteConfigResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_UpdateACLResponse + +Aliyun_Log_Models_UpdateACLResponse + + +\\Aliyun_Log_Models_UpdateACLResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_DeleteMachineGroupResponse + +Aliyun_Log_Models_DeleteMachineGroupResponse + + +\\Aliyun_Log_Models_DeleteMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_UpdateMachineGroupResponse + +Aliyun_Log_Models_UpdateMachineGroupResponse + + +\\Aliyun_Log_Models_UpdateMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_CreateMachineGroupResponse + +Aliyun_Log_Models_CreateMachineGroupResponse + + +\\Aliyun_Log_Models_CreateMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ApplyConfigToMachineGroupRequest + +Aliyun_Log_Models_ApplyConfigToMachineGroupRequest + + +\\Aliyun_Log_Models_ApplyConfigToMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Exception + +Aliyun_Log_Exception + + +\\Exception + +\Exception + + +\\Aliyun_Log_Exception->\\Exception + + + + +\\RequestCore + +RequestCore + + +\\ResponseCore + +ResponseCore + + +\\RequestCore_Exception + +RequestCore_Exception + + +\\RequestCore_Exception->\\Exception + + + + +\\Aliyun_Log_Models_DeleteConfigRequest + +Aliyun_Log_Models_DeleteConfigRequest + + +\\Aliyun_Log_Models_DeleteConfigRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_UpdateConfigResponse + +Aliyun_Log_Models_UpdateConfigResponse + + +\\Aliyun_Log_Models_UpdateConfigResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListShardsResponse + +Aliyun_Log_Models_ListShardsResponse + + +\\Aliyun_Log_Models_ListShardsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Util + +Aliyun_Log_Util + + +\\Aliyun_Log_Models_GetMachineRequest + +Aliyun_Log_Models_GetMachineRequest + + +\\Aliyun_Log_Models_GetMachineRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_GetHistogramsResponse + +Aliyun_Log_Models_GetHistogramsResponse + + +\\Aliyun_Log_Models_GetHistogramsResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ACL + +Aliyun_Log_Models_ACL + + +\\Aliyun_Log_Models_GetLogsRequest + +Aliyun_Log_Models_GetLogsRequest + + +\\Aliyun_Log_Models_GetLogsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Client + +Aliyun_Log_Client + + +\\Aliyun_Log_Models_GetACLResponse + +Aliyun_Log_Models_GetACLResponse + + +\\Aliyun_Log_Models_GetACLResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_ListShardsRequest + +Aliyun_Log_Models_ListShardsRequest + + +\\Aliyun_Log_Models_ListShardsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_UpdateMachineGroupRequest + +Aliyun_Log_Models_UpdateMachineGroupRequest + + +\\Aliyun_Log_Models_UpdateMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_LogItem + +Aliyun_Log_Models_LogItem + + +\\Aliyun_Log_Models_BatchGetLogsRequest + +Aliyun_Log_Models_BatchGetLogsRequest + + +\\Aliyun_Log_Models_BatchGetLogsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_GetCursorResponse + +Aliyun_Log_Models_GetCursorResponse + + +\\Aliyun_Log_Models_GetCursorResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_DeleteACLRequest + +Aliyun_Log_Models_DeleteACLRequest + + +\\Aliyun_Log_Models_DeleteACLRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_CreateLogstoreRequest + +Aliyun_Log_Models_CreateLogstoreRequest + + +\\Aliyun_Log_Models_CreateLogstoreRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_ApplyConfigToMachineGroupResponse + +Aliyun_Log_Models_ApplyConfigToMachineGroupResponse + + +\\Aliyun_Log_Models_ApplyConfigToMachineGroupResponse->\\Aliyun_Log_Models_Response + + + + +\\Aliyun_Log_Models_DeleteMachineGroupRequest + +Aliyun_Log_Models_DeleteMachineGroupRequest + + +\\Aliyun_Log_Models_DeleteMachineGroupRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_Shard + +Aliyun_Log_Models_Shard + + +\\Aliyun_Log_Models_DeleteShardRequest + +Aliyun_Log_Models_DeleteShardRequest + + +\\Aliyun_Log_Models_DeleteShardRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_MergeShardsRequest + +Aliyun_Log_Models_MergeShardsRequest + + +\\Aliyun_Log_Models_MergeShardsRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_SplitShardRequest + +Aliyun_Log_Models_SplitShardRequest + + +\\Aliyun_Log_Models_SplitShardRequest->\\Aliyun_Log_Models_Request + + + + +\\Aliyun_Log_Models_DeleteShardResponse + +Aliyun_Log_Models_DeleteShardResponse + + +\\Aliyun_Log_Models_DeleteShardResponse->\\Aliyun_Log_Models_Response + + + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Client.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Client.html new file mode 100644 index 0000000..fa7a12a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Client.html @@ -0,0 +1,2183 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Client + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Client

+ + +

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with LOG server to put/get data.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log_dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Client constructor

+
__construct(string $endpoint, string $accessKeyId, string $accessKey,  $token = "") 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$endpoint

+ string

LOG host name, for example, http://cn-hangzhou.sls.aliyuncs.com

+
+
+

$accessKeyId

+ string

aliyun accessKeyId

+
+
+

$accessKey

+ string

aliyun accessKey

+
+
+

$token

+

+
+ +
+
+ +
+ +
+

applyConfigToMachineGroup

+
applyConfigToMachineGroup(\Aliyun_Log_Models_ApplyConfigToMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

Get logs from Log service with shardid conditions.

+
batchGetLogs(\Aliyun_Log_Models_BatchGetLogsRequest $request) : \Aliyun_Log_Models_BatchGetLogsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_BatchGetLogsRequest

the BatchGetLogs request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_BatchGetLogsResponse

+
+
+ +
+ +
+

createACL

+
createACL(\Aliyun_Log_Models_CreateACLRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

createConfig

+
createConfig(\Aliyun_Log_Models_CreateConfigRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

create logstore +Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+
createLogstore(\Aliyun_Log_Models_CreateLogstoreRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + +

return Aliyun_Log_Models_CreateLogstoreResponse

+
+ + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_CreateLogstoreRequest

the CreateLogStore request parameters class.

+
+ +
+
+ +
+ +
+

createMachineGroup

+
createMachineGroup(\Aliyun_Log_Models_CreateMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

deleteACL

+
deleteACL(\Aliyun_Log_Models_DeleteACLRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

deleteConfig

+
deleteConfig(\Aliyun_Log_Models_DeleteConfigRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

Delete logstore +Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+
deleteLogstore(\Aliyun_Log_Models_DeleteLogstoreRequest $request) : \Aliyun_Log_Models_DeleteLogstoresResponse
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_DeleteLogstoreRequest

the DeleteLogstores request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_DeleteLogstoresResponse

+
+
+ +
+ +
+

deleteMachineGroup

+
deleteMachineGroup(\Aliyun_Log_Models_DeleteMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

delete a read only shard with Project and logstore and shardId conditions.

+
DeleteShard(\Aliyun_Log_Models_DeleteShardRequest $request) : \Aliyun_Log_Models_ListShardsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_DeleteShardRequest

the DeleteShard request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListShardsResponse

+
+
+ +
+ +
+

getACL

+
getACL(\Aliyun_Log_Models_GetACLRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

getConfig

+
getConfig(\Aliyun_Log_Models_GetConfigRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

Get cursor from Log service.

+
getCursor(\Aliyun_Log_Models_GetCursorRequest $request) : \Aliyun_Log_Models_GetCursorResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_GetCursorRequest

the GetCursor request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_GetCursorResponse

+
+
+ +
+ +
+

GMT format time string.

+
getGMT() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Get histograms of requested query from log service.

+
getHistograms(\Aliyun_Log_Models_GetHistogramsRequest $request) : \Aliyun_Log_Models_GetHistogramsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_GetHistogramsRequest

the GetHistograms request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_GetHistogramsResponse

+
+
+ +
+ +
+

getHttpResponse

+
getHttpResponse( $method,  $url,  $body,  $headers) : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$method

+

+
+
+

$url

+

+
+
+

$body

+

+
+
+

$headers

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

Get logs from Log service.

+
getLogs(\Aliyun_Log_Models_GetLogsRequest $request) : \Aliyun_Log_Models_GetLogsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_GetLogsRequest

the GetLogs request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_GetLogsResponse

+
+
+ +
+ +
+

getMachine

+
getMachine(\Aliyun_Log_Models_GetMachineRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

getMachineGroup

+
getMachineGroup(\Aliyun_Log_Models_GetMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

listACLs

+
listACLs(\Aliyun_Log_Models_ListACLsRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

listConfigs

+
listConfigs(\Aliyun_Log_Models_ListConfigsRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

List all logstores of requested project.

+
listLogstores(\Aliyun_Log_Models_ListLogstoresRequest $request) : \Aliyun_Log_Models_ListLogstoresResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_ListLogstoresRequest

the ListLogstores request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListLogstoresResponse

+
+
+ +
+ +
+

listMachineGroups

+
listMachineGroups(\Aliyun_Log_Models_ListMachineGroupsRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

List Shards from Log service with Project and logstore conditions.

+
listShards(\Aliyun_Log_Models_ListShardsRequest $request) : \Aliyun_Log_Models_ListShardsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_ListShardsRequest

the ListShards request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListShardsResponse

+
+
+ +
+ +
+

List all topics in a logstore.

+
listTopics(\Aliyun_Log_Models_ListTopicsRequest $request) : \Aliyun_Log_Models_ListTopicsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_ListTopicsRequest

the ListTopics request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListTopicsResponse

+
+
+ +
+ +
+

merge two shards into one shard with Project and logstore and shardId and conditions.

+
MergeShards(\Aliyun_Log_Models_MergeShardsRequest $request) : \Aliyun_Log_Models_ListShardsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_MergeShardsRequest

the MergeShards request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListShardsResponse

+
+
+ +
+ +
+

Decodes a JSON string to a JSON Object.

+
parseToJson( $resBody,  $requestId) : string
+
+
+ + +
+
+

Unsuccessful decode will cause an Aliyun_Log_Exception.

+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$resBody

+

+
+
+

$requestId

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Put logs to Log Service.

+
putLogs(\Aliyun_Log_Models_PutLogsRequest $request) : \Aliyun_Log_Models_PutLogsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_PutLogsRequest

the PutLogs request parameters class

+
+ +

Response

+ \Aliyun_Log_Models_PutLogsResponse

+
+
+ +
+ +
+

removeConfigFromMachineGroup

+
removeConfigFromMachineGroup(\Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

send

+
send( $method,  $project,  $body,  $resource,  $params,  $headers) : array
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$method

+

+
+
+

$project

+

+
+
+

$body

+

+
+
+

$resource

+

+
+
+

$params

+

+
+
+

$headers

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

sendRequest

+
sendRequest( $method,  $url,  $body,  $headers) : array
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$method

+

+
+
+

$url

+

+
+
+

$body

+

+
+
+

$headers

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

setEndpoint

+
setEndpoint( $endpoint) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$endpoint

+

+
+ +
+
+ +
+ +
+

split a shard into two shards with Project and logstore and shardId and midHash conditions.

+
splitShard(\Aliyun_Log_Models_SplitShardRequest $request) : \Aliyun_Log_Models_ListShardsResponse
+
+
+ + +
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_SplitShardRequest

the SplitShard request parameters class.

+
+ +

Response

+ \Aliyun_Log_Models_ListShardsResponse

+
+
+ +
+ +
+

updateACL

+
updateACL(\Aliyun_Log_Models_UpdateACLRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

updateConfig

+
updateConfig(\Aliyun_Log_Models_UpdateConfigRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ +
+

update logstore +Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+
updateLogstore(\Aliyun_Log_Models_UpdateLogstoreRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + +

return Aliyun_Log_Models_UpdateLogstoreResponse

+
+ + +
+ +

Arguments

+
+

$request

+ \Aliyun_Log_Models_UpdateLogstoreRequest

the UpdateLogStore request parameters class.

+
+ +
+
+ +
+ +
+

updateMachineGroup

+
updateMachineGroup(\Aliyun_Log_Models_UpdateMachineGroupRequest $request) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+ + +
+
+ +
+ + +

Properties

+ +
+

aliyun accessKey

+
accessKey : string
+
+
+
+
+
+ + + + + + +
+ var + +

aliyun accessKey

+
+ +

Type(s)

+ string +
+
+
+ +
+

aliyun accessKeyId

+
accessKeyId : string
+
+
+
+
+
+ + + + + + +
+ var + +

aliyun accessKeyId

+
+ +

Type(s)

+ string +
+
+
+ +
+

aliyun sts token

+
stsToken : string
+
+
+
+
+
+ + + + + + +
+ var + +

aliyun sts token

+
+ +

Type(s)

+ string +
+
+
+ +
+

LOG endpoint

+
endpoint : string
+
+
+
+
+
+ + + + + + +
+ var + +

LOG endpoint

+
+ +

Type(s)

+ string +
+
+
+ +
+

Check if the host if row ip.

+
isRowIp : string
+
+
+
+
+
+ + + + + + +
+ var + +

Check if the host if row ip.

+
+ +

Type(s)

+ string +
+
+
+ +
+

Http send port. The dafault value is 80.

+
port : integer
+
+
+
+
+
+ + + + + + +
+ var + +

Http send port. The dafault value is 80.

+
+ +

Type(s)

+ integer +
+
+
+ +
+

log sever host.

+
logHost : string
+
+
+
+
+
+ + + + + + +
+ var + +

log sever host.

+
+ +

Type(s)

+ string +
+
+
+ +
+

the local machine ip address.

+
source : string
+
+
+
+
+
+ + + + + + +
+ var + +

the local machine ip address.

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Exception.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Exception.html new file mode 100644 index 0000000..0686071 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Exception.html @@ -0,0 +1,414 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Exception + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Exception

+ + Extends \Exception + +

The Exception of the log serivce request & response.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Exception constructor

+
__construct(string $code, string $message, string $requestId = '') 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$code

+ string

log service error code.

+
+
+

$message

+ string

detailed information for the exception.

+
+
+

$requestId

+ string

the request id of the response, '' is set if client error.

+
+ +
+
+ +
+ +
+

The __toString() method allows a class to decide how it will react when +it is treated like a string.

+
__toString() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Get Aliyun_Log_Exception error code.

+
getErrorCode() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Get Aliyun_Log_Exception error message.

+
getErrorMessage() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Get log service sever requestid, '' is set if client or Http error.

+
getRequestId() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ + +

Properties

+ +
+

requestId

+
requestId : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ACL.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ACL.html new file mode 100644 index 0000000..ce0b151 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ACL.html @@ -0,0 +1,1114 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ACL + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ACL

+ + +

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $principleType = '',  $principleId = '',  $object = '',  $privilege = array(),  $aclId = null,  $createTime = null,  $lastModifyTime = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$principleType

+

+
+
+

$principleId

+

+
+
+

$object

+

+
+
+

$privilege

+

+
+
+

$aclId

+

+
+
+

$createTime

+

+
+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

getAclId

+
getAclId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getCreateTime

+
getCreateTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLastModifyTime

+
getLastModifyTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getObject

+
getObject() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPrincipleId

+
getPrincipleId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPrincipleType

+
getPrincipleType() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPrivilege

+
getPrivilege() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setAclId

+
setAclId( $aclId) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$aclId

+

+
+ +
+
+ +
+ +
+

setCreateTime

+
setCreateTime( $createTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$createTime

+

+
+ +
+
+ +
+ +
+

setFromArray

+
setFromArray( $resp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$resp

+

+
+ +
+
+ +
+ +
+

setLastModifyTime

+
setLastModifyTime( $lastModifyTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

setObject

+
setObject( $object) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$object

+

+
+ +
+
+ +
+ +
+

setPrincipleId

+
setPrincipleId( $principleId) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$principleId

+

+
+ +
+
+ +
+ +
+

setPrincipleType

+
setPrincipleType( $principleType) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$principleType

+

+
+ +
+
+ +
+ +
+

setPrivilege

+
setPrivilege( $privilege) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$privilege

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

principleType

+
principleType : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

principleId

+
principleId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

object

+
object : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

privilege

+
privilege : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

aclId

+
aclId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

createTime

+
createTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

lastModifyTime

+
lastModifyTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupRequest.html new file mode 100644 index 0000000..9ead43e --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupRequest.html @@ -0,0 +1,556 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ApplyConfigToMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ApplyConfigToMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupResponse.html new file mode 100644 index 0000000..06b5daa --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ApplyConfigToMachineGroupResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ApplyConfigToMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ApplyConfigToMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsRequest.html new file mode 100644 index 0000000..cc17f9e --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsRequest.html @@ -0,0 +1,732 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_BatchGetLogsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_BatchGetLogsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to get logs by logstore and shardId from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get max return loggroup number

+
getCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

count

+
+
+ +
+ +
+

Get start cursor

+
getCursor() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

cursor

+
+
+ +
+ +
+

Get logstore name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Get shard ID

+
getShardId() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

shardId

+
+
+ +
+ +
+

Set max return loggroup number

+
setCount(integer $count) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$count

+ integer

max return loggroup number

+
+ +
+
+ +
+ +
+

Set start cursor

+
setCursor(string $cursor) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$cursor

+ string

start cursor

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Set shard ID

+
setShardId(string $shardId) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$shardId

+ string

shard ID

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

shard ID

+
shardId : string
+
+
+
+
+
+ + + + + + +
+ var + +

shard ID

+
+ +

Type(s)

+ string +
+
+
+ +
+

max line number of return logs

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

max line number of return logs

+
+ +

Type(s)

+ integer +
+
+
+ +
+

start cursor

+
cursor : string
+
+
+
+
+
+ + + + + + +
+ var + +

start cursor

+
+ +

Type(s)

+ string +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsResponse.html new file mode 100644 index 0000000..15e3043 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_BatchGetLogsResponse.html @@ -0,0 +1,667 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_BatchGetLogsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_BatchGetLogsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

getCount

+
getCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

getLogGroup

+
getLogGroup( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getLogGroupList

+
getLogGroupList() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLogPackage

+
getLogPackage( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getLogPackageList

+
getLogPackageList() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getNextCursor

+
getNextCursor() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

compressed Loggroup array

+
logPackageList : array
+
+
+
+
+
+ + + + + + +
+ var + +

compressed Loggroup array

+
+ +

Type(s)

+ array +
+
+
+ +
+

nextCursor

+
nextCursor : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CompressedLogGroup.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CompressedLogGroup.html new file mode 100644 index 0000000..7d31d54 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CompressedLogGroup.html @@ -0,0 +1,300 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CompressedLogGroup + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CompressedLogGroup

+ + +

Aliyun_Log_Models_CompressedLogGroup is compressed LogGroup, +LogGroup infomation please refer to Aliyun_Log_Models_LogGroup

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $time = null,  $contents = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$time

+

+
+
+

$contents

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

uncompressed LogGroup size

+
uncompressedSize : integer
+
+
+
+
+
+ + + + + + +
+ var + +

uncompressed LogGroup size

+
+ +

Type(s)

+ integer +
+
+
+ +
+

uncompressed LogGroup size

+
compressedData : integer
+
+
+
+
+
+ + + + + + +
+ var + +

uncompressed LogGroup size

+
+ +

Type(s)

+ integer +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config.html new file mode 100644 index 0000000..ef63e4a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config.html @@ -0,0 +1,1113 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Config + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Config

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $configName = '',  $inputType = '',  $inputDetail = null,  $outputType = '',  $outputDetail = null,  $createTime = null,  $lastModifyTime = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+
+

$inputType

+

+
+
+

$inputDetail

+

+
+
+

$outputType

+

+
+
+

$outputDetail

+

+
+
+

$createTime

+

+
+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getCreateTime

+
getCreateTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getInputDetail

+
getInputDetail() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getInputType

+
getInputType() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLastModifyTime

+
getLastModifyTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOutputDetail

+
getOutputDetail() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOutputType

+
getOutputType() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

setCreateTime

+
setCreateTime( $createTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$createTime

+

+
+ +
+
+ +
+ +
+

setFromArray

+
setFromArray( $resp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$resp

+

+
+ +
+
+ +
+ +
+

setInputDetail

+
setInputDetail( $inputDetail) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$inputDetail

+

+
+ +
+
+ +
+ +
+

setInputType

+
setInputType( $inputType) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$inputType

+

+
+ +
+
+ +
+ +
+

setLastModifyTime

+
setLastModifyTime( $lastModifyTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

setOutputDetail

+
setOutputDetail( $outputDetail) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$outputDetail

+

+
+ +
+
+ +
+ +
+

setOutputType

+
setOutputType( $outputType) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$outputType

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

inputType

+
inputType : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

inputDetail

+
inputDetail : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

outputType

+
outputType : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

outputDetail

+
outputDetail : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

createTime

+
createTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

lastModifyTime

+
lastModifyTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_InputDetail.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_InputDetail.html new file mode 100644 index 0000000..ec25a3a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_InputDetail.html @@ -0,0 +1,590 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Config_InputDetail + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Config_InputDetail

+ + +

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $filePattern = '',  $key = array(),  $localStorage = true,  $logBeginRegex = '',  $logPath = '',  $logType = '',  $regex = '',  $timeFormat = '',  $filterRegex = array(),  $filterKey = array(),  $topicFormat = 'none') 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$filePattern

+

+
+
+

$key

+

+
+
+

$localStorage

+

+
+
+

$logBeginRegex

+

+
+
+

$logPath

+

+
+
+

$logType

+

+
+
+

$regex

+

+
+
+

$timeFormat

+

+
+
+

$filterRegex

+

+
+
+

$filterKey

+

+
+
+

$topicFormat

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

filePattern

+
filePattern : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

key

+
key : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

localStorage

+
localStorage : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logBeginRegex

+
logBeginRegex : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logPath

+
logPath : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logType

+
logType : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

regex

+
regex : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

timeFormat

+
timeFormat : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

filterRegex

+
filterRegex : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

filterKey

+
filterKey : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

topicFormat

+
topicFormat : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_OutputDetail.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_OutputDetail.html new file mode 100644 index 0000000..8dce878 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Config_OutputDetail.html @@ -0,0 +1,328 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Config_OutputDetail + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Config_OutputDetail

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $projectName = '',  $logstoreName = '') 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$projectName

+

+
+
+

$logstoreName

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

projectName

+
projectName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logstoreName

+
logstoreName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLRequest.html new file mode 100644 index 0000000..486400f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateACLRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateACLRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getAcl

+
getAcl() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setAcl

+
setAcl( $acl) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$acl

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

acl

+
acl : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLResponse.html new file mode 100644 index 0000000..b138ea1 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateACLResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateACLResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateACLResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

getAclId

+
getAclId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

aclId

+
aclId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigRequest.html new file mode 100644 index 0000000..da8697c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateConfigRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateConfigRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfig

+
getConfig() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfig

+
setConfig( $config) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$config

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

config

+
config : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigResponse.html new file mode 100644 index 0000000..e19c926 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateConfigResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateConfigResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateConfigResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreRequest.html new file mode 100644 index 0000000..85820a7 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreRequest.html @@ -0,0 +1,531 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateLogstoreRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateLogstoreRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to create logstore from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getShardCount

+
getShardCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getTtl

+
getTtl() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

ttl

+
ttl : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

shardCount

+
shardCount : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreResponse.html new file mode 100644 index 0000000..2d49c8f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateLogstoreResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateLogstoreResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateLogstoreResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the CreateLogstore API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupRequest.html new file mode 100644 index 0000000..3412187 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getMachineGroup

+
getMachineGroup() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setMachineGroup

+
setMachineGroup( $machineGroup) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$machineGroup

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

machineGroup

+
machineGroup : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupResponse.html new file mode 100644 index 0000000..90ff382 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_CreateMachineGroupResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_CreateMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_CreateMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLRequest.html new file mode 100644 index 0000000..324e598 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteACLRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteACLRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getAclId

+
getAclId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setAclId

+
setAclId( $aclId) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$aclId

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

aclId

+
aclId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLResponse.html new file mode 100644 index 0000000..59f0216 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteACLResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteACLResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteACLResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigRequest.html new file mode 100644 index 0000000..1f1a37e --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteConfigRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteConfigRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigResponse.html new file mode 100644 index 0000000..9e77813 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteConfigResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteConfigResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteConfigResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreRequest.html new file mode 100644 index 0000000..50bedcf --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreRequest.html @@ -0,0 +1,401 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteLogstoreRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteLogstoreRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to delete logstore from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreResponse.html new file mode 100644 index 0000000..30165fb --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteLogstoreResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteLogstoreResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteLogstoreResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the DeleteLogstore API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupRequest.html new file mode 100644 index 0000000..6528218 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupResponse.html new file mode 100644 index 0000000..406c635 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteMachineGroupResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardRequest.html new file mode 100644 index 0000000..7a53551 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardRequest.html @@ -0,0 +1,486 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteShardRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteShardRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getShardId

+
getShardId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setLogstore

+
setLogstore( $logstore) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$logstore

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardResponse.html new file mode 100644 index 0000000..604394d --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_DeleteShardResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_DeleteShardResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_DeleteShardResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the DeleteShard API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLRequest.html new file mode 100644 index 0000000..510c688 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetACLRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetACLRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getAclId

+
getAclId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setAclId

+
setAclId( $aclId) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$aclId

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

aclId

+
aclId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLResponse.html new file mode 100644 index 0000000..c822f58 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetACLResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetACLResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetACLResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

getAcl

+
getAcl() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

acl

+
acl : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigRequest.html new file mode 100644 index 0000000..14455e1 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetConfigRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetConfigRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigResponse.html new file mode 100644 index 0000000..5cbe966 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetConfigResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetConfigResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetConfigResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

getConfig

+
getConfig() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

config

+
config : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorRequest.html new file mode 100644 index 0000000..34e657b --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorRequest.html @@ -0,0 +1,740 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetCursorRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_GetCursorRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to get cursor by fromTime or begin/end mode

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get from time

+
getFromTime() : \integer(unix_timestamp)
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \integer(unix_timestamp)

from time

+
+
+ +
+ +
+

Get logstore name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get mode

+
getMode() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

mode

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Get shard id

+
getShardId() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

shard id

+
+
+ +
+ +
+

Set from time

+
setFromTime(integer $fromTime) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$fromTime

+ integer

from time (unix_timestamp)

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set mode

+
setMode(string $mode) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$mode

+ string

value must be 'begin' or 'end'

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Set shard id

+
setShardId(string $shardId) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$shardId

+ string

shard id

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

shard id

+
shardId : string
+
+
+
+
+
+ + + + + + +
+ var + +

shard id

+
+ +

Type(s)

+ string +
+
+
+ +
+

value should be 'begin' or 'end' + begin:return cursor point to first loggroup + end:return cursor point to position after last loggroup + if $mode is set to not null,$fromTime must be set null

+
mode : string
+
+
+
+
+
+ + + + + + +
+ var + +

value should be 'begin' or 'end' +begin:return cursor point to first loggroup +end:return cursor point to position after last loggroup +if $mode is set to not null,$fromTime must be set null

+
+ +

Type(s)

+ string +
+
+
+ +
+

unix_timestamp + return cursor point to first loggroup whose time after $fromTime

+
fromTime : integer
+
+
+
+
+
+ + + + + + +
+ var + +

unix_timestamp +return cursor point to first loggroup whose time after $fromTime

+
+ +

Type(s)

+ integer +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorResponse.html new file mode 100644 index 0000000..cd3db85 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetCursorResponse.html @@ -0,0 +1,427 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetCursorResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetCursorResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetCursor API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get cursor from the response

+
getCursor() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

cursor

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

cursor

+
cursor : string
+
+
+
+
+
+ + + + + + +
+ var + +

cursor

+
+ +

Type(s)

+ string +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsRequest.html new file mode 100644 index 0000000..d249625 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsRequest.html @@ -0,0 +1,831 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetHistogramsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_GetHistogramsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to get histograms of a query from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get begin time

+
getFrom() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

begin time

+
+
+ +
+ +
+

Get logstore name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Get user defined query

+
getQuery() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

user defined query

+
+
+ +
+ +
+

Get end time

+
getTo() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

end time

+
+
+ +
+ +
+

Get topic name

+
getTopic() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

topic name

+
+
+ +
+ +
+

Set begin time

+
setFrom(integer $from) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$from

+ integer

begin time

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Set user defined query

+
setQuery(string $query) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$query

+ string

user defined query

+
+ +
+
+ +
+ +
+

Set end time

+
setTo(integer $to) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$to

+ integer

end time

+
+ +
+
+ +
+ +
+

Set topic name

+
setTopic(string $topic) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$topic

+ string

topic name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

topic name of logs

+
topic : string
+
+
+
+
+
+ + + + + + +
+ var + +

topic name of logs

+
+ +

Type(s)

+ string +
+
+
+ +
+

the begin time

+
from : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the begin time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

the end time

+
to : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the end time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

user defined query

+
query : string
+
+
+
+
+
+ + + + + + +
+ var + +

user defined query

+
+ +

Type(s)

+ string +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsResponse.html new file mode 100644 index 0000000..a9e0084 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetHistogramsResponse.html @@ -0,0 +1,549 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetHistogramsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_GetHistogramsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetHistograms API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get histograms on the requested time range: [from, to)

+
getHistograms() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

Aliyun_Log_Models_Histogram array, histograms on the requested time range

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ +
+

Get total logs' count that current query hits

+
getTotalCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

total logs' count that current query hits

+
+
+ +
+ +
+

Check if the histogram is completed

+
isCompleted() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

true if this histogram is completed

+
+
+ +
+ + +

Properties

+ +
+

histogram query status(Complete or InComplete)

+
progress : string
+
+
+
+
+
+ + + + + + +
+ var + +

histogram query status(Complete or InComplete)

+
+ +

Type(s)

+ string +
+
+
+ +
+

logs' count that current query hits

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

logs' count that current query hits

+
+ +

Type(s)

+ integer +
+
+
+ +
+

Aliyun_Log_Models_Histogram array, histograms on the requested time range: [from, to)

+
histograms : array
+
+
+
+
+
+ + + + + + +
+ var + +

Aliyun_Log_Models_Histogram array, histograms on the requested time range: [from, to)

+
+ +

Type(s)

+ array +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsRequest.html new file mode 100644 index 0000000..5bbd5cf --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsRequest.html @@ -0,0 +1,1128 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetLogsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_GetLogsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to get logs by a query from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get begin time

+
getFrom() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

begin time

+
+
+ +
+ +
+

Get max line number of return logs

+
getLine() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

max line number of return logs

+
+
+ +
+ +
+

Get logstore name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get line offset of return logs

+
getOffset() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

line offset of return logs

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Get user defined query

+
getQuery() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

user defined query

+
+
+ +
+ +
+

Get request reverse flag

+
getReverse() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

reverse flag

+
+
+ +
+ +
+

Get end time

+
getTo() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

end time

+
+
+ +
+ +
+

Get topic name

+
getTopic() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

topic name

+
+
+ +
+ +
+

Set begin time

+
setFrom(integer $from) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$from

+ integer

begin time

+
+ +
+
+ +
+ +
+

Set max line number of return logs

+
setLine(integer $line) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$line

+ integer

max line number of return logs

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set request line offset of return logs

+
setOffset(integer $offset) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$offset

+ integer

line offset of return logs

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Set user defined query

+
setQuery(string $query) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$query

+ string

user defined query

+
+ +
+
+ +
+ +
+

Set request reverse flag

+
setReverse(boolean $reverse) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$reverse

+ boolean

reverse flag

+
+ +
+
+ +
+ +
+

Set end time

+
setTo(integer $to) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$to

+ integer

end time

+
+ +
+
+ +
+ +
+

Set topic name

+
setTopic(string $topic) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$topic

+ string

topic name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

topic name of logs

+
topic : string
+
+
+
+
+
+ + + + + + +
+ var + +

topic name of logs

+
+ +

Type(s)

+ string +
+
+
+ +
+

the begin time

+
from : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the begin time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

the end time

+
to : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the end time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

user defined query

+
query : string
+
+
+
+
+
+ + + + + + +
+ var + +

user defined query

+
+ +

Type(s)

+ string +
+
+
+ +
+

max line number of return logs

+
line : integer
+
+
+
+
+
+ + + + + + +
+ var + +

max line number of return logs

+
+ +

Type(s)

+ integer +
+
+
+ +
+

line offset of return logs

+
offset : integer
+
+
+
+
+
+ + + + + + +
+ var + +

line offset of return logs

+
+ +

Type(s)

+ integer +
+
+
+ +
+

if reverse is set to true, the query will return the latest logs first

+
reverse : boolean
+
+
+
+
+
+ + + + + + +
+ var + +

if reverse is set to true, the query will return the latest logs first

+
+ +

Type(s)

+ boolean +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsResponse.html new file mode 100644 index 0000000..a431bea --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetLogsResponse.html @@ -0,0 +1,549 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetLogsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_GetLogsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get log number from the response

+
getCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

log number

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get all logs from the response

+
getLogs() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

Aliyun_Log_Models_QueriedLog array, all log data

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ +
+

Check if the get logs query is completed

+
isCompleted() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

true if this logs query is completed

+
+
+ +
+ + +

Properties

+ +
+

log number

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

log number

+
+ +

Type(s)

+ integer +
+
+
+ +
+

logs query status(Complete or InComplete)

+
progress : string
+
+
+
+
+
+ + + + + + +
+ var + +

logs query status(Complete or InComplete)

+
+ +

Type(s)

+ string +
+
+
+ +
+

Aliyun_Log_Models_QueriedLog array, all log data

+
logs : array
+
+
+
+
+
+ + + + + + +
+ var + +

Aliyun_Log_Models_QueriedLog array, all log data

+
+ +

Type(s)

+ array +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupRequest.html new file mode 100644 index 0000000..8978404 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupResponse.html new file mode 100644 index 0000000..d106a2f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineGroupResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

getMachineGroup

+
getMachineGroup() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

machineGroup

+
machineGroup : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineRequest.html new file mode 100644 index 0000000..7d2cdba --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetMachineRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetMachineRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getUuid

+
getUuid() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

setUuid

+
setUuid( $uuid) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$uuid

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

uuid

+
uuid : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineResponse.html new file mode 100644 index 0000000..f39aa23 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_GetMachineResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_GetMachineResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_GetMachineResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

getMachine

+
getMachine() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

machine

+
machine : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Histogram.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Histogram.html new file mode 100644 index 0000000..42cc61f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Histogram.html @@ -0,0 +1,494 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Histogram + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Histogram

+ + +

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Histogram constructor

+
__construct(integer $from, integer $to, integer $count, string $progress) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$from

+ integer

the begin time

+
+
+

$to

+ integer

the end time

+
+
+

$count

+ integer

log count of histogram that query hits

+
+
+

$progress

+ string

histogram query status(Complete or InComplete)

+
+ +
+
+ +
+ +
+

Get log count of histogram that query hits

+
getCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

log count of histogram that query hits

+
+
+ +
+ +
+

Get begin time

+
getFrom() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

the begin time

+
+
+ +
+ +
+

Get the end time

+
getTo() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

the end time

+
+
+ +
+ +
+

Check if the histogram is completed

+
isCompleted() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

true if this histogram is completed

+
+
+ +
+ + +

Properties

+ +
+

the begin time

+
from : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the begin time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

the end time

+
to : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the end time

+
+ +

Type(s)

+ integer +
+
+
+ +
+

log count of histogram that query hits

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

log count of histogram that query hits

+
+ +

Type(s)

+ integer +
+
+
+ +
+

histogram query status(Complete or InComplete)

+
progress : string
+
+
+
+
+
+ + + + + + +
+ var + +

histogram query status(Complete or InComplete)

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsRequest.html new file mode 100644 index 0000000..aa025e8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsRequest.html @@ -0,0 +1,666 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListACLsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListACLsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getOffset

+
getOffset() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPrincipleId

+
getPrincipleId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getSize

+
getSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setOffset

+
setOffset( $offset) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$offset

+

+
+ +
+
+ +
+ +
+

setPrincipleId

+
setPrincipleId( $principleId) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$principleId

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

setSize

+
setSize( $size) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$size

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

offset

+
offset : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

size

+
size : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

principleId

+
principleId : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsResponse.html new file mode 100644 index 0000000..3fb2297 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListACLsResponse.html @@ -0,0 +1,431 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListACLsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListACLsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

getAcls

+
getAcls() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

acls

+
acls : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListConfigsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListConfigsRequest.html new file mode 100644 index 0000000..de8300a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListConfigsRequest.html @@ -0,0 +1,666 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListConfigsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListConfigsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOffset

+
getOffset() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getSize

+
getSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

setOffset

+
setOffset( $offset) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$offset

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

setSize

+
setSize( $size) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$size

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

offset

+
offset : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

size

+
size : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresRequest.html new file mode 100644 index 0000000..e845321 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresRequest.html @@ -0,0 +1,336 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListLogstoresRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListLogstoresRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to list logstore from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresResponse.html new file mode 100644 index 0000000..034bafd --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListLogstoresResponse.html @@ -0,0 +1,488 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListLogstoresResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_ListLogstoresResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the ListLogstores API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get total count of logstores from the response

+
getCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

the number of total logstores from the response

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get all the logstores from the response

+
getLogstores() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

all logstore

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

the number of total logstores from the response

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the number of total logstores from the response

+
+ +

Type(s)

+ integer +
+
+
+ +
+

all logstore

+
logstores : array
+
+
+
+
+
+ + + + + + +
+ var + +

all logstore

+
+ +

Type(s)

+ array +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsRequest.html new file mode 100644 index 0000000..1ffc97c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsRequest.html @@ -0,0 +1,666 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListMachineGroupsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListMachineGroupsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOffset

+
getOffset() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getSize

+
getSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

setOffset

+
setOffset( $offset) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$offset

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

setSize

+
setSize( $size) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$size

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

offset

+
offset : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

size

+
size : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsResponse.html new file mode 100644 index 0000000..18e9788 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListMachineGroupsResponse.html @@ -0,0 +1,561 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListMachineGroupsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListMachineGroupsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

getMachineGroups

+
getMachineGroups() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOffset

+
getOffset() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ +
+

getSize

+
getSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

offset

+
offset : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

size

+
size : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

machineGroups

+
machineGroups : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsRequest.html new file mode 100644 index 0000000..c2294b3 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListShardsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListShardsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setLogstore

+
setLogstore( $logstore) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$logstore

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsResponse.html new file mode 100644 index 0000000..b6160c0 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListShardsResponse.html @@ -0,0 +1,471 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListShardsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_ListShardsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ +
+

getShardIds

+
getShardIds() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getShards

+
getShards() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

shardIds

+
shardIds : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsRequest.html new file mode 100644 index 0000000..942eddf --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsRequest.html @@ -0,0 +1,633 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListTopicsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_ListTopicsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The Request used to list topics from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get max topic counts to return

+
getLine() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

max topic counts to return

+
+
+ +
+ +
+

Get logstroe name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Get start token to list topics

+
getToken() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

start token to list topics

+
+
+ +
+ +
+

Set max topic counts to return

+
setLine(integer $line) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$line

+ integer

max topic counts to return

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Set start token to list topics

+
setToken(string $token) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$token

+ string

start token to list topics

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

the start token to list topics

+
token : string
+
+
+
+
+
+ + + + + + +
+ var + +

the start token to list topics

+
+ +

Type(s)

+ string +
+
+
+ +
+

max topic counts to return

+
line : integer
+
+
+
+
+
+ + + + + + +
+ var + +

max topic counts to return

+
+ +

Type(s)

+ integer +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsResponse.html new file mode 100644 index 0000000..708c4ee --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_ListTopicsResponse.html @@ -0,0 +1,549 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_ListTopicsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_ListTopicsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the ListTopics API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get the number of all the topics from the response

+
getCount() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

the number of all the topics from the response

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Return the next token from the response. If there is no more topic to list, it will return None

+
getNextToken() : \string/null
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \string/null

next token used to list more topics

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ +
+

Get all the topics from the response

+
getTopics() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

topics list

+
+
+ +
+ + +

Properties

+ +
+

the number of all the topics from the response

+
count : integer
+
+
+
+
+
+ + + + + + +
+ var + +

the number of all the topics from the response

+
+ +

Type(s)

+ integer +
+
+
+ +
+

topics list

+
topics : array
+
+
+
+
+
+ + + + + + +
+ var + +

topics list

+
+ +

Type(s)

+ array +
+
+
+ +
+

the next token from the response. If there is no more topic to list, it will return None

+
nextToken : \string/null
+
+
+
+
+
+ + + + + + +
+ var + +

the next token from the response. If there is no more topic to list, it will return None

+
+ +

Type(s)

+ \string/null +
+
+
+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_LogItem.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_LogItem.html new file mode 100644 index 0000000..54ef377 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_LogItem.html @@ -0,0 +1,481 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_LogItem + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_LogItem

+ + +

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_LogItem cnostructor

+
__construct(integer $time = null, array $contents = null) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$time

+ integer

time of the log item, the default time if the now time.

+
+
+

$contents

+ array

the data of the log item, including many key/value pairs.

+
+ +
+
+ +
+ +
+

Get log contents

+
getContents() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

log contents

+
+
+ +
+ +
+

Get log time

+
getTime() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

log time

+
+
+ +
+ +
+

Add a key/value pair as log content to the log

+
pushBack(string $key, string $value) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$key

+ string

log content key

+
+
+

$value

+ string

log content value

+
+ +
+
+ +
+ +
+

Set log contents

+
setContents(array $contents) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$contents

+ array

log contents

+
+ +
+
+ +
+ +
+

Set log time

+
setTime(integer $time) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$time

+ integer

log time

+
+ +
+
+ +
+ + +

Properties

+ +
+

time of the log item, the default time if the now time.

+
time : integer
+
+
+
+
+
+ + + + + + +
+ var + +

time of the log item, the default time if the now time.

+
+ +

Type(s)

+ integer +
+
+
+ +
+

the data of the log item, including many key/value pairs.

+
contents : array
+
+
+
+
+
+ + + + + + +
+ var + +

the data of the log item, including many key/value pairs.

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine.html new file mode 100644 index 0000000..004ec44 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine.html @@ -0,0 +1,999 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Machine + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Machine

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $uuid = null,  $lastHeartbeatTime = null,  $info = null,  $status = null,  $createTime = null,  $lastModifyTime = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$uuid

+

+
+
+

$lastHeartbeatTime

+

+
+
+

$info

+

+
+
+

$status

+

+
+
+

$createTime

+

+
+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

getCreateTime

+
getCreateTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getInfo

+
getInfo() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLastHeartbeatTime

+
getLastHeartbeatTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLastModifyTime

+
getLastModifyTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getStatus

+
getStatus() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getUuid

+
getUuid() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setCreateTime

+
setCreateTime( $createTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$createTime

+

+
+ +
+
+ +
+ +
+

setFromArray

+
setFromArray( $resp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$resp

+

+
+ +
+
+ +
+ +
+

setInfo

+
setInfo( $info) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$info

+

+
+ +
+
+ +
+ +
+

setLastHeartbeatTime

+
setLastHeartbeatTime( $lastHeartbeatTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$lastHeartbeatTime

+

+
+ +
+
+ +
+ +
+

setLastModifyTime

+
setLastModifyTime( $lastModifyTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

setStatus

+
setStatus( $status) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$status

+

+
+ +
+
+ +
+ +
+

setUuid

+
setUuid( $uuid) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$uuid

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

uuid

+
uuid : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

lastHeartbeatTime

+
lastHeartbeatTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

info

+
info : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

status

+
status : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

createTime

+
createTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

lastModifyTime

+
lastModifyTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup.html new file mode 100644 index 0000000..e029538 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup.html @@ -0,0 +1,999 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_MachineGroup + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_MachineGroup

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $groupName = '',  $groupType = '',  $groupAttribute = null,  $machineList = null,  $createTime = null,  $lastModifyTime = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+
+

$groupType

+

+
+
+

$groupAttribute

+

+
+
+

$machineList

+

+
+
+

$createTime

+

+
+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

getCreateTime

+
getCreateTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getGroupAttribute

+
getGroupAttribute() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getGroupType

+
getGroupType() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLastModifyTime

+
getLastModifyTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getMachineList

+
getMachineList() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setCreateTime

+
setCreateTime( $createTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$createTime

+

+
+ +
+
+ +
+ +
+

setFromArray

+
setFromArray( $resp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$resp

+

+
+ +
+
+ +
+ +
+

setGroupAttribute

+
setGroupAttribute( $groupAttribute) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupAttribute

+

+
+ +
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

setGroupType

+
setGroupType( $groupType) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupType

+

+
+ +
+
+ +
+ +
+

setLastModifyTime

+
setLastModifyTime( $lastModifyTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$lastModifyTime

+

+
+ +
+
+ +
+ +
+

setMachineList

+
setMachineList( $machineList) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$machineList

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

groupType

+
groupType : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

groupAttribute

+
groupAttribute : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

machineList

+
machineList : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

createTime

+
createTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

lastModifyTime

+
lastModifyTime : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup_GroupAttribute.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup_GroupAttribute.html new file mode 100644 index 0000000..70d22e9 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MachineGroup_GroupAttribute.html @@ -0,0 +1,329 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_MachineGroup_GroupAttribute + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_MachineGroup_GroupAttribute

+ + +

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $externalName = null,  $groupTopic = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$externalName

+

+
+
+

$groupTopic

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

externalName

+
externalName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

groupTopic

+
groupTopic : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Info.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Info.html new file mode 100644 index 0000000..6e51c9e --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Info.html @@ -0,0 +1,613 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Machine_Info + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Machine_Info

+ + +

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $ip = null,  $os = null,  $hostName = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$ip

+

+
+
+

$os

+

+
+
+

$hostName

+

+
+ +
+
+ +
+ +
+

getHostName

+
getHostName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getIp

+
getIp() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getOs

+
getOs() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setHostName

+
setHostName( $hostname) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$hostname

+

+
+ +
+
+ +
+ +
+

setIp

+
setIp( $ip) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$ip

+

+
+ +
+
+ +
+ +
+

setOs

+
setOs( $os) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$os

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

ip

+
ip : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

os

+
os : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

hostName

+
hostName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Status.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Status.html new file mode 100644 index 0000000..e37409d --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Machine_Status.html @@ -0,0 +1,328 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Machine_Status + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Machine_Status

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $binaryCurVersion = null,  $binaryDeployVersion = null) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$binaryCurVersion

+

+
+
+

$binaryDeployVersion

+

+
+ +
+
+ +
+ +
+

toArray

+
toArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

binaryCurVersion

+
binaryCurVersion : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

binaryDeployVersion

+
binaryDeployVersion : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MergeShardsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MergeShardsRequest.html new file mode 100644 index 0000000..e98054a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_MergeShardsRequest.html @@ -0,0 +1,486 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_MergeShardsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_MergeShardsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getShardId

+
getShardId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setLogstore

+
setLogstore( $logstore) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$logstore

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsRequest.html new file mode 100644 index 0000000..1441f13 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsRequest.html @@ -0,0 +1,831 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_PutLogsRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Models_PutLogsRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to send data to log server.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get all the log data

+
getLogItems() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

LogItem array, log data

+
+
+ +
+ +
+

Get logstroe name

+
getLogstore() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

logstore name

+
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

get shard key

+
getShardKey() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

shardKey

+
+
+ +
+ +
+

Get log source

+
getSource() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

log source

+
+
+ +
+ +
+

Get topic name

+
getTopic() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

topic name

+
+
+ +
+ +
+

Set the log data

+
setLogItems(array $logitems) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logitems

+ array

LogItem array, log data

+
+ +
+
+ +
+ +
+

Set logstore name

+
setLogstore(string $logstore) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logstore

+ string

logstore name

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

set shard key

+
setShardKey( $key) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$key

+

+
+ +
+
+ +
+ +
+

set log source

+
setSource(string $source) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$source

+ string

log source

+
+ +
+
+ +
+ +
+

Set topic name

+
setTopic(string $topic) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$topic

+ string

topic name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore name

+
logstore : string
+
+
+
+
+
+ + + + + + +
+ var + +

logstore name

+
+ +

Type(s)

+ string +
+
+
+ +
+

topic name

+
topic : string
+
+
+
+
+
+ + + + + + +
+ var + +

topic name

+
+ +

Type(s)

+ string +
+
+
+ +
+

source of the logs

+
source : string
+
+
+
+
+
+ + + + + + +
+ var + +

source of the logs

+
+ +

Type(s)

+ string +
+
+
+ +
+

LogItem array, log data

+
logitems : array
+
+
+
+
+
+ + + + + + +
+ var + +

LogItem array, log data

+
+ +

Type(s)

+ array +
+
+
+ +
+

shardKey putlogs shard hash key

+
shardKey : string
+
+
+
+
+
+ + + + + + +
+ var + +

shardKey putlogs shard hash key

+
+ +

Type(s)

+ string +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsResponse.html new file mode 100644 index 0000000..ce34653 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_PutLogsResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_PutLogsResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_PutLogsResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the PutLogs API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_QueriedLog.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_QueriedLog.html new file mode 100644 index 0000000..c36125a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_QueriedLog.html @@ -0,0 +1,427 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_QueriedLog + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_QueriedLog

+ + +

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the log.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_QueriedLog constructor

+
__construct(integer $time, string $source, array $contents) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$time

+ integer

log time stamp

+
+
+

$source

+ string

log source

+
+
+

$contents

+ array

log contents, content many key/value pair

+
+ +
+
+ +
+ +
+

Get log contents, content many key/value pair.

+
getContents() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

log contents

+
+
+ +
+ +
+

Get log source

+
getSource() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

log source

+
+
+ +
+ +
+

Get log time

+
getTime() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

log time

+
+
+ +
+ + +

Properties

+ +
+

log timestamp

+
time : integer
+
+
+
+
+
+ + + + + + +
+ var + +

log timestamp

+
+ +

Type(s)

+ integer +
+
+
+ +
+

log source

+
source : string
+
+
+
+
+
+ + + + + + +
+ var + +

log source

+
+ +

Type(s)

+ string +
+
+
+ +
+

log contents, content many key/value pair

+
contents : array
+
+
+
+
+
+ + + + + + +
+ var + +

log contents, content many key/value pair

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest.html new file mode 100644 index 0000000..40daa73 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest.html @@ -0,0 +1,556 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfigName

+
getConfigName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getGroupName

+
getGroupName() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfigName

+
setConfigName( $configName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$configName

+

+
+ +
+
+ +
+ +
+

setGroupName

+
setGroupName( $groupName) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$groupName

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

groupName

+
groupName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

configName

+
configName : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse.html new file mode 100644 index 0000000..305ab28 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Request.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Request.html new file mode 100644 index 0000000..d7002d8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Request.html @@ -0,0 +1,335 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Request + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Request

+ + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

project name

+
project : string
+
+
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Response.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Response.html new file mode 100644 index 0000000..6310aff --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Response.html @@ -0,0 +1,365 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Response + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Response

+ + +

The base response class of all log response.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Shard.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Shard.html new file mode 100644 index 0000000..8d466f1 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_Shard.html @@ -0,0 +1,567 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_Shard + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_Shard

+ + +

The class used to present the shard detail, for every shard ,it contains id , status , begin Range, end range, createtime

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Shhard constructor

+
__construct(integer $shardId, string $status, string $inclusiveBeginKey, string $exclusiveEndKey,  $createTime) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ para + + +

integer @createTime +the shard create time

+
+ + +
+ +

Arguments

+
+

$shardId

+ integer

the shard id

+
+
+

$status

+ string

the shard status

+
+
+

$inclusiveBeginKey

+ string

the shard inclusive begin key

+
+
+

$exclusiveEndKey

+ string

the shard exclusive end key

+
+
+

$createTime

+

+
+ +
+
+ +
+ +
+

Get the shard create time

+
getCreateTime() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

createTime

+
+
+ +
+ +
+

Get the shard exclusive begin key

+
getExclusiveBeginKey() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

exclusive begin key

+
+
+ +
+ +
+

Get the shard inclusive begin key

+
getInclusiveBeginKey() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

inclusive begin key

+
+
+ +
+ +
+

Get the shardId

+
getShardId() : integer
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ integer

the shard id

+
+
+ +
+ +
+

Get the shard status

+
getStatus() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

the shard status

+
+
+ +
+ + +

Properties

+ +
+

the shard id

+
shardId : \interger
+
+
+
+
+
+ + + + + + +
+ var + +

the shard id

+
+ +

Type(s)

+ \interger +
+
+
+ +
+

shard status (readwrite or readonly)

+
status : string
+
+
+
+
+
+ + + + + + +
+ var + +

shard status (readwrite or readonly)

+
+ +

Type(s)

+ string +
+
+
+ +
+

shard inclusive begin key

+
inclusiveBeginKey : string
+
+
+
+
+
+ + + + + + +
+ var + +

shard inclusive begin key

+
+ +

Type(s)

+ string +
+
+
+ +
+

shard exclusive begin key

+
exclusiveEndKey : string
+
+
+
+
+
+ + + + + + +
+ var + +

shard exclusive begin key

+
+ +

Type(s)

+ string +
+
+
+ +
+

shard create time

+
createTime : integer
+
+
+
+
+
+ + + + + + +
+ var + +

shard create time

+
+ +

Type(s)

+ integer +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_SplitShardRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_SplitShardRequest.html new file mode 100644 index 0000000..dcefad8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_SplitShardRequest.html @@ -0,0 +1,526 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_SplitShardRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_SplitShardRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getMidHash

+
getMidHash() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getShardId

+
getShardId() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

setLogstore

+
setLogstore( $logstore) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$logstore

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLRequest.html new file mode 100644 index 0000000..06a2032 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateACLRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateACLRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getAcl

+
getAcl() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setAcl

+
setAcl( $acl) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$acl

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

acl

+
acl : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLResponse.html new file mode 100644 index 0000000..f1fb83b --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateACLResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateACLResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateACLResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigRequest.html new file mode 100644 index 0000000..230600f --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateConfigRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateConfigRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getConfig

+
getConfig() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setConfig

+
setConfig( $config) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$config

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

config

+
config : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigResponse.html new file mode 100644 index 0000000..c682ad1 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateConfigResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateConfigResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateConfigResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreRequest.html new file mode 100644 index 0000000..b3141ca --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreRequest.html @@ -0,0 +1,531 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateLogstoreRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateLogstoreRequest

+ + Extends \Aliyun_Log_Models_Request + +

The request used to Update logstore from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getLogstore

+
getLogstore() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

getShardCount

+
getShardCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getTtl

+
getTtl() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

logstore

+
logstore : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

ttl

+
ttl : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

shardCount

+
shardCount : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreResponse.html new file mode 100644 index 0000000..a04732c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateLogstoreResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateLogstoreResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateLogstoreResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the UpdateLogstore API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupRequest.html new file mode 100644 index 0000000..88017a5 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupRequest.html @@ -0,0 +1,446 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateMachineGroupRequest + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateMachineGroupRequest

+ + Extends \Aliyun_Log_Models_Request + +

The base request of all log request.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Request constructor

+
__construct(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ +
+

getMachineGroup

+
getMachineGroup() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Get project name

+
getProject() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

project name

+
+
+ +
+ +
+

setMachineGroup

+
setMachineGroup( $machineGroup) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$machineGroup

+

+
+ +
+
+ +
+ +
+

Set project name

+
setProject(string $project) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$project

+ string

project name

+
+ +
+
+ +
+ + +

Properties

+ +
+

machineGroup

+
machineGroup : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

project name

+
project : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

project name

+
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupResponse.html new file mode 100644 index 0000000..46d5138 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Models_UpdateMachineGroupResponse.html @@ -0,0 +1,366 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Models_UpdateMachineGroupResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Aliyun_Log_Models_UpdateMachineGroupResponse

+ + Extends \Aliyun_Log_Models_Response + +

The response of the GetLog API from log service.

+
+
+ +
+ + + + + + + + + +
+ author + + +

log service dev

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Aliyun_Log_Models_Response constructor

+
__construct( $headers) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$headers

+

+
+ +
+
+ +
+ +
+

Get all http headers

+
getAllHeaders() : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

HTTP response header

+
+
+ +
+ +
+

Get specified http header

+
getHeader(string $key) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

key to get header

+
+ +

Response

+ string

HTTP response header. '' will be return if not set.

+
+
+ +
+ +
+

Get the request id of the response. '' will be return if not set.

+
getRequestId() : string
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

request id

+
+
+ +
+ + +

Properties

+ +
+

HTTP response header

+
headers : array
+
+ inherited
+
+
+
+ + + + + + +
+ var + +

HTTP response header

+
+ +

Type(s)

+ array +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Util.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Util.html new file mode 100644 index 0000000..157d7b8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Log_Util.html @@ -0,0 +1,612 @@ + + + + + + LOG_PHP_SDK » \Aliyun_Log_Util + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Aliyun_Log_Util

+ + +

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Calculate string $value MD5.

+
calMD5( $value) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Get canonicalizedLOGHeaders string as defined.

+
canonicalizedLOGHeaders( $header) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$header

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Get canonicalizedResource string as defined.

+
canonicalizedResource( $resource,  $params) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$resource

+

+
+
+

$params

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Get the local machine ip address.

+
getLocalIp() : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Get request authorization string as defined.

+
getRequestAuthorization( $method,  $resource,  $key,  $stsToken,  $params,  $headers) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$method

+

+
+
+

$resource

+

+
+
+

$key

+

+
+
+

$stsToken

+

+
+
+

$params

+

+
+
+

$headers

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Calculate string $content hmacSHA1 with secret key $key.

+
hmacSHA1( $content,  $key) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$content

+

+
+
+

$key

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

If $gonten is raw IP address, return true.

+
isIp( $gonten) : boolean
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$gonten

+

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Change $logGroup to bytes.

+
toBytes( $logGroup) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$logGroup

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Get url encode.

+
urlEncode( $params) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$params

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Get url encode.

+
urlEncodeValue( $value) : string
+
+ static
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +

Response

+ string

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Client.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Client.html new file mode 100644 index 0000000..b64a781 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Client.html @@ -0,0 +1,427 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Client + + + + + + + + + + +
+ +
+ +
+ +
+

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with SLS server to put/get data.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Client constructor

+
__construct(string聽$endpoint, string聽$accessKeyId, string聽$accessKey)聽
+
+
+
+

Parameters

+
+

$endpoint

+string

SLS host name, for example, http://cn-hangzhou.sls.aliyuncs.com

+
+

$accessKeyId

+string

aliyun accessKeyId

+
+

$accessKey

+string

aliyun accessKey

+
+
+
+

Get histograms of requested query from SLS.

+
getHistograms(\Aliyun_Log_Models_GetHistogramsRequest聽$request)聽:聽\Aliyun_Log_Models_GetHistogramsResponse
+
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+

Parameters

+
+

$request

+\Aliyun_Log_Models_GetHistogramsRequest

the GetHistograms request parameters class.

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
\Aliyun_Log_Models_GetHistogramsResponse
+
+
+
+

Get logs from SLS.

+
getLogs(\Aliyun_Log_Models_GetLogsRequest聽$request)聽:聽\Aliyun_Log_Models_GetLogsResponse
+
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+

Parameters

+
+

$request

+\Aliyun_Log_Models_GetLogsRequest

the GetLogs request parameters class.

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
\Aliyun_Log_Models_GetLogsResponse
+
+
+
+

List all logstores of requested project.

+
listLogstores(\Aliyun_Log_Models_ListLogstoresRequest聽$request)聽:聽\Aliyun_Log_Models_ListLogstoresResponse
+
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+

Parameters

+
+

$request

+\Aliyun_Log_Models_ListLogstoresRequest

the ListLogstores request parameters class.

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
\Aliyun_Log_Models_ListLogstoresResponse
+
+
+
+

List all topics in a logstore.

+
listTopics(\Aliyun_Log_Models_ListTopicsRequest聽$request)聽:聽\Aliyun_Log_Models_ListTopicsResponse
+
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+

Parameters

+
+

$request

+\Aliyun_Log_Models_ListTopicsRequest

the ListTopics request parameters class.

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
\Aliyun_Log_Models_ListTopicsResponse
+
+
+
+

Put logs to SLS.

+
putLogs(\Aliyun_Log_Models_PutLogsRequest聽$request)聽:聽\Aliyun_Log_Models_PutLogsResponse
+
+
+

Unsuccessful opertaion will cause an Aliyun_Log_Exception.

+

Parameters

+
+

$request

+\Aliyun_Log_Models_PutLogsRequest

the PutLogs request parameters class

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
\Aliyun_Log_Models_PutLogsResponse
+
+
+
+

GMT format time string.

+
getGMT()聽:聽string
+
+
+
+

Returns

+
string
+
+
+
+

getHttpResponse() +

+
getHttpResponse($method, $url, $body, $headers)聽:聽array
+
+
+
+

Parameters

+

$method

+

$url

+

$body

+

$headers

+

Returns

+
array
+
+
+
+

Decodes a JSON string.

+
loadJson($json, $requestId)聽:聽string
+
+
+

Unsuccessful decode will cause an Aliyun_Log_Exception.

+

Parameters

+

$json

+

$requestId

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
string
+
+
+
+

send() +

+
send($method, $project, $body, $resource, $params, $headers)聽:聽array
+
+
+
+

Parameters

+

$method

+

$project

+

$body

+

$resource

+

$params

+

$headers

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
array
+
+
+
+

sendRequest() +

+
sendRequest($method, $url, $body, $headers)聽:聽array
+
+
+
+

Parameters

+

$method

+

$url

+

$body

+

$headers

+

Exceptions

+ + + +
\Aliyun_Log_Exception
+

Returns

+
array
+
+
+
+

setEndpoint() +

+
setEndpoint($endpoint)聽
+
+
+
+

Parameters

+

$endpoint

+
+
+

+聽Properties

+
+

aliyun accessKey

+
$accessKey聽:聽string
+
+

Default

+
+
+
+
+
+
+

aliyun accessKeyId

+
$accessKeyId聽:聽string
+
+

Default

+
+
+
+
+
+
+

SLS endpoint

+
$endpoint聽:聽string
+
+

Default

+
+
+
+
+
+
+

Check if the host if row ip.

+
$isRowIp聽:聽string
+
+

Default

+
+
+
+
+
+
+

Http send port. The dafault value is 80.

+
$port聽:聽integer
+
+

Default

+
+
+
+
+
+
+

sls sever host.

+
$slsHost聽:聽string
+
+

Default

+
+
+
+
+
+
+

the local machine ip address.

+
$source聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Exception.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Exception.html new file mode 100644 index 0000000..f039581 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Exception.html @@ -0,0 +1,188 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Exception + + + + + + + + + + +
+ +
+ +
+ +
+

The Exception of the sls request & response.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Exception constructor

+
__construct(string聽$code, string聽$message, string聽$requestId聽=聽'')聽
+
+
+
+

Parameters

+
+

$code

+string

SLS error code.

+
+

$message

+string

detailed information for the exception.

+
+

$requestId

+string

the request id of the response, '' is set if client error.

+
+
+
+

The __toString() method allows a class to decide how it will react when +it is treated like a string.

+
__toString()聽:聽string
+
+
+
+

Returns

+
string
+
+
+
+

Get Aliyun_Log_Exception error code.

+
getErrorCode()聽:聽string
+
+
+
+

Returns

+
string
+
+
+
+

Get Aliyun_Log_Exception error message.

+
getErrorMessage()聽:聽string
+
+
+
+

Returns

+
string
+
+
+
+

Get Sls sever requestid, '' is set if client or Http error.

+
getRequestId()聽:聽string
+
+
+
+

Returns

+
string
+
+
+

+聽Properties

+
+

$requestId

+
$requestId聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsRequest.html new file mode 100644 index 0000000..58f4672 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsRequest.html @@ -0,0 +1,378 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_GetHistogramsRequest + + + + + + + + + + +
+ +
+ +
+ +
+

The request used to get histograms of a query from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Request
+

+聽Methods

+
+

Aliyun_Log_Models_GetHistogramsRequest constructor

+
__construct(string聽$project聽=聽null, string聽$logstore聽=聽null, integer聽$from聽=聽null, integer聽$to聽=聽null, string聽$topic聽=聽null, string聽$query聽=聽null)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Request::__construct()
+

Parameters

+
+

$project

+string

project name

+
+

$logstore

+string

logstore name

+
+

$from

+integer

the begin time

+
+

$to

+integer

the end time

+
+

$topic

+string

topic name of logs

+
+

$query

+string

user defined query

+
+
+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get begin time

+
getFrom()聽:聽integer
+
+
+
+

Returns

+
+integerbegin time
+
+
+
+

Get logstore name

+
getLogstore()聽:聽string
+
+
+
+

Returns

+
+stringlogstore name
+
+
+
+

Get project name

+
getProject()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringproject name
+
+
+
+

Get user defined query

+
getQuery()聽:聽string
+
+
+
+

Returns

+
+stringuser defined query
+
+
+
+

Get end time

+
getTo()聽:聽integer
+
+
+
+

Returns

+
+integerend time
+
+
+
+

Get topic name

+
getTopic()聽:聽string
+
+
+
+

Returns

+
+stringtopic name
+
+
+
+

Set begin time

+
setFrom(integer聽$from)聽
+
+
+
+

Parameters

+
+

$from

+integer

begin time

+
+
+
+

Set logstore name

+
setLogstore(string聽$logstore)聽
+
+
+
+

Parameters

+
+

$logstore

+string

logstore name

+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Set user defined query

+
setQuery(string聽$query)聽
+
+
+
+

Parameters

+
+

$query

+string

user defined query

+
+
+
+

Set end time

+
setTo(integer聽$to)聽
+
+
+
+

Parameters

+
+

$to

+integer

end time

+
+
+
+

Set topic name

+
setTopic(string聽$topic)聽
+
+
+
+

Parameters

+
+

$topic

+string

topic name

+
+
+

+聽Properties

+
+

the begin time

+
$from聽:聽integer
+
+

Default

+
+
+
+
+
+
+

logstore name

+
$logstore聽:聽string
+
+

Default

+
+
+
+
+
+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+

user defined query

+
$query聽:聽string
+
+

Default

+
+
+
+
+
+
+

the end time

+
$to聽:聽integer
+
+

Default

+
+
+
+
+
+
+

topic name of logs

+
$topic聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsResponse.html new file mode 100644 index 0000000..f264288 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetHistogramsResponse.html @@ -0,0 +1,268 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_GetHistogramsResponse + + + + + + + + + + +
+ +
+ +
+ +
+

The response of the GetHistograms API from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Response
+

+聽Methods

+
+

Aliyun_Log_Models_GetHistogramsResponse constructor

+
__construct(array聽$resp, array聽$header)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Response::__construct()
+

Parameters

+
+

$resp

+array

GetHistogramsResponse HTTP response body

+
+

$header

+array

GetHistogramsResponse HTTP response header

+
+
+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
Inherited
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
Inherited
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
Inherited
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Get histograms on the requested time range: [from, to)

+
getHistograms()聽:聽array
+
+
+
+

Returns

+
+arrayAliyun_Log_Models_Histogram array, histograms on the requested time range
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringrequest id
+
+
+
+

Get total logs' count that current query hits

+
getTotalCount()聽:聽integer
+
+
+
+

Returns

+
+integertotal logs' count that current query hits
+
+
+
+

Check if the histogram is completed

+
isCompleted()聽:聽boolean
+
+
+
+

Returns

+
+booleantrue if this histogram is completed
+
+
+

+聽Properties

+
+

logs' count that current query hits

+
$count聽:聽integer
+
+

Default

+
+
+
+
+
+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+

Aliyun_Log_Models_Histogram array, histograms on the requested time range: [from, to)

+
$histograms聽:聽array
+
+

Default

+
+
+
+
+
+
+

histogram query status(Complete or InComplete)

+
$progress聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsRequest.html new file mode 100644 index 0000000..7d0b0f8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsRequest.html @@ -0,0 +1,493 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_GetLogsRequest + + + + + + + + + + +
+ +
+ +
+ +
+

The request used to get logs by a query from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Request
+

+聽Methods

+
+

Aliyun_Log_Models_GetLogsRequest Constructor

+
__construct(string聽$project聽=聽null, $logstore聽=聽null, integer聽$from聽=聽null, integer聽$to聽=聽null, string聽$topic聽=聽null, string聽$query聽=聽null, integer聽$line聽=聽null, integer聽$offset聽=聽null, boolean聽$reverse聽=聽null)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Request::__construct()
+

Parameters

+
+

$project

+string

project name

+

$logstore

+
+

$from

+integer

the begin time

+
+

$to

+integer

the end time

+
+

$topic

+string

topic name of logs

+
+

$query

+string

user defined query

+
+

$line

+integer

query return line number

+
+

$offset

+integer

the log offset to return

+
+

$reverse

+boolean

if reverse is set to true, the query will return the latest logs first

+
+
+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get begin time

+
getFrom()聽:聽integer
+
+
+
+

Returns

+
+integerbegin time
+
+
+
+

Get max line number of return logs

+
getLine()聽:聽integer
+
+
+
+

Returns

+
+integermax line number of return logs
+
+
+
+

Get logstore name

+
getLogstore()聽:聽string
+
+
+
+

Returns

+
+stringlogstore name
+
+
+
+

Get line offset of return logs

+
getOffset()聽:聽integer
+
+
+
+

Returns

+
+integerline offset of return logs
+
+
+
+

Get project name

+
getProject()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringproject name
+
+
+
+

Get user defined query

+
getQuery()聽:聽string
+
+
+
+

Returns

+
+stringuser defined query
+
+
+
+

Get request reverse flag

+
getReverse()聽:聽boolean
+
+
+
+

Returns

+
+booleanreverse flag
+
+
+
+

Get end time

+
getTo()聽:聽integer
+
+
+
+

Returns

+
+integerend time
+
+
+
+

Get topic name

+
getTopic()聽:聽string
+
+
+
+

Returns

+
+stringtopic name
+
+
+
+

Set begin time

+
setFrom(integer聽$from)聽
+
+
+
+

Parameters

+
+

$from

+integer

begin time

+
+
+
+

Set max line number of return logs

+
setLine(integer聽$line)聽
+
+
+
+

Parameters

+
+

$line

+integer

max line number of return logs

+
+
+
+

Set logstore name

+
setLogstore(string聽$logstore)聽
+
+
+
+

Parameters

+
+

$logstore

+string

logstore name

+
+
+
+

Set request line offset of return logs

+
setOffset(integer聽$offset)聽
+
+
+
+

Parameters

+
+

$offset

+integer

line offset of return logs

+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Set user defined query

+
setQuery(string聽$query)聽
+
+
+
+

Parameters

+
+

$query

+string

user defined query

+
+
+
+

Set request reverse flag

+
setReverse(boolean聽$reverse)聽
+
+
+
+

Parameters

+
+

$reverse

+boolean

reverse flag

+
+
+
+

Set end time

+
setTo(integer聽$to)聽
+
+
+
+

Parameters

+
+

$to

+integer

end time

+
+
+
+

Set topic name

+
setTopic(string聽$topic)聽
+
+
+
+

Parameters

+
+

$topic

+string

topic name

+
+
+

+聽Properties

+
+

the begin time

+
$from聽:聽integer
+
+

Default

+
+
+
+
+
+
+

max line number of return logs

+
$line聽:聽integer
+
+

Default

+
+
+
+
+
+
+

logstore name

+
$logstore聽:聽string
+
+

Default

+
+
+
+
+
+
+

line offset of return logs

+
$offset聽:聽integer
+
+

Default

+
+
+
+
+
+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+

user defined query

+
$query聽:聽string
+
+

Default

+
+
+
+
+
+
+

if reverse is set to true, the query will return the latest logs first

+
$reverse聽:聽boolean
+
+

Default

+
+
+
+
+
+
+

the end time

+
$to聽:聽integer
+
+

Default

+
+
+
+
+
+
+

topic name of logs

+
$topic聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsResponse.html new file mode 100644 index 0000000..ef31a11 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_GetLogsResponse.html @@ -0,0 +1,268 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_GetLogsResponse + + + + + + + + + + +
+ +
+ +
+ +
+

The response of the GetLog API from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Response
+

+聽Methods

+
+

Aliyun_Log_Models_GetLogsResponse constructor

+
__construct(array聽$resp, array聽$header)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Response::__construct()
+

Parameters

+
+

$resp

+array

GetLogs HTTP response body

+
+

$header

+array

GetLogs HTTP response header

+
+
+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
Inherited
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
Inherited
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get log number from the response

+
getCount()聽:聽integer
+
+
+
+

Returns

+
+integerlog number
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
Inherited
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Get all logs from the response

+
getLogs()聽:聽array
+
+
+
+

Returns

+
+arrayAliyun_Log_Models_QueriedLog array, all log data
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringrequest id
+
+
+
+

Check if the get logs query is completed

+
isCompleted()聽:聽boolean
+
+
+
+

Returns

+
+booleantrue if this logs query is completed
+
+
+

+聽Properties

+
+

log number

+
$count聽:聽integer
+
+

Default

+
+
+
+
+
+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+

Aliyun_Log_Models_QueriedLog array, all log data

+
$logs聽:聽array
+
+

Default

+
+
+
+
+
+
+

logs query status(Complete or InComplete)

+
$progress聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Histogram.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Histogram.html new file mode 100644 index 0000000..0983770 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Histogram.html @@ -0,0 +1,229 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_Histogram + + + + + + + + + + +
+ +
+ +
+ +
+

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Models_Histogram constructor

+
__construct(integer聽$from, integer聽$to, integer聽$count, string聽$progress)聽
+
+
+
+

Parameters

+
+

$from

+integer

the begin time

+
+

$to

+integer

the end time

+
+

$count

+integer

log count of histogram that query hits

+
+

$progress

+string

histogram query status(Complete or InComplete)

+
+
+
+

Get log count of histogram that query hits

+
getCount()聽:聽integer
+
+
+
+

Returns

+
+integerlog count of histogram that query hits
+
+
+
+

Get begin time

+
getFrom()聽:聽integer
+
+
+
+

Returns

+
+integerthe begin time
+
+
+
+

Get the end time

+
getTo()聽:聽integer
+
+
+
+

Returns

+
+integerthe end time
+
+
+
+

Check if the histogram is completed

+
isCompleted()聽:聽boolean
+
+
+
+

Returns

+
+booleantrue if this histogram is completed
+
+
+

+聽Properties

+
+

log count of histogram that query hits

+
$count聽:聽integer
+
+

Default

+
+
+
+
+
+
+

the begin time

+
$from聽:聽integer
+
+

Default

+
+
+
+
+
+
+

histogram query status(Complete or InComplete)

+
$progress聽:聽string
+
+

Default

+
+
+
+
+
+
+

the end time

+
$to聽:聽integer
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresRequest.html new file mode 100644 index 0000000..5cabca8 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresRequest.html @@ -0,0 +1,181 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_ListLogstoresRequest + + + + + + + + + + +
+ +
+ +
+ +
+

The request used to list logstore from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Request
+

+聽Methods

+
+

Aliyun_Log_Models_ListLogstoresRequest constructor

+
__construct(string聽$project聽=聽null)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Request::__construct()
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get project name

+
getProject()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringproject name
+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+

+聽Properties

+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresResponse.html new file mode 100644 index 0000000..8b2cd58 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListLogstoresResponse.html @@ -0,0 +1,245 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_ListLogstoresResponse + + + + + + + + + + +
+ +
+ +
+ +
+

The response of the ListLogstores API from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Response
+

+聽Methods

+
+

Aliyun_Log_Models_ListLogstoresResponse constructor

+
__construct(array聽$resp, array聽$header)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Response::__construct()
+

Parameters

+
+

$resp

+array

ListLogstores HTTP response body

+
+

$header

+array

ListLogstores HTTP response header

+
+
+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
Inherited
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
Inherited
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get total count of logstores from the response

+
getCount()聽:聽integer
+
+
+
+

Returns

+
+integerthe number of total logstores from the response
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
Inherited
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Get all the logstores from the response

+
getLogstores()聽:聽array
+
+
+
+

Returns

+
+arrayall logstore
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringrequest id
+
+
+

+聽Properties

+
+

the number of total logstores from the response

+
$count聽:聽integer
+
+

Default

+
+
+
+
+
+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+

all logstore

+
$logstores聽:聽array
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsRequest.html new file mode 100644 index 0000000..b70bb2d --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsRequest.html @@ -0,0 +1,300 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_ListTopicsRequest + + + + + + + + + + +
+ +
+ +
+ +
+

The Request used to list topics from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Request
+

+聽Methods

+
+

Aliyun_Log_Models_ListTopicsRequest constructor

+
__construct(string聽$project聽=聽null, string聽$logstore聽=聽null, string聽$token聽=聽null, integer聽$line聽=聽null)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Request::__construct()
+

Parameters

+
+

$project

+string

project name

+
+

$logstore

+string

logstore name

+
+

$token

+string

the start token to list topics

+
+

$line

+integer

max topic counts to return

+
+
+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get max topic counts to return

+
getLine()聽:聽integer
+
+
+
+

Returns

+
+integermax topic counts to return
+
+
+
+

Get logstroe name

+
getLogstore()聽:聽string
+
+
+
+

Returns

+
+stringlogstore name
+
+
+
+

Get project name

+
getProject()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringproject name
+
+
+
+

Get start token to list topics

+
getToken()聽:聽string
+
+
+
+

Returns

+
+stringstart token to list topics
+
+
+
+

Set max topic counts to return

+
setLine(integer聽$line)聽
+
+
+
+

Parameters

+
+

$line

+integer

max topic counts to return

+
+
+
+

Set logstore name

+
setLogstore(string聽$logstore)聽
+
+
+
+

Parameters

+
+

$logstore

+string

logstore name

+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Set start token to list topics

+
setToken(string聽$token)聽
+
+
+
+

Parameters

+
+

$token

+string

start token to list topics

+
+
+

+聽Properties

+
+

max topic counts to return

+
$line聽:聽integer
+
+

Default

+
+
+
+
+
+
+

logstore name

+
$logstore聽:聽string
+
+

Default

+
+
+
+
+
+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+

the start token to list topics

+
$token聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsResponse.html new file mode 100644 index 0000000..4fd4cdf --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_ListTopicsResponse.html @@ -0,0 +1,268 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_ListTopicsResponse + + + + + + + + + + +
+ +
+ +
+ +
+

The response of the ListTopics API from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Response
+

+聽Methods

+
+

Aliyun_Log_Models_ListTopicsResponse constructor

+
__construct(array聽$resp, array聽$header)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Response::__construct()
+

Parameters

+
+

$resp

+array

ListTopics HTTP response body

+
+

$header

+array

ListTopics HTTP response header

+
+
+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
Inherited
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
Inherited
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get the number of all the topics from the response

+
getCount()聽:聽integer
+
+
+
+

Returns

+
+integerthe number of all the topics from the response
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
Inherited
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Return the next token from the response. If there is no more topic to list, it will return None

+
getNextToken()聽:聽\string/null
+
+
+
+

Returns

+
+\string/nullnext token used to list more topics
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringrequest id
+
+
+
+

Get all the topics from the response

+
getTopics()聽:聽array
+
+
+
+

Returns

+
+arraytopics list
+
+
+

+聽Properties

+
+

the number of all the topics from the response

+
$count聽:聽integer
+
+

Default

+
+
+
+
+
+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+

the next token from the response. If there is no more topic to list, it will return None

+
$nextToken聽:聽\string/null
+
+

Default

+
+
+
+
+
+
+

topics list

+
$topics聽:聽array
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_LogItem.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_LogItem.html new file mode 100644 index 0000000..a32e806 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_LogItem.html @@ -0,0 +1,218 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_LogItem + + + + + + + + + + +
+ +
+ +
+ +
+

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Models_LogItem cnostructor

+
__construct(integer聽$time聽=聽null, array聽$contents聽=聽null)聽
+
+
+
+

Parameters

+
+

$time

+integer

time of the log item, the default time if the now time.

+
+

$contents

+array

the data of the log item, including many key/value pairs.

+
+
+
+

Get log contents

+
getContents()聽:聽array
+
+
+
+

Returns

+
+arraylog contents
+
+
+
+

Get log time

+
getTime()聽:聽integer
+
+
+
+

Returns

+
+integerlog time
+
+
+
+

Add a key/value pair as log content to the log

+
pushBack(string聽$key, string聽$value)聽
+
+
+
+

Parameters

+
+

$key

+string

log content key

+
+

$value

+string

log content value

+
+
+
+

Set log contents

+
setContents(array聽$contents)聽
+
+
+
+

Parameters

+
+

$contents

+array

log contents

+
+
+
+

Set log time

+
setTime(integer聽$time)聽
+
+
+
+

Parameters

+
+

$time

+integer

log time

+
+
+

+聽Properties

+
+

the data of the log item, including many key/value pairs.

+
$contents聽:聽array
+
+

Default

+
+
+
+
+
+
+

time of the log item, the default time if the now time.

+
$time聽:聽integer
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsRequest.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsRequest.html new file mode 100644 index 0000000..fc7d140 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsRequest.html @@ -0,0 +1,339 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_PutLogsRequest + + + + + + + + + + +
+ +
+ +
+ +
+

The request used to send data to sls server.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Request
+

+聽Methods

+
+

Aliyun_Log_Models_PutLogsRequest cnstructor

+
__construct(string聽$project聽=聽null, string聽$logstore聽=聽null, string聽$topic聽=聽null, string聽$source聽=聽null, array聽$logitems聽=聽null)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Request::__construct()
+

Parameters

+
+

$project

+string

project name

+
+

$logstore

+string

logstore name

+
+

$topic

+string

topic name

+
+

$source

+string

source of the log

+
+

$logitems

+array

LogItem array,log data

+
+
+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get all the log data

+
getLogItems()聽:聽array
+
+
+
+

Returns

+
+arrayLogItem array, log data
+
+
+
+

Get logstroe name

+
getLogstore()聽:聽string
+
+
+
+

Returns

+
+stringlogstore name
+
+
+
+

Get project name

+
getProject()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringproject name
+
+
+
+

Get log source

+
getSource()聽:聽string
+
+
+
+

Returns

+
+stringlog source
+
+
+
+

Get topic name

+
getTopic()聽:聽string
+
+
+
+

Returns

+
+stringtopic name
+
+
+
+

Set the log data

+
setLogItems(array聽$logitems)聽
+
+
+
+

Parameters

+
+

$logitems

+array

LogItem array, log data

+
+
+
+

Set logstore name

+
setLogstore(string聽$logstore)聽
+
+
+
+

Parameters

+
+

$logstore

+string

logstore name

+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
Inherited
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

set log source

+
setSource(string聽$source)聽
+
+
+
+

Parameters

+
+

$source

+string

log source

+
+
+
+

Set topic name

+
setTopic(string聽$topic)聽
+
+
+
+

Parameters

+
+

$topic

+string

topic name

+
+
+

+聽Properties

+
+

LogItem array, log data

+
$logitems聽:聽array
+
+

Default

+
+
+
+
+
+
+

logstore name

+
$logstore聽:聽string
+
+

Default

+
+
+
+
+
+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+

source of the logs

+
$source聽:聽string
+
+

Default

+
+
+
+
+
+
+

topic name

+
$topic聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsResponse.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsResponse.html new file mode 100644 index 0000000..b9be1e5 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_PutLogsResponse.html @@ -0,0 +1,192 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_PutLogsResponse + + + + + + + + + + +
+ +
+ +
+ +
+

The response of the PutLogs API from sls.

+
+
+ + + + + + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
inherited_from\Aliyun_Log_Models_Response
+

+聽Methods

+
+

Aliyun_Log_Models_PutLogsResponse constructor

+
__construct($headers)聽
+
+
+
+ + + +
inherited_from\Aliyun_Log_Models_Response::__construct()
+

Parameters

+

$headers

+
+
+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
Inherited
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
Inherited
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
Inherited
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
Inherited
+
+
+

Returns

+
+stringrequest id
+
+
+

+聽Properties

+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_QueriedLog.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_QueriedLog.html new file mode 100644 index 0000000..5edeb0c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_QueriedLog.html @@ -0,0 +1,201 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_QueriedLog + + + + + + + + + + +
+ +
+ +
+ +
+

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the sls.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Models_QueriedLog constructor

+
__construct(integer聽$time, string聽$source, array聽$contents)聽
+
+
+
+

Parameters

+
+

$time

+integer

log time stamp

+
+

$source

+string

log source

+
+

$contents

+array

log contents, content many key/value pair

+
+
+
+

Get log contents, content many key/value pair.

+
getContents()聽:聽array
+
+
+
+

Returns

+
+arraylog contents
+
+
+
+

Get log source

+
getSource()聽:聽string
+
+
+
+

Returns

+
+stringlog source
+
+
+
+

Get log time

+
getTime()聽:聽integer
+
+
+
+

Returns

+
+integerlog time
+
+
+

+聽Properties

+
+

log contents, content many key/value pair

+
$contents聽:聽array
+
+

Default

+
+
+
+
+
+
+

log source

+
$source聽:聽string
+
+

Default

+
+
+
+
+
+
+

log timestamp

+
$time聽:聽integer
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Request.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Request.html new file mode 100644 index 0000000..1bd8e51 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Request.html @@ -0,0 +1,160 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_Request + + + + + + + + + + +
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+

The base request of all sls request.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Models_Request constructor

+
__construct(string聽$project)聽
+
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+
+

Get project name

+
getProject()聽:聽string
+
+
+
+

Returns

+
+stringproject name
+
+
+
+

Set project name

+
setProject(string聽$project)聽
+
+
+
+

Parameters

+
+

$project

+string

project name

+
+
+

+聽Properties

+
+

project name

+
$project聽:聽string
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Response.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Response.html new file mode 100644 index 0000000..6583886 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Models_Response.html @@ -0,0 +1,173 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Models_Response + + + + + + + + + + +
+ +
+ +
+ +
+

The base response class of all sls response.

+
+
+ + + + + + + + + +
authorsls_dev
packageSLS_PHP_SDK
+

+聽Methods

+
+

Aliyun_Log_Models_Response constructor

+
__construct($headers)聽
+
+
+
+

Parameters

+

$headers

+
+
+
+

Get all http headers

+
getAllHeaders()聽:聽array
+
+
+
+

Returns

+
+arrayHTTP response header
+
+
+
+

Get specified http header

+
getHeader(string聽$key)聽:聽string
+
+
+
+

Parameters

+
+

$key

+string

key to get header

+

Returns

+
+stringHTTP response header. '' will be return if not set.
+
+
+
+

Get the request id of the response. '' will be return if not set.

+
getRequestId()聽:聽string
+
+
+
+

Returns

+
+stringrequest id
+
+
+

+聽Properties

+
+

HTTP response header

+
$headers聽:聽array
+
+

Default

+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Util.html b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Util.html new file mode 100644 index 0000000..579f9a7 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Aliyun_Sls_Util.html @@ -0,0 +1,230 @@ + + + + + +SLS_PHP_SDK 禄 \Aliyun_Log_Util + + + + + + + + + + +
+ +
+ +
+ +
+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+
+ + + +
packageSLS_PHP_SDK
+

+聽Methods

+
+

Calculate string $value MD5.

+
calMD5($value)聽:聽string
+
Static
+
+
+

Parameters

+

$value

+

Returns

+
string
+
+
+
+

Get canonicalizedResource string as defined.

+
canonicalizedResource($resource, $params)聽:聽string
+
Static
+
+
+

Parameters

+

$resource

+

$params

+

Returns

+
string
+
+
+
+

Get canonicalizedSLSHeaders string as defined.

+
canonicalizedSLSHeaders($header)聽:聽string
+
Static
+
+
+

Parameters

+

$header

+

Returns

+
string
+
+
+
+

Get the local machine ip address.

+
getLocalIp()聽:聽string
+
Static
+
+
+

Returns

+
string
+
+
+
+

Get request authorization string as defined.

+
getRequestAuthorization($method, $resource, $key, $params, $headers)聽:聽string
+
Static
+
+
+

Parameters

+

$method

+

$resource

+

$key

+

$params

+

$headers

+

Returns

+
string
+
+
+
+

Calculate string $content hmacSHA1 with secret key $key.

+
hmacSHA1($content, $key)聽:聽string
+
Static
+
+
+

Parameters

+

$content

+

$key

+

Returns

+
string
+
+
+
+

If $gonten is raw IP address, return true.

+
isIp($gonten)聽:聽boolean
+
Static
+
+
+

Parameters

+

$gonten

+

Returns

+
boolean
+
+
+
+

Change $logGroup to bytes.

+
toBytes($logGroup)聽:聽string
+
Static
+
+
+

Parameters

+

$logGroup

+

Returns

+
string
+
+
+
+

Get url encode.

+
urlEncode($params)聽:聽string
+
Static
+
+
+

Parameters

+

$params

+

Returns

+
string
+
+
+
+

Get url encode.

+
urlEncodeValue($value)聽:聽string
+
Static
+
+
+

Parameters

+

$value

+

Returns

+
string
+
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/classes/Log.html b/aliyun-log-php-sdk-master/docs/classes/Log.html new file mode 100644 index 0000000..4bd9229 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Log.html @@ -0,0 +1,996 @@ + + + + + + LOG_PHP_SDK » \Log + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Log

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

addAllContents

+
addAllContents(array $values) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$values

+ array

+
+ +
+
+ +
+ +
+

addContents

+
addContents( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

clearContents

+
clearContents() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearTime

+
clearTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getContents

+
getContents( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getContentsArray

+
getContentsArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getContentsCount

+
getContentsCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getTime

+
getTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasTime

+
hasTime() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setContents

+
setContents( $index,  $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+
+

$value

+

+
+ +
+
+ +
+ +
+

setTime

+
setTime( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

time_

+
time_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

contents_

+
contents_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/LogGroup.html b/aliyun-log-php-sdk-master/docs/classes/LogGroup.html new file mode 100644 index 0000000..25dc1ce --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/LogGroup.html @@ -0,0 +1,1376 @@ + + + + + + LOG_PHP_SDK » \LogGroup + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

LogGroup

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

addAllLogs

+
addAllLogs(array $values) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$values

+ array

+
+ +
+
+ +
+ +
+

addLogs

+
addLogs( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

clearCategory

+
clearCategory() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearLogs

+
clearLogs() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearSource

+
clearSource() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearTopic

+
clearTopic() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getCategory

+
getCategory() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLogs

+
getLogs( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getLogsArray

+
getLogsArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLogsCount

+
getLogsCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getSource

+
getSource() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getTopic

+
getTopic() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasCategory

+
hasCategory() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasSource

+
hasSource() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasTopic

+
hasTopic() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setCategory

+
setCategory( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

setLogs

+
setLogs( $index,  $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+
+

$value

+

+
+ +
+
+ +
+ +
+

setSource

+
setSource( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

setTopic

+
setTopic( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logs_

+
logs_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

category_

+
category_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

topic_

+
topic_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

source_

+
source_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/LogGroupList.html b/aliyun-log-php-sdk-master/docs/classes/LogGroupList.html new file mode 100644 index 0000000..db9e4c3 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/LogGroupList.html @@ -0,0 +1,806 @@ + + + + + + LOG_PHP_SDK » \LogGroupList + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

LogGroupList

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

addAllLogGroupList

+
addAllLogGroupList(array $values) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$values

+ array

+
+ +
+
+ +
+ +
+

addLogGroupList

+
addLogGroupList( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

clearLogGroupList

+
clearLogGroupList() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLogGroupList

+
getLogGroupList( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getLogGroupListArray

+
getLogGroupListArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getLogGroupListCount

+
getLogGroupListCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setLogGroupList

+
setLogGroupList( $index,  $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

logGroupList_

+
logGroupList_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/LogPackage.html b/aliyun-log-php-sdk-master/docs/classes/LogPackage.html new file mode 100644 index 0000000..3b6e533 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/LogPackage.html @@ -0,0 +1,857 @@ + + + + + + LOG_PHP_SDK » \LogPackage + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

LogPackage

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearData

+
clearData() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearUncompressSize

+
clearUncompressSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getData

+
getData() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getUncompressSize

+
getUncompressSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasData

+
hasData() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasUncompressSize

+
hasUncompressSize() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setData

+
setData( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

setUncompressSize

+
setUncompressSize( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

data_

+
data_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

uncompressSize_

+
uncompressSize_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/LogPackageList.html b/aliyun-log-php-sdk-master/docs/classes/LogPackageList.html new file mode 100644 index 0000000..01a4003 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/LogPackageList.html @@ -0,0 +1,806 @@ + + + + + + LOG_PHP_SDK » \LogPackageList + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

LogPackageList

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

addAllPackages

+
addAllPackages(array $values) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$values

+ array

+
+ +
+
+ +
+ +
+

addPackages

+
addPackages( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

clearPackages

+
clearPackages() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPackages

+
getPackages( $index) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+ +
+
+ +
+ +
+

getPackagesArray

+
getPackagesArray() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getPackagesCount

+
getPackagesCount() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setPackages

+
setPackages( $index,  $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$index

+

+
+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

packages_

+
packages_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Log_Content.html b/aliyun-log-php-sdk-master/docs/classes/Log_Content.html new file mode 100644 index 0000000..7511869 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Log_Content.html @@ -0,0 +1,857 @@ + + + + + + LOG_PHP_SDK » \Log_Content + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Log_Content

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $in = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$in

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

__toString

+
__toString() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearKey

+
clearKey() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

clearValue

+
clearValue() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getKey

+
getKey() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

getValue

+
getValue() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasKey

+
hasKey() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

hasValue

+
hasValue() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

read

+
read( $fp,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

setKey

+
setKey( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

setValue

+
setValue( $value) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ +
+

size

+
size() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

validateRequired

+
validateRequired() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

write

+
write( $fp) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ + +

Properties

+ +
+

_unknown

+
_unknown : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

key_

+
key_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

value_

+
value_ : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/Protobuf.html b/aliyun-log-php-sdk-master/docs/classes/Protobuf.html new file mode 100644 index 0000000..832343c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/Protobuf.html @@ -0,0 +1,1880 @@ + + + + + + LOG_PHP_SDK » \Protobuf + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Protobuf

+ + +

Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class.

+
+
+ +
+ + + + + + + + + +
+ author + + +

Andrew Brampton

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Returns a string representing this wiretype

+
get_wiretype( $wire_type) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$wire_type

+

+
+ +
+
+ +
+ +
+

read_double

+
read_double( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

Read a unknown field from the stream and return its raw bytes

+
read_field( $fp,  $wire_type,  &$limit = null) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$wire_type

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

read_float

+
read_float( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

read_int32

+
read_int32( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

read_int64

+
read_int64( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

read_uint32

+
read_uint32( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

read_uint64

+
read_uint64( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

Tries to read a varint from $fp.

+
read_varint( $fp,  &$limit = null) 
+
+ static
+ + +
+
+
+ + + + + + + + + + + + + + +
+ returns + + +

the Varint from the stream, or false if the stream has reached eof.

+
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ +
+

read_zint32

+
read_zint32( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

read_zint64

+
read_zint64( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

Returns how big (in bytes) this number would be as a varint

+
size_varint( $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$i

+

+
+ +
+
+ +
+ +
+

Seek past the current field

+
skip_field( $fp,  $wire_type) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$wire_type

+

+
+ +
+
+ +
+ +
+

Seek past a varint

+
skip_varint( $fp) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+ +
+
+ +
+ +
+

toString

+
toString( $key,  $value) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$key

+

+
+
+

$value

+

+
+ +
+
+ +
+ +
+

write_double

+
write_double( $fp,  $d) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$d

+

+
+ +
+
+ +
+ +
+

write_float

+
write_float( $fp,  $f) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$f

+

+
+ +
+
+ +
+ +
+

write_int32

+
write_int32( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +
+

write_int64

+
write_int64( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +
+

write_uint32

+
write_uint32( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +
+

write_uint64

+
write_uint64( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +
+

Writes a varint to $fp +returns the number of bytes written

+
write_varint( $fp,  $i) : \The
+
+ static
+ + +
+
+
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

The int to encode

+
+ +

Response

+ \The

number of bytes written

+
+
+ +
+ +
+

write_zint32

+
write_zint32( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +
+

write_zint64

+
write_zint64( $fp,  $i) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$i

+

+
+ +
+
+ +
+ +

Constants

+ +
+

TYPE_DOUBLE

+
TYPE_DOUBLE
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_FLOAT

+
TYPE_FLOAT
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_INT64

+
TYPE_INT64
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_UINT64

+
TYPE_UINT64
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_INT32

+
TYPE_INT32
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_FIXED64

+
TYPE_FIXED64
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_FIXED32

+
TYPE_FIXED32
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_BOOL

+
TYPE_BOOL
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_STRING

+
TYPE_STRING
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_GROUP

+
TYPE_GROUP
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_MESSAGE

+
TYPE_MESSAGE
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_BYTES

+
TYPE_BYTES
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_UINT32

+
TYPE_UINT32
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_ENUM

+
TYPE_ENUM
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_SFIXED32

+
TYPE_SFIXED32
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_SFIXED64

+
TYPE_SFIXED64
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_SINT32

+
TYPE_SINT32
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

TYPE_SINT64

+
TYPE_SINT64
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +

Properties

+ +
+

Used to aid in pretty printing of Protobuf objects

+
print_depth : 
+
+ static
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

indent_char

+
indent_char : 
+
+ static
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

print_limit

+
print_limit : 
+
+ static
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/ProtobufEnum.html b/aliyun-log-php-sdk-master/docs/classes/ProtobufEnum.html new file mode 100644 index 0000000..5183e51 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/ProtobufEnum.html @@ -0,0 +1,233 @@ + + + + + + LOG_PHP_SDK » \ProtobufEnum + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ProtobufEnum

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

toString

+
toString( $value) 
+
+ static
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$value

+

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/ProtobufMessage.html b/aliyun-log-php-sdk-master/docs/classes/ProtobufMessage.html new file mode 100644 index 0000000..c5051b1 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/ProtobufMessage.html @@ -0,0 +1,237 @@ + + + + + + LOG_PHP_SDK » \ProtobufMessage + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ProtobufMessage

+ + +

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

__construct

+
__construct( $fp = NULL,  &$limit = PHP_INT_MAX) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$fp

+

+
+
+

$limit

+

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/RequestCore.html b/aliyun-log-php-sdk-master/docs/classes/RequestCore.html new file mode 100644 index 0000000..b31799a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/RequestCore.html @@ -0,0 +1,2112 @@ + + + + + + LOG_PHP_SDK » \RequestCore + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

RequestCore

+ + +

Handles all HTTP requests using cURL and manages the responses.

+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ version + + 2011.06.07 + +
+ copyright + + +

2006-2011 Ryan Parman

+
+ copyright + + +

2006-2010 Foleeo Inc.

+
+ copyright + + +

2010-2011 Amazon.com, Inc. or its affiliates.

+
+ copyright + + +

2008-2011 Contributors

+
+ license + + +

http://opensource.org/licenses/bsd-license.php Simplified BSD License

+
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Constructs a new instance of this class.

+
__construct(string $url = null, string $proxy = null, array $helpers = null) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$url

+ string

(Optional) The URL to request or service endpoint to query.

+
+
+

$proxy

+ string

(Optional) The faux-url to use for proxy settings. Takes the following format: proxy://user:pass@hostname:port

+
+
+

$helpers

+ array

(Optional) An associative array of classnames to use for request, and response functionality. Gets passed in automatically by the calling class.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Destructs the instance. Closes opened file handles.

+
__destruct() : $this
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Adds a custom HTTP header to the cURL request.

+
add_header(string $key, mixed $value) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

(Required) The custom HTTP header to set.

+
+
+

$value

+ mixed

(Required) The value to assign to the custom HTTP header.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Get the HTTP response body from the request.

+
get_response_body() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

The response body.

+
+
+ +
+ +
+

Get the HTTP response code from the request.

+
get_response_code() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

The HTTP response code.

+
+
+ +
+ +
+

Get the HTTP response headers from the request.

+
get_response_header(string $header = null) : string|array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$header

+ string

(Optional) A specific header value to return. Defaults to all headers.

+
+ +

Response

+ string|array

All or selected header values.

+
+
+ +
+ +
+

Prepares and adds the details of the cURL request. This can be passed along to a <php:curl_multi_exec()> +function.

+
prep_request() : resource
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ resource

The handle for the cURL object.

+
+
+ +
+ +
+

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.

+
process_response(resource $curl_handle = null, string $response = null) : \ResponseCore
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$curl_handle

+ resource

(Optional) The reference to the already executed cURL request.

+
+
+

$response

+ string

(Optional) The actual response content itself that needs to be parsed.

+
+ +

Response

+ \ResponseCore

A object containing a parsed HTTP response.

+
+
+ +
+ +
+

Register a callback function to execute whenever a data stream is read from using +<CFRequest::streaming_read_callback()>.

+
register_streaming_read_callback(string|array|\function $callback) : $this
+
+
+ + +
+
+

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.
  • +
+ + +
+ +

Arguments

+
+

$callback

+ string|array|\function

(Required) The callback function is called by <php:call_user_func()>, so you can pass the following values:

    +
  • The name of a global function to execute, passed as a string.
  • +
    <li>A method to execute, passed as <code>array('ClassName', 'MethodName')</code>.</li>
    +<li>An anonymous function (PHP 5.3+).</li></ul>

    +
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Register a callback function to execute whenever a data stream is written to using +<CFRequest::streaming_write_callback()>.

+
register_streaming_write_callback(string|array|\function $callback) : $this
+
+
+ + +
+
+

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.
  • +
+ + +
+ +

Arguments

+
+

$callback

+ string|array|\function

(Required) The callback function is called by <php:call_user_func()>, so you can pass the following values:

    +
  • The name of a global function to execute, passed as a string.
  • +
    <li>A method to execute, passed as <code>array('ClassName', 'MethodName')</code>.</li>
    +<li>An anonymous function (PHP 5.3+).</li></ul>

    +
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Removes an HTTP header from the cURL request.

+
remove_header(string $key) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

(Required) The custom HTTP header to set.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sends the request using <php:curl_multi_exec()>, enabling parallel requests. Uses the "rolling" method.

+
send_multi_request(array $handles, array $opt = null) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$handles

+ array

(Required) An indexed array of cURL handles to process simultaneously.

+
+
+

$opt

+ array

(Optional) An associative array of parameters that can have the following keys:

    +
  • callback - string|array - Optional - The string name of a function to pass the response data to. If this is a method, pass an array where the [0] index is the class and the [1] index is the method name.
  • +
    <li><code>limit</code> - <code>integer</code> - Optional - The number of simultaneous requests to make. This can be useful for scaling around slow server responses. Defaults to trusting cURLs judgement as to how many to use.</li></ul>

    +
+ +

Response

+ array

Post-processed cURL responses.

+
+
+ +
+ +
+

Sends the request, calling necessary utility functions to update built-in properties.

+
send_request(boolean $parse = false) : string
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$parse

+ boolean

(Optional) Whether to parse the response with ResponseCore or not.

+
+ +

Response

+ string

The resulting unparsed data from the request.

+
+
+ +
+ +
+

Set the body to send in the request.

+
set_body(string $body) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$body

+ string

(Required) The textual content to send along in the body of the request.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets the credentials to use for authentication.

+
set_credentials(string $user, string $pass) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$user

+ string

(Required) The username to authenticate with.

+
+
+

$pass

+ string

(Required) The password to authenticate with.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Set additional CURLOPT settings. These will merge with the default settings, and override if +there is a duplicate.

+
set_curlopts(array $curlopts) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$curlopts

+ array

(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.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Set the method type for the request.

+
set_method(string $method) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$method

+ string

(Required) One of the following constants: , , , , .

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Set the proxy to use for making requests.

+
set_proxy(string $proxy) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$proxy

+ string

(Required) The faux-url to use for proxy settings. Takes the following format: proxy://user:pass@hostname:port

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets the file to read from while streaming up.

+
set_read_file(string $location) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$location

+ string

(Required) The readable location to read from.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets 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 <php:fstat()> and +<php:ftell()>.

+
set_read_stream(resource $resource, integer $size = null) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$resource

+ resource

(Required) The readable resource to read from.

+
+
+

$size

+ integer

(Optional) The size of the stream to read.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets the length in bytes to read from the stream while streaming up.

+
set_read_stream_size(integer $size) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$size

+ integer

(Required) The length in bytes to read from the stream.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Set the URL to make the request to.

+
set_request_url(string $url) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$url

+ string

(Required) The URL to make the request to.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Set the intended starting seek position.

+
set_seek_position(integer $position) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$position

+ integer

(Required) The byte-position of the stream to begin reading from.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets a custom useragent string for the class.

+
set_useragent(string $ua) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$ua

+ string

(Required) The useragent string to use.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets the file to write to while streaming down.

+
set_write_file(string $location) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$location

+ string

(Required) The writeable location to write to.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

Sets the resource to write to while streaming down.

+
set_write_stream(resource $resource) : $this
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$resource

+ resource

(Required) The writeable resource to write to.

+
+ +

Response

+ $this

A reference to the current instance.

+
+
+ +
+ +
+

A callback function that is invoked by cURL for streaming up.

+
streaming_read_callback(resource $curl_handle, resource $file_handle, integer $length) : \binary
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$curl_handle

+ resource

(Required) The cURL handle for the request.

+
+
+

$file_handle

+ resource

(Required) The open file handle resource.

+
+
+

$length

+ integer

(Required) The maximum number of bytes to read.

+
+ +

Response

+ \binary

Binary data from a stream.

+
+
+ +
+ +
+

A callback function that is invoked by cURL for streaming down.

+
streaming_write_callback(resource $curl_handle, \binary $data) : integer
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$curl_handle

+ resource

(Required) The cURL handle for the request.

+
+
+

$data

+ \binary

(Required) The data to write.

+
+ +

Response

+ integer

The number of bytes written.

+
+
+ +
+ +

Constants

+ +
+

GET HTTP Method

+
HTTP_GET
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

POST HTTP Method

+
HTTP_POST
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

PUT HTTP Method

+
HTTP_PUT
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

DELETE HTTP Method

+
HTTP_DELETE
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +
+

HEAD HTTP Method

+
HTTP_HEAD
+
+
+
+
+
+ + + + + +
+ + +
+
+
+
+ +

Properties

+ +
+

The URL being requested.

+
request_url : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The headers being sent in the request.

+
request_headers : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The body being sent in the request.

+
request_body : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The response returned by the request.

+
response : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The headers returned by the request.

+
response_headers : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The body returned by the request.

+
response_body : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The HTTP status code returned by the request.

+
response_code : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Additional response data.

+
response_info : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The handle for the cURL object.

+
curl_handle : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The method by which the request is being made.

+
method : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Stores the proxy settings to use for the request.

+
proxy : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The username to use for the request.

+
username : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The password to use for the request.

+
password : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Custom CURLOPT settings.

+
curlopts : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The state of debug mode.

+
debug_mode : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The default class to use for HTTP Requests (defaults to <RequestCore>).

+
request_class : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The default class to use for HTTP Responses (defaults to <ResponseCore>).

+
response_class : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Default useragent string to use.

+
useragent : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

File to read from while streaming up.

+
read_file : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The resource to read from while streaming up.

+
read_stream : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The size of the stream to read from.

+
read_stream_size : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The length already read from the stream.

+
read_stream_read : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

File to write to while streaming down.

+
write_file : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The resource to write to while streaming down.

+
write_stream : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Stores the intended starting seek position.

+
seek_position : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The location of the cacert.pem file to use.

+
cacert_location : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The state of SSL certificate verification.

+
ssl_verification : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The user-defined callback function to call when a stream is read from.

+
registered_streaming_read_callback : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

The user-defined callback function to call when a stream is written to.

+
registered_streaming_write_callback : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/RequestCore_Exception.html b/aliyun-log-php-sdk-master/docs/classes/RequestCore_Exception.html new file mode 100644 index 0000000..678bf15 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/RequestCore_Exception.html @@ -0,0 +1,189 @@ + + + + + + LOG_PHP_SDK » \RequestCore_Exception + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

RequestCore_Exception

+ + Extends \Exception + +

Default RequestCore Exception.

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ + +
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/classes/ResponseCore.html b/aliyun-log-php-sdk-master/docs/classes/ResponseCore.html new file mode 100644 index 0000000..1e95807 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/classes/ResponseCore.html @@ -0,0 +1,338 @@ + + + + + + LOG_PHP_SDK » \ResponseCore + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ResponseCore

+ + +

Container for all response-related methods.

+
+
+ +
+ + + + + +
+ package + + +

LOG_PHP_SDK

+
+ +

Methods

+ +
+

Constructs a new instance of this class.

+
__construct(array $header, string $body, integer $status = null) : object
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$header

+ array

(Required) Associative array of HTTP headers (typically returned by <RequestCore::get_response_header()>).

+
+
+

$body

+ string

(Required) XML-formatted response from AWS.

+
+
+

$status

+ integer

(Optional) HTTP response status code from the request.

+
+ +

Response

+ object

Contains an header property (HTTP headers as an associative array), a or body property, and an status code.

+
+
+ +
+ +
+

Did we receive the status code we expected?

+
isOK(integer|array $codes = array(200, 201, 204, 206)) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$codes

+ integer|array

(Optional) The status code(s) to expect. Pass an for a single acceptable value, or an of integers for multiple acceptable values.

+
+ +

Response

+ boolean

Whether we received the expected status code or not.

+
+
+ +
+ + +

Properties

+ +
+

Stores the HTTP header information.

+
header : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Stores the SimpleXML response.

+
body : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+ +
+

Stores the HTTP response code.

+
status : 
+
+
+
+
+
+ + + + + + +
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.css b/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.css new file mode 100644 index 0000000..4b032cd --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.css @@ -0,0 +1,567 @@ +/*! + * Bootstrap Responsive v2.0.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +.hidden { + display: none; + visibility: hidden; +} +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 18px; + } + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + height: 28px; + /* Make inputs at least the height of their button counterpart */ + + /* Makes inputs behave like true block-level elements */ + + -webkit-box-sizing: border-box; + /* Older Webkit */ + + -moz-box-sizing: border-box; + /* Older FF */ + + -ms-box-sizing: border-box; + /* IE8 */ + + box-sizing: border-box; + /* CSS3 spec*/ + + } + .input-prepend input[class*="span"], .input-append input[class*="span"] { + width: auto; + } + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-group > label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-left: 10px; + padding-right: 10px; + } + .modal { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + width: auto; + margin: 0; + } + .modal.fade.in { + top: auto; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} +@media (max-width: 768px) { + .container { + width: auto; + padding: 0 20px; + } + .row-fluid { + width: 100%; + } + .row { + margin-left: 0; + } + .row > [class*="span"], .row-fluid > [class*="span"] { + float: none; + display: block; + width: auto; + margin: 0; + } +} +@media (min-width: 768px) and (max-width: 980px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 20px; + } + .span1 { + width: 42px; + } + .span2 { + width: 104px; + } + .span3 { + width: 166px; + } + .span4 { + width: 228px; + } + .span5 { + width: 290px; + } + .span6 { + width: 352px; + } + .span7 { + width: 414px; + } + .span8 { + width: 476px; + } + .span9 { + width: 538px; + } + .span10 { + width: 600px; + } + .span11 { + width: 662px; + } + .span12, .container { + width: 724px; + } + .offset1 { + margin-left: 82px; + } + .offset2 { + margin-left: 144px; + } + .offset3 { + margin-left: 206px; + } + .offset4 { + margin-left: 268px; + } + .offset5 { + margin-left: 330px; + } + .offset6 { + margin-left: 392px; + } + .offset7 { + margin-left: 454px; + } + .offset8 { + margin-left: 516px; + } + .offset9 { + margin-left: 578px; + } + .offset10 { + margin-left: 640px; + } + .offset11 { + margin-left: 702px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.762430939%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.801104972%; + } + .row-fluid .span2 { + width: 14.364640883%; + } + .row-fluid .span3 { + width: 22.928176794%; + } + .row-fluid .span4 { + width: 31.491712705%; + } + .row-fluid .span5 { + width: 40.055248616%; + } + .row-fluid .span6 { + width: 48.618784527%; + } + .row-fluid .span7 { + width: 57.182320438000005%; + } + .row-fluid .span8 { + width: 65.74585634900001%; + } + .row-fluid .span9 { + width: 74.30939226%; + } + .row-fluid .span10 { + width: 82.87292817100001%; + } + .row-fluid .span11 { + width: 91.436464082%; + } + .row-fluid .span12 { + width: 99.999999993%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 32px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 94px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 156px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 218px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 280px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 342px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 404px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 466px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 528px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 590px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 652px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 714px; + } +} +@media (max-width: 980px) { + body { + padding-top: 0; + } + .navbar-fixed-top { + position: static; + margin-bottom: 18px; + } + .navbar-fixed-top .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + .navbar .nav-collapse { + clear: left; + } + .navbar .nav { + float: none; + margin: 0 0 9px; + } + .navbar .nav > li { + float: none; + } + .navbar .nav > li > a { + margin-bottom: 2px; + } + .navbar .nav > .divider-vertical { + display: none; + } + .navbar .nav > li > a, .navbar .dropdown-menu a { + padding: 6px 15px; + font-weight: bold; + color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .navbar .dropdown-menu li + li a { + margin-bottom: 2px; + } + .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover { + background-color: #222222; + } + .navbar .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .navbar .dropdown-menu:before, .navbar .dropdown-menu:after { + display: none; + } + .navbar .dropdown-menu .divider { + display: none; + } + .navbar-form, .navbar-search { + float: none; + padding: 9px 15px; + margin: 9px 0; + border-top: 1px solid #222222; + border-bottom: 1px solid #222222; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar .nav.pull-right { + float: none; + margin-left: 0; + } + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + .btn-navbar { + display: block; + } + .nav-collapse { + overflow: hidden; + height: 0; + } +} +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + } +} +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 30px; + } + .span1 { + width: 70px; + } + .span2 { + width: 170px; + } + .span3 { + width: 270px; + } + .span4 { + width: 370px; + } + .span5 { + width: 470px; + } + .span6 { + width: 570px; + } + .span7 { + width: 670px; + } + .span8 { + width: 770px; + } + .span9 { + width: 870px; + } + .span10 { + width: 970px; + } + .span11 { + width: 1070px; + } + .span12, .container { + width: 1170px; + } + .offset1 { + margin-left: 130px; + } + .offset2 { + margin-left: 230px; + } + .offset3 { + margin-left: 330px; + } + .offset4 { + margin-left: 430px; + } + .offset5 { + margin-left: 530px; + } + .offset6 { + margin-left: 630px; + } + .offset7 { + margin-left: 730px; + } + .offset8 { + margin-left: 830px; + } + .offset9 { + margin-left: 930px; + } + .offset10 { + margin-left: 1030px; + } + .offset11 { + margin-left: 1130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.564102564%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.982905983%; + } + .row-fluid .span2 { + width: 14.529914530000001%; + } + .row-fluid .span3 { + width: 23.076923077%; + } + .row-fluid .span4 { + width: 31.623931624%; + } + .row-fluid .span5 { + width: 40.170940171000005%; + } + .row-fluid .span6 { + width: 48.717948718%; + } + .row-fluid .span7 { + width: 57.264957265%; + } + .row-fluid .span8 { + width: 65.81196581200001%; + } + .row-fluid .span9 { + width: 74.358974359%; + } + .row-fluid .span10 { + width: 82.905982906%; + } + .row-fluid .span11 { + width: 91.45299145300001%; + } + .row-fluid .span12 { + width: 100%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 60px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 160px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 260px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 360px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 460px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 560px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 660px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 760px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 860px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 960px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1060px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1160px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } +} diff --git a/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.min.css b/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.min.css new file mode 100644 index 0000000..bc3f2ab --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/bootstrap-responsive.min.css @@ -0,0 +1,3 @@ + +.hidden{display:none;visibility:hidden;} +@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:768px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:980px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.801104972%;} .row-fluid .span2{width:14.364640883%;} .row-fluid .span3{width:22.928176794%;} .row-fluid .span4{width:31.491712705%;} .row-fluid .span5{width:40.055248616%;} .row-fluid .span6{width:48.618784527%;} .row-fluid .span7{width:57.182320438000005%;} .row-fluid .span8{width:65.74585634900001%;} .row-fluid .span9{width:74.30939226%;} .row-fluid .span10{width:82.87292817100001%;} .row-fluid .span11{width:91.436464082%;} .row-fluid .span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:980px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.982905983%;} .row-fluid .span2{width:14.529914530000001%;} .row-fluid .span3{width:23.076923077%;} .row-fluid .span4{width:31.623931624%;} .row-fluid .span5{width:40.170940171000005%;} .row-fluid .span6{width:48.717948718%;} .row-fluid .span7{width:57.264957265%;} .row-fluid .span8{width:65.81196581200001%;} .row-fluid .span9{width:74.358974359%;} .row-fluid .span10{width:82.905982906%;} .row-fluid .span11{width:91.45299145300001%;} .row-fluid .span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}} diff --git a/aliyun-log-php-sdk-master/docs/css/bootstrap.css b/aliyun-log-php-sdk-master/docs/css/bootstrap.css new file mode 100644 index 0000000..563050c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/bootstrap.css @@ -0,0 +1,3370 @@ +/*! + * Bootstrap v2.0.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} +audio, canvas, video { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +a:hover, a:active { + outline: 0; +} +sub, sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + max-width: 100%; + height: auto; + border: 0; + -ms-interpolation-mode: bicubic; +} +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, input { + *overflow: visible; + line-height: normal; +} +button::-moz-focus-inner, input::-moz-focus-inner { + padding: 0; + border: 0; +} +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, .row:after { + display: table; + content: ""; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + margin-left: 20px; +} +.span1 { + width: 60px; +} +.span2 { + width: 140px; +} +.span3 { + width: 220px; +} +.span4 { + width: 300px; +} +.span5 { + width: 380px; +} +.span6 { + width: 460px; +} +.span7 { + width: 540px; +} +.span8 { + width: 620px; +} +.span9 { + width: 700px; +} +.span10 { + width: 780px; +} +.span11 { + width: 860px; +} +.span12, .container { + width: 940px; +} +.offset1 { + margin-left: 100px; +} +.offset2 { + margin-left: 180px; +} +.offset3 { + margin-left: 260px; +} +.offset4 { + margin-left: 340px; +} +.offset5 { + margin-left: 420px; +} +.offset6 { + margin-left: 500px; +} +.offset7 { + margin-left: 580px; +} +.offset8 { + margin-left: 660px; +} +.offset9 { + margin-left: 740px; +} +.offset10 { + margin-left: 820px; +} +.offset11 { + margin-left: 900px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; +} +.row-fluid:after { + clear: both; +} +.row-fluid > [class*="span"] { + float: left; + margin-left: 2.127659574%; +} +.row-fluid > [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .span1 { + width: 6.382978723%; +} +.row-fluid .span2 { + width: 14.89361702%; +} +.row-fluid .span3 { + width: 23.404255317%; +} +.row-fluid .span4 { + width: 31.914893614%; +} +.row-fluid .span5 { + width: 40.425531911%; +} +.row-fluid .span6 { + width: 48.93617020799999%; +} +.row-fluid .span7 { + width: 57.446808505%; +} +.row-fluid .span8 { + width: 65.95744680199999%; +} +.row-fluid .span9 { + width: 74.468085099%; +} +.row-fluid .span10 { + width: 82.97872339599999%; +} +.row-fluid .span11 { + width: 91.489361693%; +} +.row-fluid .span12 { + width: 99.99999998999999%; +} +.container { + width: 940px; + margin-left: auto; + margin-right: auto; + *zoom: 1; +} +.container:before, .container:after { + display: table; + content: ""; +} +.container:after { + clear: both; +} +.container-fluid { + padding-left: 20px; + padding-right: 20px; + *zoom: 1; +} +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} +p small { + font-size: 11px; + color: #999999; +} +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: bold; + color: #333333; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} +h1 { + font-size: 30px; + line-height: 36px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 24px; + line-height: 36px; +} +h2 small { + font-size: 18px; +} +h3 { + line-height: 27px; + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4, h5, h6 { + line-height: 18px; +} +h4 { + font-size: 14px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} +.page-header h1 { + line-height: 1; +} +ul, ol { + padding: 0; + margin: 0 0 9px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; +} +ul.unstyled { + margin-left: 0; + list-style: none; +} +dl { + margin-bottom: 18px; +} +dt, dd { + line-height: 18px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 9px; +} +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #ffffff; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +.muted { + color: #999999; +} +abbr { + font-size: 90%; + text-transform: uppercase; + border-bottom: 1px dotted #ddd; + cursor: help; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-left: 0; + padding-right: 15px; + border-left: 0; + border-right: 5px solid #eeeeee; +} +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 18px; + line-height: 18px; + font-style: normal; +} +small { + font-size: 100%; +} +cite { + font-style: normal; +} +code, pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 3px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12px; + line-height: 18px; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; +} +pre.prettyprint { + margin-bottom: 18px; +} +pre code { + padding: 0; + background-color: transparent; +} +form { + margin: 0 0 18px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #eee; +} +label, +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; +} +label { + display: block; + margin-bottom: 5px; + color: #333333; +} +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.uneditable-textarea { + width: auto; + height: auto; +} +label input, label textarea, label select { + display: block; +} +input[type="image"], input[type="checkbox"], input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + border: 0; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +input[type="file"] { + padding: initial; + line-height: initial; + border: initial; + background-color: #ffffff; + background-color: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[type="button"], input[type="reset"], input[type="submit"] { + width: auto; + height: auto; +} +select, input[type="file"] { + height: 28px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 28px; +} +select { + width: 220px; + background-color: #ffffff; +} +select[multiple], select[size] { + height: auto; +} +input[type="image"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +textarea { + height: auto; +} +input[type="hidden"] { + display: none; +} +.radio, .checkbox { + padding-left: 18px; +} +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, .checkbox.inline { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.controls > .radio.inline:first-child, .controls > .checkbox.inline:first-child { + padding-top: 0; +} +input, textarea { + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} +input:focus, textarea:focus { + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + outline: 0; + outline: thin dotted \9; + /* IE6-8 */ + +} +input[type="file"]:focus, input[type="checkbox"]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.input-mini { + width: 60px; +} +.input-small { + width: 90px; +} +.input-medium { + width: 150px; +} +.input-large { + width: 210px; +} +.input-xlarge { + width: 270px; +} +.input-xxlarge { + width: 530px; +} +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input { + float: none; + margin-left: 0; +} +input.span1, textarea.span1, .uneditable-input.span1 { + width: 50px; +} +input.span2, textarea.span2, .uneditable-input.span2 { + width: 130px; +} +input.span3, textarea.span3, .uneditable-input.span3 { + width: 210px; +} +input.span4, textarea.span4, .uneditable-input.span4 { + width: 290px; +} +input.span5, textarea.span5, .uneditable-input.span5 { + width: 370px; +} +input.span6, textarea.span6, .uneditable-input.span6 { + width: 450px; +} +input.span7, textarea.span7, .uneditable-input.span7 { + width: 530px; +} +input.span8, textarea.span8, .uneditable-input.span8 { + width: 610px; +} +input.span9, textarea.span9, .uneditable-input.span9 { + width: 690px; +} +input.span10, textarea.span10, .uneditable-input.span10 { + width: 770px; +} +input.span11, textarea.span11, .uneditable-input.span11 { + width: 850px; +} +input.span12, textarea.span12, .uneditable-input.span12 { + width: 930px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} +.control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 0 0 6px #dbc59e; +} +.control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} +.control-group.error > label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} +.control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 0 0 6px #d59392; +} +.control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} +.control-group.success > label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} +.control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; + border-color: #468847; +} +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 0 0 6px #7aba7b; +} +.control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} +.form-actions { + padding: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.uneditable-input { + display: block; + background-color: #ffffff; + border-color: #eee; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + cursor: not-allowed; +} +:-moz-placeholder { + color: #999999; +} +::-webkit-input-placeholder { + color: #999999; +} +.help-block { + margin-top: 5px; + margin-bottom: 0; + color: #999999; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 9px; + vertical-align: middle; + padding-left: 5px; +} +.input-prepend, .input-append { + margin-bottom: 5px; + *zoom: 1; +} +.input-prepend:before, +.input-append:before, +.input-prepend:after, +.input-append:after { + display: table; + content: ""; +} +.input-prepend:after, .input-append:after { + clear: both; +} +.input-prepend input, +.input-append input, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-prepend input:focus, +.input-append input:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + position: relative; + z-index: 2; +} +.input-prepend .uneditable-input, .input-append .uneditable-input { + border-left-color: #ccc; +} +.input-prepend .add-on, .input-append .add-on { + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + margin-right: -1px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + color: #999999; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-prepend .active, .input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on { + *margin-top: 1px; + /* IE6-7 */ + +} +.input-append input, .input-append .uneditable-input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-append .uneditable-input { + border-right-color: #ccc; +} +.input-append .add-on { + margin-right: 0; + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-append input:first-child { + *margin-left: -160px; +} +.input-append input:first-child + .add-on { + *margin-left: -21px; +} +.search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input { + display: inline-block; + margin-bottom: 0; +} +.form-search label, +.form-inline label, +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + display: inline-block; +} +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on, +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on { + vertical-align: middle; +} +.control-group { + margin-bottom: 9px; +} +.form-horizontal legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-group > label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + margin-left: 160px; +} +.form-horizontal .form-actions { + padding-left: 160px; +} +table { + max-width: 100%; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 18px; +} +.table th, .table td { + padding: 8px; + line-height: 18px; + text-align: left; + border-top: 1px solid #ddd; +} +.table th { + font-weight: bold; + vertical-align: bottom; +} +.table td { + vertical-align: top; +} +.table thead:first-child tr th, .table thead:first-child tr td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #ddd; +} +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapsed; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th + th, +.table-bordered td + td, +.table-bordered th + td, +.table-bordered td + th { + border-left: 1px solid #ddd; +} +.table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} +.table-bordered thead:first-child tr:first-child th:first-child, .table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} +[class^="icon-"] { + display: inline-block; + width: 14px; + height: 14px; + vertical-align: text-top; + background-image: url(../img/glyphicons-halflings.png); + background-position: 14px 14px; + background-repeat: no-repeat; + *margin-right: .3em; +} +[class^="icon-"]:last-child { + *margin-left: 0; +} +.icon-white { + background-image: url(../img/glyphicons-halflings-white.png); +} +.icon-glass { + background-position: 0 0; +} +.icon-music { + background-position: -24px 0; +} +.icon-search { + background-position: -48px 0; +} +.icon-envelope { + background-position: -72px 0; +} +.icon-heart { + background-position: -96px 0; +} +.icon-star { + background-position: -120px 0; +} +.icon-star-empty { + background-position: -144px 0; +} +.icon-user { + background-position: -168px 0; +} +.icon-film { + background-position: -192px 0; +} +.icon-th-large { + background-position: -216px 0; +} +.icon-th { + background-position: -240px 0; +} +.icon-th-list { + background-position: -264px 0; +} +.icon-ok { + background-position: -288px 0; +} +.icon-remove { + background-position: -312px 0; +} +.icon-zoom-in { + background-position: -336px 0; +} +.icon-zoom-out { + background-position: -360px 0; +} +.icon-off { + background-position: -384px 0; +} +.icon-signal { + background-position: -408px 0; +} +.icon-cog { + background-position: -432px 0; +} +.icon-trash { + background-position: -456px 0; +} +.icon-home { + background-position: 0 -24px; +} +.icon-file { + background-position: -24px -24px; +} +.icon-time { + background-position: -48px -24px; +} +.icon-road { + background-position: -72px -24px; +} +.icon-download-alt { + background-position: -96px -24px; +} +.icon-download { + background-position: -120px -24px; +} +.icon-upload { + background-position: -144px -24px; +} +.icon-inbox { + background-position: -168px -24px; +} +.icon-play-circle { + background-position: -192px -24px; +} +.icon-repeat { + background-position: -216px -24px; +} +.icon-refresh { + background-position: -240px -24px; +} +.icon-list-alt { + background-position: -264px -24px; +} +.icon-lock { + background-position: -287px -24px; +} +.icon-flag { + background-position: -312px -24px; +} +.icon-headphones { + background-position: -336px -24px; +} +.icon-volume-off { + background-position: -360px -24px; +} +.icon-volume-down { + background-position: -384px -24px; +} +.icon-volume-up { + background-position: -408px -24px; +} +.icon-qrcode { + background-position: -432px -24px; +} +.icon-barcode { + background-position: -456px -24px; +} +.icon-tag { + background-position: 0 -48px; +} +.icon-tags { + background-position: -25px -48px; +} +.icon-book { + background-position: -48px -48px; +} +.icon-bookmark { + background-position: -72px -48px; +} +.icon-print { + background-position: -96px -48px; +} +.icon-camera { + background-position: -120px -48px; +} +.icon-font { + background-position: -144px -48px; +} +.icon-bold { + background-position: -167px -48px; +} +.icon-italic { + background-position: -192px -48px; +} +.icon-text-height { + background-position: -216px -48px; +} +.icon-text-width { + background-position: -240px -48px; +} +.icon-align-left { + background-position: -264px -48px; +} +.icon-align-center { + background-position: -288px -48px; +} +.icon-align-right { + background-position: -312px -48px; +} +.icon-align-justify { + background-position: -336px -48px; +} +.icon-list { + background-position: -360px -48px; +} +.icon-indent-left { + background-position: -384px -48px; +} +.icon-indent-right { + background-position: -408px -48px; +} +.icon-facetime-video { + background-position: -432px -48px; +} +.icon-picture { + background-position: -456px -48px; +} +.icon-pencil { + background-position: 0 -72px; +} +.icon-map-marker { + background-position: -24px -72px; +} +.icon-adjust { + background-position: -48px -72px; +} +.icon-tint { + background-position: -72px -72px; +} +.icon-edit { + background-position: -96px -72px; +} +.icon-share { + background-position: -120px -72px; +} +.icon-check { + background-position: -144px -72px; +} +.icon-move { + background-position: -168px -72px; +} +.icon-step-backward { + background-position: -192px -72px; +} +.icon-fast-backward { + background-position: -216px -72px; +} +.icon-backward { + background-position: -240px -72px; +} +.icon-play { + background-position: -264px -72px; +} +.icon-pause { + background-position: -288px -72px; +} +.icon-stop { + background-position: -312px -72px; +} +.icon-forward { + background-position: -336px -72px; +} +.icon-fast-forward { + background-position: -360px -72px; +} +.icon-step-forward { + background-position: -384px -72px; +} +.icon-eject { + background-position: -408px -72px; +} +.icon-chevron-left { + background-position: -432px -72px; +} +.icon-chevron-right { + background-position: -456px -72px; +} +.icon-plus-sign { + background-position: 0 -96px; +} +.icon-minus-sign { + background-position: -24px -96px; +} +.icon-remove-sign { + background-position: -48px -96px; +} +.icon-ok-sign { + background-position: -72px -96px; +} +.icon-question-sign { + background-position: -96px -96px; +} +.icon-info-sign { + background-position: -120px -96px; +} +.icon-screenshot { + background-position: -144px -96px; +} +.icon-remove-circle { + background-position: -168px -96px; +} +.icon-ok-circle { + background-position: -192px -96px; +} +.icon-ban-circle { + background-position: -216px -96px; +} +.icon-arrow-left { + background-position: -240px -96px; +} +.icon-arrow-right { + background-position: -264px -96px; +} +.icon-arrow-up { + background-position: -289px -96px; +} +.icon-arrow-down { + background-position: -312px -96px; +} +.icon-share-alt { + background-position: -336px -96px; +} +.icon-resize-full { + background-position: -360px -96px; +} +.icon-resize-small { + background-position: -384px -96px; +} +.icon-plus { + background-position: -408px -96px; +} +.icon-minus { + background-position: -433px -96px; +} +.icon-asterisk { + background-position: -456px -96px; +} +.icon-exclamation-sign { + background-position: 0 -120px; +} +.icon-gift { + background-position: -24px -120px; +} +.icon-leaf { + background-position: -48px -120px; +} +.icon-fire { + background-position: -72px -120px; +} +.icon-eye-open { + background-position: -96px -120px; +} +.icon-eye-close { + background-position: -120px -120px; +} +.icon-warning-sign { + background-position: -144px -120px; +} +.icon-plane { + background-position: -168px -120px; +} +.icon-calendar { + background-position: -192px -120px; +} +.icon-random { + background-position: -216px -120px; +} +.icon-comment { + background-position: -240px -120px; +} +.icon-magnet { + background-position: -264px -120px; +} +.icon-chevron-up { + background-position: -288px -120px; +} +.icon-chevron-down { + background-position: -313px -119px; +} +.icon-retweet { + background-position: -336px -120px; +} +.icon-shopping-cart { + background-position: -360px -120px; +} +.icon-folder-close { + background-position: -384px -120px; +} +.icon-folder-open { + background-position: -408px -120px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + text-indent: -99999px; + *text-indent: 0; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000000; + opacity: 0.3; + filter: alpha(opacity=30); + content: "\2193"; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown:hover .caret, .open.dropdown .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + max-width: 220px; + _width: 160px; + padding: 4px 0; + margin: 0; + list-style: none; + background-color: #ffffff; + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 1px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + *border-right-width: 2px; + *border-bottom-width: 2px; +} +.dropdown-menu.bottom-up { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +.dropdown-menu .divider { + height: 1px; + margin: 5px 1px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; + *width: 100%; + *margin: -5px 0 5px; +} +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #555555; + white-space: nowrap; +} +.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} +.dropdown.open { + *z-index: 1000; +} +.dropdown.open .dropdown-toggle { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} +.dropdown.open .dropdown-menu { + display: block; +} +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} +.fade.in { + opacity: 1; +} +.collapse { + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; + position: relative; + overflow: hidden; + height: 0; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover { + color: #000000; + text-decoration: none; + opacity: 0.4; + filter: alpha(opacity=40); + cursor: pointer; +} +.btn { + display: inline-block; + padding: 4px 10px 4px; + font-size: 13px; + line-height: 18px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #fafafa; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + cursor: pointer; + *margin-left: .3em; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, .btn:active { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + color: rgba(0, 0, 0, 0.5); + outline: 0; +} +.btn.disabled, .btn[disabled] { + cursor: default; + background-image: none; + background-color: #e6e6e6; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-large { + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-large .icon { + margin-top: 1px; +} +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} +.btn-small .icon { + margin-top: -1px; +} +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: #ffffff; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0044cc; +} +.btn-primary:active, .btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; +} +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; +} +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -ms-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; +} +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} +.btn-info { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; +} +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} +button.btn, input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.large, input[type="submit"].btn.large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.small, input[type="submit"].btn.small { + *padding-top: 3px; + *padding-bottom: 3px; +} +.btn-group { + position: relative; + *zoom: 1; + *margin-left: .3em; +} +.btn-group:before, .btn-group:after { + display: table; + content: ""; +} +.btn-group:after { + clear: both; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group .btn:last-child, .btn-group .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} +.btn-group .btn:hover, +.btn-group .btn:focus, +.btn-group .btn:active, +.btn-group .btn.active { + z-index: 2; +} +.btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group.open { + *z-index: 1000; +} +.btn-group.open .dropdown-menu { + display: block; + margin-top: 1px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.btn .caret { + margin-top: 7px; + margin-left: 0; +} +.btn:hover .caret, .open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-primary .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret { + border-top-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} +.btn-small .caret { + margin-top: 4px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.alert, .alert-heading { + color: #c09853; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success, .alert-success .alert-heading { + color: #468847; +} +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; +} +.alert-danger, +.alert-error, +.alert-danger .alert-heading, +.alert-error .alert-heading { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info, .alert-info .alert-heading { + color: #3a87ad; +} +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, .alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} +.nav { + margin-left: 0; + margin-bottom: 18px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.nav-list { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; +} +.nav-list > li > a, .nav-list .nav-header { + display: block; + padding: 3px 15px; + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list .nav-header { + font-size: 11px; + font-weight: bold; + line-height: 18px; + color: #999999; + text-transform: uppercase; +} + +.nav-list .nav-header * { + text-transform:none; +} + +.nav-list > li + .nav-header { + margin-top: 9px; +} +.nav-list .active > a, .nav-list .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"] { + margin-right: 2px; +} +.nav-tabs, .nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + content: ""; +} +.nav-tabs:after, .nav-pills:after { + clear: both; +} +.nav-tabs > li, .nav-pills > li { + float: left; +} +.nav-tabs > li > a, .nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + margin-bottom: -1px; +} +.nav-tabs > li > a { + padding-top: 9px; + padding-bottom: 9px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.nav-pills .active > a, .nav-pills .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; +} +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu { + margin-top: 1px; + border-width: 1px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret { + border-top-color: #0088cc; + margin-top: 6px; +} +.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; +} +.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; +} +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret { + border-top-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, .tabbable:after { + display: table; + content: ""; +} +.tabbable:after { + clear: both; +} +.tabs-below .nav-tabs, .tabs-right .nav-tabs, .tabs-left .nav-tabs { + border-bottom: 0; +} +.tab-content > .tab-pane, .pill-content > .pill-pane { + display: none; +} +.tab-content > .active, .pill-content > .active { + display: block; +} +.tabs-below .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.tabs-below .nav-tabs > li > a:hover { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} +.tabs-left .nav-tabs > li, .tabs-right .nav-tabs > li { + float: none; +} +.tabs-left .nav-tabs > li > a, .tabs-right .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +.tabs-left .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.tabs-left .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.tabs-right .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.tabs-right .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.navbar { + overflow: visible; + margin-bottom: 18px; +} +.navbar-inner { + padding-left: 20px; + padding-right: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} +.btn-navbar:hover, +.btn-navbar:active, +.btn-navbar.active, +.btn-navbar.disabled, +.btn-navbar[disabled] { + background-color: #222222; +} +.btn-navbar:active, .btn-navbar.active { + background-color: #080808 \9; +} +.btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} +.nav-collapse.collapse { + height: auto; +} +.navbar .brand:hover { + text-decoration: none; +} +.navbar .brand { + float: left; + display: block; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #ffffff; +} +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #999999; +} +.navbar .navbar-text a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar .btn, .navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, .navbar-form select { + display: inline-block; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-form .radio, .navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-search { + position: relative; + float: left; + margin-top: 6px; + margin-bottom: 0; +} +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + background: #666; + background: rgba(255, 255, 255, 0.3); + border: 1px solid #111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +.navbar-search .search-query :-moz-placeholder { + color: #eeeeee; +} +.navbar-search .search-query::-webkit-input-placeholder { + color: #eeeeee; +} +.navbar-search .search-query:hover { + color: #ffffff; + background-color: #999999; + background-color: rgba(255, 255, 255, 0.5); +} +.navbar-search .search-query:focus, .navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + outline: 0; +} +.navbar-fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-top .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; +} +.navbar .nav > li { + display: block; + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar .nav > li > a:hover { + background-color: transparent; + color: #ffffff; + text-decoration: none; +} +.navbar .nav .active > a, .navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; + background-color: rgba(0, 0, 0, 0.5); +} +.navbar .divider-vertical { + height: 40px; + width: 1px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} +.navbar .nav.pull-right { + margin-left: 10px; + margin-right: 0; +} +.navbar .dropdown-menu { + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.navbar .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret { + border-top-color: #ffffff; +} +.navbar .nav .active .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle { + background-color: transparent; +} +.navbar .nav .active > .dropdown-toggle:hover { + color: #ffffff; +} +.navbar .nav.pull-right .dropdown-menu { + left: auto; + right: 0; +} +.navbar .nav.pull-right .dropdown-menu:before { + left: auto; + right: 12px; +} +.navbar .nav.pull-right .dropdown-menu:after { + left: auto; + right: 13px; +} +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} +.breadcrumb .active a { + color: #333333; +} +.pagination { + height: 36px; + margin: 18px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +.pagination li { + display: inline; +} +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} +.pagination a:hover, .pagination .active a { + background-color: #f5f5f5; +} +.pagination .active a { + color: #999999; + cursor: default; +} +.pagination .disabled a, .pagination .disabled a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination li:first-child a { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.pagination li:last-child a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pager { + margin-left: 0; + margin-bottom: 18px; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, .pager:after { + display: table; + content: ""; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager a { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next a { + float: right; +} +.pager .previous a { + float: left; +} +.modal-open .dropdown-menu { + z-index: 2050; +} +.modal-open .dropdown.open { + *z-index: 2050; +} +.modal-open .popover { + z-index: 2060; +} +.modal-open .tooltip { + z-index: 2070; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + max-height: 500px; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.modal.fade { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-transition: opacity .3s linear, top .3s ease-out; + -o-transition: opacity .3s linear, top .3s ease-out; + transition: opacity .3s linear, top .3s ease-out; + top: -25%; +} +.modal.fade.in { + top: 50%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-body { + padding: 15px; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn { + float: right; + margin-left: 5px; + margin-bottom: 0; +} +.tooltip { + position: absolute; + z-index: 1020; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -2px; +} +.tooltip.right { + margin-left: 2px; +} +.tooltip.bottom { + margin-top: 2px; +} +.tooltip.left { + margin-left: -2px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} +.popover.top { + margin-top: -5px; +} +.popover.right { + margin-left: 5px; +} +.popover.bottom { + margin-top: 5px; +} +.popover.left { + margin-left: -5px; +} +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} +.popover-inner { + padding: 3px; + width: 280px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); +} +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; +} +.thumbnails:after { + clear: both; +} +.thumbnails > li { + float: left; + margin: 0 0 18px 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; +} +.label { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + background-color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.label-important { + background-color: #b94a48; +} +.label-warning { + background-color: #f89406; +} +.label-success { + background-color: #468847; +} +.label-info { + background-color: #3a87ad; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -ms-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-success .bar { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.progress-info .bar { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} +.accordion { + margin-bottom: 18px; +} +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel .item > img { + display: block; + line-height: 1; +} +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} +.carousel .active { + left: 0; +} +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel .next { + left: 100%; +} +.carousel .prev { + left: -100%; +} +.carousel .next.left, .carousel .prev.right { + left: 0; +} +.carousel .active.left { + left: -100%; +} +.carousel .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, .carousel-caption p { + color: #ffffff; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #f5f5f5; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; +} +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} diff --git a/aliyun-log-php-sdk-master/docs/css/bootstrap.min.css b/aliyun-log-php-sdk-master/docs/css/bootstrap.min.css new file mode 100644 index 0000000..d522124 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/bootstrap.min.css @@ -0,0 +1,611 @@ +article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;} +audio,canvas,video{display:inline-block;*display:inline;*zoom:1;} +audio:not([controls]){display:none;} +html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} +a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +a:hover,a:active{outline:0;} +sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;} +sup{top:-0.5em;} +sub{bottom:-0.25em;} +img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;} +button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;} +button,input{*overflow:visible;line-height:normal;} +button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;} +button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} +input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;} +body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;} +a{color:#0088cc;text-decoration:none;} +a:hover{color:#005580;text-decoration:underline;} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} +.row:after{clear:both;} +[class*="span"]{float:left;margin-left:20px;} +.span1{width:60px;} +.span2{width:140px;} +.span3{width:220px;} +.span4{width:300px;} +.span5{width:380px;} +.span6{width:460px;} +.span7{width:540px;} +.span8{width:620px;} +.span9{width:700px;} +.span10{width:780px;} +.span11{width:860px;} +.span12,.container{width:940px;} +.offset1{margin-left:100px;} +.offset2{margin-left:180px;} +.offset3{margin-left:260px;} +.offset4{margin-left:340px;} +.offset5{margin-left:420px;} +.offset6{margin-left:500px;} +.offset7{margin-left:580px;} +.offset8{margin-left:660px;} +.offset9{margin-left:740px;} +.offset10{margin-left:820px;} +.offset11{margin-left:900px;} +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} +.row-fluid:after{clear:both;} +.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;} +.row-fluid>[class*="span"]:first-child{margin-left:0;} +.row-fluid .span1{width:6.382978723%;} +.row-fluid .span2{width:14.89361702%;} +.row-fluid .span3{width:23.404255317%;} +.row-fluid .span4{width:31.914893614%;} +.row-fluid .span5{width:40.425531911%;} +.row-fluid .span6{width:48.93617020799999%;} +.row-fluid .span7{width:57.446808505%;} +.row-fluid .span8{width:65.95744680199999%;} +.row-fluid .span9{width:74.468085099%;} +.row-fluid .span10{width:82.97872339599999%;} +.row-fluid .span11{width:91.489361693%;} +.row-fluid .span12{width:99.99999998999999%;} +.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";} +.container:after{clear:both;} +.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";} +.container-fluid:after{clear:both;} +p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;} +.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;} +h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;} +h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;} +h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;} +h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;} +h4,h5,h6{line-height:18px;} +h4{font-size:14px;}h4 small{font-size:12px;} +h5{font-size:12px;} +h6{font-size:11px;color:#999999;text-transform:uppercase;} +.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;} +.page-header h1{line-height:1;} +ul,ol{padding:0;margin:0 0 9px 25px;} +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} +ul{list-style:disc;} +ol{list-style:decimal;} +li{line-height:18px;} +ul.unstyled{margin-left:0;list-style:none;} +dl{margin-bottom:18px;} +dt,dd{line-height:18px;} +dt{font-weight:bold;} +dd{margin-left:9px;} +hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;} +strong{font-weight:bold;} +em{font-style:italic;} +.muted{color:#999999;} +abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;} +blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;} +blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} +q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;} +small{font-size:100%;} +cite{font-style:normal;} +code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} +pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;} +pre code{padding:0;background-color:transparent;} +form{margin:0 0 18px;} +fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;} +label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;} +label{display:block;margin-bottom:5px;color:#333333;} +input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.uneditable-textarea{width:auto;height:auto;} +label input,label textarea,label select{display:block;} +input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;} +select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;} +select{width:220px;background-color:#ffffff;} +select[multiple],select[size]{height:auto;} +input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +textarea{height:auto;} +input[type="hidden"]{display:none;} +.radio,.checkbox{padding-left:18px;} +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} +.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;} +input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;} +input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;} +input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.input-mini{width:60px;} +.input-small{width:90px;} +.input-medium{width:150px;} +.input-large{width:210px;} +.input-xlarge{width:270px;} +.input-xxlarge{width:530px;} +input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;} +input.span1,textarea.span1,.uneditable-input.span1{width:50px;} +input.span2,textarea.span2,.uneditable-input.span2{width:130px;} +input.span3,textarea.span3,.uneditable-input.span3{width:210px;} +input.span4,textarea.span4,.uneditable-input.span4{width:290px;} +input.span5,textarea.span5,.uneditable-input.span5{width:370px;} +input.span6,textarea.span6,.uneditable-input.span6{width:450px;} +input.span7,textarea.span7,.uneditable-input.span7{width:530px;} +input.span8,textarea.span8,.uneditable-input.span8{width:610px;} +input.span9,textarea.span9,.uneditable-input.span9{width:690px;} +input.span10,textarea.span10,.uneditable-input.span10{width:770px;} +input.span11,textarea.span11,.uneditable-input.span11{width:850px;} +input.span12,textarea.span12,.uneditable-input.span12{width:930px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;} +.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;} +.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;} +.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;} +.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;} +.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;} +.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;} +input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;} +.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;} +.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} +:-moz-placeholder{color:#999999;} +::-webkit-input-placeholder{color:#999999;} +.help-block{margin-top:5px;margin-bottom:0;color:#999999;} +.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;} +.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";} +.input-prepend:after,.input-append:after{clear:both;} +.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;} +.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;} +.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on{*margin-top:1px;} +.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-append .uneditable-input{border-right-color:#ccc;} +.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;} +.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;} +.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;} +.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;} +.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;} +.control-group{margin-bottom:9px;} +.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";} +.form-horizontal .control-group:after{clear:both;} +.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;} +.form-horizontal .controls{margin-left:160px;} +.form-horizontal .form-actions{padding-left:160px;} +table{max-width:100%;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;} +.table th{font-weight:bold;vertical-align:bottom;} +.table td{vertical-align:top;} +.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;} +.table tbody+tbody{border-top:2px solid #ddd;} +.table-condensed th,.table-condensed td{padding:4px 5px;} +.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;} +.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;} +.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;} +.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;} +.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;} +.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;} +.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} +table .span1{float:none;width:44px;margin-left:0;} +table .span2{float:none;width:124px;margin-left:0;} +table .span3{float:none;width:204px;margin-left:0;} +table .span4{float:none;width:284px;margin-left:0;} +table .span5{float:none;width:364px;margin-left:0;} +table .span6{float:none;width:444px;margin-left:0;} +table .span7{float:none;width:524px;margin-left:0;} +table .span8{float:none;width:604px;margin-left:0;} +table .span9{float:none;width:684px;margin-left:0;} +table .span10{float:none;width:764px;margin-left:0;} +table .span11{float:none;width:844px;margin-left:0;} +table .span12{float:none;width:924px;margin-left:0;} +[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;} +.icon-white{background-image:url(../img/glyphicons-halflings-white.png);} +.icon-glass{background-position:0 0;} +.icon-music{background-position:-24px 0;} +.icon-search{background-position:-48px 0;} +.icon-envelope{background-position:-72px 0;} +.icon-heart{background-position:-96px 0;} +.icon-star{background-position:-120px 0;} +.icon-star-empty{background-position:-144px 0;} +.icon-user{background-position:-168px 0;} +.icon-film{background-position:-192px 0;} +.icon-th-large{background-position:-216px 0;} +.icon-th{background-position:-240px 0;} +.icon-th-list{background-position:-264px 0;} +.icon-ok{background-position:-288px 0;} +.icon-remove{background-position:-312px 0;} +.icon-zoom-in{background-position:-336px 0;} +.icon-zoom-out{background-position:-360px 0;} +.icon-off{background-position:-384px 0;} +.icon-signal{background-position:-408px 0;} +.icon-cog{background-position:-432px 0;} +.icon-trash{background-position:-456px 0;} +.icon-home{background-position:0 -24px;} +.icon-file{background-position:-24px -24px;} +.icon-time{background-position:-48px -24px;} +.icon-road{background-position:-72px -24px;} +.icon-download-alt{background-position:-96px -24px;} +.icon-download{background-position:-120px -24px;} +.icon-upload{background-position:-144px -24px;} +.icon-inbox{background-position:-168px -24px;} +.icon-play-circle{background-position:-192px -24px;} +.icon-repeat{background-position:-216px -24px;} +.icon-refresh{background-position:-240px -24px;} +.icon-list-alt{background-position:-264px -24px;} +.icon-lock{background-position:-287px -24px;} +.icon-flag{background-position:-312px -24px;} +.icon-headphones{background-position:-336px -24px;} +.icon-volume-off{background-position:-360px -24px;} +.icon-volume-down{background-position:-384px -24px;} +.icon-volume-up{background-position:-408px -24px;} +.icon-qrcode{background-position:-432px -24px;} +.icon-barcode{background-position:-456px -24px;} +.icon-tag{background-position:0 -48px;} +.icon-tags{background-position:-25px -48px;} +.icon-book{background-position:-48px -48px;} +.icon-bookmark{background-position:-72px -48px;} +.icon-print{background-position:-96px -48px;} +.icon-camera{background-position:-120px -48px;} +.icon-font{background-position:-144px -48px;} +.icon-bold{background-position:-167px -48px;} +.icon-italic{background-position:-192px -48px;} +.icon-text-height{background-position:-216px -48px;} +.icon-text-width{background-position:-240px -48px;} +.icon-align-left{background-position:-264px -48px;} +.icon-align-center{background-position:-288px -48px;} +.icon-align-right{background-position:-312px -48px;} +.icon-align-justify{background-position:-336px -48px;} +.icon-list{background-position:-360px -48px;} +.icon-indent-left{background-position:-384px -48px;} +.icon-indent-right{background-position:-408px -48px;} +.icon-facetime-video{background-position:-432px -48px;} +.icon-picture{background-position:-456px -48px;} +.icon-pencil{background-position:0 -72px;} +.icon-map-marker{background-position:-24px -72px;} +.icon-adjust{background-position:-48px -72px;} +.icon-tint{background-position:-72px -72px;} +.icon-edit{background-position:-96px -72px;} +.icon-share{background-position:-120px -72px;} +.icon-check{background-position:-144px -72px;} +.icon-move{background-position:-168px -72px;} +.icon-step-backward{background-position:-192px -72px;} +.icon-fast-backward{background-position:-216px -72px;} +.icon-backward{background-position:-240px -72px;} +.icon-play{background-position:-264px -72px;} +.icon-pause{background-position:-288px -72px;} +.icon-stop{background-position:-312px -72px;} +.icon-forward{background-position:-336px -72px;} +.icon-fast-forward{background-position:-360px -72px;} +.icon-step-forward{background-position:-384px -72px;} +.icon-eject{background-position:-408px -72px;} +.icon-chevron-left{background-position:-432px -72px;} +.icon-chevron-right{background-position:-456px -72px;} +.icon-plus-sign{background-position:0 -96px;} +.icon-minus-sign{background-position:-24px -96px;} +.icon-remove-sign{background-position:-48px -96px;} +.icon-ok-sign{background-position:-72px -96px;} +.icon-question-sign{background-position:-96px -96px;} +.icon-info-sign{background-position:-120px -96px;} +.icon-screenshot{background-position:-144px -96px;} +.icon-remove-circle{background-position:-168px -96px;} +.icon-ok-circle{background-position:-192px -96px;} +.icon-ban-circle{background-position:-216px -96px;} +.icon-arrow-left{background-position:-240px -96px;} +.icon-arrow-right{background-position:-264px -96px;} +.icon-arrow-up{background-position:-289px -96px;} +.icon-arrow-down{background-position:-312px -96px;} +.icon-share-alt{background-position:-336px -96px;} +.icon-resize-full{background-position:-360px -96px;} +.icon-resize-small{background-position:-384px -96px;} +.icon-plus{background-position:-408px -96px;} +.icon-minus{background-position:-433px -96px;} +.icon-asterisk{background-position:-456px -96px;} +.icon-exclamation-sign{background-position:0 -120px;} +.icon-gift{background-position:-24px -120px;} +.icon-leaf{background-position:-48px -120px;} +.icon-fire{background-position:-72px -120px;} +.icon-eye-open{background-position:-96px -120px;} +.icon-eye-close{background-position:-120px -120px;} +.icon-warning-sign{background-position:-144px -120px;} +.icon-plane{background-position:-168px -120px;} +.icon-calendar{background-position:-192px -120px;} +.icon-random{background-position:-216px -120px;} +.icon-comment{background-position:-240px -120px;} +.icon-magnet{background-position:-264px -120px;} +.icon-chevron-up{background-position:-288px -120px;} +.icon-chevron-down{background-position:-313px -119px;} +.icon-retweet{background-position:-336px -120px;} +.icon-shopping-cart{background-position:-360px -120px;} +.icon-folder-close{background-position:-384px -120px;} +.icon-folder-open{background-position:-408px -120px;} +.icon-resize-vertical{background-position:-432px -119px;} +.icon-resize-horizontal{background-position:-456px -118px;} +.dropdown{position:relative;} +.dropdown-toggle{*margin-bottom:-3px;} +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;text-indent:-99999px;*text-indent:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"\2193";} +.dropdown .caret{margin-top:8px;margin-left:2px;} +.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;max-width:220px;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px;} +.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;} +.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#555555;white-space:nowrap;} +.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;} +.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);} +.dropdown.open .dropdown-menu{display:block;} +.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);} +.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;} +.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;} +.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;} +.btn{display:inline-block;padding:4px 10px 4px;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;} +.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;} +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-large .icon{margin-top:1px;} +.btn-small{padding:5px 9px;font-size:11px;line-height:16px;} +.btn-small .icon{margin-top:-1px;} +.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);} +.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;} +.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} +.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} +.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} +.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;} +.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;} +button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;} +button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;} +.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";} +.btn-group:after{clear:both;} +.btn-group:first-child{*margin-left:0;} +.btn-group+.btn-group{margin-left:5px;} +.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} +.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;} +.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;} +.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;} +.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);} +.btn .caret{margin-top:7px;margin-left:0;} +.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);} +.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);} +.btn-small .caret{margin-top:4px;} +.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.alert,.alert-heading{color:#c09853;} +.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;} +.alert-success,.alert-success .alert-heading{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;} +.alert-danger,.alert-error,.alert-danger .alert-heading,.alert-error .alert-heading{color:#b94a48;} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;} +.alert-info,.alert-info .alert-heading{color:#3a87ad;} +.alert-block{padding-top:14px;padding-bottom:14px;} +.alert-block>p,.alert-block>ul{margin-bottom:0;} +.alert-block p+p{margin-top:5px;} +.nav{margin-left:0;margin-bottom:18px;list-style:none;} +.nav>li>a{display:block;} +.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} +.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{display:block;padding:3px 15px;margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} +.nav-list .nav-header{font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-transform:uppercase;} +.nav-list .nav-header *{text-transform:none;} +.nav-list>li+.nav-header{margin-top:9px;} +.nav-list .active>a,.nav-list .active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} +.nav-list [class^="icon-"]{margin-right:2px;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";} +.nav-tabs:after,.nav-pills:after{clear:both;} +.nav-tabs>li,.nav-pills>li{float:left;} +.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;} +.nav-tabs{border-bottom:1px solid #ddd;} +.nav-tabs>li{margin-bottom:-1px;} +.nav-tabs>li>a{padding-top:9px;padding-bottom:9px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;} +.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.nav-pills .active>a,.nav-pills .active>a:hover{color:#ffffff;background-color:#0088cc;} +.nav-stacked>li{float:none;} +.nav-stacked>li>a{margin-right:0;} +.nav-tabs.nav-stacked{border-bottom:0;} +.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} +.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;} +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;} +.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;margin-top:6px;} +.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;} +.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;} +.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;} +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} +.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover{border-color:#999999;} +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";} +.tabbable:after{clear:both;} +.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;} +.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;} +.tab-content>.active,.pill-content>.active{display:block;} +.tabs-below .nav-tabs{border-top:1px solid #ddd;} +.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;} +.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;} +.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;} +.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;} +.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;} +.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;} +.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} +.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} +.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;} +.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;} +.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} +.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} +.navbar{overflow:visible;margin-bottom:18px;} +.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);} +.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;} +.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;} +.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);} +.btn-navbar .icon-bar+.icon-bar{margin-top:3px;} +.nav-collapse.collapse{height:auto;} +.navbar .brand:hover{text-decoration:none;} +.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;} +.navbar .navbar-text{margin-bottom:0;line-height:40px;color:#999999;}.navbar .navbar-text a:hover{color:#ffffff;background-color:transparent;} +.navbar .btn,.navbar .btn-group{margin-top:5px;} +.navbar .btn-group .btn{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";} +.navbar-form:after{clear:both;} +.navbar-form input,.navbar-form select{display:inline-block;margin-top:5px;margin-bottom:0;} +.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;color:rgba(255, 255, 255, 0.75);background:#666;background:rgba(255, 255, 255, 0.3);border:1px solid #111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query :-moz-placeholder{color:#eeeeee;} +.navbar-search .search-query::-webkit-input-placeholder{color:#eeeeee;} +.navbar-search .search-query:hover{color:#ffffff;background-color:#999999;background-color:rgba(255, 255, 255, 0.5);} +.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;} +.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;} +.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;} +.navbar .nav>li{display:block;float:left;} +.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);} +.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;} +.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;background-color:rgba(0, 0, 0, 0.5);} +.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;} +.navbar .nav.pull-right{margin-left:10px;margin-right:0;} +.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} +.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} +.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;} +.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);} +.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;} +.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;} +.navbar .nav.pull-right .dropdown-menu{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px;} +.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px;} +.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;} +.breadcrumb .divider{padding:0 5px;color:#999999;} +.breadcrumb .active a{color:#333333;} +.pagination{height:36px;margin:18px 0;} +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} +.pagination li{display:inline;} +.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;} +.pagination a:hover,.pagination .active a{background-color:#f5f5f5;} +.pagination .active a{color:#999999;cursor:default;} +.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;} +.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.pagination-centered{text-align:center;} +.pagination-right{text-align:right;} +.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";} +.pager:after{clear:both;} +.pager li{display:inline;} +.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;} +.pager a:hover{text-decoration:none;background-color:#f5f5f5;} +.pager .next a{float:right;} +.pager .previous a{float:left;} +.modal-open .dropdown-menu{z-index:2050;} +.modal-open .dropdown.open{*z-index:2050;} +.modal-open .popover{z-index:2060;} +.modal-open .tooltip{z-index:2070;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:50%;left:50%;z-index:1050;max-height:500px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;} +.modal.fade.in{top:50%;} +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} +.modal-body{padding:15px;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";} +.modal-footer:after{clear:both;} +.modal-footer .btn{float:right;margin-left:5px;margin-bottom:0;} +.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-2px;} +.tooltip.right{margin-left:2px;} +.tooltip.bottom{margin-top:2px;} +.tooltip.left{margin-left:-2px;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;} +.popover.right{margin-left:5px;} +.popover.bottom{margin-top:5px;} +.popover.left{margin-left:-5px;} +.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.popover .arrow{position:absolute;width:0;height:0;} +.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);} +.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} +.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";} +.thumbnails:after{clear:both;} +.thumbnails>li{float:left;margin:0 0 18px 20px;} +.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);} +a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} +.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;} +.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.label-important{background-color:#b94a48;} +.label-warning{background-color:#f89406;} +.label-success{background-color:#468847;} +.label-info{background-color:#3a87ad;} +@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;} +.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);} +.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);} +.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);} +.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);} +.accordion{margin-bottom:18px;} +.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.accordion-heading{border-bottom:0;} +.accordion-heading .accordion-toggle{display:block;padding:8px 15px;} +.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:18px;line-height:1;} +.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} +.carousel .item>img{display:block;line-height:1;} +.carousel .active,.carousel .next,.carousel .prev{display:block;} +.carousel .active{left:0;} +.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} +.carousel .next{left:100%;} +.carousel .prev{left:-100%;} +.carousel .next.left,.carousel .prev.right{left:0;} +.carousel .active.left{left:-100%;} +.carousel .active.right{left:100%;} +.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} +.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);} +.carousel-caption h4,.carousel-caption p{color:#ffffff;} +.hero-unit{padding:60px;margin-bottom:30px;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;} +.hero-unit p{font-size:18px;font-weight:200;line-height:27px;} +.pull-right{float:right;} +.pull-left{float:left;} +.hide{display:none;} +.show{display:block;} +.invisible{visibility:hidden;} diff --git a/aliyun-log-php-sdk-master/docs/css/jquery.iviewer.css b/aliyun-log-php-sdk-master/docs/css/jquery.iviewer.css new file mode 100644 index 0000000..d68c642 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/jquery.iviewer.css @@ -0,0 +1,91 @@ +.iviewer_common { + position:absolute; + bottom:10px; + border: 1px solid #000; + height: 28px; + z-index: 5000; +} + +.iviewer_cursor { + cursor: url(../img/iviewer/hand.cur) 6 8, pointer; +} + +.iviewer_drag_cursor { + cursor: url(../img/iviewer/grab.cur) 6 8, pointer; +} + +.iviewer_button { + width: 28px; + cursor: pointer; + background-position: center center; + background-repeat: no-repeat; +} + +.iviewer_zoom_in { + left: 20px; + background: url(../img/iviewer/iviewer.zoom_in.png); +} + +.iviewer_zoom_out { + left: 55px; + background: url(../img/iviewer/iviewer.zoom_out.png); +} + +.iviewer_zoom_zero { + left: 90px; + background: url(../img/iviewer/iviewer.zoom_zero.png); +} + +.iviewer_zoom_fit { + left: 125px; + background: url(../img/iviewer/iviewer.zoom_fit.png); +} + +.iviewer_zoom_status { + left: 160px; + font: 1em/28px Sans; + color: #000; + background-color: #fff; + text-align: center; + width: 60px; +} + +.iviewer_rotate_left { + left: 227px; + background: #fff url(../img/iviewer/iviewer.rotate_left.png) center center no-repeat; +} + +.iviewer_rotate_right { + left: 262px; + background: #fff url(../img/iviewer/iviewer.rotate_right.png) center center no-repeat; +} + +.viewer +{ + width: 100%; + height: 500px; + position: relative; + background: transparent url('../img/loader.gif') no-repeat center center; +} + +.viewer img +{ + max-width: none; +} + +.wrapper +{ + overflow: hidden; +} + +.iviewer_common +{ + border: 0; + bottom: auto; + top: 10px; +} + +.iviewer_zoom_status +{ + border: 1px solid black; +} diff --git a/aliyun-log-php-sdk-master/docs/css/prettify.css b/aliyun-log-php-sdk-master/docs/css/prettify.css new file mode 100644 index 0000000..d44b3a2 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/css/template.css b/aliyun-log-php-sdk-master/docs/css/template.css new file mode 100644 index 0000000..12a7a69 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/css/template.css @@ -0,0 +1,530 @@ +@import url(bootstrap.min.css); +@import url(bootstrap-responsive.css); +@import url(prettify.css); +@import url(jquery.iviewer.css); +@import url(https://fonts.googleapis.com/css?family=Forum); + +body +{ + padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ + background: #f9f9f9; + color: #444; +} + +a +{ + color: #55A72F; +} + +td p:last-of-type { + margin: 0; +} + +li.l0, li.l1, li.l2, li.l3, li.l5, li.l6, li.l7, li.l8 +{ + list-style-type: decimal; +} + +a.brand, h2, .hero-unit h1 +{ + font-family: 'Forum', "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.element .span4 +{ + width: 275px; +} + +.namespace-contents hr, .package-contents hr +{ + border-top: 3px dotted silver; +} + +.namespace-indent, .package-indent +{ + padding-left: 10px; border-left: 1px dashed #f0f0f0; +} + +.element h3 i, .namespace-contents h3 i, .package-contents h3 i +{ + margin-top: 2px; + margin-right: 5px; +} + +.element h3, .namespace-contents h3, .package-contents h3 +{ + margin-top: 25px; + margin-bottom: 20px; + border-bottom: 1px solid silver; +} + +.element h3:first-of-type, .namespace-contents h3:first-of-type, +.package-contents h3:first-of-type +{ + margin-top: 30px; +} + +.element h2 +{ + font-family: inherit; + font-size: 1.2em; + color: black; +} + +.element .type +{ + font-weight: bold; +} + +#search-query +{ + height: auto; +} + +.hero-unit, div.element, .well +{ + border: 1px solid #e0e0e0; + background: white; +} + +.dropdown-menu a{ + overflow: hidden; + text-overflow: ellipsis; +} +h2 +{ + border-bottom: 1px dashed #55A72F; + margin-bottom: 10px; + padding-bottom: 0; + padding-left: 5px; + color: #e9e9e9; + font-weight: normal; + margin-top: 40px; +} + +h2:first-of-type +{ + margin-top: 0; +} + +.hero-unit +{ + background: #75a70d; /* Old browsers */ + background: -moz-radial-gradient(center, ellipse cover, #bfd255 0%, #8eb92a 72%, #72aa00 96%, #9ecb2d 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#bfd255), color-stop(72%,#8eb92a), color-stop(96%,#72aa00), color-stop(100%,#9ecb2d)); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* IE10+ */ + background: radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ + + padding: 40px 0 15px 0; + box-shadow: inset 0 0 10px gray; +} + +.hero-unit h1 +{ + font-weight: normal; + text-align: center; + color: white; + text-shadow: black 0 0 15px; +} + +.hero-unit h2 +{ + border: none; + color: white; + background: rgba(48, 48, 48, 0.5); + padding: 0; + margin: 0; + margin-top: 15px; + text-align: center; +} + +.namespace-contents h2, .package-contents h2 +{ + padding-left: 44px; + background: transparent url('../img/icons/icon-th-big.png') no-repeat 3px center; +} + +.package-contents h2 +{ + background-image: url('../img/icons/icon-folder-open-big.png'); +} + +.namespace-contents .element h2, .package-contents .element h2 +{ + padding-left: 0; + background: none; +} + +div.element +{ + border-left: 10px solid #55A72F; + border-radius: 5px; + padding: 7px 7px 2px 7px; + margin-bottom: 15px; + margin-left: 0; +} + +div.element.protected +{ + border-left-color: orange; +} + +div.element.private +{ + border-left-color: red; +} + +div.element.class, div.element.interface, div.element.trait +{ + border-left-color: #e0e0e0; +} + +div.element.class.abstract h1, div.element.interface.abstract h1 +{ + font-style: italic; +} + +div.element h1 +{ + font-size: 1.2em; + line-height: 1.5em; + margin-bottom: 10px; + padding-left: 22px; + background: transparent no-repeat left 2px; + word-wrap: break-word; +} + +div.element h1 a +{ + color: transparent; + margin-left: 10px; +} + +div.element h1:hover a +{ + color: silver; +} + +div.element h1 a:hover +{ + color: navy; +} + +div.element a.more:hover +{ + background: #f0f0f0; + color: #444; + text-decoration: none; +} + +div.element a.more +{ + font-weight: bold; + text-align: center; + color: gray; + border-top: 1px dashed silver; + display: block; + margin-top: 5px; + padding: 5px 0; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} + +div.element p +{ + font-size: 0.9em; +} + +div.element .table +{ + font-size: 0.9em; +} + +div.element .table th +{ + text-transform: capitalize; +} + +div.detail-description +{ + padding-left: 30px; +} + +div.detail-description table th { + vertical-align: top; +} + +body.invert +{ + background: white; +} + +body.invert div.element +{ + background: #f9f9f9; +} + +ul.side-nav +{ + clear: both; +} + +ul.side-nav li +{ + word-wrap: break-word; + padding-left: 10px; + text-indent: -10px; +} + +ul.side-nav li a +{ + background: transparent no-repeat 5px 3px; + padding-bottom: 10px; + font-style: italic; +} + +ul.side-nav li pre +{ + font-size: 0.8em; + margin: 5px 15px 0 15px; + padding: 2px 5px; + background-color: #f8f8f8; + color: gray; + font-style: normal; + word-wrap: break-word; + text-indent: 0; +} + +ul.side-nav li.view-simple span.description +{ + display: none; +} + +ul.side-nav li.view-simple pre +{ + font-size: inherit; + margin: inherit; + padding: inherit; + background-color: inherit; + border: none; + color: inherit; + font-family: inherit; + font-style: inherit; + padding-bottom: 0; + padding-left: 5px; +} + +ul.side-nav li.view-simple a +{ + padding-bottom: 0; +} + +i.icon-custom +{ + width: 16px; + height: 16px; + background-position: 0; +} + +.table.markers +{ + background: white; +} + +/* JS only functionality; disable by default */ +.btn-group.visibility, .btn-group.view, .btn-group.type-filter +{ + display: none; +} + +.visibility button +{ + height: 24px; +} + +div.element.constant h1, +i.icon-constant { background-image: url('../img/icons/constant.png'); } + +div.element.function h1, +i.icon-function { background-image: url('../img/icons/function.png'); } + +div.element.method h1, +i.icon-method { background-image: url('../img/icons/method.png'); } + +div.element.class h1, +i.icon-class { background-image: url('../img/icons/class.png'); } + +div.element.interface h1, +i.icon-interface { background-image: url('../img/icons/interface.png'); } + +div.element.trait h1, +i.icon-trait { background-image: url('../img/icons/trait.png'); } + +div.element.property h1, +i.icon-property { background-image: url('../img/icons/property.png'); } + +span.empty-namespace +{ + color: silver; +} + +footer +{ + text-align: right; + font-size: 0.8em; + opacity: 0.5; +} + +#mapHolder +{ + border: 4px solid #555; + padding: 0 !important; + overflow: hidden +} + +div.element div.subelement +{ + margin-left: 10px; + padding-bottom: 5px; + clear: both; +} + +pre code +{ + border: none; +} + +div.element div.subelement > code +{ + font-size: 0.8em; + float: left; + margin-right: 10px; + padding: 0 5px; + line-height: 16px; +} + +div.element div.subelement > p +{ + margin-left: 20px; + margin-right: 50px; +} + +div.element div.subelement h4 +{ + color: #666; + margin-bottom: 5px; +} + +div.element div.subelement.response +{ + padding-bottom: 15px; + margin-right: 50px; +} + +div.labels +{ + text-align: right; +} + +.nav-list .nav-header +{ + font-size: 13px; +} + +.nav-list .nav-header .side-nav-header +{ + font-weight: bold; + line-height: 18px; + color: #999999; + text-transform: uppercase; +} + +.detail-description code { + white-space: pre; + display: inline-block; + padding: 10px; +} + +.go_to_top +{ + float: right; + margin-right: 20px; + background: #2C2C2C; + color: #999; + padding: 3px 10px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + line-height: 19px; +} + +.visibility .btn { + text-transform: uppercase; + font-size: 0.7em; + font-weight: bold; +} + +.iviewer_common +{ + z-index: 100; +} + +@media (min-width: 980px) +{ + a[name] + { + margin-top: -50px; + position: absolute; + } +} + +@media (min-width: 1200px) +{ + .method .span4 + { + width: 345px; + } +} + +/* redefined because twitter bootstrap assumes that bootstrap-responsive.css */ +@media (max-width: 980px) +{ + body + { + padding-top: 0; + } + + .go_to_top + { + display: none; + } + + .btn-group.visibility + { + font-size: 0.80em; + margin-bottom: 7px; + display: inline-block; + float: right; + } +} + +@media (max-width: 768px) +{ + .hero-unit h1 { + font-size: 30px; + } + .hero-unit h2 { + font-size: 19px; + } + +} +@media (min-width: 768px) and (max-width: 980px) +{ + .method .span4 + { + width: 203px; + } +} diff --git a/aliyun-log-php-sdk-master/docs/deprecated.html b/aliyun-log-php-sdk-master/docs/deprecated.html new file mode 100644 index 0000000..98e882e --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/deprecated.html @@ -0,0 +1,126 @@ + + + + + + » Deprecated elements + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + +
+
No deprecated elements have been found in this project.
+
+
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/errors.html b/aliyun-log-php-sdk-master/docs/errors.html new file mode 100644 index 0000000..e5a6fff --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/errors.html @@ -0,0 +1,6512 @@ + + + + + + » Compilation errors + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + +
+ +
+ + + +
+ +

+ + Models/GetMachineGroupResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error32No summary for method getMachineGroup()
error17No summary for property $machineGroup
+
+
+
+ +

+ + Models/GetMachineResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error34No summary for method getMachine()
error16No summary for property $machine
+
+
+
+ +

+ + Models/ListTopicsRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/GetACLRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_GetACLRequest
error21Argument $aclId is missing from the Docblock of __construct
error24No summary for method getAclId()
error27Argument $aclId is missing from the Docblock of setAclId
error27No summary for method setAclId()
error16No summary for property $aclId
+
+
+
+ +

+ + Models/DeleteACLResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/DeleteLogstoreRequest.php + 4 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error22Argument $logstore is missing from the Docblock of __construct
error26No summary for method getLogstore()
error16No summary for property $logstore
+
+
+
+ +

+ + Models/CreateACLRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_CreateACLRequest
error21Argument $acl is missing from the Docblock of __construct
error25No summary for method getAcl()
error28Argument $acl is missing from the Docblock of setAcl
error28No summary for method setAcl()
error16No summary for property $acl
+
+
+
+ +

+ + Models/GetConfigRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_GetConfigRequest
error22Argument $configName is missing from the Docblock of __construct
error26No summary for method getConfigName()
error30Argument $configName is missing from the Docblock of setConfigName
error30No summary for method setConfigName()
error16No summary for property $configName
+
+
+
+ +

+ + Models/PutLogsResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/Config.php + 72 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error64No summary for class \Aliyun_Log_Models_Config_OutputDetail
error82No summary for class \Aliyun_Log_Models_Config
error20Argument $filePattern is missing from the Docblock of __construct
error20Argument $key is missing from the Docblock of __construct
error20Argument $localStorage is missing from the Docblock of __construct
error20Argument $logBeginRegex is missing from the Docblock of __construct
error20Argument $logPath is missing from the Docblock of __construct
error20Argument $logType is missing from the Docblock of __construct
error20Argument $regex is missing from the Docblock of __construct
error20Argument $timeFormat is missing from the Docblock of __construct
error20Argument $filterRegex is missing from the Docblock of __construct
error20Argument $filterKey is missing from the Docblock of __construct
error20Argument $topicFormat is missing from the Docblock of __construct
error20No summary for method __construct()
error36No summary for method toArray()
error8No summary for property $filePattern
error9No summary for property $key
error10No summary for property $localStorage
error11No summary for property $logBeginRegex
error12No summary for property $logPath
error13No summary for property $logType
error14No summary for property $regex
error15No summary for property $timeFormat
error16No summary for property $filterRegex
error17No summary for property $filterKey
error18No summary for property $topicFormat
error68Argument $projectName is missing from the Docblock of __construct
error68Argument $logstoreName is missing from the Docblock of __construct
error68No summary for method __construct()
error72No summary for method toArray()
error65No summary for property $projectName
error66No summary for property $logstoreName
error93Argument $configName is missing from the Docblock of __construct
error93Argument $inputType is missing from the Docblock of __construct
error93Argument $inputDetail is missing from the Docblock of __construct
error93Argument $outputType is missing from the Docblock of __construct
error93Argument $outputDetail is missing from the Docblock of __construct
error93Argument $createTime is missing from the Docblock of __construct
error93Argument $lastModifyTime is missing from the Docblock of __construct
error93No summary for method __construct()
error105No summary for method getConfigName()
error108Argument $configName is missing from the Docblock of setConfigName
error108No summary for method setConfigName()
error111No summary for method getInputType()
error114Argument $inputType is missing from the Docblock of setInputType
error114No summary for method setInputType()
error117No summary for method getInputDetail()
error120Argument $inputDetail is missing from the Docblock of setInputDetail
error120No summary for method setInputDetail()
error123No summary for method getOutputType()
error126Argument $outputType is missing from the Docblock of setOutputType
error126No summary for method setOutputType()
error129No summary for method getOutputDetail()
error132Argument $outputDetail is missing from the Docblock of setOutputDetail
error132No summary for method setOutputDetail()
error135No summary for method getCreateTime()
error138Argument $createTime is missing from the Docblock of setCreateTime
error138No summary for method setCreateTime()
error142No summary for method getLastModifyTime()
error145Argument $lastModifyTime is missing from the Docblock of setLastModifyTime
error145No summary for method setLastModifyTime()
error149No summary for method toArray()
error168Argument $resp is missing from the Docblock of setFromArray
error168No summary for method setFromArray()
error84No summary for property $configName
error85No summary for property $inputType
error86No summary for property $inputDetail
error87No summary for property $outputType
error88No summary for property $outputDetail
error90No summary for property $createTime
error91No summary for property $lastModifyTime
+
+
+
+ +

+ + Models/GetMachineGroupRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_GetMachineGroupRequest
error21Argument $groupName is missing from the Docblock of __construct
error24No summary for method getGroupName()
error27Argument $groupName is missing from the Docblock of setGroupName
error27No summary for method setGroupName()
error16No summary for property $groupName
+
+
+
+ +

+ + Models/ListMachineGroupsRequest.php + 17 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_ListMachineGroupsRequest
error24Argument $groupName is missing from the Docblock of __construct
error24Argument $offset is missing from the Docblock of __construct
error24Argument $size is missing from the Docblock of __construct
error30No summary for method getGroupName()
error34Argument $groupName is missing from the Docblock of setGroupName
error34No summary for method setGroupName()
error38No summary for method getOffset()
error42Argument $offset is missing from the Docblock of setOffset
error42No summary for method setOffset()
error46No summary for method getSize()
error50Argument $size is missing from the Docblock of setSize
error50No summary for method setSize()
error16No summary for property $groupName
error17No summary for property $offset
error18No summary for property $size
+
+
+
+ +

+ + Models/UpdateLogstoreResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + log.proto.php + 153 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error6No summary for class \Log_Content
error129No summary for class \Log
error243No summary for class \LogGroup
error428No summary for class \LogPackage
error542No summary for class \LogPackageList
error9Argument $in is missing from the Docblock of __construct
error9Argument $limit is missing from the Docblock of __construct
error9No summary for method __construct()
error24Argument $fp is missing from the Docblock of read
error24Argument $limit is missing from the Docblock of read
error24No summary for method read()
error68Argument $fp is missing from the Docblock of write
error68No summary for method write()
error83No summary for method size()
error96No summary for method validateRequired()
error102No summary for method __toString()
error112No summary for method clearKey()
error113No summary for method hasKey()
error114No summary for method getKey()
error115Argument $value is missing from the Docblock of setKey
error115No summary for method setKey()
error120No summary for method clearValue()
error121No summary for method hasValue()
error122No summary for method getValue()
error123Argument $value is missing from the Docblock of setValue
error123No summary for method setValue()
error7No summary for property $_unknown
error111No summary for property $key_
error119No summary for property $value_
error132Argument $in is missing from the Docblock of __construct
error132Argument $limit is missing from the Docblock of __construct
error132No summary for method __construct()
error147Argument $fp is missing from the Docblock of read
error147Argument $limit is missing from the Docblock of read
error147No summary for method read()
error180Argument $fp is missing from the Docblock of write
error180No summary for method write()
error195No summary for method size()
error208No summary for method validateRequired()
error213No summary for method __toString()
error223No summary for method clearTime()
error224No summary for method hasTime()
error225No summary for method getTime()
error226Argument $value is missing from the Docblock of setTime
error226No summary for method setTime()
error231No summary for method clearContents()
error232No summary for method getContentsCount()
error233Argument $index is missing from the Docblock of getContents
error233No summary for method getContents()
error234No summary for method getContentsArray()
error235Argument $index is missing from the Docblock of setContents
error235Argument $value is missing from the Docblock of setContents
error235No summary for method setContents()
error236Argument $value is missing from the Docblock of addContents
error236No summary for method addContents()
error237Argument $values is missing from the Docblock of addAllContents
error237No summary for method addAllContents()
error130No summary for property $_unknown
error222No summary for property $time_
error230No summary for property $contents_
error246Argument $in is missing from the Docblock of __construct
error246Argument $limit is missing from the Docblock of __construct
error246No summary for method __construct()
error261Argument $fp is missing from the Docblock of read
error261Argument $limit is missing from the Docblock of read
error261No summary for method read()
error328Argument $fp is missing from the Docblock of write
error328No summary for method write()
error354No summary for method size()
error376No summary for method validateRequired()
error380No summary for method __toString()
error392No summary for method clearLogs()
error393No summary for method getLogsCount()
error394Argument $index is missing from the Docblock of getLogs
error394No summary for method getLogs()
error395No summary for method getLogsArray()
error396Argument $index is missing from the Docblock of setLogs
error396Argument $value is missing from the Docblock of setLogs
error396No summary for method setLogs()
error397Argument $value is missing from the Docblock of addLogs
error397No summary for method addLogs()
error398Argument $values is missing from the Docblock of addAllLogs
error398No summary for method addAllLogs()
error403No summary for method clearReserved()
error404No summary for method hasReserved()
error405No summary for method getReserved()
error406Argument $value is missing from the Docblock of setReserved
error406No summary for method setReserved()
error411No summary for method clearTopic()
error412No summary for method hasTopic()
error413No summary for method getTopic()
error414Argument $value is missing from the Docblock of setTopic
error414No summary for method setTopic()
error419No summary for method clearSource()
error420No summary for method hasSource()
error421No summary for method getSource()
error422Argument $value is missing from the Docblock of setSource
error422No summary for method setSource()
error244No summary for property $_unknown
error391No summary for property $logs_
error402No summary for property $reserved_
error410No summary for property $topic_
error418No summary for property $source_
error431Argument $in is missing from the Docblock of __construct
error431Argument $limit is missing from the Docblock of __construct
error431No summary for method __construct()
error446Argument $fp is missing from the Docblock of read
error446Argument $limit is missing from the Docblock of read
error446No summary for method read()
error484Argument $fp is missing from the Docblock of write
error484No summary for method write()
error498No summary for method size()
error510No summary for method validateRequired()
error515No summary for method __toString()
error525No summary for method clearData()
error526No summary for method hasData()
error527No summary for method getData()
error528Argument $value is missing from the Docblock of setData
error528No summary for method setData()
error533No summary for method clearUncompressSize()
error534No summary for method hasUncompressSize()
error535No summary for method getUncompressSize()
error536Argument $value is missing from the Docblock of setUncompressSize
error536No summary for method setUncompressSize()
error429No summary for property $_unknown
error524No summary for property $data_
error532No summary for property $uncompressSize_
error545Argument $in is missing from the Docblock of __construct
error545Argument $limit is missing from the Docblock of __construct
error545No summary for method __construct()
error560Argument $fp is missing from the Docblock of read
error560Argument $limit is missing from the Docblock of read
error560No summary for method read()
error585Argument $fp is missing from the Docblock of write
error585No summary for method write()
error596No summary for method size()
error606No summary for method validateRequired()
error610No summary for method __toString()
error619No summary for method clearPackages()
error620No summary for method getPackagesCount()
error621Argument $index is missing from the Docblock of getPackages
error621No summary for method getPackages()
error622No summary for method getPackagesArray()
error623Argument $index is missing from the Docblock of setPackages
error623Argument $value is missing from the Docblock of setPackages
error623No summary for method setPackages()
error624Argument $value is missing from the Docblock of addPackages
error624No summary for method addPackages()
error625Argument $values is missing from the Docblock of addAllPackages
error625No summary for method addAllPackages()
error543No summary for property $_unknown
error618No summary for property $packages_
+
+
+
+ +

+ + protocolbuffers.inc.php + 63 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error3No summary for class \ProtobufEnum
error14No summary for class \ProtobufMessage
error5Argument $value is missing from the Docblock of toString
error5No summary for method toString()
error16Argument $fp is missing from the Docblock of __construct
error16Argument $limit is missing from the Docblock of __construct
error16No summary for method __construct()
error69Argument $wire_type is missing from the Docblock of get_wiretype
error84Argument $i is missing from the Docblock of size_varint
error117Argument $fp is missing from the Docblock of read_varint
error117Argument $limit is missing from the Docblock of read_varint
error150Argument $fp is missing from the Docblock of read_double
error150No summary for method read_double()
error151Argument $fp is missing from the Docblock of read_float
error151No summary for method read_float()
error152Argument $fp is missing from the Docblock of read_uint64
error152No summary for method read_uint64()
error153Argument $fp is missing from the Docblock of read_int64
error153No summary for method read_int64()
error154Argument $fp is missing from the Docblock of read_uint32
error154No summary for method read_uint32()
error155Argument $fp is missing from the Docblock of read_int32
error155No summary for method read_int32()
error156Argument $fp is missing from the Docblock of read_zint32
error156No summary for method read_zint32()
error157Argument $fp is missing from the Docblock of read_zint64
error157No summary for method read_zint64()
error184Argument $fp is missing from the Docblock of write_double
error184Argument $d is missing from the Docblock of write_double
error184No summary for method write_double()
error185Argument $fp is missing from the Docblock of write_float
error185Argument $f is missing from the Docblock of write_float
error185No summary for method write_float()
error186Argument $fp is missing from the Docblock of write_uint64
error186Argument $i is missing from the Docblock of write_uint64
error186No summary for method write_uint64()
error187Argument $fp is missing from the Docblock of write_int64
error187Argument $i is missing from the Docblock of write_int64
error187No summary for method write_int64()
error188Argument $fp is missing from the Docblock of write_uint32
error188Argument $i is missing from the Docblock of write_uint32
error188No summary for method write_uint32()
error189Argument $fp is missing from the Docblock of write_int32
error189Argument $i is missing from the Docblock of write_int32
error189No summary for method write_int32()
error190Argument $fp is missing from the Docblock of write_zint32
error190Argument $i is missing from the Docblock of write_zint32
error190No summary for method write_zint32()
error191Argument $fp is missing from the Docblock of write_zint64
error191Argument $i is missing from the Docblock of write_zint64
error191No summary for method write_zint64()
error196Argument $fp is missing from the Docblock of skip_varint
error210Argument $fp is missing from the Docblock of skip_field
error210Argument $wire_type is missing from the Docblock of skip_field
error245Argument $fp is missing from the Docblock of read_field
error245Argument $wire_type is missing from the Docblock of read_field
error245Argument $limit is missing from the Docblock of read_field
error280Argument $key is missing from the Docblock of toString
error280Argument $value is missing from the Docblock of toString
error280No summary for method toString()
error277No summary for property $indent_char
error278No summary for property $print_limit
+
+
+
+ +

+ + Models/ListConfigsResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/CreateMachineGroupRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_CreateMachineGroupRequest
error21Argument $machineGroup is missing from the Docblock of __construct
error24No summary for method getMachineGroup()
error27Argument $machineGroup is missing from the Docblock of setMachineGroup
error27No summary for method setMachineGroup()
error16No summary for property $machineGroup
+
+
+
+ +

+ + Models/BatchGetLogsResponse.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error38No summary for method getLogPackageList()
error42No summary for method getNextCursor()
error46No summary for method getCount()
error50Argument $index is missing from the Docblock of getLogPackage
error50No summary for method getLogPackage()
error59No summary for method getLogGroupList()
error63Argument $index is missing from the Docblock of getLogGroup
error63No summary for method getLogGroup()
error21No summary for property $nextCursor
+
+
+
+ +

+ + Models/GetCursorRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/GetConfigResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error33No summary for method getConfig()
error17No summary for property $config
+
+
+
+ +

+ + Models/GetLogsResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListConfigsRequest.php + 17 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_ListConfigsRequest
error24Argument $configName is missing from the Docblock of __construct
error24Argument $offset is missing from the Docblock of __construct
error24Argument $size is missing from the Docblock of __construct
error31No summary for method getConfigName()
error35Argument $configName is missing from the Docblock of setConfigName
error35No summary for method setConfigName()
error39No summary for method getOffset()
error43Argument $offset is missing from the Docblock of setOffset
error43No summary for method setOffset()
error47No summary for method getSize()
error51Argument $size is missing from the Docblock of setSize
error51No summary for method setSize()
error16No summary for property $configName
error17No summary for property $offset
error18No summary for property $size
+
+
+
+ +

+ + Models/UpdateACLRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_UpdateACLRequest
error21Argument $acl is missing from the Docblock of __construct
error25No summary for method getAcl()
error28Argument $acl is missing from the Docblock of setAcl
error28No summary for method setAcl()
error16No summary for property $acl
+
+
+
+ +

+ + Models/ListMachineGroupsResponse.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error34No summary for method getOffset()
error38No summary for method getSize()
error42No summary for method getMachineGroups()
error16No summary for property $offset
error17No summary for property $size
error18No summary for property $machineGroups
+
+
+
+ +

+ + Models/CreateConfigRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_CreateConfigRequest
error22Argument $config is missing from the Docblock of __construct
error26No summary for method getConfig()
error31Argument $config is missing from the Docblock of setConfig
error31No summary for method setConfig()
error16No summary for property $config
+
+
+
+ +

+ + Models/ListTopicsResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+
+
+
+
+ +

+ + Models/UpdateLogstoreRequest.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error24Argument $logstore is missing from the Docblock of __construct
error24Argument $ttl is missing from the Docblock of __construct
error24Argument $shardCount is missing from the Docblock of __construct
error30No summary for method getLogstore()
error34No summary for method getTtl()
error38No summary for method getShardCount()
error16No summary for property $logstore
error17No summary for property $ttl
error18No summary for property $shardCount
+
+
+
+ +

+ + Models/Machine.php + 60 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error51No summary for class \Aliyun_Log_Models_Machine_Status
error71No summary for class \Aliyun_Log_Models_Machine
error12Argument $ip is missing from the Docblock of __construct
error12Argument $os is missing from the Docblock of __construct
error12Argument $hostName is missing from the Docblock of __construct
error12No summary for method __construct()
error18No summary for method getIp()
error21Argument $ip is missing from the Docblock of setIp
error21No summary for method setIp()
error26No summary for method getOs()
error29Argument $os is missing from the Docblock of setOs
error29No summary for method setOs()
error33No summary for method getHostName()
error36Argument $hostname is missing from the Docblock of setHostName
error36No summary for method setHostName()
error39No summary for method toArray()
error8No summary for property $ip
error9No summary for property $os
error10No summary for property $hostName
error55Argument $binaryCurVersion is missing from the Docblock of __construct
error55Argument $binaryDeployVersion is missing from the Docblock of __construct
error55No summary for method __construct()
error60No summary for method toArray()
error52No summary for property $binaryCurVersion
error53No summary for property $binaryDeployVersion
error80Argument $uuid is missing from the Docblock of __construct
error80Argument $lastHeartbeatTime is missing from the Docblock of __construct
error80Argument $info is missing from the Docblock of __construct
error80Argument $status is missing from the Docblock of __construct
error80Argument $createTime is missing from the Docblock of __construct
error80Argument $lastModifyTime is missing from the Docblock of __construct
error80No summary for method __construct()
error91No summary for method getUuid()
error94Argument $uuid is missing from the Docblock of setUuid
error94No summary for method setUuid()
error97No summary for method getLastHeartbeatTime()
error100Argument $lastHeartbeatTime is missing from the Docblock of setLastHeartbeatTime
error100No summary for method setLastHeartbeatTime()
error103No summary for method getInfo()
error106Argument $info is missing from the Docblock of setInfo
error106No summary for method setInfo()
error109No summary for method getStatus()
error112Argument $status is missing from the Docblock of setStatus
error112No summary for method setStatus()
error116No summary for method getCreateTime()
error119Argument $createTime is missing from the Docblock of setCreateTime
error119No summary for method setCreateTime()
error122No summary for method getLastModifyTime()
error125Argument $lastModifyTime is missing from the Docblock of setLastModifyTime
error125No summary for method setLastModifyTime()
error129No summary for method toArray()
error146Argument $resp is missing from the Docblock of setFromArray
error146No summary for method setFromArray()
error72No summary for property $uuid
error73No summary for property $lastHeartbeatTime
error74No summary for property $info
error75No summary for property $status
error77No summary for property $createTime
error78No summary for property $lastModifyTime
+
+
+
+ +

+ + Models/CompressedLogGroup.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error28Argument $time is missing from the Docblock of __construct
error28Argument $contents is missing from the Docblock of __construct
error28No summary for method __construct()
+
+
+
+ +

+ + Models/RemoveConfigFromMachineGroupResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListLogstoresRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/RemoveConfigFromMachineGroupRequest.php + 12 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest
error22Argument $groupName is missing from the Docblock of __construct
error22Argument $configName is missing from the Docblock of __construct
error26No summary for method getGroupName()
error29Argument $groupName is missing from the Docblock of setGroupName
error29No summary for method setGroupName()
error33No summary for method getConfigName()
error36Argument $configName is missing from the Docblock of setConfigName
error36No summary for method setConfigName()
error15No summary for property $groupName
error16No summary for property $configName
+
+
+
+ +

+ + Models/UpdateConfigRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_UpdateConfigRequest
error21Argument $config is missing from the Docblock of __construct
error25No summary for method getConfig()
error29Argument $config is missing from the Docblock of setConfig
error29No summary for method setConfig()
error16No summary for property $config
+
+
+
+ +

+ + Models/MachineGroup.php + 42 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error24No summary for class \Aliyun_Log_Models_MachineGroup
error10Argument $externalName is missing from the Docblock of __construct
error10Argument $groupTopic is missing from the Docblock of __construct
error10No summary for method __construct()
error14No summary for method toArray()
error8No summary for property $externalName
error9No summary for property $groupTopic
error33Argument $groupName is missing from the Docblock of __construct
error33Argument $groupType is missing from the Docblock of __construct
error33Argument $groupAttribute is missing from the Docblock of __construct
error33Argument $machineList is missing from the Docblock of __construct
error33Argument $createTime is missing from the Docblock of __construct
error33Argument $lastModifyTime is missing from the Docblock of __construct
error33No summary for method __construct()
error43No summary for method getGroupName()
error46Argument $groupName is missing from the Docblock of setGroupName
error46No summary for method setGroupName()
error49No summary for method getGroupType()
error52Argument $groupType is missing from the Docblock of setGroupType
error52No summary for method setGroupType()
error55No summary for method getGroupAttribute()
error58Argument $groupAttribute is missing from the Docblock of setGroupAttribute
error58No summary for method setGroupAttribute()
error61No summary for method getMachineList()
error64Argument $machineList is missing from the Docblock of setMachineList
error64No summary for method setMachineList()
error67No summary for method getCreateTime()
error70Argument $createTime is missing from the Docblock of setCreateTime
error70No summary for method setCreateTime()
error73No summary for method getLastModifyTime()
error76Argument $lastModifyTime is missing from the Docblock of setLastModifyTime
error76No summary for method setLastModifyTime()
error80No summary for method toArray()
error102Argument $resp is missing from the Docblock of setFromArray
error102No summary for method setFromArray()
error25No summary for property $groupName
error26No summary for property $groupType
error27No summary for property $groupAttribute
error28No summary for property $machineList
error30No summary for property $createTime
error31No summary for property $lastModifyTime
+
+
+
+ +

+ + Models/PutLogsRequest.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error56Argument $shardKey is missing from the Docblock of __construct
+
+
+
+ +

+ + Models/CreateLogstoreResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + sls.proto.php + 128 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error6No summary for class \Log_Content
error129No summary for class \Log
error243No summary for class \LogGroup
error428No summary for class \LogGroupList
error9Argument $in is missing from the Docblock of __construct
error9Argument $limit is missing from the Docblock of __construct
error9No summary for method __construct()
error24Argument $fp is missing from the Docblock of read
error24Argument $limit is missing from the Docblock of read
error24No summary for method read()
error68Argument $fp is missing from the Docblock of write
error68No summary for method write()
error83No summary for method size()
error96No summary for method validateRequired()
error102No summary for method __toString()
error112No summary for method clearKey()
error113No summary for method hasKey()
error114No summary for method getKey()
error115Argument $value is missing from the Docblock of setKey
error115No summary for method setKey()
error120No summary for method clearValue()
error121No summary for method hasValue()
error122No summary for method getValue()
error123Argument $value is missing from the Docblock of setValue
error123No summary for method setValue()
error7No summary for property $_unknown
error111No summary for property $key_
error119No summary for property $value_
error132Argument $in is missing from the Docblock of __construct
error132Argument $limit is missing from the Docblock of __construct
error132No summary for method __construct()
error147Argument $fp is missing from the Docblock of read
error147Argument $limit is missing from the Docblock of read
error147No summary for method read()
error180Argument $fp is missing from the Docblock of write
error180No summary for method write()
error195No summary for method size()
error208No summary for method validateRequired()
error213No summary for method __toString()
error223No summary for method clearTime()
error224No summary for method hasTime()
error225No summary for method getTime()
error226Argument $value is missing from the Docblock of setTime
error226No summary for method setTime()
error231No summary for method clearContents()
error232No summary for method getContentsCount()
error233Argument $index is missing from the Docblock of getContents
error233No summary for method getContents()
error234No summary for method getContentsArray()
error235Argument $index is missing from the Docblock of setContents
error235Argument $value is missing from the Docblock of setContents
error235No summary for method setContents()
error236Argument $value is missing from the Docblock of addContents
error236No summary for method addContents()
error237Argument $values is missing from the Docblock of addAllContents
error237No summary for method addAllContents()
error130No summary for property $_unknown
error222No summary for property $time_
error230No summary for property $contents_
error246Argument $in is missing from the Docblock of __construct
error246Argument $limit is missing from the Docblock of __construct
error246No summary for method __construct()
error261Argument $fp is missing from the Docblock of read
error261Argument $limit is missing from the Docblock of read
error261No summary for method read()
error328Argument $fp is missing from the Docblock of write
error328No summary for method write()
error354No summary for method size()
error376No summary for method validateRequired()
error380No summary for method __toString()
error392No summary for method clearLogs()
error393No summary for method getLogsCount()
error394Argument $index is missing from the Docblock of getLogs
error394No summary for method getLogs()
error395No summary for method getLogsArray()
error396Argument $index is missing from the Docblock of setLogs
error396Argument $value is missing from the Docblock of setLogs
error396No summary for method setLogs()
error397Argument $value is missing from the Docblock of addLogs
error397No summary for method addLogs()
error398Argument $values is missing from the Docblock of addAllLogs
error398No summary for method addAllLogs()
error403No summary for method clearCategory()
error404No summary for method hasCategory()
error405No summary for method getCategory()
error406Argument $value is missing from the Docblock of setCategory
error406No summary for method setCategory()
error411No summary for method clearTopic()
error412No summary for method hasTopic()
error413No summary for method getTopic()
error414Argument $value is missing from the Docblock of setTopic
error414No summary for method setTopic()
error419No summary for method clearSource()
error420No summary for method hasSource()
error421No summary for method getSource()
error422Argument $value is missing from the Docblock of setSource
error422No summary for method setSource()
error244No summary for property $_unknown
error391No summary for property $logs_
error402No summary for property $category_
error410No summary for property $topic_
error418No summary for property $source_
error431Argument $in is missing from the Docblock of __construct
error431Argument $limit is missing from the Docblock of __construct
error431No summary for method __construct()
error446Argument $fp is missing from the Docblock of read
error446Argument $limit is missing from the Docblock of read
error446No summary for method read()
error471Argument $fp is missing from the Docblock of write
error471No summary for method write()
error482No summary for method size()
error492No summary for method validateRequired()
error496No summary for method __toString()
error505No summary for method clearLogGroupList()
error506No summary for method getLogGroupListCount()
error507Argument $index is missing from the Docblock of getLogGroupList
error507No summary for method getLogGroupList()
error508No summary for method getLogGroupListArray()
error509Argument $index is missing from the Docblock of setLogGroupList
error509Argument $value is missing from the Docblock of setLogGroupList
error509No summary for method setLogGroupList()
error510Argument $value is missing from the Docblock of addLogGroupList
error510No summary for method addLogGroupList()
error511Argument $values is missing from the Docblock of addAllLogGroupList
error511No summary for method addAllLogGroupList()
error429No summary for property $_unknown
error504No summary for property $logGroupList_
+
+
+
+ +

+ + Models/CreateConfigResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListACLsResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error39No summary for method getAcls()
error17No summary for property $acls
+
+
+
+ +

+ + Models/GetHistogramsRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListLogstoresResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListACLsRequest.php + 17 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_ListACLsRequest
error24Argument $principleId is missing from the Docblock of __construct
error24Argument $offset is missing from the Docblock of __construct
error24Argument $size is missing from the Docblock of __construct
error30No summary for method getOffset()
error33Argument $offset is missing from the Docblock of setOffset
error33No summary for method setOffset()
error37No summary for method getSize()
error40Argument $size is missing from the Docblock of setSize
error40No summary for method setSize()
error44No summary for method getPrincipleId()
error47Argument $principleId is missing from the Docblock of setPrincipleId
error47No summary for method setPrincipleId()
error16No summary for property $offset
error17No summary for property $size
error18No summary for property $principleId
+
+
+
+ +

+ + Models/DeleteLogstoreResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/CreateACLResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error29No summary for method getAclId()
error16No summary for property $aclId
+
+
+
+
+
+ +

+ + Models/DeleteConfigResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/UpdateACLResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/DeleteMachineGroupResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/UpdateMachineGroupResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/CreateMachineGroupResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ApplyConfigToMachineGroupRequest.php + 12 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_ApplyConfigToMachineGroupRequest
error21Argument $groupName is missing from the Docblock of __construct
error21Argument $configName is missing from the Docblock of __construct
error25No summary for method getGroupName()
error28Argument $groupName is missing from the Docblock of setGroupName
error28No summary for method setGroupName()
error32No summary for method getConfigName()
error35Argument $configName is missing from the Docblock of setConfigName
error35No summary for method setConfigName()
error15No summary for property $groupName
error16No summary for property $configName
+
+
+
+ +

+ + Exception.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error16No summary for property $requestId
+
+
+
+ +

+ + requestcore.class.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+
+
+ +

+ + Models/DeleteConfigRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_DeleteConfigRequest
error21Argument $configName is missing from the Docblock of __construct
error25No summary for method getConfigName()
error29Argument $configName is missing from the Docblock of setConfigName
error29No summary for method setConfigName()
error16No summary for property $configName
+
+
+
+ +

+ + Models/UpdateConfigResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ListShardsResponse.php + 4 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error35No summary for method getShardIds()
error38No summary for method getShards()
error17No summary for property $shardIds
+
+
+
+ +

+ + Util.php + 17 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error61Argument $gonten is missing from the Docblock of isIp
error74Argument $value is missing from the Docblock of calMD5
error83Argument $content is missing from the Docblock of hmacSHA1
error83Argument $key is missing from the Docblock of hmacSHA1
error93Argument $logGroup is missing from the Docblock of toBytes
error132Argument $value is missing from the Docblock of urlEncodeValue
error141Argument $params is missing from the Docblock of urlEncode
error161Argument $header is missing from the Docblock of canonicalizedLOGHeaders
error181Argument $resource is missing from the Docblock of canonicalizedResource
error181Argument $params is missing from the Docblock of canonicalizedResource
error203Argument $method is missing from the Docblock of getRequestAuthorization
error203Argument $resource is missing from the Docblock of getRequestAuthorization
error203Argument $key is missing from the Docblock of getRequestAuthorization
error203Argument $stsToken is missing from the Docblock of getRequestAuthorization
error203Argument $params is missing from the Docblock of getRequestAuthorization
error203Argument $headers is missing from the Docblock of getRequestAuthorization
+
+
+
+ +

+ + Models/GetMachineRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_GetMachineRequest
error22Argument $uuid is missing from the Docblock of __construct
error26No summary for method getUuid()
error30Argument $uuid is missing from the Docblock of setUuid
error30No summary for method setUuid()
error16No summary for property $uuid
+
+
+
+ +

+ + Models/GetHistogramsResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/ACL.php + 40 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error17Argument $principleType is missing from the Docblock of __construct
error17Argument $principleId is missing from the Docblock of __construct
error17Argument $object is missing from the Docblock of __construct
error17Argument $privilege is missing from the Docblock of __construct
error17Argument $aclId is missing from the Docblock of __construct
error17Argument $createTime is missing from the Docblock of __construct
error17Argument $lastModifyTime is missing from the Docblock of __construct
error17No summary for method __construct()
error29No summary for method getPrincipleType()
error32Argument $principleType is missing from the Docblock of setPrincipleType
error32No summary for method setPrincipleType()
error36No summary for method getPrincipleId()
error39Argument $principleId is missing from the Docblock of setPrincipleId
error39No summary for method setPrincipleId()
error43No summary for method getObject()
error46Argument $object is missing from the Docblock of setObject
error46No summary for method setObject()
error49No summary for method getPrivilege()
error52Argument $privilege is missing from the Docblock of setPrivilege
error52No summary for method setPrivilege()
error55No summary for method getAclId()
error58Argument $aclId is missing from the Docblock of setAclId
error58No summary for method setAclId()
error61No summary for method getCreateTime()
error64Argument $createTime is missing from the Docblock of setCreateTime
error64No summary for method setCreateTime()
error67No summary for method getLastModifyTime()
error70Argument $lastModifyTime is missing from the Docblock of setLastModifyTime
error70No summary for method setLastModifyTime()
error74No summary for method toArray()
error93Argument $resp is missing from the Docblock of setFromArray
error93No summary for method setFromArray()
error8No summary for property $principleType
error9No summary for property $principleId
error10No summary for property $object
error11No summary for property $privilege
error12No summary for property $aclId
error14No summary for property $createTime
error15No summary for property $lastModifyTime
+
+
+
+ +

+ + Models/GetLogsRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Client.php + 58 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error76Argument $token is missing from the Docblock of __construct
error83Argument $endpoint is missing from the Docblock of setEndpoint
error83No summary for method setEndpoint()
error120Argument $resBody is missing from the Docblock of parseToJson
error120Argument $requestId is missing from the Docblock of parseToJson
error134Argument $method is missing from the Docblock of getHttpResponse
error134Argument $url is missing from the Docblock of getHttpResponse
error134Argument $body is missing from the Docblock of getHttpResponse
error134Argument $headers is missing from the Docblock of getHttpResponse
error134No summary for method getHttpResponse()
error154Argument $method is missing from the Docblock of sendRequest
error154Argument $url is missing from the Docblock of sendRequest
error154Argument $body is missing from the Docblock of sendRequest
error154Argument $headers is missing from the Docblock of sendRequest
error154No summary for method sendRequest()
error188Argument $method is missing from the Docblock of send
error188Argument $project is missing from the Docblock of send
error188Argument $body is missing from the Docblock of send
error188Argument $resource is missing from the Docblock of send
error188Argument $params is missing from the Docblock of send
error188Argument $headers is missing from the Docblock of send
error188No summary for method send()
error623Argument $request is missing from the Docblock of createConfig
error623No summary for method createConfig()
error636Argument $request is missing from the Docblock of updateConfig
error636No summary for method updateConfig()
error651Argument $request is missing from the Docblock of getConfig
error651No summary for method getConfig()
error664Argument $request is missing from the Docblock of deleteConfig
error664No summary for method deleteConfig()
error673Argument $request is missing from the Docblock of listConfigs
error673No summary for method listConfigs()
error688Argument $request is missing from the Docblock of createMachineGroup
error688No summary for method createMachineGroup()
error702Argument $request is missing from the Docblock of updateMachineGroup
error702No summary for method updateMachineGroup()
error717Argument $request is missing from the Docblock of getMachineGroup
error717No summary for method getMachineGroup()
error730Argument $request is missing from the Docblock of deleteMachineGroup
error730No summary for method deleteMachineGroup()
error740Argument $request is missing from the Docblock of listMachineGroups
error740No summary for method listMachineGroups()
error756Argument $request is missing from the Docblock of applyConfigToMachineGroup
error756No summary for method applyConfigToMachineGroup()
error767Argument $request is missing from the Docblock of removeConfigFromMachineGroup
error767No summary for method removeConfigFromMachineGroup()
error778Argument $request is missing from the Docblock of getMachine
error778No summary for method getMachine()
error791Argument $request is missing from the Docblock of createACL
error791No summary for method createACL()
error806Argument $request is missing from the Docblock of updateACL
error806No summary for method updateACL()
error821Argument $request is missing from the Docblock of getACL
error821No summary for method getACL()
error835Argument $request is missing from the Docblock of deleteACL
error835No summary for method deleteACL()
error844Argument $request is missing from the Docblock of listACLs
error844No summary for method listACLs()
+
+
+
+ +

+ + Models/GetACLResponse.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error35No summary for method getAcl()
error17No summary for property $acl
+
+
+
+ +

+ + Models/ListShardsRequest.php + 8 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_ListShardsRequest
error22Argument $project is missing from the Docblock of __construct
error22Argument $logstore is missing from the Docblock of __construct
error27No summary for method getLogstore()
error31Argument $logstore is missing from the Docblock of setLogstore
error31No summary for method setLogstore()
error16No summary for property $logstore
+
+
+
+ +

+ + Models/UpdateMachineGroupRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_UpdateMachineGroupRequest
error21Argument $machineGroup is missing from the Docblock of __construct
error25No summary for method getMachineGroup()
error29Argument $machineGroup is missing from the Docblock of setMachineGroup
error29No summary for method setMachineGroup()
error16No summary for property $machineGroup
+
+
+
+ +

+ + Models/LogItem.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error33The type hint of the argument is incorrect for the type definition of the @param tag with argument $time in __construct()
error33The type hint of the argument is incorrect for the type definition of the @param tag with argument $contents in __construct()
+
+
+
+ +

+ + Models/BatchGetLogsRequest.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/GetCursorResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/DeleteACLRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_DeleteACLRequest
error21Argument $aclId is missing from the Docblock of __construct
error24No summary for method getAclId()
error27Argument $aclId is missing from the Docblock of setAclId
error27No summary for method setAclId()
error16No summary for property $aclId
+
+
+
+ +

+ + Models/CreateLogstoreRequest.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error24Argument $logstore is missing from the Docblock of __construct
error24Argument $ttl is missing from the Docblock of __construct
error24Argument $shardCount is missing from the Docblock of __construct
error30No summary for method getLogstore()
error34No summary for method getTtl()
error38No summary for method getShardCount()
error16No summary for property $logstore
error17No summary for property $ttl
error18No summary for property $shardCount
+
+
+
+ +

+ + Models/ApplyConfigToMachineGroupResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+ +

+ + Models/DeleteMachineGroupRequest.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_DeleteMachineGroupRequest
error22Argument $groupName is missing from the Docblock of __construct
error26No summary for method getGroupName()
error30Argument $groupName is missing from the Docblock of setGroupName
error30No summary for method setGroupName()
error17No summary for property $groupName
+
+
+
+ +

+ + Models/Shard.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error47Argument $createTime is missing from the Docblock of __construct
+
+
+
+ +

+ + Models/DeleteShardRequest.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_DeleteShardRequest
error22Argument $project is missing from the Docblock of __construct
error22Argument $logstore is missing from the Docblock of __construct
error22Argument $shardId is missing from the Docblock of __construct
error28No summary for method getLogstore()
error32Argument $logstore is missing from the Docblock of setLogstore
error32No summary for method setLogstore()
error36No summary for method getShardId()
error16No summary for property $logstore
+
+
+
+ +

+ + Models/MergeShardsRequest.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_MergeShardsRequest
error22Argument $project is missing from the Docblock of __construct
error22Argument $logstore is missing from the Docblock of __construct
error22Argument $shardId is missing from the Docblock of __construct
error28No summary for method getLogstore()
error32Argument $logstore is missing from the Docblock of setLogstore
error32No summary for method setLogstore()
error36No summary for method getShardId()
error16No summary for property $logstore
+
+
+
+ +

+ + Models/SplitShardRequest.php + 12 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
error14No summary for class \Aliyun_Log_Models_SplitShardRequest
error22Argument $project is missing from the Docblock of __construct
error22Argument $logstore is missing from the Docblock of __construct
error22Argument $shardId is missing from the Docblock of __construct
error22Argument $midHash is missing from the Docblock of __construct
error29No summary for method getLogstore()
error33Argument $logstore is missing from the Docblock of setLogstore
error33No summary for method setLogstore()
error37No summary for method getShardId()
error40No summary for method getMidHash()
error16No summary for property $logstore
+
+
+
+ +

+ + Models/DeleteShardResponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error0No summary was found for this file
+
+
+
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/graph_class.html b/aliyun-log-php-sdk-master/docs/graph_class.html new file mode 100644 index 0000000..0867a7c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/graph_class.html @@ -0,0 +1,127 @@ + + + + + + LOG_PHP_SDK + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+
+
+
+ + + +
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/img/apple-touch-icon-114x114.png b/aliyun-log-php-sdk-master/docs/img/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..1506f6a668fbb2837c06b561895da248c310ac53 GIT binary patch literal 28338 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�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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/apple-touch-icon.png b/aliyun-log-php-sdk-master/docs/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d320cb5e1215894ef37cf8c6fd7a0085eba06f3 GIT binary patch literal 8358 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 LNHCv2rc(U_{c|km literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/glyphicons-halflings-white.png b/aliyun-log-php-sdk-master/docs/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..a20760bfde58d1c92cee95116059fba03c68d689 GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/arrow_down.png b/aliyun-log-php-sdk-master/docs/img/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..61505adc46d8fa4156d9b31831ebe6770f0e2757 GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qcLRmoAwA00G`fL_t(I%cWC2tJ+``e%^eL7t$KUBw$9t*+0;sKcG;!o#ftvQ=v=O zPEznkbn((fBwn}RP@zy12dlPS%uu3(Akjdnjb!m7Z{AKf?FH|p;Io_q=Wq_^JkLWo z=Qsxf&cxXRNV#0TVT@UX5OB_sBngrvNpr^7o%nCPR4T2dTrT%m)3hhWViEKC9B~|j zF^1#uh$Kmn&1OL6a}1fD2f7I*U{_szDuTQUi!ZOqfjWA01!nH;yA``w*%)K zs;Yug3Q-h6DTN>iAcUaZZvWhDHqV4=wffsM&FACsIL_zuX_G9=kR&O+_4XuD6w&YZ zlPHQVyWQ?u0DxMp_GP_Z-y9AHSe6Azl0XPax7|XPWh@p8ESJmcPN(zf4hxRsTn&fA zuar{gx(-1QAP9d+5=9YV7-BM+jB~l%>ytFDR;#zJ>#hvLKqiw(w{yPNyJ*ytHlGe^5w{<6H+p@P5DF!?G;MvWzec z5d^`9X0!S6zm#a(_8ZrA2b!kAG);J(_suYjSEqWV`y{Gq+Kbt2=5Dv!N1CQx)a!M2 sQpyjxu~Ml#WsK2AqtU(B3+LMT58IsRj2DXS7XSbN07*qoM6N<$f?9MBJpcdz literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/arrow_right.png b/aliyun-log-php-sdk-master/docs/img/icons/arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..60c5927ebf63f388b45315cbc4cc56a77b9f903c GIT binary patch literal 628 zcmV-)0*n2LP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qT;gv2%z300Hz#L_t(I%axPMt5Q)EhkyI*EgldQ%_FEFNFoiwK|$ce2O<`vO%-#J z*f5+m4E!U)pbO5VW@l24A`$5(O~gT>V;_X?vwa*%Pb1@|_l9>(HfyjxzP0vRMAI}J zBA?HH1aP2?dagoht>5TwNDO6R(YPG_8y~cXI2Im}{b9lX8_ zilTha<#MhY4K|w%7K;TIiv<)#fubnjoMSSXfKrNJF!)f@w4a$w<}m=UV}t2*irH)i z#ux-a_&XQ9UJr-E0ZJ)MCKDfz$D3;n4h4so5CWso2)Ek}0I1jNHC0vbmrA9tCkBKN z=yW=Wq6k3{z!-zoYK0_8=yW=};c)o2TrR)5TEmVFD5YSGK@>$e91e)0h*qoB@AZ0b zWLbWH{Ea67#u&_IGwgOdw%aYL)#{IazyG>ct9`j{4^CR}cs$tcc4#yjzXyZC2U(V% z|8JH50ce_rZnulkX!Ofwvpp*oi2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`J+jIM*dB6Xqg)}~| zJoCIb=eAt%N2Sc0*LR=)Gr>jXc+U1{2EKOY&`?3wi#H~`UdZcts5G`~(Smi^VXH-t zNnA2H`u*=l#_~yWzkbC{@|eWZU~_(X%TKE^b)f2_P*>quOSp`{Hl;21nz{an^LB{Ts5!Fr;& literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/constant.png b/aliyun-log-php-sdk-master/docs/img/icons/constant.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f180d5a9b09a19b5ae44ad64a1fdceb6a86d7c GIT binary patch literal 496 zcmVrl1?U*0YQ8KBh3^hnN3W5 z2%|~HXz55n-@#z_4GhF=O%)o!1~F5NWx9pcZ;~F+?Pl3!f;~`hPjKs2om2M?&}Yi{ z)a|hNOZ<{ll;no}Bk)fO?j?Pd^dsz_V-;AIg>Bmyh7qUYr=-X5?0(D-NtDZF=JPoK zm&=9SZbzX|h$DHpwjoI*lSww44g39`Mx%jgn$+ucGMNm9VNk2pa2$tryNzwzJxRTg z;8l{SR;vIEhr`H=-EJ4(_i-GD)oR6Jv3R?-aYHZ~jUoig<&w!{f+RYf4giC};OT}S zkx1Zq9*4t$R;z_&Su~qXve_)-@tE~`O*);X-|ureoq}Sq`0d7mBub?cv)PRE`3%5z zyCt8`Q>j##PN(?3kLP)~uKN-h;x$auB$vxYtfW$@*foCnJuN{HCvYhz#zuJz@P!dKp~(AL>x#lFaYJy!Tsagqt+F;zg(Vd_Ma3C z(nGFZm^~mf*5 z)sz1pn_UOj3v?y|2J0zg2h4lZXZ~Oq6V)2(>o0PAi0Mp zcm2O}aQ*+4X;%Lqp4$EY_?&u@^n?8R{_$;a_<;NZ^2eq1Gykv3ut72B2M+tMZ(scX z!_&L}cQnO<)vrjkgy>B%C#)Z+=I#Bf|8MMChN2ecXJi`Peo$P2?0#|mG=^J|^}*N= zPwo1DaqZOq$7k37KfSmE=*JoV_w{7|UykNZn0k89t1|6?Zs{cGcU*1(=|3{P60d%I dd2d6B_y4`!nK<=Rk_TaW8yL|`1mgK1y#VW>cs>9C literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/file-php.png b/aliyun-log-php-sdk-master/docs/img/icons/file-php.png new file mode 100644 index 0000000000000000000000000000000000000000..c323f09f66241a28d61f1d2c8e90be0a68126bb6 GIT binary patch literal 4017 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 L;uWgGz+epk&R;19 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/folder.gif b/aliyun-log-php-sdk-master/docs/img/icons/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 zcmZ?wbhEHb6ky=hKW2GJ7 I#Kd3?0MGg2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4c?q7?3B2Xp1x8ImHETXz54QVYrPgqHx8=(z e>Gl76{l!*pI92y$_dTH37(8A5T-G@yGywo6mxkK_ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/icon-folder-open-big.png b/aliyun-log-php-sdk-master/docs/img/icons/icon-folder-open-big.png new file mode 100644 index 0000000000000000000000000000000000000000..fae384ef4df761b2d6cc250ed5787e430ae91663 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3HF+C+nOCQtLfk978H@y`6TEw^f11_3i;d ziGzYN2L&Zg3QDws(66dq&SgShn{Thb{zRo^(j5Lg&dD7z8Ed<2HaxncvF_0qB|qh( zD^{Iwcon{}=b8RLEj=%X$?owoQ+czMDqpDz@out+{J4%~%}Jdw83lFk?!Av|@026WQIOdE8_{3R(~E4X}F}*cK0{Nlc(N@tWx{N75ZIyLFkD`ce?_+omU+4eIu&X fef&+H?MME!>ysALYPH`1I-SAO)z4*}Q$iB}E$LkN literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/icon-th-big.png b/aliyun-log-php-sdk-master/docs/img/icons/icon-th-big.png new file mode 100644 index 0000000000000000000000000000000000000000..04b0ad872a98de63bc0e300e627ce69a2a209471 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fhMq2tAr-gYPBH{4<6!#zfBD*P z%ML8Ga1?(i);mdUy45w?2d5KGCQHxw$nZHi?xXOW{3u1P>qQzNK+O!Eu6{1-oD!M< D6}BRE literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/icon_template.svg b/aliyun-log-php-sdk-master/docs/img/icons/icon_template.svg new file mode 100644 index 0000000..b0428aa --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/img/icons/icon_template.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + Co + + diff --git a/aliyun-log-php-sdk-master/docs/img/icons/interface.png b/aliyun-log-php-sdk-master/docs/img/icons/interface.png new file mode 100644 index 0000000000000000000000000000000000000000..51a3a1762db628e8cbbfb4d933a74b4d962d2d7e GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR40E|;Z~{{z_~j>MQR++0q{n_jdZ_~Xzv)82ln zir1^4FSoop)7kP4q||D^oYExqqT%4L-+qnX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4|3mlps%(3Z75trJZsonk=m!SRtUbjIcd*Gd{GD-MU&5kK`Fd$; z&qe*M;R)u)+B55zu54SYqS>Xy$aOeCxaR(R@13(xM|fE^lFf7PnUNSzTjBx@u1_}0S82W4^{;r-{cRJTTl!v}kb2YK z*1sl?dBGmby>EB*DR3}+u*rYhnEoKO=X=4viDB0(R!$ZFviy;n_U!uqz48-dSM>2+ S-W3cC0R~T3KbLh*2~7ZLUYG9x literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/ok.png b/aliyun-log-php-sdk-master/docs/img/icons/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..39f287ab19b8bcdc156ea56355a95290d04f0ee8 GIT binary patch literal 3685 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 AIsgCw literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/search.gif b/aliyun-log-php-sdk-master/docs/img/icons/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..eef46fc9ee10547bfa2da348f81b4c83f19e65a4 GIT binary patch literal 152 zcmZ?wbhEHb6krfw*v!MQVZ+APuU|iW_~^rj4_mixJ96acuV25;ojZ5^`i(nx?(W*P zd;k6e|NsAIfC0syEQ|~cJPbM@0gxFCEUptydamAU5nbG%&zz z##7bH4$=1vId^*V*v!xR>*{?7mqKrCnmdg!}G z=IXm8Sn&!;akH?purU1n%JB2k%b%|wU4DOV*XpD9FQ1(YRJQ}B0U&^o4e)SH>*-Ur zh)`kY;$&s`_k)2EsF{J8m4Sm#kV96(KvF=6-{ZWnu*|swyBJ`G00a;d%-Q;G(RnJC zk*X~0{H%Zf{A2k0_b@F4v6je+t14+fASCR#!a*Y7?B`u`upwYzT_j5PRxk@1k>@6WFcf574M53UU$ zfM5nZ{PpG4FOc(@{(fdKQRiUz`t=9HgNKh8zJB|~V5B3;@aO9@i00pa89smd@*SEs z7ytqYX29h)kFR`S`1=Lu?N1E0y_w^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/icons/visibility_private.png b/aliyun-log-php-sdk-master/docs/img/icons/visibility_private.png new file mode 100644 index 0000000000000000000000000000000000000000..386dc2d879d20cf85e4eeaaeb29e66bfe8398995 GIT binary patch literal 3433 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/grab.cur b/aliyun-log-php-sdk-master/docs/img/iviewer/grab.cur new file mode 100644 index 0000000000000000000000000000000000000000..ef540be09383a215ba21287683ae956b74a6dbbf GIT binary patch literal 1150 zcmeHEF%H8Z3_L;+LM2k9N*yv~>~H#wK9i4B>Jy?)*;1Rr5Mf~HSVzWizBA$iDEg)e zv@Up@fGdC-B|(IIaVjw`XMnR4do4(}ceLED$#?I4PhZt?V;F{(zNyX4aU6>oTI<~I zR%1+|Z@pO>D9unx@mz^sV2R6KAHrH&a3w(Uah_+1dcf$ic$W0J$AsEGc`x}F-{G8# oT0W#ZA~$;zN&n?%4r~@-v(K$0B;Q#;t literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/hand.cur b/aliyun-log-php-sdk-master/docs/img/iviewer/hand.cur new file mode 100644 index 0000000000000000000000000000000000000000..1a5bafb5263fd4937dda4098b04aa5c70e2de924 GIT binary patch literal 1150 zcma)3OKyWe4E694LIn}22q6~8?0U4`qB$BzVUYuLnN^5A#g-vqrbZ8co}UNC0FIu^ z1?Y|NodI+J@I{~!RsQPaynTKEFe0{|*)R-iM9cJuPktQ*F&}vmxJX7;nU}sFz|xzG*A)o1}vy~Np8!oh{{D) z3FWrSE(G-lOIo^%@l%Jh z7d(bKZD(=f(+rDu3Ibk!p~fAzvAEw(G5oFaf>VGX;I$X`=G^#MhKzfwaaX++^R_aG z{23g@-KfbsV!rlS8y~jNpC$Q98001E5Sq?VpxukSs-?)+t$^aeGL+RsprA4wk<#_> z_+u(WTiH*vZ^%;_bKH_BUEq}jd#?-l#9J=q_v{?VaI4}Q9JQ|FoaxO4M#r~&(9l-@ga5_qddH0^Pp)3D%%13U()$KPZ9mfuKHeN zh|FV%AcKd9$Xte~JpHr7ISdEsS=dbylRpV}b%EG*(H$Zm7BrYE89CoGzCv2mgg*7U?}T-eQj1 z{ctQepE}YD%L6}S{pbtWcxoXGX*qRvIs~7NleuJ1rI2sTU9}wgEO}#naM{Mwl$wh8u zCnBy@;!tLlFk2ANZy*yRh*u1IjEu7sgd^u~j?-pP>cuPS5S69F5h60HO2`84nde#W zyHhV;*NN!tY8*EZeXCkX$LB3TNWEh+HIj>(aWc0CrwBgBQY@5_fO(q}ggUVHfHYwh z33cBmty=DP=A9=gECUXndMm_NP*e}Z-LCDyS)!}~n7b*S3$R(WUj{y!TOYyebROJ- zFF$p&>5+Q7DfKeS+K_mst_KprM8H(Hy%~al3{|Z#A5JZTYe-7!V4F>!)KgSFrn=vN z3kCIkDE(K!G*^RwzlwE`Dy#7rUC1u2#kz=0tng2mHP|cZPQ4qN4qPSy<|wW2D5KC{MlR z;>)=A5V)!Cz;#udS#FfKqnHHD=_R1Ptpjzf{nOgnDXf!ZtKqUo3Ky}YM}T&xUI8_p z+{#DD)pj7q40-gM-UA6eVt~J6Ck37*j6+@9f{jOSVfEgWC}V(*7I~i&Dx8uU4S&P_ z;3=qW>uyHVjD_fF#+pz$KVvi(@T$|6gmQ;1NkX6Jb)Y}^@BGWy!Sjrgf9<#ho=bDz zCj-9w{fH|?2J}+O500000NkvXXu0mjf*RRDb literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.rotate_right.png b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.rotate_right.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6c829871d058af5a5ca0ac67256c259f84c5ac GIT binary patch literal 1482 zcmV;*1vUDKP)W@q8L24va@vW@P7*!=(&yIADtgIo?`IW@@z#oP%kAO5~e4>aSvdau$keO zelrxe7h>a?XEPGL-8ZvUK7S5JxO_SC%cam%h9U3nOynA8Bd1~p@(p_slER=;FN42~ zVT$Cx%L&IBfqkNPU0Q$wV<=M8^Ktsd`-seX8%Hx4(Mza9RSeQph6Cvg*A2_?bs*!Z zJm9Mh7vz)H#bKgf96Z*=%6lrx!F>}8+<9p(ZW^~EGIuaSuQBYWfCsY}!gCl75#iYs zn4X1YwmkE{L{qbYU7_|vC;44Kc>_>d53G;Ofy>H6K72&Q1n)K0hYkOJ{}5yueQ_kO zAEZ3kO@`uTdQ^;QD4P$Xc-46$f7y>g|g44T+ z#BgE=@!>Z#-vKoL6Wa&pE*R*#HWno`0s)tGNL1G$LZyexFDGPt0qahH^Hl0tOywX% zlsY1!jA8k4hEa>zCTrlAtqC<~Car`X>shKzaMo5pP+|!}lx4#8x7#jb=yVHAyecTTC4J8t z#9H#H1x)ab5$qRn{T_~Gwh%$&8k>4#Nl^>etY1&RH*c@JV*VdWES08K(6hJ3ua1F+ z1Vqx@pUkersqB_Ip|BQ5mEtYg?Pld26u-(ZDhIXZN8p8vpywZqUmXq21K`XJ6VBRD zSPjgUh_hsuo0Zq@#H52sg=lQDK%p}U0=)MqxPXrz3y|HcLaYr6jTyT{TGH;2&kl$g zvn(tPnZ+iUo13A~-oxKTMnQmAi+~YaKrsopkYC+_iv!`6FZ*8at59p?CSTLD^ce@1hVDp0-#Q zq7i&EGSIAWEAo-(3@vR~e8qHMf3DS%&Pzg-H4FABh2HRK5QhTu_A0SBL~)<~@sXQv zl!l*(`MH4my)*cGH#$9gu8S$5cCU4I9uNy}^C|I;^|0b5vYngtVB^%;d7vlsx1OAw ktS2S0?VM~5JkO{63m1~IVD>3BuK)l507*qoM6N<$f)6RO6951J literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_fit.png b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..364e01d90eae19584713851314629f2468198e9e GIT binary patch literal 1252 zcmbVMZD`zN9M7nO!F>6)Qu>rmKTa$KDx31r-tX6e<%`(6Krd_QfiW`8t`1_@uq7ekl83AbH+? zzu*7$$#_?1`>KY!8VG_|C2bSZcx-mx`sMihAai~i59?7fi@MD`D#97s?^ptvbD@%0UaWlEb9Y?!POak>Kac>j_lvC`$F%JGkXW>_ZEGx zJom!Kv#(7V2O9tK-kSZb!BUHpo@HF_;W5I?7`%^kn|fV6LyKC%38?;(5V z!PU9ZKS#&d``e%Ktf-E%=q0M&EZqyy}ir$_H&JcW2fJ{{PgiX z8-IUUIXQgrq&9v}_F_|k9sDEvsw97zUz^v|wk^6~k{(E}g+-F{ISKr))j<47BXr41~e0blAr&bSs z|IrSo^7@evzS-=(@x`Huqc2r99GkQ^PabxeDqKE2-7j>wsvG2m_N{Pyfo(Z~3KXY?;^Pc&YH??aJsCHEo`3 w8eZ!(AMJatv3kpyYro>2$M)>r+u)qoRbjGiisBQYX$xZ(3D5f)$iQF?09S=3^#A|> literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in.png b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..78993327c62ddd64e7fe33bc1b0d469ef9e17f30 GIT binary patch literal 1420 zcmbVMeM}o=96n$mLI`O1*jPqxokAS8_t9QIP6}&#?I^6YLL;DzakN*s!1Zp|0}9Rz z8rh;F0cBg38IU39T#zkeLnml8hzMCSG?@^xXdOBYVGI|HL|oz(DEbH4A6|0zem&3g z`+V;WTfxD&nA8{m0OHKKM4>pQ1>fi>@%sWi*eedZ1Y?O%#JYqAlBWQjldYscGecHU zg%s&*JUU5b0YHS4wwDMcmP5FMWn^R!Bl9wx$OeF{94|*YYA6A$q^fAQR`OuPF9B(% zR#J>vU<+rUs_EP&o+@f8usfP+92%!2CmYQ2;-UaU2_)!cYTX{(tCg(l;^I8G4N1Ut zh)|=IY&cb7v4IAbr$9^wOC7Kh29<~mkt? zy6{56v}sFRX(iQyz~K<#uSL*ic3n>tk$HCK_ zK(lTzs7O|_b%ItRdb$w;!&xj_!fwxIqQsOzUXp_l84NK@Fs^m9M<}HJbz@t!$KJ?M zP$A`E>v)G)57)jBS6;_)Fv2Ks*P|kY8`^A2u!ZfsWAnHVJ68Y*ZF@k28qrD)nZSf_1^Pw#| z@pZkmCA&G}0&7bcjq%x*?aRCV3irha4o~M_DArx{=C$ijm7gxpJfn{2L~$I+EADGSEAJts^bthXdZ0!+7(pGrKca+s`)MokNH6@80m`S3a@u zY1ygFvFkgB8j(NleZ>ubn=|IJ|7-yHzY}KZV-M0lk+#l6X1~TQy|p*uWp8(@{ii>t zUM%g1pU@A_-dyI62l_3g1J;f*Z-2$!(N|(ifOlu2-fw+1YIXRfE0Nik_Z$MUT=6@` he~f-qo>Y;tmQ(?tGoVp(DLyXve>58lh(UdY?;kaa{Rsd7 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in2.gif b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_in2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d596181627a30344f9783d466ce0558279fe729 GIT binary patch literal 90 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_O4Pyfo(Z}}I`;fT1UbHL~G(^^jrxfIDc qOSLxju^l&BbLLyj{a>m(=kzlMwFoEmw|glD9`i8f>~-Q|um%7;9UyH0 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out.png b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..893f3502baaab667354fe8b560c1712b72630836 GIT binary patch literal 1416 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsddyBS)T zxj4DGI+;7U8WbpSnwXlJx+y{RrjQe2`as9%gOUbPQh^Bp(;tWlPxwF%JnN+90rN`{ zFk|eTuyZ2=1LH1F7srr_TYIJ*^g8Sy&?e2@*d%abWdMgri<5t&U4#0<`~ZPHTulKV zL_SFVVrt@l5PQLUVYuUp3a@^r?zky&+EXok@RH&z@w!8r$f$z%0{cUx;M)M%(BO@dlSAr|x|-`3zUuyW0)IVtW>|s>WVT?mGEc zSkr=`cGH2CXUi731dH|WWa9iWg>~1jL@c(3*I%OB-d`n9ld0_~{X@e~VM+?bvqa&xDF~4=3Dc{-t;PQB<+c zv78v6y_Q$sW5p8UNtB8n}}+(%+^^VTDLxDs_M@V zktZgdHP!#l9(Qv}igT01!>vuNAL^777;7#{%n;%?`4GGKfzXddg$9fTvuy=L>XpA# emo~({32$Iz;FK4L4Ckl>myMpTelF{r5}E)fw)-Uj literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out2.gif b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_out2.gif new file mode 100644 index 0000000000000000000000000000000000000000..77ec19af216c5525438e73e4fafef1ce08db3cf3 GIT binary patch literal 69 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_N!Pyfo(Z}}I`*>bCU^SwRQTrH10rZprj VQ(Lv|A^Y)9KG(nX7PB%~0{{a@8tMQ5 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero.png b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero.png new file mode 100644 index 0000000000000000000000000000000000000000..c981db6d690774d0c2e67e21c9081d5c89b5fd2d GIT binary patch literal 1091 zcmbVL&ui0A9M4pSOy+USDH`Jt54L&lWo?(ZTAQSq1v^VuUA;)t~d_LcwSBo>#!$V_3 z9LEjkPwFMM?vLJ`gY0_@JiN=6Jv3LLv!qU2W`Mb@O=_6WyXHJDVbfl^_!>`f+;-b3 zS7@bhO0kF=HzS*P+w~cm6!@+QT}TTXPE`s;ULyhK6LAo; zKoamt7>CkCDwR6QBLIO2kO)x>rW6S&0Pwv>U}}L~S4z6k(_*Kz(4f>;M6uOs#amLG z1oI-4WjW$ND8?*e;gUzqcFYS8^%-;=T7lzJhj@I%Xx2!RrUmBdMhLE7C~OjYVJ}fE zWn$a(MHmO7>qc>PtwUPEf85y8IxH{wSS;a?Gy{v(qkgClX1V*fP-MuwQBDUAD~h?O z6RYWBkLLBX!2ZN-$5tc*P9}BL$f+qc2OyjTdQR0O9U94`B&o2^u@x4nAeBw1(2x=n z5avKO31v+Nl7u7!=(60$=Dm=bo`w6m4%6*n!9THz7GRT-piIbOzXOU5LP^*lKCjIt z_&LY3Nh^$svk|L~1LqR9jexj(H@k|ng?bW90+iEJ2GWfvYE_c6auz`iY1tG)S)qru z|0iQ2b4H9>hb!)51ol8qidf>uee2NcllE7&Y7PpcX!=7_qbu-x&Nqo^YXsS zx4psB1L(rH2OVv_Ry|wWf8@aTYwPTIZ{+>+x4F)XFBxU;`RVIF##f(pxPd|L)0^?x S8}D{hqp{BCX7q<@b>%mi3|d_P literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero2.gif b/aliyun-log-php-sdk-master/docs/img/iviewer/iviewer.zoom_zero2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e56c670fe62062458276fab5512701433b37af4e GIT binary patch literal 98 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/index.html b/aliyun-log-php-sdk-master/docs/index.html new file mode 100644 index 0000000..6acb8f9 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/index.html @@ -0,0 +1,160 @@ + + + + + + LOG_PHP_SDK + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

LOG_PHP_SDK

+

Documentation

+
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/js/SVGPan.js b/aliyun-log-php-sdk-master/docs/js/SVGPan.js new file mode 100644 index 0000000..4966b99 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/SVGPan.js @@ -0,0 +1,232 @@ +/** + * SVGPan library 1.2 - phpDocumentor1 + * ==================== + * + * Given an unique existing element with id "viewport", including the + * the library into any SVG adds the following capabilities: + * + * - Mouse panning + * - Mouse zooming (using the wheel) + * - Object dargging + * + * Known issues: + * + * - Zooming (while panning) on Safari has still some issues + * + * Releases: + * + * 1.2 - phpDocumentor1, Fri Apr 08 19:19:00 CET 2011, Mike van Riel + * Increased zoom speed with 20% + * Disabled element moving functionality + * + * 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui + * Fixed a bug with browser mouse handler interaction + * + * 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui + * Updated the zoom code to support the mouse wheel on Safari/Chrome + * + * 1.0, Andrea Leofreddi + * First release + * + * This code is licensed under the following BSD license: + * + * Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``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 Andrea Leofreddi OR + * 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. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Andrea Leofreddi. + */ + +var root = document.documentElement; + +var state = 'none', stateTarget, stateOrigin, stateTf; + +setupHandlers(root); + +/** + * Register handlers + */ +function setupHandlers(root){ + setAttributes(root, { + "onmouseup" : "add(evt)", + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)", +// "onmouseout" : "handleMouseUp(evt)" // Decomment this to stop the pan functionality when dragging out of the SVG element + }); + + if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0) + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari + else + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) { + var p = root.createSVGPoint(); + + p.x = evt.clientX; + p.y = evt.clientY; + + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) { + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + + element.setAttribute("transform", s); +} + +/** + * Dumps a matrix to a string (useful for debug). + */ +function dumpMatrix(matrix) { + var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]"; + + return s; +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes){ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +/** + * Handle mouse move event. + */ +function handleMouseWheel(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var delta; + + if(evt.wheelDelta) + delta = evt.wheelDelta / 3600; // Chrome/Safari + else + delta = evt.detail / -90; // Mozilla + + var z = 1 + (delta * 1.2); // Zoom factor: 0.9/1.1 + + var g = svgDoc.getElementById("viewport"); + + var p = getEventPoint(evt); + + p = p.matrixTransform(g.getCTM().inverse()); + + // Compute new scale matrix in current mouse position + var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y); + + setCTM(g, g.getCTM().multiply(k)); + + stateTf = stateTf.multiply(k.inverse()); +} + +/** + * Handle mouse move event. + */ +function handleMouseMove(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + + if(state == 'pan') { + // Pan mode + var p = getEventPoint(evt).matrixTransform(stateTf); + + setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y)); + } else if(state == 'move') { + // Move mode + var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse()); + + setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM())); + + stateOrigin = p; + } +} + +/** + * Handle click event. + */ +function handleMouseDown(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + +// if(evt.target.tagName == "svg") { + // Pan mode + state = 'pan'; + + stateTf = g.getCTM().inverse(); + + stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } else { + // Move mode +// state = 'move'; +// +// stateTarget = evt.target; +// +// stateTf = g.getCTM().inverse(); +// +// stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } +} + +/** + * Handle mouse button release event. + */ +function handleMouseUp(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + if(state == 'pan' || state == 'move') { + // Quit pan mode + state = ''; + } +} + diff --git a/aliyun-log-php-sdk-master/docs/js/bootstrap.js b/aliyun-log-php-sdk-master/docs/js/bootstrap.js new file mode 100644 index 0000000..c832ccb --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/bootstrap.js @@ -0,0 +1,1722 @@ +/* =================================================== + * bootstrap-transition.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ========================================================== */ + +!function( $ ) { + + $(function () { + + "use strict" + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + $.support.transition = (function () { + var thisBody = document.body || document.documentElement + , thisStyle = thisBody.style + , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined + + return support && { + end: (function () { + var transitionEnd = "TransitionEnd" + if ( $.browser.webkit ) { + transitionEnd = "webkitTransitionEnd" + } else if ( $.browser.mozilla ) { + transitionEnd = "transitionend" + } else if ( $.browser.opera ) { + transitionEnd = "oTransitionEnd" + } + return transitionEnd + }()) + } + })() + + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-alert.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function ( el ) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype = { + + constructor: Alert + + , close: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.trigger('close') + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.removeClass('in') + + function removeElement() { + $parent.remove() + $parent.trigger('closed') + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.fn.alert = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-button.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * 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. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype = { + + constructor: Button + + , setState: function ( state ) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + , toggle: function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.fn.button = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + $(e.target).button('toggle') + }) + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-carousel.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * 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. + * ========================================================== */ + + +!function( $ ){ + + "use strict" + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.carousel.defaults, options) + this.options.slide && this.slide(this.options.slide) + } + + Carousel.prototype = { + + cycle: function () { + this.interval = setInterval($.proxy(this.next, this), this.options.interval) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function () { + clearInterval(this.interval) + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if (!$.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger('slide') + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } else { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.trigger('slide') + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = typeof option == 'object' && option + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (typeof option == 'string' || (option = options.slide)) data[option]() + else data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}( window.jQuery ) +/* ============================================================= + * bootstrap-collapse.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * 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. + * ============================================================ */ + +!function( $ ){ + + "use strict" + + var Collapse = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options["parent"]) { + this.$parent = $(this.options["parent"]) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension = this.dimension() + , scroll = $.camelCase(['scroll', dimension].join('-')) + , actives = this.$parent && this.$parent.find('.in') + , hasData + + if (actives && actives.length) { + hasData = actives.data('collapse') + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', 'show', 'shown') + this.$element[dimension](this.$element[0][scroll]) + + } + + , hide: function () { + var dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', 'hide', 'hidden') + this.$element[dimension](0) + } + + , reset: function ( size ) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element.addClass('collapse') + } + + , transition: function ( method, startEvent, completeEvent ) { + var that = this + , complete = function () { + if (startEvent == 'show') that.reset() + that.$element.trigger(completeEvent) + } + + this.$element + .trigger(startEvent) + [method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $(target).collapse(option) + }) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-dropdown.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * 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. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle="dropdown"]' + , Dropdown = function ( element ) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + , isActive + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + !isActive && $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}( window.jQuery ) +/* ========================================================= + * bootstrap-modal.js v2.0.0 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * 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. + * ========================================================= */ + + +!function( $ ){ + + "use strict" + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function ( content, options ) { + this.options = $.extend({}, $.fn.modal.defaults, options) + this.$element = $(content) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + + if (this.isShown) return + + $('body').addClass('modal-open') + + this.isShown = true + this.$element.trigger('show') + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function ( e ) { + e && e.preventDefault() + + if (!this.isShown) return + + var that = this + this.isShown = false + + $('body').removeClass('modal-open') + + escape.call(this) + + this.$element + .trigger('hide') + .removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + hideModal.call(that) + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal( that ) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop( callback ) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('');this.target.append(az);az.height(aD);az.width(aA);az.css("top",this.eventCanvas._offsets.top);az.css("left",this.eventCanvas._offsets.left);var aC=L('
');az.append(aC);aC.html(this.noDataIndicator.indicator);var aB=aC.height();var ax=aC.width();aC.height(aB);aC.width(ax);aC.css("top",(aD-aB)/2+"px")})}}this.data=L.extend(true,[],ar);this.parseOptions(ay);if(this.textColor){this.target.css("color",this.textColor)}if(this.fontFamily){this.target.css("font-family",this.fontFamily)}if(this.fontSize){this.target.css("font-size",this.fontSize)}this.title.init();this.legend.init();this._sumy=0;this._sumx=0;this.computePlotData();for(var at=0;at0){for(var aq=au;aq--;){var an=this._plotData[aq][ap][av];if(aw*an>=0){this._plotData[au][ap][av]+=an;this._stackData[au][ap][av]+=an;break}}}}}else{for(var ar=0;ar0){at._prevPlotData=this.series[au-1]._plotData}at._sumy=0;at._sumx=0;for(ar=at.data.length-1;ar>-1;ar--){at._sumy+=at.data[ar][1];at._sumx+=at.data[ar][0]}}};this.populatePlotData=function(au,av){this._plotData=[];this._stackData=[];au._stackData=[];au._plotData=[];var ay={x:[],y:[]};if(this.stackSeries&&!au.disableStack){au._stack=true;var ax=(au._stackAxis==="x")?0:1;var az=L.extend(true,[],au.data);var aA=L.extend(true,[],au.data);var an,am,ao,aw,al;for(var ar=0;ar=0){aA[aq][ax]+=aw}}}for(var at=0;at0){au._prevPlotData=this.series[av-1]._plotData}au._sumy=0;au._sumx=0;for(at=au.data.length-1;at>-1;at--){au._sumy+=au.data[at][1];au._sumx+=au.data[at][0]}};this.getNextSeriesColor=(function(am){var al=0;var an=am.seriesColors;return function(){if(al=0&&an>=0){al.top+=aK;al.bottom+=aK;al.left+=an;al.right+=an}}var am=["top","bottom","left","right"];for(var aB in am){if(this._gridPadding[am[aB]]==null&&al[am[aB]]>0){this._gridPadding[am[aB]]=al[am[aB]]}else{if(this._gridPadding[am[aB]]==null){this._gridPadding[am[aB]]=this._defaultGridPadding[am[aB]]}}}var aA=this._gridPadding;if(this.legend.placement==="outsideGrid"){aA={top:this.title.getHeight(),left:0,right:0,bottom:0};if(this.legend.location==="s"){aA.left=this._gridPadding.left;aA.right=this._gridPadding.right}}ar.xaxis.pack({position:"absolute",bottom:this._gridPadding.bottom-ar.xaxis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});ar.yaxis.pack({position:"absolute",top:0,left:this._gridPadding.left-ar.yaxis.getWidth(),height:this._height},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});ar.x2axis.pack({position:"absolute",top:this._gridPadding.top-ar.x2axis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});for(aH=8;aH>0;aH--){ar[aG[aH-1]].pack({position:"absolute",top:0,right:this._gridPadding.right-az[aH-1]},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top})}var au=(this._width-this._gridPadding.left-this._gridPadding.right)/2+this._gridPadding.left-ar.yMidAxis.getWidth()/2;ar.yMidAxis.pack({position:"absolute",top:0,left:au,zIndex:9,textAlign:"center"},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});this.target.append(this.grid.createElement(this._gridPadding,this));this.grid.draw();var aq=this.series;var aJ=aq.length;for(aH=0,aE=aJ;aHax)?av:ax;var ar=this.series[aw];var aq=this.series[au];if(aq.renderer.smooth){var ap=aq.renderer._smoothedData.slice(0).reverse()}else{var ap=aq.gridData.slice(0).reverse()}if(ar.renderer.smooth){var at=ar.renderer._smoothedData.concat(ap)}else{var at=ar.gridData.concat(ap)}var ao=(an.color!==null)?an.color:this.series[ax].fillColor;var ay=(an.baseSeries!==null)?an.baseSeries:aw;var am=this.series[ay].renderer.shapeRenderer;var al={fillStyle:ao,fill:true,closePath:true};am.draw(ar.shadowCanvas._ctx,at,al)};this.bindCustomEvents=function(){this.eventCanvas._elem.bind("click",{plot:this},this.onClick);this.eventCanvas._elem.bind("dblclick",{plot:this},this.onDblClick);this.eventCanvas._elem.bind("mousedown",{plot:this},this.onMouseDown);this.eventCanvas._elem.bind("mousemove",{plot:this},this.onMouseMove);this.eventCanvas._elem.bind("mouseenter",{plot:this},this.onMouseEnter);this.eventCanvas._elem.bind("mouseleave",{plot:this},this.onMouseLeave);if(this.captureRightClick){this.eventCanvas._elem.bind("mouseup",{plot:this},this.onRightClick);this.eventCanvas._elem.get(0).oncontextmenu=function(){return false}}else{this.eventCanvas._elem.bind("mouseup",{plot:this},this.onMouseUp)}};function ai(av){var au=av.data.plot;var ap=au.eventCanvas._elem.offset();var at={x:av.pageX-ap.left,y:av.pageY-ap.top};var aq={xaxis:null,yaxis:null,x2axis:null,y2axis:null,y3axis:null,y4axis:null,y5axis:null,y6axis:null,y7axis:null,y8axis:null,y9axis:null,yMidAxis:null};var ar=["xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];var al=au.axes;var am,ao;for(am=11;am>0;am--){ao=ar[am-1];if(al[ao].show){aq[ao]=al[ao].series_p2u(at[ao.charAt(0)])}}return{offsets:ap,gridPos:at,dataPos:aq}}function ak(al,am){var aq=am.series;var aW,aU,aT,aO,aP,aJ,aI,aw,au,az,aA,aK;var aS,aX,aQ,ar,aH,aM,aV;var an,aN;for(aT=am.seriesStack.length-1;aT>=0;aT--){aW=am.seriesStack[aT];aO=aq[aW];aV=aO._highlightThreshold;switch(aO.renderer.constructor){case L.jqplot.BarRenderer:aJ=al.x;aI=al.y;for(aU=0;aUaH[0][0]&&aJaH[2][1]&&aIaH[0][0]+aV[0][0]&&aJaH[2][1]&&aI0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aPaO._innerRadius){for(aU=0;aU0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aP0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw=ay[0][1]&&aI<=ay[3][1]&&aJ>=at[0]&&aJ<=aE[0]){return{seriesIndex:aO.index,pointIndex:aU,gridData:null,data:aO.data[aU]}}}break;case L.jqplot.LineRenderer:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){if((aO.fill||(aO.renderer.bands.show&&aO.renderer.bands.fill))&&(!am.plugins.highlighter||!am.plugins.highlighter.show)){var ax=false;if(aJ>aO._boundingBox[0][0]&&aJaO._boundingBox[1][1]&&aI=aI||aB[1]=aI){if(aC[0]+(aI-aC[1])/(aB[1]-aC[1])*(aB[0]-aC[0])0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{if(aQ[0]!=null&&aQ[1]!=null){aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}}}break;default:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){aN=aO.markerRenderer.size/2+aO.neighborThreshold;an=(aN>0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}break}}return null}this.onClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onDblClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotDblClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseDown=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseDown");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseUp=function(an){var am=ai(an);var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,null,an.data.plot])};this.onRightClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);if(ap.captureRightClick){if(an.which==3){var al=L.Event("jqplotRightClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}else{var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}}};this.onMouseMove=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseMove");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseEnter=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseEnter");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.onMouseLeave=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseLeave");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.drawSeries=function(an,al){var ap,ao,am;al=(typeof(an)==="number"&&al==null)?an:al;an=(typeof(an)==="object")?an:{};if(al!=u){ao=this.series[al];am=ao.shadowCanvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.drawShadow(am,an,this);am=ao.canvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.draw(am,an,this);if(ao.renderer.constructor==L.jqplot.BezierCurveRenderer){if(al660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak.push("rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")")}}else{var al=L.jqplot.getColorComponents(ai);var ah=[al[0],al[1],al[2]];var an=ah[0]+ah[1]+ah[2];for(var aj=0;aj<3;aj++){ah[aj]=(an>660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak="rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")"}return ak};L.jqplot.ColorGenerator=function(ai){ai=ai||L.jqplot.config.defaultColors;var ah=0;this.next=function(){if(ah0){return ai[ah--]}else{ah=ai.length-1;return ai[ah]}};this.get=function(ak){var aj=ak-ai.length*Math.floor(ak/ai.length);return ai[aj]};this.setColors=function(aj){ai=aj};this.reset=function(){ah=0};this.getIndex=function(){return ah};this.setIndex=function(aj){ah=aj}};L.jqplot.hex2rgb=function(aj,ah){aj=aj.replace("#","");if(aj.length==3){aj=aj.charAt(0)+aj.charAt(0)+aj.charAt(1)+aj.charAt(1)+aj.charAt(2)+aj.charAt(2)}var ai;ai="rgba("+parseInt(aj.slice(0,2),16)+", "+parseInt(aj.slice(2,4),16)+", "+parseInt(aj.slice(4,6),16);if(ah){ai+=", "+ah}ai+=")";return ai};L.jqplot.rgb2hex=function(am){var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/;var ah=am.match(aj);var al="#";for(var ak=1;ak<4;ak++){var ai;if(ah[ak].search(/%/)!=-1){ai=parseInt(255*ah[ak]/100,10).toString(16);if(ai.length==1){ai="0"+ai}}else{ai=parseInt(ah[ak],10).toString(16);if(ai.length==1){ai="0"+ai}}al+=ai}return al};L.jqplot.normalize2rgb=function(ai,ah){if(ai.search(/^ *rgba?\(/)!=-1){return ai}else{if(ai.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/)!=-1){return L.jqplot.hex2rgb(ai,ah)}else{throw new Error("Invalid color spec")}}};L.jqplot.getColorComponents=function(am){am=L.jqplot.colorKeywordMap[am]||am;var ak=L.jqplot.normalize2rgb(am);var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/;var ah=ak.match(aj);var ai=[];for(var al=1;al<4;al++){if(ah[al].search(/%/)!=-1){ai[al-1]=parseInt(255*ah[al]/100,10)}else{ai[al-1]=parseInt(ah[al],10)}}ai[3]=parseFloat(ah[4])?parseFloat(ah[4]):1;return ai};L.jqplot.colorKeywordMap={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",aqua:"rgb( 0, 255, 255)",aquamarine:"rgb(127, 255, 212)",azure:"rgb(240, 255, 255)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",black:"rgb( 0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb( 0, 0, 255)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",burlywood:"rgb(222, 184, 135)",cadetblue:"rgb( 95, 158, 160)",chartreuse:"rgb(127, 255, 0)",chocolate:"rgb(210, 105, 30)",coral:"rgb(255, 127, 80)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",crimson:"rgb(220, 20, 60)",cyan:"rgb( 0, 255, 255)",darkblue:"rgb( 0, 0, 139)",darkcyan:"rgb( 0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb( 0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb( 85, 107, 47)",darkorange:"rgb(255, 140, 0)",darkorchid:"rgb(153, 50, 204)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkslateblue:"rgb( 72, 61, 139)",darkslategray:"rgb( 47, 79, 79)",darkslategrey:"rgb( 47, 79, 79)",darkturquoise:"rgb( 0, 206, 209)",darkviolet:"rgb(148, 0, 211)",deeppink:"rgb(255, 20, 147)",deepskyblue:"rgb( 0, 191, 255)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb( 30, 144, 255)",firebrick:"rgb(178, 34, 34)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb( 34, 139, 34)",fuchsia:"rgb(255, 0, 255)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",goldenrod:"rgb(218, 165, 32)",gray:"rgb(128, 128, 128)",grey:"rgb(128, 128, 128)",green:"rgb( 0, 128, 0)",greenyellow:"rgb(173, 255, 47)",honeydew:"rgb(240, 255, 240)",hotpink:"rgb(255, 105, 180)",indianred:"rgb(205, 92, 92)",indigo:"rgb( 75, 0, 130)",ivory:"rgb(255, 255, 240)",khaki:"rgb(240, 230, 140)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lightblue:"rgb(173, 216, 230)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightsalmon:"rgb(255, 160, 122)",lightseagreen:"rgb( 32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightyellow:"rgb(255, 255, 224)",lime:"rgb( 0, 255, 0)",limegreen:"rgb( 50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",maroon:"rgb(128, 0, 0)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb( 0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumpurple:"rgb(147, 112, 219)",mediumseagreen:"rgb( 60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb( 0, 250, 154)",mediumturquoise:"rgb( 72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb( 25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navy:"rgb( 0, 0, 128)",oldlace:"rgb(253, 245, 230)",olive:"rgb(128, 128, 0)",olivedrab:"rgb(107, 142, 35)",orange:"rgb(255, 165, 0)",orangered:"rgb(255, 69, 0)",orchid:"rgb(218, 112, 214)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",paleturquoise:"rgb(175, 238, 238)",palevioletred:"rgb(219, 112, 147)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",plum:"rgb(221, 160, 221)",powderblue:"rgb(176, 224, 230)",purple:"rgb(128, 0, 128)",red:"rgb(255, 0, 0)",rosybrown:"rgb(188, 143, 143)",royalblue:"rgb( 65, 105, 225)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb( 46, 139, 87)",seashell:"rgb(255, 245, 238)",sienna:"rgb(160, 82, 45)",silver:"rgb(192, 192, 192)",skyblue:"rgb(135, 206, 235)",slateblue:"rgb(106, 90, 205)",slategray:"rgb(112, 128, 144)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",springgreen:"rgb( 0, 255, 127)",steelblue:"rgb( 70, 130, 180)",tan:"rgb(210, 180, 140)",teal:"rgb( 0, 128, 128)",thistle:"rgb(216, 191, 216)",tomato:"rgb(255, 99, 71)",turquoise:"rgb( 64, 224, 208)",violet:"rgb(238, 130, 238)",wheat:"rgb(245, 222, 179)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellowgreen:"rgb(154, 205, 50)"};L.jqplot.AxisLabelRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.axis;this.show=true;this.label="";this.fontFamily=null;this.fontSize=null;this.textColor=null;this._elem;this.escapeHTML=false;L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisLabelRenderer.prototype.constructor=L.jqplot.AxisLabelRenderer;L.jqplot.AxisLabelRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype.draw=function(ah,ai){if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L('
');if(Number(this.label)){this._elem.css("white-space","nowrap")}if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}return this._elem};L.jqplot.AxisLabelRenderer.prototype.pack=function(){};L.jqplot.AxisTickRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.mark="outside";this.axis;this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.size=4;this.markSize=6;this.show=true;this.showLabel=true;this.label=null;this.value=null;this._styles={};this.formatter=L.jqplot.DefaultTickFormatter;this.prefix="";this.suffix="";this.formatString="";this.fontFamily;this.fontSize;this.textColor;this.escapeHTML=false;this._elem;this._breakTick=false;L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisTickRenderer.prototype.constructor=L.jqplot.AxisTickRenderer;L.jqplot.AxisTickRenderer.prototype.setTick=function(ah,aj,ai){this.value=ah;this.axis=aj;if(ai){this.isMinorTick=true}return this};L.jqplot.AxisTickRenderer.prototype.draw=function(){if(this.label===null){this.label=this.prefix+this.formatter(this.formatString,this.value)+this.suffix}var ai={position:"absolute"};if(Number(this.label)){ai.whitSpace="nowrap"}if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L(document.createElement("div"));this._elem.addClass("jqplot-"+this.axis+"-tick");if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}this._elem.css(ai);for(var ah in this._styles){this._elem.css(ah,this._styles[ah])}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}if(this._breakTick){this._elem.addClass("jqplot-breakTick")}return this._elem};L.jqplot.DefaultTickFormatter=function(ah,ai){if(typeof ai=="number"){if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.PercentTickFormatter=function(ah,ai){if(typeof ai=="number"){ai=100*ai;if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.AxisTickRenderer.prototype.pack=function(){};L.jqplot.CanvasGridRenderer=function(){this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.CanvasGridRenderer.prototype.init=function(ai){this._ctx;L.extend(true,this,ai);var ah={lineJoin:"miter",lineCap:"round",fill:false,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:false,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(ah)};L.jqplot.CanvasGridRenderer.prototype.createElement=function(ak){var aj;if(this._elem){if(L.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==u){aj=this._elem.get(0);window.G_vmlCanvasManager.uninitElement(aj);aj=null}this._elem.emptyForce();this._elem=null}aj=ak.canvasManager.getCanvas();var ah=this._plotDimensions.width;var ai=this._plotDimensions.height;aj.width=ah;aj.height=ai;this._elem=L(aj);this._elem.addClass("jqplot-grid-canvas");this._elem.css({position:"absolute",left:0,top:0});aj=ak.canvasManager.initCanvas(aj);this._top=this._offsets.top;this._bottom=ai-this._offsets.bottom;this._left=this._offsets.left;this._right=ah-this._offsets.right;this._width=this._right-this._left;this._height=this._bottom-this._top;aj=null;return this._elem};L.jqplot.CanvasGridRenderer.prototype.draw=function(){this._ctx=this._elem.get(0).getContext("2d");var at=this._ctx;var aw=this._axes;at.save();at.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height);at.fillStyle=this.backgroundColor||this.background;at.fillRect(this._left,this._top,this._width,this._height);at.save();at.lineJoin="miter";at.lineCap="butt";at.lineWidth=this.gridLineWidth;at.strokeStyle=this.gridLineColor;var aA,az,ap,aq;var am=["xaxis","yaxis","x2axis","y2axis"];for(var ay=4;ay>0;ay--){var aD=am[ay-1];var ah=aw[aD];var aB=ah._ticks;var ar=aB.length;if(ah.show){if(ah.drawBaseline){var aC={};if(ah.baselineWidth!==null){aC.lineWidth=ah.baselineWidth}if(ah.baselineColor!==null){aC.strokeStyle=ah.baselineColor}switch(aD){case"xaxis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"yaxis":ao(this._left,this._bottom,this._left,this._top,aC);break;case"x2axis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"y2axis":ao(this._right,this._bottom,this._right,this._top,aC);break}}for(var au=ar;au>0;au--){var an=aB[au-1];if(an.show){var ak=Math.round(ah.u2p(an.value))+0.5;switch(aD){case"xaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._top,ak,this._bottom)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._bottom;az=this._bottom+ap;break;case"inside":aA=this._bottom-ap;az=this._bottom;break;case"cross":aA=this._bottom-ap;az=this._bottom+ap;break;default:aA=this._bottom;az=this._bottom+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"yaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._right,ak,this._left,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._left-ap;az=this._left;break;case"inside":aA=this._left;az=this._left+ap;break;case"cross":aA=this._left-ap;az=this._left+ap;break;default:aA=this._left-ap;az=this._left;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;case"x2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._bottom,ak,this._top)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._top-ap;az=this._top;break;case"inside":aA=this._top;az=this._top+ap;break;case"cross":aA=this._top-ap;az=this._top+ap;break;default:aA=this._top-ap;az=this._top;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"y2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._left,ak,this._right,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._right;az=this._right+ap;break;case"inside":aA=this._right-ap;az=this._right;break;case"cross":aA=this._right-ap;az=this._right+ap;break;default:aA=this._right;az=this._right+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;default:break}}}an=null}ah=null;aB=null}am=["y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];for(var ay=7;ay>0;ay--){var ah=aw[am[ay-1]];var aB=ah._ticks;if(ah.show){var ai=aB[ah.numberTicks-1];var al=aB[0];var aj=ah.getLeft();var av=[[aj,ai.getTop()+ai.getHeight()/2],[aj,al.getTop()+al.getHeight()/2+1]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",fill:false,closePath:false})}ao(av[0][0],av[0][1],av[1][0],av[1][1],{lineCap:"butt",strokeStyle:ah.borderColor,lineWidth:ah.borderWidth});for(var au=aB.length;au>0;au--){var an=aB[au-1];ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;if(an.showMark&&an.mark){switch(aq){case"outside":aA=aj;az=aj+ap;break;case"inside":aA=aj-ap;az=aj;break;case"cross":aA=aj-ap;az=aj+ap;break;default:aA=aj;az=aj+ap;break}av=[[aA,ak],[az,ak]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}an=null}al=null}ah=null;aB=null}at.restore();function ao(aH,aG,aE,ax,aF){at.save();aF=aF||{};if(aF.lineWidth==null||aF.lineWidth!=0){L.extend(true,at,aF);at.beginPath();at.moveTo(aH,aG);at.lineTo(aE,ax);at.stroke();at.restore()}}if(this.shadow){var av=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(at,av)}if(this.borderWidth!=0&&this.drawBorder){ao(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:aw.x2axis.borderColor,lineWidth:aw.x2axis.borderWidth});ao(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:aw.y2axis.borderColor,lineWidth:aw.y2axis.borderWidth});ao(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:aw.xaxis.borderColor,lineWidth:aw.xaxis.borderWidth});ao(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:aw.yaxis.borderColor,lineWidth:aw.yaxis.borderWidth})}at.restore();at=null;aw=null};L.jqplot.DivTitleRenderer=function(){};L.jqplot.DivTitleRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.DivTitleRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}var ak=this.renderer;var aj=document.createElement("div");this._elem=L(aj);this._elem.addClass("jqplot-title");if(!this.text){this.show=false;this._elem.height(0);this._elem.width(0)}else{if(this.text){var ah;if(this.color){ah=this.color}else{if(this.textColor){ah=this.textColor}}var ai={position:"absolute",top:"0px",left:"0px"};if(this._plotWidth){ai.width=this._plotWidth+"px"}if(this.fontSize){ai.fontSize=this.fontSize}if(typeof this.textAlign==="string"){ai.textAlign=this.textAlign}else{ai.textAlign="center"}if(ah){ai.color=ah}if(this.paddingBottom){ai.paddingBottom=this.paddingBottom}if(this.fontFamily){ai.fontFamily=this.fontFamily}this._elem.css(ai);if(this.escapeHtml){this._elem.text(this.text)}else{this._elem.html(this.text)}}}aj=null;return this._elem};L.jqplot.DivTitleRenderer.prototype.pack=function(){};var r=0.1;L.jqplot.LinePattern=function(aw,aq){var ap={dotted:[r,L.jqplot.config.dotGapLength],dashed:[L.jqplot.config.dashLength,L.jqplot.config.gapLength],solid:null};if(typeof aq==="string"){if(aq[0]==="."||aq[0]==="-"){var ax=aq;aq=[];for(var ao=0,al=ax.length;ao0)&&(aC>0)){aA/=aB;az/=aB;while(true){var aD=aC*ar;if(aD=aq.length){ak=0}ar=aq[ak]}else{au=ay;at=aE;if((ak&1)==0){aw.lineTo(au,at)}else{aw.moveTo(au,at)}ar-=aB/aC;break}}}};var ai=function(){aw.beginPath()};var am=function(){aj(an,ah)};return{moveTo:av,lineTo:aj,beginPath:ai,closePath:am}};L.jqplot.LineRenderer=function(){this.shapeRenderer=new L.jqplot.ShapeRenderer();this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.LineRenderer.prototype.init=function(ai,an){ai=ai||{};this._type="line";this.renderer.animation={show:false,direction:"left",speed:2500,_supported:true};this.renderer.smooth=false;this.renderer.tension=null;this.renderer.constrainSmoothing=true;this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];this.renderer.bandData=[];this.renderer.bands={show:false,hiData:[],lowData:[],color:this.color,showLines:false,fill:true,fillColor:null,_min:null,_max:null,interval:"3%"};var al={highlightMouseOver:ai.highlightMouseOver,highlightMouseDown:ai.highlightMouseDown,highlightColor:ai.highlightColor};delete (ai.highlightMouseOver);delete (ai.highlightMouseDown);delete (ai.highlightColor);L.extend(true,this.renderer,ai);this.renderer.options=ai;if(this.renderer.bandData.length>1&&(!ai.bands||ai.bands.show==null)){this.renderer.bands.show=true}else{if(ai.bands&&ai.bands.show==null&&ai.bands.interval!=null){this.renderer.bands.show=true}}if(this.fill){this.renderer.bands.show=false}if(this.renderer.bands.show){this.renderer.initBands.call(this,this.renderer.options,an)}if(this._stack){this.renderer.smooth=false}var am={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,strokeStyle:this.color,fillStyle:this.fillColor,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shapeRenderer.init(am);var aj=ai.shadowOffset;if(aj==null){if(this.lineWidth>2.5){aj=1.25*(1+(Math.atan((this.lineWidth/2.5))/0.785398163-1)*0.6)}else{aj=1.25*Math.atan((this.lineWidth/2.5))/0.785398163}}var ah={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,angle:this.shadowAngle,offset:aj,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shadowRenderer.init(ah);this._areaPoints=[];this._boundingBox=[[],[]];if(!this.isTrendline&&this.fill||this.renderer.bands.show){this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColor=null;if(al.highlightMouseDown&&al.highlightMouseOver==null){al.highlightMouseOver=false}L.extend(true,this,{highlightMouseOver:al.highlightMouseOver,highlightMouseDown:al.highlightMouseDown,highlightColor:al.highlightColor});if(!this.highlightColor){var ak=(this.renderer.bands.show)?this.renderer.bands.fillColor:this.fillColor;this.highlightColor=L.jqplot.computeHighlightColors(ak)}if(this.highlighter){this.highlighter.show=false}}if(!this.isTrendline&&an){an.plugins.lineRenderer={};an.postInitHooks.addOnce(z);an.postDrawHooks.addOnce(af);an.eventListenerHooks.addOnce("jqplotMouseMove",h);an.eventListenerHooks.addOnce("jqplotMouseDown",e);an.eventListenerHooks.addOnce("jqplotMouseUp",ad);an.eventListenerHooks.addOnce("jqplotClick",g);an.eventListenerHooks.addOnce("jqplotRightClick",s)}};L.jqplot.LineRenderer.prototype.initBands=function(ak,av){var al=ak.bandData||[];var an=this.renderer.bands;an.hiData=[];an.lowData=[];var aB=this.data;an._max=null;an._min=null;if(al.length==2){if(L.isArray(al[0][0])){var ao;var ah=0,ar=0;for(var aw=0,at=al[0].length;awan._max)||an._max==null){an._max=ao[1]}if((ao[1]!=null&&ao[1]an._max)||an._max==null){an._max=ao[1];ar=1}if((ao[1]!=null&&ao[1]al[1][0])?0:1;var aC=(aj)?0:1;for(var aw=0,at=aB.length;aw2&&!L.isArray(al[0][0])){var aj=(al[0][0]>al[0][1])?0:1;var aC=(aj)?0:1;for(var aw=0,at=al.length;awan._max)||an._max==null){an._max=am[aw][1]}}for(var aw=0,at=ap.length;aw0){aR=Math.abs((ap[aQ][1]-ap[aQ-1][1])/(ap[aQ][0]-ap[aQ-1][0]))}am=aR/aG+aE;aM=aF*A(am)-aF*A(aE)+aS;aT=(aO+aM)/2}else{aT=aU}for(aK=0;aK2){var ao;if(this.renderer.constrainSmoothing){ao=J.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}else{ao=F.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}}};L.jqplot.LineRenderer.prototype.makeGridData=function(ao,aq){var am=this._xaxis.series_u2p;var ah=this._yaxis.series_u2p;var ar=[];var aj=[];this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];var al=this.renderer.bands;var ai=false;for(var an=0;an2){var ap;if(this.renderer.constrainSmoothing){ap=J.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}else{ap=F.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}}return ar};L.jqplot.LineRenderer.prototype.draw=function(ax,aI,ai,aB){var aC;var aq=L.extend(true,{},ai);var ak=(aq.shadow!=u)?aq.shadow:this.shadow;var aJ=(aq.showLine!=u)?aq.showLine:this.showLine;var aA=(aq.fill!=u)?aq.fill:this.fill;var ah=(aq.fillAndStroke!=u)?aq.fillAndStroke:this.fillAndStroke;var ar,ay,av,aE;ax.save();if(aI.length){if(aJ){if(aA){if(this.fillToZero){var aF=this.negativeColor;if(!this.useNegativeColors){aF=aq.fillStyle}var ao=false;var ap=aq.fillStyle;if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var aw=[];var aL=(this.renderer.smooth)?this.renderer._smoothedPlotData:this._plotData;this._areaPoints=[];var aG=this._yaxis.series_u2p(this.fillToValue);var aj=this._xaxis.series_u2p(this.fillToValue);aq.closePath=true;if(this.fillAxis=="y"){aw.push([aI[0][0],aG]);this._areaPoints.push([aI[0][0],aG]);for(var aC=0;aC0;aC--){aI.push(au[aC-1])}if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this._areaPoints=aI;this.renderer.shapeRenderer.draw(ax,aI,aq)}}else{if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var al=ax.canvas.height;aI.unshift([aI[0][0],al]);var aD=aI.length;aI.push([aI[aD-1][0],al])}else{var au=this._prevGridData;for(var aC=au.length;aC>0;aC--){aI.push(au[aC-1])}}this._areaPoints=aI;if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this.renderer.shapeRenderer.draw(ax,aI,aq)}if(ah){var az=L.extend(true,{},aq,{fill:false,closePath:false});this.renderer.shapeRenderer.draw(ax,aH,az);if(this.markerRenderer.show){if(this.renderer.smooth){aH=this.gridData}for(aC=0;aCat[0]||ar==null){ar=at[0]}if(aEat[1]||ay==null){ay=at[1]}}if(this.type==="line"&&this.renderer.bands.show){aE=this._yaxis.series_u2p(this.renderer.bands._min);ay=this._yaxis.series_u2p(this.renderer.bands._max)}this._boundingBox=[[ar,aE],[av,ay]];if(this.markerRenderer.show&&!aA){if(this.renderer.smooth){aI=this.gridData}for(aC=0;aCao){ao=aj}}}al=null;am=null;if(ah){ai=this._label._elem.outerWidth(true);an=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){ao=ao+ai;this._elem.css({width:ao+"px",left:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}else{ao=ao+ai;this._elem.css({width:ao+"px",right:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}}}}};L.jqplot.LinearAxisRenderer.prototype.createTicks=function(aj){var aT=this._ticks;var aK=this.ticks;var az=this.name;var aB=this._dataBounds;var ah=(this.name.charAt(0)==="x")?this._plotDimensions.width:this._plotDimensions.height;var an;var a6,aI;var ap,ao;var a4,a0;var aH=this.min;var a5=this.max;var aW=this.numberTicks;var ba=this.tickInterval;var am=30;this._scalefact=(Math.max(ah,am+1)-am)/300;if(aK.length){for(a0=0;a0this.breakPoints[0]&&aO[0]<=this.breakPoints[1]){aU.show=false;aU.showGridline=false;aU.label=aO[1]}else{aU.label=aO[1]}}}else{aU.label=aO[1]}aU.setTick(aO[0],this.name);this._ticks.push(aU)}else{if(L.isPlainObject(aO)){L.extend(true,aU,aO);aU.axis=this.name;this._ticks.push(aU)}else{aU.value=aO;if(this.breakPoints){if(aO==this.breakPoints[0]){aU.label=this.breakTickLabel;aU._breakTick=true;aU.showGridline=false;aU.showMark=false}else{if(aO>this.breakPoints[0]&&aO<=this.breakPoints[1]){aU.show=false;aU.showGridline=false}}}aU.setTick(aO,this.name);this._ticks.push(aU)}}}this.numberTicks=aK.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.tickInterval=(this.max-this.min)/(this.numberTicks-1)}else{if(az=="xaxis"||az=="x2axis"){ah=this._plotDimensions.width}else{ah=this._plotDimensions.height}var ax=this.numberTicks;if(this.alignTicks){if(this.name==="x2axis"&&aj.axes.xaxis.show){ax=aj.axes.xaxis.numberTicks}else{if(this.name.charAt(0)==="y"&&this.name!=="yaxis"&&this.name!=="yMidAxis"&&aj.axes.yaxis.show){ax=aj.axes.yaxis.numberTicks}}}a6=((this.min!=null)?this.min:aB.min);aI=((this.max!=null)?this.max:aB.max);var av=aI-a6;var aS,ay;var at;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}if(this.min==null||this.max==null&&this.tickInterval==null&&!this.autoscale){if(this.forceTickAt0){if(a6>0){a6=0}if(aI<0){aI=0}}if(this.forceTickAt100){if(a6>100){a6=100}if(aI<100){aI=100}}var aE=false,a1=false;if(this.min!=null){aE=true}else{if(this.max!=null){a1=true}}var aP=L.jqplot.LinearTickGenerator(a6,aI,this._scalefact,ax,aE,a1);var aw=(this.min!=null)?a6:a6+av*(this.padMin-1);var aQ=(this.max!=null)?aI:aI-av*(this.padMax-1);if(a6aQ){aw=(this.min!=null)?a6:a6-av*(this.padMin-1);aQ=(this.max!=null)?aI:aI+av*(this.padMax-1);aP=L.jqplot.LinearTickGenerator(aw,aQ,this._scalefact,ax,aE,a1)}this.min=aP[0];this.max=aP[1];this.numberTicks=aP[2];this._autoFormatString=aP[3];this.tickInterval=aP[4]}else{if(a6==aI){var ai=0.05;if(a6>0){ai=Math.max(Math.log(a6)/Math.LN10,0.05)}a6-=ai;aI+=ai}if(this.autoscale&&this.min==null&&this.max==null){var ak,al,ar;var aC=false;var aN=false;var aA={min:null,max:null,average:null,stddev:null};for(var a0=0;a0a2){a2=aR[aZ]}}}var au=(a2-aG)/a2;if(aV.renderer.constructor==L.jqplot.BarRenderer){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{aC=false;if(aV.fill&&aV.fillToZero&&aG<0&&a2>0){aN=true}else{aN=false}}}else{if(aV.fill){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{if(aG<0&&a2>0&&aV.fillToZero){aC=false;aN=true}else{aC=false;aN=false}}}else{if(aG<0){aC=false}}}}}if(aC){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);this.min=0;aH=0;al=aI/(this.numberTicks-1);at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));if(al/at==parseInt(al/at,10)){al+=at}this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*(this.numberTicks-1)}else{if(aN){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);var aJ=Math.ceil(Math.abs(a6)/av*(this.numberTicks-1));var a9=this.numberTicks-1-aJ;al=Math.max(Math.abs(a6/aJ),Math.abs(aI/a9));at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*a9;this.min=-this.tickInterval*aJ}else{if(this.numberTicks==null){if(this.tickInterval){this.numberTicks=3+Math.ceil(av/this.tickInterval)}else{this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing)}}if(this.tickInterval==null){al=av/(this.numberTicks-1);if(al<1){at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)))}else{at=1}this.tickInterval=Math.ceil(al*at*this.pad)/at}else{at=1/this.tickInterval}ak=this.tickInterval*(this.numberTicks-1);ar=(ak-av)/2;if(this.min==null){this.min=Math.floor(at*(a6-ar))/at}if(this.max==null){this.max=this.min+ak}}}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM}else{aS=(this.min!=null)?this.min:a6-av*(this.padMin-1);ay=(this.max!=null)?this.max:aI+av*(this.padMax-1);av=ay-aS;if(this.numberTicks==null){if(this.tickInterval!=null){this.numberTicks=Math.ceil((ay-aS)/this.tickInterval)+1}else{if(ah>100){this.numberTicks=parseInt(3+(ah-100)/75,10)}else{this.numberTicks=2}}}if(this.tickInterval==null){this.tickInterval=av/(this.numberTicks-1)}if(this.max==null){ay=aS+this.tickInterval*(this.numberTicks-1)}if(this.min==null){aS=ay-this.tickInterval*(this.numberTicks-1)}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM;this.min=aS;this.max=ay}if(this.renderer.constructor==L.jqplot.LinearAxisRenderer&&this._autoFormatString==""){av=this.max-this.min;var a7=new this.tickRenderer(this.tickOptions);var aL=a7.formatString||L.jqplot.config.defaultTickFormatString;var aL=aL.match(L.jqplot.sprintf.regex)[0];var a3=0;if(aL){if(aL.search(/[fFeEgGpP]/)>-1){var aY=aL.match(/\%\.(\d{0,})?[eEfFgGpP]/);if(aY){a3=parseInt(aY[1],10)}else{a3=6}}else{if(aL.search(/[di]/)>-1){a3=0}}var aq=Math.pow(10,-a3);if(this.tickIntervalthis.breakPoints[0]&&aAthis.breakPoints[0]&&aAthis.breakPoints[0]&&aA=this.breakPoints[1]){return(aA-au)*ak/al}else{return(aA+this.breakPoints[1]-this.breakPoints[0]-au)*ak/al}};this.series_p2u=function(aA){return aA*al/ak+au}}}else{this.p2u=function(aA){return(aA-am)*al/ak+at};this.u2p=function(aA){return(aA-at)*ak/al+am};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(aA){return(aA-at)*ak/al};this.series_p2u=function(aA){return aA*al/ak+at}}else{this.series_u2p=function(aA){return(aA-au)*ak/al};this.series_p2u=function(aA){return aA*al/ak+au}}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(var av=0;av0){ah=-ap._textRenderer.height*Math.cos(-ap._textRenderer.angle)/2}else{ah=-ap.getHeight()+ap._textRenderer.height*Math.cos(ap._textRenderer.angle)/2}break;case"middle":ah=-ap.getHeight()/2;break;default:ah=-ap.getHeight()/2;break}}else{ah=-ap.getHeight()/2}var az=this.u2p(ap.value)+ah+"px";ap._elem.css("top",az);ap.pack()}}if(aq){var aw=this._label._elem.outerHeight(true);this._label._elem.css("top",ao-ak/2-aw/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}ay=null};function i(ai){var ah;ai=Math.abs(ai);if(ai>=10){ah="%d"}else{if(ai>1){if(ai===parseInt(ai,10)){ah="%d"}else{ah="%.1f"}}else{var aj=-Math.floor(Math.log(ai)/Math.LN10);ah="%."+aj+"f"}}return ah}var b=[0.1,0.2,0.3,0.4,0.5,0.8,1,2,3,4,5];var c=function(ai){var ah=b.indexOf(ai);if(ah>0){return b[ah-1]}else{return b[b.length-1]/100}};var k=function(ai){var ah=b.indexOf(ai);if(ah5){ah=10*aj}else{if(am>2){ah=5*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}else{if(am>5){ah=10*aj}else{if(am>4){ah=5*aj}else{if(am>3){ah=4*aj}else{if(am>2){ah=3*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}}}return ah}function Q(ai,ah){ah=ah||1;var ak=Math.floor(Math.log(ai)/Math.LN10);var am=Math.pow(10,ak);var al=ai/am;var aj;al=al/ah;if(al<=0.38){aj=0.1}else{if(al<=1.6){aj=0.2}else{if(al<=4){aj=0.5}else{if(al<=8){aj=1}else{if(al<=16){aj=2}else{aj=5}}}}}return aj*am}function x(aj,ai){var al=Math.floor(Math.log(aj)/Math.LN10);var an=Math.pow(10,al);var am=aj/an;var ah;var ak;am=am/ai;if(am<=0.38){ak=0.1}else{if(am<=1.6){ak=0.2}else{if(am<=4){ak=0.5}else{if(am<=8){ak=1}else{if(am<=16){ak=2}else{ak=5}}}}}ah=ak*an;return[ah,ak,an]}L.jqplot.LinearTickGenerator=function(an,aq,aj,ak,ao,ar){ao=(ao===null)?false:ao;ar=(ar===null||ao)?false:ar;if(an===aq){aq=(aq)?0:1}aj=aj||1;if(aqat){at=aB}if(ai>aA){aA=ai}})}an.width=at+Number(av);an.height=aA+Number(ax);var ak=an.getContext("2d");ak.save();ak.fillStyle=al;ak.fillRect(0,0,an.width,an.height);ak.restore();ak.translate(au,ar);ak.textAlign="left";ak.textBaseline="top";function aC(aE){var aF=parseInt(L(aE).css("line-height"),10);if(isNaN(aF)){aF=parseInt(L(aE).css("font-size"),10)*1.2}return aF}function aD(aF,aE,aS,aG,aO,aH){var aQ=aC(aF);var aK=L(aF).innerWidth();var aL=L(aF).innerHeight();var aN=aS.split(/\s+/);var aR=aN.length;var aP="";var aM=[];var aU=aO;var aT=aG;for(var aJ=0;aJaK){aM.push(aJ);aP="";aJ--}}if(aM.length===0){if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aS,aT,aO)}else{aP=aN.slice(0,aM[0]).join(" ");if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aP,aT,aU);aU+=aQ;for(var aJ=1,aI=aM.length;aJ0){ak.strokeRect(aI,aL,L(aG).innerWidth(),L(aG).innerHeight())}L(aG).find("div.jqplot-table-legend-swatch-outline").each(function(){var aU=L(this);ak.strokeStyle=aU.css("border-top-color");var aQ=aI+aU.position().left;var aR=aL+aU.position().top;ak.strokeRect(aQ,aR,aU.innerWidth(),aU.innerHeight());aQ+=parseInt(aU.css("padding-left"),10);aR+=parseInt(aU.css("padding-top"),10);var aT=aU.innerHeight()-2*parseInt(aU.css("padding-top"),10);var aP=aU.innerWidth()-2*parseInt(aU.css("padding-left"),10);var aS=aU.children("div.jqplot-table-legend-swatch");ak.fillStyle=aS.css("background-color");ak.fillRect(aQ,aR,aP,aT)});L(aG).find("td.jqplot-table-legend-label").each(function(){var aR=L(this);var aP=aI+aR.position().left;var aQ=aL+aR.position().top+parseInt(aR.css("padding-top"),10);ak.font=aR.jqplotGetComputedFontStyle();ak.fillStyle=aR.css("color");aD(aR,ak,aR.text(),aP,aQ,aM)});var aH=null}else{if(aN=="canvas"){ak.drawImage(aG,aI,aL)}}}}L(this).children().each(function(){aw(this,av,ax)});return an};L.fn.jqplotToImageStr=function(ai){var ah=L(this).jqplotToImageCanvas(ai);if(ah){return ah.toDataURL("image/png")}else{return null}};L.fn.jqplotToImageElem=function(ah){var ai=document.createElement("img");var aj=L(this).jqplotToImageStr(ah);ai.src=aj;return ai};L.fn.jqplotToImageElemStr=function(ah){var ai="";return ai};L.fn.jqplotSaveImage=function(){var ah=L(this).jqplotToImageStr({});if(ah){window.location.href=ah.replace("image/png","image/octet-stream")}};L.fn.jqplotViewImage=function(){var ai=L(this).jqplotToImageElemStr({});var aj=L(this).jqplotToImageStr({});if(ai){var ah=window.open("");ah.document.open("image/png");ah.document.write(ai);ah.document.close();ah=null}};var ag=function(){this.syntax=ag.config.syntax;this._type="jsDate";this.proxy=new Date();this.options={};this.locale=ag.regional.getLocale();this.formatString="";this.defaultCentury=ag.config.defaultCentury;switch(arguments.length){case 0:break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ak))};ag.prototype.getAbbrDayName=function(){return ag.regional[this.locale]["dayNamesShort"][this.proxy.getDay()]};ag.prototype.getAbbrMonthName=function(){return ag.regional[this.locale]["monthNamesShort"][this.proxy.getMonth()]};ag.prototype.getAMPM=function(){return this.proxy.getHours()>=12?"PM":"AM"};ag.prototype.getAmPm=function(){return this.proxy.getHours()>=12?"pm":"am"};ag.prototype.getCentury=function(){return parseInt(this.proxy.getFullYear()/100,10)};ag.prototype.getDate=function(){return this.proxy.getDate()};ag.prototype.getDay=function(){return this.proxy.getDay()};ag.prototype.getDayOfWeek=function(){var ah=this.proxy.getDay();return ah===0?7:ah};ag.prototype.getDayOfYear=function(){var ai=this.proxy;var ah=ai-new Date(""+ai.getFullYear()+"/1/1 GMT");ah+=ai.getTimezoneOffset()*60000;ai=null;return parseInt(ah/60000/60/24,10)+1};ag.prototype.getDayName=function(){return ag.regional[this.locale]["dayNames"][this.proxy.getDay()]};ag.prototype.getFullWeekOfYear=function(){var ak=this.proxy;var ah=this.getDayOfYear();var aj=6-ak.getDay();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getFullYear=function(){return this.proxy.getFullYear()};ag.prototype.getGmtOffset=function(){var ah=this.proxy.getTimezoneOffset()/60;var ai=ah<0?"+":"-";ah=Math.abs(ah);return ai+N(Math.floor(ah),2)+":"+N((ah%1)*60,2)};ag.prototype.getHours=function(){return this.proxy.getHours()};ag.prototype.getHours12=function(){var ah=this.proxy.getHours();return ah>12?ah-12:(ah==0?12:ah)};ag.prototype.getIsoWeek=function(){var ak=this.proxy;var aj=this.getWeekOfYear();var ah=(new Date(""+ak.getFullYear()+"/1/1")).getDay();var ai=aj+(ah>4||ah<=1?0:1);if(ai==53&&(new Date(""+ak.getFullYear()+"/12/31")).getDay()<4){ai=1}else{if(ai===0){ak=new ag(new Date(""+(ak.getFullYear()-1)+"/12/31"));ai=ak.getIsoWeek()}}ak=null;return ai};ag.prototype.getMilliseconds=function(){return this.proxy.getMilliseconds()};ag.prototype.getMinutes=function(){return this.proxy.getMinutes()};ag.prototype.getMonth=function(){return this.proxy.getMonth()};ag.prototype.getMonthName=function(){return ag.regional[this.locale]["monthNames"][this.proxy.getMonth()]};ag.prototype.getMonthNumber=function(){return this.proxy.getMonth()+1};ag.prototype.getSeconds=function(){return this.proxy.getSeconds()};ag.prototype.getShortYear=function(){return this.proxy.getYear()%100};ag.prototype.getTime=function(){return this.proxy.getTime()};ag.prototype.getTimezoneAbbr=function(){return this.proxy.toString().replace(/^.*\(([^)]+)\)$/,"$1")};ag.prototype.getTimezoneName=function(){var ah=/(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString());return ah[1]||ah[2]||"GMT"+this.getGmtOffset()};ag.prototype.getTimezoneOffset=function(){return this.proxy.getTimezoneOffset()};ag.prototype.getWeekOfYear=function(){var ah=this.getDayOfYear();var aj=7-this.getDayOfWeek();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getUnix=function(){return Math.round(this.proxy.getTime()/1000,0)};ag.prototype.getYear=function(){return this.proxy.getYear()};ag.prototype.next=function(ah){ah=ah||"day";return this.clone().add(1,ah)};ag.prototype.set=function(){switch(arguments.length){case 0:this.proxy=new Date();break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ah/12));var ai=aj.getMonth()+(ah%12);if(ai==12){ai=0;aj.setYear(aj.getFullYear()+1)}else{if(ai==-1){ai=11;aj.setYear(aj.getFullYear()-1)}}aj.setMonth(ai)},diff:function(al,aj){var ah=al.getFullYear()-aj.getFullYear();var ai=al.getMonth()-aj.getMonth()+(ah*12);var ak=al.getDate()-aj.getDate();return ai+(ak/30)}},year:{add:function(ai,ah){ai.setYear(ai.getFullYear()+Math[ah>0?"floor":"ceil"](ah))},diff:function(ai,ah){return E.month.diff(ai,ah)/12}}};for(var Y in E){if(Y.substring(Y.length-1)!="s"){E[Y+"s"]=E[Y]}}var H=function(al,ak,ai){if(ag.formats[ai]["shortcuts"][ak]){return ag.strftime(al,ag.formats[ai]["shortcuts"][ak],ai)}else{var ah=(ag.formats[ai]["codes"][ak]||"").split(".");var aj=al["get"+ah[0]]?al["get"+ah[0]]():"";if(ah[1]){aj=N(aj,ah[1])}return aj}};ag.strftime=function(an,ak,aj,ao){var ai="perl";var am=ag.regional.getLocale();if(aj&&ag.formats.hasOwnProperty(aj)){ai=aj}else{if(aj&&ag.regional.hasOwnProperty(aj)){am=aj}}if(ao&&ag.formats.hasOwnProperty(ao)){ai=ao}else{if(ao&&ag.regional.hasOwnProperty(ao)){am=ao}}if(l(an)!="[object Object]"||an._type!="jsDate"){an=new ag(an);an.locale=am}if(!ak){ak=an.formatString||ag.regional[am]["formatString"]}var ah=ak||"%Y-%m-%d",ap="",al;while(ah.length>0){if(al=ah.match(ag.formats[ai].codes.matcher)){ap+=ah.slice(0,al.index);ap+=(al[1]||"")+H(an,al[2],ai);ah=ah.slice(al.index+al[0].length)}else{ap+=ah;ah=""}}return ap};ag.formats={ISO:"%Y-%m-%dT%H:%M:%S.%N%G",SQL:"%Y-%m-%d %H:%M:%S"};ag.formats.perl={codes:{matcher:/()%(#?(%|[a-z]))/i,Y:"FullYear",y:"ShortYear.2",m:"MonthNumber.2","#m":"MonthNumber",B:"MonthName",b:"AbbrMonthName",d:"Date.2","#d":"Date",e:"Date",A:"DayName",a:"AbbrDayName",w:"Day",H:"Hours.2","#H":"Hours",I:"Hours12.2","#I":"Hours12",p:"AMPM",M:"Minutes.2","#M":"Minutes",S:"Seconds.2","#S":"Seconds",s:"Unix",N:"Milliseconds.3","#N":"Milliseconds",O:"TimezoneOffset",Z:"TimezoneName",G:"GmtOffset"},shortcuts:{F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",D:"%m/%d/%y","#c":"%a %b %e %H:%M:%S %Y",v:"%e-%b-%Y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.formats.php={codes:{matcher:/()%((%|[a-z]))/i,a:"AbbrDayName",A:"DayName",d:"Date.2",e:"Date",j:"DayOfYear.3",u:"DayOfWeek",w:"Day",U:"FullWeekOfYear.2",V:"IsoWeek.2",W:"WeekOfYear.2",b:"AbbrMonthName",B:"MonthName",m:"MonthNumber.2",h:"AbbrMonthName",C:"Century.2",y:"ShortYear.2",Y:"FullYear",H:"Hours.2",I:"Hours12.2",l:"Hours12",p:"AMPM",P:"AmPm",M:"Minutes.2",S:"Seconds.2",s:"Unix",O:"TimezoneOffset",z:"GmtOffset",Z:"TimezoneAbbr"},shortcuts:{D:"%m/%d/%y",F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.createDate=function(aj){if(aj==null){return new Date()}if(aj instanceof Date){return aj}if(typeof aj=="number"){return new Date(aj)}var ao=String(aj).replace(/^\s*(.+)\s*$/g,"$1");ao=ao.replace(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/,"$1/$2/$3");ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{4})/i,"$1 $2 $3");var an=ao.match(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i);if(an&&an.length>3){var at=parseFloat(an[3]);var am=ag.config.defaultCentury+at;am=String(am);ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i,an[1]+" "+an[2]+" "+am)}an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})[^0-9]/);function ar(ax,aw){var aC=parseFloat(aw[1]);var aB=parseFloat(aw[2]);var aA=parseFloat(aw[3]);var az=ag.config.defaultCentury;var av,au,aD,ay;if(aC>31){au=aA;aD=aB;av=az+aC}else{au=aB;aD=aC;av=az+aA}ay=aD+"/"+au+"/"+av;return ax.replace(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})/,ay)}if(an&&an.length>3){ao=ar(ao,an)}var an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})$/);if(an&&an.length>3){ao=ar(ao,an)}var al=0;var ai=ag.matchers.length;var aq,ah,ap=ao,ak;while(al31){ah=an;ai=am+ao}else{ah=ao;ai=am+an}var ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNamesShort"]);if(ap==-1){ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNames"])}ak.setFullYear(ai,ap,ah);ak.setHours(0,0,0,0);return ak}else{return al}}];function ab(aj,ak){if(ak.indexOf){return ak.indexOf(aj)}for(var ah=0,ai=ak.length;ah=ap)?"":Array(1+ap-au.length>>>0).join(aq);return at?au+ar:ar+au}function ak(ar){var aq=new String(ar);for(var ap=10;ap>0;ap--){if(aq==(aq=aq.replace(/^(\d+)(\d{3})/,"$1"+L.jqplot.sprintf.thousandsSeparator+"$2"))){break}}return aq}function aj(av,au,ax,ar,at,aq){var aw=ar-av.length;if(aw>0){var ap=" ";if(aq){ap=" "}if(ax||!at){av=an(av,ar,ap,ax)}else{av=av.slice(0,au.length)+an("",aw,"0",true)+av.slice(au.length)}}return av}function ao(ay,aq,aw,ar,ap,av,ax,au){var at=ay>>>0;aw=aw&&at&&{"2":"0b","8":"0","16":"0x"}[aq]||"";ay=aw+an(at.toString(aq),av||0,"0",false);return aj(ay,aw,ar,ap,ax,au)}function ah(au,av,ar,ap,at,aq){if(ap!=null){au=au.slice(0,ap)}return aj(au,"",av,ar,at,aq)}var ai=arguments,al=0,am=ai[al++];return am.replace(L.jqplot.sprintf.regex,function(aM,ax,ay,aB,aO,aJ,av){if(aM=="%%"){return"%"}var aD=false,az="",aA=false,aL=false,aw=false,au=false;for(var aI=0;ay&&aI-1?6:(av=="d")?0:void (0)}else{if(aJ=="*"){aJ=+ai[al++]}else{if(aJ.charAt(0)=="*"){aJ=+ai[aJ.slice(1,-1)]}else{aJ=+aJ}}}var aF=ax?ai[ax.slice(0,-1)]:ai[al++];switch(av){case"s":if(aF==null){return""}return ah(String(aF),aD,aB,aJ,aA,aw);case"c":return ah(String.fromCharCode(+aF),aD,aB,aJ,aA,aw);case"b":return ao(aF,2,aL,aD,aB,aJ,aA,aw);case"o":return ao(aF,8,aL,aD,aB,aJ,aA,aw);case"x":return ao(aF,16,aL,aD,aB,aJ,aA,aw);case"X":return ao(aF,16,aL,aD,aB,aJ,aA,aw).toUpperCase();case"u":return ao(aF,10,aL,aD,aB,aJ,aA,aw);case"i":var ar=parseInt(+aF,10);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"d":var ar=Math.round(+aF);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"e":case"E":case"f":case"F":case"g":case"G":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var at=["toExponential","toFixed","toPrecision"]["efg".indexOf(av.toLowerCase())];var aN=["toString","toUpperCase"]["eEfFgG".indexOf(av)%2];var aK=Math.abs(ar)[at](aJ);var aE=aK.toString().split(".");aE[0]=au?ak(aE[0]):aE[0];aK=aE.join(L.jqplot.sprintf.decimalMark);aF=aH+aK;var aC=aj(aF,aH,aD,aB,aA,aw)[aN]();return aC;case"p":case"P":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aE=String(Number(Math.abs(ar)).toExponential()).split(/e|E/);var aq=(aE[0].indexOf(".")!=-1)?aE[0].length-1:String(ar).length;var aG=(aE[1]<0)?-aE[1]-1:0;if(Math.abs(ar)<1){if(aq+aG<=aJ){aF=aH+Math.abs(ar).toPrecision(aq)}else{if(aq<=aJ-1){aF=aH+Math.abs(ar).toExponential(aq-1)}else{aF=aH+Math.abs(ar).toExponential(aJ-1)}}}else{var ap=(aq<=aJ)?aq:aJ;aF=aH+Math.abs(ar).toPrecision(ap)}var aN=["toString","toUpperCase"]["pP".indexOf(av)%2];return aj(aF,aH,aD,aB,aA,aw)[aN]();case"n":return"";default:return aM}})};L.jqplot.sprintf.thousandsSeparator=",";L.jqplot.sprintf.decimalMark=".";L.jqplot.sprintf.regex=/%%|%(\d+\$)?([-+#0&\' ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g;L.jqplot.getSignificantFigures=function(al){var an=String(Number(Math.abs(al)).toExponential()).split(/e|E/);var am=(an[0].indexOf(".")!=-1)?an[0].length-1:an[0].length;var ai=(an[1]<0)?-an[1]-1:0;var ah=parseInt(an[1],10);var aj=(ah+1>0)?ah+1:0;var ak=(am<=aj)?0:am-ah-1;return{significantDigits:am,digitsLeft:aj,digitsRight:ak,zeros:ai,exponent:ah}};L.jqplot.getPrecision=function(ah){return L.jqplot.getSignificantFigures(ah).digitsRight};var X=L.uiBackCompat!==false;L.jqplot.effects={effect:{}};var m="jqplot.storage.";L.extend(L.jqplot.effects,{version:"1.9pre",save:function(ai,aj){for(var ah=0;ah").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),ah={width:ai.width(),height:ai.height()},ak=document.activeElement;ai.wrap(al);if(ai[0]===ak||L.contains(ai[0],ak)){L(ak).focus()}al=ai.parent();if(ai.css("position")==="static"){al.css({position:"relative"});ai.css({position:"relative"})}else{L.extend(aj,{position:ai.css("position"),zIndex:ai.css("z-index")});L.each(["top","left","bottom","right"],function(am,an){aj[an]=ai.css(an);if(isNaN(parseInt(aj[an],10))){aj[an]="auto"}});ai.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}ai.css(ah);return al.css(aj).show()},removeWrapper:function(ah){var ai=document.activeElement;if(ah.parent().is(".ui-effects-wrapper")){ah.parent().replaceWith(ah);if(ah[0]===ai||L.contains(ah[0],ai)){L(ai).focus()}}return ah}});function j(ai,ah,aj,ak){if(L.isPlainObject(ai)){return ai}ai={effect:ai};if(ah===u){ah={}}if(L.isFunction(ah)){ak=ah;aj=null;ah={}}if(L.type(ah)==="number"||L.fx.speeds[ah]){ak=aj;aj=ah;ah={}}if(L.isFunction(aj)){ak=aj;aj=null}if(ah){L.extend(ai,ah)}aj=aj||ah.duration;ai.duration=L.fx.off?0:typeof aj==="number"?aj:aj in L.fx.speeds?L.fx.speeds[aj]:L.fx.speeds._default;ai.complete=ak||ah.complete;return ai}function ae(ah){if(!ah||typeof ah==="number"||L.fx.speeds[ah]){return true}if(typeof ah==="string"&&!L.jqplot.effects.effect[ah]){if(X&&L.jqplot.effects[ah]){return false}return true}return false}L.fn.extend({jqplotEffect:function(ap,aq,ai,ao){var an=j.apply(this,arguments),ak=an.mode,al=an.queue,am=L.jqplot.effects.effect[an.effect],ah=!am&&X&&L.jqplot.effects[an.effect];if(L.fx.off||!(am||ah)){if(ak){return this[ak](an.duration,an.complete)}else{return this.each(function(){if(an.complete){an.complete.call(this)}})}}function aj(au){var av=L(this),at=an.complete,aw=an.mode;function ar(){if(L.isFunction(at)){at.call(av[0])}if(L.isFunction(au)){au()}}if(av.is(":hidden")?aw==="hide":aw==="show"){ar()}else{am.call(av[0],an,ar)}}if(am){return al===false?this.each(aj):this.queue(al||"fx",aj)}else{return ah.call(this,{options:an,duration:an.duration,callback:an.complete,mode:an.mode})}}});var a=/up|down|vertical/,v=/up|left|vertical|horizontal/;L.jqplot.effects.effect.blind=function(aj,ao){var ak=L(this),ar=["position","top","bottom","left","right","height","width"],ap=L.jqplot.effects.setMode(ak,aj.mode||"hide"),au=aj.direction||"up",am=a.test(au),al=am?"height":"width",aq=am?"top":"left",aw=v.test(au),an={},av=ap==="show",ai,ah,at;if(ak.parent().is(".ui-effects-wrapper")){L.jqplot.effects.save(ak.parent(),ar)}else{L.jqplot.effects.save(ak,ar)}ak.show();at=parseInt(ak.css("top"),10);ai=L.jqplot.effects.createWrapper(ak).css({overflow:"hidden"});ah=am?ai[al]()+at:ai[al]();an[al]=av?String(ah):"0";if(!aw){ak.css(am?"bottom":"right",0).css(am?"top":"left","").css({position:"absolute"});an[aq]=av?"0":String(ah)}if(av){ai.css(al,0);if(!aw){ai.css(aq,ah)}}ai.animate(an,{duration:aj.duration,easing:aj.easing,queue:false,complete:function(){if(ap==="hide"){ak.hide()}L.jqplot.effects.restore(ak,ar);L.jqplot.effects.removeWrapper(ak);ao()}})}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js new file mode 100644 index 0000000..fb36057 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(b){b.jqplot.BezierCurveRenderer=function(){b.jqplot.LineRenderer.call(this)};b.jqplot.BezierCurveRenderer.prototype=new b.jqplot.LineRenderer();b.jqplot.BezierCurveRenderer.prototype.constructor=b.jqplot.BezierCurveRenderer;b.jqplot.BezierCurveRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var g=this._yaxis.series_u2p;var f=this.data;this.gridData=[];this._prevGridData=[];var d=this.index;if(f.length==2){if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,f[1][4]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,c[1][4]),g.call(this._yaxis,c[1][5])],[e.call(this._xaxis,c[1][2]),g.call(this._yaxis,c[1][3]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}else{if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,f[3][1]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,c[3][0]),g.call(this._yaxis,c[3][1])],[e.call(this._xaxis,c[2][0]),g.call(this._yaxis,c[2][1]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}};b.jqplot.BezierCurveRenderer.prototype.makeGridData=function(g,i){var f=this._xaxis.series_u2p;var h=this._yaxis.series_u2p;var e=[];var j=[];var d=this.index;if(g.length==2){if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,g[1][4]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,c[1][4]),h.call(this._yaxis,c[1][5])],[f.call(this._xaxis,c[1][2]),h.call(this._yaxis,c[1][3]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}else{if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,g[3][1]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,c[3][0]),h.call(this._yaxis,c[3][1])],[f.call(this._xaxis,c[2][0]),h.call(this._yaxis,c[2][1]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}return e};b.jqplot.BezierCurveRenderer.prototype.draw=function(c,g,d){var e;c.save();if(g.length){if(this.showLine){c.save();var f=(d!=null)?d:{};c.fillStyle=f.fillStyle||this.color;c.beginPath();c.moveTo(g[0][0],g[0][1]);c.bezierCurveTo(g[1][0],g[1][1],g[1][2],g[1][3],g[1][4],g[1][5]);c.lineTo(g[2][0],g[2][1]);if(g[3].length==2){c.lineTo(g[3][0],g[3][1])}else{c.bezierCurveTo(g[3][0],g[3][1],g[3][2],g[3][3],g[3][4],g[3][5])}c.closePath();c.fill();c.restore()}}c.restore()};b.jqplot.BezierCurveRenderer.prototype.drawShadow=function(c,e,d){};b.jqplot.BezierAxisRenderer=function(){b.jqplot.LinearAxisRenderer.call(this)};b.jqplot.BezierAxisRenderer.prototype=new b.jqplot.LinearAxisRenderer();b.jqplot.BezierAxisRenderer.prototype.constructor=b.jqplot.BezierAxisRenderer;b.jqplot.BezierAxisRenderer.prototype.init=function(f){b.extend(true,this,f);var c=this._dataBounds;for(var g=0;gc.max||c.max==null){c.max=k[e][0]}}else{if(k[e][1]c.max||c.max==null){c.max=k[e][1]}}}}else{if(this.name=="xaxis"||this.name=="x2axis"){if(k[0][0]c.max||c.max==null){c.max=k[0][0]}for(var e=0;e<5;e+=2){if(k[1][e]c.max||c.max==null){c.max=k[1][e]}}}else{if(k[0][1]c.max||c.max==null){c.max=k[0][1]}for(var e=1;e<6;e+=2){if(k[1][e]c.max||c.max==null){c.max=k[1][e]}}}}}};function a(g,f,d){d=d||{};d.axesDefaults=b.extend(true,{pad:0},d.axesDefaults);d.seriesDefaults=d.seriesDefaults||{};d.legend=b.extend(true,{placement:"outside"},d.legend);var c=false;if(d.seriesDefaults.renderer==b.jqplot.BezierCurveRenderer){c=true}else{if(d.series){for(var e=0;e0){this.data[q][u]+=this.data[q-1][u]}}this.data[this.data.length]=(u==1)?[this.data.length+1,s]:[s,this.data.length+1];this._data[this._data.length]=(u==1)?[this._data.length+1,s]:[s,this._data.length+1]}if(this.rendererOptions.groups>1){this.breakOnNull=true;var n=this.data.length;var v=parseInt(n/this.rendererOptions.groups,10);var r=0;for(var q=v;q570)?n[p]*0.8:n[p]+0.3*(255-n[p]);n[p]=parseInt(n[p],10)}q.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}return q}function i(v,u,s,t,o){var q=v,w=v-1,n,p,r=(o==="x")?0:1;if(q>0){p=t.series[w]._plotData[u][r];if((s*p)<0){n=i(w,u,s,t,o)}else{n=t.series[w].gridData[u][r]}}else{n=(r===0)?t.series[q]._xaxis.series_u2p(0):t.series[q]._yaxis.series_u2p(0)}return n}d.jqplot.BarRenderer.prototype.draw=function(E,L,q,G){var I;var A=d.extend({},q);var w=(A.shadow!=undefined)?A.shadow:this.shadow;var O=(A.showLine!=undefined)?A.showLine:this.showLine;var F=(A.fill!=undefined)?A.fill:this.fill;var p=this.xaxis;var J=this.yaxis;var y=this._xaxis.series_u2p;var K=this._yaxis.series_u2p;var D,C;this._dataColors=[];this._barPoints=[];if(this.barWidth==null){this.renderer.setBarWidth.call(this)}var N=this._plotSeriesInfo=this.renderer.calcSeriesNumbers.call(this);var x=N[0];var v=N[1];var s=N[2];var H=[];if(this._stack){this._barNudge=0}else{this._barNudge=(-Math.abs(v/2-0.5)+s)*(this.barWidth+this.barPadding)}if(O){var u=new d.jqplot.ColorGenerator(this.negativeSeriesColors);var B=new d.jqplot.ColorGenerator(this.seriesColors);var M=u.get(this.index);if(!this.useNegativeColors){M=A.fillStyle}var t=A.fillStyle;var r;var P;var o;if(this.barDirection=="vertical"){for(var I=0;I0&&I=0){o=this._yaxis.series_u2p(0)}else{if(this._yaxis.min>0){o=E.canvas.height}else{o=0}}}else{if(this.waterfall&&I==this.gridData.length-1){if(this._yaxis.min<=0&&this._yaxis.max>=0){o=this._yaxis.series_u2p(0)}else{if(this._yaxis.min>0){o=E.canvas.height}else{o=0}}}else{o=E.canvas.height}}}}}if((this.fillToZero&&this._plotData[I][1]<0)||(this.waterfall&&this._data[I][1]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}else{A.fillStyle=M}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}if(!this.fillToZero||this._plotData[I][1]>=0){H.push([r-this.barWidth/2,o]);H.push([r-this.barWidth/2,L[I][1]]);H.push([r+this.barWidth/2,L[I][1]]);H.push([r+this.barWidth/2,o])}else{H.push([r-this.barWidth/2,L[I][1]]);H.push([r-this.barWidth/2,o]);H.push([r+this.barWidth/2,o]);H.push([r+this.barWidth/2,L[I][1]])}this._barPoints.push(H);if(w&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,H,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,H,A)}}else{if(this.barDirection=="horizontal"){for(var I=0;I0&&I=0){P=this._xaxis.series_u2p(0)}else{if(this._xaxis.min>0){P=0}else{P=0}}}else{if(this.waterfall&&I==this.gridData.length-1){if(this._xaxis.min<=0&&this._xaxis.max>=0){P=this._xaxis.series_u2p(0)}else{if(this._xaxis.min>0){P=0}else{P=E.canvas.width}}}else{P=0}}}}}if((this.fillToZero&&this._plotData[I][0]<0)||(this.waterfall&&this._data[I][0]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}else{A.fillStyle=M}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}if(!this.fillToZero||this._plotData[I][0]>=0){H.push([P,r+this.barWidth/2]);H.push([P,r-this.barWidth/2]);H.push([L[I][0],r-this.barWidth/2]);H.push([L[I][0],r+this.barWidth/2])}else{H.push([L[I][0],r+this.barWidth/2]);H.push([L[I][0],r-this.barWidth/2]);H.push([P,r-this.barWidth/2]);H.push([P,r+this.barWidth/2])}this._barPoints.push(H);if(w&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,H,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,H,A)}}}}if(this.highlightColors.length==0){this.highlightColors=d.jqplot.computeHighlightColors(this._dataColors)}else{if(typeof(this.highlightColors)=="string"){var N=this.highlightColors;this.highlightColors=[];for(var I=0;I")}k=a.extend(true,{},this.css,k);c=a('
');this.canvas._elem.append(c);this.escapeHtml?c.text(p):c.html(p);delete k.position;delete k.marginRight;delete k.marginLeft;if(!k.background&&!k.backgroundColor&&!k.backgroundImage){k.background=j.next()}c.css(k);n=c.outerWidth();g=c.outerHeight();e=o[0]-n/2+"px";m=o[1]-g/2+"px";c.css({left:e,top:m});c=null}};a.jqplot.BlockCanvas=function(){a.jqplot.ElemContainer.call(this);this._ctx};a.jqplot.BlockCanvas.prototype=new a.jqplot.ElemContainer();a.jqplot.BlockCanvas.prototype.constructor=a.jqplot.BlockCanvas;a.jqplot.BlockCanvas.prototype.createElement=function(i,e,c){this._offsets=i;var b="jqplot-blockCanvas";if(e!=undefined){b=e}var g;if(this._elem){g=this._elem.get(0)}else{g=document.createElement("div")}if(c!=undefined){this._plotDimensions=c}var d=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var f=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=a(g);this._elem.css({position:"absolute",width:d,height:f,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(b);return this._elem};a.jqplot.BlockCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.bubbleRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.bubbleRenderer.min.js new file mode 100644 index 0000000..d44a7cd --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.bubbleRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(f){var d=function(m){return Math.max.apply(Math,m)};var j=function(m){return Math.min.apply(Math,m)};f.jqplot.BubbleRenderer=function(){f.jqplot.LineRenderer.call(this)};f.jqplot.BubbleRenderer.prototype=new f.jqplot.LineRenderer();f.jqplot.BubbleRenderer.prototype.constructor=f.jqplot.BubbleRenderer;f.jqplot.BubbleRenderer.prototype.init=function(w,t){this.varyBubbleColors=true;this.autoscaleBubbles=true;this.autoscaleMultiplier=1;this.autoscalePointsFactor=-0.07;this.escapeHtml=true;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.bubbleAlpha=1;this.highlightAlpha=null;this.bubbleGradients=false;this.showLabels=true;this.radii=[];this.maxRadius=0;this._highlightedPoint=null;this.labels=[];this.bubbleCanvases=[];this._type="bubble";if(w.highlightMouseDown&&w.highlightMouseOver==null){w.highlightMouseOver=false}f.extend(true,this,w);if(this.highlightAlpha==null){this.highlightAlpha=this.bubbleAlpha;if(this.bubbleGradients){this.highlightAlpha=0.35}}this.autoscaleMultiplier=this.autoscaleMultiplier*Math.pow(this.data.length,this.autoscalePointsFactor);this._highlightedPoint=null;var n;for(var r=0;r570)?u[q]*0.8:u[q]+0.3*(255-u[q]);u[q]=parseInt(u[q],10)}this.highlightColors.push("rgba("+u[0]+","+u[1]+","+u[2]+", "+this.highlightAlpha+")")}}this.highlightColorGenerator=new f.jqplot.ColorGenerator(this.highlightColors);var m={fill:true,isarc:true,angle:this.shadowAngle,alpha:this.shadowAlpha,closePath:true};this.renderer.shadowRenderer.init(m);this.canvas=new f.jqplot.DivCanvas();this.canvas._plotDimensions=this._plotDimensions;t.eventListenerHooks.addOnce("jqplotMouseMove",a);t.eventListenerHooks.addOnce("jqplotMouseDown",b);t.eventListenerHooks.addOnce("jqplotMouseUp",k);t.eventListenerHooks.addOnce("jqplotClick",g);t.eventListenerHooks.addOnce("jqplotRightClick",l);t.postDrawHooks.addOnce(h)};f.jqplot.BubbleRenderer.prototype.setGridData=function(w){var q=this._xaxis.series_u2p;var m=this._yaxis.series_u2p;var t=this._plotData;this.gridData=[];var s=[];this.radii=[];var v=Math.min(w._height,w._width);for(var u=0;u');if(this.escapeHtml){p.text(z)}else{p.html(z)}this.canvas._elem.append(p);var H=f(p).outerHeight();var v=f(p).outerWidth();var B=J[1]-0.5*H;var o=J[0]-0.5*v;p.css({top:B,left:o});this.labels[C]=f(p)}}};f.jqplot.DivCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.DivCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.DivCanvas.prototype.constructor=f.jqplot.DivCanvas;f.jqplot.DivCanvas.prototype.createElement=function(s,p,n){this._offsets=s;var m="jqplot-DivCanvas";if(p!=undefined){m=p}var r;if(this._elem){r=this._elem.get(0)}else{r=document.createElement("div")}if(n!=undefined){this._plotDimensions=n}var o=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var q=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=f(r);this._elem.css({position:"absolute",width:o,height:q,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(m);return this._elem};f.jqplot.DivCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx};f.jqplot.BubbleCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.BubbleCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.BubbleCanvas.prototype.constructor=f.jqplot.BubbleCanvas;f.jqplot.BubbleCanvas.prototype.createElement=function(n,u,s){var m="jqplot-bubble-point";var q;if(this._elem){q=this._elem.get(0)}else{q=document.createElement("canvas")}q.width=(s!=null)?2*s:q.width;q.height=(s!=null)?2*s:q.height;this._elem=f(q);var o=(n!=null&&s!=null)?n-s:this._elem.css("left");var p=(u!=null&&s!=null)?u-s:this._elem.css("top");this._elem.css({position:"absolute",left:o,top:p});this._elem.addClass(m);if(f.jqplot.use_excanvas){window.G_vmlCanvasManager.init_(document);q=window.G_vmlCanvasManager.initElement(q)}return this._elem};f.jqplot.BubbleCanvas.prototype.draw=function(m,s,v,p){var D=this._ctx;var B=D.canvas.width/2;var z=D.canvas.height/2;D.save();if(v&&!f.jqplot.use_excanvas){m=m*1.04;var o=f.jqplot.getColorComponents(s);var u="rgba("+Math.round(o[0]+0.8*(255-o[0]))+", "+Math.round(o[1]+0.8*(255-o[1]))+", "+Math.round(o[2]+0.8*(255-o[2]))+", "+o[3]+")";var t="rgba("+o[0]+", "+o[1]+", "+o[2]+", 0)";var C=0.35*m;var A=B-Math.cos(p)*0.33*m;var n=z-Math.sin(p)*0.33*m;var w=D.createRadialGradient(A,n,C,B,z,m);w.addColorStop(0,u);w.addColorStop(0.93,s);w.addColorStop(0.96,t);w.addColorStop(1,t);D.fillStyle=w;D.fillRect(0,0,D.canvas.width,D.canvas.height)}else{D.fillStyle=s;D.strokeStyle=s;D.lineWidth=1;D.beginPath();var q=2*Math.PI;D.arc(B,z,m,0,q,0);D.closePath();D.fill()}D.restore()};f.jqplot.BubbleCanvas.prototype.setContext=function(){this._ctx=this._elem.get(0).getContext("2d");return this._ctx};f.jqplot.BubbleAxisRenderer=function(){f.jqplot.LinearAxisRenderer.call(this)};f.jqplot.BubbleAxisRenderer.prototype=new f.jqplot.LinearAxisRenderer();f.jqplot.BubbleAxisRenderer.prototype.constructor=f.jqplot.BubbleAxisRenderer;f.jqplot.BubbleAxisRenderer.prototype.init=function(n){f.extend(true,this,n);var I=this._dataBounds;var H=0,v=0,m=0,y=0,q=0,r=0,D=0,t=0,F=0,z=0;for(var E=0;EI.max||I.max==null){I.max=G[B][0];m=E;y=B;q=G[B][2];t=x.maxRadius;F=x.autoscaleMultiplier}}else{if(G[B][1]I.max||I.max==null){I.max=G[B][1];m=E;y=B;q=G[B][2];t=x.maxRadius;F=x.autoscaleMultiplier}}}}var o=r/D;var w=q/t;var C=I.max-I.min;var A=Math.min(this._plotDimensions.width,this._plotDimensions.height);var p=o*z/3*C;var u=w*F/3*C;I.max+=u;I.min-=p};function e(p,v,q){p.plugins.bubbleRenderer.highlightLabelCanvas.empty();var z=p.series[v];var n=p.plugins.bubbleRenderer.highlightCanvas;var w=n._ctx;w.clearRect(0,0,w.canvas.width,w.canvas.height);z._highlightedPoint=q;p.plugins.bubbleRenderer.highlightedSeriesIndex=v;var o=z.highlightColorGenerator.get(q);var u=z.gridData[q][0],t=z.gridData[q][1],m=z.gridData[q][2];w.save();w.fillStyle=o;w.strokeStyle=o;w.lineWidth=1;w.beginPath();w.arc(u,t,m,0,2*Math.PI,0);w.closePath();w.fill();w.restore();if(z.labels[q]){p.plugins.bubbleRenderer.highlightLabel=z.labels[q].clone();p.plugins.bubbleRenderer.highlightLabel.appendTo(p.plugins.bubbleRenderer.highlightLabelCanvas);p.plugins.bubbleRenderer.highlightLabel.addClass("jqplot-bubble-label-highlight")}}function i(p){var m=p.plugins.bubbleRenderer.highlightCanvas;var o=p.plugins.bubbleRenderer.highlightedSeriesIndex;p.plugins.bubbleRenderer.highlightLabelCanvas.empty();m._ctx.clearRect(0,0,m._ctx.canvas.width,m._ctx.canvas.height);for(var n=0;n');var q=this._gridPadding.top;var p=this._gridPadding.left;var n=this._plotDimensions.width-this._gridPadding.left-this._gridPadding.right;var m=this._plotDimensions.height-this._gridPadding.top-this._gridPadding.bottom;this.plugins.bubbleRenderer.highlightLabelCanvas.css({top:q,left:p,width:n+"px",height:m+"px"});this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-bubbleRenderer-highlight-canvas",this._plotDimensions,this));this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightLabelCanvas);var o=this.plugins.bubbleRenderer.highlightCanvas.setContext()}function c(q,p,n){n=n||{};n.axesDefaults=n.axesDefaults||{};n.seriesDefaults=n.seriesDefaults||{};var m=false;if(n.seriesDefaults.renderer==f.jqplot.BubbleRenderer){m=true}else{if(n.series){for(var o=0;ot){y=w;w=t;t=y}if(v>s){y=v;v=s;s=y}var u=(o>=w&&o<=t&&n>=v&&n<=s);return u}function a(z,w,r,A,x){var y=x.plugins.canvasOverlay;var v=y.objects;var s=v.length;var u,o=false;var q;for(var t=0;t-1){return c/this.pt2px}else{if(b.indexOf("pt")>-1){return c}else{if(b.indexOf("em")>-1){return c*12}else{if(b.indexOf("%")>-1){return c*12/100}else{return c/this.pt2px}}}}};a.jqplot.CanvasTextRenderer.prototype.fontWeight2Float=function(b){if(Number(b)){return b/400}else{switch(b){case"normal":return 1;break;case"bold":return 1.75;break;case"bolder":return 2.25;break;case"lighter":return 0.75;break;default:return 1;break}}};a.jqplot.CanvasTextRenderer.prototype.getText=function(){return this.text};a.jqplot.CanvasTextRenderer.prototype.setText=function(c,b){this.text=c;this.setWidth(b);return this};a.jqplot.CanvasTextRenderer.prototype.getWidth=function(b){return this.width};a.jqplot.CanvasTextRenderer.prototype.setWidth=function(c,b){if(!b){this.width=this.measure(c,this.text)}else{this.width=b}return this};a.jqplot.CanvasTextRenderer.prototype.getHeight=function(b){return this.height};a.jqplot.CanvasTextRenderer.prototype.setHeight=function(b){if(!b){this.height=this.normalizedFontSize*this.pt2px}else{this.height=b}return this};a.jqplot.CanvasTextRenderer.prototype.letter=function(b){return this.letters[b]};a.jqplot.CanvasTextRenderer.prototype.ascent=function(){return this.normalizedFontSize};a.jqplot.CanvasTextRenderer.prototype.descent=function(){return 7*this.normalizedFontSize/25};a.jqplot.CanvasTextRenderer.prototype.measure=function(d,g){var f=0;var b=g.length;for(var e=0;e30)?2:2+(30-this.normalizedFontSize)/20;s.lineWidth=t*k*this.fontWeight2Float(this.fontWeight);for(var g=0;g":{width:24,points:[[4,18],[20,9],[4,0]]},"?":{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},"@":{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},A:{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},B:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},C:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},D:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},E:{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},F:{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},G:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},H:{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},I:{width:8,points:[[4,21],[4,0]]},J:{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},K:{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},L:{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},M:{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},N:{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},O:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},P:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},Q:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},R:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},S:{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},T:{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},U:{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},V:{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},W:{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},X:{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},Y:{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},Z:{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},"[":{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},"\\":{width:14,points:[[0,21],[14,-3]]},"]":{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},"^":{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},_:{width:16,points:[[0,-2],[16,-2]]},"`":{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},a:{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},b:{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},c:{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},d:{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},e:{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},f:{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},g:{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},h:{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},i:{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},j:{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},k:{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},l:{width:8,points:[[4,21],[4,0]]},m:{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},n:{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},o:{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},p:{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},q:{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},r:{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},s:{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},t:{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},u:{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},v:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},w:{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},x:{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},y:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},z:{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},"{":{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},"|":{width:8,points:[[4,25],[4,-7]]},"}":{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},"~":{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}};a.jqplot.CanvasFontRenderer=function(b){b=b||{};if(!b.pt2px){b.pt2px=1.5}a.jqplot.CanvasTextRenderer.call(this,b)};a.jqplot.CanvasFontRenderer.prototype=new a.jqplot.CanvasTextRenderer({});a.jqplot.CanvasFontRenderer.prototype.constructor=a.jqplot.CanvasFontRenderer;a.jqplot.CanvasFontRenderer.prototype.measure=function(c,e){var d=this.fontSize+" "+this.fontFamily;c.save();c.font=d;var b=c.measureText(e).width;c.restore();return b};a.jqplot.CanvasFontRenderer.prototype.draw=function(e,g){var c=0;var h=this.height*0.72;e.save();var d,b;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){d=0;b=-Math.sin(this.angle)*this.width}else{if((0b.max||b.max==null){b.max=h[c][0]}}else{if(h[c][1]b.max||b.max==null){b.max=h[c][1]}}}}if(this.groupLabels.length){this.groups=this.groupLabels.length}};a.jqplot.CategoryAxisRenderer.prototype.createTicks=function(){var D=this._ticks;var z=this.ticks;var F=this.name;var C=this._dataBounds;var v,A;var q,w;var d,c;var b,x;if(z.length){if(this.groups>1&&!this._grouped){var r=z.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x1&&!this._grouped){var r=y.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x0&&o');if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var g=this._label.draw(b,j);g.appendTo(this._elem)}var f=this._ticks;for(var e=0;e');g.html(this.groupLabels[e]);this._groupLabels.push(g);g.appendTo(this._elem)}}return this._elem};a.jqplot.CategoryAxisRenderer.prototype.set=function(){var e=0;var m;var k=0;var f=0;var d=(this._label==null)?false:this._label.show;if(this.show){var n=this._ticks;for(var c=0;ce){e=m}}}var j=0;for(var c=0;cj){j=m}}if(d){k=this._label._elem.outerWidth(true);f=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){e+=j+k;this._elem.css({width:e+"px",left:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}else{e+=j+k;this._elem.css({width:e+"px",right:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}}}}};a.jqplot.CategoryAxisRenderer.prototype.pack=function(e,c){var C=this._ticks;var v=this.max;var s=this.min;var n=c.max;var l=c.min;var q=(this._label==null)?false:this._label.show;var x;for(var r in e){this._elem.css(r,e[r])}this._offsets=c;var g=n-l;var k=v-s;if(!this.reverse){this.u2p=function(h){return(h-s)*g/k+l};this.p2u=function(h){return(h-l)*k/g+s};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(h-s)*g/k};this.series_p2u=function(h){return h*k/g+s}}else{this.series_u2p=function(h){return(h-v)*g/k};this.series_p2u=function(h){return h*k/g+v}}}else{this.u2p=function(h){return l+(v-h)*g/k};this.p2u=function(h){return s+(h-l)*k/g};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(v-h)*g/k};this.series_p2u=function(h){return h*k/g+v}}else{this.series_u2p=function(h){return(s-h)*g/k};this.series_p2u=function(h){return h*k/g+s}}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(x=0;x=this._ticks.length-1){continue}if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();B+=r.left+o.outerWidth(true)/2;f++}}B=B/f;this._groupLabels[x].css({left:(B-this._groupLabels[x].outerWidth(true)/2)});this._groupLabels[x].css(z[0],z[1])}}else{for(x=0;x0){b=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{b=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"middle":b=-o.getHeight()/2;break;default:b=-o.getHeight()/2;break}}else{b=-o.getHeight()/2}var D=this.u2p(o.value)+b+"px";o._elem.css("top",D);o.pack()}}var z=["left",0];if(q){var y=this._label._elem.outerHeight(true);this._label._elem.css("top",n-g/2-y/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px");z=["left",this._label._elem.outerWidth(true)]}else{this._label._elem.css("right","0px");z=["right",this._label._elem.outerWidth(true)]}this._label.pack()}var d=parseInt(this._ticks.length/this.groups,10)+1;for(x=0;x=this._ticks.length-1){continue}if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();B+=r.top+o.outerHeight()/2;f++}}B=B/f;this._groupLabels[x].css({top:B-this._groupLabels[x].outerHeight()/2});this._groupLabels[x].css(z[0],z[1])}}}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.ciParser.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.ciParser.min.js new file mode 100644 index 0000000..e17e792 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.ciParser.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.ciParser=function(g,l){var m=[],o,n,h,f,e,c;if(typeof(g)=="string"){g=a.jqplot.JSON.parse(g,d)}else{if(typeof(g)=="object"){for(e in g){for(h=0;h=0){i=/^\/Date\((-?[0-9]+)\)\/$/.exec(k);if(i){return parseInt(i[1],10)}}return k}}for(var b in g){o=[];n=g[b];switch(b){case"PriceTicks":for(h=0;h6&&Math.abs(G.y-I._zoom.start[1])>6)||(I.constrainZoomTo=="x"&&Math.abs(G.x-I._zoom.start[0])>6)||(I.constrainZoomTo=="y"&&Math.abs(G.y-I._zoom.start[1])>6)){if(!C.plugins.cursor.zoomProxy){for(var y in t){if(I._zoom.axes[y]==undefined){I._zoom.axes[y]={};I._zoom.axes[y].numberTicks=F[y].numberTicks;I._zoom.axes[y].tickInterval=F[y].tickInterval;I._zoom.axes[y].daTickInterval=F[y].daTickInterval;I._zoom.axes[y].min=F[y].min;I._zoom.axes[y].max=F[y].max;I._zoom.axes[y].tickFormatString=(F[y].tickOptions!=null)?F[y].tickOptions.formatString:""}if((I.constrainZoomTo=="none")||(I.constrainZoomTo=="x"&&y.charAt(0)=="x")||(I.constrainZoomTo=="y"&&y.charAt(0)=="y")){z=t[y];if(z!=null){if(z>w[y]){v=w[y];x=z}else{D=w[y]-z;v=z;x=w[y]}q=F[y];H=null;if(q.alignTicks){if(q.name==="x2axis"&&C.axes.xaxis.show){H=C.axes.xaxis.numberTicks}else{if(q.name.charAt(0)==="y"&&q.name!=="yaxis"&&q.name!=="yMidAxis"&&C.axes.yaxis.show){H=C.axes.yaxis.numberTicks}}}if(this.looseZoom&&(F[y].renderer.constructor===j.jqplot.LinearAxisRenderer||F[y].renderer.constructor===j.jqplot.LogAxisRenderer)){J=j.jqplot.LinearTickGenerator(v,x,q._scalefact,H);if(F[y].tickInset&&J[0]F[y].max-F[y].tickInset*F[y].tickInterval){J[1]-=J[4];J[2]-=1}if(F[y].renderer.constructor===j.jqplot.LogAxisRenderer&&J[0]"}if(J.useAxesFormatters){for(var D=0;D"}w+=j.jqplot.sprintf(J.tooltipFormatString,t,z,x);N=true}}}}J._tooltipElem.html(w)}function g(C,A){var E=A.plugins.cursor;var z=E.cursorCanvas._ctx;z.clearRect(0,0,z.canvas.width,z.canvas.height);if(E.showVerticalLine){E.shapeRenderer.draw(z,[[C.x,0],[C.x,z.canvas.height]])}if(E.showHorizontalLine){E.shapeRenderer.draw(z,[[0,C.y],[z.canvas.width,C.y]])}var G=d(A,C.x,C.y);if(E.showCursorLegend){var r=j(A.targetId+" td.jqplot-cursor-legend-label");for(var B=0;B0;r--){s=v[r-1];if(q[s].show){u[s]=q[s].series_p2u(w[s.charAt(0)])}}return{offsets:t,gridPos:w,dataPos:u}}function h(z){var x=z.data.plot;var y=x.plugins.cursor;if(y.show&&y.zoom&&y._zoom.started&&!y.zoomTarget){z.preventDefault();var B=y.zoomCanvas._ctx;var v=o(z);var w=v.gridPos;var t=v.dataPos;y._zoom.gridpos=w;y._zoom.datapos=t;y._zoom.zooming=true;var u=w.x;var s=w.y;var A=B.canvas.height;var q=B.canvas.width;if(y.showTooltip&&!y.onGrid&&y.showTooltipOutsideZoom){e(w,t,x);if(y.followMouse){n(w,x)}}if(y.constrainZoomTo=="x"){y._zoom.end=[u,A]}else{if(y.constrainZoomTo=="y"){y._zoom.end=[q,s]}else{y._zoom.end=[u,s]}}var r=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(r&&!r().isCollapsed){r().collapse()}}l.call(y);B=null}}function a(w,s,r,x,t){var v=t.plugins.cursor;if(t.plugins.mobile){j(document).one("vmouseup.jqplot_cursor",{plot:t},p)}else{j(document).one("mouseup.jqplot_cursor",{plot:t},p)}var u=t.axes;if(document.onselectstart!=undefined){v._oldHandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!=undefined){v._oldHandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}if(document.onmousedown!=undefined){v._oldHandlers.onmousedown=document.onmousedown;document.onmousedown=function(){return false}}if(v.zoom){if(!v.zoomProxy){var y=v.zoomCanvas._ctx;y.clearRect(0,0,y.canvas.width,y.canvas.height);y=null}if(v.constrainZoomTo=="x"){v._zoom.start=[s.x,0]}else{if(v.constrainZoomTo=="y"){v._zoom.start=[0,s.y]}else{v._zoom.start=[s.x,s.y]}}v._zoom.started=true;for(var q in r){v._zoom.axes.start[q]=r[q]}if(t.plugins.mobile){j(document).bind("vmousemove.jqplotCursor",{plot:t},h)}else{j(document).bind("mousemove.jqplotCursor",{plot:t},h)}}}function p(y){var v=y.data.plot;var x=v.plugins.cursor;if(x.zoom&&x._zoom.zooming&&!x.zoomTarget){var u=x._zoom.gridpos.x;var r=x._zoom.gridpos.y;var t=x._zoom.datapos;var z=x.zoomCanvas._ctx.canvas.height;var q=x.zoomCanvas._ctx.canvas.width;var w=v.axes;if(x.constrainOutsideZoom&&!x.onGrid){if(u<0){u=0}else{if(u>q){u=q}}if(r<0){r=0}else{if(r>z){r=z}}for(var s in t){if(t[s]){if(s.charAt(0)=="x"){t[s]=w[s].series_p2u(u)}else{t[s]=w[s].series_p2u(r)}}}}if(x.constrainZoomTo=="x"){r=z}else{if(x.constrainZoomTo=="y"){u=q}}x._zoom.end=[u,r];x._zoom.gridpos={x:u,y:r};x.doZoom(x._zoom.gridpos,t,v,x)}x._zoom.started=false;x._zoom.zooming=false;j(document).unbind("mousemove.jqplotCursor",h);if(document.onselectstart!=undefined&&x._oldHandlers.onselectstart!=null){document.onselectstart=x._oldHandlers.onselectstart;x._oldHandlers.onselectstart=null}if(document.ondrag!=undefined&&x._oldHandlers.ondrag!=null){document.ondrag=x._oldHandlers.ondrag;x._oldHandlers.ondrag=null}if(document.onmousedown!=undefined&&x._oldHandlers.onmousedown!=null){document.onmousedown=x._oldHandlers.onmousedown;x._oldHandlers.onmousedown=null}}function l(){var y=this._zoom.start;var u=this._zoom.end;var s=this.zoomCanvas._ctx;var r,v,x,q;if(u[0]>y[0]){r=y[0];q=u[0]-y[0]}else{r=u[0];q=y[0]-u[0]}if(u[1]>y[1]){v=y[1];x=u[1]-y[1]}else{v=u[1];x=y[1]-u[1]}s.fillStyle="rgba(0,0,0,0.2)";s.strokeStyle="#999999";s.lineWidth=1;s.clearRect(0,0,s.canvas.width,s.canvas.height);s.fillRect(0,0,s.canvas.width,s.canvas.height);s.clearRect(r,v,q,x);s.strokeRect(r,v,q,x);s=null}j.jqplot.CursorLegendRenderer=function(q){j.jqplot.TableLegendRenderer.call(this,q);this.formatString="%s"};j.jqplot.CursorLegendRenderer.prototype=new j.jqplot.TableLegendRenderer();j.jqplot.CursorLegendRenderer.prototype.constructor=j.jqplot.CursorLegendRenderer;j.jqplot.CursorLegendRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}if(this.show){var w=this._series,A;var r=document.createElement("table");this._elem=j(r);r=null;this._elem.addClass("jqplot-legend jqplot-cursor-legend");this._elem.css("position","absolute");var q=false;for(var x=0;x').appendTo(this._elem);E.data("seriesIndex",s);j('
').appendTo(E);var G=j('');G.appendTo(E);G.data("seriesIndex",s);if(this.escapeHtml){G.text(D)}else{G.html(D)}E=null;G=null}return this._elem}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js new file mode 100644 index 0000000..a295489 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(h){h.jqplot.DateAxisRenderer=function(){h.jqplot.LinearAxisRenderer.call(this);this.date=new h.jsDate()};var c=1000;var e=60*c;var f=60*e;var l=24*f;var b=7*l;var j=30.4368499*l;var k=365.242199*l;var g=[31,28,31,30,31,30,31,30,31,30,31,30];var i=["%M:%S.%#N","%M:%S.%#N","%M:%S.%#N","%M:%S","%M:%S","%M:%S","%M:%S","%H:%M:%S","%H:%M:%S","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%a %H:%M","%a %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%v","%v","%v","%v","%v","%v","%v"];var m=[0.1*c,0.2*c,0.5*c,c,2*c,5*c,10*c,15*c,30*c,e,2*e,5*e,10*e,15*e,30*e,f,2*f,4*f,6*f,8*f,12*f,l,2*l,3*l,4*l,5*l,b,2*b];var d=[];function a(p,s,t){var o=Number.MAX_VALUE;var u,r,v;for(var q=0,n=m.length;qC.max)||C.max==null){C.max=y[r][0]}if(r>0){o=Math.abs(y[r][0]-y[r-1][0]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}x+=o}else{y[r][1]=new h.jsDate(y[r][1]).getTime();A[r][1]=new h.jsDate(y[r][1]).getTime();z[r][1]=new h.jsDate(y[r][1]).getTime();if((y[r][1]!=null&&y[r][1]C.max)||C.max==null){C.max=y[r][1]}if(r>0){o=Math.abs(y[r][1]-y[r-1][1]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}}x+=o}if(D.renderer.bands){if(D.renderer.bands.hiData.length){var w=D.renderer.bands.hiData;for(var r=0,q=w.length;rC.max)||C.max==null){C.max=w[r][0]}}else{w[r][1]=new h.jsDate(w[r][1]).getTime();if((w[r][1]!=null&&w[r][1]>C.max)||C.max==null){C.max=w[r][1]}}}}if(D.renderer.bands.lowData.length){var w=D.renderer.bands.lowData;for(var r=0,q=w.length;r6){D=6}}var V=new h.jsDate(ae).setDate(1).setHours(0,0,0,0);var q=new h.jsDate(J);var z=new h.jsDate(J).setDate(1).setHours(0,0,0,0);if(q.getTime()!==z.getTime()){z=z.add(1,"month")}var S=z.diff(V,"month");ab=Math.ceil(S/D)+1;this.min=V.getTime();this.max=V.clone().add((ab-1)*D,"month").getTime();this.numberTicks=ab;for(var aa=0;aa200){this.numberTicks=parseInt(3+(n-200)/100,10)}else{this.numberTicks=2}}}O=B/(this.numberTicks-1)/1000;if(this.daTickInterval==null){this.daTickInterval=[O,"seconds"]}for(var aa=0;aa570)?n[o]*0.8:n[o]+0.3*(255-n[o]);n[o]=parseInt(n[o],10)}this.highlightColors.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}}t.postParseOptionsHooks.addOnce(l);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",b);t.eventListenerHooks.addOnce("jqplotMouseDown",a);t.eventListenerHooks.addOnce("jqplotMouseUp",j);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",m);t.postDrawHooks.addOnce(h)};e.jqplot.DonutRenderer.prototype.setGridData=function(s){var o=[];var t=[];var n=this.startAngle/180*Math.PI;var r=0;this._drawData=false;for(var q=0;q0){o[q]+=o[q-1]}r+=this.data[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q0){o[q]+=o[q-1]}r+=s[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q6.282+this.startAngle){t=6.282+this.startAngle;if(u>t){u=6.281+this.startAngle}}if(u>=t){return}x.beginPath();x.fillStyle=p;x.strokeStyle=p;x.arc(0,0,n,u,t,false);x.lineTo(v*Math.cos(t),v*Math.sin(t));x.arc(0,0,v,t,u,true);x.closePath();if(w){x.fill()}else{x.stroke()}}if(s){for(var q=0;q1&&this.index>0)?this._previousSeries[0]._diameter:this._diameter;this._thickness=this.thickness||(M-this.innerDiameter-2*X*this._numberSeries)/this._numberSeries/2}else{this._thickness=this.thickness||v/2/(this._numberSeries+1)*0.85}var K=this._radius=this._diameter/2;this._innerRadius=this._radius-this._thickness;var o=this.startAngle/180*Math.PI;this._center=[(s-u*q)/2+u*q,(H-u*p)/2+u*p];if(this.shadow){var L="rgba(0,0,0,"+this.shadowAlpha+")";for(var Q=0;Q=this.dataLabelThreshold){var S,U=(A+z)/2,C;if(this.dataLabels=="label"){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,V[Q][0])}else{if(this.dataLabels=="value"){S=this.dataLabelFormatString||"%d";C=e.jqplot.sprintf(S,this.data[Q][1])}else{if(this.dataLabels=="percent"){S=this.dataLabelFormatString||"%d%%";C=e.jqplot.sprintf(S,V[Q][2]*100)}else{if(this.dataLabels.constructor==Array){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,this.dataLabels[Q])}}}}var n=this._innerRadius+this._thickness*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var F=this._center[0]+Math.cos(U)*n+this.canvas._offsets.left;var E=this._center[1]+Math.sin(U)*n+this.canvas._offsets.top;var D=e(''+C+"").insertBefore(P.eventCanvas._elem);F-=D.width()/2;E-=D.height()/2;F=Math.round(F);E=Math.round(E);D.css({left:F,top:E})}}};e.jqplot.DonutAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.DonutAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.DonutAxisRenderer.prototype.constructor=e.jqplot.DonutAxisRenderer;e.jqplot.DonutAxisRenderer.prototype.init=function(n){this.tickRenderer=e.jqplot.DonutTickRenderer;e.extend(true,this,n);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.DonutLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.DonutLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.DonutLegendRenderer.prototype.constructor=e.jqplot.DonutLegendRenderer;e.jqplot.DonutLegendRenderer.prototype.init=function(n){this.numberRows=null;this.numberColumns=null;e.extend(true,this,n)};e.jqplot.DonutLegendRenderer.prototype.draw=function(){var q=this;if(this.show){var y=this._series;var B="position:absolute;";B+=(this.background)?"background:"+this.background+";":"";B+=(this.border)?"border:"+this.border+";":"";B+=(this.fontSize)?"font-size:"+this.fontSize+";":"";B+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";B+=(this.textColor)?"color:"+this.textColor+";":"";B+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";B+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";B+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";B+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('
');var F=false,x=false,n,v;var z=y[0];var o=new e.jqplot.ColorGenerator(z.seriesColors);if(z.show){var G=z.data;if(this.numberRows){n=this.numberRows;if(!this.numberColumns){v=Math.ceil(G.length/n)}else{v=this.numberColumns}}else{if(this.numberColumns){v=this.numberColumns;n=Math.ceil(G.length/this.numberColumns)}else{n=G.length;v=1}}var E,D,p,t,r,u,w,C;var A=0;for(E=0;E').prependTo(this._elem)}else{p=e('').appendTo(this._elem)}for(D=0;D0){F=true}else{F=false}}else{if(E==n-1){F=false}else{F=true}}w=(F)?this.rowSpacing:"0";t=e('
');r=e('');if(this.escapeHtml){r.text(u)}else{r.html(u)}if(x){r.prependTo(p);t.prependTo(p)}else{t.appendTo(p);r.appendTo(p)}F=true}A++}}}}return this._elem};function c(r,q,o){o=o||{};o.axesDefaults=o.axesDefaults||{};o.legend=o.legend||{};o.seriesDefaults=o.seriesDefaults||{};var n=false;if(o.seriesDefaults.renderer==e.jqplot.DonutRenderer){n=true}else{if(o.series){for(var p=0;p=0.6)?l[3]*0.6:l[3]*(2-l[3]);m.color="rgba("+o[0]+","+o[1]+","+o[2]+","+k+")"}i.color=m.color;i.init();var g=(p.pointIndex>0)?p.pointIndex-1:0;var j=p.pointIndex+2;m._gridData=q.gridData.slice(g,j)}function e(o,l,h,t,m){if(m.plugins.dragable.dragCanvas.isDragging){var u=m.plugins.dragable.dragCanvas;var i=u._neighbor;var w=m.series[i.seriesIndex];var k=w.plugins.dragable;var r=w.gridData;var p=(k.constrainTo=="y")?i.gridData[0]:l.x;var n=(k.constrainTo=="x")?i.gridData[1]:l.y;var g=w._xaxis.series_p2u(p);var q=w._yaxis.series_p2u(n);var v=u._ctx;v.clearRect(0,0,v.canvas.width,v.canvas.height);if(i.pointIndex>0){k._gridData[1]=[p,n]}else{k._gridData[0]=[p,n]}m.series[i.seriesIndex].draw(u._ctx,{gridData:k._gridData,shadow:false,preventJqPlotSeriesDrawTrigger:true,color:k.color,markerOptions:{color:k.color,shadow:false},trendline:{show:false}});m.target.trigger("jqplotSeriesPointChange",[i.seriesIndex,i.pointIndex,[g,q],[p,n]])}else{if(t!=null){var j=m.series[t.seriesIndex];if(j.isDragable){var u=m.plugins.dragable.dragCanvas;if(!u.isOver){u._cursors.push(o.target.style.cursor);o.target.style.cursor="pointer"}u.isOver=true}}else{if(t==null){var u=m.plugins.dragable.dragCanvas;if(u.isOver){o.target.style.cursor=u._cursors.pop();u.isOver=false}}}}}function c(k,i,g,l,j){var m=j.plugins.dragable.dragCanvas;m._cursors.push(k.target.style.cursor);if(l!=null){var o=j.series[l.seriesIndex];var h=o.plugins.dragable;if(o.isDragable&&!m.isDragging){m._neighbor=l;m.isDragging=true;f(j,l);h.markerRenderer.draw(o.gridData[l.pointIndex][0],o.gridData[l.pointIndex][1],m._ctx);k.target.style.cursor="move";j.target.trigger("jqplotDragStart",[l.seriesIndex,l.pointIndex,i,g])}}else{var n=m._ctx;n.clearRect(0,0,n.canvas.width,n.canvas.height);m.isDragging=false}}function a(m,j,g,o,k){if(k.plugins.dragable.dragCanvas.isDragging){var p=k.plugins.dragable.dragCanvas;var q=p._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);p.isDragging=false;var h=p._neighbor;var r=k.series[h.seriesIndex];var i=r.plugins.dragable;var n=(i.constrainTo=="y")?h.data[0]:g[r.xaxis];var l=(i.constrainTo=="x")?h.data[1]:g[r.yaxis];r.data[h.pointIndex][0]=n;r.data[h.pointIndex][1]=l;k.drawSeries({preventJqPlotSeriesDrawTrigger:true},h.seriesIndex);p._neighbor=null;m.target.style.cursor=p._cursors.pop();k.target.trigger("jqplotDragStop",[j,g])}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js new file mode 100644 index 0000000..dc40b3c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(c){c.jqplot.EnhancedLegendRenderer=function(){c.jqplot.TableLegendRenderer.call(this)};c.jqplot.EnhancedLegendRenderer.prototype=new c.jqplot.TableLegendRenderer();c.jqplot.EnhancedLegendRenderer.prototype.constructor=c.jqplot.EnhancedLegendRenderer;c.jqplot.EnhancedLegendRenderer.prototype.init=function(d){this.numberRows=null;this.numberColumns=null;this.seriesToggle="normal";this.seriesToggleReplot=false;this.disableIEFading=true;c.extend(true,this,d);if(this.seriesToggle){c.jqplot.postDrawHooks.push(b)}};c.jqplot.EnhancedLegendRenderer.prototype.draw=function(m,y){var f=this;if(this.show){var r=this._series;var u;var w="position:absolute;";w+=(this.background)?"background:"+this.background+";":"";w+=(this.border)?"border:"+this.border+";":"";w+=(this.fontSize)?"font-size:"+this.fontSize+";":"";w+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";w+=(this.textColor)?"color:"+this.textColor+";":"";w+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";w+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";w+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";w+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=c('
');if(this.seriesToggle){this._elem.css("z-index","3")}var C=false,q=false,d,o;if(this.numberRows){d=this.numberRows;if(!this.numberColumns){o=Math.ceil(r.length/d)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;d=Math.ceil(r.length/this.numberColumns)}else{d=r.length;o=1}}var B,z,e,l,k,n,p,t,h,g;var v=0;for(B=r.length-1;B>=0;B--){if(o==1&&r[B]._stack||r[B].renderer.constructor==c.jqplot.BezierCurveRenderer){q=true}}for(B=0;B0){C=true}else{C=false}}else{if(B==d-1){C=false}else{C=true}}p=(C)?this.rowSpacing:"0";l=c(document.createElement("td"));l.addClass("jqplot-table-legend jqplot-table-legend-swatch");l.css({textAlign:"center",paddingTop:p});h=c(document.createElement("div"));h.addClass("jqplot-table-legend-swatch-outline");g=c(document.createElement("div"));g.addClass("jqplot-table-legend-swatch");g.css({backgroundColor:x,borderColor:x});l.append(h.append(g));k=c(document.createElement("td"));k.addClass("jqplot-table-legend jqplot-table-legend-label");k.css("paddingTop",p);if(this.escapeHtml){k.text(n)}else{k.html(n)}if(q){if(this.showLabels){k.prependTo(e)}if(this.showSwatches){l.prependTo(e)}}else{if(this.showSwatches){l.appendTo(e)}if(this.showLabels){k.appendTo(e)}}if(this.seriesToggle){var A;if(typeof(this.seriesToggle)==="string"||typeof(this.seriesToggle)==="number"){if(!c.jqplot.use_excanvas||!this.disableIEFading){A=this.seriesToggle}}if(this.showSwatches){l.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);l.addClass("jqplot-seriesToggle")}if(this.showLabels){k.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);k.addClass("jqplot-seriesToggle")}if(!u.show&&u.showLabel){l.addClass("jqplot-series-hidden");k.addClass("jqplot-series-hidden")}}C=true}}v++}l=k=h=g=null}}return this._elem};var a=function(j){var i=j.data,m=i.series,k=i.replot,h=i.plot,f=i.speed,l=m.index,g=false;if(m.canvas._elem.is(":hidden")||!m.show){g=true}var e=function(){if(k){var n={};if(c.isPlainObject(k)){c.extend(true,n,k)}h.replot(n);if(g&&f){var d=h.series[l];if(d.shadowCanvas._elem){d.shadowCanvas._elem.hide().fadeIn(f)}d.canvas._elem.hide().fadeIn(f);d.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+d.index).hide().fadeIn(f)}}else{var d=h.series[l];if(d.canvas._elem.is(":hidden")||!d.show){if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).addClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).addClass("jqplot-series-hidden")}}else{if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).removeClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).removeClass("jqplot-series-hidden")}}}};m.toggleDisplay(j,e)};var b=function(){if(this.legend.renderer.constructor==c.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var d=this.legend._elem.detach();this.eventCanvas._elem.after(d)}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.funnelRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.funnelRenderer.min.js new file mode 100644 index 0000000..8a705de --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.funnelRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.FunnelRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.FunnelRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.FunnelRenderer.prototype.constructor=e.jqplot.FunnelRenderer;e.jqplot.FunnelRenderer.prototype.init=function(p,t){this.padding={top:20,right:20,bottom:20,left:20};this.sectionMargin=6;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.widthRatio=0.2;this.lineWidth=2;this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this._type="funnel";this.tickRenderer=e.jqplot.FunnelTickRenderer;if(p.highlightMouseDown&&p.highlightMouseOver==null){p.highlightMouseOver=false}e.extend(true,this,p);this._highlightedPoint=null;this._bases=[];this._atot;this._areas=[];this._lengths=[];this._angle;this._dataIndices=[];this._unorderedData=e.extend(true,[],this.data);var o=e.extend(true,[],this.data);for(var r=0;r570)?m[n]*0.8:m[n]+0.4*(255-m[n]);m[n]=parseInt(m[n],10)}this.highlightColors.push("rgb("+m[0]+","+m[1]+","+m[2]+")")}}t.postParseOptionsHooks.addOnce(k);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",a);t.eventListenerHooks.addOnce("jqplotMouseDown",b);t.eventListenerHooks.addOnce("jqplotMouseUp",j);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",l);t.postDrawHooks.addOnce(h)};e.jqplot.FunnelRenderer.prototype.setGridData=function(o){var n=0;var p=[];for(var m=0;mthis._lengths[Y]*n&&W<100){this._lengths[Y]=this._areas[Y]/(this._bases[Y]-this._lengths[Y]*Math.tan(this._angle));aa=Math.abs(this._lengths[Y]-E);this._bases[Y+1]=this._bases[Y]-(2*this._lengths[Y]*Math.tan(this._angle));E=this._lengths[Y];W++}Q+=this._lengths[Y]}this._vertices=new Array(B.length);var ae=[t,F],ad=[t+this._bases[0],F],ac=[t+(this._bases[0]-this._bases[this._bases.length-1])/2,F+this._length],ab=[ac[0]+this._bases[this._bases.length-1],ac[1]];function V(ag){var x=(ae[1]-ac[1])/(ae[0]-ac[0]);var v=ae[1]-x*ae[0];var ah=ag+ae[1];return[(ah-v)/x,ah]}function D(ag){var x=(ad[1]-ab[1])/(ad[0]-ab[0]);var v=ad[1]-x*ad[0];var ah=ag+ad[1];return[(ah-v)/x,ah]}var T=w,S=u;var Z=0,m=0;for(Y=0;Y0&&Y0&&Y=this.dataLabelThreshold){var K,X;if(this.dataLabels=="label"){K=this.dataLabelFormatString||"%s";X=e.jqplot.sprintf(K,B[Y][0])}else{if(this.dataLabels=="value"){K=this.dataLabelFormatString||"%d";X=e.jqplot.sprintf(K,this.data[Y][1])}else{if(this.dataLabels=="percent"){K=this.dataLabelFormatString||"%d%%";X=e.jqplot.sprintf(K,B[Y][1]*100)}else{if(this.dataLabels.constructor==Array){K=this.dataLabelFormatString||"%s";X=e.jqplot.sprintf(K,this.dataLabels[this._dataIndices[Y]])}}}}var s=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var T=(U[0][0]+U[1][0])/2+this.canvas._offsets.left;var S=(U[1][1]+U[2][1])/2+this.canvas._offsets.top;var z=e(''+X+"").insertBefore(p.eventCanvas._elem);T-=z.width()/2;S-=z.height()/2;T=Math.round(T);S=Math.round(S);z.css({left:T,top:S})}}};e.jqplot.FunnelAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.FunnelAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.FunnelAxisRenderer.prototype.constructor=e.jqplot.FunnelAxisRenderer;e.jqplot.FunnelAxisRenderer.prototype.init=function(m){this.tickRenderer=e.jqplot.FunnelTickRenderer;e.extend(true,this,m);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.FunnelLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.FunnelLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.FunnelLegendRenderer.prototype.constructor=e.jqplot.FunnelLegendRenderer;e.jqplot.FunnelLegendRenderer.prototype.init=function(m){this.numberRows=null;this.numberColumns=null;e.extend(true,this,m)};e.jqplot.FunnelLegendRenderer.prototype.draw=function(){var p=this;if(this.show){var x=this._series;var A="position:absolute;";A+=(this.background)?"background:"+this.background+";":"";A+=(this.border)?"border:"+this.border+";":"";A+=(this.fontSize)?"font-size:"+this.fontSize+";":"";A+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";A+=(this.textColor)?"color:"+this.textColor+";":"";A+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";A+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";A+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";A+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('
');var E=false,w=false,m,u;var y=x[0];var n=new e.jqplot.ColorGenerator(y.seriesColors);if(y.show){var F=y.data;if(this.numberRows){m=this.numberRows;if(!this.numberColumns){u=Math.ceil(F.length/m)}else{u=this.numberColumns}}else{if(this.numberColumns){u=this.numberColumns;m=Math.ceil(F.length/this.numberColumns)}else{m=F.length;u=1}}var D,C,o,r,q,t,v,B;var z=0;for(D=0;D').prependTo(this._elem)}else{o=e('').appendTo(this._elem)}for(C=0;C0){E=true}else{E=false}}else{if(D==m-1){E=false}else{E=true}}v=(E)?this.rowSpacing:"0";r=e('
');q=e('');if(this.escapeHtml){q.text(t)}else{q.html(t)}if(w){q.prependTo(o);r.prependTo(o)}else{r.appendTo(o);q.appendTo(o)}E=true}z++}}}}return this._elem};function c(q,p,n){n=n||{};n.axesDefaults=n.axesDefaults||{};n.legend=n.legend||{};n.seriesDefaults=n.seriesDefaults||{};var m=false;if(n.seriesDefaults.renderer==e.jqplot.FunnelRenderer){m=true}else{if(n.series){for(var o=0;o=0.6)?l[3]*0.6:l[3]*(2-l[3]);i.color="rgba("+n[0]+","+n[1]+","+n[2]+","+k+")";i.init();i.draw(p.gridData[o.pointIndex][0],p.gridData[o.pointIndex][1],j.highlightCanvas._ctx)}function g(A,q,m){var k=A.plugins.highlighter;var D=k._tooltipElem;var r=q.highlighter||{};var t=d.extend(true,{},k,r);if(t.useAxesFormatters){var w=q._xaxis._ticks[0].formatter;var h=q._yaxis._ticks[0].formatter;var E=q._xaxis._ticks[0].formatString;var s=q._yaxis._ticks[0].formatString;var z;var u=w(E,m.data[0]);var l=[];for(var B=1;B140){h=Math.round(Math.log(this.max/this.min)/Math.log(this.base)+1);if(h<2){h=2}if(C===0){var o=b/(h-1);if(o<100){C=0}else{if(o<190){C=1}else{if(o<250){C=3}else{if(o<600){C=4}else{C=9}}}}}}else{h=2;if(C===0){C=1}C=0}}else{h=this.numberTicks}if(E>=0&&C!==3){this._autoFormatString="%d"}else{if(E<=0&&C===3){var o=-(E-1);this._autoFormatString="%."+Math.abs(E-1)+"f"}else{if(E<0){var o=-E;this._autoFormatString="%."+Math.abs(E)+"f"}else{this._autoFormatString="%d"}}}var O,H,z,p,n,k;for(var K=0;K=0;J--){z=p-k*(J+1);H=new this.tickRenderer(this.tickOptions);if(this._overrideFormatString&&this._autoFormatString!=""){H.formatString=this._autoFormatString}if(!this.showTicks){H.showLabel=false;H.showMark=false}else{if(!this.showTickMarks){H.showMark=false}}H.setTick(z,this.name);this._ticks.push(H)}}}}else{if(this.min!=null&&this.max!=null){var y=a.extend(true,{},this.tickOptions,{name:this.name,value:null});var I,e;if(this.numberTicks==null&&this.tickInterval==null){var D=Math.max(b,g+1);var L=Math.ceil((D-g)/35+1);var B=a.jqplot.LinearTickGenerator.bestConstrainedInterval(this.min,this.max,L);this._autoFormatString=B[3];I=B[2];e=B[4];for(var K=0;K0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"middle":c=-n.getHeight()/2;break;default:c=-n.getHeight()/2;break}}else{c=-n.getHeight()/2}var z=this.u2p(n.value)+c+"px";n._elem.css("top",z);n.pack()}}if(o){var x=this._label._elem.outerHeight(true);this._label._elem.css("top",m-g/2-x/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js new file mode 100644 index 0000000..420dd13 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.MekkoAxisRenderer=function(){};a.jqplot.MekkoAxisRenderer.prototype.init=function(c){this.tickMode;this.barLabelRenderer=a.jqplot.AxisLabelRenderer;this.barLabels=this.barLabels||[];this.barLabelOptions={};this.tickOptions=a.extend(true,{showGridline:false},this.tickOptions);this._barLabels=[];a.extend(true,this,c);if(this.name=="yaxis"){this.tickOptions.formatString=this.tickOptions.formatString||"%d%"}var b=this._dataBounds;b.min=0;if(this.name=="yaxis"||this.name=="y2axis"){b.max=100;this.tickMode="even"}else{if(this.name=="xaxis"){this.tickMode=(this.tickMode==null)?"bar":this.tickMode;for(var d=0;dk){k=d}}}if(b){c=this._label._elem.outerWidth(true);j=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){k=k+j;this._elem.css({height:k+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){k=k+j;this._elem.css({height:k+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){k=k+c;this._elem.css({width:k+"px",left:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}else{k=k+c;this._elem.css({width:k+"px",right:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}}}}};a.jqplot.MekkoAxisRenderer.prototype.createTicks=function(){var z=this._ticks;var w=this.ticks;var B=this.name;var y=this._dataBounds;var p,x;var n,r;var d,c;var h,b,s,q;if(w.length){for(s=0;s0){g=Math.max(Math.log(n)/Math.LN10,0.05)}n-=g;r+=g}var k=r-n;var m,o;var v,l,u;var f=[3,5,6,11,21];if(this.name=="yaxis"||this.name=="y2axis"){this.min=0;this.max=100;if(!this.numberTicks){if(this.tickInterval){this.numberTicks=3+Math.ceil(k/this.tickInterval)}else{v=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);for(s=0;s1){l=u;continue}else{if(u<1){if(Math.abs(l-1)v){h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(this.max,this.name);this._ticks.push(h)}}else{if(this.tickMode=="even"){this.min=0;this.max=this.max||y.max;var A=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);k=this.max-this.min;this.numberTicks=A;this.tickInterval=k/(this.numberTicks-1);for(s=0;s0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"middle":c=-n.getHeight()/2;break;default:c=-n.getHeight()/2;break}}else{c=-n.getHeight()/2}var D=this.u2p(n.value)+c+"px";n._elem.css("top",D);n.pack()}}if(o){var z=this._label._elem.outerHeight(true);this._label._elem.css("top",m-f/2-z/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoRenderer.min.js new file mode 100644 index 0000000..cece3cd --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.mekkoRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(b){b.jqplot.MekkoRenderer=function(){this.shapeRenderer=new b.jqplot.ShapeRenderer();this.borderColor=null;this.showBorders=true};b.jqplot.MekkoRenderer.prototype.init=function(c,e){this.fill=false;this.fillRect=true;this.strokeRect=true;this.shadow=false;this._xwidth=0;this._xstart=0;b.extend(true,this.renderer,c);var d={lineJoin:"miter",lineCap:"butt",isarc:false,fillRect:this.fillRect,strokeRect:this.strokeRect};this.renderer.shapeRenderer.init(d);e.axes.x2axis._series.push(this);this._type="mekko"};b.jqplot.MekkoRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var c=this._yaxis.series_u2p;var g=this._plotData;this.gridData=[];this._xwidth=e(this._sumy)-e(0);if(this.index>0){this._xstart=h.series[this.index-1]._xstart+h.series[this.index-1]._xwidth}var l=this.canvas.getHeight();var d=0;var k;var j;for(var f=0;f');var w=false,n=true,c,l;var p=o[0];var d=new b.jqplot.ColorGenerator(p.seriesColors);if(p.show){var x=p.data;if(this.numberRows){c=this.numberRows;if(!this.numberColumns){l=Math.ceil(x.length/c)}else{l=this.numberColumns}}else{if(this.numberColumns){l=this.numberColumns;c=Math.ceil(x.length/this.numberColumns)}else{c=x.length;l=1}}var v,u,e,h,g,k,m,t;var q=0;for(v=0;v').prependTo(this._elem)}else{e=b('').appendTo(this._elem)}for(u=0;u0){w=true}else{w=false}}else{if(v==c-1){w=false}else{w=true}}m=(w)?this.rowSpacing:"0";h=b('
');g=b('');if(this.escapeHtml){g.text(k)}else{g.html(k)}if(n){g.prependTo(e);h.prependTo(e)}else{h.appendTo(e);g.appendTo(e)}w=true}q++}}e=null;h=null;g=null}}return this._elem};b.jqplot.MekkoLegendRenderer.prototype.pack=function(f){if(this.show){var e={_top:f.top,_left:f.left,_right:f.right,_bottom:this._plotDimensions.height-f.bottom};if(this.placement=="insideGrid"){switch(this.location){case"nw":var d=e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"ne":var d=f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({right:d,top:c});break;case"e":var d=f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;case"se":var d=f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"sw":var d=e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"w":var d=e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}else{switch(this.location){case"nw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("right",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-e._top+this.yoffset;this._elem.css("left",d);this._elem.css("bottom",c);break;case"ne":var d=this._plotDimensions.width-f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({left:d,top:c});break;case"e":var d=this._plotDimensions.width-f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;case"se":var d=this._plotDimensions.width-f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-f.bottom+this.yoffset;this._elem.css({left:d,top:c});break;case"sw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"w":var d=this._plotDimensions.width-e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}}};function a(g,f,d){d=d||{};d.axesDefaults=d.axesDefaults||{};d.legend=d.legend||{};d.seriesDefaults=d.seriesDefaults||{};var c=false;if(d.seriesDefaults.renderer==b.jqplot.MekkoRenderer){c=true}else{if(d.series){for(var e=0;e=this.data[0][1]){this.max=this.intervals[this.intervals.length-1][0];this.setmax=false}}else{this.setmax=false}}else{this.min=(this.min==null)?0:this.min;this.setmin=false;if(this.max==null){this.max=this.data[0][1]*1.25;this.setmax=true}else{this.setmax=false}}}};c.jqplot.MeterGaugeRenderer.prototype.setGridData=function(j){var f=[];var k=[];var e=this.startAngle;for(var h=0;h0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h=0;h--){e=f/(j[h]*Math.pow(10,g));if(e==4||e==5){return e-1}}return null}c.jqplot.MeterGaugeRenderer.prototype.draw=function(X,aC,ap){var aa;var aM=(ap!=undefined)?ap:{};var ai=0;var ah=0;var at=1;if(ap.legendInfo&&ap.legendInfo.placement=="inside"){var aI=ap.legendInfo;switch(aI.location){case"nw":ai=aI.width+aI.xoffset;break;case"w":ai=aI.width+aI.xoffset;break;case"sw":ai=aI.width+aI.xoffset;break;case"ne":ai=aI.width+aI.xoffset;at=-1;break;case"e":ai=aI.width+aI.xoffset;at=-1;break;case"se":ai=aI.width+aI.xoffset;at=-1;break;case"n":ah=aI.height+aI.yoffset;break;case"s":ah=aI.height+aI.yoffset;at=-1;break;default:break}}if(this.label){this._labelElem=c('
'+this.label+"
");this.canvas._elem.after(this._labelElem)}var m=(aM.shadow!=undefined)?aM.shadow:this.shadow;var N=(aM.showLine!=undefined)?aM.showLine:this.showLine;var I=(aM.fill!=undefined)?aM.fill:this.fill;var K=X.canvas.width;var S=X.canvas.height;if(this.padding==null){this.padding=Math.round(Math.min(K,S)/30)}var Q=K-ai-2*this.padding;var ab=S-ah-2*this.padding;if(this.labelPosition=="bottom"&&this.label){ab-=this._labelElem.outerHeight(true)}var L=Math.min(Q,ab);var ad=L;if(!this.diameter){if(this.semiCircular){if(Q>=2*ab){if(!this.ringWidth){this.ringWidth=2*ab/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=2*(ab-2*this.innerPad)}else{if(!this.ringWidth){this.ringWidth=Q/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=Q-2*this.innerPad-this.ringWidth-this.padding}this._center=[(K-at*ai)/2+at*ai,(S+at*ah-this.padding-this.ringWidth-this.innerPad)]}else{if(!this.ringWidth){this.ringWidth=ad/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=0;this.diameter=ad-this.ringWidth;this._center=[(K-at*ai)/2+at*ai,(S-at*ah)/2+at*ah]}if(this._labelElem&&this.labelPosition=="bottom"){this._center[1]-=this._labelElem.outerHeight(true)}}this._radius=this.diameter/2;this.tickSpacing=6000/this.diameter;if(!this.hubRadius){this.hubRadius=this.diameter/18}this.shadowOffset=0.5+this.ringWidth/9;this.shadowWidth=this.ringWidth*1;this.tickPadding=3+Math.pow(this.diameter/20,0.7);this.tickOuterRadius=this._radius-this.ringWidth/2-this.tickPadding;this.tickLength=(this.showTicks)?this._radius/13:0;if(this.ticks.length==0){var A=this.max,aL=this.min,q=this.setmax,aG=this.setmin,au=(A-aL)*this.tickSpacing/this.span;var aw=Math.floor(parseFloat((Math.log(au)/Math.log(10)).toFixed(11)));var an=(au/Math.pow(10,aw));(an>2&&an<=2.5)?an=2.5:an=Math.ceil(an);var T=this.tickPositions;var aA,ak;for(aa=0;aa0)?aL-aL%au:aL-aL%au-au;if(!this.forceZero){var D=Math.min(aL-aP,0.8*au);var o=Math.floor(D/T[aA]);if(o>1){aP=aP+T[aA]*(o-1);if(parseInt(aP,10)!=aP&&parseInt(aP-T[aA],10)==aP-T[aA]){aP=aP-T[aA]}}}if(aL==aP){aL-=au}else{if(aL-aP>0.23*au){aL=aP}else{aL=aP-au;ak+=1}}ak+=1;var E=aL+(ak-1)*au;if(A>=E){E+=au;ak+=1}if(E-A<0.23*au){E+=au;ak+=1}this.max=A=E;this.min=aL;this.tickInterval=au;this.numberTicks=ak;var O;for(aa=0;aa=E){A=E+au;ak+=1}else{A=E}this.tickInterval=this.tickInterval||au;this.numberTicks=this.numberTicks||ak;var O;for(aa=0;aa1){var aJ=String(P);if(aJ.search(/\./)==-1){var aF=aJ.search(/0+$/);av=(aF>0)?aJ.length-aF-1:0}}M=P/Math.pow(10,av);for(aa=0;aa'+this.ticks[aa][1]+"");this.canvas._elem.after(J);aO=J.outerWidth(true);g=J.outerHeight(true);W=this._tickPoints[aa][0]-aO*(this._tickPoints[aa][2]-Math.PI)/Math.PI-an*Math.cos(this._tickPoints[aa][2]);T=this._tickPoints[aa][1]-g/2+g/2*Math.pow(Math.abs((Math.sin(this._tickPoints[aa][2]))),0.5)+an/3*Math.pow(Math.abs((Math.sin(this._tickPoints[aa][2]))),0.5);J.css({left:W,top:T,color:this.tickColor});G=aO*Math.cos(this._tickPoints[aa][2])+g*Math.sin(Math.PI/2+this._tickPoints[aa][2]/2);n=(G>n)?G:n}}if(this.label&&this.labelPosition=="inside"){var W=this._center[0]+this.canvas._offsets.left;var an=this.tickPadding*(1-1/(this.diameter/80+1));var T=0.5*(this._center[1]+this.canvas._offsets.top-this.hubRadius)+0.5*(this._center[1]+this.canvas._offsets.top-this.tickOuterRadius+this.tickLength+an)+this.labelHeightAdjust;W-=this._labelElem.outerWidth(true)/2;T-=this._labelElem.outerHeight(true)/2;this._labelElem.css({left:W,top:T})}else{if(this.label&&this.labelPosition=="bottom"){var W=this._center[0]+this.canvas._offsets.left-this._labelElem.outerWidth(true)/2;var T=this._center[1]+this.canvas._offsets.top+this.innerPad+this.ringWidth+this.padding+this.labelHeightAdjust;this._labelElem.css({left:W,top:T})}}X.save();var ax=this.intervalInnerRadius||this.hubRadius*1.5;if(this.intervalOuterRadius==null){if(this.showTickLabels){var ag=(this.tickOuterRadius-this.tickLength-this.tickPadding-this.diameter/8)}else{var ag=(this.tickOuterRadius-this.tickLength-this.diameter/16)}}else{var ag=this.intervalOuterRadius}var P=this.max-this.min;var aD=this.intervals[this.intervals.length-1]-this.min;var y,Z,u=this.span*Math.PI/180;for(aa=0;aathis.max+R*3/this.span){ay=this.max+R*3/this.span}if(this.data[0][1]');var f=false,q=false,u,o;var w=p[0];if(w.show){var t=w.data;if(this.numberRows){u=this.numberRows;if(!this.numberColumns){o=Math.ceil(t.length/u)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;u=Math.ceil(t.length/this.numberColumns)}else{u=t.length;o=1}}var n,m,r,g,e,l,k,h;var v=0;for(n=0;n').prependTo(this._elem)}else{r=c('').appendTo(this._elem)}for(m=0;m0){f=true}else{f=false}}else{if(n==u-1){f=false}else{f=true}}k=(f)?this.rowSpacing:"0";g=c('
');e=c('');if(this.escapeHtml){e.text(l)}else{e.html(l)}if(q){e.prependTo(r);g.prependTo(r)}else{g.appendTo(r);e.appendTo(r)}f=true}v++}}}}return this._elem};function a(j,h,f){f=f||{};f.axesDefaults=f.axesDefaults||{};f.legend=f.legend||{};f.seriesDefaults=f.seriesDefaults||{};f.grid=f.grid||{};var e=false;if(f.seriesDefaults.renderer==c.jqplot.MeterGaugeRenderer){e=true}else{if(f.series){for(var g=0;gb.max||b.max==null){b.max=f[c][1]}}}else{for(var c=0;cb.max||b.max==null){b.max=f[c][2]}}}};a.jqplot.OHLCRenderer.prototype.draw=function(A,N,j){var J=this.data;var v=this._xaxis.min;var z=this._xaxis.max;var l=0;var K=J.length;var p=this._xaxis.series_u2p;var G=this._yaxis.series_u2p;var D,E,f,M,F,n,O,C;var y;var u=this.renderer;var s=(j!=undefined)?j:{};var k=(s.shadow!=undefined)?s.shadow:this.shadow;var B=(s.fill!=undefined)?s.fill:this.fill;var c=(s.fillAndStroke!=undefined)?s.fillAndStroke:this.fillAndStroke;u.bodyWidth=(s.bodyWidth!=undefined)?s.bodyWidth:u.bodyWidth;u.tickLength=(s.tickLength!=undefined)?s.tickLength:u.tickLength;A.save();if(this.show){var m,q,g,Q,t;for(var D=0;Dq){if(u.wickColor){y.color=u.wickColor}else{if(u.downBodyColor){y.color=u.downBodyColor}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,q]],f);u.shapeRenderer.draw(A,[[m,t],[m,Q]],f);y={};M=q;F=t-q;if(u.fillDownBody){y.fillRect=true}else{y.strokeRect=true;n=n-this.lineWidth;O=m-n/2}if(u.downBodyColor){y.color=u.downBodyColor;y.fillStyle=u.downBodyColor}C=[O,M,n,F]}else{if(u.wickColor){y.color=u.wickColor}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,Q]],f);y={};y.fillRect=false;y.strokeRect=false;O=[m-n/2,q];M=[m+n/2,t];n=null;F=null;C=[O,M]}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,C,f)}else{E=s.color;if(u.openColor){s.color=u.openColor}if(!u.hlc){u.shapeRenderer.draw(A,[[m-u._tickLength,q],[m,q]],s)}s.color=E;if(u.wickColor){s.color=u.wickColor}u.shapeRenderer.draw(A,[[m,g],[m,Q]],s);s.color=E;if(u.closeColor){s.color=u.closeColor}u.shapeRenderer.draw(A,[[m,t],[m+u._tickLength,t]],s);s.color=E}}}A.restore()};a.jqplot.OHLCRenderer.prototype.drawShadow=function(b,d,c){};a.jqplot.OHLCRenderer.checkOptions=function(d,c,b){if(!b.highlighter){b.highlighter={showMarker:false,tooltipAxes:"y",yvalues:4,formatString:'
date:%s
open:%s
hi:%s
low:%s
close:%s
'}}}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pieRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pieRenderer.min.js new file mode 100644 index 0000000..5f08e61 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pieRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.PieRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.PieRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.PieRenderer.prototype.constructor=e.jqplot.PieRenderer;e.jqplot.PieRenderer.prototype.init=function(q,u){this.diameter=null;this.padding=20;this.sliceMargin=0;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.dataLabelPositionFactor=0.52;this.dataLabelNudge=2;this.dataLabelCenterOn=true;this.startAngle=0;this.tickRenderer=e.jqplot.PieTickRenderer;this._drawData=true;this._type="pie";if(q.highlightMouseDown&&q.highlightMouseOver==null){q.highlightMouseOver=false}e.extend(true,this,q);if(this.sliceMargin<0){this.sliceMargin=0}this._diameter=null;this._radius=null;this._sliceAngles=[];this._highlightedPoint=null;if(this.highlightColors.length==0){for(var s=0;s570)?o[p]*0.8:o[p]+0.3*(255-o[p]);o[p]=parseInt(o[p],10)}this.highlightColors.push("rgb("+o[0]+","+o[1]+","+o[2]+")")}}this.highlightColorGenerator=new e.jqplot.ColorGenerator(this.highlightColors);u.postParseOptionsHooks.addOnce(m);u.postInitHooks.addOnce(g);u.eventListenerHooks.addOnce("jqplotMouseMove",b);u.eventListenerHooks.addOnce("jqplotMouseDown",a);u.eventListenerHooks.addOnce("jqplotMouseUp",l);u.eventListenerHooks.addOnce("jqplotClick",f);u.eventListenerHooks.addOnce("jqplotRightClick",n);u.postDrawHooks.addOnce(i)};e.jqplot.PieRenderer.prototype.setGridData=function(t){var p=[];var u=[];var o=this.startAngle/180*Math.PI;var s=0;this._drawData=false;for(var r=0;r0){p[r]+=p[r-1]}s+=this.data[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r0){p[r]+=p[r-1]}s+=t[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r0&&s>0.01&&s<6.282){w=parseFloat(p)/2/h(q)}return w}e.jqplot.PieRenderer.prototype.drawSlice=function(B,z,y,u,w){if(this._drawData){var p=this._radius;var A=this.fill;var x=this.lineWidth;var s=this.sliceMargin;if(this.fill==false){s+=this.lineWidth}B.save();B.translate(this._center[0],this._center[1]);var D=j(z,y,this.sliceMargin,this.fill,this.lineWidth);var o=D*Math.cos((z+y)/2);var C=D*Math.sin((z+y)/2);if((y-z)<=Math.PI){p-=D}else{p+=D}B.translate(o,C);if(w){for(var v=0,t=this.shadowDepth;v6.282+this.startAngle){y=6.282+this.startAngle;if(z>y){z=6.281+this.startAngle}}if(z>=y){return}B.beginPath();B.fillStyle=u;B.strokeStyle=u;B.lineWidth=x;B.arc(0,0,r,z,y,false);B.lineTo(0,0);B.closePath();if(A){B.fill()}else{B.stroke()}}};e.jqplot.PieRenderer.prototype.draw=function(B,z,E,o){var W;var H=(E!=undefined)?E:{};var t=0;var s=0;var N=1;var L=new e.jqplot.ColorGenerator(this.seriesColors);if(E.legendInfo&&E.legendInfo.placement=="insideGrid"){var J=E.legendInfo;switch(J.location){case"nw":t=J.width+J.xoffset;break;case"w":t=J.width+J.xoffset;break;case"sw":t=J.width+J.xoffset;break;case"ne":t=J.width+J.xoffset;N=-1;break;case"e":t=J.width+J.xoffset;N=-1;break;case"se":t=J.width+J.xoffset;N=-1;break;case"n":s=J.height+J.yoffset;break;case"s":s=J.height+J.yoffset;N=-1;break;default:break}}var K=(H.shadow!=undefined)?H.shadow:this.shadow;var A=(H.fill!=undefined)?H.fill:this.fill;var C=B.canvas.width;var I=B.canvas.height;var Q=C-t-2*this.padding;var X=I-s-2*this.padding;var M=Math.min(Q,X);var Y=M;this._sliceAngles=[];var v=this.sliceMargin;if(this.fill==false){v+=this.lineWidth}var q;var G=0;var R,aa,Z,ab;var D=this.startAngle/180*Math.PI;for(var W=0,V=z.length;WMath.PI){G=Math.max(q,G)}}if(this.diameter!=null&&this.diameter>0){this._diameter=this.diameter-2*G}else{this._diameter=Y-2*G}if(this._diameter<6){e.jqplot.log("Diameter of pie too small, not rendering.");return}var S=this._radius=this._diameter/2;this._center=[(C-N*t)/2+N*t+G*Math.cos(D),(I-N*s)/2+N*s+G*Math.sin(D)];if(this.shadow){for(var W=0,V=z.length;W=this.dataLabelThreshold){var F,U=(this._sliceAngles[W][0]+this._sliceAngles[W][1])/2,T;if(this.dataLabels=="label"){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,z[W][0])}else{if(this.dataLabels=="value"){F=this.dataLabelFormatString||"%d";T=e.jqplot.sprintf(F,this.data[W][1])}else{if(this.dataLabels=="percent"){F=this.dataLabelFormatString||"%d%%";T=e.jqplot.sprintf(F,z[W][2]*100)}else{if(this.dataLabels.constructor==Array){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,this.dataLabels[W])}}}}var p=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var P=this._center[0]+Math.cos(U)*p+this.canvas._offsets.left;var O=this._center[1]+Math.sin(U)*p+this.canvas._offsets.top;var u=e('
'+T+"
").insertBefore(o.eventCanvas._elem);if(this.dataLabelCenterOn){P-=u.width()/2;O-=u.height()/2}else{P-=u.width()*Math.sin(U/2);O-=u.height()/2}P=Math.round(P);O=Math.round(O);u.css({left:P,top:O})}}};e.jqplot.PieAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PieAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PieAxisRenderer.prototype.constructor=e.jqplot.PieAxisRenderer;e.jqplot.PieAxisRenderer.prototype.init=function(o){this.tickRenderer=e.jqplot.PieTickRenderer;e.extend(true,this,o);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.PieLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.PieLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.PieLegendRenderer.prototype.constructor=e.jqplot.PieLegendRenderer;e.jqplot.PieLegendRenderer.prototype.init=function(o){this.numberRows=null;this.numberColumns=null;e.extend(true,this,o)};e.jqplot.PieLegendRenderer.prototype.draw=function(){var r=this;if(this.show){var B=this._series;this._elem=e(document.createElement("table"));this._elem.addClass("jqplot-table-legend");var E={position:"absolute"};if(this.background){E.background=this.background}if(this.border){E.border=this.border}if(this.fontSize){E.fontSize=this.fontSize}if(this.fontFamily){E.fontFamily=this.fontFamily}if(this.textColor){E.textColor=this.textColor}if(this.marginTop!=null){E.marginTop=this.marginTop}if(this.marginBottom!=null){E.marginBottom=this.marginBottom}if(this.marginLeft!=null){E.marginLeft=this.marginLeft}if(this.marginRight!=null){E.marginRight=this.marginRight}this._elem.css(E);var I=false,A=false,o,y;var C=B[0];var p=new e.jqplot.ColorGenerator(C.seriesColors);if(C.show){var J=C.data;if(this.numberRows){o=this.numberRows;if(!this.numberColumns){y=Math.ceil(J.length/o)}else{y=this.numberColumns}}else{if(this.numberColumns){y=this.numberColumns;o=Math.ceil(J.length/this.numberColumns)}else{o=J.length;y=1}}var H,G;var q,w,v;var x,z,F;var D=0;var u,t;for(H=0;H0){I=true}else{I=false}}else{if(H==o-1){I=false}else{I=true}}z=(I)?this.rowSpacing:"0";w=e(document.createElement("td"));w.addClass("jqplot-table-legend jqplot-table-legend-swatch");w.css({textAlign:"center",paddingTop:z});u=e(document.createElement("div"));u.addClass("jqplot-table-legend-swatch-outline");t=e(document.createElement("div"));t.addClass("jqplot-table-legend-swatch");t.css({backgroundColor:F,borderColor:F});w.append(u.append(t));v=e(document.createElement("td"));v.addClass("jqplot-table-legend jqplot-table-legend-label");v.css("paddingTop",z);if(this.escapeHtml){v.text(x)}else{v.html(x)}if(A){v.prependTo(q);w.prependTo(q)}else{w.appendTo(q);v.appendTo(q)}I=true}D++}}}}return this._elem};e.jqplot.PieRenderer.prototype.handleMove=function(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];r.target.trigger("jqplotDataMouseOver",o);if(r.series[o[0]].highlightMouseOver&&!(o[0]==r.plugins.pieRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){r.target.trigger("jqplotDataHighlight",o);d(r,o[0],o[1])}}else{if(s==null){k(r)}}};function c(s,r,p){p=p||{};p.axesDefaults=p.axesDefaults||{};p.legend=p.legend||{};p.seriesDefaults=p.seriesDefaults||{};var o=false;if(p.seriesDefaults.renderer==e.jqplot.PieRenderer){o=true}else{if(p.series){for(var q=0;qB||s+C>m){z.remove()}z=null;f=null}}};c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js new file mode 100644 index 0000000..e559ddc --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.PyramidAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PyramidAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PyramidAxisRenderer.prototype.constructor=e.jqplot.PyramidAxisRenderer;e.jqplot.PyramidAxisRenderer.prototype.init=function(f){this.position=null;this.drawBaseline=true;this.baselineWidth=null;this.baselineColor=null;this.tickSpacingFactor=25;this._type="pyramid";this._splitAxis=false;this._splitLength=null;this.category=false;this._autoFormatString="";this._overrideFormatString=false;e.extend(true,this,f);this.renderer.options=f;this.resetDataBounds=this.renderer.resetDataBounds;this.resetDataBounds()};e.jqplot.PyramidAxisRenderer.prototype.resetDataBounds=function(){var h=this._dataBounds;h.min=null;h.max=null;var g;for(var m=0;mh.max)||h.max===null){h.max=g}}else{g=o[k][0];if((g!==null&&gh.max)||h.max===null){h.max=g}}}}};e.jqplot.PyramidAxisRenderer.prototype.draw=function(f,n){if(this.show){this.renderer.createTicks.call(this,n);var m=0;var g;if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=e(document.createElement("div"));this._elem.addClass("jqplot-axis jqplot-"+this.name);this._elem.css("position","absolute");if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var l=this._label.draw(f,n);l.appendTo(this._elem);l=null}var k=this._ticks;var j;for(var h=0;hr){I=this.numberTicks-1;for(H=2;H0;H--){v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[H-1].value+this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks[H].showGridline=false;this._ticks[H].showMark=false;this._ticks.splice(H,0,v)}v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[0].value-this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks.unshift(v);v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[this._ticks.length-1].value+this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks.push(v);this.tickInterval=this.tickInterval/2;this.numberTicks=this._ticks.length;this.min=this._ticks[0].value;this.max=this._ticks[this._ticks.length-1].value}}else{if(this.name.charAt(0)==="x"){E=this._plotDimensions.width;var w=Math.max(M.max,Math.abs(M.min));var u=Math.min(M.min,-w);B=u;G=w;y=G-B;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}m=30;g=Math.max(E,m+1);j=(g-m)/300;O=e.jqplot.LinearTickGenerator(B,G,j);A=B+y*(this.padMin-1);F=G-y*(this.padMax-1);if(BF){A=B-y*(this.padMin-1);F=G+y*(this.padMax-1);O=e.jqplot.LinearTickGenerator(A,F,j)}this.min=O[0];this.max=O[1];this.numberTicks=O[2];this._autoFormatString=O[3];this.tickInterval=O[4]}else{E=this._plotDimensions.height;B=M.min;G=M.max;x=this._series[0];this._ticks=[];y=G-B;if(d[y]){y+=1;G+=1}this.max=G;this.min=B;r=Math.round(2+E/this.tickSpacingFactor);if(y+1<=r){this.numberTicks=y+1;this.tickInterval=1}else{for(var H=r;H>1;H--){if(y/(H-1)===Math.round(y/(H-1))){this.numberTicks=H;this.tickInterval=y/(H-1);break}}}}if(this._overrideFormatString&&this._autoFormatString!=""){this.tickOptions=this.tickOptions||{};this.tickOptions.formatString=this._autoFormatString}var f;for(H=0;Ho){o=j}}}if(this.name==="yMidAxis"){for(m=0;m0){f=-q._textRenderer.height*Math.cos(-q._textRenderer.angle)/2}else{f=-q.getHeight()+q._textRenderer.height*Math.cos(q._textRenderer.angle)/2}break;case"middle":f=-q.getHeight()/2;break;default:f=-q.getHeight()/2;break}}else{f=-q.getHeight()/2}var C=this.u2p(q.value)+f+"px";q._elem.css("top",C);q.pack()}}if(r){var y=this._label._elem.outerHeight(true);if(this.name!=="yMidAxis"){this._label._elem.css("top",o-k/2-y/2+"px")}if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{if(this.name!=="yMidAxis"){this._label._elem.css("right","0px")}}this._label.pack()}}}B=null}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js new file mode 100644 index 0000000..e2837a6 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.PyramidGridRenderer=function(){a.jqplot.CanvasGridRenderer.call(this)};a.jqplot.PyramidGridRenderer.prototype=new a.jqplot.CanvasGridRenderer();a.jqplot.PyramidGridRenderer.prototype.constructor=a.jqplot.PyramidGridRenderer;a.jqplot.CanvasGridRenderer.prototype.init=function(c){this._ctx;this.plotBands={show:false,color:"rgb(230, 219, 179)",axis:"y",start:null,interval:10};a.extend(true,this,c);var b={lineJoin:"miter",lineCap:"round",fill:false,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:false,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(b)};a.jqplot.PyramidGridRenderer.prototype.draw=function(){this._ctx=this._elem.get(0).getContext("2d");var D=this._ctx;var G=this._axes;var q=G.xaxis.u2p;var J=G.yMidAxis.u2p;var l=G.xaxis.max/1000;var u=q(0);var f=q(l);var r=["xaxis","yaxis","x2axis","y2axis","yMidAxis"];D.save();D.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height);D.fillStyle=this.backgroundColor||this.background;D.fillRect(this._left,this._top,this._width,this._height);if(this.plotBands.show){D.save();var c=this.plotBands;D.fillStyle=c.color;var d;var o,n,p,I;if(c.axis.charAt(0)==="x"){if(G.xaxis.show){d=G.xaxis}}else{if(c.axis.charAt(0)==="y"){if(G.yaxis.show){d=G.yaxis}else{if(G.y2axis.show){d=G.y2axis}else{if(G.yMidAxis.show){d=G.yMidAxis}}}}}if(d!==undefined){var g=c.start;if(g===null){g=d.min}for(var H=g;H0;H--){var O=r[H-1];var d=G[O];var M=d._ticks;var B=M.length;if(d.show){if(d.drawBaseline){var N={};if(d.baselineWidth!==null){N.lineWidth=d.baselineWidth}if(d.baselineColor!==null){N.strokeStyle=d.baselineColor}switch(O){case"xaxis":if(G.yMidAxis.show){z(this._left,this._bottom,u,this._bottom,N);z(f,this._bottom,this._right,this._bottom,N)}else{z(this._left,this._bottom,this._right,this._bottom,N)}break;case"yaxis":z(this._left,this._bottom,this._left,this._top,N);break;case"yMidAxis":z(u,this._bottom,u,this._top,N);z(f,this._bottom,f,this._top,N);break;case"x2axis":if(G.yMidAxis.show){z(this._left,this._top,u,this._top,N);z(f,this._top,this._right,this._top,N)}else{z(this._left,this._bottom,this._right,this._bottom,N)}break;case"y2axis":z(this._right,this._bottom,this._right,this._top,N);break}}for(var E=B;E>0;E--){var v=M[E-1];if(v.show){var k=Math.round(d.u2p(v.value))+0.5;switch(O){case"xaxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(k,this._top,k,this._bottom)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._bottom;K=this._bottom+A;break;case"inside":L=this._bottom-A;K=this._bottom;break;case"cross":L=this._bottom-A;K=this._bottom+A;break;default:L=this._bottom;K=this._bottom+A;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[k,L],[k,K]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}z(k,L,k,K)}break;case"yaxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._right,k,this._left,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._left-A;K=this._left;break;case"inside":L=this._left;K=this._left+A;break;case"cross":L=this._left-A;K=this._left+A;break;default:L=this._left-A;K=this._left;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;case"yMidAxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._left,k,u,k);z(f,k,this._right,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;L=u;K=u+A;if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor});L=f-A;K=f;if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;case"x2axis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(k,this._bottom,k,this._top)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._top-A;K=this._top;break;case"inside":L=this._top;K=this._top+A;break;case"cross":L=this._top-A;K=this._top+A;break;default:L=this._top-A;K=this._top;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[k,L],[k,K]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}z(k,L,k,K)}break;case"y2axis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._left,k,this._right,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._right;K=this._right+A;break;case"inside":L=this._right-A;K=this._right;break;case"cross":L=this._right-A;K=this._right+A;break;default:L=this._right;K=this._right+A;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;default:break}}}v=null}d=null;M=null}D.restore();function z(j,i,e,b,h){D.save();h=h||{};if(h.lineWidth==null||h.lineWidth!=0){a.extend(true,D,h);D.beginPath();D.moveTo(j,i);D.lineTo(e,b);D.stroke()}D.restore()}if(this.shadow){if(G.yMidAxis.show){var F=[[this._left,this._bottom],[u,this._bottom]];this.renderer.shadowRenderer.draw(D,F);var F=[[f,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(D,F);var F=[[u,this._bottom],[u,this._top]];this.renderer.shadowRenderer.draw(D,F)}else{var F=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(D,F)}}if(this.borderWidth!=0&&this.drawBorder){if(G.yMidAxis.show){z(this._left,this._top,u,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(f,this._top,this._right,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:G.y2axis.borderColor,lineWidth:G.y2axis.borderWidth});z(this._right,this._bottom,f,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(u,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth});z(u,this._bottom,u,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth});z(f,this._bottom,f,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth})}else{z(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:G.y2axis.borderColor,lineWidth:G.y2axis.borderWidth});z(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth})}}D.restore();D=null;G=null}})(jQuery); \ No newline at end of file diff --git a/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidRenderer.min.js b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidRenderer.min.js new file mode 100644 index 0000000..5833af5 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jqplot/plugins/jqplot.pyramidRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(c){if(c.jqplot.PyramidAxisRenderer===undefined){c.ajax({url:c.jqplot.pluginLocation+"jqplot.pyramidAxisRenderer.js",dataType:"script",async:false})}if(c.jqplot.PyramidGridRenderer===undefined){c.ajax({url:c.jqplot.pluginLocation+"jqplot.pyramidGridRenderer.js",dataType:"script",async:false})}c.jqplot.PyramidRenderer=function(){c.jqplot.LineRenderer.call(this)};c.jqplot.PyramidRenderer.prototype=new c.jqplot.LineRenderer();c.jqplot.PyramidRenderer.prototype.constructor=c.jqplot.PyramidRenderer;c.jqplot.PyramidRenderer.prototype.init=function(j,o){j=j||{};this._type="pyramid";this.barPadding=10;this.barWidth=null;this.fill=true;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.highlightThreshold=2;this.synchronizeHighlight=false;this.offsetBars=false;if(j.highlightMouseDown&&j.highlightMouseOver==null){j.highlightMouseOver=false}this.side="right";c.extend(true,this,j);if(this.side==="left"){this._highlightThreshold=[[-this.highlightThreshold,0],[-this.highlightThreshold,0],[0,0],[0,0]]}else{this._highlightThreshold=[[0,0],[0,0],[this.highlightThreshold,0],[this.highlightThreshold,0]]}this.renderer.options=j;this._highlightedPoint=null;this._dataColors=[];this._barPoints=[];this.fillAxis="y";this._primaryAxis="_yaxis";this._xnudge=0;var n={lineJoin:"miter",lineCap:"butt",fill:this.fill,fillRect:this.fill,isarc:false,strokeStyle:this.color,fillStyle:this.color,closePath:this.fill,lineWidth:this.lineWidth};this.renderer.shapeRenderer.init(n);var m=j.shadowOffset;if(m==null){if(this.lineWidth>2.5){m=1.25*(1+(Math.atan((this.lineWidth/2.5))/0.785398163-1)*0.6)}else{m=1.25*Math.atan((this.lineWidth/2.5))/0.785398163}}var h={lineJoin:"miter",lineCap:"butt",fill:this.fill,fillRect:this.fill,isarc:false,angle:this.shadowAngle,offset:m,alpha:this.shadowAlpha,depth:this.shadowDepth,closePath:this.fill,lineWidth:this.lineWidth};this.renderer.shadowRenderer.init(h);o.postDrawHooks.addOnce(f);o.eventListenerHooks.addOnce("jqplotMouseMove",e);if(this.side==="left"){for(var k=0,g=this.data.length;k=0){s=I[E][0]-L;F=this.barWidth;D=[L,n-y-r,s,F]}else{s=L-I[E][0];F=this.barWidth;D=[I[E][0],n-y-r,s,F]}this._barPoints.push([[D[0],D[1]+F],[D[0],D[1]],[D[0]+s,D[1]],[D[0]+s,D[1]+F]]);if(p){this.renderer.shadowRenderer.draw(B,D)}var g=u.fillStyle||this.color;this._dataColors.push(g);this.renderer.shapeRenderer.draw(B,D,u)}else{if(E===0){D=[[L,j],[I[E][0],j],[I[E][0],I[E][1]-y-r]]}else{if(E=h.synchronizeHighlight&&h.synchronizeHighlight!==l){h=m.series[h.synchronizeHighlight];k={fillStyle:h.highlightColors[j],fillRect:false};h.renderer.shapeRenderer.draw(g._ctx,h._barPoints[j],k)}g=null}function d(j){var g=j.plugins.pyramidRenderer.highlightCanvas;g._ctx.clearRect(0,0,g._ctx.canvas.width,g._ctx.canvas.height);for(var h=0;h)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/aliyun-log-php-sdk-master/docs/js/jquery-1.7.1.min.js b/aliyun-log-php-sdk-master/docs/js/jquery-1.7.1.min.js new file mode 100644 index 0000000..6ede59c --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/js/jquery-1.7.1.min.js @@ -0,0 +1,9270 @@ +/* + * Downloaded from http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js, 2012-02-04 23:26 + */ + +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
" + + "" + + "
"; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
t
"; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

"; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
"; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + + + + + + + + + + +
+ + + +
+
+ +
+ +
+ + + + +
+
+ +

+ + protocolbuffers.inc.php + 1 +

+
+ + + + + + + + + + + +
TypeLineDescription
TODO92Change to a binary search
+
+
+
+
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/namespaces/default.html b/aliyun-log-php-sdk-master/docs/namespaces/default.html new file mode 100644 index 0000000..b2f0e05 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/namespaces/default.html @@ -0,0 +1,946 @@ + + + + + + » \ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + +
+

Constants

+
+

API_VERSION

+

+
+ +
+ 芦 More 禄
+ +
+

USER_AGENT

+

+
+ +
+ 芦 More 禄
+ +
+ +
+

Classes, interfaces and traits

+ + +
+

Aliyun_Log_Client

+

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with LOG server to put/get data.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Exception

+

The Exception of the log serivce request & response.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ACL

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_BatchGetLogsRequest

+

The request used to get logs by logstore and shardId from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_BatchGetLogsResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CompressedLogGroup

+

Aliyun_Log_Models_CompressedLogGroup is compressed LogGroup, +LogGroup infomation please refer to Aliyun_Log_Models_LogGroup

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Config

+

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Config_InputDetail

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Config_OutputDetail

+

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateACLRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateACLResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateConfigRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateConfigResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateLogstoreRequest

+

The request used to create logstore from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateLogstoreResponse

+

The response of the CreateLogstore API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_CreateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteACLRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteACLResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteConfigRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteConfigResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteLogstoreRequest

+

The request used to delete logstore from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteLogstoreResponse

+

The response of the DeleteLogstore API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteShardRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_DeleteShardResponse

+

The response of the DeleteShard API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetACLRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetACLResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetConfigRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetConfigResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetCursorRequest

+

The request used to get cursor by fromTime or begin/end mode

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetCursorResponse

+

The response of the GetCursor API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetHistogramsRequest

+

The request used to get histograms of a query from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetHistogramsResponse

+

The response of the GetHistograms API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetLogsRequest

+

The request used to get logs by a query from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetLogsResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetMachineRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_GetMachineResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Histogram

+

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListACLsRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListACLsResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListConfigsRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListLogstoresRequest

+

The request used to list logstore from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListLogstoresResponse

+

The response of the ListLogstores API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListMachineGroupsRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListMachineGroupsResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListShardsRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListShardsResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListTopicsRequest

+

The Request used to list topics from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_ListTopicsResponse

+

The response of the ListTopics API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_LogItem

+

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Machine

+

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Machine_Info

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Machine_Status

+

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_MachineGroup

+

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_MachineGroup_GroupAttribute

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_MergeShardsRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_PutLogsRequest

+

The request used to send data to log server.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_PutLogsResponse

+

The response of the PutLogs API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_QueriedLog

+

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the log.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Request

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Response

+

The base response class of all log response.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_Shard

+

The class used to present the shard detail, for every shard ,it contains id , status , begin Range, end range, createtime

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_SplitShardRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateACLRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateACLResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateConfigRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateConfigResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateLogstoreRequest

+

The request used to Update logstore from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateLogstoreResponse

+

The response of the UpdateLogstore API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateMachineGroupRequest

+

The base request of all log request.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Models_UpdateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ +
+ 芦 More 禄
+ +
+

Aliyun_Log_Util

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ +
+ 芦 More 禄
+ +
+

Log

+

+
+ +
+ 芦 More 禄
+ +
+

Log

+

+
+ +
+ 芦 More 禄
+ +
+

Log_Content

+

+
+ +
+ 芦 More 禄
+ +
+

Log_Content

+

+
+ +
+ 芦 More 禄
+ +
+

LogGroup

+

+
+ +
+ 芦 More 禄
+ +
+

LogGroup

+

+
+ +
+ 芦 More 禄
+ +
+

LogGroupList

+

+
+ +
+ 芦 More 禄
+ +
+

LogPackage

+

+
+ +
+ 芦 More 禄
+ +
+

LogPackageList

+

+
+ +
+ 芦 More 禄
+ +
+

Protobuf

+

Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class.

+
+ +
+ 芦 More 禄
+ +
+

ProtobufEnum

+

+
+ +
+ 芦 More 禄
+ +
+

ProtobufMessage

+

+
+ +
+ 芦 More 禄
+ +
+

RequestCore

+

Handles all HTTP requests using cURL and manages the responses.

+
+ +
+ 芦 More 禄
+ +
+

RequestCore_Exception

+

Default RequestCore Exception.

+
+ +
+ 芦 More 禄
+ +
+

ResponseCore

+

Container for all response-related methods.

+
+ +
+ 芦 More 禄
+ +
+ + +
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/namespaces/global.html b/aliyun-log-php-sdk-master/docs/namespaces/global.html new file mode 100644 index 0000000..8e5f309 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/namespaces/global.html @@ -0,0 +1,64 @@ + + + + + +SLS_PHP_SDK 禄 global + + + + + + + + + + +
+ +
+
+ +
+ +
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/packages/LOG.PHP.SDK.html b/aliyun-log-php-sdk-master/docs/packages/LOG.PHP.SDK.html new file mode 100644 index 0000000..f51a764 --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/packages/LOG.PHP.SDK.html @@ -0,0 +1,849 @@ + + + + + + » \LOG_PHP_SDK + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + +
+

Constants

+
+

API_VERSION

+

+
+ 芦 More 禄 +
+ +
+

USER_AGENT

+

+
+ 芦 More 禄 +
+ +
+ +
+

Classes, interfaces and traits

+ + +
+

Aliyun_Log_Client

+

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with LOG server to put/get data.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Exception

+

The Exception of the log serivce request & response.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ACL

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_BatchGetLogsRequest

+

The request used to get logs by logstore and shardId from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_BatchGetLogsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CompressedLogGroup

+

Aliyun_Log_Models_CompressedLogGroup is compressed LogGroup, +LogGroup infomation please refer to Aliyun_Log_Models_LogGroup

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config_InputDetail

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config_OutputDetail

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateLogstoreRequest

+

The request used to create logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateLogstoreResponse

+

The response of the CreateLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteLogstoreRequest

+

The request used to delete logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteLogstoreResponse

+

The response of the DeleteLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteShardRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteShardResponse

+

The response of the DeleteShard API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetCursorRequest

+

The request used to get cursor by fromTime or begin/end mode

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetCursorResponse

+

The response of the GetCursor API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetHistogramsRequest

+

The request used to get histograms of a query from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetHistogramsResponse

+

The response of the GetHistograms API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetLogsRequest

+

The request used to get logs by a query from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetLogsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Histogram

+

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListACLsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListACLsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListConfigsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListLogstoresRequest

+

The request used to list logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListLogstoresResponse

+

The response of the ListLogstores API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListMachineGroupsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListMachineGroupsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListShardsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListShardsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListTopicsRequest

+

The Request used to list topics from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListTopicsResponse

+

The response of the ListTopics API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_LogItem

+

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine_Info

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine_Status

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MachineGroup

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MachineGroup_GroupAttribute

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MergeShardsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_PutLogsRequest

+

The request used to send data to log server.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_PutLogsResponse

+

The response of the PutLogs API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_QueriedLog

+

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the log.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Request

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Response

+

The base response class of all log response.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Shard

+

The class used to present the shard detail, for every shard ,it contains id , status , begin Range, end range, createtime

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_SplitShardRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateLogstoreRequest

+

The request used to Update logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateLogstoreResponse

+

The response of the UpdateLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Util

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Log

+

+
+ 芦 More 禄 +
+ +
+

Log

+

+
+ 芦 More 禄 +
+ +
+

Log_Content

+

+
+ 芦 More 禄 +
+ +
+

Log_Content

+

+
+ 芦 More 禄 +
+ +
+

LogGroup

+

+
+ 芦 More 禄 +
+ +
+

LogGroup

+

+
+ 芦 More 禄 +
+ +
+

LogGroupList

+

+
+ 芦 More 禄 +
+ +
+

LogPackage

+

+
+ 芦 More 禄 +
+ +
+

LogPackageList

+

+
+ 芦 More 禄 +
+ +
+

Protobuf

+

Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class.

+
+ 芦 More 禄 +
+ +
+

ProtobufEnum

+

+
+ 芦 More 禄 +
+ +
+

ProtobufMessage

+

+
+ 芦 More 禄 +
+ +
+

RequestCore

+

Handles all HTTP requests using cURL and manages the responses.

+
+ 芦 More 禄 +
+ +
+

RequestCore_Exception

+

Default RequestCore Exception.

+
+ 芦 More 禄 +
+ +
+

ResponseCore

+

Container for all response-related methods.

+
+ 芦 More 禄 +
+ +
+ + +
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/packages/SLS_PHP_SDK.html b/aliyun-log-php-sdk-master/docs/packages/SLS_PHP_SDK.html new file mode 100644 index 0000000..366a80d --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/packages/SLS_PHP_SDK.html @@ -0,0 +1,341 @@ + + + + + +SLS_PHP_SDK 禄 SLS_PHP_SDK + + + + + + + + + + +
+ +
+ +
+ +
+

+ Classes, interfaces, and traits

+
+

Aliyun_Log_Client +

+

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with SLS server to put/get data.

+
+芦 More 禄 +
+
+

Aliyun_Log_Exception +

+

The Exception of the sls request & response.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_GetHistogramsRequest +

+

The request used to get histograms of a query from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_GetHistogramsResponse +

+

The response of the GetHistograms API from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_GetLogsRequest +

+

The request used to get logs by a query from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_GetLogsResponse +

+

The response of the GetLog API from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_Histogram +

+

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_ListLogstoresRequest +

+

The request used to list logstore from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_ListLogstoresResponse +

+

The response of the ListLogstores API from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_ListTopicsRequest +

+

The Request used to list topics from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_ListTopicsResponse +

+

The response of the ListTopics API from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_LogItem +

+

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_PutLogsRequest +

+

The request used to send data to sls server.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_PutLogsResponse +

+

The response of the PutLogs API from sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_QueriedLog +

+

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the sls.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_Request +

+

The base request of all sls request.

+
+芦 More 禄 +
+
+

Aliyun_Log_Models_Response +

+

The base response class of all sls response.

+
+芦 More 禄 +
+
+

Aliyun_Log_Util +

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+芦 More 禄 +
+
+

Log +

+

+
+芦 More 禄 +
+
+

LogGroup +

+

+
+芦 More 禄 +
+
+

Log_Content +

+

+
+芦 More 禄 +
+
+

Protobuf +

+

Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class.

+
+芦 More 禄 +
+
+

ProtobufEnum +

+

+
+芦 More 禄 +
+
+

ProtobufMessage +

+

+
+芦 More 禄 +
+
+

RequestCore +

+

Handles all HTTP requests using cURL and manages the responses.

+
+芦 More 禄 +
+
+

RequestCore_Exception +

+

Default RequestCore Exception.

+
+芦 More 禄 +
+
+

ResponseCore +

+

Container for all response-related methods.

+
+芦 More 禄 +
+

+ Constants

+
+

API_VERSION

+
API_VERSION聽=聽'0.4.0'聽
+
+
+
+ + + +
packageSLS_PHP_SDK
+
+
+
+

USER_AGENT

+
USER_AGENT聽=聽'sls-php-sdk-v-0.4.1'聽
+
+
+
+ + + +
packageSLS_PHP_SDK
+
+
+
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/packages/default.html b/aliyun-log-php-sdk-master/docs/packages/default.html new file mode 100644 index 0000000..6048e4d --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/packages/default.html @@ -0,0 +1,871 @@ + + + + + + » + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + +
+

Constants

+
+

API_VERSION

+

+
+ 芦 More 禄 +
+ +
+

USER_AGENT

+

+
+ 芦 More 禄 +
+ +
+ +
+

Classes, interfaces and traits

+ + +
+

Aliyun_Log_Client

+

Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with LOG server to put/get data.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Exception

+

The Exception of the log serivce request & response.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ACL

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ApplyConfigToMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_BatchGetLogsRequest

+

The request used to get logs by logstore and shardId from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_BatchGetLogsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CompressedLogGroup

+

Aliyun_Log_Models_CompressedLogGroup is compressed LogGroup, +LogGroup infomation please refer to Aliyun_Log_Models_LogGroup

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config_InputDetail

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Config_OutputDetail

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateLogstoreRequest

+

The request used to create logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateLogstoreResponse

+

The response of the CreateLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_CreateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteLogstoreRequest

+

The request used to delete logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteLogstoreResponse

+

The response of the DeleteLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteShardRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_DeleteShardResponse

+

The response of the DeleteShard API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetCursorRequest

+

The request used to get cursor by fromTime or begin/end mode

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetCursorResponse

+

The response of the GetCursor API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetHistogramsRequest

+

The request used to get histograms of a query from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetHistogramsResponse

+

The response of the GetHistograms API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetLogsRequest

+

The request used to get logs by a query from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetLogsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_GetMachineResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Histogram

+

The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListACLsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListACLsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListConfigsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListLogstoresRequest

+

The request used to list logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListLogstoresResponse

+

The response of the ListLogstores API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListMachineGroupsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListMachineGroupsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListShardsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListShardsResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListTopicsRequest

+

The Request used to list topics from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_ListTopicsResponse

+

The response of the ListTopics API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_LogItem

+

Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine_Info

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Machine_Status

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MachineGroup

+

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MachineGroup_GroupAttribute

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_MergeShardsRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_PutLogsRequest

+

The request used to send data to log server.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_PutLogsResponse

+

The response of the PutLogs API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_QueriedLog

+

The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the log.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_RemoveConfigFromMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Request

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Response

+

The base response class of all log response.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_Shard

+

The class used to present the shard detail, for every shard ,it contains id , status , begin Range, end range, createtime

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_SplitShardRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateACLRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateACLResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateConfigRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateConfigResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateLogstoreRequest

+

The request used to Update logstore from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateLogstoreResponse

+

The response of the UpdateLogstore API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateMachineGroupRequest

+

The base request of all log request.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Models_UpdateMachineGroupResponse

+

The response of the GetLog API from log service.

+
+ 芦 More 禄 +
+ +
+

Aliyun_Log_Util

+

Copyright (C) Alibaba Cloud Computing +All rights reserved

+
+ 芦 More 禄 +
+ +
+

Log

+

+
+ 芦 More 禄 +
+ +
+

Log

+

+
+ 芦 More 禄 +
+ +
+

Log_Content

+

+
+ 芦 More 禄 +
+ +
+

Log_Content

+

+
+ 芦 More 禄 +
+ +
+

LogGroup

+

+
+ 芦 More 禄 +
+ +
+

LogGroup

+

+
+ 芦 More 禄 +
+ +
+

LogGroupList

+

+
+ 芦 More 禄 +
+ +
+

LogPackage

+

+
+ 芦 More 禄 +
+ +
+

LogPackageList

+

+
+ 芦 More 禄 +
+ +
+

Protobuf

+

Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class.

+
+ 芦 More 禄 +
+ +
+

ProtobufEnum

+

+
+ 芦 More 禄 +
+ +
+

ProtobufMessage

+

+
+ 芦 More 禄 +
+ +
+

RequestCore

+

Handles all HTTP requests using cURL and manages the responses.

+
+ 芦 More 禄 +
+ +
+

RequestCore_Exception

+

Default RequestCore Exception.

+
+ 芦 More 禄 +
+ +
+

ResponseCore

+

Container for all response-related methods.

+
+ 芦 More 禄 +
+ +
+ + + +
+
+
+ + + + diff --git a/aliyun-log-php-sdk-master/docs/packages/global.html b/aliyun-log-php-sdk-master/docs/packages/global.html new file mode 100644 index 0000000..538f64a --- /dev/null +++ b/aliyun-log-php-sdk-master/docs/packages/global.html @@ -0,0 +1,71 @@ + + + + + +SLS_PHP_SDK 禄 global + + + + + + + + + + +
+ +
+
+
+ +
+ +
+
+
+
+
+ + diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-00/phpdoc-cache-file_424e0cdbe1d8550cc6c3e07815137cf1.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-00/phpdoc-cache-file_424e0cdbe1d8550cc6c3e07815137cf1.dat new file mode 100644 index 0000000000000000000000000000000000000000..5b0dab14d2c0e71e87b6d037664c69754195b4e8 GIT binary patch literal 11541 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-06/phpdoc-cache-file_239fdc416f469298cd1d8b3894560f8f.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-06/phpdoc-cache-file_239fdc416f469298cd1d8b3894560f8f.dat new file mode 100644 index 0000000000000000000000000000000000000000..742666ad91d35b2589ff81ae582e74839231c6a5 GIT binary patch literal 11461 zcmeHNYj4{|7VT#P{tp8oKy70a>*d&?ciXy-lLniIk$C&b05PIQ5*vzChol?B@PFTP z@61r7-l?df?XJGqqULd*=bk&m4_@bm*O-hZFOwi2t2j&a?MsygI-JnIufj-8zc##f z+j~g8Q?K#O(KjQRjvD8w*J*nV)o!&0oo=hw9h~$!?VjqiPY2Crw|my?bWTsYG|tSL z$c$&TvF*F0ucGw$waVVfU=+scqe>@9oT_IKh^Al+HcFFR2a3P9@Z_K0wLVLe_CZ=y&%qR!YTBH#gT)6ZVq+eKESa&`8O?Dt2?r(BH*NRma2WG<1^p zqA(DHJPxujiG}YMnjEmG{}4~i#6vP0O`#7oLaKOPX}CCWBL#(o83#)qt6-FfU(zJ@ zRU9DT&AR0=PqI;%KK;%*LHtX^>bC`Ew>fgKeCpHhQkA_zj9rke=QlE9Jr?etQGQtD z;lW`^S*@~M$D%5wRS|1J)BQdCrTnDyM8ZSN90yU}uVGni6?#nw*TuqB4E(4DR-)TCW;^>N(G9ON z1;H2|CH2}sx9gv-ucbz6`|t78zxp!KzMTx@q&ZfBH1E*}R*j!`fuI=83qkco3%x>! zUdkw1zY#LlaD*{-A-$Sw`>!Q?H{8OEJ~ z5;Fe=z&W0}J!$3@xd=oS>DycxHr2jua=fnwGLJGJY~iyUD&G{Z6cxY0gaUs-C_u`L z7Hdj1RR1wbg3q^r8J=KDbqgIznU>JXc7wLrpkOS%bd<%g4%fCssfvqfhvzJ!$MLVzmEnzoj=mn7EoJ9yv=VoV4p zc+T)`vOn>x1sl5FhGWJ=RydwS%H~W>1~l|j_R#9c069gq#c|aE!K8b%v(PZAO>{C* zIt%OaB5Z1#4|WqaS?Z>1v-N$&Q_tr;rMVK0or?4CReIc>{I-%O7%_|;}+7u;__WX!k7o>wUAvfH6f*$_p77uZnIzycNt z0+l%KjB05<9!t&gx*q_%2x1U^K2|}WS)PSG@#CO+(89Jdzc_epJvSD>;7k&6-ZH3} zMZn5;lKYPB`!m8s<4UDn$70vbV$YeHh7C_B&k^?5jhy$DGKu;st?8(VLT!c zRR7Ar5k--yA0}SL3I{*^?X6Wbn59DrPG?wRsqxSja&U3bo3rZw!LTRtF@sDeC?^{d!cxgRIGh%L2c%T^N<&Ju>i2WQE~MS0 zaT45LnyVGwxE33v>g$V7{pkM~dM)auYqd-jyk>24 z@}j7WUtt@pvJRtmU>(8%Py%yjwRIqJy{)~k*{F(BuQ4nx#+;_;CtgUH~6%T#Jn=xnhX&h|KZMN>c!W*fRZRs9<+L%K@X zvT0qMm0xir?D{QNRXT{tO*qkF0ycXPx5)_|v9PawXXp2_FtCgwja?wLYR+uF@PZZ1 z+eBM?c$zarhL*h~Mnvp_UtcOSvGPk2mVlK6TSlqqezEj|6ukpQ_TCXw000+JvSl(9 zrs^Q1R+(yzjmjb|H4+Nn+YhgOT(kS1UjBQB1|p2Y+bVS#X*bAjacJ#%tGQALaWkj~ zcsZ#y05rjgJE0mu)fNZbBz#si9HlRYYRf|m4RIihS3HTh+qcc!#hQB~bN(u|bgNT@ z2?BRMM6F7@x*w_e_>OCFIT^Lreog@Xmq>{MjaJ^d?tttx35-lYxf;i$1)+x4x^#20 M5!c}WT~BZR3qTqX_y7O^ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-0e/phpdoc-cache-file_e950411f3233965341425c00386f74b6.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-0e/phpdoc-cache-file_e950411f3233965341425c00386f74b6.dat new file mode 100644 index 0000000000000000000000000000000000000000..625df42d47e8a02952ea102a3f6e978b6afd9590 GIT binary patch literal 25663 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-18/phpdoc-cache-file_1c392768ee1a3da61f3d0da0697fea34.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-18/phpdoc-cache-file_1c392768ee1a3da61f3d0da0697fea34.dat new file mode 100644 index 0000000000000000000000000000000000000000..f13c419816adc0440eca606c6aaef549d906d10c GIT binary patch literal 11844 zcmeHNT~FIc6zwxo|AQ4(T0m+^93Wt}yUV7uTPe%VnMnx$9eb2o! zlQ@ZkBgIr~TOL}lJu~<7+;gw}!D}CTjq&yPRTAVQ8E1*QdL`39g=6~lbr{LnpAFA- zy}Q)wc#S8!Pp(CJ-8f0Tw(B)S-`#iHLF?c^v_-Si>l_{*9Jum07&JT0jvLT(devBD zyvp788t;<6jMBX~GCS>_U&^n!OtTk|g`S2~I3rDR6-fH~u+{b&zyFE5Pq+4Vcb{%K zyG}P5->PtUojKdx9p^L(d!i?tZj|JG+#8MaER2WzDJRN zg@Z#S{Ui<~?uv*+-0p`e79+Xs`>)@gpZWfd^TPRUuOQ@aJ14Z-%0k=mQGba%yH1o7 zB}0c!3bAWn-k9TpNTex=dYi}oc{2314g5J9IPzO2<9^w5MgZpy`{76bJ67S1$fWa3 z1ku|*#G+eTF#2t`^1N;mrz-&7Rd?TV8$IHKj+*4sv@ruEViF0zS<1CJ{o@_E07M4m zU9Jl2YVYd&?#qG5qs#|W_#%eV*M%!ZwQn$)!2hT*AWT||iZTt=|BjO2%M~Do7w9rg zxq)4#l!SIR2e|rx=`CMax}q6}<=#;$_i^?-xtg^`S6z~5_BZI?F%cz15}XDif}keTyD01>XBk@0(V}B2 z9E~GsvZW@|Y0@crp!y6k4^hO2$%UVO{l>M794SQh}X1C;5;F#&t z=r7$D48EF-q$a#1EatjG&of%ubha=v(|?-JQz)1d+~5+8e-G z1TMHej{?y06<29Y9?TC1*hKn{Mbp-yRvbHJf;jSqk<5ev9=;LWVr<@u5d>-vN~IE2 zi-e{VgCSQ2B4|k17c^iwqhlLrBJSWjouH|_k;()OT+4!y@wI6K?$huv%y4nh_0BFY zpC2@v&CcwRIqRF4ofaQKeJP2Ek&4&Q{V`J?DhApVVSG&j$o`o|Ac`SfEOfMtBnBM) z&27cJhLkQ06F7%)X{G7j@!@kB+*z5y#-eLL-r8vlqv=@)r;o03=>K?jwz)|-zzcps z(YX)M&{XolbLJ=jn)X!VM4`@8|Ef{PAlinxXh#`3CZ?Fk4Ka;^*ghIXxPy@>fi%jS zgUB%bEL14^GwfUdMgvDW_ATHQ4D{F#kMc?jTMOVBBi9O1)^QcdzTk*`XjNUI3YomU zGeacnxTR#T!F`k<732-W;OTs`5SAMjH@8)BWKoRlu#iz&4?s7rp6vJ^rsA~@ zX7Ob!9=l|@;=!^@6)*J2eMgHhDZsekfvWuRmcDuDXcP+?72h7;J(-sXH= zYJCfA{JWD{cmDzM9wn{LEa%aZ0g^iE{11Z~&7%_3AcvNsh6aecJBKHf&SXN15sdi3 z8v&~Iw9JMoMe>^XVP8=F zbeWf!b35I=GG6wEBexMfLI*PJ}|+>YzPsk zXBM`PYSm0}dC~`pt3Qp}*iB}FiLl3fbmgS*lNer|^0!#U@feG;G)}UDAyjoSUziQF zaL~dBUF5v_D;CdLA>P#K8%FfhRBhnKeWt3gQBkCoMnc4&e|Y2LqY3}xtA8KRK!lh0 z_NXo+{aAyMX31cL6S}m@RD&~p-&qZR)s0U9vO~PsRs(!jR~uyOOvH=L8q0vO7v7A0 zku|&;Dj$}V4!B!Lw>M>9#V&sYP(BHvxz<7|8f_lxRbS16Z)TQ7&{3XyWEsY<)L-=$ eusP!)wwBu|1(;IdB_P|EqU65e2FGS~V*dx`_h(xG literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-1a/phpdoc-cache-file_4a330a9886b7d589ce4e8e58d44ba117.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-1a/phpdoc-cache-file_4a330a9886b7d589ce4e8e58d44ba117.dat new file mode 100644 index 0000000000000000000000000000000000000000..414aeae4c6b3556920949531dac5294654005693 GIT binary patch literal 8614 zcmdT~TTk0a6z($;|G}~<6_B=&gj>x@TQ<;(mQqC7J|S5XdqPGywmY`jMu`8u-#IgO zoGaPI?6!F*i9K`X%(;B$J2U<4b>4VxI!I5Fpcu+HPxSSP%mS@a`ua{qa{SZv+HLPX z^A0@s#ny{~$Oi6F=5^Yhdk_RYxqt9Rio=6oKWMiDA;VU9u-6U_dxt@X#+g~E$az-# z&~rZ}p^UQa6B)@|9(T_!WtJv!CSOAzngPwQPL>opko0?hf7f$={S9x|*S5E|*4LaZ zr<hhtqzLhDm=?K;Z+PT!6gfOHbF|E)zLOz6-(Fu^U(@ni zp|tdqIFNWNB2sfBR5}(zx#9coKAxTW{-*QVd9_{F^3~=MO)r(X8qjRB2`A}0Iex#F z`B`$~9AA8N`Z^gp5q{9>Dv+;feb()*DDpv~>o1*9-dX*ENMsr9ZB)cQg!#sB{*2)q z`8}6$IB#sJwQ~=l_?Ul<;`DoKCHVo|lj|ZtY#0HoznT9w6h>EZQu~;DoP;igf6CL)1$aAfFMPAzq z7R_=9I8!mSP~HK;0=7X`j-QYOY+2}=`ZCaXcJIgfX0gI-J1Bf7qQZD#e`d?pNc6wku7lqB|6gN$uss^$gUMQ? zGmJ9_DPsN!fGdgG(^(@+u!UQ3BYji6GE{t*2?hRw z2!O1ZT|82%vGw1hB)Gi>%_kW$eSl57`fn+2*@z9=b+VI3uHk1`oo(-7|z z0Y)lxL&0O$G{ka@+>)!o|*^%k~QwEuDhhw_%~?a z8zM}ICO8g+1c6QFCz>^9y^`E>$e6%V!!(jMWg4=dVV|Oh4nPD@he}IHRr`dJ<)ded z470UVC#lrAYQTvlu{NPGlxV`jrw1GtDB`-c_JJb+j}}J2CtiFa1P*3HKzoOWFuEnu zEBL}h5Hd7ZLFFG~$2*m&o{CgHqPRgMn=Xli$mAdxDjy0oWD*3gZK2p2&|;xAzN>{<^|i*MG*haq?G8-zPLBMNRc70UZUKJL8fq zn259R?;f3#Q&FIh?M&PxGM)}SOpaMXsIsp@D-n)8Y5K(ew>mmcuUxl!h1wP1+og>< zwhB=M-~k7Md65;vq0k&BG2!z(QmwTn$`r}S@CXIH2F(}+#Sz$>6DBkJO=t!1k6D&=|?LG@3sCH^g* zBk(KuE{k}pVMOO64TP(?FnO|n?GZ1~f%0?FH5ftqG2hVCF};2aZlS!U*dhd^B2c>n zqHCUKf<4MYz*H3_PfUf%R2_uWGE+Tbqq<59jRb~t_W8Y!gH->^$sf;XAW9|NM>J(5 zZYcj}_)|Fh(S2M$H3okMcG31X2&ops&{o{a=9swQPZdyG{yE7~=-6i(fZU$)@$ACRfUBYet2BcS{mH+?% literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-1d/phpdoc-cache-file_db8b17c85c92f5cd1dc7bcebb8b51a91.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-1d/phpdoc-cache-file_db8b17c85c92f5cd1dc7bcebb8b51a91.dat new file mode 100644 index 0000000000000000000000000000000000000000..17b3bb1f30d9872a184b4ee0f25f93f36a557c6c GIT binary patch literal 11077 zcmd^FZBN@s5bkHB{s$|nR6y5490Jr_?~V)ft~yE)t@;Vc+BlnJua2FrZB&H#@Au5? z+Ht^n>BYJBT2!fEdw1vcnP$P5Zjqz}N5(n8xMro|CPGk~jHKt!*sZdV-Y{QN8KKHk{b-hRB{ zY&)HJe52K1m^z!CE$28?UC|XzCycWm?v2J-s-giuc^rlgKbbgMCQ@I^9$nvgyzzKL z<6xzwA4h@2T@jL~n?0o?F_N3U|LXPGsqb$&&z+|`B_W?~9ntDsmiI$i%qlopB7066 zJJ1peI-%9j>Fanze>o(93gmN=f#v&6Wa%*0<(pW2ZDkBXktC$wO&0mEmv0Q{R~pcf zpHmt2s-Cyf-;&%8e#Tl|3kc{u$wh=pbi*h`zilslY!F9Ds;@yl;xp~c9- z1MrCRWUS-AWspJu^FLWSe-=KWgU4AnRDsjaq99dqWx~6fBSqRpLDRW#X)t53F)mE!jY(@CnE8=9YP+B!HG_rlW`Z z+q1DJ{!xH8O~jKalCcOR+$|EBG>+bSt@fN$?ZjaSTf#;SuSr>oJVEBDRF1G%c)Q;1 z-5s`Xn#)lTX1yA=#Zk)Jg>ZY=cp678W#3A4_1YX~uf)3HwI)Ck0R~7t7YK3j=f#E4 z$P51*SN+q^W9{3;Kp$FT6-cr!J;AE+^*yg4@icD))vGpog&^vPFkHM7S)XKQYh~LVFBA9n_1SMz0d(Jigdw7kSLV>^qX}8tY`uKoAyBq zxpXh=-UT8Q+NXjHPb703L5YquSvk586x|zSY~!el1g~MsdV(HeaRr|dW7baZxWdei z);v#b*u!36G3Bz3_?TftMy_R2)U1yot%^kW!6XEc5lXv6- z5L%RXxhgEHy=(HjC;K7`Qy)y>qZmlv6s`o-zQJSy|APd8G8ruvlxe8`dl&~FuK+Q; zz?5mq4eU}-6581w;F<%9TfWHYieVf%?GFMm01XW2sYBmmh&JdF#Y(!YMP| zbYafEnex>BLr-b%@USorAsr(592c4<4sGU}YsSaOqf`Zj35}}PDp6e(s`Q3j3rMrw z9{mNe5gPqZHaXj05RINUQ8-WX9DJs%Q6zeS5mRbd;38>oI!B+;FUdwDp;_qs1^^i1 zg7ouvf;yejDg)O2>460s%-qRgwz+T2fSpo7Hx*QI!NWtRx~UUi9%yi>Oc-Yp7^QGRWSkK_v>wOgEDf&LC3((HrteuO^cqtMh@&LX1Pp z$wyBaq=a$CSB)bL7C_yt0U`@>t0$xlcQVSX$>w_i>Xqpd%0lv#gksLbQ~|QwY|~VU z?Q4LDyCaFY5=|yeC9_?ZN;L7D?}v>SVH7=how!7=8qMLRPyg3 zL>pzcf~8lE`lrX*Ta&7rBMTLrscKe(8{61($$9?!fJDBY#1k7E_r>V?_ZYWG1ZBBe{i)-Yu1Ko{?(TvEJ9@!pP%F425_Ze)p<}f_lirk zv~m2h2w85vVOiPPb|!?bj3~^^J{}C}m_M2+Q>gOS1(rFL1Vc<$ny`t3FxAXI%b_oC z$lhz>LU2YADl6tiVX79&);v=!uu)m0nMMLzID7ktkN4C5yOY1xXduEXeCAP?k=BFq z7LpduC=C`WyjIhFeAQDM7MkG1>y#St)fNhj-#^M4=FiorZSl%LQVzy0GO)76%|8cR zb|^-i_Fj})t=9Ekq2`$wQ>Jo0YR_%c`=I|tRuq6V_l4yeUODU%9+{ZR%N%nUL>s6` T>5T*1m!f1I_2C#@Om_YOU4^P> literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-23/phpdoc-cache-file_9cfae108f097ba834f8a70c4d750ed49.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-23/phpdoc-cache-file_9cfae108f097ba834f8a70c4d750ed49.dat new file mode 100644 index 0000000000000000000000000000000000000000..c96b382e262eab5485b912fd87c27758622eccdd GIT binary patch literal 11826 zcmeHNZBN@s5bkFr{(}`&IzVd48xYL(?zoiRRYzMytA0YVHqIuj>e%VpMn#DKe$ULV z9Vc-}?&9>gw)p~CduL|n<(ZewJGXW0*2dT4myw^2WSB(y>ZOc*t;Y24D;3De*P7dG zx_7aAzk-AgLuEIrAXvy_xw_RPGy`thd8tWf`LsOrP`PD{jd&BKmUrS+gtm4d)r&i zp3{xSw^|La6KAKp>zoFvCwju^22t9_v(Y$BR5;`}PlLeWH)BW3Sn3s3Vn&EA|NSu`bvjlBzHXT)$8*!&)apLJ3s9gg#2mugm!1L5IJV`n@E%ENIO9^ zbcmAz)xNy3?EFB)F^PJchTeHJ^o$z3Sv5HFOCrO5*{fCt=Z@Gr_>8r>fexLg!Ve%5 zEg7lkzr9tMb)zs&bn3(EW;1 z>GL$XR`Ii6@XUEp6zx72dxqptCZ~R|vs<8{Ws>T!K*}BuG>FBlP_dyv@)W5&APG^~ z-U2ytv4-(EGJ8B0zJ!%TEaTeAJGXW4K%8`=Adsw9FsrM2@goxOMmL{vPBT zW;yhOv|j;Puu^Uv!nHwoI*2djz)E!W+OV@Lk*>L|Nfd{OK{_7A(-lFmoDylDD3LK{D7~de3q@hg zlbM80ST?I4Hb)lLwG*~Pi!C9NM5|t!6pjL>aRLJ8DufiuJ%U?6H;BZ^3Q@q3g&r2! zK;rqcpX%XafmwGD_(lY&vBKfpk=Y7}PG2NT2tlGi4w6S}1ZdGh>Z7(n3$ZlgcJF-= z2<=feWSm@V2nuwB$=copr|8`xVrwTo1b77`t8sdW#W{3=k6AsvM^J?ixP2C<*6pD$ zB=%xrg?}tiA|ux-A!_zVkXD5v_-FzQiwKhG98SLYb-BgvYS!J*Sr;9a!DtoLTJ%e9 z#|)6|hm8eD^rI1#meW|-oC-74YV?YSGSmha&;r$8f+C2EN7yZ^v(~Tqm?F~;EXp@I zE3A6@rit&q9EdbXJX8vw#87%BamC2?H7+Lb7e_#qWKOXpP2=dl2a*5j3J}8^Oq!g!-Jit(eY)E!νnMLpLiDVe*RTT3u4@ zTutGG#sy(`wY(0eBecPOy1trpMOR%CYVsWw;4#%oa31ZT0OPM_Y&cbU^ z+w%wjeO_^w!Q{d8P=GaLo@8j+I5g)5r9@DTyrvs-!GOcw2yQXfZ^Z}#jRB?Bk*-8S z+lfJu3;hsfi0TU(teg?s8k&eZc$bOJSl&o&eFn(Hf|2r#YJKk0@G{hJanW_pE-#-Q z)a&)5$tzRZw=SC}A3=R7iO8J`^~YTJP%1ErP~kPPm;EyXKIG*lRTy6xNz63*>uZXu z8ai@ee!u~YrG<)n!_23`_h@1GT79m7b}Pp)pxaCuICxBsL-)rMv-MTN?v21RR#}2& zXegQOlrjofX6#fu(a7=CyBff;V76u)W@8NF5jh;POVRX)wPO&3yBCSvN3%PVZfsYi z;*UZr(VxKP3?^DAGJc;yU9KKD>|90kUt%3alo7QOsIw}r6r3`%EeZ4)GaSGUE2XAF zAn)u>;3%`)T&!1M!8QVNdF6%)a6Z&5xaOM4t=Xv7;@J=gm7*AB!$M5E(Q5PTbM5TO z=Kp3gUgKcmVp+yxlgwv4Xm%#!DVK~l=aIH2dLTa79%elKohK^`CNp5sUagmM-E71^ zF=B=jaQIBY6(EF7A~f$=zn*O#Y#`(-4sf0-Sq!Nn&3`k1QSVHAEe8xTXenSAbhx{7 zcsS|Y-_vFk9Qfcez;?|OCteXb%(c{ajvN~*bDNFHEMuc(E?1d9s#_ra!ai-qd(cNv z-L9Ol?2U3sVG97y;`-4gEE;1~*p>WGYgAhRE}7p}Kb0x1QOP8wDW|kXEjZWxJ(aCr z{Sc*jbKxOY%A1o|TAnxgmcq@ar2Q(DY}a!km|phi1is$_VY5<=Ytqto$?Q^iX$-= zWqO2E5DfMxZ44S>?nn_$F6 zW`+5{stlK5pJWBMLFF@&(z!O>;m_XoWj}zO&l%-|ZklJ!1f)ICrY`s@9(r?mS%e<# iHam2A@dE&8dbQ~8uTIcwa$J_t$uR#i{@Fd3$M)Yv8Dic5 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-27/phpdoc-cache-file_42d5b12b53b855f9c9dfdc8ecfbea730.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-27/phpdoc-cache-file_42d5b12b53b855f9c9dfdc8ecfbea730.dat new file mode 100644 index 0000000000000000000000000000000000000000..d9736608dd93f410e788c8efaae032126e0fcde7 GIT binary patch literal 12047 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 HmgxTi!CaLF literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-2c/phpdoc-cache-file_043c0d130c3959f07f50004ac3be54cb.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-2c/phpdoc-cache-file_043c0d130c3959f07f50004ac3be54cb.dat new file mode 100644 index 0000000000000000000000000000000000000000..d0529f76dc62b2782308b232192e25dacac9bf1c GIT binary patch literal 12091 zcmeHNZBN@s5bkFr{(}`&IzVbk93a$O?~Y4puR7WyTJ;l>wQ)9yRmV=(HY!5-@Au5? z+Hn%+1;wejwtN8`@9gZnJoC(KJ~+)6PHi+8y^6eaD8nRDH?L&uDSt$NzV-t-`M2iS zwsRjlEvNS6;K@M5gW6f_G;OEWIP&aPx7C%Mx_8n%ZA$y7XSeL*R`0aeJ+V*dJ-uoq z61}SF)ZRs18N`QgWb#gU13#2+RFsac<=0fk$#W=0%b*@Mi=$L|lKwwwVdd|C;?v!o z!-Ip}9qYhqN25FC_Xml!*WS0z1HU6W!fFRm+QnzXQJVN+pWi$W0*l{_EhS^AZe^FA zAMWn#?kH^RE9pj|C-JEWNY}ltuR<}Dd#?NX?d65*?px2T-wq2({U|OX1V85EzYqkJ3)ydsZ(Ey~K|~%XPhM z&E7lB(k!xwaoL6~VzC~Xq94d6Uz5RkrC6iQzbE1s_##Xtw zxF~L-a#8RDl-=Ed))c7?9l8`f@kn?Q&K9wZYiA#v=JArGYezvK*_Jh@LHTydDc~n^ zh{eLGJNM%;#5eTg&o!nN!fjc(rR?aY%%)tu%85<(<29nVIt zU;T4+B@_bReUGQ^#kY}i&0^pPtuY6P(+<7CN8{&5PEF!%7KEdh33`oSYl|RQEs3m8 zlE@h|k|=r>3t-EWn}kYOH)9`mM}`iyGxh`!2^b}kMERXGDI5ix#t8&m0^Dk6zSBZj zz&1$b$rF-*BMa3pZUc?y&wj4@ixpTu_GwaktQ2Q7lNX5hm5VAb&%i{h^!{)p%$0o1uVFfJ84E5>K7RN_#5JK>6qu7o654m*$=cSQIl+_${Mr zn^Q-Y$ORxUC~tFBSoid{&hM`5i8M%DFoiFoFI`=@VpRJYlL`DrjRCdNr&v*@arD1~ z$op~wh~WjgOjB+^N=`{gvf04a8{{9kBBLvsabyHOh-H{BL$p%_XsOT*#g1K55yR1P zGiC{wS0vZik|=mJ#0eD~5qPsMou`8wL5XRWHEFbN+N9d#fAGK;#F!9L@E#ZmqMLkR zqr#VLYFYvg8y#H!a1=i? zVdK0dVLxG;g?_ryo8L{j>SW$k$~isFtwUIcSbmQO4IPOl_w_UFWMop}d$|quS#SN= z@A!eA+>vhqYNpqt|8$ek`)bnj7`amt8s+V!;}njZC3*%x(+0`2JqL=ZlNj_Og>W>E zKz+nG9S((Jy|WL1!iXR+f1Wm=bu6yZh~1l>Kd{a8CmGf@PP8Q;DG|h=Hw{H~xG&IN5-LyK__-|4K4<*igEia;M&F*3e3 zt;by)UWOU2uG-GU_4TvkdcEG7yfS5d6U2FG64bSliaNe04K=ePsu$WGemEd4WcNa2 z69tm4Cpu(?67!Sp<_2TxLnkjxCOEV4XrcYy@#a%`-CCH}#;j|A;o8X!WY>cg&LLe0 z(IWDUZgZ1xl#}0z&OuFDhIME@dG{%s6tGUat9GWq2dK~0fMmdK!>r6k9y%~`xa7u} z21{%tjVIjcNK{A~7wV#9Iw(K>ER-+06Ih+WOh})Ecm{v7Rzmn{Z#)tJq%_lcTM7Od zOIM0mnfF$t{fsw`%gN263RXz&z5Nn5&gOpwexw?^F6F}bJ*f^d9T2>O-CG#Z_mMt%dzC%8oD^I4gT9Pt4fQzH> zpS-9Un3;tUfa61maPcmn3`daj(>AXFNKE0OdD7;L*go0ViDuyeS#&w~kcrEsmL(6vgvfY@BPPWRI zdF1emCRZ>fctkY$VfC$;)TKNb@KJn+xhkHaERY8xkVN5<9 ze&B6IHetwSB6N4LZsS`HAhYA)EzgZHlgdeP)~Gcq=E*!}1W(pq``XxXW`>Gnz=U?; znDUe8-<JO9+>fvR-J*dAPx0NTs*LnwO+$%7-zf6Lz}AE}!aV-vM5C;!abvndCIb z+Sc`B#nX4@qD2@|j(wUjkzZi2=w`A`Fs$ocR^55{fpA0LQn;98`%;uFo0)KsuFmlP E06yE%$^ZZW literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-2d/phpdoc-cache-file_5cae177591fe5ac0a1dab9ac209c1c1b.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-2d/phpdoc-cache-file_5cae177591fe5ac0a1dab9ac209c1c1b.dat new file mode 100644 index 0000000000000000000000000000000000000000..b84d6155390bb238cacae06668088cc3f23d1f8a GIT binary patch literal 21959 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-file_d8d56dabae20fabbe5c6da0b12819779.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-file_d8d56dabae20fabbe5c6da0b12819779.dat new file mode 100644 index 0000000000000000000000000000000000000000..550c043bbe2838aadb02e4487074f0ef75d58eff GIT binary patch literal 170865 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 XEy*$)G4Ik&S2t!uA!mHqEY$xGj~R|Q literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-settings.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-2e/phpdoc-cache-settings.dat new file mode 100644 index 0000000000000000000000000000000000000000..27a65842caeeda638a8ab5b2ca878c0ad222cf46 GIT binary patch literal 113 zcmeabGBvbPD#$2s$xklLP0cIGFN$$VElw`VEC4YBit@8klS`09f>TRMGV{`lm8^`c xs*9}*jjfazv=}mree+W?(=t<2l&q7i46NZ2Wtqj9NtrpBC6!9nnO5f3wE*tiCN}^8 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-30/phpdoc-cache-file_f5405c3c5c5fc494748cb07df138322d.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-30/phpdoc-cache-file_f5405c3c5c5fc494748cb07df138322d.dat new file mode 100644 index 0000000000000000000000000000000000000000..f69bedea272aeb5f16529017e2241de4f7236095 GIT binary patch literal 88510 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 TuGeXxr^n?B0SAk~e3bG3RIs5| literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-34/phpdoc-cache-file_6313c8684ed97495cd6c85612f310684.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-34/phpdoc-cache-file_6313c8684ed97495cd6c85612f310684.dat new file mode 100644 index 0000000000000000000000000000000000000000..d0b9b3fb926db627aa00d52a5849e7b62a9a0a95 GIT binary patch literal 2858 zcmb_eZExE)5boyy`45B;AhxkImYpC8y=5(&v>lc$MjGtPHVCwImWj%uN>WBW!~cDE zq@*aA8w`m2!M4P^=N>-yLf-T76%UGKaiijL1-VuFuNyG2mIeL&ATxM+4ESiow}xNv z;LYI8QkZ2hF?>AY!DX0)qc{w&=J8p04q-BiNAvOdcsRVgNG`9g$j*Be!g{YE4}Mb# zWajiv8aq|_LZ;>cOrdfEZ;=uCAUBL;RHX(`%KQoT(D`T$^_R|MQLT8I?MN2#+;>L8Vu+)B=r9D@Zj)3!`D)3h*TZ}u8NF^ z_7bUcv4UO{efZ_>Hj4V}EjvDKvpnuk$h{)t!n_luT`J8ol`@JV5ix;v6)MhzF+_7y z=Fy!>BdzV@FA}oIVccJB4SYSt1S&<G5$!DR8-FbCqlw>*qjA z5D7HVT1ad^)N^}GEV&frJd-h7lzD8W%2^aOJLx&9Kd>Y3*stYuZbD-}aNaU!z1osd z+G{>Xb}7xtwUPe-`^oSA&tsQ@W@ibLg1}>=q4{0)8x_Kcjtk7BTA>ZzH2p{^_d7PC= zhp;&Ka5~}Mj1{@$N*v9J$1o22h78j4N?1=mqAkGrGPetQN9EX}tt1p}&Cc zjH$1>#a9D4RWrt*AAjCaP1Dl|W!f|1>w_-zId3{3nEZ}Tp{I*2@kOK#hD!PF{$n)z zG>bmp{OX#=8<}#2+uF1Ugm_kBzOmxnagL*}z3AyJo*(cos$a=uju9mvHe0bGeZ6G$ z1)|y0D_b1fo;V^3X5qW{m`9PeuQB7NTTGoF+;l?;h2JaP9`SvVg4U|5a@x6xg*i3l zykYc8k=z_4+)n8>(w`yQ?@IrN$YdhuGI>iX1^kS}uST+gHE3yF)#9LcI#QAP5{&VF z=qen0XEvMi+lPmf^C5noOxjgibqmg8ix(%F|E}05)OO3(A}fLIcI1oAhM%gqk$f;g X)#;${`pA4qtRT6~fbPW9jJtmU+of|2 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-35/phpdoc-cache-file_a31d8d8bdbf8bc378c56fd06b3122622.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-35/phpdoc-cache-file_a31d8d8bdbf8bc378c56fd06b3122622.dat new file mode 100644 index 0000000000000000000000000000000000000000..53d825309a954cd52c1a677b70a798580bbe0403 GIT binary patch literal 12216 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_6ff3a57f72c80f7c257907a164767deb.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_6ff3a57f72c80f7c257907a164767deb.dat new file mode 100644 index 0000000000000000000000000000000000000000..5f5d583e8500fd78a542cc805a3b5ccc55e1ad49 GIT binary patch literal 13243 zcmeHOYj4{|7VT#P{ttu@AhyxO*28v8?{@1dP8)2R7>V0Y28aS4(d6?AvwFSe+8+~>Jx?$96n_KDvZ-HcwR;drQ%JT+IZbrzavM1Q`CVm()-KgxQahmz$soG^sIyU;WcnrKp&5`2`()|ZgqlCMI)39H|H8N1 zTl;%^+gskA*G)%vCc3`Ky`Ao^cNRxI)l*(KPRD(GHyn-gD7og5XL0QD$jmc3)8G}Tl*7lase~cregER>>zEv@axzmqKqK0}W2;RJXcOC@0-b?TKep$-ryQfc^EQ*qX zJk@D&c|+TZ_Fg*ha(sqa-lf;x*~MFLVA7!%;{%Buh5984&Px5L#`#TZ%3peYeQOm9 zW0hrOl)G^fV6i|f9?V$W(|_eU>CYSM)b;MkP*@m0BNN@KTzk(#_8V*<&qW;?vA5E$ zn4aZk93s?Y0oF?9|2R@c4LxOyy7QiqaoiC4-u;M?GVhnm%ZrHxduji!7+qcHMytLq zc5}$5oij3`NahAVIG;`Ha_zEl zXSXD}(fQaURk^IZSP5cpZ{as3X;ZS65+@s}P$T+OrnAQB2fuyz2-I}bIM!^=hTkNV z0YD)8qg)R$S@{S4{lf#6Z_48&jK}>NmIa_i{sDyRVBsnbe$)di(bZeo&OS*^!*5T3 zFaeB_dMzN_#V;2Z${h<$Kr*f8I{=!NS09LOBRAe zu^!}qTPMJZwkZ9reb7cOO@-a3P{qmwL@3~i>=8#$q9aY#jxGd6?+zK;IPD>TYgn?L zpodt@LKeiBwbLggRq{yKyF9gFFZQZX69mWtD>8JglA|&|g}70o;@>61@DM6Y(IAS( zue@F6ujb%QX}d^W2BcN2YY{NN8!(0UN zn1ci09Oqo0IrEBK1Y(QyEv^i!YTuF^@9TjY$9Vv@@L65!K#Es}ir-*Df!`nk;6kFs zl2Q%Te~Q!a^A%u*CrGJo;*^3_3R*%d+YMT>LGe|f9Ay#K;f^kGrjugY!$agZztINE zU>qFPN*i9y(1uqWUf*cLJwRA^aG6FfcEXp_hOg>_uSy#hX|`HbnTzuCmt0sFpRfiO zyN%EWgwZ~b65SW+x-2SdbIa&Fg%^ zSqV1&F+nlKij-9pXPo$$o78m7mvvo-1)Qg*buF2o##jyA1BTo-PMlXOG}%ap4)(8h z87A%3t1d}3`HViui4Uj;odR=_<`MA^>NCvQ&o%0pGYPYbhND(vbCnBX35EHXs3kx56|W_E_kp3)%Uu;;5rpM;RQHI)!a0 zZxO}s@t`R&XlbuJ6CWdo@+d4UD4O0zS=5W-D8D1m!uPiON}r@hHu%Fb(+&V)PGroq zdwt*O>bR}r+$A#<$z2fRiujhTlN8X0gHH6y#>1g9EUfziVj+UT75QEP9nXKrWOfpZxV)F7>_uYM}0-N zHRrT#18uc?_|Eb}eXETP9WWafjEpa)4Y_lP!HBeri>`nE@#BlbgM)+P$&iZmZR8?& zN_-Hi6suPGTvrq0h?uR?JZXHt|&B z6u@@UF2KhE+xp2Up?>(7yDkBuSHC5nll0Go{;o($ev`0vUaK`*zi|A%2u@b+A*FE2gy zW54UV*J_z6bWPi)b@(N=SplIoU>!mM5CVByW9>lXYFqoMW~CYq+Y~RNa20=y7XFX3 zcx$jJbnn1KtD$>g$a&aaHFOQYZu#(h$Z%f@)GVi@?FlZ`!busZYfcbG)_RbCGYMzU z=u4W98)zfEnotSXMqr1|wh@ZM`~AJguQYfM4>TDEV*KD0B08H84XMO3+6b%k8KjLi z&UF9MsEF>**F3DwPsr8Vz|*CcT2Cu*A?82QBA_D8Z`aW?msG;_SLw@jfF)0T<&<}y z%LCm0^OG9gf}(!9C}>h&REF1*)_ggIw3e4)*Y@uuVTc4RdN-N~*crclTV`M^im2w8 zR7tQ!REl1yDZSrIukez+H^dMiUJ)g0rb1z=HbUw#Q!TMkS)_$VLjJ$|@Ne02od|_y7O^ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_7dd5a8a267c2bb3bb22a532edb9c4890.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-3a/phpdoc-cache-file_7dd5a8a267c2bb3bb22a532edb9c4890.dat new file mode 100644 index 0000000000000000000000000000000000000000..58259131573c294b361b3c11e989e1620dbf248f GIT binary patch literal 19708 zcmeHPYj4{|7VYN%`40mjfbF1pSPwgVg(OA&k0pVEI{`+>;6 zww!j`xr&{Ar}e|bAI3Z$w+>^c({@_zz5d|9<9v9~8xEg7-8$Ib8F}DW;g#Y z719?2s7qR^+jCvc#x%G#0*i($!FO#N_TuCX8_H_4@ zgz2O&q;9B;Ozo!9zu<{r54h^d~a)F!AgN z_AmQs$|av@Vb}wTlI$lM&U}nZ*{^43CwVCKqrqj?y4=xN@Ime-+YSA#?yB4#bBCHv z(|+K4Y?y{#;zuEK-At2hCF+mtfxdCaMv%IVOW=*;6q>Vb+mg}DqE_^Ikc|EK(Z5yH zu;;ePA6uUu!Qzk9<*h&G+gtbNw=jE;{i*6U6?V^!ske)A3?pEJHzp~`1B~&QJ)nSK zCB>A;Faf4h64T(+q#&MF$)5=O8^m(m1Q%SlB#>&T0kG6mU#e)F0zQF+G{Ma1#hyzx zrM|11=e^I}U>u<=^v9o&DHMM#o;{F-6hj2)Zt8%)v#-p_&AB~0gf%zK8(Q6UU z{Fr$L%V-r+BHO>2==~@P7yv=&PH>Mhyhg;T9%|;JA6ujxEK3TEz^=5 zW3Vy4fm@mZ-g(y@1A-SRNfyjig71h~>}sk(i+w!ho&Z$ySj4TvcTT6bfE^u0K_C?7 zwVYidM&Ku)EPf&;xS2aoovZ6>bib=FhhC5l8t4`r%y*tbxGp*_Q@2wwG!mV^(ZiW5 zk!(4goV$f!UZh?dr0nF^lM^mMD%`iY>c09km9DuNgpckq3dCujS}4`j^{&$rXstSe z>Qx=R#-eb9_*mW(S)Y0$XUz2UmVT-gMOmKQ#ATvn!v(UBa)%{ztwZIBj`9RgKrs4g zQcwkhf@8?!*bgCv@9g7t*an0szd}7gWiCg>VIc9m?l0u1USMTA2zp=;aIv$RgEysZow^E;Rc-YG4}F z#6<$a#EwoBB-oFtv;hFFx!u0%Q7r<2LHf2@8CKQ4t>^ea40#$PF4)2cJ`%28yke~Q zEk!8s7eqiYUD9I7QVrFA4kGWvIbcSqt(WRuBv#N%MoXw?GeBDpkp1LxOIbAQu-TR% z7GZYV^|kNpE|cYsHV}*ZT-xw#jy60~;dMtFt^mTC2N!9iT@&WH+vn4UFY1FYN*n4l zTWwXTMEUA2YZt~F^r05JjnD?D`y@}$>2z`3(pI^YRw-Ra91w?FGox+Ym^w5u;9BIN z2?3f33LxQf`f#H#`@AJtI{O686gPUA#bS*epyDbGZToeDgTbF$bkdk2e|@|0mg&p5gVbbL&a#PCYPrel;&AJ z<@*hTY{+_g5#oKM+PMdDXs2Z}H$&Pq*h?FW3#}T`ZBro=zX2C2kOL~JOt^9qhNyMY zi5~c}c+)z? z>14vC64d^HnE?@z_EKk}INvDV1#L+F@+qk@lKv&zWKfLhO9`j+(VD@mCoQFrRQ7GH zEG7Cf=|lilZPc9c(fRLO7K5foF+)3Rm;i$KydQ|SDvOtyRr}Y(&iXnVIVpzfPOQ%m zr^tP(lgOg5Di;g1*G{kzgL$G%2t6wOOregHG1JEmYRv`%1e8*5q zcj|{@96Kjs@JfRz%>|4I=h&S8Hw_vqtzC|j>pB|+B}3dg=;+-+M+0zapaYrq#n7R% znCl}4EoF4rv{C`XcLpq&kfi!I4JrWsRhWp@a~4oC1Kc(+>D=*DcoRv zYSvZc79K8?Cn-Q%0}ud#ZIPopz6o+c&aT*x($k+6J3lggV3(NOw@>YH2g<$Jj*q ze30*wwc6Ph*lat?0Fc`}^Xi5+wp5mDw%Zj|get1EXv_D!4KFpOnC8oGlc29DU%U%> zjj^T7&xS(2X!VT;J?3C_(Cf0*e_+_tiaLW#T}-`IC~;xI+}>7(~IiIY}RneQ-_(Iuwu8Q2=35{1= zsuyMVitABn*~VJFXG-Ug6tr13G&kyCCRbX0`LfeI?%QgJMlDl@ty$YVJD8geE7)cQ zblQM*2mwF_bm8;bfoL+FUn$KwGBw?50sjXRc*CJ)fgNsM1=y_>t56+X+MgRibb6=^ z_`R^^zc~=!+XRR=H+k|C8bXWOlMkTyse0(42;*uWTf(7Rcnni8Rox2lg-&8rl|?ga z?^lF8;#h^JKJH-eY7IVHFk}_-&Dpwv-AWfMbk)a)8braIoiuVtt*C5aYBvTv-xdn~ zjK{bH4~w9zp<#AsR4`Q?3U<(Dl_$a|C^p0ibHci&KffYAf~AA49NROhJ4QIm2;t-v z86g?53KokdZU7NGKt$q$^^Y1hhl3~#v{UmA2bVnJm{HRWCfao>#wHV1K*?Km9`-#j zN_D=b%NEmE49+C?>6xA;7J#`l=uIY0#xx-PenZOqEm%#qG2<$)Aq zH+^Bp=Ry=JF*8K66@|MEmj$UBQp_#=Dv`B)o8bbbW*2T*U#NGN6xopyWp2`2!Rn|H z6(XVFJ~1Q+)C! rc7Y?u7~f~l(enHy5LZ`BJxI>3ujyW_>GKr~>+L+?e=l6*F0(VJFRxFb)s8t=cw({ zbMn?$#r#$q-ToT%v>)wXcu{;7jQZXn`k?=q=qUaH0?{jY1|3DgBy=_X-D(}S?8cA( z#O;?a_V@N)zOeSJvtWD|dV`zT+Bw^`Ui;p)x>nYiA54048S7E6=wTy; zb&p2zBma&=?^eaydgZc0-$8f?NcYn_LBAjAc=l@K{iRP$Bl3cbiC*2SCMs+g#o@$- z<46mv3vK`^rvJy2Yu|IN{$%9FUNEv82V%-QI~j?88clrvyH_Hp`Ge%+Uw4xMTh{*m zScULe+s-s(?O3nIVemig#ugce`lX*&@r@UK|BtC&te*Aln%RE6c(S6pP z^z=a9K#$B0b)b!plSy`VjnU}IP{)&SG%uf#y|hIb5gJF-aElrBWgD+HYV?u#&y0m2 z_Ivi11tRCvvq)UilF?^@n9|am%1hgXbRS`Z1+rB!4HU_(upJAeqBiEu451j31fvKg zqOo!{f?7p7YMj2eI|mDp^(^pxxG18aVYdiWj~VN{SP${CvYYn(!vi6nTpqdpq*p_; z=*qL35Uz`c^RWLx_l-nXzesoHN)R^e&J_1YKy4ac8-RZKpUX=X0^po?xayq$ISw83 zGLi+oV+IgSuIULL8ei|)4UMO{Aq>5!p|^mEGv)isTO#dKODz~oF@&;J*WF{5H zESu2}nXx{g*So}o_&N&1>FF)r&p*23|WPPY&Vd2 ze(bNqLAk)JI|zKM{E1lMaBj$K1wezV;w241B4798jWq(aXfp6d+n|G3nsK|2uJTpr z5PyOtq6LPaKu4IY>|Jn*>pMhjNmjJ^>1WBIqkuN@NZ;@Tix@#J1*t?A4cINA<*Szn+#)9c-=KV(vqII; zwxJE><8|rD?kjtAZeOn1FfW# zgjzNow55aemZK87B8(%c()>t|(%0baNDjcq$sTu5@v#NFz>7`c#Fj!wrIxys z?(cHOI-ECFXdfS^`XQu)C%?l5>JBzFkuTT8%!s4d!_NE-;3|ay6`ts zx6@xzBJ}?-!P!MK1tx;%xbEj?m{?_UCjr{lp(p|^#fs?jivG=90v5kjTz#xwr4c%cMRgbk zVJ#AxA`OZxbxbf6ucv61?wq=9puV_=?Idg?eXB#`MBolA7%5*=>v9Q)hoOec%QO4@ z!-ww=n$70X^pTwQjSs_%Brho{SxH3cFEjVR+=#M;D8w7xkQlmmF6cy_gu6gBDfORo z^g*o^qc0h2qW&cEGHQUv=CXDMJ)S=3OcA>cy8MLr69pY&awusH6Q8`i zxVlP&!(;q8)`4CS+Ui2w~cW#jnUWlbL++jI<8m`CwY; zVl4?%<_SEFB`sR+%#{UR^t%c@)tlA}GsS?R+yW#C!64)2)U;{fM+~w?>@%vam5e9m zTS#cL33=;^QWoZ2F{`1i7tU?8sJa}u&|F3UWU;TE4iPt}FARi<;Xk0{;Rl1bM+vr+0ZC$`$%db3}$HVlTRhRGfR zo@|jVCM(aJaVo5RwhM&ri_CVl4yI0)%yzL!=F0(Swq&-;vxzPe&&v7c!voz|vIbCp zh4VQ>$|mLoqiH{n(M%z}bSzw^EzF}dEt=b}^_7=gh62w*J8G7S(4JFfA-K%?Z>Ct%>ej;ghGtT)RBPY#UD<9V!SgBD`F0Q&vCbxWH-tcM4B z8AJv@*xtpf9>AG7r#9>4OQ9vVaq}yO7G8{-o2IC(eCf1keougFt+P42Rb8ZQp#|lDqIxmVW0=m4SH;%=htO4V; zEWYUMVExk@gMj{p(?&=yE=Mv2LLcK)a~-rj9Kf8L%|%%;KM-(%gi zh_YADVrdkYWU=)A<}vkdXAN0w%hapxlPzNEY?8t}BuqVv1~N4bqLgv54dUnJL#e>e zky6u9RZXeT4bm{3!QC?R0!*V-%IeIV)L4XQStV~;I_lQE+ju*-Ub;E(X;?WMv=9xK zLx>cRi5pj`?cv(MoGpF`A)hXR)X*dP*KK8#8kG!swDGbnLRbNqA?>E3Ul^62P&9Xkk; z#n<%E>LZR&C)+KO9e^FovsT%yS6r{p9#>uSkvg0tNNeE;YVpt4WG{iX(2uleI<*~1hp3PK6z1ru{+1cQ6Y+W5?l$rd`A`9c~Q4-63P)O47Z zS33{`>`kfBSM=>vRUOo3i&V8lN6=U*QmK+qQeV9Pw}UUtI3M5qcZ~`n)WnCHQi)bn zlF@w4_Dog3@cRmDD02$7i*i60=9=Xo{Rkj@6oPv=qaF6~C9>KOT*47wfv7Pn7^UHZ z0iSdYC+3TnGz-r};S-jP`A;MyU!1IZ3Y)ep%><#mjp)BGRV0g#HNV;P zZ&QEYuRYm$awXEM+EMDantrX-Xtlyn9`1KKtzNr+Q13K);a;!ZsY}^u?KS8F!^nzR2Wp_w-zT%4M28hdQ(XieZ~H$#p2{bLX((*M9s3-)?T~?(A%C zcspJ<8Qo|#xXQe(?zVRvsh;QwuNx(KAKwi}d8Xn4zj+)*9>1A-TBcH8%RW8d-Q3vR z(AZdM86?+Y- zlngxDNkM8~Ufb=$NTeyLdXvY&X)*|m8G>muc=B^5t&u8J~FcJMb%6pLty~{ifGnK?%5QJ{c7VW!D>d=ey z_cXgw>9e2l*!!uh)!kU*DQN?l9f#4@c1eboS+3)fD0?!Pe%-&lyMuT{E#g?k zVU+hP5R0vpUx#vS2%gN`b9resx_D)_vriIT^IJvg#z;Im9wp(~A7^JmBTR!gcp991 z9_hd?M!wS;dw?|W(Hnd;e%|(L5^u909DSakmk5@wh@$0^$oeFSoG~To4Slsx6}CLN zN$8Aqv-V+kxLmFsu_s#W36W)5_42HA6l|Ji5OAtuXrcUlgavGa^edi_1RPoDL3tZ! zJbU(IJy@(T+YSm}izqi<*qb>rdjTmKifoA>XcWoI?5lMGtY~rctM)+)xil4a??Mp? z9Z(5ma9r#NN_3>j+R=re=-nV=YezjKcm*P>33{l-g>ylSSv$Q$QpNX#y~|S@_OKUt zL%EtFJ{A~}k!zI{HR}^-t6~v-FbRf-NRr9IO|kf8cLRM{$-579)Q&auO?>6KMv5My~|mo;JCF7ATb&m=7~X_|1{4^@$!!WciUr`6gF| zRZrhE`Q4Y7B9F2FOyQ##$iNh?6xF`QWCH)<2%tvh6ido9j{aMegdZ;eF}%Q(Y03>q z8B-FHY&U3{4aQ#u!qFAOI2_TAQW=kzA=)Vdj8y1`V#ltjh~XHyjv2z`70I=>B*I(` zaYDC(G`v_&zUc^UY(L4bidN{NOG*`=!2l15Dm=g9i;0eKz0CGvi)lPo~1L^~@=+RjPU_QrQi86+mWtGWuj1 zgUe4gB`L7x1jTd%==*$3m(UJqu$_HAixMThEk4oq*p4I394O6)L!ntq_XThkQ44O* zeLtGJ@+yPLmy?qKwvhS8p=o2!oEwrdK^%F_FlNGl!(Iz+G1hOz2m*}*rPhhAL_^z& z!H^5%5Hv(#z=3JX32j?L6LE{^GTE8RYpHF_0GU`ZGQKfw$bA}Kh8fPzy8g-e`Lj;F zUf(ZXnXtYM*>Uj^)R&Tq+__L^%*2OEfiZ-NuV{POKQZ7#QEp0wiIt(mAfvy&rI^*w zkxN4ZPGCG*Xt>wB`9%8eFHB!+&lS*a25>Bxt(k{zjA0^T0uG5-Bi*@aktlgIr!!T?HbW}?AhZ(w z0xhSY&?1ltcZYCes~}Eih|qrtag<0#)k+Y~TDDS5a^6~!-&1brzz-``q*DHFZ5Jry zJU5f#6?m|XJX}uLFzp==FgafNTW1F1^NcoBroQFvkL#n9mj|MR62Su!n0fQVm7cdMu+}?UTll1QHXfX%} z{%{9io8=;iS40kT5A}^B#{;q3W}_Hkd}p^sXI}}~d9>_y<$`6ekmnFv0JzKRudZOx z^s2(H1OXilGxg50=Tz7XwTfg`r=GM)Hhghj@7P+*%Zt~@X z8KdT@?7!DS(Zx{})W*$1#>3Z@F92LpInLSw$S&_gi9*Z{EefPIQ1{cTt1)RI*i5AfTF;N6QqAJ9Mqm-vZM zRYrPTgOK{1K?o=G+#<6apH~LKe}vr%SJ?Uzzo4rOyG=6U{<6Y)U`>WQu#d8WOQ88P z5<8NZ1SPt-M*{~VnmHBA{40(DQ~@o|NDMt z&J0D$)Xky-cWb@aBIk0h-?_}_v)ej!Yoo#FZS0SSGD>50^;Ran3P$wryC9U4uQj*X zbng;(->rSO``th!gW6Hzwwi9O-D$U*d;5o-dPg1}^y>BAL1(YNC))?2A$|Xl#__C? zNO{(tTl*OIWSG1;3zGDs@CQL8->Y~$O1{Ws6i11C4Z3J1D8znAJXXG>?~O*Y;nx24 zPrQEl;?3^v%NNeBa}tkkRd78>o$Zqy=Qs?yqAQ$}Fdp~tZa5mJL3FK09*3c$M<$Mv ziBvbTN6+89eDU&ylE04wCA~QECEkjV=-uuGDiTAv?RoD$oSk~!j`P}i^(If|tDPg7 zZi%@Z&}`DP6x5dzjS)?#?a@7 zB1wq1+i~P!F^?ta&6J=c|43!jE1P4fckYOA2cMA&ZbT}bt+?M$WD14~Pm|!ka{AdY zuQv0NWk6GRS0dGi%2PG=VRyW<774HO<47nmbc9mk*4ZM-+9CAbepteZ^Yi89`9%EP zxObb4E-o~Xq9?Q6>@xJXe5vAi7z_;^jk{ssJNTb%@%LB1Jse4znvA1wWupqZn+!LP zueB#;^X@Yvnd0_Zrk}OBZ13clQ!*W^s7Se?bKXi9Aa%|GK9AdI?>+aqC zJs}xCj{I=kt6*7d6}WW}*T%v{RR1FThN7zvyq$RxtD4)Iz+_$_&xHa= zd7tpqJN;v%JTn=wfaVwml5v+tXx8-ewp)`Jtrr68WedH7!<>jPT)YxVpH^x>8B;5L zqE|CX(UK=M36*NvjC`~@EV|c@v?f|w6CzDj&>g2aRj^RBDEe8980R zsiHY%Z~fGmJ_>H$q+~pL!DQ;)6 zs{v^l=^6w~Z$}y=+w=7WSoGr|)f+{;q`ZFOYDn8@h=J%K}Y12q>`$ zZH5e$SG2B?B~?Y$Bu|Lqu&JvRDlFoq4LXX+)}&^>Iw9&N-;oX;QsM-wf&#e+AT?0B zRkE+G(zNNYfd#`+D2?k>BuCCdMHls#@Znk%VrA z^2Ak=))MxZsikw?`L>{_y@!fY?!iGO8Ui~Q^CvuLuqhhn=Vz>9xKbMUnE;v5n;;3g zK^UaBq*$ol)ZX-sD~0~=#y>l7o)W{DS@OHCW!ZYVMWCECGGEVNqQHj1E}{l}Y1?D| zlJRgTlqTA~fWN?yk^AeO5ene^EXM18v5TYy#&0arHuhKySSb~hL$7JrI-!85Z-g#E z)-Tlv9$BAKsaRD)p{dj$$eCt|EG6g(>cpMWwlx$PchDXCYa(x?GA4xVK@XVLn) zj>BMx;r#r>J^k|Khfcj--=7RANZ(j+7MKLptwf?;(Da0KW<-&KWf4RJqCoae8Ij0{ z@D?UPrTU-Q>7bO=oQ@f`!nZD$N#e;loT*};9j@5${zeW*(x2mS@a8QxD3h4YbvN?x zLL2MP?0DdGHOHIceA)v`g!ANlkunMf?dRY(Nx-hYkuQ?;=lEg+7``=SWQ)C0ms6ZG z4JA%=dh2HlS?JH57-&yNHZU`R_^3CZ2o>eWKBW*0D7O4CS*^({mZ$@G`Vy%va!x)U z(McrNf#{OzqsH|`V%w$qm}MdAq4TQuEl4Am%;Gvbe}Fsccm#k2%6&SE#5eu*X8Y z=#2Cl{F(#BXOsVSCZCu3#*H36SZ?%uko*@kdkUyi$kc(Ctd=Y0BIowbLsX;qmm8v` z%pvRXZITW^dWCkPqnodM3qtSD_}yEtz0$0>+Ou&N`GXh|2(8s%!D^-z0%m7sGMD1| z>YVn=2gMErMLNL&sH4{th;Ar9>C<9;ppwO?LMTUkKcx8nAeb6!HYJ;8qxBfsEP+@XkPe{&5(K_(vbG`W=v#TGZ>g9L*{mO*_{-kXl+CWl7pML@MUQ*E^~7p$Zspz*q5KhXeNO#s-8-1; zGBDCW(12}!%wO|Vvj{Q9UeIAr6*ZO;lJ)&vaP5Bw@CxFA;!+@+_H zO|UcbKBWB->BB42xqF+LwZMKKTB_k}QI(E9YQ4!+5pKoT@ zj*~bfRZN9wc>#Qxot?`!-^}`h*FN$Znxjb}U0u0(RxI8MB_>oxX|4i4PlC~)0guhSlgUT42OI1+BZ(-c9c6VP+!t+7bW zTTQR=F7C@P+3jj6QrV58ff`=OubE8JSI~&wfo@nSi8CEY`hR~9QhxgrcQ-e7cXl>6 zoE@hdk8iXZUZu`fciTA$RZsMU(+%USk9(tWma1sTPo9LK!%rrTmWkBYvQO7{H#asn zG!|A``f(IU+!Y}yy46=Y5+k|g`)}T!o%;T^^U8U#TT=4H_A$Mk>q6pqslP;)Ud7r8 zYf(xaa-geJj_|VZn%?c* z9mKcHutVWk_&2siitQ%f?lJyaCmbT|25zqfUKNlL| z?Z3xW|Mc5f`}So(1-)Z8kYqi2g15%k_q>M0(<}&EuM+eIk<}GpxLguhpCpkpW+c6* zTMJcT%afagPFXi=A9hEM0gYq!M4LS!(p0NnmX@}HMUxZ)&Qt^~ly`uzfNhYolPe?v zTNZj)UIrS^@BKs%7c0!RgTmJ$%#0WI=eEpVK+XgrT_Ok?g>sNSS|`AY7JnbL58BA3 znXvm9h)`&sswX^=+~WvJbfn4J(S@Ms-5_Hd$2}x?4I=9adZ@((cR`Fzr#5AatVmx z7fhL^+<=sVl8|J(fNK^gZuugoD~56896d~ARJ?|0rwA}op&N=FyQU_FW8~&E5-zVv zuC*l*?Rtn48Xbh@k-F@XUX%Yp0*{C;A)eqm&=G_-Ilx7EuUOF% ze~uXwS!y&6rOla|3}~pQ=z-IV0NPMp$$9F4FfzaNV4-2QHrDZ2>QvR`MVJ&(jE;hx zgf$jA>D;V*Gv%lKc|U3I@USoqp&X+4Jub9N4BD(W*NlgeL#aYjY;0<)|Fud~PlYPI zA;$vFY&%E)A@UFygReF*_p0NfqJ8wde6x9S=b%%vLy_JEGE8m2!WHR(9dXo|oh8|5 zBs8m=-vI1FQBZxJAfPcUzhxkLFg;UXQ<*zCxVH9<0U#+AM48tNY32{`^tIrQWBtyI z5Yc#2Y8~rZG_;Kw47o5M!AewL&|Kz}mTjP?xP|XbrY7=QY8yP@3#=F!-IZg2)sP z6D}i(kw|}iV=>R6U6*DKoXohi(01>5@u^fkSeVMzq$_~m%K40RGb0nuA5-jt>Bb9Y)O{Sc%p;&tKcq` zHL8@zTiX*v%KbN&>oquW54%~3%VCCG%tASLYbkNATR?LyB`%)~fjf#(K0(C19Q`-X zO4qKT90X6M?zK9TD9h^}yJWuZ!LsvpPkAl)Z!RuvuXInMFmEV^+CO>KvcNJ694O>c zTCJw?NeB8?bmLhf`=7K>bP81m^~q-_#SHg*P80GB%Nyc05^kmDwHhyG=eQ3%;KdNB zz=*urYV8%5YJm-&34;Ba&#u;XnH_c_2QW%qI8*#2hLl!U?NlUw@hdLpwxohCrNg05&=N{6z p$1fNlF0|5Ntz0oO2pVNSY}n3~~GA(DAJ0HE56}cO}s<4FA2) z`|e7XY|B<+xg{xl09%*c_xik--Q|PR+IJeGtI?a#O@=CnLw)f^MXvTn^zp6dtMS){ z(`-6-k@L!Fe7E`Cm5i<$2a(fiI*q1kwUoQJ)7#r|-Cpn2cKc;Z?aJNV-roMMk}f@G z-Wti6-)dsoU&6lfqpcG!iaX)RbE9(=jlv*OFF+8zf@d&M6eikL^nH78f6rJ03ozOQ=t=3i`7i&K|iVss(OlQv=UwGMTM!xF3ojObdSoyvPIMqn!$6hMMssy&Dv(E9 zn%{X|D{0Mz@y9xG;d<#z>0j}BB()q0Bd%v8^z0VRXn)40Ab#p}&NAhQUf93QUMP-r zrDR`a6Q(24-_p^FufToi=~2@2Jy#5pz>U2y5Z!LZ&pH$Qy?AC`+z>E6dWC+#7jVaM za*vDk^hrU^Wu6n_S$yS1&;Q2;CH|W}^8d9@&*4nZ`SRND)6ZLj#S0`gG5tWMJq+qa zkphlP4o;7-Ev@}7HpCC}Zad=i*OL=F%e|rA{Lb6MJIq4f^ZEW|jhoe8S{#$!e~|Km||@qI80OBVR)KHb_OJ5SEUL%H(t*=S|O55v7Cpo9E2s2 z>Zj0@L#rr#zr+Wj#?us==E)>;fw4Lv8IHLo2vZP@M$%OPG8w6;aqz)u?aWCXjzZs8 z3w<4+^qwJ#$ZqIWCZUFOP z@i1Hj3lk*`S>xY4UF1|#@T#~iW0wJ`igYak#bmY1q)f>(ry z-{6D-e~}2FHZWW)2-RTyM?ZA0F90+Af(g~z=sIAOEG?mt?F3CTL3XPv)0D+z9ce4V zk5rJo274z9Fr$Jt1UyzvO<9f^H!Y2z@|woAvZTg9J;@XLIWVz{D&;CM(FOs8I==?UpWliegKe zs}2Yz(@QHe4a3?v_Hx-;!RTdD|zVZ)WVlAJ#A10Jj--F>Xqv z7UDRT)zq_7#2E`AbL|Wj3e;PuA|k*JTbyAlN`^zJnb!0MsDk+-)#oND8Xft!3_K5t zZBv$$xsw8GldQ~KiY2AYOPVw14^T7OcXfcJPm%pNRwRZAY< z6lQU^z|;ssg*E&B@`+uW(`Vp(ZY7k#a9#}hg(ojWo>!&Cn_a7@Q07^%~xCo+avrM4|o zxHGP>kWL$A3I(?pp-S^)e_V+hwzD$Z*0sfS1T$NiXIfoRaqAsIz{9RL!6zWfu6gdnF#N-k@xu!L%Z)&r5yPc28?+rFL(&$@~i~pTg<{ zKJ8FmQ>7nW*g~|vLDDON8il_?Y^_1ZZBSci^m=D|YT8a7CR0!ePX}+YmUer1sx9mXOGo@ZB1l1n{ z?mcIlmQZRHP7%T;#nWtmfp{t+)d~beXn+LM>^fW89Bt!t746tX;T(EMH`H-F|MzC} zHls3zndP8u7*9ovPvtlZ;0t1|0o-?h$L~ISqh@{ZzB5L%T2_e|-s^KHyO#_QMi^VV z00VqCnqTSy0;p6Uhmd-rl7!wW{@PKqIwR zfsNUQ{>M~uR=WTzsny{zljSUgoR)VDD7lYZX~kzt>I2wUtLQJ}aG|!G?;$0ibpmXq zMZKIr%hFUjszXc8_CRFWX(F~16Zb+q(o^Y)T9Ji8$N zj7_+c{Vqzws&ph7B@j`-PHt%@+o@+4o2u-Lqz-K-cM`bjvF9(vDXiaRd0)Dra=YeT zPrQj1k~9ahm)3HYeJw1N5BUUmzEoyXrc$evuriOQeVDm3=5&mFh29PFGD}&~Au>_5 z&>ooARahXSJV~WOqD7bw@47hL)cyG8=M@Tw+zDp{>k`sK06{u;tOqy}S{n$O(1V@$ zH3F-}G3?^LR(0*Zom!)^>o!Fv#Xrl)t?;Fr)zklNVfRYppf|UhJ~I;-?zD+omR7Yl zeHA%h-WfIi=Ln(oSK$&F8qGcFg0pm9U($a}Ii^kC4IG8NGpa*$jnob8q~=2e0A=1r zKuBY(#pTn+co><*+1ZhEe186X=Ouo|kEAh<6k~Otot~28qrZ1|f{zc1`+Is9)`uS) S*QM9kKR^T|W2c(N6;~~ZClaph=^V6^Jba&_Q;9z&hIdCqLbk5mi zDxJNHedj!40SSn65hd9Op3TxsvUs9Ko=1_RMhb^hLHPq6;r+wiokH5(lsW+s6hhe-^2vJhfx zh1>s~vy^Z$vvyb|`D3)e{Fd361rZCKaTbS?C9yLc<|_BB$bIyJmGxRqnfT!sEAr?1 z?4I;c{cqW6Z>e19tlZ!;PG!bpJ0YuKkz;E{PpG`sVc4tKY6MnIHc@D_^LC}3+wi+6 zrtn<1!;G-}TwRaoHj$E$LUKW=h|cMi@Aa2J$3+rFkjRh(9p6RNfP#m*W|Gd}W#S+C zk55k^-qp9`Fv>fgi)shB0n504hN*Y4}XoRZgm1rD)9u4lh{oFTlo}#HA;D)QSYedH+ zi@=3=&(N$Sl7+bk^-Ld_U;&GmoMU8_or-zz%J}`0pfO$|1T^QE@8>hL{Es-2OI1{d zS0;2h$W+V*)cHsz>MfgWdOjkX%?MXU+6O(Ag#aX~gF)~C>Gq-SK*rUcMma-2iC7F; znC}kYC4Ebh$>y1?su5fZG`}%yf-D9F0JRI*-k30VWODx(;pKekW4gEyE`UWagpnYk zA51WegLG_7-fRf(g`I#x&2~bL-ruUur);a@1|SC=1Di6|gD{PSVa6mf`KH<@486{B z%6Y;!kE1s034YrU4AauqvUo~4@Z{(>4W(ENN~bB~8HEOPwE1*Al@S21r6x^55!`Bw z*n6eC94vRx2te1cBEbX6HNr3w{59$;1J5#wuT`H;3`6zYKQ1~R%eKXY zn*6?~#@bJE#e9JJdhxxndku$wc>)J7LZTL13*R}@8c?hQ6u4*^Ko#y=h)*>KgUj`j z@cHoMLgv+Xn%YAmueSvxYOhv`9v;DT4MPBDygbNGQIDT2|Bvtgtd3LQft3gofy?) z-GyK`F5VZHbg>%`=mEPi>um0O5XN=R=$~8baBPyNaefBS&2P1G2B0=uVIKPHfsL23 zMY&_WEo;rs)#nQ3)?ArVE!vV{ja3VZ@PmlbHxKCVEiL%LygV~DtlZpH9%TD6SFP|- z*`!7%!4BEGtGC1JKdy(jmw#^2LD*`EENII~Uv14$f;SdR%E$1D!RGt;W_Lj+C!8C% z2$`nGg@ebBw5>BG+scpau_^=?bEjIQxcyrDR%+e-4Scnhmu4QNGt@q)TkFHBodq9N gJr{fNC|Xa`B5%w6vi)K$uN3aXM`@t-TdAOb055oj*#H0l literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-4f/phpdoc-cache-file_d8f2b64012850a915be7e15614534768.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-4f/phpdoc-cache-file_d8f2b64012850a915be7e15614534768.dat new file mode 100644 index 0000000000000000000000000000000000000000..48617a4bea353a1175641b4aa3fadb12b82d44bb GIT binary patch literal 17011 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-51/phpdoc-cache-file_d9eb40c32fd684d682ba1c38f2f2057e.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-51/phpdoc-cache-file_d9eb40c32fd684d682ba1c38f2f2057e.dat new file mode 100644 index 0000000000000000000000000000000000000000..a25828ab71351c468b85f6d06a982bee6dbda565 GIT binary patch literal 17080 zcmeHOYj4}g72VGP@*fBxz}iMP(aSHoX*YG8cF}BNB<_APK#Zu7&4v=SL(*8o@PF^Q zcV_sINSU!H$LZQ%67ex}pJ&d!GyLcd4&BcDa{e~*)2W;#kve}XV_yYx`tQ3Sl=;t& z+wZ$KvAgefe%SfpQpA^?qu3qv-Ok}*e{Xmw}AGeR_Z7a*! zCB4i#IB6`$P7*m6b$i1ipMpGO&CG8|iOIZU=vJ62JB~UoY91p3R=qBD~10UAkKm>P7y`%y?UEf(w}-Ryet~w)Go1zKgo%a==>Kwow*XJ zjyuRPcm@O|_4)wU(|?_w3I#;*KH#c%^2c0x=4Ajky<-%J(-A$vs`2%q+mU#h2ZHKV z1HD5&9g8r$dnB?xjnsoP7DoC&w`xUU%afagN?0~yA9ja@)?? zBuSZjQ7k^}Y_Z$SyBpHAPFV({CZ;v$mt4;oAcw1+1xWOxDHR4~tn8Q43>=#t@lZsV zxY1-k0R?6155HM{ygpaw5qSX!4a)a$F<}cE^ldEttyu$5dG5zd-{J zi7+9e;2}-+$pw8Z@D+2Ka*Cry$5t?%htgzCOD5FhQ;bjx2_IQSD~n~S6GBOQX=A~m zRYUDHmnsQb@FPPc5XP1q>?X`o>!wpZ_jSord&{0u?!iH396~xo@&{b#={Pi*uditz zBaf26&rGOQy$a%B6of%?O|Au`nL3$%L2QJ^kCd!$A~;)>1Qo0#A}gM?G?*6ALZPh@ z%q~d=IX=;-M3IlXm=opscbs)Y7__+k~?=cyzgDD%Yo6D|e(HDA&mP zD{>8RNDuE0q1W_ zVo|`%d547QqAvH)2<5H6mP`T)Yd2c%#5(j>dFqlu3WQ$!s&k~!ob4efH0w5uetq_7 zxE&d#ZU^)X)x)`Ni4}$9Ede4}I;OIUf;-E!o5c3jteabb5*tRegQ?3l(_#$b--HUp zIIlbw$_k906G2N^N(SCEa#A%}+-_sNnidR1OIt)yvk%iM!?$}oD~U307N|9P31E%2 z5%Vo$+G_I+qOxqGO^2mP41gz>;dhp<|1Xi45znU}tb)eOJWuhrbe5;-F84|#T%ul2 zaaa|HOJ;hC$4$f|vHAtZwEI;pp#pW^+FoW_#B46&IRISeA`(j7G@aO2b!CV-21yb)R*SK|ziRMW54J z+rDN@TXD7|DRy$cNuRv8nux8z2S$L$C#nP5}mH2CKHmv~% zEf;~j@U@K0e7dNem2@*mpRdmki;UfaWu#|^RwBJd^qU*!ijIysx3}~%m>d3ZD3s!W zI&g((rGPePYgVEP+>N)+%&zI5x6@mLCy0sW8${ZWRZvo}GCZ{|?`JUr2osu~_E`d7h7ZqF(-sWAGZLzR~Io1du3 z0~T$Ss8YR!&3>UOXC*a3>jAJ*4(hwng-ar^8gxJCyTdaj0y?z4W3#__|SUm99qz7(Uce{i~I;QM0XN?9bQaGvJi2QJj-c5G?2eg{whyVZp literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-52/phpdoc-cache-file_907e5981bb6d352820e9c887f71ad4b2.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-52/phpdoc-cache-file_907e5981bb6d352820e9c887f71ad4b2.dat new file mode 100644 index 0000000000000000000000000000000000000000..a696fbbff45f2e9468630ef9c675aa2ba4e4eba7 GIT binary patch literal 65649 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-5f/phpdoc-cache-file_0e2b1834343fe7493719b38219495707.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-5f/phpdoc-cache-file_0e2b1834343fe7493719b38219495707.dat new file mode 100644 index 0000000000000000000000000000000000000000..ec5d98c9d9fc2add0202b7ff746c950e88bd494b GIT binary patch literal 8727 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 VDU8Nm@ zlh`CxoQkF81@Ps}nREHhch2~|+j;3W##iH4k)Muam_+*Wm5hC@#`NcF70AiI4Y%EP zZ)5ksZ9Lg|awX!c#!>8c+HRwH(3PE@*xQ$#PH(@{7p?uC=(f6@UcbHXHwW~bd21{Z z^H$Ssyp8%Yh zinJ3%Lx)yUklL5mb~!%~aZIY-q@i~f4LxHCuf!6L{F=zHU-qALD+hkpx20}6A=W9C6V<>5;@_MJF>iQ9I+=l>$Jpc%!=i}$i#)~R_gyV^m-FtL_FA=B2BT$6 zYtb*c88bk3?{^j;(T_$%Kc}&>J(Xr4bM%M@s%lZrP|5@pi3ukBmJzYlNg+$*0uWe~ zZ*x^xcK2wgB3|M?OS!!MXJ zO}POnIVB;<#fkw>_^Cb`y@ zM6T;0PH1irnwLuvb=pN28cb8HN%M4hLV8X92MK&hbP4eU*MW{8w8;T&l=qSqE!pRo zF_EQ4<3QS+smXwbdWs&Hyzrq7)s>8=4hSQ&OKS@av$e5~#!@G$E-%8Qh+^~+>?EvF z>7;YB^39Z=_UHYi-NVD&G=y@9;&-^vGBIeg-dr;tMh+#)&kblcdaYvBQ-Mlu$gzMk z+rrU*h&%+w;EPSnZh2gkw2ZEsZ8l5p40H;1$kRJVhN%r$xFS8UBaS+=vp5}%gl2WK z8-QIX3aZaj1GIz1w+uuNrsoK3Dsv|T*Veu<03;=XDD#RT&HMpIz82hZtlpUsA{tLh zts`BFhPE+-Au9tCtVCfvf?3QdE!#j(aSPv>OpWEW)HZm)7g#YezA>%OZ5tkj8P3m7 z+|!GT=X=d&^I-DGl=W@wB6v(K64a)WiY(Cf%}j-;I2c=~@QO5${ZoTQ6hx+Ym~a_M zj6wRV8;f}k?Yb~&;AF<7O545V#ivsFpfZ)MNtXb>rSlo-W(FmkKc?!TALKdP>L%d` zho^JLp#IzkZRj$24-M;VM%4v%*0{BTQ|7P*Sw7>5J;YxLcPXt= zg+$)ko*+`@zqwqm!HHe$W+^U*xp6)L<=m~M#I;*FG}lt%vdIv*qZnlqM9j$1fAfTN zOC@M!8@Yi|-|S>0oo%-20wcE0W@m;5&um$p~BCsCL;+k^6xx1s6 zK>_iD0|R0Jgd};aQY7R+4~``3FiN^5H6R+g)&`L33$ zseICbz7^eg8q5AiEfk$X)j@r-8A?9G{g%^&Y>JmP#2rjDmTF$h@nUw4yXFBehDbR^ zWX)Eqn_sG>|K*t=*suB2YGs$%VJC8cps4DLxQ}9ZdCcE-73XNI%JcxLpcvw|bb!#p zLNgzTk@HL|S<{r+_VAe4LcQGSD@J#2DhlZPOtrv9MU^UzgqnKx{x1)oTX-K{{j){` z5q#pSrMistxTYt~lIaO2bZOC9jMU!(g^L@b0*EV|Ug!b7%c~80q3`ODGx0W?$USe@aj|*347G_;)5P?Vi?kLRfRxz|+$r0BN^8$2Eq}#IKBS^AgY-1 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-7d/phpdoc-cache-file_d8a9fc52043a78382d8e14f41cb4ec8c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-7d/phpdoc-cache-file_d8a9fc52043a78382d8e14f41cb4ec8c.dat new file mode 100644 index 0000000000000000000000000000000000000000..5aacab30e45bbbecf7990956ddc91754aeb753af GIT binary patch literal 47781 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-85/phpdoc-cache-file_308f8f3c212c2a3ab519e7c91d57777c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-85/phpdoc-cache-file_308f8f3c212c2a3ab519e7c91d57777c.dat new file mode 100644 index 0000000000000000000000000000000000000000..65076baf3ed4948287fe012d24ce1437c0947a8d GIT binary patch literal 9321 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 S#@W7fH?mQMW8HIoVe>DY6dTb1 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_c4b83b19700ccd0f3e482c222d230634.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_c4b83b19700ccd0f3e482c222d230634.dat new file mode 100644 index 0000000000000000000000000000000000000000..908a5f8e3eab14798ed9ce4288b409b733e2a760 GIT binary patch literal 36884 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 DonaEP literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_e29975f434337874926cc56f83f46a53.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-8a/phpdoc-cache-file_e29975f434337874926cc56f83f46a53.dat new file mode 100644 index 0000000000000000000000000000000000000000..7a69d6b90f3edcae7fcb8fff376248b5f692b524 GIT binary patch literal 14952 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-8e/phpdoc-cache-file_e211465a4afaa5dfd432e771e219506d.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-8e/phpdoc-cache-file_e211465a4afaa5dfd432e771e219506d.dat new file mode 100644 index 0000000000000000000000000000000000000000..2fa43837636a90731abe62195e9c9a5a486f8676 GIT binary patch literal 14895 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 PZPXrlHIBCMoX`IOkf(Pd literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-90/phpdoc-cache-file_5f722231448e1dfaeeaf275837449ebb.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-90/phpdoc-cache-file_5f722231448e1dfaeeaf275837449ebb.dat new file mode 100644 index 0000000000000000000000000000000000000000..cd042a628eef06dd3cd58caa59d944ccb4929e25 GIT binary patch literal 21844 zcmeHPTW{M&7VdL^{0Bk^P}|rxx;b{}?e4mcvklfwjHKw30b)drY$6n?@?z9$_`ml% zXNKfZA|-A_Ir2t+NknpH&i#Dn%#a`K!E3uSyP3TS-E=C0B#f@!$k>g%8U6RI=gZ<} z$L{y-``A9RJKr6AcO&AP&Pi+!`gW%)MuXmXI6fL2kKE(26i0(eU-sQ$x7#}wqX|8y zM$JURqx!Gx&adHE`ti#PFHTO+F5-{!k5tCVkD!L02VGbt4%5h$^t;#VVWq$S6Sto~ zdwFp1{F!xNorSZz$h*Etti7{+>(uu~VkE3HKTOBCH=U)47hLm`r@n9Tld%=aSVp&U zOxIsNfA;)Ygq6KWI$_{S+!a1ixi|KrKuqPH9C0~90lzk>$!orOW1M5zlqQR^}H zJQ_l!e`o2)_grg|25#bof#o=EHfHaILBLNz>id7w#OohKGyiv=*reI$??rOs#XtN* zv1$D@$FT7P4X67C>&9JUZF+FnX2c5yep zL9a3G5>0~zjxZ|ZkkiLA;Y#?Zh-KV4`CtzYmqf|4(Dx;qc*pKhfIQ~VCN78Yk8+|Zx_YOU(^tZ%V-JcL9v}h}dwm4w%U>=p zMTB_eyvJ4N{LfkB=)nm5G)6NJrz3iTS>x+NyCd;5PXyMhCVGn)a3*|z^-LsvnyCk6 z%+2(kZq<^)k|#BZC}G;Pd{`Y>Q16_uCI+ktktC5fN)v+>EE*@6;KB<)g=Zfj@jx~R z#Kjew0W6E?+FS+{FYr7Y$`=}8jN3JF=s>X+))(eFHyK*pGgp-sJ9NFUIt`^(Pw7Vf* z>zL(W)I_v8`XzTW4v@p;%0ftV!zmROsAU(axocg#;LwO9$vJL)q&i zex8vNfUl!`pR+`C`;EF;VS;ghYGRTL)+Q|acte_3aj#bkV!cp^P zfFCMvXK>#R%1!a6t{_lnkRzC_ZMFHf9!zwOJI-WR!R`8K9Vr%}3{?o#=k!aJ29rOuQx4%V6?QS#3$X2s(afo{U}MN2ck4VNl!(`1if8~g zY;lUKIGs*K#H407;2N-AKz!~4p>#J#sn9$rcZOI@>P{9^d#@Dpm?;qimDe<9#tjhg zt>8*y{fdktq0*v^qA+TOLS2wSkhR7LG~$f~b=S^m*$!%nd+1JiX)JGLqzwl+fe9nw zE77`KuHj*b;qvm#KL7afhr@2SdsIA9lD@XvJO>FXPl-gHPvhac%qCk$% zRU9HC!d;jI)&5V})u5CnuBO<`M4mZX&i~fAnJ!UxZdPtxKa!h~^q069e3)Bl&76#a zfYGsf%Fc#>)x_CK+|K*lf;hI$_XsVh(7a1=1-QC;B;O5 z$yolGi%{1)5r?}#znMy z#bQ#hnLBq9g&%EOs#;5T1ikoo5qV-<6by6K0A??cT!uUr<+N>KP~*wA5Qvs_tI#~t z-%^Z=NSJQsR|Ji;py2fIfog0X4KrwZ` zWbFzfj=DKB0He? zUb1Dq556jj@hHN3Z)T!ttuz_*sEhXqts36P-AsqZ6wJ1T!Iq=oSL)4F)g%p5 zSnk3#DJ;Lwg@NjHet9{fJ9u=^Z2cYd!2qrSHrr~fJ<$R~qxVNoLRDa#RZ^LR7Pr+E zfJKTiOzbPw6_xpvtgDihX8APdiX5v+K7}PC2h-~X-*`5y!Q?1?8e(#iVO2OYCA@8k zXwdRGg&iKR-8^i+FHspks*gUfUI=e5!{e%S%*?o9@Ib)X1rPOtQPCx74TulBPalXE zV%fIn_x}sS8)hx-yfs-XckOM{+puND?I1XnS+JRACtIr^IIE-*w<-u;1OWxW0g7_- z+9LQ}&&F!_t!j$@C4Evs3h;edyoTr`Qlb{drm#I}#D4F^41e2on7c*VK3^T%zk1KaE zdst}h%VwlJb(Er|H)%Op@}~+wUas^ttvVOg0LKlMiE4$6Op`0JzKG8~w3rOE#PF$r&$5Mg8O literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-99/phpdoc-cache-file_20584308410b4d1dabc28f547db8f494.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-99/phpdoc-cache-file_20584308410b4d1dabc28f547db8f494.dat new file mode 100644 index 0000000000000000000000000000000000000000..3ad4c4cd9e469c0562ca685fc712beb164d50e69 GIT binary patch literal 9321 zcmeHNTTk0a6z($;|G}~<70_`7wPvD2~579sxoe&@`L z6NeB1 z9N()ZI!71poSsUDPMr1~(jp4vOVWdNd@YK6kgCa-PAG4To`J)e#vDL&YDmTxr1bU^iORCecxJskpKb9RS_V5S_)gDg}fdKC5DbrO58fn$uV{a zy|h^PO8cqND<0%Q7espFO*oFhUn9bQPGW~!08o9kVk3a_a2BCi4Eb|AP47nibU zG`fDLmoraN<$CQgUL>e?GOq<7xOjVUArvy-Kf_c1sA<`@IAqDv##G=9G0 zxe}vU5KNyX=nVqc5pn#uB=SBOV$=qT(x zFqxy!0s4vj5kb%>mc9Ik4FbGqVEc!TK^wI+m3AKj5ewy0-$f*{1%aSKN13dgT}X=V zEh^SM?4rPH5Lr*sLoM#pb8^i1=>v)?S&;U&PEFcte^r_{5@e1S8M>CKQ9VC}x=|wH zkGjI}5GG6!1a&zNKqCls!?zxevDRN%W0)aj0;og%#q!l2 zL8X24Wa*(z8>w_8RUXw4Nz1Nvehek{Y2oTw$6bmD@5B~@GXRg~X25%1ypjU@4^u#S z2M2JvVbe>*LT3=lG>?KZKH85rQ5JQhILdD+Z@?e*hKZ9%7b0jXA0n*o63bV4-^IRw z4s(40>dWg^ysLPa7R$5C$;d!Hu(ddAAe z=Ot{Hh;J6w%9u7p(Z>T$0{tQ@hC`t^N9+r&YG}@tu(zh+ZA5h8CY`qZELZ!cS3Qej zC+Ih}tx{<9lU&e#sU95D6(N;MRc$iO?mtQfQeo>Jo@neP2cuoW26NExf9C6)`W~4- z>GdbieH8e@+}Gz!|H14hx;TYXyJ$5tNKDm#meN$t;WjqOgBlVnv_9ywHN<)s?QdCX z=P(P_hov0fnc!%VQ|taX^tE95s6 zRY;q5QM*;<%vZQ*dE|NmClNXT4V26a1rkw5gC~*oYl;lhLT9#k-V5+%MeF`{BONS`&Li|Xq5F}8D+C( zSmjeT*rspzR*rbN_t+t9n|FyzxO&7_ij%-Pc{5}1bV9Lt2uVmhacN2SlH~9D3y9B+ zfL~>{tXLeStJ;9UMXq|pN0TbebrN=hr{}->INSF>9RKlz4r-#La79*^llXY!9|pt- z$C0Xs8`0VTQ70!3p=tzKay%FbHoBi=ecQq*;%jhIb3ogoTd306)YtyU#KSXOJ}-EH zzQly5($tu>>=xcA*wh+6&QiymtUi)DS&+(WHHg&wE6Sooq=g5)xK4^fLH~<$LMIR| zZiDY&AVP=q%j6B6AMhy&fSJ!I2yJvc0={s^U@(n~i;j14dHM5h1E28_+vg}SCidk8 hf*9X^-`zQUgXY}d(_FN8d~jn;(>MprG5-R}^EWxkh`|5= literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_19962b08746064d77e3a2f26cf9b714e.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_19962b08746064d77e3a2f26cf9b714e.dat new file mode 100644 index 0000000000000000000000000000000000000000..5767e25d2db50349087ac94a07fa53fee42cee63 GIT binary patch literal 11291 zcmeHNX>Z&{63u4;`VWnP0ZYQho=cWQ?Gf!*PK+qFU~BVbwIF)P9t~j*IcbvG2!j55 zUUhYINX?lHC&(W9Vh`Czbseu>Rr90QJM&u8@$_vP6cd%?slI)yvOq^u`tQ3aRG|vZ zz5P9{ekvlZ{4@y^-pZK7JP0G5$cZ}e{de!LE`9${yb>>8SEYP;cuv!uFgIhG&4&=_ zNaXnat;(;`J8^OSUW{})5ix$y?ops#(f&rZZ)A~=Q(b*2LUnKD3u2jNbhd{g@v)fC ziu30bC)CfmO2S2Boz&uy1Qz(4>gXPN7cXQGzYos^Kjov)`=bRrma7D?Q?82uPQvrd zL3r9XQ>o=dNUi0ActQGbL+HKxW4&bJyPKQqnbL-7_)w0nFEmy%RON1N8TxneQuXmL zGYy>xil)#XPK4O-yvlHK;6@5^0v;#Ci+mhq zU;owURQ!dH|Ie4^=gWWDaZih7xl{QCnd0EEva?osp_AIOvsL!@uoOi`heL(DHJi#n z!B=Favex-WuZNgf8sCF7j+N0w%j-~RBPtPcQLZMKEWNh(`1FM3JN!5a;v#HdS!@+~ zZ3x%L!gb+3sgafF_C0TBpQO6w^=9ak06XY-UBJrqch}caBdGijcxr5DvHrOnMvy0$Y%9p z%;C_eb#5%tGnSBfuA^a*SB`>Bvm6UtMG2&cyc4(ubOSh;J)sqFWU23}+d$&^vtQ`D zaSb4CqFsxC`NPzJWPi22 z0Eu2p*^uyzX&PcVysqPhFnL4kT3r&0Z-zXf=t9E1 z-Jl|%GxV{4on*~Qy4wLsHTw-3ct(T?-UP!j?IraS&04UZs|SqBuwzA&X{>C>G^9Uf zpK^$bLk0*bN-d76jtC{)qn&vMA8o4BsnU7Wlo5fYrZ6x@!WK)7bj=$-)a>+T-cH&( zJuNju7zZEzfCnA+KpXS?j4g}^%A=svAD{C+%A#QuNBINU6_&T9BK_h5Vf2#?%RXi- z@Qb<1)bs2~U0gf7ndzVm>=F}d!dsvs8E_ioaD1w)m`tQLqPiCVTzD^tzUgD2&a2L1 za30k=8%9n1#=&am4IdsW<&p^VmfmdG1JrddO}(*wT}D{QR#aN2x)BL&Sq4Qebw*H< zD3sJ4x} zI@ieeRLe5(SWw$O6xq>_S6S-@0DAk6 zDkO!D616osnc2!K%6^nOlHm-JpW&@VxVfFJ&UcNWU3k#qZW}f3j90N}>*1Axn8!AP zuC`OvC?2}**9v4YXRsZ^|GWI}=koBJQtLZ+dc@#jr{_-b|Df9w^>~I%1f`oX!AizF zIGkmEhohADDnlx%>bDca9)z8*mR$8BOex8?8D_gi_+$6DS%h;Yh6yNx$oHUJtTTCW02WM4rBGf^uA4ds7yudAU0zojrVLz8q=Juv4}km zf_S0U*JqsOA^$1zI#f3|s+l@sJ=e|gS?MglLN{1t9Wd=cI~4rj0emyHwIiA&+juFn zQR;^J+?|`r-K)spe>Ziv>SC{)75DhP8KgTkF2eJgmUo@2EkEvT%0j!dxNC%l8jx-{ zI1H*bgZjG(Hd~ah=``-3Z&3NJ#Ptn~LFfAhWx4+ND9rVZczU8#j~W<%xGtq~gr-$J z*|wWk(0{@$Te=mQ3U9QG=&E4L@^o=DZr<{Bg_X-B)M}b%KXX00#Z2pYyKR#`Tpuz2 zYrlp0t;7q&qD-C62|E4qQ6o`puCox;{FTnu_MOEG@t`YFrNig$yfCg2+O%D zf-PfFbbDC&@QA)GB7N_O8~}VvFWE8_N>veqU!|%wI;x7aR7uGHS0BIiaf$AKe*66n z6+}RTZ&8|3(r!@QqR`sDD&HAIxcAc|e0tOv{IPT5%BMj{wTS`u1z%JH4fDl7Z8->2 z5Qo8ZWju$t?nB4ILB8|OjoW)HljJkKi6}cUjP7z*g^mR literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_723d90661ec6aa78643b6d35954dbe79.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-9d/phpdoc-cache-file_723d90661ec6aa78643b6d35954dbe79.dat new file mode 100644 index 0000000000000000000000000000000000000000..2f80877a370b0a4e9ac2821d110b1a6f03c447f0 GIT binary patch literal 19772 zcmeHPZExE)5Z>ni{SSmuU}?~;@k`P~UAK1Wx(<73u?727AfRR17Ai}gLD^DOoHJ+H(4es^$udOG04^g4gWBN3)g-UO+PCkdZ@4>{;gNQCy&I7@s%pL>VL`09tBaQVUBlY@f? zd+dOn#q+Bqm`o+xKYPSphQW{zIXesEY=mpGc_xEsqV9YdhD_a=vP7gJxfCP%{>g*A zvbFQ6V1CHclx3+HF&VQt-5W_JaRvWop=9xxh4F+~)+laVe53x~}>x z?s?1t$^1ByJcv@}v2ha5o}hUd%+M~6CgL#~l&WDr&d?!`M(n=~jj4uws1gbZnexu) zTXp3H&*T&xlSrgh;0rbqmvjxPX=MP*RTf?R5l=2O*cS!Z>?7{PkN&MurOyZK#U)Qz z5J@o+iBf+kCPAbm);FsT=-zn}TyiPcL(=Nm+U*HwNcuOmCS%>!3eiY$4H*nm01k<{ z)BqB&X|CY1%<9p0p;MW_iLADjU2;q8lb4Zc7>w{+WIjD=(rTW-$witrcG+euco2li zd<;s{zWK{u%sB>6VKHTl;v$(T{~=FaHs#XeGH!Z!(QZqRDoE>|zNV>6!#VyB4Rm!) zmxjNIak60;_-vd-z6|1sU0f7E?<*W1vxhRqFQpm&8c80R;X~Lyln~;(A88P<=as== zUB#HkHRIaKB>8jNhjG#NNb5<{Cp~Ze&zEHB{ZNV30RxL9vdA)bFBKwFB^;3yp?x95V2b(9h$U_68bs2~xwB zqc(Mnv$N;V*|+A2Z%e;|iWDAnb-WPqnMmi{7vNEzinR0Wt=B(l32x5fFcfOscf2me zH76?W2&94hJ zA6*W;Lv*YCX&gj6G+%YMWp%9@M$B9!GH_s^0RcJiIy9>(JD`U~JG|5VUR6wSyljfZ z>mC)r$g4TY`4_(EYUdh>F-M@Szss`#gxG;!z^B!`4ANj2gn_&wvm&v`15x^vgZ>|a zcly|e3T-atd0Ih}pAd`CbA{#*PTQ>Dmx{Y$>uJs1|ncZ(7!QbqOAa)k3kE_8lB~w zPu~B_6Wdpg$W^)^Yv2Px0zM4IU%4f6fV5q6pV^SvOF7ARnv&mh_~-lIbRJ|2tL6nv z4B80BVGM-Oqt?#!Z8gjy>uV<$NfIZUn^Ft*2|wFt7>a3WgJ>!e%#x#DG>y`DK#wrF zjK5^2fCBAILFz4??6%=9NtH!kR zPu00?&hFF3N=jawT%+=|b~%OoO;!BKx_Rw`Clj?gyg4MQtb|ZVt*)#j@0WSM6*R26 zk~UQ58R|-drw|vkhzi18DiYLHw(9xxUb^mb0{(uobG zTX*4_MEk3AU{JkYbl&-}OCPpi-L@NFF9rPS931prY?=5%e4N6s))k57aQ`#L8dYGo z?d3PiOujO2r~G9hOdMb~ZLcs`iOK#W3izubC8ZbEEmlTw^T?7moVKj_(`HF5qpPiM zs=wORwCk>#4o(W)oWz`JA1nfHwe^meWuu)YNQ&}xQz+X!`mt{Mj<)*Q*-+ccshtp1 zG9y}sr*x@m>{1RvJ4K_6EElnOS~`bW&0PbFngDVuNc5Z| zQHf6$!8k1!1J(!QdSS>`VCp-E31V8ogCW~4lXE=Qxg z8Q$FhDK`_))Y2H>V~YPVnkZ`9x}q+jiUK2IiaUq}rT8Awf?W!VL6bwwLc#7bUM@YPXU1ziX1MmxEQ-PYe{qy*=73)}WWhvW2u#Om)Kz2ZmRPj^0eNSM2WG;H@Nk z#VK*~Mv|M-8&;u;HK^irqvNf^ecCyRQLEpTvat)5872*~wkqCB^>P-QQIsffo!l=7 zHA^r!eEpIeI-=Oydc(^Wse{Ua=0NL)WwQb*3KQF)T7i)*QX@zRp#FIK>&3e_?=Jp% z_4^h9qAeC_HgpBjU0_&x(@!$SdlQ^7te)3!6y70g=X+alr22z!byRj~F35{>)j>)V z(Hry1C-aJ`b4f=HY J|Gtc&{{h(aW9|R| literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-a2/phpdoc-cache-file_848c2b437f0a852db6d20f78b1383ee1.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-a2/phpdoc-cache-file_848c2b437f0a852db6d20f78b1383ee1.dat new file mode 100644 index 0000000000000000000000000000000000000000..7defeb5f45065eee2c7ad4466778a8112d1c75fc GIT binary patch literal 8636 zcmdT~T~FIc6zww-|G}~<6_B=&4^l8IZP@^AwUi>t_6fAkldrDVY&*< zKPI7!((NM|$xL>WxUU8mG94#zDqlk-ngr#rRGQ>Eko3LN+4bDt|G?Yzwe78~^)+Y9 z=_cb_tp>x)+30RMhmq=uo^ZNRl81OV8t0jc2R!mHiX0x9I$EYu-^h@jZ?CVduW9); zS6cc>97wzs5ox*+DjkcF-0=OA52wezzv;YoUTs&ke6@K%(+g!Thcw$5;Us-0!}oVG zJ52`8;rR!rual7z;R~&<0{NQOXWib4JR2su`qByIjnyxRM4FOqw|VSCm~VXN&-0xl zzhyEG=M66uckUn;AM?}bPT#jyT_Qk`GMxuV5+j4HFe2WLg%%@6Xf1A?m*k9M2)!>p z#wn@u{_^sC;;~*5-j<`M1r4PLWw}}*hJMc%H9a0NrlI4!7pcJM=W&p!BzAniv}EI@ znXy?ohsO(zqVT-RIA_DLBOMAojk>1{zz@pMhDlk$y;`UWd!E81bjG?_|8O`8RB#VC5-pB|$TF>Zc~&t6 zi>4U_oT?aFDDMr@0=_{_PM(kim@M?5x(qaaX#1faELNC(2Ze7$l$$7Y9+=Eg0KNty zdqfa4iex|gX@dYST15V-W6(k^&7|GuKtw|O)KC$LbV(qn&`~B&&MqWH?-mv79`sP) zHHfSy>7f?4-~~Bm{qz|{6)#EqqE2nv8-GppWhBS~FEVtkQln;m0(Dg^qA#Yx@DL`< zZ~)52AG}=Ztrp9Dm z!BdPCkF;u-{%4c~*H?fUo?u#a11ud5lS1!Xa;qoD3lD&uk*@|`lk zNQG`_cpRFVSdNif&@_a+Cb`y^#HQ;ZPuTw;+*hkHb26h16{dOCWP^3pCB-J+!36h- zGhqe94x9wJO%WibHD}3!-E-EM+)|@)ByH8y%OTkwA1eC?2XG;!a z+E^!JsWVkW91Cu3vSTE%5euK5bKIkd?p8JroB?>WFatjF;!`Q`=3xqGZ*LDyw_JLK zSeOh#k!C6=<751Iqf*sVk;-liF~nD=Hsa+=MkjYgA*9L5Wp_Q;0gyK zVpPS2UBU(0MWD=YsFZt=JmV7!CiQ$|Ms76u^6Q}4bV|ZL>**5HW?=%&WvN z`9Fi8!cma!<2I@`5H#S6BY+x#)nXX77}v5sR*uvJ&nn^Cve0R+(gYot$GeMb=!d6g zyiek7s*D(71@ZAw}q-U^YgBEd~xyH?hZbaAw`!X(r05| j9^Hz`z2n`T!*>_X{XNY^W5)+~g*1(Gz#gzJAvym7msznP literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-a3/phpdoc-cache-file_3f9912308a2f021882d8a049327e55e2.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-a3/phpdoc-cache-file_3f9912308a2f021882d8a049327e55e2.dat new file mode 100644 index 0000000000000000000000000000000000000000..15fb530c32e5be96a163665609a949c2e296f451 GIT binary patch literal 8614 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-a7/phpdoc-cache-file_ef8ef9fdc27c9460f71596ff2324ae8c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-a7/phpdoc-cache-file_ef8ef9fdc27c9460f71596ff2324ae8c.dat new file mode 100644 index 0000000000000000000000000000000000000000..72b846a1890f2bfe9af3a1705f7e022a91f7f159 GIT binary patch literal 8695 zcmdT~TTk0a6z($;|G}~<6_B=&3jv&!wrrpmEv1OkJ|S5XdqON6+a23%5#qn^cg~C* zC*Tl@>9%So6=n@OE`&b7Nz5 z#oDk2adNGKi*aVH4c4vwFc^xVum)kA`*=4=@+^ohc;tQ(*=Q)n--8SL=P6UMO=mrrFvED;`-H zzQ2>%QG8+TpM0=JDxO#&zR>D{CtuV0tlJxrXX98^Us}GrGWvO;NK>-yI*(ikbF~NE zdJkIidnP0QzDb4p)(xcNqkn1(==;Xw7V;3VOywTZMoVIgw4gVMP-0>UrNp)Mk{nYE zq4&i{J1Di@pPijdy*G^g>vHt0ps^IbELSVU(C_<2&5lRBX=suU!@#pfdE{k599gbg zTC(<1&sZ;9#N&lRnK({moV8||krt%^jk@JuloI%hQn;man9?XsgeMV1k;>HWe{wq8 z3o39BhoNN6Y^O!Vx68E|ohd#axe{v!evfVw#Q}^(DqFgf>ph9zu0ck#@5o{Vi?>e@` zXch$1?-TSEp&N)Wd{`2BpCnN*<|G}{t6Ejq^AskbGS4HE|p`%QmoLxwY;WaAO z?hjGm4Tx+e>7f?)H4>!8iws@M)To{xL){<};a6Q@ zcnA~bNC9QzPhKu{mJ9H6SzBi=1JW|yH3*npCk&F^#qk0xdhvva>nvWjXG#tHkA}D) zxd!Qg7+{nc*b!4x09--cp3WnuWH&TO-{#J+to3bOkQHsk1FagS{~gBOVX1%BY-% ze5VZ1QlT3f9*3qOmZRksTn!;_NUrfE(d%Z&6S_F+@cc1Uos8*1ky*Ai-F=-8NWJNI z@WDM|PDm?65X=M_PH`Z*=R=5ePY(p%X_a0cK}Z3cYg#b;7r=WYrpXLlD) zH;j6TSm+Ewsb+y!#z*_{DoBH25C+*b0$&`<%5HUT!Q2^dnxt?w5at4 z2r#caJ8)QTNS3~SFU=!gzpmh z&C*&O(~c+u@PHFRzew}RL@3Ua;)Pb$H|I&%UDNP36k4=DXOY@5quJvp_JDp9cGSw7aFTjbuTwdFE5AC+8HTnWGdKTMK4q z;^G`fBw|vU-{v6$X?8zk z(CHv~p!tfu4V)G+vPOdj!^`eA7dCXM))dW(qFur_OTg(fc!y{{qM~G$E5LdaxJx3N z*AzLWh1Mdk>702g{WB#3+DSHHP7&X-^Zvk&U>?IM8y|zWjIs4wyq50V%e3?^((JLf z8b6BgD1{Qxi$>pS7~}c;0|~6}Tb>+oa~=%5po*=#P9u=t=L?=H%2&_K4Y*entHVTU z3zaJ*x+QuhAf&nkaFto|#NsGj)j>)va@7Mqs;X4$B(U?NPw!luy1Jha{&_|RQ7Pf_ zqA4fwrt^OW!~h3HYJ|J0#sEyz!(pvuXy%V$MYEc5lcRK*`-=Z{1R9bihhr|8=|Ez%j zj5wstp^dw`8yJYtfuX1JineylM*+^feI&%u@$mRM6oYZ3adI+n4o^@2*xtftI;7}z nL<3Fi%i~=!y_>wbvG{(&y1k{jXz%#oK9Qzz4wysO1+?csXt~F; literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-ab/phpdoc-cache-file_0fd650466eea1b8cc68d0ae25a1c0f82.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-ab/phpdoc-cache-file_0fd650466eea1b8cc68d0ae25a1c0f82.dat new file mode 100644 index 0000000000000000000000000000000000000000..8146b8e71a192d26d3cf078e880f53a8b6125cdd GIT binary patch literal 8695 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-b1/phpdoc-cache-file_6ed2a9f60ef6cdc647b28ddc2244993c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-b1/phpdoc-cache-file_6ed2a9f60ef6cdc647b28ddc2244993c.dat new file mode 100644 index 0000000000000000000000000000000000000000..ad98236a18b4c2aa055ce7280b9c8485604e6070 GIT binary patch literal 15412 zcmeHOZExE)5Z>ni{SSmuEKSgLe#xt{mlkQ)4SQ*j75ii$pe5QSDod^;rwfAo_dQ2a z6m3g(YRTBJ+8+{IqR8WOch4Qk(>t$s?zN`l>Fd~^O+=K%N&mG-{X|ab>rXNi#m|=4 z?RxjAcj~piI{a$P({bw}^?F^eb=K{5g?}UlgI?P|=?(|OfjB+w^v>ER!`_+Sp?3PI zDbLhXou1cv^S3XinT(?s5P+IM6m*=%v&0wlyK{Pu&cFK+x1a2NdwBR{j~%khczTz} z(KutzE)UqNP!9Njv&%4^1-Lhv&N3N|RLfUk$W+UeB_b8ctqAD)w@>zp-rkP|vvRO_ z$TD0A;}Ju9dFu;2`Ee%FjD1agOyejOFQ^kWz)L>M#&MFjzm;eoh+8v=AM!LM0qF7RYktH)98rDy!>8KId%PCLz#Ei?H`f(ugHq;>h7=+Y}MUnsmYDvh@2g1*HGZAUZ zN2NUlBIB^KfXQeWClgNg!0=5eLRbr_>e)hI8{{J5Kj|{ppA2&C=6Zb2_V<}gq3Mjt zA@f5C`)6u4b|N|Avq30*Hk?JilJDlmV)#s9^qf64bHq0*)A#%P2h6CJ!~!T7!t>@H zH_sgy9a6ie*;uCE{6LVh@3j(^@0#bRf%&@J#!5o1><`oKK|`khx|T;iadVT!e=6g9 zcEBbAW*#sehViGAaX>|uoy9PAUqZ%l{E5koeUjvGg8TS77LnBmZUN>DcQWWXlph58 z(3Wk1wvAsVBAX>qh2<~l!IARb^Z@`(AFVR;_gFu=??;658?xL>pzOJjKX-2at_|1T zH%RLi*P0rB3G8hPaX)(KN3C^0zlG(MiKvZm-laAJXe2T_Nhop|BFEHfN^790snJ|u z1N0=x@o`(;i}x;w&vmC4s7iQ#5nopaKlwgeqY zlxd)kzD+IE735ZcT~4N{H;$AUf=|?P0(qVLlwJ-D=NA|X3wvXkX`iuB<9VAVz2%KaQFEfoDvXapuSzg7ca0il^2%2L+tt;j_vZTgo8xx7eOfe` zvv=cD2%H&~iWI1gh}zwXRK9hg;Xr6mlpl?;Y(Z(2c-#3ay%KSZIAkp^k^#3yjl*fjUlhh zxN~SYF+?k>b&+@{Jy_9yjtt6Tm?46}-L)7BEOcoPM<)oh*+U6Q3L2C=C_>yq{4&%x z&ol+5F#fHErY^*ER|?9B^(su6jFxMC$fBG`w{0Y1nH;@&Dg~Y^XhT_DzO}G3=;jO> zMqj|XZJVa;-A8V*eUUa!MCOK5iGs6k%%%gTvJDhOW_ym|7;sQ;z1cmp zlWHV-s}nQiFzP_0_KFi(rde^qTPsIGoVk2V12GsE##fa*35)H25}VAWAOVV`S7^{IRd z_z_)#9`y-RZGSdf8V&Dfm=(k7?4FcXobssz|I1yy8^pBP4()y_n65Go7AKD-VQ>N4 z29lmm8+|r(GP}3xM7Ft5depHD*<2`X&i9I4KMH77B`_3Auho&X8%)*K-yF&P_qJ#q zq^jaHOp4UKC7LYqgqq;|n=FasGe482N`W0umaP{M*(-R`#jbS0u!L^|TuJMfw~wf; zXpZWR8{YF%s|Lq`YdX-5>hjad9o1nUzU-6;ZU?^3-PM%e?AWe^?WkyD4cpo3rIOUJ z4CN*`50<@#^Gw0iiw0@$e3#+nwbJWKtqKkXuUDs=pK}QB1c+URN9V6PBVVd+)1+TT zdpZNLC3-u~E8)D}$_&q9w<5!{Z4~GSQX^Yssu~GSpK z``_NZy}A1N>gLbazitsAIxI+MgQh_G*EaMVl9Q;dOon)uqJHh4IX%$EiPHE6iIadw zri9Y!4-MQYI;1yXqME}3|&_9-C1z`XH literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_2cb88af744a097f913a23624bb5619d2.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_2cb88af744a097f913a23624bb5619d2.dat new file mode 100644 index 0000000000000000000000000000000000000000..94f91f79b14bb3580ed9ea4810a32800a4b08ca6 GIT binary patch literal 149418 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 H6Z`)Gs*XpG literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_716db9981f9e7bc7f6c92df08f9409a3.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-bd/phpdoc-cache-file_716db9981f9e7bc7f6c92df08f9409a3.dat new file mode 100644 index 0000000000000000000000000000000000000000..53f15812faaa59c54d7ae01bb234c0da01294d08 GIT binary patch literal 12535 zcmeHNS#R4o5bkq;{s+P+kOOEN`D&}|ks#e|7uzF9v-`3s3`(MHBC@2CQo2Tw|GqOk zWXZN{w~~_{n}^sIDRTJD%r`@F-nyMj6NpX%-D$#iM~M&7a@m&aAo)L4 z?95X(ftRU!=zhAn0giU`XUR6(P(IdS#4mW`Sl_fX4=!J`2b6yR+L zoR`%EjvDO3w3RXZ6on}UaR|MjM{N&4@DTLTKwtVHm4zvXlNff+fsT*EiDmo!bHlO(hsP|1SzEon50q_XL{;sNgMq|Z3x%t<=CXt z1Vw!V4;*b?0UOdR1PJk&$(B-@az95S%g13{gp=M zy7>}qB8N<3hAp%i-Q_e>k{fvEijLG<*4p%fWHy;lp`^48U8O6a5|xTV#(;C#Mx9Cy z%gL!iL$`!Hf?2rhJkje03Q6gxz9}nz1Z*Kmt4*9R76%Ui=LK`Gw3rJzy8N4pqQUgg zUL4?TSQQAusTZ<0Mi~Ymtz2U`H3>eKvj+}bEhiZ153H5!m! zCAqDm8;l<1Mhh^ka;X)xVU^3W6|@lT4NQnw)K|BPZ6F|u*!;k-JUu9n#!Ns!4Sv&< zi$0^~H10lOu+0eSFQ=;v2eeqoy%lAxQtWFrc}bm5DhbPE0UL1q#;gUrr1MJDu3;A{ zMryBG9};Dn;4O9svX;S5%+w`73Jk7w)jASx?n%8pn9CP)7(;dV?Ow788>yFvFZ+ z-@Sbkg25szx1tjkx)l88%Qe>l8LLxJl5gc>h>KOUZA{G3N?RYi+n541s9|+fkra!MG z%EKe*WhcLD?y1oQx1!#=I2hJ^1!+!xt^9*$Iu)Bg$amI-h#bLXQ3B7J%P2PxDf%W- z)T&KrE~50dal}^e2$clz>1H%hrfYy0gexQ)zd${ZnNq z;PsG6XOaaMg7W677v_$Z*4AX$lWQB?+Mw&|19auly6T~DMnAjn*1MZcuFt!WFMUoi z={y-qv>GH&TgO1f6>F+2!yZBnZ3Po37j38Pq?p9nf@@n|zG;aP y-lNVLrddd#T&V~1ZB&ZBv!o3DOUW0@zVtdR^)`IcW2^jgR}pTzk8^x4F7zM2aCYzj literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-bf/phpdoc-cache-file_7cb90261b19c7e04da8ec60f354801c9.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-bf/phpdoc-cache-file_7cb90261b19c7e04da8ec60f354801c9.dat new file mode 100644 index 0000000000000000000000000000000000000000..6c1b3a5c80ba1ce4b14f917d56abec340557e011 GIT binary patch literal 23779 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 KPxq?p^7udOEou7z literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-c9/phpdoc-cache-file_88763950b80fc33089a62fc59b497cca.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-c9/phpdoc-cache-file_88763950b80fc33089a62fc59b497cca.dat new file mode 100644 index 0000000000000000000000000000000000000000..e6050f836633e472d581a093323569734d60562e GIT binary patch literal 12084 zcmeHNTW`}y6y~{7|AQ4F(N+Qyr#IYXciFV;qAgGX;;E7~aVF^q#|~q=qN@7e_d93C ziJdqXh=aO7UfMXGGw1r9Z;t)eYd`ZEqpQ(r9ArZorLn#|l}Vu0i2i-4LOJ=`@Lbos zO}rzo@nG-4l}N4{CyCc~y~eS0d(D2}9tG_{9v^nwqT333NAAHhA!M^1(0yjrNTg;} z(`&qrdooO(p2|?BvJ*#rHFzgKXEI5jKqFcM-LO*He%;=By0^Ez z+p6K*k_HYwBdxAQDxHS` z`|=Gmhj#Rf(U1PyTX9>2BT01@APbBLHjE{}U-WmBbwd?6{VWPn6-SQmV_UOkr=Y>} zC=0_~Qj!+Y=V5xKlE=SKlysg~sC+lJYHFW>Oracdh3wneEeO^!&2%&?-#THg#H1v# zpnFmHjMmQ!H%@jS1Gl%Z6{Ty-L#>rc+eXyYHI&m0E_G-gxQN$+~n0o5t7oy@tfyEC{Ao33`dN>xeL1 zE{VKPk|-Eck|=}b3t-Pvn1oJQH|rk`M-CB<6OKfiBO%gMt8SJSOu?o}3IXRTf)>g< zLR!E#DCx-+k^qy19u&8M#ISQzsK%`3qL8DOi(|a2P zc+tZ1y^cW}wKSD>?*kDE?Nf6_B$5Szph8EPtess*itY_6wsF!$f!83io}`Cb+>htv znDx_p6jih!?ejXdX%ByakrbOW@?(w@8M#&|QL{dVwki_gM^j+9h$1QT0m{YiyIbO| z7TpcmI?q@Jqg7mM(J#FjF+lDw4i+FWh=;^f%UJ1_$_%`ZZt=ltEy@}8nSxC*7e(B1 z&bB^(WQp7WLW}Y)cZF50cTIiwWM5=q>VqkK5(DX*#+9JkH<(P|FGv7rld)n+n}+Fs zg>mrd5)i`+Oq-_KfRr&MA<1?F*K9EU$rm|YF^nUp@L?jO@iJsPWq^?i-O%hfG&M0C zBRA)m2zgC%tuKj(*F&6e4nk^PuEgodihXEMrdX46)@6tEntTTdd`5H$`GnAcjv%!u z04~~l#g6t|z&T?wOASY%v^7(c0}b^QT@Zc|KpW~SIZy2qM&_3`mKw&ik&Z`Fr>d?f zwh$Mju{~aJq_EN4NL`riZ%V;BoDG)tj*rLwA*e$tzrh9C4l%W*Z?2gzqmWXCgR^n0 zr2y9|QC$_P^oF7fOtVKm`iAs_r2c1Hod=LyksK9AOwTJCoL6~{KGO~v7yB3|N|spg zB88v;=b$k$$%aFrS?~M@fH2!`#tk?_7FQX-?w1D;>@)LA4z;aA;|WMg1rg{q6P(!u zLVhjy{IUKyjquTgRB9dTS~RrBG&pi@W`d)ro}eMl8ExCZ3F8*AGj*HDYpHD(fjzKd zgyI7H%mN)wegYeOR*+22`L6QZf_l)d^&e`v>3z$A3SMb`i@QJTbvMYK$29Nv*X%zEsQ5glCN4$>znc zwL@knsHg)1rg`t@eGr4o7yPDKaU{p8lt)+v#gMy|gZCCTntEN0f>-|(h$p;IZyfYB zvwQ3+O6WzdTH>RkN^_lrQQ-O8zkR&X;lDrqcY_WhFvW{ebvfzB8oe|tMlW2@l`UvF zT7L}`eieu-JQC4;y!uxgh?{!EQ`Z_BgY_Do&wY|LJfNx`#8i&f>D7mdN0RybzpIYf zX?`|Ume!_CJ$9^lU6J*Gz}zhHp4(7Y#-O#)!k>GHnLV-NF?sPI6N{YzQ0 MXj;M literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-ce/phpdoc-cache-file_47bc050b33010792ff800281f9ab6dc9.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-ce/phpdoc-cache-file_47bc050b33010792ff800281f9ab6dc9.dat new file mode 100644 index 0000000000000000000000000000000000000000..9a8ec44166f9e78011f136e150d9bb3c8a2ab984 GIT binary patch literal 8641 zcmdT~ZBN@s5bkFr{)1&zDj;1U2?=0Mx^gLf(NT&h?I$E_V{eibj_s~(T7>xT_ss0t zc_9huVR~&o0I_#xXXoXaXLkAMwGKQt9j337pcu(GPxR$$nFU&<^yeED$?;d$Yc{>x z%-i$aXIsyPA{)Agnb&H1Zb$U?+x?xrR^y<(7wqqLdSOR2JK=s~FO;p$0gW@WQjwck z4bT0MgfhyuKc}I{WjBfYYH%*IG>J3$5-QOoD2Ju8q|kw+@14CJ&;9c+yj@@0-r8DU zbGDprlHO=F80OAKchfnFR8RDT(~XiM#Jf>iFJk-@t#B3`9Ji;*L=7B|jwGDbOs z-j^R^l+1Z|ad9@bST6~0s?pPehEjyGTCEgAzvqjZ9uFVW(6s19DscKm9ONpA9pA5Z zvhm!^*es31_c=(XBQ z@~xXhkz~zWuR*D{&+)HvIl^S&?Rd9$cMy-{L0YIdh>EZVu~NSO=-k^f zdjTLDi2MOT&?u7q{FikCtY~5Rm-aymxik}Yp8^pH?Ne2SC$c4uphQQSJUY4%6ulc{ ztb5o)g4ZCjo}hVNF|4EH?@=b> zY8v95BEU$6ZYX%{nwnUSky~;#xV$F0)|N!6>mg5Qg5d7U)#y2GV;3q+^Q>`~b=f7w z#^1pN4~R2i1^5n}1hGvXAf`2E$&%u8)R@>(qcoB>Yicr~A)um%CO`yGhpJ1-R{I2$ z<)bGH4zsmXC#lrAs=<#Xw>Hr+lIX_5$HyGkD5AR)9Rx=J9xaT354`wP2<+Vt0qyPY z!|0Yvuiy(4K}gbE1(kn{9j{fUdMZ-+4aE)EqiK{lh)f!Sr1AklO(sF`+AfN%0WB6< z1JsvSp0Y=0Y!Blq_fUI{opBUWNvTCw(;2mw`Rf8}U4D+Q;^bRQe@|&jikbpcVmfLz zH^(JmFcD`ffO~jKPDPDEwljB=$ap&aFga#9p~}7ptwcEXq-hoVUnc>2cI8Q{SHN9i zzFpd=V+#>Q03L84m={?w8VSvDQob z&68YEvs4d^nS_v9C%QJ7w)I!>P-^t;;jw{UvMpE388@|IyE!O6?_6i<6k=nO>}O0; z#??KTslml<_;|It<}d*;XF}}TxlvJu%&LxW?pE8Z#q(vW%x6@Ojw4932PfF5#(cGrGKkx`$PPH7Pnh)^J*B&xVpHBYnTeXO6lIknm>A1 z@n2CL;a`DxSt(Pkez9l%*wg?BQ z6ii$U(cRAzfgj}}z^aOpMNSjhKfOC*jy#!;0Py`5ApEyTiVBaG9l z@IMa6)c(1+hr7iF;X1@gCaEx|D(Nw&v-~# o<%slI-&aSsVtns-d+YGsg>!dDb5Ypw!CfIu;~209tV>AFzfrKU#{d8T literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-cf/phpdoc-cache-file_67e08eec21427b946ae9f8ead3ff6c16.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-cf/phpdoc-cache-file_67e08eec21427b946ae9f8ead3ff6c16.dat new file mode 100644 index 0000000000000000000000000000000000000000..847a93d782636742273e570aea3ac67636b90356 GIT binary patch literal 14653 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-d1/phpdoc-cache-file_52fa4255ca51e497353b3f3515b12b95.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-d1/phpdoc-cache-file_52fa4255ca51e497353b3f3515b12b95.dat new file mode 100644 index 0000000000000000000000000000000000000000..b86c4e661bd60a23b2854906a77231004f985723 GIT binary patch literal 35161 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 E0sco@{r~^~ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-d2/phpdoc-cache-file_ad9decfd35298d5bab34675b2280d19c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-d2/phpdoc-cache-file_ad9decfd35298d5bab34675b2280d19c.dat new file mode 100644 index 0000000000000000000000000000000000000000..1fe403cc6c756e949330bba30b33b519c733d855 GIT binary patch literal 11876 zcmeHNZBN@s5bkFr{)1&zIzVbkobYC@ch{q|R~>B;?e!CqwQ)9KRmV=(HY!5=_j_h` z?KmMJzQ$Bs+kAk;_Rh}E%QMf;`kmi7@ZIsn_(c-tBN=CjK7S$8P^&S0eW@Zj`RV$e z=U=D(p6@=|dUPSu3->VfJD%?jTHRiEFWf!o9PAy){dT7>ygkwPx?;b#kKgp188sFe zkMj0?_f685QM&y~W^Y7zp<;O^Kj$*doDI!~Qnwkt~hvUy0O3tdPYPxXh$vx`JK zQ8ILBCIzW|d1Qx>GC&@4{b_j0S!I57w8TaQsYn5=WArl|-cdXT=$fWZ) z&sCo_qkBd>`nFYT(xW6!Go6RB|IlmnYxGX{LaoD$#axMkz@=!|u<_F;DvsqP-KCpzp2k!4!-@~pBHOqym8Z~~BW50$@%uz+ol zoRcdg0ZSHoSe*tM-(LH3JzT6X+YSm}iYPZ;*uAx6_5u<$6xk9%&?u6F?7=z#R%G8a375*=x>a&#dmdRNF;_ppZqZ$M--K@YXKt}ci%Yp3@} zs`!quFY?reJ?w>IUoEzXj|E0#9Cc$tKNitp6DHgx&Y^h(*yZ5x# zMT=!Hs$*Jp2l<-@@y;kRe zERhR9WKrJZs!(_Jp2_dN9Ed#10x*S7VkiSsxKdPmm&pYFg9LyunN=()(^&eSQ4)SS z2gL9IQ>H05Af==vB-u{jnF-2Ufhg#TVH^b!k5U+=4H{ zHX7_A z%&^c!r)J)(DKG8b_LBDZ_e;YN!Xbj+;zHZRpUrr4&G;Ajlc}&YpIPRmN>xuqD!U@L z0?O=ujeeP}!Qit^$}TddP89mSS!j{e1=y4pD3iLxgDKT5NRb9u3rCw-Q<{%PLbIa9 z4ah{~g5Yy=0Q2?7d$=oR*wY_VW4oR6HqP$`#Gi!i(F9q*2R^N{i4jLay ztrOjdhITs!LoN(Oa1qrP)N(ndXM4FvxbLZhSSp{ z|M=|e$xf@)+M7HwWqlj9Wd#znIVBaDg77|>=?@hIV+j>s(EPH0Y!HY-$P^3{EF+0- zM}KuwF}I;LR~ibO#JIH3a&LI@sTAH@n8MbeH6X8c9s|Ek=Yq4xR66VdxtX@QNeWhM z-GZ8P7ocHZ$@5NGqXKBgQSPBesi!ThK^==|D`sNR%`hQRVj}N}sU5`TF&M&|7>No< zZ9P+T?B+`W#YyuVl8d@kCig?DTb+jYDF0KwYRTY|rf&0Xnt6PcT{5@w%;&4s@VdDn z4*SiQF|U9wUPi3~TFIy71(c63Oq(@NW&eW~ijJ0=AUQ>wq-@UCKO!hL{{?>~Osugn zB|34(36G78d+yz$M+7wxTA;=SC2DueOO5n1xZwwmYhIUH*5lLu$%M-&bd(HK#Me2|c&cEQjd&F!-O~Tj88r5Ad2@ zWAJUV5oeqYmIP}voRNK!4IC29@0rYPcGD{ouNJ*Ad%J2>&MC{ZFut8hNxP!^I{3Q} nmRSWK?R)!lr1291s9-NT6KoOqnkrY+baKpBA^^wd^5p&(Vp@Dw literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-d5/phpdoc-cache-file_3f199544b9edab0d74f9448763ba52db.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-d5/phpdoc-cache-file_3f199544b9edab0d74f9448763ba52db.dat new file mode 100644 index 0000000000000000000000000000000000000000..3a23ba7f7fbf97a39e45b9965e47542d74a6105f GIT binary patch literal 20173 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

W94=y_VZ`IynOlm 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 RVyZae2Q?&$a^Do_{{X*BtA79h literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e0/phpdoc-cache-file_ed3435d0e8e77045c2a1ff0b58e73a53.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e0/phpdoc-cache-file_ed3435d0e8e77045c2a1ff0b58e73a53.dat new file mode 100644 index 0000000000000000000000000000000000000000..5431d8d91f8ea572fc52e41d03287d32501c02e0 GIT binary patch literal 11393 zcmeHNYj4}e67A;z`47B8fZE1QV!iByzUi&2IBifjF%sW?GC-`TmAnW=s!P(XVferI z%*>J^ZM}L$6}=CAuqARIv-3D}X2_3z_qE@eUC-VoVLsJyme{MeIt{Iv(bsn-((|7! zzti#WQvcX*eRc5FwMwsBC#m1<_^nR6e{|gIsb0U|9;&X^uY1Geqho#8?~OY>bx7l6 z)=XtQtJC*eKP4j_r7yqN+3Dc?lTK$zoaz@4hK55dY?3Cq4K@G9-mQQ96L+6Jd3kW~ z^oe)i4U*ZdHIwVi+Z*hAr;!<|q4EY%l8Q@s}i@7|xE1;M`e!u$GVRm!jTPiT4}%;h!BmP2^S z*vs%6M>|g@-s#1AZ)}sP7vTr(ZbJQn_Gj6?Re5%u*y>Ghq;H&jVWiTO&UTx}0Tv5H zYe8LWp8hS<@o3S&LS*j_E8;^k)Bl+@H!9QKGZjWS2wjq+(6@v2JBF}UX7dn!BD488 zGWpw?vTEunYt^myjI>e=q5H*0w3B*2TwY$xRX0pVx8>;iLf2Z2bh%rx4E* zO+#n-FfySx&f_pMN$dqdd6GRA_3z#@nYdr5jHfA!@bLZ0aBr^|>5(hYDEd6hu1)&< z8>rQLv~}{) z?;_lnqRb$PBF)BV`E3H2R~-8$(^E`V{-J+&e~;zcaybs8eAK|Q*vj~a5Uz)X>%x7~ zV<*wod)dxiNo>pS&M`0sg3<9h0Jn=DE-sWsbO#@BH8}fiW&<}Fz)5r50n&U(Blu{1 zz2~6&g zLS>mX!#t}T1)HWB7C1LCq%i(5+yc4*G|jKj3OKT|lj=5*`0?3K?PR&YtUCyNqoQ1_ zaP;WNY=r@kU1e()f<%!XXMb5EK#MLV{iSWtMJzpVyU(GDlnsbWz!K>SLr|b2Ot$te zIK}W55!*T$BETD1vKgm`Sj<6|_?XkvX9QKe!tIMVb#5>Esu2@7$Pz6wbZru&GCzU1 zCRWkU5@EQABRn8MM3#;A>(_a3xp`Yy@6Sx+jjcV6&pUVSf>?GSgY4UA#1;JfWUyh>Ayr5Qp+g z!BfWsk;SE*xrH2UW|Nt=nQ6>|;9((zhl#MkQWIUswzoAa9X+;^^$gO zlGsf3jkeBXKo3|jQog7*;s4yiFxpbkH z3G*Jx1EL5MU(@z_bSBV4J}!Aed}XT9;~8zQsj`r)^dUHWp@pT2`-wNN1@H0F;C1@k z0P8l6VAN&Ob>ZNV1c&mE8;%XB1SaR^%~~i!Ny+=xv{8XFF;wfsBEwT03f?#@+ddG* z&HJmYbqUl>&I;xVvT&-o& zpOrOgG)LkGFzfK`(auii2!lr?t4Rdyz=IaI_^4aRUL~Tf2UiMV8QTc9y53ZyXjt^S zRv-(X!L=#>@A7}1%foX@t?%6F5rd1JUfR?DgKkg6;{h`D@OuLSSV@_Ulih?9_JF$UiX)HfM|q0En>IoqJ4eleT+wOer#f5HQLN_39uB*dvs|jl z75eFFT1|g_CVa?vpvGXcMhzqVfg9f36DqTj_=ro|$mHEQqb@9tMci=^#|yQ-KIt@% z`uE0fQ!&=4X6m5zP&fV8rL+72-C&h<*t7%fQ2c`m$P=lp9g*{FZn`$`YR}i+busY=G&a!9{RhQSYv^v}4BYP5EcHUxr&F1eCG4;h11BZ3gUj z6JxFzU(;CJLBHVDoH`W!0ygO5enDBN-`#oqsK&d$r^%?3@WG=|*Fc;*vFj_ZVEu$u zu42nmJ-W2Y&@+K8tJ1|WxM6R%D5i?kL2m=CBRz}R)x+-EMidLc@kigg`FCj+Xha#g zh3(tD@=_zg%ulQk%<@Li)|Q=z39+4JFL@EuI^|c8s#L4`mV;wh6~UHqCVD_vdC7_1 zVtOCA@CZl#+G> z<_>?>Hc~+fK>H0I?b$KjE@}+;#5wU`r$I1v`2ddxzUT(}vxU_y#FJ@p+usU4^4N#Z7Of+7Ws_~<7{7f6tWSu KVdq>=X?_R!r|W0{ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e1/phpdoc-cache-file_06ec2c5b068f0ae1b722c99c2490f351.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e1/phpdoc-cache-file_06ec2c5b068f0ae1b722c99c2490f351.dat new file mode 100644 index 0000000000000000000000000000000000000000..c81444f4ae28af01e2ee0c51df733f5bd9bb7c49 GIT binary patch literal 12881 zcmeHNYj4v?6y%q>0OA%kTj$*ghbz9xNey7(P%HFes1JT~Yzy1DUZ(klBbo*kscRs2(6LHzVg#mT!%p$G9>`6-og@&xkG8;}h9#8Ik!$t$$6#?Qau?&ikRot@1M zXU92-Cf8bxE)!?#WZO9oRA2Oka}q@90Qbg|G*RJ*pF9o%ho6icEn}&#ki4=e>A&cItWC&J*X+(}IwXwvXuTOcq*>xB6YA$z`OS zAR0NelftS4d1bfr0};n0>UA1=XVJ(rcJSux;K7$-XQv4~lkmE!kdEBb$u_5bX%9I~f*&~Y9nmnwezYo?F$OG!6+>NZz?Mxc>Q zU{^N7)^@(TmPx9^*>&xXm21U?wWd1di`J5ogf)t7ZeSyd<&Ft%im!Mge2H)nv5Z?s zZ`|JAl8iiwf&k`)*;{Uhk`Z}?BvFYR<7MHt-J9E6EZ;GgLqA9d4J?bTl-q`IyI8mk z7jNazN_6qkY-g`Ty5;t!co8DoNxd$T`24T)bD@zM-fLX-PCrkyXI}=$&^uOvIPKFD ztQue6bz2fo^FmO4(Lyf}mnR|!RTEbXDWmg$~{0>z&6PE=@nW5DhoX-ZUc$ubwAdlYJu5y5co<2 zsqw=8oXYG4WWO(x6$?S4Kn|08>jYTQV)woFK@Yh!6L#->5eV&3-DMoEb_69l(q!%E zLQwRtk+H3#J`%ivC7TI)h{eUaBF3zp-XW>NC1IcCsSSJB3uL8O!4V%7Mr7owlcMJR z2-2!h1RqR-;UbcxOcp2>zwU0aThF_9q-&M33`TWKYtb*co-jb}E_W6n(T~PNV#`?B zEu|SqAwA-O@Y>`8TA+d^AX`i_;kS&?txqm_MP5I!DBtC(P*?k|$?t(2iZn<(Folm| zBt28OVpRJUlL`C}6~Mxb7Awj$RR1H0{Erua7=FQ&Y03?(l2Z~|*>2D^8|1ezKP;4)15Ps5O7yFk9 z*0ce;I3cN~e}e)(BeH~Og5wOgCi8a}?`N9^ju;bHYCH*~&6tMFXNafhqlXYaGK#87 z#!`obklCd>3k;(g`jCm#iE7G+K$ol)VK-ryN;jRGy{}82+MoB7b`KA8;}FUrieKYG z$Hbt`dUMVA7&(+EKR2OK^-9I6uL6}^lWPHIwi%?qAT~l{_{k>b?&8RpYdu|es%)0r z8R(QOktcYL4J8#UV38!yi6hVG7N_H}&@6Cv1HcPWLH2q2KpjruEd$cS@;ri#W$t9~ z+SxZIz)FcA(!6F^GlPJcuLSoT>-T1aiN=>w>qs{up>54z$jXoeFHr+QGo4e~wuP?Z z2EH@d8p|uGZTNsOuwZ0-V_KgZH#`h8oS&b#r*Gdr-fOqpg{e--`Zjv=Y9y#pB@tQi zyoY8wLDWH#V1QBi_OqTI-PZf7LsOf)q#<;S*3D*hm}5`!s%&cLIEA`|xoyqj9)zTq8Z zl@YfQxU<%66reJXEy?p)WB?6XR$srb_=DXFp!p*J=T0f=&P104AXViVEZ9Rqs6*OI z!|bi?Y2D25W3JdV;KE(xe2s| z!;-8wMkt&Xedk2bR_ZSX!h$8MfUxjLfy>^L=8?&2gKUa{tzj7BnXX03Ca84duxOjT zuZ|<_!v(NN-N!;$G^u}cxP7rtIC>q}!fc&~+`Bi|<2 z(A*TD{?T2QW?9=$M+G%n^u>@ddt7qI=O`G|=8>GWl%3uDQX`{99=wALn{Ol6cGr|< z5*k%~!1`W{E{^$Q%;Kz?MKPe5d8;58qITh!q=SucDpvfWlbmPRU_*yFc2a?96vWG& zzGh_Srs|=yTV|>iHY$o#X(UX|&ffg#;kzd9-SfZi&_INs_&l&FBi+r6C^!AmWBulb zD(wX`B2MUqb!RnB*N4H?JyHR_6}~^wLwx?)7<`*-#J2|xmIP}voL7I84IJ1mp0X@F zdZJI4=FaA`&*SU%3N+}ONlB~GT^+(V+&AzTr3gOS?d8Gz0|F|jXS+?{YpPsU(|N98 VPEHHQ^K4&=l4au%j?dM}{V(SezM%jB literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e2/phpdoc-cache-file_38b90a17812e1f65c338aff8358743a4.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e2/phpdoc-cache-file_38b90a17812e1f65c338aff8358743a4.dat new file mode 100644 index 0000000000000000000000000000000000000000..d57eb52be5263fab522c7b721c2f479406cce35a GIT binary patch literal 12211 zcmeHNTW`}y6y~{7|AS>A(N+Qyr!B?Z8(RvCmP-XJPnE2RGf6ERJB;m$s_K8=@0=Ms zwre*DaS^w^Ky1&RzgCYm&BR!CGXVlx%O{=;_l|g z!=0VY4Qt0bif0!pn4G27*3q{0Bn*aPD6FF}&PKR5on>hdP58+tVQBG_iKS#B)wvwe z^@p1qn;QxT2TFQz)ykXkoUF^X>~3OZO2Fb zC9?D^R#q5KEIKK`t|NJFj`Ks2BqZuZ7I`n@iKp%1wc5jypHmr)n${R$tV@!^!rx2< z=dh}EcUrRRp`~wXLFuubmCiqkqa;K?v7WpS%t!yuvSAqb);Np&G>9Y1^Zb0x zRz;L;5|via-`(^qNbdhp7S;N_Cc1w5s?e`?&_t%?2-?~%ZLegSsi^4`xQ)(l-8HH0 zT2-NR#209=xq)LToclVyDa4YQ@FgNbBr>rN-?)Rl8LUwqsan(EiJX4-o47{N=Mu8+7(i5y2U*C0YiKlrZsNS^EGsNMM2*brYk@aaO zaz<^Z*L15@6t+CMNvM=%GxlM3@M+ghp z2FX6ZLOVcZp(f>HAn|qGpQuT@z-&7Rd@jOFdjU{fQ<=ShZ1+XFU?WHr%5nP5IssNR z@cm8uV1Qhz`QV)|LZLh=!Hm1@j-W(GnyejN2#VnaGS)sEBEdV@vYViXSX{4LV$9g- z9g-@#A?))!HDM2Xfwz>4IO3zlh>Tpzq^MpWL)st`;Rl^yxQHaF@&$^;uX|eJF6Z4_ z(zQ)l2BT$6YtS#fm@z=^-s~(uq90F*&sMS0siYZrAwA-O`0SFDsJ6si()!xzhJ(6RQg{cRo@KH>prwdntYHu@{z`r2NU|m{^1!Wql{~gBu z$5TKIFVJP0as#^*l!SIR2RQnG;+7|Jx}q6JPV~b>M#VBjJ4Jxr6|$k&v1>YFIC|fl zbi(Bw?Q3jFJiQy@gbI$BI$eSDlPR_ zO|t1!DApjqffQmZ=rIM_%g~ zZiJZHxl*ZEbt0i@++fJo7zJwyFpt6T=a`PQ(Q{nFcRGg?c`lWSC-4atjEt{M>vLO& zhhc`3lOy-|?c4i%y?FO*j{|N>Ce1BI+$F%{DV8sv+7WL3Bof$kDL|D~csu zV|3I^B?d2}^=-yXd8LH zx4ua@(84hZ1B zN1|BLgi+Tg(@zD-2cZHnnxktCIt?o66e#fTx_uD4+7;gj08*N1p*z7pW8+Q{EBD)i zoUb`#509@_%Sy?;wLJ%`!kP8_@4%INfX@|ZAZFOb=#{g&lN#vsyN!W-v;^8Iruhgm zae+sA1iN;T<$(BM3S)n79&34FWS3kojIeBLVGLYyy)-sXKFO?LKf0U|mE1fFdf%;|zD{4fC1J7@qH za%dyKXbic$w0J~nU0u;)P!{~*l?1bL@P&rJUKVL;Z_|Eqq`7q-?eynkmR~&j&TS16 zepnv8deN&Tcw5n{J;r?Yn`(`m$G1@QQ0>1nUTjF`f&p~*1EWS>OfG3GTZ?!x?0zla zuC9nQe|5zg>v5}M%hltWZj^J2>oLEL0jI^}BTMAyy%GVvDeHnf<&&FYw7mKok9;nX z_un*ETA^2N#*_M7`IZOH7-JO}lJ|D~-QrRwBNrY{f=lbK%+_|F8NMPb2&&pX34AXm zr%(8^w(=y8MX8R!N`fJh8|M|&e%8K?BjW~3LU8lX|U$y5t$R2He# zNSHpoeDmDH=ONy^r~lrffe2pll~q?p`mu&Jy@p{8Cv;;`T8!PR!{SP?9^iGp8slri z&R|_}mE^OHrfQchYq5;I<4# u%5@ItEzB=SAdb}bVzWnJtgBvL<9SSih~rh}8yqqJc=V>}3diZx|(C;>tM literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e4/phpdoc-cache-file_8e8db8f681c785206efde8c4713d9f33.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e4/phpdoc-cache-file_8e8db8f681c785206efde8c4713d9f33.dat new file mode 100644 index 0000000000000000000000000000000000000000..fb5cedd8ec9e28736159c1e93d8a3660db70b0fd GIT binary patch literal 20361 zcmeHPTXWks7VfiW@*lXGJlLMJF(qH=?QUHs?RGY8JW1M@X2%0ju*5M%sU+prlktDw z?;HRmD2tM8f{hbL50*vZa&Ru+xe(y%pm!8>rlaYLNjMwJB%h@3U&t&>qbdFSLln#M zXD8@(gAZA75OluU{%Rz$QRg@ddflKC9?9;`Vd(n@-Gi`ua2Otnqy6q+XZOJOyGLP< z+NoYsk#jHqFzEa|8OS(${%SJ(DVO7KKn1k}Js3Tk%+gTO@2old6LX*3+=-sb6+cM?Z^(HGunJedt}Z#BA!WaDxx&A$H_;MJJKi^H~WS0?R|G8QZK?}LzyaaCl{WfBEnLi@vnir5Lkk05vdl*ha3<2O zTYTgB?;@^QKaN80VwQw?G)cVkbF5DBVUwr!zV(t>96$4lW$PnVbI+SAbA4=w1 znpn*dGYA{Q=9U%=-F%vlqU`H`@r`c_ebL=`#A3=@V{%U;2M|=Ww8jUDki}UaJ)_l6 zNwgsAMzvReZJqs5=7mY?G08CL1MNs4FGLLw69o7QvoR72=8 z?wZlo<*;dQ2sGcuWY>U)J1hdcE*4R!_adGfvKE*@E$>eT19+_}s(M1XEj=DNChZE$ zLd~~XFmQqp`YFaKZjs3K$672+RW#9PYI?IXEN+_4__q638r6t>I?G1ii|}%j2m)Yn zpQRl8om&2n7{_f(MF8U{%J5a#k%+O(rXrN^9wL)j=lFHd+glPLolfFdGN5(>pMoRA zH3(nGqoT72c7hK#HyGYmm)X}j92T(`W`i8FTp)~aMy?vy_zHL9B9bF|DT;Bx1!j16 zKj^%#b@s#&iXUr3+*6{(j&Y$05TjBDU@D?B(hm&5YSL4393#e~aM>Mal!AypY(<2a zvLEbVTBS`FQ6ge<$!|;MYH8DSGL>l_IS>yg3%fywTm;JjGt|oAOwD^;5yk#(QKW&t zS1=~Oo)VqE;DWDIO9!y(nocEhkw;;{KDErND2w`09Oc&}R^%o+nx$Ww>3<;Nr=OJI z)GJsJsO6aihY*B%73&6RN@4}JR0syxT#6xgF*>GJlFi0rkurJa2F8T-40L{mAdV(7 zH&uRhQO($xHR?_rC72}&{6ln7mvS*|uE1=BU@8)f#_)r&BIrF#7A&h(m3LzJ{x^}@ znzBcV;sdC`9}p6Wek^~{lF$rNQq>yM5Y9X5 zLabwRInUgeoZb>pGgR6Y=~h{uHp;egVUDI zF`I4m=1TBE^LrOOJ}da)XkK~fu|%bA&>T%U%ApLwD#EBbC7g(gd@@+7m=H@ghNMYESDEng8Ye|x55o8c2t7u9H+q{1wRij5||HO zIeesI95Yvi1O4ka@g9XB&Mukv}rc-;k zv-+48sr?x}fwNutvgCf=Rx7?8wIcuMmbl^g^pYUw#i@2vlXUMhZcwcd}66+D)#h?72L)HO9JAclU*%Msh-&D?aJ%1!)Tx+2I8$J=1v84i&b@w9ZR4`%|`AmxM@NP;xEN857ggi3te7g zhgkF$kVlSZTuCk69zrm|3^NT9q9mJ|80$muMF2ac~iN-2_Z$U+!zqgt=^Y

aPRLA+VJ;f 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 Bc`E<_ literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_2806c1b43d62b4a0733db0ddb4db1b9c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_2806c1b43d62b4a0733db0ddb4db1b9c.dat new file mode 100644 index 0000000000000000000000000000000000000000..ec2c2cb7f085337b8360de40e05367e7aad67970 GIT binary patch literal 11832 zcmeHNS#R6M7VfhF|A&DPAhvOvSc{j?cZsVwZO}9^9JeoZL5!%8M1&&MA?emI{NMYX zIWrV#i?VJ+<>t24gJqGkob@})%zLldzkdk|KRQR*7Lo+ z?Jcn<`pN7@hvP{mcKW;GGztfDAVoh)@*&<$XL%OJV>9wJii8=N3awJ5uho#AKi}Tk z-qPyVJk-ih;y~f8jEKygVW?v{RXe`_`pw%j-`^F_#M9?xDxdD2&~!)4<%DK46CxRj z48IHR#Oe7PG1AFYM9EkX0b!t?5ebI8mom>Li7vksLv?LQ3?iAP#NJIF`)`x6&$9E2 z)g4tr{hq0KxM*xKwmLw#lM*UpP%yYr@z>dcRYdrmSqoCtoqo}$N-%|I=Q%S@lvZS z*YRSt*DySGzPhtp@Mo8)knRW-+gl)(oVU&1Ob(UKWT0RsGF55o0oeeq=1*t^uq^esybUOR$or`t*Ar}H2ZFC-f9Zo6t{Kk8bDe_x)uSmo0$R0-g12b7K3C;nR^v4I~7+$CQL(oWck*1 zI2+H9Et=dM0Oyj}^)qU-q6q?#Mf#4346AbAVILo=k<6paN4D@$j+M{BD@DX_nS=u0 zNCc38F&B@7YOwxIlms8I05fI+hw3(}7pzjGCA6~Lpu-y!uYBoJ7S1|cNfV_iE~dfW z$pUy)(1w6#RMSwF!|S^I6Dn_LT`NnfGMY)AP!}TLUae3J5Dz`;X_4f@A$Y74S^ht_#Ga!*#xcA^D|a4 zTqp~JLV(QZb(n^OFbcC9QY=(&3sd^V6~gFO>z6%%+XBNtt<O9*aPDu)d zZx^soA>U#ZQ2~C8%`snTKAlQ!h;=VO77Q4&Q%FGf)O#vyC_1+$Np zGD$h}ng(qW2#6T{fF{qM`wK&FSoQ1c6eA6_(! zCrYCTAD%Ikk{593V|$+}bhC!*vs2W@rQV6bq6cO9Tq##Sn9b)85HgNxk;oR_D`5A^ za71QgIz0LCZdji)Wu8LojoQZ?k!|@Hra+uf4(DOzUd*r< z{a|M+^G!#A4lHPKTar4Q#;TaK#{&fEl*cv_A8fnrb0dr4!M0ZaHu=wI^01sj>KiwD z_~2rr=a%|k(Cn#}yoXE#rK@GLrHHw+OTw$78O6QQkW#4n^whS8EmkP`gei>q{KxFO zFh{Z&jL=Pa;NwWwp}K+xHv)C8g^UtYPS;L`v6@XX!EAk!iDVcD1#(&rg3Hq3c^=>_ z#fEOg^WGf$U0#aemYurH^zqQsJoev(UYoiAjYP`H>5Gbn{|`d~Gp? z6umgxx?QFBN!jZs+>-iKd_kZu!hF#&?G=w2NfXUMBAkNnZ>_E3)e+{@To@}Oj3I?H zV5i{{VRa5o=eDIQX>{w1!+26=^{tmzGfsJcMaWnlb>jLIa{3JHe$_Wid$t}pl> zUVXno0g*T17En_{`VtT@#EGjO;nG)Q2*}2X!?p%d)xsE#X+El^8u1UXdSPRc4(pL# zRga_GE!c-A)TQIH!b)Jb4=vPkw5hYFd3o6gkeYhC?2Fp#93B9P{x3YD0HdX6*|;nd z4kcZ!KBMEF7Vf&;vg**{NYyo+shIvQFxgaQ1T>83fw@kI!N@Ak&->ol#l_bL`}oX< txDZE*vAQp=N67izzS~=2?gxpxJDQ9034CxLkER*>w3isz$rhgU`~m#Enb!aS literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_d766c13060c61fa4aa7df4e997460371.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-e9/phpdoc-cache-file_d766c13060c61fa4aa7df4e997460371.dat new file mode 100644 index 0000000000000000000000000000000000000000..c7f04c0f910026e4d0c791c4fe4dd5619bdf740d GIT binary patch literal 11884 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 literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-f1/phpdoc-cache-file_5dda9d326f95130c506937e970e32e5c.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-f1/phpdoc-cache-file_5dda9d326f95130c506937e970e32e5c.dat new file mode 100644 index 0000000000000000000000000000000000000000..f2f2df0486c12e5fe3cc04afcb0da236f10556e1 GIT binary patch literal 8758 zcmdT~TTk0a6z(%p|AS>!T0q*88v&e^wrol-T1pXR`-Ego>`7wb*zVY78zKJte&@{C zaRRw4nB6uHC9!ADoa=YKndxVzedO55IC&d;`9wxptghb5)Kfu1U*83xoc*+&R?E3f zodd^yvHM~y(y`r3op#HyWxFj};z%CucRIsv*Kc$heycHPb`K9ajYfAs(hNjU!Lutq4i&Z9hCyB; znaeTF)<#(I(8}=pz06MIk#&6j(Hg3FVukoYs|TKZP3yC6Z$zGrV^w`=`SQl-=Y=9o z$+l@8xe(@RN4jerY02-IjQoe@7FJldSOg#auQr5!?>=fh58=yH?je`7K($(q?tlPdC%DzL7r7i!J=sf0jB^xyB9bINDKG|RXTe@5@51Wqv|ry_`dDOYP4Ko_8ki>8u1#uG z&yS&Q5Q*@st}r}=2@4c~vhhD&E_F5w@N-$a%v=VfO}uLmFq3$}1A zM$*;ID@Dh*nNZ*_C^E>3wqi}IhUtHVv3Gq1nBfV!RX4%tA*G}xB-t#`(hHQYTv1RK z%{mI2AEq)Yry<`d1GH4=hK9$Xsfp!ixdm54$ZL{od`V=x9`b}TgsxYQAns&S2l~vD zuG!A)s!v+ZeuEYs5rIN>A&?*_NOTGZ(XI#9FUUWqkWRETS~gs(4*ut*gJH>nQ#^qVIE> zlA^jB6#$P0&O7CTJ?M-x?ZEDxQBcvaQ0+|QBr2W`Npy`Ff*7P2= zdU55d*Gm*H8-Q6_t7EznWdI&an(;UK|7~Mn|S|3LofN3TjxTUy0Gd26kmJ% zGj~3*y+h8_{wb2|9_G{#?=H&p5gpHBo}iD8IO-4POOZ_4jP)te>XbIuk`u*_nvb%c zoMDh=&R1aUQfRvrqbr=7h)ESO_6ad)vjG6Op&}oI@{A8QnEUhb8o5zt($9l)^Z5z; zjHgSqTLciap@#v4jtt2I_1EuR;53P!)fzMyUiP|$u%Tx)XV_NM?gqZu09>EJJH-7F z6(zG=0p#mIVG>!trpPHRbSVy-KANY}zf>Zi?PVS26!9(l@Z+}$i-=AX}ZFKC_|e{*CE^q~4(b`3|6f6O;R zRm`s*s~f1VD7FkCsYz7soakEVnP8Es6fjn1$rDSZbX6NEwaQg%d{k9wsgqDPr=Q=u zIGA<6y#4bT9n=Jc!Tm;EPT~#e{|t`-&XUv+*IBi}qlRT18`KE7bWZTwuz)r&jt`)6^y)ziwCS%W;jpRvZmP4`|#*QQo>J(r$Qkou@}wKjp~ zhi%~bPf;NyIITRT!?i%*3;K^0C$xXGajSQ$Lx)UEPx# literal 0 HcmV?d00001 diff --git a/aliyun-log-php-sdk-master/docs/phpdoc-cache-f7/phpdoc-cache-file_364006e4e5cb229119c1ce811eac4432.dat b/aliyun-log-php-sdk-master/docs/phpdoc-cache-f7/phpdoc-cache-file_364006e4e5cb229119c1ce811eac4432.dat new file mode 100644 index 0000000000000000000000000000000000000000..d12a14857ffe881a018cc5671a3dc2ce5e62a8f3 GIT binary patch literal 12122 zcmeHNTW_046z+4R{0D?8Z4#-ijdO9x-nvfOt+tn_t@;!Rjq%t)#o!JQHHz}z_d90> zj2(#WHLkL4^U@laGw1r9Zw|b3JIAg)xtyHFem0g-8mo&_nfNN0(0^Y9p`8A-UB_{6 z68FfpAMHK56v?H1lDHkmwU3XEkNtkP@5oMDwpy)jr`tamw2qFQ{;=&Icj!62Y9dm- z>d>{{!~+>7&rW41Q~5^tmq8?7syLgxmtQiOq)(w2t%QcyFNrhdOZt7-ZMpWZf8g%+ z*0a66?JaB1>cx|56^t%ZYp1tsJr9Gv=nJbC#@PV(#*-`!q7gs&JPa*uPhrEg)tiKXvoJ?WXfmA3E2QIe|6M`mb2Y$nTr_vqhA)(->U8fKB7261G0 zo}aJTnd-4iYSQEM_c*-_k|)0xN?N~_HP+AF7BRl8NvoVlEPy*eCDY&cQw9*NekYvL|h~O_kT> zN(fRp#$w^N+?(55h;Qr5ksoG*2E<~kz->XfeF&b#hWB!4G`e`Dw=-8_WxJgzI7BFI zGS5NPpZ|S+E)??LdyA{y+1H8k%wix4tuY29S)ZO@)A;(nYfC)Mf?#@;pchEBo(RLm zlF0iciGndFiPEQD0DGRoBvi_}8UJuNa*(i3I1(L>gh*2r^s}^N3N}qr2zU*Qvrhu| z2x$S|pq!^yNCHe2YE<3^8sD}3xf<0g%)W!dS0c=G6acn!CUX=}(7s3)2!ckT9HtL8 z2=Jl-=m#Bx4r*yG1|NJ83guCgWoWGr1Qj~UWbN!iQuMD;vGz$H1>S(jW|AIiaYwGn zG2^EXD5~h5w9o6*q&@rvW>Rj`$d4K)GIA|bqI!J{ZG%XJpLBuYB8p^|5l}9E+uag( zx#(`l);ePujFxe&LBI5R!T`B{f3N_Femo||I*XOgOqqfC(IXz%ttl?eLQ^m)=A?*Q z&f3;zkSviKKxk0j;jXZ(^^UIZfgFk~Og%7#&tfD!-MA8Tdz;Aw{skQdvC>v7XwxwL zuQ2vMUjSlwfo{`O8<0{^5|V5-aP$VnEl=chMKg|^%7=-Jie<=l$^b1Dx}n)|Xc}TT zT5irO5%PxQ8eb9@mN|4|b z1_w>PVqbGI;LOqa6^tjLG?mkk8#MtHeH;&j4{fNslAfuSlz%P8LZM_PT zpdW-mdQGtfu9*WL{nF=z;TKb(2j~nHsZo2-blsBGdAa8>H0zV1<_ox(F~(pR=>+RI z3AL3;HXaMbs^>RQH%Mskf1W%RW(H1yqz8lMLRiS(W+VLnp=zViFZc z@$)f9qBqjWP`4vFV0Ol@sE->4)uuX|Cn{kVA5}AHuWM{V;Ib)FtOL)EutvDIA@{<#G5A z-q8%$%z?=vuzfW!DZ8{1P0$6(&u}?EsLtRVZU7b<1_7R38JuZ?8hkgP(&|=#3I((h zR5Wzl+*mvUwQg@|F_IB~c;&zZ9G#||u9VWtqD%SZ*bj~_o8`++dpbS&$(J`XC-`pp z^6D+FT-S9iuKdiyYjK^1qxnB&zJ^vV7$-MB394eg9Foc=buaTpvzkq{+gswq-`u3C zzFTk7a(%aK*m8ZBU#aM6Z4mF0I0xS6ss%nOt5oYG9NJ&Md+FgD z5AVb2KO1xqp(;L=YRXC9*A%8zF@@oRuIxpNfqQjWTzs4=!Fqsq@@j}r0vm&MU6ptb z+hD6OzQYT<&$59xR@Jka%CWlxb825x=HCY|JBg>c+FXem%Qp2kaud9?3`WXzy7X@4 eCnV52pSl;7EdpcR_3|E1f%%V!z + + + + + + + + + + + RequestCore + \RequestCore + + Handles all HTTP requests using cURL and manages the responses. + + + + + + + + + + + HTTP_GET + \RequestCore::HTTP_GET + 'GET' + + GET HTTP Method + + + + + HTTP_POST + \RequestCore::HTTP_POST + 'POST' + + POST HTTP Method + + + + + HTTP_PUT + \RequestCore::HTTP_PUT + 'PUT' + + PUT HTTP Method + + + + + HTTP_DELETE + \RequestCore::HTTP_DELETE + 'DELETE' + + DELETE HTTP Method + + + + + HTTP_HEAD + \RequestCore::HTTP_HEAD + 'HEAD' + + HEAD HTTP Method + + + + + $request_url + \RequestCore::request_url + + + The URL being requested. + + + + + $request_headers + \RequestCore::request_headers + + + The headers being sent in the request. + + + + + $request_body + \RequestCore::request_body + + + The body being sent in the request. + + + + + $response + \RequestCore::response + + + The response returned by the request. + + + + + $response_headers + \RequestCore::response_headers + + + The headers returned by the request. + + + + + $response_body + \RequestCore::response_body + + + The body returned by the request. + + + + + $response_code + \RequestCore::response_code + + + The HTTP status code returned by the request. + + + + + $response_info + \RequestCore::response_info + + + Additional response data. + + + + + $curl_handle + \RequestCore::curl_handle + + + The handle for the cURL object. + + + + + $method + \RequestCore::method + + + The method by which the request is being made. + + + + + $proxy + \RequestCore::proxy + null + + Stores the proxy settings to use for the request. + + + + + $username + \RequestCore::username + null + + The username to use for the request. + + + + + $password + \RequestCore::password + null + + The password to use for the request. + + + + + $curlopts + \RequestCore::curlopts + null + + Custom CURLOPT settings. + + + + + $debug_mode + \RequestCore::debug_mode + false + + The state of debug mode. + + + + + $request_class + \RequestCore::request_class + 'RequestCore' + + The default class to use for HTTP Requests (defaults to <RequestCore>). + + + + + $response_class + \RequestCore::response_class + 'ResponseCore' + + The default class to use for HTTP Responses (defaults to <ResponseCore>). + + + + + $useragent + \RequestCore::useragent + 'RequestCore/1.4.3' + + Default useragent string to use. + + + + + $read_file + \RequestCore::read_file + null + + File to read from while streaming up. + + + + + $read_stream + \RequestCore::read_stream + null + + The resource to read from while streaming up. + + + + + $read_stream_size + \RequestCore::read_stream_size + null + + The size of the stream to read from. + + + + + $read_stream_read + \RequestCore::read_stream_read + 0 + + The length already read from the stream. + + + + + $write_file + \RequestCore::write_file + null + + File to write to while streaming down. + + + + + $write_stream + \RequestCore::write_stream + null + + The resource to write to while streaming down. + + + + + $seek_position + \RequestCore::seek_position + null + + Stores the intended starting seek position. + + + + + $cacert_location + \RequestCore::cacert_location + false + + The location of the cacert.pem file to use. + + + + + $ssl_verification + \RequestCore::ssl_verification + true + + The state of SSL certificate verification. + + + + + $registered_streaming_read_callback + \RequestCore::registered_streaming_read_callback + null + + The user-defined callback function to call when a stream is read from. + + + + + $registered_streaming_write_callback + \RequestCore::registered_streaming_write_callback + null + + The user-defined callback function to call when a stream is written to. + + + + + __construct + \RequestCore::__construct() + + Constructs a new instance of this class. + + + string + + + string + + + array + + + \RequestCore + + + + + $url + null + string + + + $proxy + null + string + + + $helpers + null + array + + + + __destruct + \RequestCore::__destruct() + + Destructs the instance. Closes opened file handles. + + + \RequestCore + + + + + + set_credentials + \RequestCore::set_credentials() + + Sets the credentials to use for authentication. + + + string + + + string + + + \RequestCore + + + + + $user + + string + + + $pass + + string + + + + add_header + \RequestCore::add_header() + + Adds a custom HTTP header to the cURL request. + + + string + + + mixed + + + \RequestCore + + + + + $key + + string + + + $value + + mixed + + + + remove_header + \RequestCore::remove_header() + + Removes an HTTP header from the cURL request. + + + string + + + \RequestCore + + + + + $key + + string + + + + set_method + \RequestCore::set_method() + + Set the method type for the request. + + + string + + + \RequestCore + + + + + $method + + string + + + + set_useragent + \RequestCore::set_useragent() + + Sets a custom useragent string for the class. + + + string + + + \RequestCore + + + + + $ua + + string + + + + set_body + \RequestCore::set_body() + + Set the body to send in the request. + + + string + + + \RequestCore + + + + + $body + + string + + + + set_request_url + \RequestCore::set_request_url() + + Set the URL to make the request to. + + + string + + + \RequestCore + + + + + $url + + string + + + + set_curlopts + \RequestCore::set_curlopts() + + Set additional CURLOPT settings. These will merge with the default settings, and override if +there is a duplicate. + + + array + + + \RequestCore + + + + + $curlopts + + array + + + + set_read_stream_size + \RequestCore::set_read_stream_size() + + Sets the length in bytes to read from the stream while streaming up. + + + integer + + + \RequestCore + + + + + $size + + integer + + + + set_read_stream + \RequestCore::set_read_stream() + + Sets 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 <php:fstat()> and +<php:ftell()>. + + + resource + + + integer + + + \RequestCore + + + + + $resource + + resource + + + $size + null + integer + + + + set_read_file + \RequestCore::set_read_file() + + Sets the file to read from while streaming up. + + + string + + + \RequestCore + + + + + $location + + string + + + + set_write_stream + \RequestCore::set_write_stream() + + Sets the resource to write to while streaming down. + + + resource + + + \RequestCore + + + + + $resource + + resource + + + + set_write_file + \RequestCore::set_write_file() + + Sets the file to write to while streaming down. + + + string + + + \RequestCore + + + + + $location + + string + + + + set_proxy + \RequestCore::set_proxy() + + Set the proxy to use for making requests. + + + string + + + \RequestCore + + + + + $proxy + + string + + + + set_seek_position + \RequestCore::set_seek_position() + + Set the intended starting seek position. + + + integer + + + \RequestCore + + + + + $position + + integer + + + + register_streaming_read_callback + \RequestCore::register_streaming_read_callback() + + Register a callback function to execute whenever a data stream is read from using +<CFRequest::streaming_read_callback()>. + The user-defined callback function should accept three arguments: + +<ul> + <li><code>$curl_handle</code> - <code>resource</code> - Required - The cURL handle resource that represents the in-progress transfer.</li> + <li><code>$file_handle</code> - <code>resource</code> - Required - The file handle resource that represents the file on the local file system.</li> + <li><code>$length</code> - <code>integer</code> - Required - The length in kilobytes of the data chunk that was transferred.</li> +</ul> + + string + array + \function + + + \RequestCore + + + + + $callback + + string|array|\function + + + + register_streaming_write_callback + \RequestCore::register_streaming_write_callback() + + Register a callback function to execute whenever a data stream is written to using +<CFRequest::streaming_write_callback()>. + The user-defined callback function should accept two arguments: + +<ul> + <li><code>$curl_handle</code> - <code>resource</code> - Required - The cURL handle resource that represents the in-progress transfer.</li> + <li><code>$length</code> - <code>integer</code> - Required - The length in kilobytes of the data chunk that was transferred.</li> +</ul> + + string + array + \function + + + \RequestCore + + + + + $callback + + string|array|\function + + + + streaming_read_callback + \RequestCore::streaming_read_callback() + + A callback function that is invoked by cURL for streaming up. + + + resource + + + resource + + + integer + + + \binary + + + + $curl_handle + + resource + + + $file_handle + + resource + + + $length + + integer + + + + streaming_write_callback + \RequestCore::streaming_write_callback() + + A callback function that is invoked by cURL for streaming down. + + + resource + + + \binary + + + integer + + + + $curl_handle + + resource + + + $data + + \binary + + + + prep_request + \RequestCore::prep_request() + + Prepares and adds the details of the cURL request. This can be passed along to a <php:curl_multi_exec()> +function. + + + resource + + + + + process_response + \RequestCore::process_response() + + 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. + + + resource + + + string + + + \ResponseCore + + + + $curl_handle + null + resource + + + $response + null + string + + + + send_request + \RequestCore::send_request() + + Sends the request, calling necessary utility functions to update built-in properties. + + + boolean + + + string + + + + $parse + false + boolean + + + + send_multi_request + \RequestCore::send_multi_request() + + Sends the request using <php:curl_multi_exec()>, enabling parallel requests. Uses the "rolling" method. + + + array + + + array + + + array + + + + $handles + + array + + + $opt + null + array + + + + get_response_header + \RequestCore::get_response_header() + + Get the HTTP response headers from the request. + + + string + + + string + array + + + + $header + null + string + + + + get_response_body + \RequestCore::get_response_body() + + Get the HTTP response body from the request. + + + string + + + + + get_response_code + \RequestCore::get_response_code() + + Get the HTTP response code from the request. + + + string + + + + + + + ResponseCore + \ResponseCore + + Container for all response-related methods. + + + + + $header + \ResponseCore::header + + + Stores the HTTP header information. + + + + + $body + \ResponseCore::body + + + Stores the SimpleXML response. + + + + + $status + \ResponseCore::status + + + Stores the HTTP response code. + + + + + __construct + \ResponseCore::__construct() + + Constructs a new instance of this class. + + + array + + + string + + + integer + + + object + + + + $header + + array + + + $body + + string + + + $status + null + integer + + + + isOK + \ResponseCore::isOK() + + Did we receive the status code we expected? + + + integer + array + + + boolean + + + + $codes + array(200, 201, 204, 206) + integer|array + + + + + \Exception + RequestCore_Exception + \RequestCore_Exception + + Default RequestCore Exception. + + + + + + No summary was found for this file + Argument $url is missing from the Docblock of __construct + Argument $user is missing from the Docblock of set_credentials + Argument $key is missing from the Docblock of add_header + Argument $key is missing from the Docblock of remove_header + Argument $method is missing from the Docblock of set_method + Argument $ua is missing from the Docblock of set_useragent + Argument $body is missing from the Docblock of set_body + Argument $url is missing from the Docblock of set_request_url + Argument $curlopts is missing from the Docblock of set_curlopts + Argument $size is missing from the Docblock of set_read_stream_size + Argument $resource is missing from the Docblock of set_read_stream + Argument $location is missing from the Docblock of set_read_file + Argument $resource is missing from the Docblock of set_write_stream + Argument $location is missing from the Docblock of set_write_file + Argument $proxy is missing from the Docblock of set_proxy + Argument $position is missing from the Docblock of set_seek_position + Argument $callback is missing from the Docblock of register_streaming_read_callback + Argument $callback is missing from the Docblock of register_streaming_write_callback + Argument $curl_handle is missing from the Docblock of streaming_read_callback + Argument $curl_handle is missing from the Docblock of streaming_write_callback + Argument $curl_handle is missing from the Docblock of process_response + Argument $parse is missing from the Docblock of send_request + Argument $handles is missing from the Docblock of send_multi_request + Argument $header is missing from the Docblock of get_response_header + Argument $header is missing from the Docblock of __construct + Argument $codes is missing from the Docblock of isOK + + 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 + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + \Exception + Aliyun_Log_Exception + \Aliyun_Log_Exception + + The Exception of the sls request & response. + + + + + + $requestId + \Aliyun_Log_Exception::requestId + + + + + + string + + + + + __construct + \Aliyun_Log_Exception::__construct() + + Aliyun_Log_Exception constructor + + + string + + + string + + + string + + + + $code + + string + + + $message + + string + + + $requestId + '' + string + + + + __toString + \Aliyun_Log_Exception::__toString() + + The __toString() method allows a class to decide how it will react when +it is treated like a string. + + + string + + + + + getErrorCode + \Aliyun_Log_Exception::getErrorCode() + + Get Aliyun_Log_Exception error code. + + + string + + + + + getErrorMessage + \Aliyun_Log_Exception::getErrorMessage() + + Get Aliyun_Log_Exception error message. + + + string + + + + + getRequestId + \Aliyun_Log_Exception::getRequestId() + + Get Sls sever requestid, '' is set if client or Http error. + + + string + + + + + + Argument $code is missing from the Docblock of __construct + No summary for property $requestId + + eJytVU2P2jAQvSPxH0YrVD5E4Z7ttl2hVVupvZQ9IkUmGYhVY6f2BHa14r93nC+yJFBpW5+szMzzmzfPzodPaZL2e/PJpN+DCSxM+mzlNiEYLcZwr+RarAUslMliju3SjKTe5pn3SkGe6cCiQ7vH2H+f93sntMcE4eEpwpSk0WA2QPzBKV/xO0NH8M7XpkY7nPmCvOizyCgx1ueFMe5L0EgJ5zyh50yHSw6dcPGJUMfudNIL1/AqWPjFoHvBiGQL9vm3ebFJrdwLQhiUnL7Ft0WgDdJ5esTsyWYRGVslnk5NhRW78lwYRCbGOtZYy+9LQGu5Z58xu1S+Q+fEthMhRhJSYQxSb4zdiZwZ73LBseJ6EbluvQvbQ1TzknE1xWpuUxgOQTpwyNENREqipqKb2bnS2VrJCDaZjnJ+YVhrN8q1mdY9Thuc7obDMZQjzWGE5SOC4FV5WTe+PeUNKJHu/UcPDHeF+O1oWecTym07p2bis85dcrxkFu/9MCSzzDUejWGHbOsYhFLm4EBA4WgyPLxIMsfEHEASHKS/WCgi3iaoazwOsczEEeI5K/kLGaMY4KxtPIuUWX3B8a05NFg2hC4xbrpsH8BKv6y0T3vws16wukFT8mkj+KNQNjgTvcj4WQkatPRe6eNK3/xN6C/svO53oX2l3ibQFqluslOiRt//yLaU5j8RLoW/xvm166/SZr58zfdoq+dAxt23n/v4SpSevQJvbqV2yLU+Ou7l0f+K/gDgNfOI + + + + + + + + + + ProtobufEnum + \ProtobufEnum + + + + + + + toString + \ProtobufEnum::toString() + + + + + + $value + + + + + + + + ProtobufMessage + \ProtobufMessage + + + + + + + __construct + \ProtobufMessage::__construct() + + + + + + $fp + NULL + + + + $limit + PHP_INT_MAX + + + + + + + Protobuf + \Protobuf + + Class to aid in the parsing and creating of Protocol Buffer Messages +This class should be included by the developer before they use a +generated protobuf class. + + + + + + TYPE_DOUBLE + \Protobuf::TYPE_DOUBLE + 1 + + + + + + + TYPE_FLOAT + \Protobuf::TYPE_FLOAT + 2 + + + + + + + TYPE_INT64 + \Protobuf::TYPE_INT64 + 3 + + + + + + + TYPE_UINT64 + \Protobuf::TYPE_UINT64 + 4 + + + + + + + TYPE_INT32 + \Protobuf::TYPE_INT32 + 5 + + + + + + + TYPE_FIXED64 + \Protobuf::TYPE_FIXED64 + 6 + + + + + + + TYPE_FIXED32 + \Protobuf::TYPE_FIXED32 + 7 + + + + + + + TYPE_BOOL + \Protobuf::TYPE_BOOL + 8 + + + + + + + TYPE_STRING + \Protobuf::TYPE_STRING + 9 + + + + + + + TYPE_GROUP + \Protobuf::TYPE_GROUP + 10 + + + + + + + TYPE_MESSAGE + \Protobuf::TYPE_MESSAGE + 11 + + + + + + + TYPE_BYTES + \Protobuf::TYPE_BYTES + 12 + + + + + + + TYPE_UINT32 + \Protobuf::TYPE_UINT32 + 13 + + + + + + + TYPE_ENUM + \Protobuf::TYPE_ENUM + 14 + + + + + + + TYPE_SFIXED32 + \Protobuf::TYPE_SFIXED32 + 15 + + + + + + + TYPE_SFIXED64 + \Protobuf::TYPE_SFIXED64 + 16 + + + + + + + TYPE_SINT32 + \Protobuf::TYPE_SINT32 + 17 + + + + + + + TYPE_SINT64 + \Protobuf::TYPE_SINT64 + 18 + + + + + + + $print_depth + \Protobuf::print_depth + 0 + + Used to aid in pretty printing of Protobuf objects + + + + + $indent_char + \Protobuf::indent_char + "\t" + + + + + + + $print_limit + \Protobuf::print_limit + 50 + + + + + + + get_wiretype + \Protobuf::get_wiretype() + + Returns a string representing this wiretype + + + + $wire_type + + + + + + size_varint + \Protobuf::size_varint() + + Returns how big (in bytes) this number would be as a varint + + + + $i + + + + + + read_varint + \Protobuf::read_varint() + + Tries to read a varint from $fp. + + + + + $fp + + + + + $limit + null + + + + + read_double + \Protobuf::read_double() + + + + + + $fp + + + + + + read_float + \Protobuf::read_float() + + + + + + $fp + + + + + + read_uint64 + \Protobuf::read_uint64() + + + + + + $fp + + + + + + read_int64 + \Protobuf::read_int64() + + + + + + $fp + + + + + + read_uint32 + \Protobuf::read_uint32() + + + + + + $fp + + + + + + read_int32 + \Protobuf::read_int32() + + + + + + $fp + + + + + + read_zint32 + \Protobuf::read_zint32() + + + + + + $fp + + + + + + read_zint64 + \Protobuf::read_zint64() + + + + + + $fp + + + + + + write_varint + \Protobuf::write_varint() + + Writes a varint to $fp +returns the number of bytes written + + + + + \The + + + + $fp + + + + + $i + + + + + + write_double + \Protobuf::write_double() + + + + + + $fp + + + + + $d + + + + + + write_float + \Protobuf::write_float() + + + + + + $fp + + + + + $f + + + + + + write_uint64 + \Protobuf::write_uint64() + + + + + + $fp + + + + + $i + + + + + + write_int64 + \Protobuf::write_int64() + + + + + + $fp + + + + + $i + + + + + + write_uint32 + \Protobuf::write_uint32() + + + + + + $fp + + + + + $i + + + + + + write_int32 + \Protobuf::write_int32() + + + + + + $fp + + + + + $i + + + + + + write_zint32 + \Protobuf::write_zint32() + + + + + + $fp + + + + + $i + + + + + + write_zint64 + \Protobuf::write_zint64() + + + + + + $fp + + + + + $i + + + + + + skip_varint + \Protobuf::skip_varint() + + Seek past a varint + + + + $fp + + + + + + skip_field + \Protobuf::skip_field() + + Seek past the current field + + + + $fp + + + + + $wire_type + + + + + + read_field + \Protobuf::read_field() + + Read a unknown field from the stream and return its raw bytes + + + + $fp + + + + + $wire_type + + + + + $limit + null + + + + + toString + \Protobuf::toString() + + + + + + $key + + + + + $value + + + + + + + Change to a binary search + + + No summary was found for this file + No summary for class "" + No summary for class "" + Argument $value is missing from the Docblock of toString + No summary for method "" + Argument $fp is missing from the Docblock of __construct + Argument $limit is missing from the Docblock of __construct + No summary for method "" + Argument $wire_type is missing from the Docblock of get_wiretype + Argument $i is missing from the Docblock of size_varint + Argument $fp is missing from the Docblock of read_varint + Argument $limit is missing from the Docblock of read_varint + Argument $fp is missing from the Docblock of read_double + No summary for method "" + Argument $fp is missing from the Docblock of read_float + No summary for method "" + Argument $fp is missing from the Docblock of read_uint64 + No summary for method "" + Argument $fp is missing from the Docblock of read_int64 + No summary for method "" + Argument $fp is missing from the Docblock of read_uint32 + No summary for method "" + Argument $fp is missing from the Docblock of read_int32 + No summary for method "" + Argument $fp is missing from the Docblock of read_zint32 + No summary for method "" + Argument $fp is missing from the Docblock of read_zint64 + No summary for method "" + Argument $fp is missing from the Docblock of write_varint + Argument $fp is missing from the Docblock of write_double + Argument $d is missing from the Docblock of write_double + No summary for method "" + Argument $fp is missing from the Docblock of write_float + Argument $f is missing from the Docblock of write_float + No summary for method "" + Argument $fp is missing from the Docblock of write_uint64 + Argument $i is missing from the Docblock of write_uint64 + No summary for method "" + Argument $fp is missing from the Docblock of write_int64 + Argument $i is missing from the Docblock of write_int64 + No summary for method "" + Argument $fp is missing from the Docblock of write_uint32 + Argument $i is missing from the Docblock of write_uint32 + No summary for method "" + Argument $fp is missing from the Docblock of write_int32 + Argument $i is missing from the Docblock of write_int32 + No summary for method "" + Argument $fp is missing from the Docblock of write_zint32 + Argument $i is missing from the Docblock of write_zint32 + No summary for method "" + Argument $fp is missing from the Docblock of write_zint64 + Argument $i is missing from the Docblock of write_zint64 + No summary for method "" + Argument $fp is missing from the Docblock of skip_varint + Argument $fp is missing from the Docblock of skip_field + Argument $wire_type is missing from the Docblock of skip_field + Argument $fp is missing from the Docblock of read_field + Argument $wire_type is missing from the Docblock of read_field + Argument $limit is missing from the Docblock of read_field + Argument $key is missing from the Docblock of toString + Argument $value is missing from the Docblock of toString + No summary for method "" + No summary for property $indent_char + No summary for property $print_limit + + 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 + + + + + + + + + + Aliyun_Log_Util + \Aliyun_Log_Util + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + getLocalIp + \Aliyun_Log_Util::getLocalIp() + + Get the local machine ip address. + + + string + + + + + isIp + \Aliyun_Log_Util::isIp() + + If $gonten is raw IP address, return true. + + + boolean + + + + $gonten + + + + + + calMD5 + \Aliyun_Log_Util::calMD5() + + Calculate string $value MD5. + + + string + + + + $value + + + + + + hmacSHA1 + \Aliyun_Log_Util::hmacSHA1() + + Calculate string $content hmacSHA1 with secret key $key. + + + string + + + + $content + + + + + $key + + + + + + toBytes + \Aliyun_Log_Util::toBytes() + + Change $logGroup to bytes. + + + string + + + + $logGroup + + + + + + urlEncodeValue + \Aliyun_Log_Util::urlEncodeValue() + + Get url encode. + + + string + + + + $value + + + + + + urlEncode + \Aliyun_Log_Util::urlEncode() + + Get url encode. + + + string + + + + $params + + + + + + canonicalizedSLSHeaders + \Aliyun_Log_Util::canonicalizedSLSHeaders() + + Get canonicalizedSLSHeaders string as defined. + + + string + + + + $header + + + + + + canonicalizedResource + \Aliyun_Log_Util::canonicalizedResource() + + Get canonicalizedResource string as defined. + + + string + + + + $resource + + + + + $params + + + + + + getRequestAuthorization + \Aliyun_Log_Util::getRequestAuthorization() + + Get request authorization string as defined. + + + string + + + + $method + + + + + $resource + + + + + $key + + + + + $params + + + + + $headers + + + + + + + No summary was found for this file + Argument $gonten is missing from the Docblock of isIp + Argument $value is missing from the Docblock of calMD5 + Argument $content is missing from the Docblock of hmacSHA1 + Argument $key is missing from the Docblock of hmacSHA1 + Argument $logGroup is missing from the Docblock of toBytes + Argument $value is missing from the Docblock of urlEncodeValue + Argument $params is missing from the Docblock of urlEncode + Argument $header is missing from the Docblock of canonicalizedSLSHeaders + Argument $resource is missing from the Docblock of canonicalizedResource + Argument $params is missing from the Docblock of canonicalizedResource + Argument $method is missing from the Docblock of getRequestAuthorization + Argument $resource is missing from the Docblock of getRequestAuthorization + Argument $key is missing from the Docblock of getRequestAuthorization + Argument $params is missing from the Docblock of getRequestAuthorization + Argument $headers is missing from the Docblock of getRequestAuthorization + + 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 + + + + + + + + + + Log_Content + \Log_Content + + + + + + + $_unknown + \Log_Content::_unknown + + + + + + + + $key_ + \Log_Content::key_ + null + + + + + + + $value_ + \Log_Content::value_ + null + + + + + + + __construct + \Log_Content::__construct() + + + + + + $in + NULL + + + + $limit + PHP_INT_MAX + + + + + read + \Log_Content::read() + + + + + + $fp + + + + + $limit + PHP_INT_MAX + + + + + write + \Log_Content::write() + + + + + + $fp + + + + + + size + \Log_Content::size() + + + + + + + validateRequired + \Log_Content::validateRequired() + + + + + + + __toString + \Log_Content::__toString() + + + + + + + clearKey + \Log_Content::clearKey() + + + + + + + hasKey + \Log_Content::hasKey() + + + + + + + getKey + \Log_Content::getKey() + + + + + + + setKey + \Log_Content::setKey() + + + + + + $value + + + + + + clearValue + \Log_Content::clearValue() + + + + + + + hasValue + \Log_Content::hasValue() + + + + + + + getValue + \Log_Content::getValue() + + + + + + + setValue + \Log_Content::setValue() + + + + + + $value + + + + + + + + Log + \Log + + + + + + + $_unknown + \Log::_unknown + + + + + + + + $time_ + \Log::time_ + null + + + + + + + $contents_ + \Log::contents_ + null + + + + + + + __construct + \Log::__construct() + + + + + + $in + NULL + + + + $limit + PHP_INT_MAX + + + + + read + \Log::read() + + + + + + $fp + + + + + $limit + PHP_INT_MAX + + + + + write + \Log::write() + + + + + + $fp + + + + + + size + \Log::size() + + + + + + + validateRequired + \Log::validateRequired() + + + + + + + __toString + \Log::__toString() + + + + + + + clearTime + \Log::clearTime() + + + + + + + hasTime + \Log::hasTime() + + + + + + + getTime + \Log::getTime() + + + + + + + setTime + \Log::setTime() + + + + + + $value + + + + + + clearContents + \Log::clearContents() + + + + + + + getContentsCount + \Log::getContentsCount() + + + + + + + getContents + \Log::getContents() + + + + + + $index + + + + + + getContentsArray + \Log::getContentsArray() + + + + + + + setContents + \Log::setContents() + + + + + + $index + + + + + $value + + + + + + addContents + \Log::addContents() + + + + + + $value + + + + + + addAllContents + \Log::addAllContents() + + + + + + $values + + array + + + + + + LogGroup + \LogGroup + + + + + + + $_unknown + \LogGroup::_unknown + + + + + + + + $logs_ + \LogGroup::logs_ + null + + + + + + + $reserved_ + \LogGroup::reserved_ + null + + + + + + + $topic_ + \LogGroup::topic_ + null + + + + + + + $source_ + \LogGroup::source_ + null + + + + + + + __construct + \LogGroup::__construct() + + + + + + $in + NULL + + + + $limit + PHP_INT_MAX + + + + + read + \LogGroup::read() + + + + + + $fp + + + + + $limit + PHP_INT_MAX + + + + + write + \LogGroup::write() + + + + + + $fp + + + + + + size + \LogGroup::size() + + + + + + + validateRequired + \LogGroup::validateRequired() + + + + + + + __toString + \LogGroup::__toString() + + + + + + + clearLogs + \LogGroup::clearLogs() + + + + + + + getLogsCount + \LogGroup::getLogsCount() + + + + + + + getLogs + \LogGroup::getLogs() + + + + + + $index + + + + + + getLogsArray + \LogGroup::getLogsArray() + + + + + + + setLogs + \LogGroup::setLogs() + + + + + + $index + + + + + $value + + + + + + addLogs + \LogGroup::addLogs() + + + + + + $value + + + + + + addAllLogs + \LogGroup::addAllLogs() + + + + + + $values + + array + + + + clearReserved + \LogGroup::clearReserved() + + + + + + + hasReserved + \LogGroup::hasReserved() + + + + + + + getReserved + \LogGroup::getReserved() + + + + + + + setReserved + \LogGroup::setReserved() + + + + + + $value + + + + + + clearTopic + \LogGroup::clearTopic() + + + + + + + hasTopic + \LogGroup::hasTopic() + + + + + + + getTopic + \LogGroup::getTopic() + + + + + + + setTopic + \LogGroup::setTopic() + + + + + + $value + + + + + + clearSource + \LogGroup::clearSource() + + + + + + + hasSource + \LogGroup::hasSource() + + + + + + + getSource + \LogGroup::getSource() + + + + + + + setSource + \LogGroup::setSource() + + + + + + $value + + + + + + + No summary was found for this file + No summary for class "" + No summary for class "" + No summary for class "" + Argument $in is missing from the Docblock of __construct + Argument $limit is missing from the Docblock of __construct + No summary for method "" + Argument $fp is missing from the Docblock of read + Argument $limit is missing from the Docblock of read + No summary for method "" + Argument $fp is missing from the Docblock of write + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setKey + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setValue + No summary for method "" + No summary for property $_unknown + No summary for property $key_ + No summary for property $value_ + Argument $in is missing from the Docblock of __construct + Argument $limit is missing from the Docblock of __construct + No summary for method "" + Argument $fp is missing from the Docblock of read + Argument $limit is missing from the Docblock of read + No summary for method "" + Argument $fp is missing from the Docblock of write + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setTime + No summary for method "" + No summary for method "" + No summary for method "" + Argument $index is missing from the Docblock of getContents + No summary for method "" + No summary for method "" + Argument $index is missing from the Docblock of setContents + Argument $value is missing from the Docblock of setContents + No summary for method "" + Argument $value is missing from the Docblock of addContents + No summary for method "" + Argument $values is missing from the Docblock of addAllContents + No summary for method "" + No summary for property $_unknown + No summary for property $time_ + No summary for property $contents_ + Argument $in is missing from the Docblock of __construct + Argument $limit is missing from the Docblock of __construct + No summary for method "" + Argument $fp is missing from the Docblock of read + Argument $limit is missing from the Docblock of read + No summary for method "" + Argument $fp is missing from the Docblock of write + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $index is missing from the Docblock of getLogs + No summary for method "" + No summary for method "" + Argument $index is missing from the Docblock of setLogs + Argument $value is missing from the Docblock of setLogs + No summary for method "" + Argument $value is missing from the Docblock of addLogs + No summary for method "" + Argument $values is missing from the Docblock of addAllLogs + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setReserved + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setTopic + No summary for method "" + No summary for method "" + No summary for method "" + No summary for method "" + Argument $value is missing from the Docblock of setSource + No summary for method "" + No summary for property $_unknown + No summary for property $logs_ + No summary for property $reserved_ + No summary for property $topic_ + No summary for property $source_ + + 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 + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + API_VERSION + \API_VERSION + '0.4.0' + + + + + + + + USER_AGENT + \USER_AGENT + 'sls-php-sdk-v-0.4.1' + + + + + + + + + Aliyun_Log_Client + \Aliyun_Log_Client + + Aliyun_Log_Client class is the main class in the SDK. It can be used to +communicate with SLS server to put/get data. + + + + + + $accessKey + \Aliyun_Log_Client::accessKey + + + + + + string + + + + + $accessKeyId + \Aliyun_Log_Client::accessKeyId + + + + + + string + + + + + $endpoint + \Aliyun_Log_Client::endpoint + + + + + + string + + + + + $isRowIp + \Aliyun_Log_Client::isRowIp + + + + + + string + + + + + $port + \Aliyun_Log_Client::port + + + + + + integer + + + + + $slsHost + \Aliyun_Log_Client::slsHost + + + + + + string + + + + + $source + \Aliyun_Log_Client::source + + + + + + string + + + + + __construct + \Aliyun_Log_Client::__construct() + + Aliyun_Log_Client constructor + + + string + + + string + + + string + + + + $endpoint + + string + + + $accessKeyId + + string + + + $accessKey + + string + + + + setEndpoint + \Aliyun_Log_Client::setEndpoint() + + + + + + $endpoint + + + + + + getGMT + \Aliyun_Log_Client::getGMT() + + GMT format time string. + + + string + + + + + loadJson + \Aliyun_Log_Client::loadJson() + + Decodes a JSON string. + Unsuccessful decode will cause an Aliyun_Log_Exception. + + string + + + \Aliyun_Log_Exception + + + + $json + + + + + $requestId + + + + + + getHttpResponse + \Aliyun_Log_Client::getHttpResponse() + + + + + array + + + + $method + + + + + $url + + + + + $body + + + + + $headers + + + + + + sendRequest + \Aliyun_Log_Client::sendRequest() + + + + + array + + + \Aliyun_Log_Exception + + + + $method + + + + + $url + + + + + $body + + + + + $headers + + + + + + send + \Aliyun_Log_Client::send() + + + + + array + + + \Aliyun_Log_Exception + + + + $method + + + + + $project + + + + + $body + + + + + $resource + + + + + $params + + + + + $headers + + + + + + putLogs + \Aliyun_Log_Client::putLogs() + + Put logs to SLS. + Unsuccessful opertaion will cause an Aliyun_Log_Exception. + + \Aliyun_Log_Models_PutLogsRequest + + + \Aliyun_Log_Exception + + + \Aliyun_Log_Models_PutLogsResponse + + + + $request + + \Aliyun_Log_Models_PutLogsRequest + + + + listLogstores + \Aliyun_Log_Client::listLogstores() + + List all logstores of requested project. + Unsuccessful opertaion will cause an Aliyun_Log_Exception. + + \Aliyun_Log_Models_ListLogstoresRequest + + + \Aliyun_Log_Exception + + + \Aliyun_Log_Models_ListLogstoresResponse + + + + $request + + \Aliyun_Log_Models_ListLogstoresRequest + + + + listTopics + \Aliyun_Log_Client::listTopics() + + List all topics in a logstore. + Unsuccessful opertaion will cause an Aliyun_Log_Exception. + + \Aliyun_Log_Models_ListTopicsRequest + + + \Aliyun_Log_Exception + + + \Aliyun_Log_Models_ListTopicsResponse + + + + $request + + \Aliyun_Log_Models_ListTopicsRequest + + + + getHistograms + \Aliyun_Log_Client::getHistograms() + + Get histograms of requested query from SLS. + Unsuccessful opertaion will cause an Aliyun_Log_Exception. + + \Aliyun_Log_Models_GetHistogramsRequest + + + \Aliyun_Log_Exception + + + \Aliyun_Log_Models_GetHistogramsResponse + + + + $request + + \Aliyun_Log_Models_GetHistogramsRequest + + + + getLogs + \Aliyun_Log_Client::getLogs() + + Get logs from SLS. + Unsuccessful opertaion will cause an Aliyun_Log_Exception. + + \Aliyun_Log_Models_GetLogsRequest + + + \Aliyun_Log_Exception + + + \Aliyun_Log_Models_GetLogsResponse + + + + $request + + \Aliyun_Log_Models_GetLogsRequest + + + + + Argument $endpoint is missing from the Docblock of __construct + Argument $endpoint is missing from the Docblock of setEndpoint + No summary for method "" + Argument $json is missing from the Docblock of loadJson + Argument $requestId is missing from the Docblock of loadJson + Argument $method is missing from the Docblock of getHttpResponse + Argument $url is missing from the Docblock of getHttpResponse + Argument $body is missing from the Docblock of getHttpResponse + Argument $headers is missing from the Docblock of getHttpResponse + No summary for method "" + Argument $method is missing from the Docblock of sendRequest + Argument $url is missing from the Docblock of sendRequest + Argument $body is missing from the Docblock of sendRequest + Argument $headers is missing from the Docblock of sendRequest + No summary for method "" + Argument $method is missing from the Docblock of send + Argument $project is missing from the Docblock of send + Argument $body is missing from the Docblock of send + Argument $resource is missing from the Docblock of send + Argument $params is missing from the Docblock of send + Argument $headers is missing from the Docblock of send + No summary for method "" + Argument $request is missing from the Docblock of putLogs + Argument $request is missing from the Docblock of listLogstores + Argument $request is missing from the Docblock of listTopics + Argument $request is missing from the Docblock of getHistograms + Argument $request is missing from the Docblock of getLogs + + eJztW3tv20YS/9+Av8NGMEoptSmnyRU9+5zUcVxHqZzkLKfAIQiENbmS2FBcllw6dg757jezD3L5lJSHe3eoUFQSd947M/vbkfOPJ/Ei3t4a3r+/vUXukxMe3ybBfCFI/2RAjsPgil5RchLyzIe1ZZyJIJpLyuMwJJIyJQlLWXLNfHw+3N7yqWBTn81oFoqpCJbsI4/YNGUgkzjHaUCHkwWN5gsaOGRwuL21vZWwP7IgYVMeeQyk0TCmYgHUfpBEdMng03T6y2h8Op2SAXGJM3Rd/G8SptPjTPCQU98FN5S4jYUhA0uFxxPmeiFN0y+QlYbAnXDBv0CG5Pd4eJXNZixJ3SDyCmnbW8Gsfw+iG0TM7zvHr0fT304vJqNXL53BADYAXmqxvLZLnH33kbvvoIyShDeT04vp8dnpy8uaAGsJ+MG1PTBjL/Xf713vobQHjrLIJA+ky20WTXFbTsKARYLIcJIgJWLByJIGkXkSySeTZ7+6ZARkNCJXjGQp84ngUpbHl8ssCjzIJfIhgIBNxhMi0ywBEgKJOJxDRkGuURcZJNPPNBMLnhAwFRLwWuejUlk37t9oO/qr7McXiLimwC8SSHNCJQuhnsfS9Fd2a4iG6gPuE/ME2LyTkxyqpc3kjvw1JI/8w1X2YohY5Mc8iES7REOxUtzJgnnvSTCTW7XgqcDPCf9AgthtFx+kF/zDKG6XDqrZHHbxuRAx7Gjkk5gnwiWXoMWnsmuQaxpmDPPmp/0OVci30gvIBdCCaYMudEgDwudAsVIgRiPkHg0hob0FFArEg1Dfhy6YdonnWeKx1vxoqB0egcbMEzwxVIU9MU3o0li0U910Yr0wKeTmYbPZJTMoD3ZDl3EIXxawBQfDobfYw4b8ccEzFxuYyk8vdaEI21Q2JK+ttT3FWwWtI6Ya3uwqDDwyA2NFwCNopHnQ+nlQdkvG2t8G2AKMqh2xCNK9x3BMnWpG6My5EOi9ZDgkeIgZQpUuNQGWLnJUrd822hJlnU7lDhBZWfJGBOHBAfTAMebiKO4PNN8nk3rBNTbPPDiWZ0VwyiGIeQpKIID4wfJ+l/QgTXpkYJkGvaAvGe4dHZEZDVMGsjBG0Mg9mrBZFu7iWsGRq/j+iDw8rDzPAw36syswoaxf8tnqP61n9hpGrzR5hWn7DdZ1mOQcOF8jjioxsAOCnj6RKdoeue/Jg5LSz/XrE2FgYJcpP+3X01cfCU35G6TwvFxn9exXlYY1Yp1dFSLLmUKYK6PtggLdbQa2teV6qbfks/NLbJdLKgiiWC0jb/Gk6GgJE1kSaYLWIyCvRChakN0v1Z4WMV8iekag/GyX+OSc/Is8PwgOUkdhQ7TJWWX3M+Zxn6WEkheTVy+N2YW5b6I0k70GUguwHhIDxAI471FAYASwmLVNpzcei9Hqtf0mP4sFoIS0Ucrq4CCYf5HyqL/zO/wfclDD85FfiheWzT0iaQblfNRGvXwzHttpgpSQHPg21U73idYBJwarF6XigKpEURUl0kUSsQ+NXuL+wbn7lPoXLI3hSGIAoHvwVarXSXWgtPdsF0tGaEck1ao9N1tBk4S241Q7AxF+Gev6O0sGwBkPxyyBdrNzxf1beFsw6sMNpHxIaGMhluj+hfp2ApcnjCewl3wAVxmgJFzSwghNyc57PPIekx2F8yqxNRrgfPT9qWJDAcC0m7Mc1i2Sh/dUeYL0+lM7KWR7QueAtfrFTaeWBVoKpEHv9avJZa/VWJSIcUPV8r1NceRPTQz7FRq1HRBauY9ty2/fWT2/kAybOjU0U5XgHfwtfCbcm3Mq35sS2JB8VhJv1k5qmCfydYZukuMiubW/4isMUgkIjS8nEN+cGz6wG2xasB9HpMyYB1EdPJXKK/K0xa7K8Qv3YVlNRasBzWRQtXZlewIuacs5HANQArBvu+rZdCr4RB2WcEC1IK56XkuwG6RqyKNtJ2+dmz2cGmiawHfegalPOtcPiOPYqafjemTiZ44H5cOLyhFRb+L2fmER/7C/X4uWnXak37J9WlnLqvKovFgHTlXFaKEMWt/4+dZhScITWb7OuwH57jvSTLBUGwc0NXfWTYAGhbstyWtvRc2C1g1od9w4r2U2umDrPALog/MBvVPyFA1SgthOHugsQvtzcYd1ae12VPQ4TcyfEWAEALr1nGK8nJbUwVdPE6JPMxqEzHfVeER2cXhYSmNXW9uOHCo2f/pT+q7VcAGB/A4IpGhu4I680uIaTgPSlkYscwR5ahmS98e3zgmPBBzie2MWzcXCeacuXiGLGk/iFubzZ3+TnLUbClyuYW0TUZe3MZOyHBrHIY4wISTDmz05173KZs7KvtDt3H6rCT3VT9HQhH5Ig4+s183QYLMjBx2jGYm4wJmBmhIRg1jkRQFwGaGZ4IBiwb0wvHVryVZkWkWjMpHGwTV8h8CoqBej6sMOrjSYRxRSlanMUgYvltTbSxf0gdPMindHSdkzeeiWL5a9Zr5nkNGST1OfyVtbGeFYjLltLWMaXeLHckIdfKSmD+dFYtVEZTrUUCVlcFkYXRKvvMYBYH02dVAY3Gt2CKH8UWFWbWQhLaqiYWRyYVOeYGuuhQFWTyNz9VIC6id2aWbQJB980oPLyt0fV21nGmYVFf5KQrQJMkDWjAhzULk+fGttvq8zAXfeeYq/asBWFdfs0jWdxywRFFNmg5t60crVyNUiPodNgDdQPgbdxpv8boczbr2WV76UwQQ6JX9R2eigyM+YDhvUCVc9Wioj3lhR99f2pXaeeDyLNJQvrjHAGQgG6Yiglzwmj/b//uPGV/5RBJfTwAdZE2i9eOWHjR2hWIeEsn8TBvTMT8mS3gTLbAnXimUgZLEeSJ3wIGKpW55aWkUJAs8SnsX69j02X8v3NcFjiFnlpnYpH4J/OGiMMsiiJy0EVQxulMo7rqZqYS2ZkY+tS7QT9bRfLXxyL+eoVn0hyJ6Ht5poNBTyKqRqq49aU6B5gJEz4gRD72z96oUrxe6UhZl1FchA/vhrJKk4ymeDOsrw1DmNNtv0+vhO62osuw1vw+ClCQ9burQTU62mrsWml07hbxlqVFPzoUb7m7Sh3zTSKQcL4EbhaGFfB+Kt5AQIkK1MRbv1dwQJ8BpOb8Gf3gpm2FXB2TKySN97G1crCrA1dCPUHPRK0sfkIbTPB/s/PNJv8heLh+T86ddsT4gVO5sTKqy0JXOCN0+rzAHYvdoGWXP/u+Cgx5cx/uoqcvDqs1mIsO2wvqvzj4bcBH2X/NjRZlPBk1rvGpvnHW3Upql2Uo03qmJf68cdUi2SqlCD0BDYDI3l6bAHCCx3xKK3J1k5UJGDKwvfAIEad254e2saYFdysvnYt8ZGKyHTGD2AawfJnSV8ZnAK84lBdXcKpdAos/XNgKpE0QqrCqu/EFdVDFoLXYU2TwPG6nSy/DNBd/13tg4roZ0iob95Ia1dGGen5brA34e+Vlk07lqDVWvXiMSC8i+uaF4vd18ZEiC2l4VavpuaMKasXRCKoaUamh37WqWgR9g20H6PqKFI7ypU1tLeOgIpndrvNUZAl5Ix/lHTOjrwslJXodkbfASr8qNa5mX1mvE/f+jmTvT+GxtLOfU/o6ucAc4FiwWfy/0snbrwntySWcKXdz/HALue52Y1dpkSxbdvNBWD1uo1c5unod10OvkNO05lbNDRcbCiGzqOEtCl5BfMmnV0YHrVVWj2bjfW9KHJgRWy/ykzfx3xskbqGoyAFS0zr7y/2uadtc3GQv7MzinHvH9ag2wd9Oq1O2mKG0x6dXo2N8KVk96/WuD/ZQuEEnLuFLrWNLyazeS0bw0dXJLWteQivpKeBP95Q9rgzoVaQCFPAHEnGXOwI8u/Mv7rDLnLM6Q66mo9PT7hPz/5D5N73FQ= + + + + + + + + + \Aliyun_Log_Models_Request + Aliyun_Log_Models_GetLogsRequest + \Aliyun_Log_Models_GetLogsRequest + + The request used to get logs by a query from sls. + + + + + + + $logstore + \Aliyun_Log_Models_GetLogsRequest::logstore + + + + + + string + + + + + $topic + \Aliyun_Log_Models_GetLogsRequest::topic + + + + + + string + + + + + $from + \Aliyun_Log_Models_GetLogsRequest::from + + + + + + integer + + + + + $to + \Aliyun_Log_Models_GetLogsRequest::to + + + + + + integer + + + + + $query + \Aliyun_Log_Models_GetLogsRequest::query + + + + + + string + + + + + $line + \Aliyun_Log_Models_GetLogsRequest::line + + + + + + integer + + + + + $offset + \Aliyun_Log_Models_GetLogsRequest::offset + + + + + + integer + + + + + $reverse + \Aliyun_Log_Models_GetLogsRequest::reverse + + + + + + boolean + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_GetLogsRequest::__construct() + + Aliyun_Log_Models_GetLogsRequest Constructor + + + string + + + string + + + integer + + + integer + + + string + + + string + + + integer + + + integer + + + boolean + + + + + $project + null + string + + + $logstore + null + + + + $from + null + integer + + + $to + null + integer + + + $topic + null + string + + + $query + null + string + + + $line + null + integer + + + $offset + null + integer + + + $reverse + null + boolean + + + + getLogstore + \Aliyun_Log_Models_GetLogsRequest::getLogstore() + + Get logstore name + + + string + + + + + setLogstore + \Aliyun_Log_Models_GetLogsRequest::setLogstore() + + Set logstore name + + + string + + + + $logstore + + string + + + + getTopic + \Aliyun_Log_Models_GetLogsRequest::getTopic() + + Get topic name + + + string + + + + + setTopic + \Aliyun_Log_Models_GetLogsRequest::setTopic() + + Set topic name + + + string + + + + $topic + + string + + + + getFrom + \Aliyun_Log_Models_GetLogsRequest::getFrom() + + Get begin time + + + integer + + + + + setFrom + \Aliyun_Log_Models_GetLogsRequest::setFrom() + + Set begin time + + + integer + + + + $from + + integer + + + + getTo + \Aliyun_Log_Models_GetLogsRequest::getTo() + + Get end time + + + integer + + + + + setTo + \Aliyun_Log_Models_GetLogsRequest::setTo() + + Set end time + + + integer + + + + $to + + integer + + + + getQuery + \Aliyun_Log_Models_GetLogsRequest::getQuery() + + Get user defined query + + + string + + + + + setQuery + \Aliyun_Log_Models_GetLogsRequest::setQuery() + + Set user defined query + + + string + + + + $query + + string + + + + getLine + \Aliyun_Log_Models_GetLogsRequest::getLine() + + Get max line number of return logs + + + integer + + + + + setLine + \Aliyun_Log_Models_GetLogsRequest::setLine() + + Set max line number of return logs + + + integer + + + + $line + + integer + + + + getOffset + \Aliyun_Log_Models_GetLogsRequest::getOffset() + + Get line offset of return logs + + + integer + + + + + setOffset + \Aliyun_Log_Models_GetLogsRequest::setOffset() + + Set request line offset of return logs + + + integer + + + + $offset + + integer + + + + getReverse + \Aliyun_Log_Models_GetLogsRequest::getReverse() + + Get request reverse flag + + + boolean + + + + + setReverse + \Aliyun_Log_Models_GetLogsRequest::setReverse() + + Set request reverse flag + + + boolean + + + + $reverse + + boolean + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + \Aliyun_Log_Models_Request + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + + No summary was found for this file + Argument $project is missing from the Docblock of __construct + Argument $logstore is missing from the Docblock of setLogstore + Argument $topic is missing from the Docblock of setTopic + Argument $from is missing from the Docblock of setFrom + Argument $to is missing from the Docblock of setTo + Argument $query is missing from the Docblock of setQuery + Argument $line is missing from the Docblock of setLine + Argument $offset is missing from the Docblock of setOffset + Argument $reverse is missing from the Docblock of setReverse + + eJy1WF1P2zAUfa/Ef7gPSLSI0XfYF0IDTWKatvIepa3bekrjzHY6qmn/fdd2nDiJ7aRDqxA08fXJued++Ia3H4pdcTaZX16eTeAS7llx5HS7kzC9n8FdRpfpMoX7jJVrXNsXpaT5VlveZRloSwGcCMIPZK3uz88mZxNOfpaUk4TlK4KraVakcjddU56nezJNkofPT5+SZAbXcDH/jrZEyGukcTG7Vbstl+ed2qxXoRRkDZLBlkjI2FbA8ggp4Bo/woazPYhMXKtdeufHtJQ7xtXNZE0OFa9VlgqhfDqWebLApS9sTfDPI5FPCFkRAfIiSb72GVqL3wiIH/PbsFUffO4hxYdKjhpplpJxAspnazE3XwpOD6kkcG6NtN8xNMkKutJQwDYaOwSpLW+jDGkuyZZwkCjwkmxpDpKGOSp5x+OhdFE0yeJYlb8Ybw5rsqE5xl2HOQSoF8fx26cvkCEi5OV+ideoJCey5HlUULVjHL7GZpuNwCQdh22M4+hLxjKgCu5AuCBABagHYDFIXpIrrbophF9U1aR5qrqb4TNEVS8byoUM0aiggzwGa+ae5Ri4coW5bDc1ThQpT/c2sOcFZz/IqqYCzqdaalVMdzs6s1AV49vvLTkLYIOk89m3218Nve2ShTZ3U79LXVemd3OwuLsQrUpwIcL10nNAZakPwuSQTdqmTIJAJnlDaqAbthYwVQ1sF0qnts0+H9D/SftymaHemzJfScpySJKVTd+pTU94h95n2VXTops7+rypr5CQ810Fsr409BokpWl9VWlTX1s/zY2ZPWQ04ZSTXN7cOERhWlcSzG4b0+bbudxR8ea9Q989bTpWlUtur3dWtYtN526tGIdbp46zbhVodWmXnZHE7bHOai1Ru086Fo1onR72J9TKHqsBotcnmtysUmnMOd7JpK3pisp82opgBdmJyRDXxTDXXnMUJzXHgB/C8aMGbTk0nF3RCDQdb0j+vmVY+2dlGxPezdKo6jF+Jzf1YbENcYPlk9lbZlGB+wdZT2Dbx8MTYF/hB+wPMYGd/hHVN0Zv5HE9mraoaGskn7qe5hfVtnvOB5UNzcK+zI2n7RhNw7RGTTAjyepsVanqz9PWQRFVMTyxhFrB8DtBX9hvyiymrXswReUdw/fVw1pYdOOIwfRJ7z1powEY9zYUTO7TXqY8ByXujR6SzUgQjcupboychl/lnqjc0+jec7M/98QnlsE3SwgGavxbaT9IX/W2WJhak1k0UPZfOSf5MvqV45+9FLWXFbovXoFJNBoz66+dUTdZug1HS78K+UzDwflurGPRGTkULwboduMx+N52giOiccQi+iIQm/Tx5y//KIvX + + + + + + + + + \Aliyun_Log_Models_Request + Aliyun_Log_Models_PutLogsRequest + \Aliyun_Log_Models_PutLogsRequest + + The request used to send data to sls server. + + + + + + + $logstore + \Aliyun_Log_Models_PutLogsRequest::logstore + + + + + + string + + + + + $topic + \Aliyun_Log_Models_PutLogsRequest::topic + + + + + + string + + + + + $source + \Aliyun_Log_Models_PutLogsRequest::source + + + + + + string + + + + + $logitems + \Aliyun_Log_Models_PutLogsRequest::logitems + + + + + + array + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_PutLogsRequest::__construct() + + Aliyun_Log_Models_PutLogsRequest cnstructor + + + string + + + string + + + string + + + string + + + array + + + + + $project + null + string + + + $logstore + null + string + + + $topic + null + string + + + $source + null + string + + + $logitems + null + array + + + + getLogstore + \Aliyun_Log_Models_PutLogsRequest::getLogstore() + + Get logstroe name + + + string + + + + + setLogstore + \Aliyun_Log_Models_PutLogsRequest::setLogstore() + + Set logstore name + + + string + + + + $logstore + + string + + + + getTopic + \Aliyun_Log_Models_PutLogsRequest::getTopic() + + Get topic name + + + string + + + + + setTopic + \Aliyun_Log_Models_PutLogsRequest::setTopic() + + Set topic name + + + string + + + + $topic + + string + + + + getLogItems + \Aliyun_Log_Models_PutLogsRequest::getLogItems() + + Get all the log data + + + array + + + + + setLogItems + \Aliyun_Log_Models_PutLogsRequest::setLogItems() + + Set the log data + + + array + + + + $logitems + + array + + + + getSource + \Aliyun_Log_Models_PutLogsRequest::getSource() + + Get log source + + + string + + + + + setSource + \Aliyun_Log_Models_PutLogsRequest::setSource() + + set log source + + + string + + + + $source + + string + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + \Aliyun_Log_Models_Request + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + + No summary was found for this file + Argument $project is missing from the Docblock of __construct + Argument $logstore is missing from the Docblock of setLogstore + Argument $topic is missing from the Docblock of setTopic + Argument $logitems is missing from the Docblock of setLogItems + Argument $source is missing from the Docblock of setSource + + eJytVstu2zAQvBvwP+zBQGQjte9x0zYw2iJAChR17gItMZYKmlT5MGoU+ffyoSclSm5QXRKJu8PZmeXS7z8WWTGfzWeb1Wo+gxXsWHHh+TGTEO2W8EDyAzog2BGmUr12KpTM6dFGPhACNlIAxwLzM07N941B4/iXyjmOGU2wXkWkQDKL0pxTdMJRHH95fPocx0tYw83mh47FQq41kZvlts3lOTPJdhWUwClIBgLTFFIkkX0hAuzOfG0SbNInpGTGuFmLU3wuKSUECWHKuSga7/XSN5Zi/ee7kk/sKEoOgH9LjT8UWEX8MQRBP46kefSeZ6Q3lFxLA0TDScYxmFKriI37p+D5GUkMiypoO4UmWZEno1A2YhJHMMW1FewFpBbVbB/Cc5FhQMQ5uoAW7VHik3u7NYDWlJF6cx0utu57H3rSmYTqSlSiRatyGloF4uhUVbooOPuJE1kvt55yqaOnn15ZM5Q/6K0PYA0Zyu576ac67Ydye/75EM6WWughjK5nIcvUgWiWL4omMmcU4jhhpfRRJS3cA1WE3DZiNV9ckfVrybudYPmVX5bmPNXuII6pvLtrbQlR7Scst03oQma5ePehtX37SHlRFaX6qHjrNcem9/v7VKz9Vn4NdfRXLF2/cNbtl8Y5jqXi9KrB4blyxPZwmPCoo2EJ6ekzxXVfcfW3/2+HJFCHaNVRg3YKmnZ61IH+mQvJH560fe2fTeyY8O1OG1V9jN+bx0pYbEfcYQ3JPHhURgVG+ldAOZI64wR6Ov/TxTHY7yZRTPT7VWfTKj9O+o1T9dqCRKugGj7Q+G8dPdC9TkbmjhcZNmFv48Ys6IzQIEMxwfDaa/Fq7qLmXqINaR24CHQVr38BghUC/w== + + + + + + + + + \Aliyun_Log_Models_Request + Aliyun_Log_Models_GetHistogramsRequest + \Aliyun_Log_Models_GetHistogramsRequest + + The request used to get histograms of a query from sls. + + + + + + + $logstore + \Aliyun_Log_Models_GetHistogramsRequest::logstore + + + + + + string + + + + + $topic + \Aliyun_Log_Models_GetHistogramsRequest::topic + + + + + + string + + + + + $from + \Aliyun_Log_Models_GetHistogramsRequest::from + + + + + + integer + + + + + $to + \Aliyun_Log_Models_GetHistogramsRequest::to + + + + + + integer + + + + + $query + \Aliyun_Log_Models_GetHistogramsRequest::query + + + + + + string + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_GetHistogramsRequest::__construct() + + Aliyun_Log_Models_GetHistogramsRequest constructor + + + string + + + string + + + integer + + + integer + + + string + + + string + + + + + $project + null + string + + + $logstore + null + string + + + $from + null + integer + + + $to + null + integer + + + $topic + null + string + + + $query + null + string + + + + getLogstore + \Aliyun_Log_Models_GetHistogramsRequest::getLogstore() + + Get logstore name + + + string + + + + + setLogstore + \Aliyun_Log_Models_GetHistogramsRequest::setLogstore() + + Set logstore name + + + string + + + + $logstore + + string + + + + getTopic + \Aliyun_Log_Models_GetHistogramsRequest::getTopic() + + Get topic name + + + string + + + + + setTopic + \Aliyun_Log_Models_GetHistogramsRequest::setTopic() + + Set topic name + + + string + + + + $topic + + string + + + + getFrom + \Aliyun_Log_Models_GetHistogramsRequest::getFrom() + + Get begin time + + + integer + + + + + setFrom + \Aliyun_Log_Models_GetHistogramsRequest::setFrom() + + Set begin time + + + integer + + + + $from + + integer + + + + getTo + \Aliyun_Log_Models_GetHistogramsRequest::getTo() + + Get end time + + + integer + + + + + setTo + \Aliyun_Log_Models_GetHistogramsRequest::setTo() + + Set end time + + + integer + + + + $to + + integer + + + + getQuery + \Aliyun_Log_Models_GetHistogramsRequest::getQuery() + + Get user defined query + + + string + + + + + setQuery + \Aliyun_Log_Models_GetHistogramsRequest::setQuery() + + Set user defined query + + + string + + + + $query + + string + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + \Aliyun_Log_Models_Request + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + + No summary was found for this file + Argument $project is missing from the Docblock of __construct + Argument $logstore is missing from the Docblock of setLogstore + Argument $topic is missing from the Docblock of setTopic + Argument $from is missing from the Docblock of setFrom + Argument $to is missing from the Docblock of setTo + Argument $query is missing from the Docblock of setQuery + + eJy1Vslu2zAQvRvwP8whQOygje9xtyBo2gLpoU3uAi3RMguZVEnKaFD03zukRG0mKQVFBQOWNDOPj28W6s378lAuF5urq+UCruBOlM+S5QcNq7s13BZsR3YE7gpRZWg7lpVmPLeet0UB1lOBpIrKE83M+81ysVxI+rNikiaCpxStpCiJPqwyJjk50lWS3H95+Jgka7iGy8139KVKXyONy/XWRDsuTwcTbK1QKZqBFpBTDQemtMglOSoQeyCAHvIZ9lIcQRXq2sTa+A+k0gchzcsko6eGXVoQpczOniuePKLpq8go/n2i+nML3JAC+ktTnvncncdvwxjwqlmbC1c+EVxWS9QKCpEjqqRg9u48NvVNKdmJaAoXzmk7haZFyVILZfZuwkKQ1nNbvwxgMq5pTiVoFHpHc8ZBszBHI/B8PJQtiqZFHKvZL+ZdQkb3jGP+baJDgNY4wDxHnpn1VHBcvkoxIy60I1cSdHX0LkopftBUt+be1ZgGeR+Hu7z74r2F4wCc1DYrvmh/Ts/CtQgFjxM4pm7ryxscLNExxCCffYjprFe7AhfZVzzVTHBIkjZnK5cTeAu8KopXncrdGzss2iecK717w759rGdL/bg2zd5ml0jK9c1Nb2VYtfUA623neqFxYr1+12PR7/eRV8Os3209q2Xa9c7AUvMe9H3P7jYy6JM/oUbBtvDXX5dKSXUl+awpN0oWzvCHxn010LSBHOk1xfVxmus/Nl1gH6q3jxZ0sKHpzEcz0HXSlPznnmHtn4xvTPh+BUVVj/F78bCYFrsmXmP5ZPa2QFTg8wF5JrCblOHz8Vzhe+zdmMC93o7qG6M38xiYTVs1tC2ST13PYIpqOz4/gsqGvhR8lRsv2zmahmnNOhlnkrXVakrVX6eDIR5VMXwShkbBi89OFPabcYtpO+vQeJzJ9399BCi3kRrTJ33oFMTfX1cocMQ= + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + + Aliyun_Log_Models_Histogram + \Aliyun_Log_Models_Histogram + + The class used to present the result of log histogram status. For every log +histogram, it contains : from/to time range, hit log count and query +completed status. + + + + + + $from + \Aliyun_Log_Models_Histogram::from + + + + + + integer + + + + + $to + \Aliyun_Log_Models_Histogram::to + + + + + + integer + + + + + $count + \Aliyun_Log_Models_Histogram::count + + + + + + integer + + + + + $progress + \Aliyun_Log_Models_Histogram::progress + + + + + + string + + + + + __construct + \Aliyun_Log_Models_Histogram::__construct() + + Aliyun_Log_Models_Histogram constructor + + + integer + + + integer + + + integer + + + string + + + + $from + + integer + + + $to + + integer + + + $count + + integer + + + $progress + + string + + + + getFrom + \Aliyun_Log_Models_Histogram::getFrom() + + Get begin time + + + integer + + + + + getTo + \Aliyun_Log_Models_Histogram::getTo() + + Get the end time + + + integer + + + + + getCount + \Aliyun_Log_Models_Histogram::getCount() + + Get log count of histogram that query hits + + + integer + + + + + isCompleted + \Aliyun_Log_Models_Histogram::isCompleted() + + Check if the histogram is completed + + + boolean + + + + + + Argument $from is missing from the Docblock of __construct + + eJylVU2P2jAQvSPxH+aw0gKi5d6W7a4ibdtDT907MsmQWGvs1B4joar/vWPnk49kWTVCEDIzb957M4YvX8uinE5Wi8V0AgtITHm0Mi8IZskcnpTciq2ARBmfcWxfepI6j5lPSkHMdGDRoT1gFp6vppMO7aVASJVwDrzDDMhAGXI1AXGEb70iMDtQJodCOjK5FXtwJMi7j/BsLOAB7THEI16bswRJkBpNQmoHn2BnzX7F8CT3jCt0jktOpgicGs8Nhc7gt2ewCJSyFIXEnOpm4WmMPApPBTd2ym0yPNSSKhFsx9HrzS8O/TQZ8sf3lvQfzuSreq/0h4sBD8KC1IQ52ih7i7nUkWmTs6puSisPghDugprPN+MhKxtDI1NhvQHVWcUD6YZBhaDKuGCog6EusXSctCPLy9PDrmCrCcySeiTA5v/Qzbf5UL/SMgY6N9hybFi8OUzGp2Rsk99RLUVIaWyJw2iDvev6KC/KyQwVn8/tojRaeq36naNqgGv/W+uuQf/fcPxWyRR2XqckjYbNpjV6Fn1cBj+WtbJlx2TeHJ9w3RGT+PAQ8mF9chh6UT7r6261+5HKmPXpRvbiTc+QcrZEf4d26RvSlVl3/lokb/WNp/zMpBzpmSXOTjyoAXtW3ELx2laNkhz66bik+GLGCLZzGKV329q+Sfx9MMOSkoAxpqq/QIPCkgLTV5C76GfHRrruP2ZQ0dYYBXw8sKrnmnGAAS3SNQcyG5PTLf4a7puK+04fv/4BD1xAvQ== + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + + Aliyun_Log_Models_QueriedLog + \Aliyun_Log_Models_QueriedLog + + The QueriedLog is a log of the Aliyun_Log_Models_GetLogsResponse which obtained from the sls. + + + + + + $time + \Aliyun_Log_Models_QueriedLog::time + + + + + + integer + + + + + $source + \Aliyun_Log_Models_QueriedLog::source + + + + + + string + + + + + $contents + \Aliyun_Log_Models_QueriedLog::contents + + + + + + array + + + + + __construct + \Aliyun_Log_Models_QueriedLog::__construct() + + Aliyun_Log_Models_QueriedLog constructor + + + integer + + + string + + + array + + + + $time + + integer + + + $source + + string + + + $contents + + array + + + + getSource + \Aliyun_Log_Models_QueriedLog::getSource() + + Get log source + + + string + + + + + getTime + \Aliyun_Log_Models_QueriedLog::getTime() + + Get log time + + + integer + + + + + getContents + \Aliyun_Log_Models_QueriedLog::getContents() + + Get log contents, content many key/value pair. + + + array + + + + + + Argument $time is missing from the Docblock of __construct + + eJydU8tu2zAQvBvwP+zBB8dwow9w2yTwIZfkkCZ3gZbWElGKJJakCqHov5ekHpaVyA5CGBbBnZ2dHS6/3+lSLxfJZrNcwAb2SjfEi9LCen8DD4If2IHBXiiX+1ilneWyiMgHISAiDRAapBrzcJ4sFye2txLhxSFxzJ9UAdwAA+E36gjWhzx942T6Kkz6rHL0n0e0Hmh+odFKGoQ/Jc9KUAfLuMQcjqSqmGmEuQ0VYpV75mypKBymOdadikwwYz4oMdLzN2gFv1q9YXm2mhFwabFAimItr9BYVukekrQbTbxmFmEVALtZKmPJWxaZjHKU4RxNG50nYkSsiTyZ8vKkNdt+BxWTDfzGJqmZcAiacZor0yfv2vPx/7jkReM8h2/LZVYNZU5aNSNWDQ5Gd4bgaPXWwpm3fXrn2urcsmn+JNrltkYNjc4lf8lFdxA8g6OTmeVKQpoOVqxjp9te8vYk4CYMWl95ZUtuvv2Mnf8YZmcSbSlCfBiKCaLnDpjhRiFJIEfUviHdtCn/5u7Xv7QPLDxZSWgdyevTOzGkQPsaceuzrju2s/Z2n1Q4HqB3+qYP9bq8N4+6JG50I1elfWqEbmfFv3/R1+XvO+SlFiZP3Lfhf/8BXeuivA== + + + + + + + + + \Aliyun_Log_Models_Request + Aliyun_Log_Models_ListTopicsRequest + \Aliyun_Log_Models_ListTopicsRequest + + The Request used to list topics from sls. + + + + + + + $logstore + \Aliyun_Log_Models_ListTopicsRequest::logstore + + + + + + string + + + + + $token + \Aliyun_Log_Models_ListTopicsRequest::token + + + + + + string + + + + + $line + \Aliyun_Log_Models_ListTopicsRequest::line + + + + + + integer + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_ListTopicsRequest::__construct() + + Aliyun_Log_Models_ListTopicsRequest constructor + + + string + + + string + + + string + + + integer + + + + + $project + null + string + + + $logstore + null + string + + + $token + null + string + + + $line + null + integer + + + + getLogstore + \Aliyun_Log_Models_ListTopicsRequest::getLogstore() + + Get logstroe name + + + string + + + + + setLogstore + \Aliyun_Log_Models_ListTopicsRequest::setLogstore() + + Set logstore name + + + string + + + + $logstore + + string + + + + getToken + \Aliyun_Log_Models_ListTopicsRequest::getToken() + + Get start token to list topics + + + string + + + + + setToken + \Aliyun_Log_Models_ListTopicsRequest::setToken() + + Set start token to list topics + + + string + + + + $token + + string + + + + getLine + \Aliyun_Log_Models_ListTopicsRequest::getLine() + + Get max topic counts to return + + + integer + + + + + setLine + \Aliyun_Log_Models_ListTopicsRequest::setLine() + + Set max topic counts to return + + + integer + + + + $line + + integer + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + \Aliyun_Log_Models_Request + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + + No summary was found for this file + Argument $project is missing from the Docblock of __construct + Argument $logstore is missing from the Docblock of setLogstore + Argument $token is missing from the Docblock of setToken + Argument $line is missing from the Docblock of setLine + + eJytVNtu2kAQfUfiH+YhUgCl8B5Kmgi1VSX60vBuLfYEb7vsuntBiar+e8dr1saObS6qhfBlz87MOWdmP37K0mw4mE0mwwFMYKmyN823qYXRcgxPgm/YhsFSKJfQ2i5zlsutRz4JAR5pQKNBvcck/z4bDoYDjb8d1xgpGSOtMpExm44SriXb4SiKvnxbfY6iMUzhdvaDsGjslMq4Hc/z3aGWdYpwWAVnMAGrQHB6sSrjsYEXrXZghJnmaL/jkTmbKp1/jBLcH+qJBTMm5/LmZPRMS99VgnRbUay1DxWy4KtFmbRhA+IPxaSr+C8KzS9KvWeU12qSB26E2hqrNEL5kBMP2FnxkGm+ZxYrtCffG9eqXyjBki7GMp0L4d9rsnRl8djuFFxa3KKmarhE2LHXIhzEykmymHJotE7LThK0bd4lzjnax0oSTReTEuW+qsSMabYrdci0+omxhXA/VreJ7feiib5E4bD3WuncRhDqxcnYciUhikoJRoHhQjoh7ioS4d2XVS5SWv88Du3pwzON0t7ft4UdzyvcjU25+fBQqrOoNWQDVcixqLqpGSVXYFHrhr9tLfcVbeGHVnU/Km0LzYIxvYPUEHKLdnWAj2qSHEI2GFd1tjfvc6i1mf5Ux5XrR9clPMwRjzJojdBp72qs2n04o9G7XDn/FHpv0Trf1efPcYv1mnMRgbZxv5qGCTSKQG3etE7MGa6cPkbeuxIOoquPoHxyaHJ7p6Y22d2mXFT/fz1HzYGED9M6Lq2HFP3+Af+elmc= + + + + + + + + + \Aliyun_Log_Models_Response + Aliyun_Log_Models_GetHistogramsResponse + \Aliyun_Log_Models_GetHistogramsResponse + + The response of the GetHistograms API from sls. + + + + + + + $progress + \Aliyun_Log_Models_GetHistogramsResponse::progress + + + + + + string + + + + + $count + \Aliyun_Log_Models_GetHistogramsResponse::count + + + + + + integer + + + + + $histograms + \Aliyun_Log_Models_GetHistogramsResponse::histograms + + + + + + array + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_GetHistogramsResponse::__construct() + + Aliyun_Log_Models_GetHistogramsResponse constructor + + + array + + + array + + + + + $resp + + array + + + $header + + array + + + + isCompleted + \Aliyun_Log_Models_GetHistogramsResponse::isCompleted() + + Check if the histogram is completed + + + boolean + + + + + getTotalCount + \Aliyun_Log_Models_GetHistogramsResponse::getTotalCount() + + Get total logs' count that current query hits + + + integer + + + + + getHistograms + \Aliyun_Log_Models_GetHistogramsResponse::getHistograms() + + Get histograms on the requested time range: [from, to) + + + array + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + \Aliyun_Log_Models_Response + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + \Aliyun_Log_Models_Response + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + \Aliyun_Log_Models_Response + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + \Aliyun_Log_Models_Response + + + + No summary was found for this file + Argument $resp is missing from the Docblock of __construct + + eJytVFFv2jAQfkfiP9wDUpKKlfeydqvQtlbqpGrjDaHIJEdiLdip7bChaf995wTHqSDpWi1CAdv3fefv7uPefyjzcjwaj2YXF+MRXMBClgfFs9xAuIjgtuAbtmGwKGSV0tmurAwXWR15WxRQR2pQqFHtMbX7M8s2Hil8qrjCWIoE6ZwVJTN5mHIl2A7DOP58//ApjiO4hGD2DXUphcZLuksQzV8HvuPayEyxXYv2Ypa5hTfkILdgaP0FTQvRcPt4D1sld6ALfWkxNe4jq0wuld2MU9wfZSUF09qW5FCJ+DsdfZUp0tczRqcF8JdBkZ6Lb0N+EzE9zbu5s30o/55RcqOo1JA7aniqUB1om5lKh7YXBRqSpeBeuFXkKGbNj1LxPaOgSamIA7WeD6bkwmCGCgqZ6QASWQlDNWMGkkoppEVzhZwb3ZeoBg1nYUqxw5m6tEVsIqZeugYp6uZZY6A2mILhO1oykeEVrGwHp2Bkr3zPNIfZDB5o+X7gAjd99//X5if0NqpKjFQO62tQslYjTKw926POc573brl89I7eyPTQQ5sjS1G9lfg52hWz2hQ8gW0lEsOpH3HcqgxrGVOXNnLOrmHMOufqqhMOoYuEaO4jJ4ba9O7GWRWum+rAKnBbwfo0vHGpj63X5wI7bro+linspt9KmjRJbi93pPKIYA1MwyRlhkHkIefZV2tKIPDnoMXDI9sqsOYN1tN2bWR3dZTjN3wt2uL96bPrIsfkB/Bm8PlBwjUZtBkY6ak9FZpKCTKXLIDahQ2eMMMEPS7h2s2mNHzmi2Oak6ZfQ+AQwUv6yMv0rzeseM3EOlHqpt6rmXokZ2iWlmphOYZEd2floMa3D8ITsf95+L5cCj9shkrRGdBtPejzFyZGljc= + + + + + + + + + \Aliyun_Log_Models_Response + Aliyun_Log_Models_ListLogstoresResponse + \Aliyun_Log_Models_ListLogstoresResponse + + The response of the ListLogstores API from sls. + + + + + + + $count + \Aliyun_Log_Models_ListLogstoresResponse::count + + + + + + integer + + + + + $logstores + \Aliyun_Log_Models_ListLogstoresResponse::logstores + + + + + + array + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_ListLogstoresResponse::__construct() + + Aliyun_Log_Models_ListLogstoresResponse constructor + + + array + + + array + + + + + $resp + + array + + + $header + + array + + + + getCount + \Aliyun_Log_Models_ListLogstoresResponse::getCount() + + Get total count of logstores from the response + + + integer + + + + + getLogstores + \Aliyun_Log_Models_ListLogstoresResponse::getLogstores() + + Get all the logstores from the response + + + array + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + \Aliyun_Log_Models_Response + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + \Aliyun_Log_Models_Response + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + \Aliyun_Log_Models_Response + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + \Aliyun_Log_Models_Response + + + + No summary was found for this file + Argument $resp is missing from the Docblock of __construct + + eJytU9+L2zAMfi/0f9BDoUnZ2vfrtlsp+3HQwbH1bYzgJGpicOxMlsvK2P8+O2mS9u5668ZMcGLrk/R9kvLqti7r8Wgxm41HMIO1qQ8ki5IhWsewUjIVqYC1Mi73tqp2LHXRIFdKQYO0QGiR9piH+8V4NB4RfneSMDE6Q28VqhZcRrkkLSqMkuT93eZdksQwh+niM9raaItzz2MaL4N7R2ZbBu/WDGYH7M8baXljCsvGW2B1fwc7MhVYZefBp/F7KxyXhsJlkuP+SCtTwtog6eB08sWbPpkc/essYscG8Aejzp/C95CfPrBf7d5yDsvn3wsCqRkLpIa0dlXqP4MEw0KB6gU05PlEZxdk0X7UJPeCESaZcZqXz2YUROIAQg3xLwXr818MeG2ZMr8zuczfdr4DqVqQqI60JkFgbzpZ5w39uN3eDz1PTX64EK5EkSP9bcBzr64sLlUyg53TGUujIUl6VVFD+0WXLu563rgJQs03NydwiDokxMsBOeFS2pdvmhbC67YU8HXanKffHgOH8RjA/V3v8OtS7z4gH+eszejH7oqBG+pMyI70/xrgB8UtkNeBVXRWy2PK00JdozLMesj9L/L+/Lc8Zt6P1XPsH/5cXoF/fgNkhJXQ + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + + Aliyun_Log_Models_LogItem + \Aliyun_Log_Models_LogItem + + Aliyun_Log_Models_LogItem used to present a log, it contains log time and multiple +key/value pairs to present the log contents. + + + + + + $time + \Aliyun_Log_Models_LogItem::time + + + + + + integer + + + + + $contents + \Aliyun_Log_Models_LogItem::contents + + + + + + array + + + + + __construct + \Aliyun_Log_Models_LogItem::__construct() + + Aliyun_Log_Models_LogItem cnostructor + + + array + + + integer + + + + $time + null + integer + + + $contents + null + array + + + + getTime + \Aliyun_Log_Models_LogItem::getTime() + + Get log time + + + integer + + + + + setTime + \Aliyun_Log_Models_LogItem::setTime() + + Set log time + + + integer + + + + $time + + integer + + + + getContents + \Aliyun_Log_Models_LogItem::getContents() + + Get log contents + + + array + + + + + setContents + \Aliyun_Log_Models_LogItem::setContents() + + Set log contents + + + array + + + + $contents + + array + + + + pushBack + \Aliyun_Log_Models_LogItem::pushBack() + + Add a key/value pair as log content to the log + + + string + + + string + + + + $key + + string + + + $value + + string + + + + + Argument $time is missing from the Docblock of __construct + The type hint of the argument is incorrect for the type definition of the @param tag with argument $time in __construct() + The type hint of the argument is incorrect for the type definition of the @param tag with argument $contents in __construct() + Argument $time is missing from the Docblock of setTime + Argument $contents is missing from the Docblock of setContents + Argument $key is missing from the Docblock of pushBack + + eJytVcuu2jAQ3SPxD1OJRUD08gH0RVlUldrV7a6q0JCYxLqOHflBhar+e/3Ii4ATqtZChNhnzpw5Y5s376uims82q9V8BivYi+oiaV5oSPZL2DF6xCPCngmT2bWyMpry3CN3jIFHKpBEEXkmmZvfzGcdm42/GH54ZurwVWTEPr6I/LMmJRhFMtACKhfLNSAwka+BakgF10i5chOgaUkAeQalYZpWjHjaF3LZnJEZAhVSqfo8uiA+0LHYd/XkAnzQBzS6EBKUVZGRc601ZajUiM5fFmdH+A5luWHpziiB2iQ5kUGmOLXZqQ1d+7eMnNBKDwgaEFz89O9PDdkm/KgkPaMmsHCLW+fj3aQoJV4COWq8TUt5ykxm2wQl8svQrGjSxrFtrOK4SSkXSkuTaiEbdCe5QollLbpN0i73xj9X1ORquuJ9vJvp/7TLHBlN4WR4qqngcDjY6oIPiU8Nb4EbxtZd2fXMstlWbtgsyaugddnNutGQ+Eey3HarC11Q9fpdvd7slz5jm/KG00f2BA0b74ZtLpmKCx1tZf2ObZtPRLdH+XZ3SKKN5G3LhsCI1TnR3ywquTKypup5MyXteVTag5vpQcmqlhwa3dcdb+akp8PjdONraNI9aNzZfY0cc3ewZyYdjgt9+Hr4iyJUr4juINzxfOQYREvaZZn9t7q+gwBVX5/7Q6rvlljB9p5w99nC8kwUC33IINormIq/AkUcq4wqPmL6kjhB65p41LHvDvnDGeexnWv28wcoQ0UM + + + + + + + + + \Aliyun_Log_Models_Response + Aliyun_Log_Models_ListTopicsResponse + \Aliyun_Log_Models_ListTopicsResponse + + The response of the ListTopics API from sls. + + + + + + + $count + \Aliyun_Log_Models_ListTopicsResponse::count + + + + + + integer + + + + + $topics + \Aliyun_Log_Models_ListTopicsResponse::topics + + + + + + array + + + + + $nextToken + \Aliyun_Log_Models_ListTopicsResponse::nextToken + + + + + + \string/null + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_ListTopicsResponse::__construct() + + Aliyun_Log_Models_ListTopicsResponse constructor + + + array + + + array + + + + + $resp + + array + + + $header + + array + + + + getCount + \Aliyun_Log_Models_ListTopicsResponse::getCount() + + Get the number of all the topics from the response + + + integer + + + + + getTopics + \Aliyun_Log_Models_ListTopicsResponse::getTopics() + + Get all the topics from the response + + + array + + + + + getNextToken + \Aliyun_Log_Models_ListTopicsResponse::getNextToken() + + Return the next token from the response. If there is no more topic to list, it will return None + + + \string/null + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + \Aliyun_Log_Models_Response + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + \Aliyun_Log_Models_Response + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + \Aliyun_Log_Models_Response + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + \Aliyun_Log_Models_Response + + + + No summary was found for this file + Argument $resp is missing from the Docblock of __construct + + eJy1VNtu2kAQfUfiH+YBCYNSeIe2KUK9IFEUpfSpiqzFHvCq9q67F1pU9d8zu7axEzBJo3Zl+bJz5syZi/f1dZ7k3U63Mx4Oux0YwlzmB8V3iYFgPoBZyjdsw2CeShuTLcut4WLnkbM0BY/UoFCj2mPs9seOTeEPyxWGUkRIVpbmzCRBzJVgGQZh+GGxfB+GAxhBf3yLOpdC44iU9AfTpph14rwLM8gtGPpecm3WMueRhtnNArZKZqBTPXIO3ukdsyaRym2GMe5LTVHKtHb5HKwIv5Dps4yRHjVdpQPwl0ERnwMfIb+dSqBVKHWLAu+ZAi4M7lB5qcJmG3ol4Yxq5XZMIdyLNo3kKo5x8ZIrvmcGoRdJK8y0NRhTih0q0pQyaeMpIO1E2ihq61jYUqegGhDvdxSnWkew8J1QCFyDkJBJVWZGdy/jCriBn9wNCBqrBKykaM3RxVq7UNPCcCrxWV2L6G6UjYxUlWOdY84Uy8py9VwiR1NjNSbr03p9U0/eRsaHFq4EWYzqr9geulTVsJuU6re1IjJcCgjDYz6BF3xVxRq44auCkBYUZjJpwCGokDCY1sieSbh+9dYPFLwpigDf+v67f3cKLIeqRhYb56DHBhKaa41eQunlbKEfpP4dDOD6vGECq6/LZcn8p20MPhLzy36runnlPP6bv/RRz3Zo5q6cwYMWlRGb9X9Ooi9O7ckz4VR1MaaXZB/Pj4u6bwuf/32AnKTcPL0aga3GuCJsxNBPF2RVTfSlmjw+t6gsdN0DQsEmBA== + + + + + + + + + \Aliyun_Log_Models_Request + Aliyun_Log_Models_ListLogstoresRequest + \Aliyun_Log_Models_ListLogstoresRequest + + The request used to list logstore from sls. + + + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_ListLogstoresRequest::__construct() + + Aliyun_Log_Models_ListLogstoresRequest constructor + + + string + + + + + $project + null + string + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + \Aliyun_Log_Models_Request + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + \Aliyun_Log_Models_Request + + + + No summary was found for this file + Argument $project is missing from the Docblock of __construct + + eJyNkT1vwyAQhndL/g83VIrtId7TVk0UtVKldGm7I4IvMREBekDUqOp/7+HYmTIUIT7unvd4gYcn3/uyaJumLKCBtfNn0vs+QrWuYWX0Vm4lrI1LHeeOPkVt9wO5MgYGMgBhQDphl+NtWZQF4VfShMJZhZyVxsvYV50mK49YCfHyunkWooY5zNp3ZjHEOduY1fdZPXn57LN4yEIK2EF0YDRvjNuH6AhhR+4IwYR55gfNUqbYO8pB0eFpdKSMDCHf5pys+ODUm+uQpw1X24zFwmgE8Dui7W7hI/HDVbldxovZ3Jr/HqCcDZGS4uBVel0svSTJl4rEDw13ntwBVYRpzg84se1l4dPWaAW7ZFXUzoIQ1wOqSf9okzE1jM4HlSS0cbG4RedvyMxvWXD/A0LLq0E= + + + + + + + + + \Aliyun_Log_Models_Response + Aliyun_Log_Models_PutLogsResponse + \Aliyun_Log_Models_PutLogsResponse + + The response of the PutLogs API from sls. + + + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_PutLogsResponse::__construct() + + Aliyun_Log_Models_PutLogsResponse constructor + + + array + + + + + $headers + + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + \Aliyun_Log_Models_Response + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + \Aliyun_Log_Models_Response + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + \Aliyun_Log_Models_Response + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + \Aliyun_Log_Models_Response + + + + No summary was found for this file + Argument $headers is missing from the Docblock of __construct + + eJyNkVFrwyAQx98D+Q73MGiSh+a9G6ylbKzQQdn6LjZeG8GoO7WsjH33adpkHfRhhxj1fv/zf+bh0bY2z+qqyjOoYGnsieSh9VAsS1goueM7Dktlgoi5zgYv9aEnF0pBTzogdEhHFOm8zrM8I/wIkpAZ3WDMcmW5bwshSfMOC8aeV+snxkqYwqR+Q2eNdjiNPiblfZIPZrZtUp/TYPbg434T/NocHCw2K9iT6cApN010r5jz4FtD6ZAJPF4MNYo7l5o5Bc3eY+rVCIyfS63BAeCnRy1ukSPyFUvGODtMUf2jbhNnT6HxhgbVqJ5bTrwDTsRPcNciFzhCcBVD3y/b7eb3Uf7y9Xlhw07JBvZBN14aDYyNBorLDa4cOukFnFD72ewKhGIw4yD9lIR951kcPw75qoI= + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + + Aliyun_Log_Models_Request + \Aliyun_Log_Models_Request + + The base request of all sls request. + + + + + + $project + \Aliyun_Log_Models_Request::project + + + + + + string + + + + + __construct + \Aliyun_Log_Models_Request::__construct() + + Aliyun_Log_Models_Request constructor + + + string + + + + $project + + string + + + + getProject + \Aliyun_Log_Models_Request::getProject() + + Get project name + + + string + + + + + setProject + \Aliyun_Log_Models_Request::setProject() + + Set project name + + + string + + + + $project + + string + + + + + Argument $project is missing from the Docblock of __construct + Argument $project is missing from the Docblock of setProject + + eJy1kE1qwzAQhfeG3GEWWSSB1gfob/Ciq0JpujeyPYlVZEmVRoZQevdKthU3aZOUQgeDzczze9/M9Z2u9SRJF4tJAgvIlN4avqkJZtkcloIXrGCQCeUqP2u0Iy43nXIpBHRKCwYtmhar0E8nyej2UiMUzKJXvDm0BGoNzP9nhY2tyyDsxPfMUa1MGOYVtoNZKZi1AWTrZL7yo0dVoX89D47vIQ989ZmhvFXLvA8ZzwraqFcsCSRrMArS/kMb3jJCmA6aq7793e94fKmkz3ElKRPVI4VmhjWRI4bsxl/qFKMrBC9h7WRJXEnI813kLFrOwxWi15Rqbi9uo+XN4XYfx5Z8QPoRZNzHIDkjf3PYA+gN0lOvnu2xDob7yOc4V2c5/+Pudlzhr2f3zydyde7g + + + + Copyright (C) Alibaba Cloud Computing +All rights reserved + + + + + + Aliyun_Log_Models_Response + \Aliyun_Log_Models_Response + + The base response class of all sls response. + + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + + + + Argument $headers is missing from the Docblock of __construct + Argument $key is missing from the Docblock of getHeader + + eJyVlE2P2jAQhu9I/Ic5IBGQgHu33Q9x6PZQqdrlVq2QEw/E2mzs2mNaVPW/d4wd2EDYZa0osTzj18+8tvP5xpSm35uNx/0ejGGuzdaqdUmQzUdwV6lc5ALmlfaSYy/Gk6rXu8y7qoJdpgOLDu0GZRif9XsHtUWJkAuHIcPomjtFJZwDvQLB013l9pFpmLCbdCs8ldqG6FLiJonGiQy09fXykUPftUT+PDTKf8PCwC0uHhprbYQFYa3Ywv1i8ePAUaKQaJu8WewYqzaCEAYx6q7i8KnsGxgFv8n6gvRe/UBjhBUviWfQRoBX7RJUn1eqgJWvC1K6huVyv3DW4I+CJ43mgErlJtcpBF+Oi/x3rtavSLvNKolMYnGnlVkkb+sPWH3Ev0biA3Uf5bMWeZJuF3AJtTNYqJVC+Zr93Kawd3yyYfCM264t4WEgHTDP6iTOJNTlwRSGQ/it2Mwcm7LUCmrNrEjT9y2K/mQBsssi5VgGsrZTP0P20whujo9ADMAnhrrETSoD8y+PjkDJcIXjSLq+l5V2zq2D8PsmPMTcb7LzmCQPTood/pnwD2WSFlJy+ARdnnSktQ3i5z9A/3T/ + + + + + + + + + \Aliyun_Log_Models_Response + Aliyun_Log_Models_GetLogsResponse + \Aliyun_Log_Models_GetLogsResponse + + The response of the GetLog API from sls. + + + + + + + $count + \Aliyun_Log_Models_GetLogsResponse::count + + + + + + integer + + + + + $progress + \Aliyun_Log_Models_GetLogsResponse::progress + + + + + + string + + + + + $logs + \Aliyun_Log_Models_GetLogsResponse::logs + + + + + + array + + + + + $headers + \Aliyun_Log_Models_Response::headers + + + + + + array + + + + + __construct + \Aliyun_Log_Models_GetLogsResponse::__construct() + + Aliyun_Log_Models_GetLogsResponse constructor + + + array + + + array + + + + + $resp + + array + + + $header + + array + + + + getCount + \Aliyun_Log_Models_GetLogsResponse::getCount() + + Get log number from the response + + + integer + + + + + isCompleted + \Aliyun_Log_Models_GetLogsResponse::isCompleted() + + Check if the get logs query is completed + + + boolean + + + + + getLogs + \Aliyun_Log_Models_GetLogsResponse::getLogs() + + Get all logs from the response + + + array + + + + + __construct + \Aliyun_Log_Models_Response::__construct() + + Aliyun_Log_Models_Response constructor + + + array + + + + $headers + + + + \Aliyun_Log_Models_Response + + + getAllHeaders + \Aliyun_Log_Models_Response::getAllHeaders() + + Get all http headers + + + array + + + \Aliyun_Log_Models_Response + + + getHeader + \Aliyun_Log_Models_Response::getHeader() + + Get specified http header + + + string + + + string + + + + $key + + string + + \Aliyun_Log_Models_Response + + + getRequestId + \Aliyun_Log_Models_Response::getRequestId() + + Get the request id of the response. '' will be return if not set. + + + string + + + \Aliyun_Log_Models_Response + + + + No summary was found for this file + Argument $resp is missing from the Docblock of __construct + + eJytVNtu2kAQfUfiH+YBySai4T00bRHqJVIqpW3eosha7MFe1ew6e6FFVf69s14vNgFDI9VCgHfPnJkzt7fvq6IaDqYXF8MBXMBCVlvF88JAvBjDvORLtmSwKKXN6G5dWcNFXiPnZQk1UoNCjWqDmTufDgfDgcInyxUmUqRIt6ysmCnijCvB1hgnyaeb249JMoZLiKbfUVdSaLykOKLx7HXG3ywqjtmtzHfmrZb7wtl7dpArMPT+GQ2BYX53Aysl16BLfenAtcEHZk0hlTtMMtw0ctKSae1SsbUi+UFXX2WG9OOpdIgf8LdBkR1D7iB/iJIe/+3DdA953jAFXBjMUUFJAQq7XqIK91P/p1J8wwzCKJVWmFrrUSJtFFXJ8Wh4ogxt6YQZq2NXwRKJgUTeiPA27nNTKZlTAnW/J6YU2x5R3NbFQybAqF2csIwZ1ufPBTzrS9H5AqT0bZRNjdwlro22Yoqtm3hHrit2V52nYYQv9/d3bessZbbtISqQZW2ZzlPt44N+uyx5CisrUsOlgCTZKYnrUCfB0Th0UG3GFApzddWBQxyQMJ61yJEpuH7zru4auPby4SGq36PHQ2Coewcbjo7B6z67blISdx2vJM1vWriwGh6HjR6BaRi5ToA9RTUniaE5MrVzB5m9uDd8jeGOCJPEHSTJXmA1UEur0n2oPzoCtlScOns7713mvWT2w1v2A4Nuph4eKSaBv06PTeyVToKOScdZl/3Z/33uGxvqw85C8UvPdBbj4aQoNFaJf9hGL9o2R7NwHRXv1bRh67bg7EzIiwLTn8D9ws59/GGRcU1j7tdW1hv6UsoSaCDQk5DNGYYeRVyHFZmdEtWOyzVEwSI6p9IVplmK+hVl+T8b97B0blmdEtnZzSSJPn8BHDZWug== + + + + + + diff --git a/aliyun-log-php-sdk-master/sample/sample.php b/aliyun-log-php-sdk-master/sample/sample.php new file mode 100644 index 0000000..f88240c --- /dev/null +++ b/aliyun-log-php-sdk-master/sample/sample.php @@ -0,0 +1,203 @@ +'TestContent' + ); + $logItem = new Aliyun_Log_Models_LogItem(); + $logItem->setTime(time()); + $logItem->setContents($contents); + $logitems = array($logItem); + $request = new Aliyun_Log_Models_PutLogsRequest($project, $logstore, + $topic, null, $logitems); + + try { + $response = $client->putLogs($request); + var_dump($response); + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} + +function listLogstores(Aliyun_Log_Client $client, $project) { + try{ + $request = new Aliyun_Log_Models_ListLogstoresRequest($project); + $response = $client->listLogstores($request); + var_dump($response); + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} + + +function listTopics(Aliyun_Log_Client $client, $project, $logstore) { + $request = new Aliyun_Log_Models_ListTopicsRequest($project, $logstore); + + try { + $response = $client->listTopics($request); + var_dump($response); + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} + +function getLogs(Aliyun_Log_Client $client, $project, $logstore) { + $topic = 'TestTopic'; + $from = time()-3600; + $to = time(); + $request = new Aliyun_Log_Models_GetLogsRequest($project, $logstore, $from, $to, $topic, '', 100, 0, False); + + try { + $response = $client->getLogs($request); + foreach($response -> getLogs() as $log) + { + print $log -> getTime()."\t"; + foreach($log -> getContents() as $key => $value){ + print $key.":".$value."\t"; + } + print "\n"; + } + + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} + +function getHistograms(Aliyun_Log_Client $client, $project, $logstore) { + $topic = 'TestTopic'; + $from = time()-3600; + $to = time(); + $request = new Aliyun_Log_Models_GetHistogramsRequest($project, $logstore, $from, $to, $topic, ''); + + try { + $response = $client->getHistograms($request); + var_dump($response); + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} +function listShard(Aliyun_Log_Client $client,$project,$logstore){ + $request = new Aliyun_Log_Models_ListShardsRequest($project,$logstore); + try + { + $response = $client -> listShards($request); + var_dump($response); + } catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} +function batchGetLogs(Aliyun_Log_Client $client,$project,$logstore) +{ + $listShardRequest = new Aliyun_Log_Models_ListShardsRequest($project,$logstore); + $listShardResponse = $client -> listShards($listShardRequest); + foreach($listShardResponse-> getShardIds() as $shardId) + { + $getCursorRequest = new Aliyun_Log_Models_GetCursorRequest($project,$logstore,$shardId,null, time() - 60); + $response = $client -> getCursor($getCursorRequest); + $cursor = $response-> getCursor(); + $count = 100; + while(true) + { + $batchGetDataRequest = new Aliyun_Log_Models_BatchGetLogsRequest($project,$logstore,$shardId,$count,$cursor); + var_dump($batchGetDataRequest); + $response = $client -> batchGetLogs($batchGetDataRequest); + if($cursor == $response -> getNextCursor()) + { + break; + } + $logGroupList = $response -> getLogGroupList(); + foreach($logGroupList as $logGroup) + { + print ($logGroup->getCategory()); + + foreach($logGroup -> getLogsArray() as $log) + { + foreach($log -> getContentsArray() as $content) + { + print($content-> getKey().":".$content->getValue()."\t"); + } + print("\n"); + } + } + $cursor = $response -> getNextCursor(); + } + } +} +function deleteShard(Aliyun_Log_Client $client,$project,$logstore,$shardId) +{ + $request = new Aliyun_Log_Models_DeleteShardRequest($project,$logstore,$shardId); + try + { + $response = $client -> deleteShard($request); + var_dump($response); + }catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} +function mergeShard(Aliyun_Log_Client $client,$project,$logstore,$shardId) +{ + $request = new Aliyun_Log_Models_MergeShardsRequest($project,$logstore,$shardId); + try + { + $response = $client -> mergeShards($request); + var_dump($response); + }catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} +function splitShard(Aliyun_Log_Client $client,$project,$logstore,$shardId,$midHash) +{ + $request = new Aliyun_Log_Models_SplitShardRequest($project,$logstore,$shardId,$midHash); + try + { + $response = $client -> splitShard($request); + var_dump($response); + }catch (Aliyun_Log_Exception $ex) { + var_dump($ex); + } catch (Exception $ex) { + var_dump($ex); + } +} +$endpoint = 'succeedCallback = $succeedCallback; + $this->failedCallback = $failedCallback; + } + + public function onSucceed(BaseResponse $result) + { + return call_user_func($this->succeedCallback, $result); + } + + public function onFailed(MnsException $e) + { + return call_user_func($this->failedCallback, $e); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Client.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Client.php new file mode 100644 index 0000000..da2f4b8 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Client.php @@ -0,0 +1,249 @@ +client = new HttpClient($endPoint, $accessId, + $accessKey, $securityToken, $config); + } + + /** + * Returns a queue reference for operating on the queue + * this function does not create the queue automatically. + * + * @param string $queueName: the queue name + * @param bool $base64: whether the message in queue will be base64 encoded + * + * @return Queue $queue: the Queue instance + */ + public function getQueueRef($queueName, $base64 = TRUE) + { + return new Queue($this->client, $queueName, $base64); + } + + /** + * Create Queue and Returns the Queue reference + * + * @param CreateQueueRequest $request: the QueueName and QueueAttributes + * + * @return CreateQueueResponse $response: the CreateQueueResponse + * + * @throws QueueAlreadyExistException if queue already exists + * @throws InvalidArgumentException if any argument value is invalid + * @throws MnsException if any other exception happends + */ + public function createQueue(CreateQueueRequest $request) + { + $response = new CreateQueueResponse($request->getQueueName()); + return $this->client->sendRequest($request, $response); + } + + /** + * Create Queue and Returns the Queue reference + * The request will not be sent until calling MnsPromise->wait(); + * + * @param CreateQueueRequest $request: the QueueName and QueueAttributes + * @param AsyncCallback $callback: the Callback when the request finishes + * + * @return MnsPromise $promise: the MnsPromise instance + * + * @throws MnsException if any exception happends + */ + public function createQueueAsync(CreateQueueRequest $request, + AsyncCallback $callback = NULL) + { + $response = new CreateQueueResponse($request->getQueueName()); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * Query the queues created by current account + * + * @param ListQueueRequest $request: define filters for quering queues + * + * @return ListQueueResponse: the response containing queueNames + */ + public function listQueue(ListQueueRequest $request) + { + $response = new ListQueueResponse(); + return $this->client->sendRequest($request, $response); + } + + public function listQueueAsync(ListQueueRequest $request, + AsyncCallback $callback = NULL) + { + $response = new ListQueueResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * Delete the specified queue + * the request will succeed even when the queue does not exist + * + * @param $queueName: the queueName + * + * @return DeleteQueueResponse + */ + public function deleteQueue($queueName) + { + $request = new DeleteQueueRequest($queueName); + $response = new DeleteQueueResponse(); + return $this->client->sendRequest($request, $response); + } + + public function deleteQueueAsync($queueName, + AsyncCallback $callback = NULL) + { + $request = new DeleteQueueRequest($queueName); + $response = new DeleteQueueResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + // API for Topic + /** + * Returns a topic reference for operating on the topic + * this function does not create the topic automatically. + * + * @param string $topicName: the topic name + * + * @return Topic $topic: the Topic instance + */ + public function getTopicRef($topicName) + { + return new Topic($this->client, $topicName); + } + + /** + * Create Topic and Returns the Topic reference + * + * @param CreateTopicRequest $request: the TopicName and TopicAttributes + * + * @return CreateTopicResponse $response: the CreateTopicResponse + * + * @throws TopicAlreadyExistException if topic already exists + * @throws InvalidArgumentException if any argument value is invalid + * @throws MnsException if any other exception happends + */ + public function createTopic(CreateTopicRequest $request) + { + $response = new CreateTopicResponse($request->getTopicName()); + return $this->client->sendRequest($request, $response); + } + + /** + * Delete the specified topic + * the request will succeed even when the topic does not exist + * + * @param $topicName: the topicName + * + * @return DeleteTopicResponse + */ + public function deleteTopic($topicName) + { + $request = new DeleteTopicRequest($topicName); + $response = new DeleteTopicResponse(); + return $this->client->sendRequest($request, $response); + } + + /** + * Query the topics created by current account + * + * @param ListTopicRequest $request: define filters for quering topics + * + * @return ListTopicResponse: the response containing topicNames + */ + public function listTopic(ListTopicRequest $request) + { + $response = new ListTopicResponse(); + return $this->client->sendRequest($request, $response); + } + + /** + * Query the AccountAttributes + * + * @return GetAccountAttributesResponse: the response containing topicNames + * @throws MnsException if any exception happends + */ + public function getAccountAttributes() + { + $request = new GetAccountAttributesRequest(); + $response = new GetAccountAttributesResponse(); + return $this->client->sendRequest($request, $response); + } + + public function getAccountAttributesAsync(AsyncCallback $callback = NULL) + { + $request = new GetAccountAttributesRequest(); + $response = new GetAccountAttributesResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * Set the AccountAttributes + * + * @param AccountAttributes $attributes: the AccountAttributes to set + * + * @return SetAccountAttributesResponse: the response + * + * @throws MnsException if any exception happends + */ + public function setAccountAttributes(AccountAttributes $attributes) + { + $request = new SetAccountAttributesRequest($attributes); + $response = new SetAccountAttributesResponse(); + return $this->client->sendRequest($request, $response); + } + + public function setAccountAttributesAsync(AccountAttributes $attributes, + AsyncCallback $callback = NULL) + { + $request = new SetAccountAttributesRequest($attributes); + $response = new SetAccountAttributesResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Common/XMLParser.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Common/XMLParser.php new file mode 100644 index 0000000..9925995 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Common/XMLParser.php @@ -0,0 +1,51 @@ + NULL, 'Message' => NULL, 'RequestId' => NULL, 'HostId' => NULL); + while ($xmlReader->Read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'Code': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $result['Code'] = $xmlReader->value; + } + break; + case 'Message': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $result['Message'] = $xmlReader->value; + } + break; + case 'RequestId': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $result['RequestId'] = $xmlReader->value; + } + break; + case 'HostId': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $result['HostId'] = $xmlReader->value; + } + break; + } + } + } + return $result; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Config.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Config.php new file mode 100644 index 0000000..4898fcd --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Config.php @@ -0,0 +1,74 @@ +maxAttempts = 3; + $this->proxy = NULL; + $this->requestTimeout = 35; // 35 seconds + $this->connectTimeout = 3; // 3 seconds + $this->expectContinue = false; + } + + /* + public function getMaxAttempts() + { + return $this->maxAttempts; + } + + public function setMaxAttempts($maxAttempts) + { + $this->maxAttempts = $maxAttempts; + } + */ + + public function getProxy() + { + return $this->proxy; + } + + public function setProxy($proxy) + { + $this->proxy = $proxy; + } + + public function getRequestTimeout() + { + return $this->requestTimeout; + } + + public function setRequestTimeout($requestTimeout) + { + $this->requestTimeout = $requestTimeout; + } + + public function setConnectTimeout($connectTimeout) + { + $this->connectTimeout = $connectTimeout; + } + + public function getConnectTimeout() + { + return $this->connectTimeout; + } + + public function getExpectContinue() + { + return $this->expectContinue; + } + + public function setExpectContinue($expectContinue) + { + $this->expectContinue = $expectContinue; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Constants.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Constants.php new file mode 100644 index 0000000..3cd8afa --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Constants.php @@ -0,0 +1,76 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchDeleteFailException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchDeleteFailException.php new file mode 100644 index 0000000..8bc987c --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchDeleteFailException.php @@ -0,0 +1,35 @@ +deleteMessageErrorItems = array(); + } + + public function addDeleteMessageErrorItem(DeleteMessageErrorItem $item) + { + $this->deleteMessageErrorItems[] = $item; + } + + public function getDeleteMessageErrorItems() + { + return $this->deleteMessageErrorItems; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchSendFailException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchSendFailException.php new file mode 100644 index 0000000..da460f9 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/BatchSendFailException.php @@ -0,0 +1,35 @@ +sendMessageResponseItems = array(); + } + + public function addSendMessageResponseItem(SendMessageResponseItem $item) + { + $this->sendMessageResponseItems[] = $item; + } + + public function getSendMessageResponseItems() + { + return $this->sendMessageResponseItems; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/InvalidArgumentException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/InvalidArgumentException.php new file mode 100644 index 0000000..b4b8caf --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/InvalidArgumentException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MalformedXMLException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MalformedXMLException.php new file mode 100644 index 0000000..21ebc34 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MalformedXMLException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MessageNotExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MessageNotExistException.php new file mode 100644 index 0000000..f57e404 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MessageNotExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MnsException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MnsException.php new file mode 100644 index 0000000..17f02e6 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/MnsException.php @@ -0,0 +1,65 @@ += 500) + { + $mnsErrorCode = "ServerError"; + } + else + { + $mnsErrorCode = "ClientError"; + } + } + $this->mnsErrorCode = $mnsErrorCode; + + $this->requestId = $requestId; + $this->hostId = $hostId; + } + + public function __toString() + { + $str = "Code: " . $this->getCode() . " Message: " . $this->getMessage(); + if ($this->mnsErrorCode != NULL) + { + $str .= " MnsErrorCode: " . $this->mnsErrorCode; + } + if ($this->requestId != NULL) + { + $str .= " RequestId: " . $this->requestId; + } + if ($this->hostId != NULL) + { + $str .= " HostId: " . $this->hostId; + } + return $str; + } + + public function getMnsErrorCode() + { + return $this->mnsErrorCode; + } + + public function getRequestId() + { + return $this->requestId; + } + + public function getHostId() + { + return $this->hostId; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueAlreadyExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueAlreadyExistException.php new file mode 100644 index 0000000..4fbf87c --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueAlreadyExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueNotExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueNotExistException.php new file mode 100644 index 0000000..ac176de --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/QueueNotExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/ReceiptHandleErrorException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/ReceiptHandleErrorException.php new file mode 100644 index 0000000..352377e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/ReceiptHandleErrorException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionAlreadyExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionAlreadyExistException.php new file mode 100644 index 0000000..828ba40 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionAlreadyExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionNotExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionNotExistException.php new file mode 100644 index 0000000..f3397ff --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/SubscriptionNotExistException.php @@ -0,0 +1,9 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicAlreadyExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicAlreadyExistException.php new file mode 100644 index 0000000..5adc8ed --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicAlreadyExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicNotExistException.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicNotExistException.php new file mode 100644 index 0000000..f92a5d3 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Exception/TopicNotExistException.php @@ -0,0 +1,10 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Http/HttpClient.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Http/HttpClient.php new file mode 100644 index 0000000..4d48858 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Http/HttpClient.php @@ -0,0 +1,167 @@ +accessId = $accessId; + $this->accessKey = $accessKey; + $this->client = new \GuzzleHttp\Client([ + 'base_uri' => $endPoint, + 'defaults' => [ + 'headers' => [ + 'Host' => $endPoint + ], + 'proxy' => $config->getProxy(), + 'expect' => $config->getExpectContinue() + ] + ]); + $this->requestTimeout = $config->getRequestTimeout(); + $this->connectTimeout = $config->getConnectTimeout(); + $this->securityToken = $securityToken; + $this->endpoint = $endPoint; + $this->parseEndpoint(); + } + + public function getRegion() + { + return $this->region; + } + + public function getAccountId() + { + return $this->accountId; + } + + // This function is for SDK internal use + private function parseEndpoint() + { + $pieces = explode("//", $this->endpoint); + $host = end($pieces); + + $host_pieces = explode(".", $host); + $this->accountId = $host_pieces[0]; + $region_pieces = explode("-internal", $host_pieces[2]); + $this->region = $region_pieces[0]; + } + + private function addRequiredHeaders(BaseRequest &$request) + { + $body = $request->generateBody(); + $queryString = $request->generateQueryString(); + + $request->setBody($body); + $request->setQueryString($queryString); + + if ($body != NULL) + { + $request->setHeader(Constants::CONTENT_LENGTH, strlen($body)); + } + $request->setHeader('Date', gmdate(Constants::GMT_DATE_FORMAT)); + if (!$request->isHeaderSet(Constants::CONTENT_TYPE)) + { + $request->setHeader(Constants::CONTENT_TYPE, 'text/xml'); + } + $request->setHeader(Constants::MNS_VERSION_HEADER, Constants::MNS_VERSION); + + if ($this->securityToken != NULL) + { + $request->setHeader(Constants::SECURITY_TOKEN, $this->securityToken); + } + + $sign = Signature::SignRequest($this->accessKey, $request); + $request->setHeader(Constants::AUTHORIZATION, + Constants::MNS . " " . $this->accessId . ":" . $sign); + } + + public function sendRequestAsync(BaseRequest $request, + BaseResponse &$response, AsyncCallback $callback = NULL) + { + $promise = $this->sendRequestAsyncInternal($request, $response, $callback); + return new MnsPromise($promise, $response); + } + + public function sendRequest(BaseRequest $request, BaseResponse &$response) + { + $promise = $this->sendRequestAsync($request, $response); + return $promise->wait(); + } + + private function sendRequestAsyncInternal(BaseRequest &$request, BaseResponse &$response, AsyncCallback $callback = NULL) + { + $this->addRequiredHeaders($request); + + $parameters = array('exceptions' => false, 'http_errors' => false); + $queryString = $request->getQueryString(); + $body = $request->getBody(); + if ($queryString != NULL) { + $parameters['query'] = $queryString; + } + if ($body != NULL) { + $parameters['body'] = $body; + } + + $parameters['timeout'] = $this->requestTimeout; + $parameters['connect_timeout'] = $this->connectTimeout; + + $request = new Request(strtoupper($request->getMethod()), + $request->getResourcePath(), $request->getHeaders()); + try + { + if ($callback != NULL) + { + return $this->client->sendAsync($request, $parameters)->then( + function ($res) use (&$response, $callback) { + try { + $response->parseResponse($res->getStatusCode(), $res->getBody()); + $callback->onSucceed($response); + } catch (MnsException $e) { + $callback->onFailed($e); + } + } + ); + } + else + { + return $this->client->sendAsync($request, $parameters); + } + } + catch (TransferException $e) + { + $message = $e->getMessage(); + if ($e->hasResponse()) { + $message = $e->getResponse()->getBody(); + } + throw new MnsException($e->getCode(), $message, $e); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/AccountAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/AccountAttributes.php new file mode 100644 index 0000000..8127b83 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/AccountAttributes.php @@ -0,0 +1,64 @@ +loggingBucket = $loggingBucket; + } + + public function setLoggingBucket($loggingBucket) + { + $this->loggingBucket = $loggingBucket; + } + + public function getLoggingBucket() + { + return $this->loggingBucket; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + if ($this->loggingBucket !== NULL) + { + $xmlWriter->writeElement(Constants::LOGGING_BUCKET, $this->loggingBucket); + } + } + + static public function fromXML(\XMLReader $xmlReader) + { + $loggingBucket = NULL; + + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'LoggingBucket': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $loggingBucket = $xmlReader->value; + } + break; + } + } + } + + $attributes = new AccountAttributes($loggingBucket); + return $attributes; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/BatchSmsAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/BatchSmsAttributes.php new file mode 100644 index 0000000..9f7399a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/BatchSmsAttributes.php @@ -0,0 +1,97 @@ +freeSignName = $freeSignName; + $this->templateCode = $templateCode; + $this->smsParams = $smsParams; + } + + public function setFreeSignName($freeSignName) + { + $this->freeSignName = $freeSignName; + } + + public function getFreeSignName() + { + return $this->freeSignName; + } + + public function setTemplateCode($templateCode) + { + $this->templateCode = $templateCode; + } + + public function getTemplateCode() + { + return $this->templateCode; + } + + public function addReceiver($phone, $params) + { + if (!is_array($params)) + { + throw new MnsException(400, "Params Should be Array!"); + } + + if ($this->smsParams == null) + { + $this->smsParams = array(); + } + + $this->smsParams[$phone] = $params; + } + + public function getSmsParams() + { + return $this->smsParams; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + $jsonArray = array("Type" => "multiContent"); + if ($this->freeSignName !== NULL) + { + $jsonArray[Constants::FREE_SIGN_NAME] = $this->freeSignName; + } + if ($this->templateCode !== NULL) + { + $jsonArray[Constants::TEMPLATE_CODE] = $this->templateCode; + } + + if ($this->smsParams != null) + { + if (!is_array($this->smsParams)) + { + throw new MnsException(400, "SmsParams should be an array!"); + } + if (!empty($this->smsParams)) + { + $jsonArray[Constants::SMS_PARAMS] = json_encode($this->smsParams); + } + } + + if (!empty($jsonArray)) + { + $xmlWriter->writeElement(Constants::DIRECT_SMS, json_encode($jsonArray)); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/DeleteMessageErrorItem.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/DeleteMessageErrorItem.php new file mode 100644 index 0000000..137a262 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/DeleteMessageErrorItem.php @@ -0,0 +1,83 @@ +errorCode = $errorCode; + $this->errorMessage = $errorMessage; + $this->receiptHandle = $receiptHandle; + } + + public function getErrorCode() + { + return $this->errorCode; + } + + public function getErrorMessage() + { + return $this->errorMessage; + } + + public function getReceiptHandle() + { + return $this->receiptHandle; + } + + static public function fromXML($xmlReader) + { + $errorCode = NULL; + $errorMessage = NULL; + $receiptHandle = NULL; + + while ($xmlReader->read()) + { + switch ($xmlReader->nodeType) + { + case \XMLReader::ELEMENT: + switch ($xmlReader->name) + { + case Constants::ERROR_CODE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $errorCode = $xmlReader->value; + } + break; + case Constants::ERROR_MESSAGE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $errorMessage = $xmlReader->value; + } + break; + case Constants::RECEIPT_HANDLE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $receiptHandle = $xmlReader->value; + } + break; + } + break; + case \XMLReader::END_ELEMENT: + if ($xmlReader->name == Constants::ERROR) + { + return new DeleteMessageErrorItem($errorCode, $errorMessage, $receiptHandle); + } + break; + } + } + + return new DeleteMessageErrorItem($errorCode, $errorMessage, $receiptHandle); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MailAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MailAttributes.php new file mode 100644 index 0000000..bb74170 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MailAttributes.php @@ -0,0 +1,128 @@ +subject = $subject; + $this->accountName = $accountName; + $this->addressType = $addressType; + $this->replyToAddress = $replyToAddress; + $this->isHtml = $isHtml; + } + + public function setSubject($subject) + { + $this->subject = $subject; + } + + public function getSubject() + { + return $this->subject; + } + + public function setAccountName($accountName) + { + $this->accountName = $accountName; + } + + public function getAccountName() + { + return $this->accountName; + } + + public function setAddressType($addressType) + { + $this->addressType = $addressType; + } + + public function getAddressType() + { + return $this->addressType; + } + + public function setReplyToAddress($replyToAddress) + { + $this->replyToAddress = $replyToAddress; + } + + public function getReplyToAddress() + { + return $this->replyToAddress; + } + + public function setIsHtml($isHtml) + { + $this->isHtml = $isHtml; + } + + public function getIsHtml() + { + return $this->isHtml; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + $jsonArray = array(); + if ($this->subject !== NULL) + { + $jsonArray[Constants::SUBJECT] = $this->subject; + } + if ($this->accountName !== NULL) + { + $jsonArray[Constants::ACCOUNT_NAME] = $this->accountName; + } + if ($this->addressType !== NULL) + { + $jsonArray[Constants::ADDRESS_TYPE] = $this->addressType; + } + else + { + $jsonArray[Constants::ADDRESS_TYPE] = 0; + } + if ($this->replyToAddress !== NULL) + { + if ($this->replyToAddress === TRUE) + { + $jsonArray[Constants::REPLY_TO_ADDRESS] = "1"; + } + else + { + $jsonArray[Constants::REPLY_TO_ADDRESS] = "0"; + } + } + if ($this->isHtml !== NULL) + { + if ($this->isHtml === TRUE) + { + $jsonArray[Constants::IS_HTML] = "1"; + } + else + { + $jsonArray[Constants::IS_HTML] = "0"; + } + } + + if (!empty($jsonArray)) + { + $xmlWriter->writeElement(Constants::DIRECT_MAIL, json_encode($jsonArray)); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/Message.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/Message.php new file mode 100644 index 0000000..5dc67ac --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/Message.php @@ -0,0 +1,145 @@ +messageId = $messageId; + $this->messageBodyMD5 = $messageBodyMD5; + $this->messageBody = $messageBody; + $this->enqueueTime = $enqueueTime; + $this->nextVisibleTime = $nextVisibleTime; + $this->firstDequeueTime = $firstDequeueTime; + $this->dequeueCount = $dequeueCount; + $this->priority = $priority; + $this->receiptHandle = $receiptHandle; + } + + static public function fromXML(\XMLReader $xmlReader, $base64) + { + $messageId = NULL; + $messageBodyMD5 = NULL; + $messageBody = NULL; + $enqueueTime = NULL; + $nextVisibleTime = NULL; + $firstDequeueTime = NULL; + $dequeueCount = NULL; + $priority = NULL; + $receiptHandle = NULL; + + while ($xmlReader->read()) + { + switch ($xmlReader->nodeType) + { + case \XMLReader::ELEMENT: + switch ($xmlReader->name) { + case Constants::MESSAGE_ID: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageId = $xmlReader->value; + } + break; + case Constants::MESSAGE_BODY_MD5: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageBodyMD5 = $xmlReader->value; + } + break; + case Constants::MESSAGE_BODY: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + if ($base64 == TRUE) { + $messageBody = base64_decode($xmlReader->value); + } else { + $messageBody = $xmlReader->value; + } + } + break; + case Constants::ENQUEUE_TIME: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $enqueueTime = $xmlReader->value; + } + break; + case Constants::NEXT_VISIBLE_TIME: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $nextVisibleTime = $xmlReader->value; + } + break; + case Constants::FIRST_DEQUEUE_TIME: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $firstDequeueTime = $xmlReader->value; + } + break; + case Constants::DEQUEUE_COUNT: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $dequeueCount = $xmlReader->value; + } + break; + case Constants::PRIORITY: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $priority = $xmlReader->value; + } + break; + case Constants::RECEIPT_HANDLE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $receiptHandle = $xmlReader->value; + } + break; + } + break; + case \XMLReader::END_ELEMENT: + if ($xmlReader->name == 'Message') + { + $message = new Message( + $messageId, + $messageBodyMD5, + $messageBody, + $enqueueTime, + $nextVisibleTime, + $firstDequeueTime, + $dequeueCount, + $priority, + $receiptHandle); + return $message; + } + break; + } + } + + $message = new Message( + $messageId, + $messageBodyMD5, + $messageBody, + $enqueueTime, + $nextVisibleTime, + $firstDequeueTime, + $dequeueCount, + $priority, + $receiptHandle); + + return $message; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MessageAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MessageAttributes.php new file mode 100644 index 0000000..d676c7e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/MessageAttributes.php @@ -0,0 +1,53 @@ +attributes = $attributes; + } + + public function setAttributes($attributes) + { + $this->attributes = $attributes; + } + + public function getAttributes() + { + return $this->attributes; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + $xmlWriter->startELement(Constants::MESSAGE_ATTRIBUTES); + if ($this->attributes != NULL) + { + if (is_array($this->attributes)) + { + foreach ($this->attributes as $subAttributes) + { + $subAttributes->writeXML($xmlWriter); + } + } + else + { + $this->attributes->writeXML($xmlWriter); + } + } + $xmlWriter->endElement(); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/QueueAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/QueueAttributes.php new file mode 100644 index 0000000..ae9b7ec --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/QueueAttributes.php @@ -0,0 +1,308 @@ +delaySeconds = $delaySeconds; + $this->maximumMessageSize = $maximumMessageSize; + $this->messageRetentionPeriod = $messageRetentionPeriod; + $this->visibilityTimeout = $visibilityTimeout; + $this->pollingWaitSeconds = $pollingWaitSeconds; + $this->loggingEnabled = $LoggingEnabled; + + $this->queueName = $queueName; + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + $this->activeMessages = $activeMessages; + $this->inactiveMessages = $inactiveMessages; + $this->delayMessages = $delayMessages; + } + + public function setDelaySeconds($delaySeconds) + { + $this->delaySeconds = $delaySeconds; + } + + public function getDelaySeconds() + { + return $this->delaySeconds; + } + + public function setLoggingEnabled($loggingEnabled) + { + $this->loggingEnabled = $loggingEnabled; + } + + public function getLoggingEnabled() + { + return $this->loggingEnabled; + } + + public function setMaximumMessageSize($maximumMessageSize) + { + $this->maximumMessageSize = $maximumMessageSize; + } + + public function getMaximumMessageSize() + { + return $this->maximumMessageSize; + } + + public function setMessageRetentionPeriod($messageRetentionPeriod) + { + $this->messageRetentionPeriod = $messageRetentionPeriod; + } + + public function getMessageRetentionPeriod() + { + return $this->messageRetentionPeriod; + } + + public function setVisibilityTimeout($visibilityTimeout) + { + $this->visibilityTimeout = $visibilityTimeout; + } + + public function getVisibilityTimeout() + { + return $this->visibilityTimeout; + } + + public function setPollingWaitSeconds($pollingWaitSeconds) + { + $this->pollingWaitSeconds = $pollingWaitSeconds; + } + + public function getPollingWaitSeconds() + { + return $this->pollingWaitSeconds; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getCreateTime() + { + return $this->createTime; + } + + public function getLastModifyTime() + { + return $this->lastModifyTime; + } + + public function getActiveMessages() + { + return $this->activeMessages; + } + + public function getInactiveMessages() + { + return $this->inactiveMessages; + } + + public function getDelayMessages() + { + return $this->delayMessages; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + if ($this->delaySeconds != NULL) + { + $xmlWriter->writeElement(Constants::DELAY_SECONDS, $this->delaySeconds); + } + if ($this->maximumMessageSize != NULL) + { + $xmlWriter->writeElement(Constants::MAXIMUM_MESSAGE_SIZE, $this->maximumMessageSize); + } + if ($this->messageRetentionPeriod != NULL) + { + $xmlWriter->writeElement(Constants::MESSAGE_RETENTION_PERIOD, $this->messageRetentionPeriod); + } + if ($this->visibilityTimeout != NULL) + { + $xmlWriter->writeElement(Constants::VISIBILITY_TIMEOUT, $this->visibilityTimeout); + } + if ($this->pollingWaitSeconds != NULL) + { + $xmlWriter->writeElement(Constants::POLLING_WAIT_SECONDS, $this->pollingWaitSeconds); + } + if ($this->loggingEnabled !== NULL) + { + $xmlWriter->writeElement(Constants::LOGGING_ENABLED, $this->loggingEnabled ? "True" : "False"); + } + } + + static public function fromXML(\XMLReader $xmlReader) + { + $delaySeconds = NULL; + $maximumMessageSize = NULL; + $messageRetentionPeriod = NULL; + $visibilityTimeout = NULL; + $pollingWaitSeconds = NULL; + $queueName = NULL; + $createTime = NULL; + $lastModifyTime = NULL; + $activeMessages = NULL; + $inactiveMessages = NULL; + $delayMessages = NULL; + $loggingEnabled = NULL; + + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'DelaySeconds': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $delaySeconds = $xmlReader->value; + } + break; + case 'MaximumMessageSize': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $maximumMessageSize = $xmlReader->value; + } + break; + case 'MessageRetentionPeriod': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageRetentionPeriod = $xmlReader->value; + } + break; + case 'VisibilityTimeout': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $visibilityTimeout = $xmlReader->value; + } + break; + case 'PollingWaitSeconds': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $pollingWaitSeconds = $xmlReader->value; + } + break; + case 'QueueName': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $queueName = $xmlReader->value; + } + break; + case 'CreateTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $createTime = $xmlReader->value; + } + break; + case 'LastModifyTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $lastModifyTime = $xmlReader->value; + } + break; + case 'ActiveMessages': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $activeMessages = $xmlReader->value; + } + break; + case 'InactiveMessages': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $inactiveMessages = $xmlReader->value; + } + break; + case 'DelayMessages': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $delayMessages = $xmlReader->value; + } + break; + case 'LoggingEnabled': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $loggingEnabled = $xmlReader->value; + if ($loggingEnabled == "True") + { + $loggingEnabled = True; + } + else + { + $loggingEnabled = False; + } + } + break; + } + } + } + + $attributes = new QueueAttributes( + $delaySeconds, + $maximumMessageSize, + $messageRetentionPeriod, + $visibilityTimeout, + $pollingWaitSeconds, + $queueName, + $createTime, + $lastModifyTime, + $activeMessages, + $inactiveMessages, + $delayMessages, + $loggingEnabled); + return $attributes; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageRequestItem.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageRequestItem.php new file mode 100644 index 0000000..66deb16 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageRequestItem.php @@ -0,0 +1,27 @@ +messageBody = $messageBody; + $this->delaySeconds = $delaySeconds; + $this->priority = $priority; + } + + public function writeXML(\XMLWriter $xmlWriter, $base64) + { + $xmlWriter->startELement('Message'); + $this->writeMessagePropertiesForSendXML($xmlWriter, $base64); + $xmlWriter->endElement(); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageResponseItem.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageResponseItem.php new file mode 100644 index 0000000..20e4cbb --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SendMessageResponseItem.php @@ -0,0 +1,119 @@ +isSucceed = $isSucceed; + if ($isSucceed == TRUE) + { + $this->messageId = $param1; + $this->messageBodyMD5 = $param2; + } + else + { + $this->errorCode = $param1; + $this->errorMessage = $param2; + } + } + + public function isSucceed() + { + return $this->isSucceed; + } + + public function getErrorCode() + { + return $this->errorCode; + } + + public function getErrorMessage() + { + return $this->errorMessage; + } + + static public function fromXML($xmlReader) + { + $messageId = NULL; + $messageBodyMD5 = NULL; + $errorCode = NULL; + $errorMessage = NULL; + + while ($xmlReader->read()) + { + switch ($xmlReader->nodeType) + { + case \XMLReader::ELEMENT: + switch ($xmlReader->name) { + case Constants::MESSAGE_ID: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageId = $xmlReader->value; + } + break; + case Constants::MESSAGE_BODY_MD5: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageBodyMD5 = $xmlReader->value; + } + break; + case Constants::ERROR_CODE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $errorCode = $xmlReader->value; + } + break; + case Constants::ERROR_MESSAGE: + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $errorMessage = $xmlReader->value; + } + break; + } + break; + case \XMLReader::END_ELEMENT: + if ($xmlReader->name == 'Message') + { + if ($messageId != NULL) + { + return new SendMessageResponseItem(TRUE, $messageId, $messageBodyMD5); + } + else + { + return new SendMessageResponseItem(FALSE, $errorCode, $errorMessage); + } + } + break; + } + } + + if ($messageId != NULL) + { + return new SendMessageResponseItem(TRUE, $messageId, $messageBodyMD5); + } + else + { + return new SendMessageResponseItem(FALSE, $errorCode, $errorMessage); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SmsAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SmsAttributes.php new file mode 100644 index 0000000..bdd7e2f --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SmsAttributes.php @@ -0,0 +1,103 @@ +freeSignName = $freeSignName; + $this->templateCode = $templateCode; + $this->smsParams = $smsParams; + $this->receiver = $receiver; + } + + public function setFreeSignName($freeSignName) + { + $this->freeSignName = $freeSignName; + } + + public function getFreeSignName() + { + return $this->freeSignName; + } + + public function setTemplateCode($templateCode) + { + $this->templateCode = $templateCode; + } + + public function getTemplateCode() + { + return $this->templateCode; + } + + public function setSmsParams($smsParams) + { + $this->smsParams = $smsParams; + } + + public function getSmsParams() + { + return $this->smsParams; + } + + public function setReceiver($receiver) + { + $this->receiver = $receiver; + } + + public function getReceiver() + { + return $this->receiver; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + $jsonArray = array(); + if ($this->freeSignName !== NULL) + { + $jsonArray[Constants::FREE_SIGN_NAME] = $this->freeSignName; + } + if ($this->templateCode !== NULL) + { + $jsonArray[Constants::TEMPLATE_CODE] = $this->templateCode; + } + if ($this->receiver !== NULL) + { + $jsonArray[Constants::RECEIVER] = $this->receiver; + } + + if ($this->smsParams != null) + { + if (!is_array($this->smsParams)) + { + throw new MnsException(400, "SmsParams should be an array!"); + } + if (!empty($this->smsParams)) + { + $jsonArray[Constants::SMS_PARAMS] = json_encode($this->smsParams); + } + } + + if (!empty($jsonArray)) + { + $xmlWriter->writeElement(Constants::DIRECT_SMS, json_encode($jsonArray)); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SubscriptionAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SubscriptionAttributes.php new file mode 100644 index 0000000..e8eb534 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/SubscriptionAttributes.php @@ -0,0 +1,207 @@ +endpoint = $endpoint; + $this->strategy = $strategy; + $this->contentFormat = $contentFormat; + $this->subscriptionName = $subscriptionName; + + //cloud change in AliyunMNS\Topic + $this->topicName = $topicName; + + $this->topicOwner = $topicOwner; + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + } + + public function getEndpoint() + { + return $this->endpoint; + } + + public function setEndpoint($endpoint) + { + $this->endpoint = $endpoint; + } + + public function getStrategy() + { + return $this->strategy; + } + + public function setStrategy($strategy) + { + $this->strategy = $strategy; + } + + public function getContentFormat() + { + return $this->contentFormat; + } + + public function setContentFormat($contentFormat) + { + $this->contentFormat = $contentFormat; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function setTopicName($topicName) + { + $this->topicName = $topicName; + } + + public function getTopicOwner() + { + return $this->topicOwner; + } + + public function getSubscriptionName() + { + return $this->subscriptionName; + } + + public function getCreateTime() + { + return $this->createTime; + } + + public function getLastModifyTime() + { + return $this->lastModifyTime; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + if ($this->endpoint != NULL) + { + $xmlWriter->writeElement(Constants::ENDPOINT, $this->endpoint); + } + if ($this->strategy != NULL) + { + $xmlWriter->writeElement(Constants::STRATEGY, $this->strategy); + } + if ($this->contentFormat != NULL) + { + $xmlWriter->writeElement(Constants::CONTENT_FORMAT, $this->contentFormat); + } + } + + static public function fromXML(\XMLReader $xmlReader) + { + $endpoint = NULL; + $strategy = NULL; + $contentFormat = NULL; + $topicOwner = NULL; + $topicName = NULL; + $createTime = NULL; + $lastModifyTime = NULL; + + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'TopicOwner': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $topicOwner = $xmlReader->value; + } + break; + case 'TopicName': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $topicName = $xmlReader->value; + } + break; + case 'SubscriptionName': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $subscriptionName = $xmlReader->value; + } + case 'Endpoint': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $endpoint = $xmlReader->value; + } + break; + case 'NotifyStrategy': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $strategy = $xmlReader->value; + } + break; + case 'NotifyContentFormat': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $contentFormat = $xmlReader->value; + } + break; + case 'CreateTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $createTime = $xmlReader->value; + } + break; + case 'LastModifyTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $lastModifyTime = $xmlReader->value; + } + break; + } + } + } + + $attributes = new SubscriptionAttributes( + $subscriptionName, + $endpoint, + $strategy, + $contentFormat, + $topicName, + $topicOwner, + $createTime, + $lastModifyTime); + return $attributes; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/TopicAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/TopicAttributes.php new file mode 100644 index 0000000..e7d5c11 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/TopicAttributes.php @@ -0,0 +1,179 @@ +maximumMessageSize = $maximumMessageSize; + $this->messageRetentionPeriod = $messageRetentionPeriod; + $this->loggingEnabled = $LoggingEnabled; + + $this->topicName = $topicName; + $this->createTime = $createTime; + $this->lastModifyTime = $lastModifyTime; + } + + public function setMaximumMessageSize($maximumMessageSize) + { + $this->maximumMessageSize = $maximumMessageSize; + } + + public function getMaximumMessageSize() + { + return $this->maximumMessageSize; + } + + public function setLoggingEnabled($loggingEnabled) + { + $this->loggingEnabled = $loggingEnabled; + } + + public function getLoggingEnabled() + { + return $this->loggingEnabled; + } + + public function setMessageRetentionPeriod($messageRetentionPeriod) + { + $this->messageRetentionPeriod = $messageRetentionPeriod; + } + + public function getMessageRetentionPeriod() + { + return $this->messageRetentionPeriod; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getCreateTime() + { + return $this->createTime; + } + + public function getLastModifyTime() + { + return $this->lastModifyTime; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + if ($this->maximumMessageSize != NULL) + { + $xmlWriter->writeElement(Constants::MAXIMUM_MESSAGE_SIZE, $this->maximumMessageSize); + } + if ($this->messageRetentionPeriod != NULL) + { + $xmlWriter->writeElement(Constants::MESSAGE_RETENTION_PERIOD, $this->messageRetentionPeriod); + } + if ($this->loggingEnabled !== NULL) + { + $xmlWriter->writeElement(Constants::LOGGING_ENABLED, $this->loggingEnabled ? "True" : "False"); + } + } + + static public function fromXML(\XMLReader $xmlReader) + { + $maximumMessageSize = NULL; + $messageRetentionPeriod = NULL; + $topicName = NULL; + $createTime = NULL; + $lastModifyTime = NULL; + $loggingEnabled = NULL; + + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'MaximumMessageSize': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $maximumMessageSize = $xmlReader->value; + } + break; + case 'MessageRetentionPeriod': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $messageRetentionPeriod = $xmlReader->value; + } + break; + case 'TopicName': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $topicName = $xmlReader->value; + } + break; + case 'CreateTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $createTime = $xmlReader->value; + } + break; + case 'LastModifyTime': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $lastModifyTime = $xmlReader->value; + } + break; + case 'LoggingEnabled': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $loggingEnabled = $xmlReader->value; + if ($loggingEnabled == "True") + { + $loggingEnabled = True; + } + else + { + $loggingEnabled = False; + } + } + break; + } + } + } + + $attributes = new TopicAttributes( + $maximumMessageSize, + $messageRetentionPeriod, + $topicName, + $createTime, + $lastModifyTime, + $loggingEnabled); + return $attributes; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/UpdateSubscriptionAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/UpdateSubscriptionAttributes.php new file mode 100644 index 0000000..f1b2079 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/UpdateSubscriptionAttributes.php @@ -0,0 +1,58 @@ +subscriptionName = $subscriptionName; + + $this->strategy = $strategy; + } + + public function getStrategy() + { + return $this->strategy; + } + + public function setStrategy($strategy) + { + $this->strategy = $strategy; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function setTopicName($topicName) + { + $this->topicName = $topicName; + } + + public function getSubscriptionName() + { + return $this->subscriptionName; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + if ($this->strategy != NULL) + { + $xmlWriter->writeElement(Constants::STRATEGY, $this->strategy); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/WebSocketAttributes.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/WebSocketAttributes.php new file mode 100644 index 0000000..c38785b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Model/WebSocketAttributes.php @@ -0,0 +1,33 @@ +importanceLevel = $importanceLevel; + } + + public function setImportanceLevel($importanceLevel) + { + $this->importanceLevel = $importanceLevel; + } + + public function getImportanceLevel() + { + return $this->importanceLevel; + } + + public function writeXML(\XMLWriter $xmlWriter) + { + $jsonArray = array(Constants::IMPORTANCE_LEVEL => $this->importanceLevel); + $xmlWriter->writeElement(Constants::WEBSOCKET, json_encode($jsonArray)); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Queue.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Queue.php new file mode 100644 index 0000000..8d63d51 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Queue.php @@ -0,0 +1,377 @@ +queueName = $queueName; + $this->client = $client; + $this->base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function getQueueName() + { + return $this->queueName; + } + + /** + * Set the QueueAttributes, detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&queue_operation + * + * @param QueueAttributes $attributes: the QueueAttributes to set + * + * @return SetQueueAttributeResponse: the response + * + * @throws QueueNotExistException if queue does not exist + * @throws InvalidArgumentException if any argument value is invalid + * @throws MnsException if any other exception happends + */ + public function setAttribute(QueueAttributes $attributes) + { + $request = new SetQueueAttributeRequest($this->queueName, $attributes); + $response = new SetQueueAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function setAttributeAsync(QueueAttributes $attributes, + AsyncCallback $callback = NULL) + { + $request = new SetQueueAttributeRequest($this->queueName, $attributes); + $response = new SetQueueAttributeResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * Get the QueueAttributes, detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&queue_operation + * + * @return GetQueueAttributeResponse: containing the attributes + * + * @throws QueueNotExistException if queue does not exist + * @throws MnsException if any other exception happends + */ + public function getAttribute() + { + $request = new GetQueueAttributeRequest($this->queueName); + $response = new GetQueueAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function getAttributeAsync(AsyncCallback $callback = NULL) + { + $request = new GetQueueAttributeRequest($this->queueName); + $response = new GetQueueAttributeResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * SendMessage, the messageBody will be automatically encoded in base64 + * If you do not need the message body to be encoded in Base64, + * please specify the $base64 = FALSE in Queue + * + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param SendMessageRequest: containing the message body and properties + * + * @return SendMessageResponse: containing the messageId and bodyMD5 + * + * @throws QueueNotExistException if queue does not exist + * @throws InvalidArgumentException if any argument value is invalid + * @throws MalformedXMLException if any error in xml + * @throws MnsException if any other exception happends + */ + public function sendMessage(SendMessageRequest $request) + { + $request->setQueueName($this->queueName); + $request->setBase64($this->base64); + $response = new SendMessageResponse(); + return $this->client->sendRequest($request, $response); + } + + public function sendMessageAsync(SendMessageRequest $request, + AsyncCallback $callback = NULL) + { + $request->setQueueName($this->queueName); + $request->setBase64($this->base64); + $response = new SendMessageResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * PeekMessage, the messageBody will be automatically decoded as base64 if the $base64 in Queue is TRUE + * + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @return PeekMessageResponse: containing the messageBody and properties + * + * @throws QueueNotExistException if queue does not exist + * @throws MessageNotExistException if no message exists in the queue + * @throws MnsException if any other exception happends + */ + public function peekMessage() + { + $request = new PeekMessageRequest($this->queueName); + $response = new PeekMessageResponse($this->base64); + return $this->client->sendRequest($request, $response); + } + + public function peekMessageAsync(AsyncCallback $callback = NULL) + { + $request = new PeekMessageRequest($this->queueName); + $response = new PeekMessageResponse($this->base64); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * ReceiveMessage, the messageBody will be automatically decoded as base64 if $base64 = TRUE in Queue + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param waitSeconds: the long polling waitseconds + * + * @return ReceiveMessageResponse: containing the messageBody and properties + * the response is same as PeekMessageResponse, + * except that the receiptHandle is also returned in receiveMessage + * + * @throws QueueNotExistException if queue does not exist + * @throws MessageNotExistException if no message exists in the queue + * @throws MnsException if any other exception happends + */ + public function receiveMessage($waitSeconds = NULL) + { + $request = new ReceiveMessageRequest($this->queueName, $waitSeconds); + $response = new ReceiveMessageResponse($this->base64); + return $this->client->sendRequest($request, $response); + } + + public function receiveMessageAsync(AsyncCallback $callback = NULL) + { + $request = new ReceiveMessageRequest($this->queueName); + $response = new ReceiveMessageResponse($this->base64); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * DeleteMessage + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param $receiptHandle: the receiptHandle returned from receiveMessage + * + * @return ReceiveMessageResponse + * + * @throws QueueNotExistException if queue does not exist + * @throws InvalidArgumentException if the argument is invalid + * @throws ReceiptHandleErrorException if the $receiptHandle is invalid + * @throws MnsException if any other exception happends + */ + public function deleteMessage($receiptHandle) + { + $request = new DeleteMessageRequest($this->queueName, $receiptHandle); + $response = new DeleteMessageResponse(); + return $this->client->sendRequest($request, $response); + } + + public function deleteMessageAsync($receiptHandle, + AsyncCallback $callback = NULL) + { + $request = new DeleteMessageRequest($this->queueName, $receiptHandle); + $response = new DeleteMessageResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * ChangeMessageVisibility, set the nextVisibleTime for the message + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param $receiptHandle: the receiptHandle returned from receiveMessage + * + * @return ChangeMessageVisibilityResponse + * + * @throws QueueNotExistException if queue does not exist + * @throws MessageNotExistException if the message does not exist + * @throws InvalidArgumentException if the argument is invalid + * @throws ReceiptHandleErrorException if the $receiptHandle is invalid + * @throws MnsException if any other exception happends + */ + public function changeMessageVisibility($receiptHandle, $visibilityTimeout) + { + $request = new ChangeMessageVisibilityRequest($this->queueName, $receiptHandle, $visibilityTimeout); + $response = new ChangeMessageVisibilityResponse(); + return $this->client->sendRequest($request, $response); + } + + /** + * BatchSendMessage, message body will be automatically encoded in base64 + * If you do not need the message body to be encoded in Base64, + * please specify the $base64 = FALSE in Queue + * + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param BatchSendMessageRequest: + * the requests containing an array of SendMessageRequestItems + * + * @return BatchSendMessageResponse + * + * @throws QueueNotExistException if queue does not exist + * @throws MalformedXMLException if any error in the xml + * @throws InvalidArgumentException if the argument is invalid + * @throws BatchSendFailException if some messages are not sent + * @throws MnsException if any other exception happends + */ + public function batchSendMessage(BatchSendMessageRequest $request) + { + $request->setQueueName($this->queueName); + $request->setBase64($this->base64); + $response = new BatchSendMessageResponse(); + return $this->client->sendRequest($request, $response); + } + + public function batchSendMessageAsync(BatchSendMessageRequest $request, + AsyncCallback $callback = NULL) + { + $request->setQueueName($this->queueName); + $request->setBase64($this->base64); + $response = new BatchSendMessageResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * BatchReceiveMessage, message body will be automatically decoded as base64 if $base64 = TRUE in Queue + * + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param BatchReceiveMessageRequest: + * containing numOfMessages and waitSeconds + * + * @return BatchReceiveMessageResponse: + * the received messages + * + * @throws QueueNotExistException if queue does not exist + * @throws MessageNotExistException if no message exists + * @throws MnsException if any other exception happends + */ + public function batchReceiveMessage(BatchReceiveMessageRequest $request) + { + $request->setQueueName($this->queueName); + $response = new BatchReceiveMessageResponse($this->base64); + return $this->client->sendRequest($request, $response); + } + + public function batchReceiveMessageAsync(BatchReceiveMessageRequest $request, AsyncCallback $callback = NULL) + { + $request->setQueueName($this->queueName); + $response = new BatchReceiveMessageResponse($this->base64); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * BatchPeekMessage, message body will be automatically decoded as base64 is $base64 = TRUE in Queue + * + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param BatchPeekMessageRequest: + * containing numOfMessages and waitSeconds + * + * @return BatchPeekMessageResponse: + * the received messages + * + * @throws QueueNotExistException if queue does not exist + * @throws MessageNotExistException if no message exists + * @throws MnsException if any other exception happends + */ + public function batchPeekMessage($numOfMessages) + { + $request = new BatchPeekMessageRequest($this->queueName, $numOfMessages); + $response = new BatchPeekMessageResponse($this->base64); + return $this->client->sendRequest($request, $response); + } + + public function batchPeekMessageAsync($numOfMessages, AsyncCallback $callback = NULL) + { + $request = new BatchPeekMessageRequest($this->queueName, $numOfMessages); + $response = new BatchPeekMessageResponse($this->base64); + return $this->client->sendRequestAsync($request, $response, $callback); + } + + /** + * BatchDeleteMessage + * detail API sepcs: + * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation + * + * @param $receiptHandles: + * array of $receiptHandle, which is got from receiveMessage + * + * @return BatchDeleteMessageResponse + * + * @throws QueueNotExistException if queue does not exist + * @throws ReceiptHandleErrorException if the receiptHandle is invalid + * @throws InvalidArgumentException if the argument is invalid + * @throws BatchDeleteFailException if any message not deleted + * @throws MnsException if any other exception happends + */ + public function batchDeleteMessage($receiptHandles) + { + $request = new BatchDeleteMessageRequest($this->queueName, $receiptHandles); + $response = new BatchDeleteMessageResponse(); + return $this->client->sendRequest($request, $response); + } + + public function batchDeleteMessageAsync($receiptHandles, AsyncCallback $callback = NULL) + { + $request = new BatchDeleteMessageRequest($this->queueName, $receiptHandles); + $response = new BatchDeleteMessageResponse(); + return $this->client->sendRequestAsync($request, $response, $callback); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BaseRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BaseRequest.php new file mode 100644 index 0000000..78e98b2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BaseRequest.php @@ -0,0 +1,75 @@ +method = $method; + $this->resourcePath = $resourcePath; + } + + abstract public function generateBody(); + abstract public function generateQueryString(); + + public function setBody($body) + { + $this->body = $body; + } + + public function getBody() + { + return $this->body; + } + + public function setQueryString($queryString) + { + $this->queryString = $queryString; + } + + public function getQueryString() + { + return $this->queryString; + } + + public function isHeaderSet($header) + { + return isset($this->headers[$header]); + } + + public function getHeaders() + { + return $this->headers; + } + + public function removeHeader($header) + { + if (isset($this->headers[$header])) + { + unset($this->headers[$header]); + } + } + + public function setHeader($header, $value) + { + $this->headers[$header] = $value; + } + + public function getResourcePath() + { + return $this->resourcePath; + } + + public function getMethod() + { + return $this->method; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchDeleteMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchDeleteMessageRequest.php new file mode 100644 index 0000000..c79cfa4 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchDeleteMessageRequest.php @@ -0,0 +1,50 @@ +queueName = $queueName; + $this->receiptHandles = $receiptHandles; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getReceiptHandles() + { + return $this->receiptHandles; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, Constants::RECEIPT_HANDLES, Constants::MNS_XML_NAMESPACE); + foreach ($this->receiptHandles as $receiptHandle) + { + $xmlWriter->writeElement(Constants::RECEIPT_HANDLE, $receiptHandle); + } + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchPeekMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchPeekMessageRequest.php new file mode 100644 index 0000000..469eb2a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchPeekMessageRequest.php @@ -0,0 +1,41 @@ +queueName = $queueName; + $this->numOfMessages = $numOfMessages; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getNumOfMessages() + { + return $this->numOfMessages; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return http_build_query(array("numOfMessages" => $this->numOfMessages, "peekonly" => "true")); + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchReceiveMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchReceiveMessageRequest.php new file mode 100644 index 0000000..89090b4 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchReceiveMessageRequest.php @@ -0,0 +1,58 @@ +queueName = NULL; + $this->numOfMessages = $numOfMessages; + $this->waitSeconds = $waitSeconds; + } + + public function setQueueName($queueName) + { + $this->queueName = $queueName; + $this->resourcePath = 'queues/' . $queueName . '/messages'; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getWaitSeconds() + { + return $this->waitSeconds; + } + + public function getNumOfMessages() + { + return $this->numOfMessages; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + $params = array("numOfMessages" => $this->numOfMessages); + if ($this->waitSeconds != NULL) + { + $params["waitseconds"] = $this->waitSeconds; + } + return http_build_query($params); + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchSendMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchSendMessageRequest.php new file mode 100644 index 0000000..9074a36 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/BatchSendMessageRequest.php @@ -0,0 +1,76 @@ +queueName = NULL; + $this->sendMessageRequestItems = $sendMessageRequestItems; + $this->base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function setQueueName($queueName) + { + $this->queueName = $queueName; + $this->resourcePath = 'queues/' . $queueName . '/messages'; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getSendMessageRequestItems() + { + return $this->sendMessageRequestItems; + } + + public function addSendMessageRequestItem(SendMessageRequestItem $item) + { + $this->sendMessageRequestItems[] = $item; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Messages", Constants::MNS_XML_NAMESPACE); + foreach ($this->sendMessageRequestItems as $item) + { + $item->writeXML($xmlWriter, $this->base64); + } + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ChangeMessageVisibilityRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ChangeMessageVisibilityRequest.php new file mode 100644 index 0000000..2c9be59 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ChangeMessageVisibilityRequest.php @@ -0,0 +1,47 @@ +queueName = $queueName; + $this->receiptHandle = $receiptHandle; + $this->visibilityTimeout = $visibilityTimeout; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getReceiptHandle() + { + return $this->receiptHandle; + } + + public function getVisibilityTimeout() + { + return $this->visibilityTimeout; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return http_build_query(array("receiptHandle" => $this->receiptHandle, "visibilityTimeout" => $this->visibilityTimeout)); + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateQueueRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateQueueRequest.php new file mode 100644 index 0000000..4b16f38 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateQueueRequest.php @@ -0,0 +1,53 @@ +queueName = $queueName; + $this->attributes = $attributes; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getQueueAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Queue", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateTopicRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateTopicRequest.php new file mode 100644 index 0000000..65fc94a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/CreateTopicRequest.php @@ -0,0 +1,53 @@ +topicName = $topicName; + $this->attributes = $attributes; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getTopicAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Topic", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteMessageRequest.php new file mode 100644 index 0000000..ad52aad --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteMessageRequest.php @@ -0,0 +1,40 @@ +queueName = $queueName; + $this->receiptHandle = $receiptHandle; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getReceiptHandle() + { + return $this->receiptHandle; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return http_build_query(array("ReceiptHandle" => $this->receiptHandle)); + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteQueueRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteQueueRequest.php new file mode 100644 index 0000000..776ba97 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteQueueRequest.php @@ -0,0 +1,33 @@ +queueName = $queueName; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteTopicRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteTopicRequest.php new file mode 100644 index 0000000..2a08a35 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/DeleteTopicRequest.php @@ -0,0 +1,33 @@ +topicName = $topicName; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetAccountAttributesRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetAccountAttributesRequest.php new file mode 100644 index 0000000..3b15aa7 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetAccountAttributesRequest.php @@ -0,0 +1,23 @@ + diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetQueueAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetQueueAttributeRequest.php new file mode 100644 index 0000000..e10231a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetQueueAttributeRequest.php @@ -0,0 +1,32 @@ +queueName = $queueName; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetSubscriptionAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetSubscriptionAttributeRequest.php new file mode 100644 index 0000000..a417b12 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetSubscriptionAttributeRequest.php @@ -0,0 +1,39 @@ +topicName = $topicName; + $this->subscriptionName = $subscriptionName; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getSubscriptionName() + { + return $this->subscriptionName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetTopicAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetTopicAttributeRequest.php new file mode 100644 index 0000000..5880a98 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/GetTopicAttributeRequest.php @@ -0,0 +1,32 @@ +topicName = $topicName; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListQueueRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListQueueRequest.php new file mode 100644 index 0000000..8b58774 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListQueueRequest.php @@ -0,0 +1,86 @@ +setRetNum($retNum); + $this->setPrefix($prefix); + $this->setMarker($marker); + } + + public function getRetNum() + { + return $this->retNum; + } + + public function setRetNum($retNum) + { + $this->retNum = $retNum; + if ($retNum != NULL) + { + $this->setHeader("x-mns-ret-number", $retNum); + } + else + { + $this->removeHeader("x-mns-ret-number"); + } + } + + public function getPrefix() + { + return $this->prefix; + } + + public function setPrefix($prefix) + { + $this->prefis = $prefix; + if ($prefix != NULL) + { + $this->setHeader("x-mns-prefix", $prefix); + } + else + { + $this->removeHeader("x-mns-prefix"); + } + } + + public function getMarker() + { + return $this->marker; + } + + public function setMarker($marker) + { + $this->marker = $marker; + if ($marker != NULL) + { + $this->setHeader("x-mns-marker", $marker); + } + else + { + $this->removeHeader("x-mns-marker"); + } + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListSubscriptionRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListSubscriptionRequest.php new file mode 100644 index 0000000..bb4b331 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListSubscriptionRequest.php @@ -0,0 +1,97 @@ +topicName = $topicName; + $this->setRetNum($retNum); + $this->setPrefix($prefix); + $this->setMarker($marker); + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getRetNum() + { + return $this->retNum; + } + + public function setRetNum($retNum) + { + $this->retNum = $retNum; + if ($retNum != NULL) + { + $this->setHeader("x-mns-ret-number", $retNum); + } + else + { + $this->removeHeader("x-mns-ret-number"); + } + } + + public function getPrefix() + { + return $this->prefix; + } + + public function setPrefix($prefix) + { + $this->prefis = $prefix; + if ($prefix != NULL) + { + $this->setHeader("x-mns-prefix", $prefix); + } + else + { + $this->removeHeader("x-mns-prefix"); + } + } + + public function getMarker() + { + return $this->marker; + } + + public function setMarker($marker) + { + $this->marker = $marker; + if ($marker != NULL) + { + $this->setHeader("x-mns-marker", $marker); + } + else + { + $this->removeHeader("x-mns-marker"); + } + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListTopicRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListTopicRequest.php new file mode 100644 index 0000000..1d8f97b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ListTopicRequest.php @@ -0,0 +1,86 @@ +setRetNum($retNum); + $this->setPrefix($prefix); + $this->setMarker($marker); + } + + public function getRetNum() + { + return $this->retNum; + } + + public function setRetNum($retNum) + { + $this->retNum = $retNum; + if ($retNum != NULL) + { + $this->setHeader("x-mns-ret-number", $retNum); + } + else + { + $this->removeHeader("x-mns-ret-number"); + } + } + + public function getPrefix() + { + return $this->prefix; + } + + public function setPrefix($prefix) + { + $this->prefis = $prefix; + if ($prefix != NULL) + { + $this->setHeader("x-mns-prefix", $prefix); + } + else + { + $this->removeHeader("x-mns-prefix"); + } + } + + public function getMarker() + { + return $this->marker; + } + + public function setMarker($marker) + { + $this->marker = $marker; + if ($marker != NULL) + { + $this->setHeader("x-mns-marker", $marker); + } + else + { + $this->removeHeader("x-mns-marker"); + } + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PeekMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PeekMessageRequest.php new file mode 100644 index 0000000..fbe02f0 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PeekMessageRequest.php @@ -0,0 +1,33 @@ +queueName = $queueName; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PublishMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PublishMessageRequest.php new file mode 100644 index 0000000..f66bfa0 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/PublishMessageRequest.php @@ -0,0 +1,51 @@ +topicName = NULL; + $this->messageBody = $messageBody; + $this->messageAttributes = $messageAttributes; + } + + public function setTopicName($topicName) + { + $this->topicName = $topicName; + $this->resourcePath = 'topics/' . $topicName . '/messages'; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Message", Constants::MNS_XML_NAMESPACE); + $this->writeMessagePropertiesForPublishXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ReceiveMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ReceiveMessageRequest.php new file mode 100644 index 0000000..dd853d5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/ReceiveMessageRequest.php @@ -0,0 +1,43 @@ +queueName = $queueName; + $this->waitSeconds = $waitSeconds; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getWaitSeconds() + { + return $this->waitSeconds; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + if ($this->waitSeconds != NULL) + { + return http_build_query(array("waitseconds" => $this->waitSeconds)); + } + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SendMessageRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SendMessageRequest.php new file mode 100644 index 0000000..113fba0 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SendMessageRequest.php @@ -0,0 +1,67 @@ +queueName = NULL; + $this->messageBody = $messageBody; + $this->delaySeconds = $delaySeconds; + $this->priority = $priority; + $this->base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function setQueueName($queueName) + { + $this->queueName = $queueName; + $this->resourcePath = 'queues/' . $queueName . '/messages'; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Message", Constants::MNS_XML_NAMESPACE); + $this->writeMessagePropertiesForSendXML($xmlWriter, $this->base64); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetAccountAttributesRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetAccountAttributesRequest.php new file mode 100644 index 0000000..89ca743 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetAccountAttributesRequest.php @@ -0,0 +1,46 @@ +attributes = $attributes; + } + + public function getAccountAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Account", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetQueueAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetQueueAttributeRequest.php new file mode 100644 index 0000000..f6b4ff0 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetQueueAttributeRequest.php @@ -0,0 +1,53 @@ +queueName = $queueName; + $this->attributes = $attributes; + } + + public function getQueueName() + { + return $this->queueName; + } + + public function getQueueAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Queue", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetSubscriptionAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetSubscriptionAttributeRequest.php new file mode 100644 index 0000000..c9489c1 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetSubscriptionAttributeRequest.php @@ -0,0 +1,46 @@ +getTopicName() . '/subscriptions/' . $attributes->getSubscriptionName() . '?metaoverride=true'); + + if ($attributes == NULL) + { + $attributes = new UpdateSubscriptionAttributes(); + } + + $this->attributes = $attributes; + } + + public function getSubscriptionAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Subscription", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetTopicAttributeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetTopicAttributeRequest.php new file mode 100644 index 0000000..7161a4a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SetTopicAttributeRequest.php @@ -0,0 +1,53 @@ +topicName = $topicName; + $this->attributes = $attributes; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getTopicAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Topic", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SubscribeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SubscribeRequest.php new file mode 100644 index 0000000..8dcd2f9 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/SubscribeRequest.php @@ -0,0 +1,42 @@ +getTopicName() . '/subscriptions/' . $attributes->getSubscriptionName()); + + $this->attributes = $attributes; + } + + public function getSubscriptionAttributes() + { + return $this->attributes; + } + + public function generateBody() + { + $xmlWriter = new \XMLWriter; + $xmlWriter->openMemory(); + $xmlWriter->startDocument("1.0", "UTF-8"); + $xmlWriter->startElementNS(NULL, "Subscription", Constants::MNS_XML_NAMESPACE); + $this->attributes->writeXML($xmlWriter); + $xmlWriter->endElement(); + $xmlWriter->endDocument(); + return $xmlWriter->outputMemory(); + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/UnsubscribeRequest.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/UnsubscribeRequest.php new file mode 100644 index 0000000..94a10e4 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Requests/UnsubscribeRequest.php @@ -0,0 +1,39 @@ +topicName = $topicName; + $this->subscriptionName = $subscriptionName; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function getSubscriptionName() + { + return $this->subscriptionName; + } + + public function generateBody() + { + return NULL; + } + + public function generateQueryString() + { + return NULL; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BaseResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BaseResponse.php new file mode 100644 index 0000000..1a50f7f --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BaseResponse.php @@ -0,0 +1,33 @@ +succeed; + } + + public function getStatusCode() + { + return $this->statusCode; + } + + protected function loadXmlContent($content) + { + $xmlReader = new \XMLReader(); + $isXml = $xmlReader->XML($content); + if ($isXml === FALSE) { + throw new MnsException($statusCode, $content); + } + return $xmlReader; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchDeleteMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchDeleteMessageResponse.php new file mode 100644 index 0000000..90266a0 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchDeleteMessageResponse.php @@ -0,0 +1,95 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) { + switch ($xmlReader->name) { + case Constants::ERROR: + $this->parseNormalErrorResponse($xmlReader); + break; + default: // case Constants::Messages + $this->parseBatchDeleteErrorResponse($xmlReader); + break; + } + } + } + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + private function parseBatchDeleteErrorResponse($xmlReader) + { + $ex = new BatchDeleteFailException($this->statusCode, "BatchDeleteMessage Failed For Some ReceiptHandles"); + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == Constants::ERROR) { + $ex->addDeleteMessageErrorItem( DeleteMessageErrorItem::fromXML($xmlReader)); + } + } + throw $ex; + } + + private function parseNormalErrorResponse($xmlReader) + { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::RECEIPT_HANDLE_ERROR) + { + throw new ReceiptHandleErrorException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchPeekMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchPeekMessageResponse.php new file mode 100644 index 0000000..46108f2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchPeekMessageResponse.php @@ -0,0 +1,97 @@ +messages = array(); + $this->base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function getMessages() + { + return $this->messages; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT + && $xmlReader->name == 'Message') + { + $this->messages[] = Message::fromXML($xmlReader, $this->base64); + } + } + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MESSAGE_NOT_EXIST) + { + throw new MessageNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchReceiveMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchReceiveMessageResponse.php new file mode 100644 index 0000000..6978311 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchReceiveMessageResponse.php @@ -0,0 +1,98 @@ +messages = array(); + $this->base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function getMessages() + { + return $this->messages; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT + && $xmlReader->name == 'Message') + { + $this->messages[] = Message::fromXML($xmlReader, $this->base64); + } + } + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MESSAGE_NOT_EXIST) + { + throw new MessageNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchSendMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchSendMessageResponse.php new file mode 100644 index 0000000..30ed7a7 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/BatchSendMessageResponse.php @@ -0,0 +1,117 @@ +sendMessageResponseItems = array(); + } + + public function getSendMessageResponseItems() + { + return $this->sendMessageResponseItems; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 201) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == 'Message') { + $this->sendMessageResponseItems[] = SendMessageResponseItem::fromXML($xmlReader); + } + } + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) { + switch ($xmlReader->name) { + case Constants::ERROR: + $this->parseNormalErrorResponse($xmlReader); + break; + default: // case Constants::Messages + $this->parseBatchSendErrorResponse($xmlReader); + break; + } + } + } + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + private function parseBatchSendErrorResponse($xmlReader) + { + $ex = new BatchSendFailException($this->statusCode, "BatchSendMessage Failed For Some Messages"); + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == 'Message') { + $ex->addSendMessageResponseItem( SendMessageResponseItem::fromXML($xmlReader)); + } + } + throw $ex; + } + + private function parseNormalErrorResponse($xmlReader) + { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MALFORMED_XML) + { + throw new MalformedXMLException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ChangeMessageVisibilityResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ChangeMessageVisibilityResponse.php new file mode 100644 index 0000000..5301c21 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ChangeMessageVisibilityResponse.php @@ -0,0 +1,96 @@ +receiptHandle; + } + + public function getNextVisibleTime() + { + return $this->nextVisibleTime; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + $message = Message::fromXML($xmlReader, TRUE); + $this->receiptHandle = $message->getReceiptHandle(); + $this->nextVisibleTime = $message->getNextVisibleTime(); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MESSAGE_NOT_EXIST) + { + throw new MessageNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::RECEIPT_HANDLE_ERROR) + { + throw new ReceiptHandleErrorException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateQueueResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateQueueResponse.php new file mode 100644 index 0000000..2a7c1f1 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateQueueResponse.php @@ -0,0 +1,66 @@ +queueName = $queueName; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 201 || $statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::QUEUE_ALREADY_EXIST) + { + throw new QueueAlreadyExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function getQueueName() + { + return $this->queueName; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateTopicResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateTopicResponse.php new file mode 100644 index 0000000..aa75b47 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/CreateTopicResponse.php @@ -0,0 +1,66 @@ +topicName = $topicName; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 201 || $statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::TOPIC_ALREADY_EXIST) + { + throw new TopicAlreadyExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function getTopicName() + { + return $this->topicName; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteMessageResponse.php new file mode 100644 index 0000000..ac3c10b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteMessageResponse.php @@ -0,0 +1,64 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::RECEIPT_HANDLE_ERROR) + { + throw new ReceiptHandleErrorException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteQueueResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteQueueResponse.php new file mode 100644 index 0000000..751b2b5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteQueueResponse.php @@ -0,0 +1,46 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteTopicResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteTopicResponse.php new file mode 100644 index 0000000..dcb4368 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/DeleteTopicResponse.php @@ -0,0 +1,46 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetAccountAttributesResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetAccountAttributesResponse.php new file mode 100644 index 0000000..0aba419 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetAccountAttributesResponse.php @@ -0,0 +1,68 @@ +attributes = NULL; + } + + public function getAccountAttributes() + { + return $this->attributes; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + $this->attributes = AccountAttributes::fromXML($xmlReader); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetQueueAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetQueueAttributeResponse.php new file mode 100644 index 0000000..82de2bd --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetQueueAttributeResponse.php @@ -0,0 +1,73 @@ +attributes = NULL; + } + + public function getQueueAttributes() + { + return $this->attributes; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + $this->attributes = QueueAttributes::fromXML($xmlReader); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetSubscriptionAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetSubscriptionAttributeResponse.php new file mode 100644 index 0000000..e0eea96 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetSubscriptionAttributeResponse.php @@ -0,0 +1,88 @@ +attributes = NULL; + } + + public function getSubscriptionAttributes() + { + return $this->attributes; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) + { + $this->succeed = TRUE; + } + else + { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try + { + $this->attributes = SubscriptionAttributes::fromXML($xmlReader); + } + catch (\Exception $e) + { + throw new MnsException($statusCode, $e->getMessage(), $e); + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try + { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::SUBSCRIPTION_NOT_EXIST) + { + throw new SubscriptionNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetTopicAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetTopicAttributeResponse.php new file mode 100644 index 0000000..38b1aee --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/GetTopicAttributeResponse.php @@ -0,0 +1,88 @@ +attributes = NULL; + } + + public function getTopicAttributes() + { + return $this->attributes; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) + { + $this->succeed = TRUE; + } + else + { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + $this->attributes = TopicAttributes::fromXML($xmlReader); + } + catch (\Exception $e) + { + throw new MnsException($statusCode, $e->getMessage(), $e); + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try + { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::TOPIC_NOT_EXIST) + { + throw new TopicNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListQueueResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListQueueResponse.php new file mode 100644 index 0000000..79f3cfd --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListQueueResponse.php @@ -0,0 +1,109 @@ +queueNames = array(); + $this->nextMarker = NULL; + } + + public function isFinished() + { + return $this->nextMarker == NULL; + } + + public function getQueueNames() + { + return $this->queueNames; + } + + public function getNextMarker() + { + return $this->nextMarker; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode != 200) { + $this->parseErrorResponse($statusCode, $content); + return; + } + + $this->succeed = TRUE; + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'QueueURL': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $queueName = $this->getQueueNameFromQueueURL($xmlReader->value); + $this->queueNames[] = $queueName; + } + break; + case 'NextMarker': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $this->nextMarker = $xmlReader->value; + } + break; + } + } + } + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + private function getQueueNameFromQueueURL($queueURL) + { + $pieces = explode("/", $queueURL); + if (count($pieces) == 5) + { + return $pieces[4]; + } + return ""; + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListSubscriptionResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListSubscriptionResponse.php new file mode 100644 index 0000000..a6e0fb2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListSubscriptionResponse.php @@ -0,0 +1,121 @@ +SubscriptionNames = array(); + $this->nextMarker = NULL; + } + + public function isFinished() + { + return $this->nextMarker == NULL; + } + + public function getSubscriptionNames() + { + return $this->SubscriptionNames; + } + + public function getNextMarker() + { + return $this->nextMarker; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode != 200) { + $this->parseErrorResponse($statusCode, $content); + return; + } + + $this->succeed = TRUE; + $xmlReader = $this->loadXmlContent($content); + + try { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'SubscriptionURL': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $subscriptionName = $this->getSubscriptionNameFromSubscriptionURL($xmlReader->value); + $this->SubscriptionNames[] = $subscriptionName; + } + break; + case 'NextMarker': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $this->nextMarker = $xmlReader->value; + } + break; + } + } + } + } + catch (\Exception $e) + { + throw new MnsException($statusCode, $e->getMessage(), $e); + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + private function getSubscriptionNameFromSubscriptionURL($subscriptionURL) + { + $pieces = explode("/", $subscriptionURL); + if (count($pieces) == 7) + { + return $pieces[6]; + } + return ""; + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try + { + $result = XMLParser::parseNormalError($xmlReader); + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListTopicResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListTopicResponse.php new file mode 100644 index 0000000..8013c78 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ListTopicResponse.php @@ -0,0 +1,124 @@ +topicNames = array(); + $this->nextMarker = NULL; + } + + public function isFinished() + { + return $this->nextMarker == NULL; + } + + public function getTopicNames() + { + return $this->topicNames; + } + + public function getNextMarker() + { + return $this->nextMarker; + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode != 200) { + $this->parseErrorResponse($statusCode, $content); + return; + } + + $this->succeed = TRUE; + $xmlReader = $this->loadXmlContent($content); + + try + { + while ($xmlReader->read()) + { + if ($xmlReader->nodeType == \XMLReader::ELEMENT) + { + switch ($xmlReader->name) { + case 'TopicURL': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $topicName = $this->getTopicNameFromTopicURL($xmlReader->value); + $this->topicNames[] = $topicName; + } + break; + case 'NextMarker': + $xmlReader->read(); + if ($xmlReader->nodeType == \XMLReader::TEXT) + { + $this->nextMarker = $xmlReader->value; + } + break; + } + } + } + } + catch (\Exception $e) + { + throw new MnsException($statusCode, $e->getMessage(), $e); + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } + + private function getTopicNameFromTopicURL($topicURL) + { + $pieces = explode("/", $topicURL); + if (count($pieces) == 5) + { + return $pieces[4]; + } + return ""; + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try + { + $result = XMLParser::parseNormalError($xmlReader); + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/MnsPromise.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/MnsPromise.php new file mode 100644 index 0000000..f40c024 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/MnsPromise.php @@ -0,0 +1,50 @@ +promise = $promise; + $this->response = $response; + } + + public function isCompleted() + { + return $this->promise->getState() != 'pending'; + } + + public function getResponse() + { + return $this->response; + } + + public function wait() + { + try { + $res = $this->promise->wait(); + if ($res instanceof ResponseInterface) + { + $this->response->parseResponse($res->getStatusCode(), $res->getBody()); + } + } catch (TransferException $e) { + $message = $e->getMessage(); + if ($e->hasResponse()) { + $message = $e->getResponse()->getBody(); + } + $this->response->parseErrorResponse($e->getCode(), $message); + } + return $this->response; + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PeekMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PeekMessageResponse.php new file mode 100644 index 0000000..deb3c83 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PeekMessageResponse.php @@ -0,0 +1,85 @@ +base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + + try { + $this->readMessagePropertiesForPeekXML($xmlReader, $this->base64); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MESSAGE_NOT_EXIST) + { + throw new MessageNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PublishMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PublishMessageResponse.php new file mode 100644 index 0000000..0ee38da --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/PublishMessageResponse.php @@ -0,0 +1,74 @@ +statusCode = $statusCode; + if ($statusCode == 201) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + try { + $this->readMessageIdAndMD5XML($xmlReader); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::TOPIC_NOT_EXIST) + { + throw new TopicNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MALFORMED_XML) + { + throw new MalformedXMLException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ReceiveMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ReceiveMessageResponse.php new file mode 100644 index 0000000..44aa72c --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/ReceiveMessageResponse.php @@ -0,0 +1,83 @@ +base64 = $base64; + } + + public function setBase64($base64) + { + $this->base64 = $base64; + } + + public function isBase64() + { + return ($this->base64 == TRUE); + } + + public function parseResponse($statusCode, $content) + { + $this->statusCode = $statusCode; + if ($statusCode == 200) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + try { + $this->readMessagePropertiesForReceiveXML($xmlReader, $this->base64); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MESSAGE_NOT_EXIST) + { + throw new MessageNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SendMessageResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SendMessageResponse.php new file mode 100644 index 0000000..77f1681 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SendMessageResponse.php @@ -0,0 +1,74 @@ +statusCode = $statusCode; + if ($statusCode == 201) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + + $xmlReader = $this->loadXmlContent($content); + try { + $this->readMessageIdAndMD5XML($xmlReader); + } catch (\Exception $e) { + throw new MnsException($statusCode, $e->getMessage(), $e); + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::MALFORMED_XML) + { + throw new MalformedXMLException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetAccountAttributesResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetAccountAttributesResponse.php new file mode 100644 index 0000000..4d08334 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetAccountAttributesResponse.php @@ -0,0 +1,47 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetQueueAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetQueueAttributeResponse.php new file mode 100644 index 0000000..5540cd2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetQueueAttributeResponse.php @@ -0,0 +1,57 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::QUEUE_NOT_EXIST) + { + throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetSubscriptionAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetSubscriptionAttributeResponse.php new file mode 100644 index 0000000..1d79849 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetSubscriptionAttributeResponse.php @@ -0,0 +1,63 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::SUBSCRIPTION_NOT_EXIST) + { + throw new SubscriptionNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetTopicAttributeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetTopicAttributeResponse.php new file mode 100644 index 0000000..642c823 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SetTopicAttributeResponse.php @@ -0,0 +1,66 @@ +statusCode = $statusCode; + if ($statusCode == 204) { + $this->succeed = TRUE; + } else { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::TOPIC_NOT_EXIST) + { + throw new TopicNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SubscribeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SubscribeResponse.php new file mode 100644 index 0000000..8a1fff6 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/SubscribeResponse.php @@ -0,0 +1,66 @@ +statusCode = $statusCode; + if ($statusCode == 201 || $statusCode == 204) + { + $this->succeed = TRUE; + } + else + { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try + { + $result = XMLParser::parseNormalError($xmlReader); + + if ($result['Code'] == Constants::INVALID_ARGUMENT) + { + throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + if ($result['Code'] == Constants::SUBSCRIPTION_ALREADY_EXIST) + { + throw new SubscriptionAlreadyExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } + catch (\Exception $e) + { + if ($exception != NULL) + { + throw $exception; + } + elseif ($e instanceof MnsException) + { + throw $e; + } + else + { + throw new MnsException($statusCode, $e->getMessage()); + } + } + catch (\Throwable $t) + { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/UnsubscribeResponse.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/UnsubscribeResponse.php new file mode 100644 index 0000000..cfd902e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Responses/UnsubscribeResponse.php @@ -0,0 +1,48 @@ +statusCode = $statusCode; + if ($statusCode == 204) + { + $this->succeed = TRUE; + } + else + { + $this->parseErrorResponse($statusCode, $content); + } + } + + public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL) + { + $this->succeed = FALSE; + $xmlReader = $this->loadXmlContent($content); + try { + $result = XMLParser::parseNormalError($xmlReader); + throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']); + } catch (\Exception $e) { + if ($exception != NULL) { + throw $exception; + } elseif($e instanceof MnsException) { + throw $e; + } else { + throw new MnsException($statusCode, $e->getMessage()); + } + } catch (\Throwable $t) { + throw new MnsException($statusCode, $t->getMessage()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Signature/Signature.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Signature/Signature.php new file mode 100644 index 0000000..2ed987e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Signature/Signature.php @@ -0,0 +1,53 @@ +getHeaders(); + $contentMd5 = ""; + if (isset($headers['Content-MD5'])) + { + $contentMd5 = $headers['Content-MD5']; + } + $contentType = ""; + if (isset($headers['Content-Type'])) + { + $contentType = $headers['Content-Type']; + } + $date = $headers['Date']; + $queryString = $request->getQueryString(); + $canonicalizedResource = $request->getResourcePath(); + if ($queryString != NULL) + { + $canonicalizedResource .= "?" . $request->getQueryString(); + } + if (0 !== strpos($canonicalizedResource, "/")) + { + $canonicalizedResource = "/" . $canonicalizedResource; + } + + $tmpHeaders = array(); + foreach ($headers as $key => $value) + { + if (0 === strpos($key, Constants::MNS_HEADER_PREFIX)) + { + $tmpHeaders[$key] = $value; + } + } + ksort($tmpHeaders); + + $canonicalizedMNSHeaders = implode("\n", array_map(function ($v, $k) { return $k . ":" . $v; }, $tmpHeaders, array_keys($tmpHeaders))); + + $stringToSign = strtoupper($request->getMethod()) . "\n" . $contentMd5 . "\n" . $contentType . "\n" . $date . "\n" . $canonicalizedMNSHeaders . "\n" . $canonicalizedResource; + + return base64_encode(hash_hmac("sha1", $stringToSign, $accessKey, $raw_output = TRUE)); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Topic.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Topic.php new file mode 100644 index 0000000..6682b2f --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Topic.php @@ -0,0 +1,128 @@ +client = $client; + $this->topicName = $topicName; + } + + public function getTopicName() + { + return $this->topicName; + } + + public function setAttribute(TopicAttributes $attributes) + { + $request = new SetTopicAttributeRequest($this->topicName, $attributes); + $response = new SetTopicAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function getAttribute() + { + $request = new GetTopicAttributeRequest($this->topicName); + $response = new GetTopicAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function generateQueueEndpoint($queueName) + { + return "acs:mns:" . $this->client->getRegion() . ":" . $this->client->getAccountId() . ":queues/" . $queueName; + } + + public function generateMailEndpoint($mailAddress) + { + return "mail:directmail:" . $mailAddress; + } + + public function generateSmsEndpoint($phone = null) + { + if ($phone) + { + return "sms:directsms:" . $phone; + } + else + { + return "sms:directsms:anonymous"; + } + } + + public function generateBatchSmsEndpoint() + { + return "sms:directsms:anonymous"; + } + + public function publishMessage(PublishMessageRequest $request) + { + $request->setTopicName($this->topicName); + $response = new PublishMessageResponse(); + return $this->client->sendRequest($request, $response); + } + + public function subscribe(SubscriptionAttributes $attributes) + { + $attributes->setTopicName($this->topicName); + $request = new SubscribeRequest($attributes); + $response = new SubscribeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function unsubscribe($subscriptionName) + { + $request = new UnsubscribeRequest($this->topicName, $subscriptionName); + $response = new UnsubscribeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function getSubscriptionAttribute($subscriptionName) + { + $request = new GetSubscriptionAttributeRequest($this->topicName, $subscriptionName); + $response = new GetSubscriptionAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function setSubscriptionAttribute(UpdateSubscriptionAttributes $attributes) + { + $attributes->setTopicName($this->topicName); + $request = new SetSubscriptionAttributeRequest($attributes); + $response = new SetSubscriptionAttributeResponse(); + return $this->client->sendRequest($request, $response); + } + + public function listSubscription($retNum = NULL, $prefix = NULL, $marker = NULL) + { + $request = new ListSubscriptionRequest($this->topicName, $retNum, $prefix, $marker); + $response = new ListSubscriptionResponse(); + return $this->client->sendRequest($request, $response); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessageIdAndMD5.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessageIdAndMD5.php new file mode 100644 index 0000000..19df2bf --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessageIdAndMD5.php @@ -0,0 +1,30 @@ +messageId; + } + + public function getMessageBodyMD5() + { + return $this->messageBodyMD5; + } + + public function readMessageIdAndMD5XML(\XMLReader $xmlReader) + { + $message = Message::fromXML($xmlReader, TRUE); + $this->messageId = $message->getMessageId(); + $this->messageBodyMD5 = $message->getMessageBodyMD5(); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPeek.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPeek.php new file mode 100644 index 0000000..cb1a48a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPeek.php @@ -0,0 +1,63 @@ +messageBody; + } + + public function getEnqueueTime() + { + return $this->enqueueTime; + } + + public function getNextVisibleTime() + { + return $this->nextVisibleTime; + } + + public function getFirstDequeueTime() + { + return $this->firstDequeueTime; + } + + public function getDequeueCount() + { + return $this->dequeueCount; + } + + public function getPriority() + { + return $this->priority; + } + + public function readMessagePropertiesForPeekXML(\XMLReader $xmlReader, $base64) + { + $message = Message::fromXML($xmlReader, $base64); + $this->messageId = $message->getMessageId(); + $this->messageBodyMD5 = $message->getMessageBodyMD5(); + $this->messageBody = $message->getMessageBody(); + $this->enqueueTime = $message->getEnqueueTime(); + $this->nextVisibleTime = $message->getNextVisibleTime(); + $this->firstDequeueTime = $message->getFirstDequeueTime(); + $this->dequeueCount = $message->getDequeueCount(); + $this->priority = $message->getPriority(); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPublish.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPublish.php new file mode 100644 index 0000000..be6e5af --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForPublish.php @@ -0,0 +1,45 @@ +messageBody; + } + + public function setMessageBody($messageBody) + { + $this->messageBody = $messageBody; + } + + public function getMessageAttributes() + { + return $this->messageAttributes; + } + + public function setMessageAttributes($messageAttributes) + { + $this->messageAttributes = $messageAttributes; + } + + public function writeMessagePropertiesForPublishXML(\XMLWriter $xmlWriter) + { + if ($this->messageBody != NULL) + { + $xmlWriter->writeElement(Constants::MESSAGE_BODY, $this->messageBody); + } + if ($this->messageAttributes !== NULL) + { + $this->messageAttributes->writeXML($xmlWriter); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForReceive.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForReceive.php new file mode 100644 index 0000000..581c97e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForReceive.php @@ -0,0 +1,33 @@ +receiptHandle; + } + + public function readMessagePropertiesForReceiveXML(\XMLReader $xmlReader, $base64) + { + $message = Message::fromXML($xmlReader, $base64); + $this->messageId = $message->getMessageId(); + $this->messageBodyMD5 = $message->getMessageBodyMD5(); + $this->messageBody = $message->getMessageBody(); + $this->enqueueTime = $message->getEnqueueTime(); + $this->nextVisibleTime = $message->getNextVisibleTime(); + $this->firstDequeueTime = $message->getFirstDequeueTime(); + $this->dequeueCount = $message->getDequeueCount(); + $this->priority = $message->getPriority(); + $this->receiptHandle = $message->getReceiptHandle(); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForSend.php b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForSend.php new file mode 100644 index 0000000..ae713c5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/AliyunMNS/Traits/MessagePropertiesForSend.php @@ -0,0 +1,63 @@ +messageBody; + } + + public function setMessageBody($messageBody) + { + $this->messageBody = $messageBody; + } + + public function getDelaySeconds() + { + return $this->delaySeconds; + } + + public function setDelaySeconds($delaySeconds) + { + $this->delaySeconds = $delaySeconds; + } + + public function getPriority() + { + return $this->priority; + } + + public function setPriority($priority) + { + $this->priority = $priority; + } + + public function writeMessagePropertiesForSendXML(\XMLWriter $xmlWriter, $base64) + { + if ($this->messageBody != NULL) + { + if ($base64 == TRUE) { + $xmlWriter->writeElement(Constants::MESSAGE_BODY, base64_encode($this->messageBody)); + } else { + $xmlWriter->writeElement(Constants::MESSAGE_BODY, $this->messageBody); + } + } + if ($this->delaySeconds != NULL) + { + $xmlWriter->writeElement(Constants::DELAY_SECONDS, $this->delaySeconds); + } + if ($this->priority != NULL) + { + $xmlWriter->writeElement(Constants::PRIORITY, $this->priority); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Client.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Client.php new file mode 100644 index 0000000..2e86ece --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Client.php @@ -0,0 +1,397 @@ + 'http://www.foo.com/1.0/', + * 'timeout' => 0, + * 'allow_redirects' => false, + * 'proxy' => '192.168.16.1:10' + * ]); + * + * Client configuration settings include the following options: + * + * - handler: (callable) Function that transfers HTTP requests over the + * wire. The function is called with a Psr7\Http\Message\RequestInterface + * and array of transfer options, and must return a + * GuzzleHttp\Promise\PromiseInterface that is fulfilled with a + * Psr7\Http\Message\ResponseInterface on success. "handler" is a + * constructor only option that cannot be overridden in per/request + * options. If no handler is provided, a default handler will be created + * that enables all of the request options below by attaching all of the + * default middleware to the handler. + * - base_uri: (string|UriInterface) Base URI of the client that is merged + * into relative URIs. Can be a string or instance of UriInterface. + * - **: any request option + * + * @param array $config Client configuration settings. + * + * @see \GuzzleHttp\RequestOptions for a list of available request options. + */ + public function __construct(array $config = []) + { + if (!isset($config['handler'])) { + $config['handler'] = HandlerStack::create(); + } + + // Convert the base_uri to a UriInterface + if (isset($config['base_uri'])) { + $config['base_uri'] = Psr7\uri_for($config['base_uri']); + } + + $this->configureDefaults($config); + } + + public function __call($method, $args) + { + if (count($args) < 1) { + throw new \InvalidArgumentException('Magic request methods require a URI and optional options array'); + } + + $uri = $args[0]; + $opts = isset($args[1]) ? $args[1] : []; + + return substr($method, -5) === 'Async' + ? $this->requestAsync(substr($method, 0, -5), $uri, $opts) + : $this->request($method, $uri, $opts); + } + + public function sendAsync(RequestInterface $request, array $options = []) + { + // Merge the base URI into the request URI if needed. + $options = $this->prepareDefaults($options); + + return $this->transfer( + $request->withUri($this->buildUri($request->getUri(), $options)), + $options + ); + } + + public function send(RequestInterface $request, array $options = []) + { + $options[RequestOptions::SYNCHRONOUS] = true; + return $this->sendAsync($request, $options)->wait(); + } + + public function requestAsync($method, $uri = null, array $options = []) + { + $options = $this->prepareDefaults($options); + // Remove request modifying parameter because it can be done up-front. + $headers = isset($options['headers']) ? $options['headers'] : []; + $body = isset($options['body']) ? $options['body'] : null; + $version = isset($options['version']) ? $options['version'] : '1.1'; + // Merge the URI into the base URI. + $uri = $this->buildUri($uri, $options); + if (is_array($body)) { + $this->invalidBody(); + } + $request = new Psr7\Request($method, $uri, $headers, $body, $version); + // Remove the option so that they are not doubly-applied. + unset($options['headers'], $options['body'], $options['version']); + + return $this->transfer($request, $options); + } + + public function request($method, $uri = null, array $options = []) + { + $options[RequestOptions::SYNCHRONOUS] = true; + return $this->requestAsync($method, $uri, $options)->wait(); + } + + public function getConfig($option = null) + { + return $option === null + ? $this->config + : (isset($this->config[$option]) ? $this->config[$option] : null); + } + + private function buildUri($uri, array $config) + { + if (!isset($config['base_uri'])) { + return $uri instanceof UriInterface ? $uri : new Psr7\Uri($uri); + } + + return Psr7\Uri::resolve(Psr7\uri_for($config['base_uri']), $uri); + } + + /** + * Configures the default options for a client. + * + * @param array $config + */ + private function configureDefaults(array $config) + { + $defaults = [ + 'allow_redirects' => RedirectMiddleware::$defaultSettings, + 'http_errors' => true, + 'decode_content' => true, + 'verify' => true, + 'cookies' => false + ]; + + // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set + if ($proxy = getenv('HTTP_PROXY')) { + $defaults['proxy']['http'] = $proxy; + } + + if ($proxy = getenv('HTTPS_PROXY')) { + $defaults['proxy']['https'] = $proxy; + } + + if ($noProxy = getenv('NO_PROXY')) { + $cleanedNoProxy = str_replace(' ', '', $noProxy); + $defaults['proxy']['no'] = explode(',', $cleanedNoProxy); + } + + $this->config = $config + $defaults; + + if (!empty($config['cookies']) && $config['cookies'] === true) { + $this->config['cookies'] = new CookieJar(); + } + + // Add the default user-agent header. + if (!isset($this->config['headers'])) { + $this->config['headers'] = ['User-Agent' => default_user_agent()]; + } else { + // Add the User-Agent header if one was not already set. + foreach (array_keys($this->config['headers']) as $name) { + if (strtolower($name) === 'user-agent') { + return; + } + } + $this->config['headers']['User-Agent'] = default_user_agent(); + } + } + + /** + * Merges default options into the array. + * + * @param array $options Options to modify by reference + * + * @return array + */ + private function prepareDefaults($options) + { + $defaults = $this->config; + + if (!empty($defaults['headers'])) { + // Default headers are only added if they are not present. + $defaults['_conditional'] = $defaults['headers']; + unset($defaults['headers']); + } + + // Special handling for headers is required as they are added as + // conditional headers and as headers passed to a request ctor. + if (array_key_exists('headers', $options)) { + // Allows default headers to be unset. + if ($options['headers'] === null) { + $defaults['_conditional'] = null; + unset($options['headers']); + } elseif (!is_array($options['headers'])) { + throw new \InvalidArgumentException('headers must be an array'); + } + } + + // Shallow merge defaults underneath options. + $result = $options + $defaults; + + // Remove null values. + foreach ($result as $k => $v) { + if ($v === null) { + unset($result[$k]); + } + } + + return $result; + } + + /** + * Transfers the given request and applies request options. + * + * The URI of the request is not modified and the request options are used + * as-is without merging in default options. + * + * @param RequestInterface $request + * @param array $options + * + * @return Promise\PromiseInterface + */ + private function transfer(RequestInterface $request, array $options) + { + // save_to -> sink + if (isset($options['save_to'])) { + $options['sink'] = $options['save_to']; + unset($options['save_to']); + } + + // exceptions -> http_error + if (isset($options['exceptions'])) { + $options['http_errors'] = $options['exceptions']; + unset($options['exceptions']); + } + + $request = $this->applyOptions($request, $options); + $handler = $options['handler']; + + try { + return Promise\promise_for($handler($request, $options)); + } catch (\Exception $e) { + return Promise\rejection_for($e); + } + } + + /** + * Applies the array of request options to a request. + * + * @param RequestInterface $request + * @param array $options + * + * @return RequestInterface + */ + private function applyOptions(RequestInterface $request, array &$options) + { + $modify = []; + + if (isset($options['form_params'])) { + if (isset($options['multipart'])) { + throw new \InvalidArgumentException('You cannot use ' + . 'form_params and multipart at the same time. Use the ' + . 'form_params option if you want to send application/' + . 'x-www-form-urlencoded requests, and the multipart ' + . 'option to send multipart/form-data requests.'); + } + $options['body'] = http_build_query($options['form_params'], null, '&'); + unset($options['form_params']); + $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded'; + } + + if (isset($options['multipart'])) { + $elements = $options['multipart']; + unset($options['multipart']); + $options['body'] = new Psr7\MultipartStream($elements); + } + + if (!empty($options['decode_content']) + && $options['decode_content'] !== true + ) { + $modify['set_headers']['Accept-Encoding'] = $options['decode_content']; + } + + if (isset($options['headers'])) { + if (isset($modify['set_headers'])) { + $modify['set_headers'] = $options['headers'] + $modify['set_headers']; + } else { + $modify['set_headers'] = $options['headers']; + } + unset($options['headers']); + } + + if (isset($options['body'])) { + if (is_array($options['body'])) { + $this->invalidBody(); + } + $modify['body'] = Psr7\stream_for($options['body']); + unset($options['body']); + } + + if (!empty($options['auth'])) { + $value = $options['auth']; + $type = is_array($value) + ? (isset($value[2]) ? strtolower($value[2]) : 'basic') + : $value; + $config['auth'] = $value; + switch (strtolower($type)) { + case 'basic': + $modify['set_headers']['Authorization'] = 'Basic ' + . base64_encode("$value[0]:$value[1]"); + break; + case 'digest': + // @todo: Do not rely on curl + $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST; + $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]"; + break; + } + } + + if (isset($options['query'])) { + $value = $options['query']; + if (is_array($value)) { + $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986); + } + if (!is_string($value)) { + throw new \InvalidArgumentException('query must be a string or array'); + } + $modify['query'] = $value; + unset($options['query']); + } + + if (isset($options['json'])) { + $modify['body'] = Psr7\stream_for(json_encode($options['json'])); + $options['_conditional']['Content-Type'] = 'application/json'; + unset($options['json']); + } + + $request = Psr7\modify_request($request, $modify); + if ($request->getBody() instanceof Psr7\MultipartStream) { + // Use a multipart/form-data POST if a Content-Type is not set. + $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary=' + . $request->getBody()->getBoundary(); + } + + // Merge in conditional headers if they are not present. + if (isset($options['_conditional'])) { + // Build up the changes so it's in a single clone of the message. + $modify = []; + foreach ($options['_conditional'] as $k => $v) { + if (!$request->hasHeader($k)) { + $modify['set_headers'][$k] = $v; + } + } + $request = Psr7\modify_request($request, $modify); + // Don't pass this internal value along to middleware/handlers. + unset($options['_conditional']); + } + + return $request; + } + + private function invalidBody() + { + throw new \InvalidArgumentException('Passing in the "body" request ' + . 'option as an array to send a POST request has been deprecated. ' + . 'Please use the "form_params" request option to send a ' + . 'application/x-www-form-urlencoded request, or a the "multipart" ' + . 'request option to send a multipart/form-data request.'); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/ClientInterface.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/ClientInterface.php new file mode 100644 index 0000000..b5b2306 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/ClientInterface.php @@ -0,0 +1,84 @@ +strictMode = $strictMode; + + foreach ($cookieArray as $cookie) { + if (!($cookie instanceof SetCookie)) { + $cookie = new SetCookie($cookie); + } + $this->setCookie($cookie); + } + } + + /** + * Create a new Cookie jar from an associative array and domain. + * + * @param array $cookies Cookies to create the jar from + * @param string $domain Domain to set the cookies to + * + * @return self + */ + public static function fromArray(array $cookies, $domain) + { + $cookieJar = new self(); + foreach ($cookies as $name => $value) { + $cookieJar->setCookie(new SetCookie([ + 'Domain' => $domain, + 'Name' => $name, + 'Value' => $value, + 'Discard' => true + ])); + } + + return $cookieJar; + } + + /** + * Quote the cookie value if it is not already quoted and it contains + * problematic characters. + * + * @param string $value Value that may or may not need to be quoted + * + * @return string + */ + public static function getCookieValue($value) + { + if (substr($value, 0, 1) !== '"' && + substr($value, -1, 1) !== '"' && + strpbrk($value, ';,=') + ) { + $value = '"' . $value . '"'; + } + + return $value; + } + + /** + * Evaluate if this cookie should be persisted to storage + * that survives between requests. + * + * @param SetCookie $cookie Being evaluated. + * @param bool $allowSessionCookies If we should presist session cookies + * @return bool + */ + public static function shouldPersist( + SetCookie $cookie, + $allowSessionCookies = false + ) { + if ($cookie->getExpires() || $allowSessionCookies) { + if (!$cookie->getDiscard()) { + return true; + } + } + + return false; + } + + public function toArray() + { + return array_map(function (SetCookie $cookie) { + return $cookie->toArray(); + }, $this->getIterator()->getArrayCopy()); + } + + public function clear($domain = null, $path = null, $name = null) + { + if (!$domain) { + $this->cookies = []; + return; + } elseif (!$path) { + $this->cookies = array_filter( + $this->cookies, + function (SetCookie $cookie) use ($path, $domain) { + return !$cookie->matchesDomain($domain); + } + ); + } elseif (!$name) { + $this->cookies = array_filter( + $this->cookies, + function (SetCookie $cookie) use ($path, $domain) { + return !($cookie->matchesPath($path) && + $cookie->matchesDomain($domain)); + } + ); + } else { + $this->cookies = array_filter( + $this->cookies, + function (SetCookie $cookie) use ($path, $domain, $name) { + return !($cookie->getName() == $name && + $cookie->matchesPath($path) && + $cookie->matchesDomain($domain)); + } + ); + } + } + + public function clearSessionCookies() + { + $this->cookies = array_filter( + $this->cookies, + function (SetCookie $cookie) { + return !$cookie->getDiscard() && $cookie->getExpires(); + } + ); + } + + public function setCookie(SetCookie $cookie) + { + // If the name string is empty (but not 0), ignore the set-cookie + // string entirely. + $name = $cookie->getName(); + if (!$name && $name !== '0') { + return false; + } + + // Only allow cookies with set and valid domain, name, value + $result = $cookie->validate(); + if ($result !== true) { + if ($this->strictMode) { + throw new \RuntimeException('Invalid cookie: ' . $result); + } else { + $this->removeCookieIfEmpty($cookie); + return false; + } + } + + // Resolve conflicts with previously set cookies + foreach ($this->cookies as $i => $c) { + + // Two cookies are identical, when their path, and domain are + // identical. + if ($c->getPath() != $cookie->getPath() || + $c->getDomain() != $cookie->getDomain() || + $c->getName() != $cookie->getName() + ) { + continue; + } + + // The previously set cookie is a discard cookie and this one is + // not so allow the new cookie to be set + if (!$cookie->getDiscard() && $c->getDiscard()) { + unset($this->cookies[$i]); + continue; + } + + // If the new cookie's expiration is further into the future, then + // replace the old cookie + if ($cookie->getExpires() > $c->getExpires()) { + unset($this->cookies[$i]); + continue; + } + + // If the value has changed, we better change it + if ($cookie->getValue() !== $c->getValue()) { + unset($this->cookies[$i]); + continue; + } + + // The cookie exists, so no need to continue + return false; + } + + $this->cookies[] = $cookie; + + return true; + } + + public function count() + { + return count($this->cookies); + } + + public function getIterator() + { + return new \ArrayIterator(array_values($this->cookies)); + } + + public function extractCookies( + RequestInterface $request, + ResponseInterface $response + ) { + if ($cookieHeader = $response->getHeader('Set-Cookie')) { + foreach ($cookieHeader as $cookie) { + $sc = SetCookie::fromString($cookie); + if (!$sc->getDomain()) { + $sc->setDomain($request->getUri()->getHost()); + } + $this->setCookie($sc); + } + } + } + + public function withCookieHeader(RequestInterface $request) + { + $values = []; + $uri = $request->getUri(); + $scheme = $uri->getScheme(); + $host = $uri->getHost(); + $path = $uri->getPath() ?: '/'; + + foreach ($this->cookies as $cookie) { + if ($cookie->matchesPath($path) && + $cookie->matchesDomain($host) && + !$cookie->isExpired() && + (!$cookie->getSecure() || $scheme == 'https') + ) { + $values[] = $cookie->getName() . '=' + . self::getCookieValue($cookie->getValue()); + } + } + + return $values + ? $request->withHeader('Cookie', implode('; ', $values)) + : $request; + } + + /** + * If a cookie already exists and the server asks to set it again with a + * null value, the cookie must be deleted. + * + * @param SetCookie $cookie + */ + private function removeCookieIfEmpty(SetCookie $cookie) + { + $cookieValue = $cookie->getValue(); + if ($cookieValue === null || $cookieValue === '') { + $this->clear( + $cookie->getDomain(), + $cookie->getPath(), + $cookie->getName() + ); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/CookieJarInterface.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/CookieJarInterface.php new file mode 100644 index 0000000..2cf298a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/CookieJarInterface.php @@ -0,0 +1,84 @@ +filename = $cookieFile; + $this->storeSessionCookies = $storeSessionCookies; + + if (file_exists($cookieFile)) { + $this->load($cookieFile); + } + } + + /** + * Saves the file when shutting down + */ + public function __destruct() + { + $this->save($this->filename); + } + + /** + * Saves the cookies to a file. + * + * @param string $filename File to save + * @throws \RuntimeException if the file cannot be found or created + */ + public function save($filename) + { + $json = []; + foreach ($this as $cookie) { + /** @var SetCookie $cookie */ + if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { + $json[] = $cookie->toArray(); + } + } + + if (false === file_put_contents($filename, json_encode($json))) { + throw new \RuntimeException("Unable to save file {$filename}"); + } + } + + /** + * Load cookies from a JSON formatted file. + * + * Old cookies are kept unless overwritten by newly loaded ones. + * + * @param string $filename Cookie file to load. + * @throws \RuntimeException if the file cannot be loaded. + */ + public function load($filename) + { + $json = file_get_contents($filename); + if (false === $json) { + throw new \RuntimeException("Unable to load file {$filename}"); + } + + $data = json_decode($json, true); + if (is_array($data)) { + foreach (json_decode($json, true) as $cookie) { + $this->setCookie(new SetCookie($cookie)); + } + } elseif (strlen($data)) { + throw new \RuntimeException("Invalid cookie file: {$filename}"); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SessionCookieJar.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SessionCookieJar.php new file mode 100644 index 0000000..d80c480 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SessionCookieJar.php @@ -0,0 +1,72 @@ +sessionKey = $sessionKey; + $this->storeSessionCookies = $storeSessionCookies; + $this->load(); + } + + /** + * Saves cookies to session when shutting down + */ + public function __destruct() + { + $this->save(); + } + + /** + * Save cookies to the client session + */ + public function save() + { + $json = []; + foreach ($this as $cookie) { + /** @var SetCookie $cookie */ + if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) { + $json[] = $cookie->toArray(); + } + } + + $_SESSION[$this->sessionKey] = json_encode($json); + } + + /** + * Load the contents of the client session into the data array + */ + protected function load() + { + $cookieJar = isset($_SESSION[$this->sessionKey]) + ? $_SESSION[$this->sessionKey] + : null; + + $data = json_decode($cookieJar, true); + if (is_array($data)) { + foreach ($data as $cookie) { + $this->setCookie(new SetCookie($cookie)); + } + } elseif (strlen($data)) { + throw new \RuntimeException("Invalid cookie data"); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SetCookie.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SetCookie.php new file mode 100644 index 0000000..acd654d --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Cookie/SetCookie.php @@ -0,0 +1,404 @@ + null, + 'Value' => null, + 'Domain' => null, + 'Path' => '/', + 'Max-Age' => null, + 'Expires' => null, + 'Secure' => false, + 'Discard' => false, + 'HttpOnly' => false + ]; + + /** @var array Cookie data */ + private $data; + + /** + * Create a new SetCookie object from a string + * + * @param string $cookie Set-Cookie header string + * + * @return self + */ + public static function fromString($cookie) + { + // Create the default return array + $data = self::$defaults; + // Explode the cookie string using a series of semicolons + $pieces = array_filter(array_map('trim', explode(';', $cookie))); + // The name of the cookie (first kvp) must include an equal sign. + if (empty($pieces) || !strpos($pieces[0], '=')) { + return new self($data); + } + + // Add the cookie pieces into the parsed data array + foreach ($pieces as $part) { + + $cookieParts = explode('=', $part, 2); + $key = trim($cookieParts[0]); + $value = isset($cookieParts[1]) + ? trim($cookieParts[1], " \n\r\t\0\x0B") + : true; + + // Only check for non-cookies when cookies have been found + if (empty($data['Name'])) { + $data['Name'] = $key; + $data['Value'] = $value; + } else { + foreach (array_keys(self::$defaults) as $search) { + if (!strcasecmp($search, $key)) { + $data[$search] = $value; + continue 2; + } + } + $data[$key] = $value; + } + } + + return new self($data); + } + + /** + * @param array $data Array of cookie data provided by a Cookie parser + */ + public function __construct(array $data = []) + { + $this->data = array_replace(self::$defaults, $data); + // Extract the Expires value and turn it into a UNIX timestamp if needed + if (!$this->getExpires() && $this->getMaxAge()) { + // Calculate the Expires date + $this->setExpires(time() + $this->getMaxAge()); + } elseif ($this->getExpires() && !is_numeric($this->getExpires())) { + $this->setExpires($this->getExpires()); + } + } + + public function __toString() + { + $str = $this->data['Name'] . '=' . $this->data['Value'] . '; '; + foreach ($this->data as $k => $v) { + if ($k != 'Name' && $k != 'Value' && $v !== null && $v !== false) { + if ($k == 'Expires') { + $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; '; + } else { + $str .= ($v === true ? $k : "{$k}={$v}") . '; '; + } + } + } + + return rtrim($str, '; '); + } + + public function toArray() + { + return $this->data; + } + + /** + * Get the cookie name + * + * @return string + */ + public function getName() + { + return $this->data['Name']; + } + + /** + * Set the cookie name + * + * @param string $name Cookie name + */ + public function setName($name) + { + $this->data['Name'] = $name; + } + + /** + * Get the cookie value + * + * @return string + */ + public function getValue() + { + return $this->data['Value']; + } + + /** + * Set the cookie value + * + * @param string $value Cookie value + */ + public function setValue($value) + { + $this->data['Value'] = $value; + } + + /** + * Get the domain + * + * @return string|null + */ + public function getDomain() + { + return $this->data['Domain']; + } + + /** + * Set the domain of the cookie + * + * @param string $domain + */ + public function setDomain($domain) + { + $this->data['Domain'] = $domain; + } + + /** + * Get the path + * + * @return string + */ + public function getPath() + { + return $this->data['Path']; + } + + /** + * Set the path of the cookie + * + * @param string $path Path of the cookie + */ + public function setPath($path) + { + $this->data['Path'] = $path; + } + + /** + * Maximum lifetime of the cookie in seconds + * + * @return int|null + */ + public function getMaxAge() + { + return $this->data['Max-Age']; + } + + /** + * Set the max-age of the cookie + * + * @param int $maxAge Max age of the cookie in seconds + */ + public function setMaxAge($maxAge) + { + $this->data['Max-Age'] = $maxAge; + } + + /** + * The UNIX timestamp when the cookie Expires + * + * @return mixed + */ + public function getExpires() + { + return $this->data['Expires']; + } + + /** + * Set the unix timestamp for which the cookie will expire + * + * @param int $timestamp Unix timestamp + */ + public function setExpires($timestamp) + { + $this->data['Expires'] = is_numeric($timestamp) + ? (int) $timestamp + : strtotime($timestamp); + } + + /** + * Get whether or not this is a secure cookie + * + * @return null|bool + */ + public function getSecure() + { + return $this->data['Secure']; + } + + /** + * Set whether or not the cookie is secure + * + * @param bool $secure Set to true or false if secure + */ + public function setSecure($secure) + { + $this->data['Secure'] = $secure; + } + + /** + * Get whether or not this is a session cookie + * + * @return null|bool + */ + public function getDiscard() + { + return $this->data['Discard']; + } + + /** + * Set whether or not this is a session cookie + * + * @param bool $discard Set to true or false if this is a session cookie + */ + public function setDiscard($discard) + { + $this->data['Discard'] = $discard; + } + + /** + * Get whether or not this is an HTTP only cookie + * + * @return bool + */ + public function getHttpOnly() + { + return $this->data['HttpOnly']; + } + + /** + * Set whether or not this is an HTTP only cookie + * + * @param bool $httpOnly Set to true or false if this is HTTP only + */ + public function setHttpOnly($httpOnly) + { + $this->data['HttpOnly'] = $httpOnly; + } + + /** + * Check if the cookie matches a path value. + * + * A request-path path-matches a given cookie-path if at least one of + * the following conditions holds: + * + * - The cookie-path and the request-path are identical. + * - The cookie-path is a prefix of the request-path, and the last + * character of the cookie-path is %x2F ("/"). + * - The cookie-path is a prefix of the request-path, and the first + * character of the request-path that is not included in the cookie- + * path is a %x2F ("/") character. + * + * @param string $requestPath Path to check against + * + * @return bool + */ + public function matchesPath($requestPath) + { + $cookiePath = $this->getPath(); + + // Match on exact matches or when path is the default empty "/" + if ($cookiePath == '/' || $cookiePath == $requestPath) { + return true; + } + + // Ensure that the cookie-path is a prefix of the request path. + if (0 !== strpos($requestPath, $cookiePath)) { + return false; + } + + // Match if the last character of the cookie-path is "/" + if (substr($cookiePath, -1, 1) == '/') { + return true; + } + + // Match if the first character not included in cookie path is "/" + return substr($requestPath, strlen($cookiePath), 1) == '/'; + } + + /** + * Check if the cookie matches a domain value + * + * @param string $domain Domain to check against + * + * @return bool + */ + public function matchesDomain($domain) + { + // Remove the leading '.' as per spec in RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.2.3 + $cookieDomain = ltrim($this->getDomain(), '.'); + + // Domain not set or exact match. + if (!$cookieDomain || !strcasecmp($domain, $cookieDomain)) { + return true; + } + + // Matching the subdomain according to RFC 6265. + // http://tools.ietf.org/html/rfc6265#section-5.1.3 + if (filter_var($domain, FILTER_VALIDATE_IP)) { + return false; + } + + return (bool) preg_match('/\.' . preg_quote($cookieDomain) . '$/', $domain); + } + + /** + * Check if the cookie is expired + * + * @return bool + */ + public function isExpired() + { + return $this->getExpires() && time() > $this->getExpires(); + } + + /** + * Check if the cookie is valid according to RFC 6265 + * + * @return bool|string Returns true if valid or an error message if invalid + */ + public function validate() + { + // Names must not be empty, but can be 0 + $name = $this->getName(); + if (empty($name) && !is_numeric($name)) { + return 'The cookie name must not be empty'; + } + + // Check if any of the invalid characters are present in the cookie name + if (preg_match( + '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/', + $name) + ) { + return 'Cookie name must not contain invalid characters: ASCII ' + . 'Control characters (0-31;127), space, tab and the ' + . 'following characters: ()<>@,;:\"/?={}'; + } + + // Value must not be empty, but can be 0 + $value = $this->getValue(); + if (empty($value) && !is_numeric($value)) { + return 'The cookie value must not be empty'; + } + + // Domains must not be empty, but can be 0 + // A "0" is not a valid internet domain, but may be used as server name + // in a private network. + $domain = $this->getDomain(); + if (empty($domain) && !is_numeric($domain)) { + return 'The cookie domain must not be empty'; + } + + return true; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/BadResponseException.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/BadResponseException.php new file mode 100644 index 0000000..fd78431 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/BadResponseException.php @@ -0,0 +1,7 @@ +getStatusCode() + : 0; + parent::__construct($message, $code, $previous); + $this->request = $request; + $this->response = $response; + $this->handlerContext = $handlerContext; + } + + /** + * Wrap non-RequestExceptions with a RequestException + * + * @param RequestInterface $request + * @param \Exception $e + * + * @return RequestException + */ + public static function wrapException(RequestInterface $request, \Exception $e) + { + return $e instanceof RequestException + ? $e + : new RequestException($e->getMessage(), $request, null, $e); + } + + /** + * Factory method to create a new exception with a normalized error message + * + * @param RequestInterface $request Request + * @param ResponseInterface $response Response received + * @param \Exception $previous Previous exception + * @param array $ctx Optional handler context. + * + * @return self + */ + public static function create( + RequestInterface $request, + ResponseInterface $response = null, + \Exception $previous = null, + array $ctx = [] + ) { + if (!$response) { + return new self( + 'Error completing request', + $request, + null, + $previous, + $ctx + ); + } + + $level = floor($response->getStatusCode() / 100); + if ($level == '4') { + $label = 'Client error response'; + $className = __NAMESPACE__ . '\\ClientException'; + } elseif ($level == '5') { + $label = 'Server error response'; + $className = __NAMESPACE__ . '\\ServerException'; + } else { + $label = 'Unsuccessful response'; + $className = __CLASS__; + } + + $message = $label . ' [url] ' . $request->getUri() + . ' [http method] ' . $request->getMethod() + . ' [status code] ' . $response->getStatusCode() + . ' [reason phrase] ' . $response->getReasonPhrase(); + + return new $className($message, $request, $response, $previous, $ctx); + } + + /** + * Get the request that caused the exception + * + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + + /** + * Get the associated response + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } + + /** + * Check if a response was received + * + * @return bool + */ + public function hasResponse() + { + return $this->response !== null; + } + + /** + * Get contextual information about the error from the underlying handler. + * + * The contents of this array will vary depending on which handler you are + * using. It may also be just an empty array. Relying on this data will + * couple you to a specific handler, but can give more debug information + * when needed. + * + * @return array + */ + public function getHandlerContext() + { + return $this->handlerContext; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/SeekException.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/SeekException.php new file mode 100644 index 0000000..a77c289 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/SeekException.php @@ -0,0 +1,27 @@ +stream = $stream; + $msg = $msg ?: 'Could not seek the stream to position ' . $pos; + parent::__construct($msg); + } + + /** + * @return StreamInterface + */ + public function getStream() + { + return $this->stream; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ServerException.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ServerException.php new file mode 100644 index 0000000..7cdd340 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Exception/ServerException.php @@ -0,0 +1,7 @@ +maxHandles = $maxHandles; + } + + public function create(RequestInterface $request, array $options) + { + 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']); + + // Add handler options from the request configuration options + if (isset($options['curl'])) { + $conf = array_replace($conf, $options['curl']); + } + + $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy); + $easy->handle = $this->handles + ? array_pop($this->handles) + : curl_init(); + curl_setopt_array($easy->handle, $conf); + + return $easy; + } + + public function release(EasyHandle $easy) + { + $resource = $easy->handle; + unset($easy->handle); + + if (count($this->handles) >= $this->maxHandles) { + curl_close($resource); + } else { + // Remove all callback functions as they can hold onto references + // and are not cleaned up by curl_reset. Using curl_setopt_array + // does not work for some reason, so removing each one + // individually. + 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; + } + } + + /** + * Completes a cURL transaction, either returning a response promise or a + * rejected promise. + * + * @param callable $handler + * @param EasyHandle $easy + * @param CurlFactoryInterface $factory Dictates how the handle is released + * + * @return \GuzzleHttp\Promise\PromiseInterface + */ + public static function finish( + callable $handler, + EasyHandle $easy, + CurlFactoryInterface $factory + ) { + if (isset($easy->options['on_stats'])) { + self::invokeStats($easy); + } + + if (!$easy->response || $easy->errno) { + return self::finishError($handler, $easy, $factory); + } + + // Return the response if it is present and there is no error. + $factory->release($easy); + + // Rewind the body of the response if possible. + $body = $easy->response->getBody(); + if ($body->isSeekable()) { + $body->rewind(); + } + + return new FulfilledPromise($easy->response); + } + + private static function invokeStats(EasyHandle $easy) + { + $curlStats = curl_getinfo($easy->handle); + $stats = new TransferStats( + $easy->request, + $easy->response, + $curlStats['total_time'], + $easy->errno, + $curlStats + ); + call_user_func($easy->options['on_stats'], $stats); + } + + private static function finishError( + callable $handler, + EasyHandle $easy, + CurlFactoryInterface $factory + ) { + // Get error information and release the handle to the factory. + $ctx = [ + 'errno' => $easy->errno, + 'error' => curl_error($easy->handle), + ] + curl_getinfo($easy->handle); + $factory->release($easy); + + // Retry when nothing is present or when curl failed to rewind. + if (empty($easy->options['_err_message']) + && (!$easy->errno || $easy->errno == 65) + ) { + return self::retryFailedRewind($handler, $easy, $ctx); + } + + return self::createRejection($easy, $ctx); + } + + private static function createRejection(EasyHandle $easy, array $ctx) + { + static $connectionErrors = [ + CURLE_OPERATION_TIMEOUTED => true, + CURLE_COULDNT_RESOLVE_HOST => true, + CURLE_COULDNT_CONNECT => true, + CURLE_SSL_CONNECT_ERROR => true, + CURLE_GOT_NOTHING => true, + ]; + + // If an exception was encountered during the onHeaders event, then + // return a rejected promise that wraps that exception. + if ($easy->onHeadersException) { + return new RejectedPromise( + new RequestException( + 'An error was encountered during the on_headers event', + $easy->request, + $easy->response, + $easy->onHeadersException, + $ctx + ) + ); + } + + $message = sprintf( + 'cURL error %s: %s (%s)', + $ctx['errno'], + $ctx['error'], + 'see http://curl.haxx.se/libcurl/c/libcurl-errors.html' + ); + + // Create a connection exception if it was a specific error code. + $error = isset($connectionErrors[$easy->errno]) + ? new ConnectException($message, $easy->request, null, $ctx) + : new RequestException($message, $easy->request, $easy->response, null, $ctx); + + return new RejectedPromise($error); + } + + private function getDefaultConf(EasyHandle $easy) + { + $conf = [ + '_headers' => $easy->request->getHeaders(), + CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(), + CURLOPT_URL => (string) $easy->request->getUri(), + CURLOPT_RETURNTRANSFER => false, + CURLOPT_HEADER => false, + CURLOPT_CONNECTTIMEOUT => 150, + CURLOPT_NOSIGNAL => true, + ]; + + 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') { + // See http://tools.ietf.org/html/rfc7230#section-3.3.2 + 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') + : null; + + // Send the body as a string if the size is less than 1MB OR if the + // [curl][body_as_string] request value is set. + if (($size !== null && $size < 1000000) || + !empty($options['_body_as_string']) + ) { + $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody(); + // Don't duplicate the Content-Length header + $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(); + $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) { + return $body->read($length); + }; + } + + // If the Expect header is not present, prevent curl from adding it + if (!$request->hasHeader('Expect')) { + $conf[CURLOPT_HTTPHEADER][] = 'Expect:'; + } + + // cURL sometimes adds a content-type by default. Prevent this. + 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:'; + } + } + + /** + * Remove a header from the options array. + * + * @param string $name Case-insensitive header to remove + * @param array $options Array of options to modify + */ + 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'])) { + if ($options['verify'] === false) { + unset($conf[CURLOPT_CAINFO]); + $conf[CURLOPT_SSL_VERIFYHOST] = 0; + $conf[CURLOPT_SSL_VERIFYPEER] = false; + } else { + $conf[CURLOPT_SSL_VERIFYHOST] = 2; + $conf[CURLOPT_SSL_VERIFYPEER] = true; + if (is_string($options['verify'])) { + $conf[CURLOPT_CAINFO] = $options['verify']; + if (!file_exists($options['verify'])) { + throw new \InvalidArgumentException( + "SSL CA bundle not found: {$options['verify']}" + ); + } + } + } + } + + if (!empty($options['decode_content'])) { + $accept = $easy->request->getHeaderLine('Accept-Encoding'); + if ($accept) { + $conf[CURLOPT_ENCODING] = $accept; + } else { + $conf[CURLOPT_ENCODING] = ''; + // Don't let curl send the header over the wire + $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:'; + } + } + + if (isset($options['sink'])) { + $sink = $options['sink']; + if (!is_string($sink)) { + $sink = \GuzzleHttp\Psr7\stream_for($sink); + } elseif (!is_dir(dirname($sink))) { + // Ensure that the directory exists before failing in curl. + 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 { + // Use a default temp stream if no sink was set. + $conf[CURLOPT_FILE] = fopen('php://temp', 'w+'); + $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]); + } + + if (isset($options['timeout'])) { + $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000; + } + + if (isset($options['connect_timeout'])) { + $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000; + } + + 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(); + // PHP 5.5 pushed the handle onto the start of the 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; + } + } + + /** + * This function ensures that a response was set on a transaction. If one + * was not set, then the request is retried if possible. This error + * typically means you are sending a payload, curl encountered a + * "Connection died, retrying a fresh connect" error, tried to rewind the + * stream, and then encountered a "necessary data rewind wasn't possible" + * error, causing the request to be sent through curl_multi_info_read() + * without an error status. + */ + private static function retryFailedRewind( + callable $handler, + EasyHandle $easy, + array $ctx + ) { + try { + // Only rewind if the body has been read from. + $body = $easy->request->getBody(); + if ($body->tell() > 0) { + $body->rewind(); + } + } catch (\RuntimeException $e) { + $ctx['error'] = 'The connection unexpectedly failed without ' + . 'providing an error. The request would have been retried, ' + . 'but attempting to rewind the request body failed. ' + . 'Exception: ' . $e; + return self::createRejection($easy, $ctx); + } + + // Retry no more than 3 times before giving up. + if (!isset($easy->options['_curl_retries'])) { + $easy->options['_curl_retries'] = 1; + } elseif ($easy->options['_curl_retries'] == 2) { + $ctx['error'] = 'The cURL request was retried 3 times ' + . 'and did not succeed. The most likely reason for the failure ' + . 'is that cURL was unable to rewind the body of the request ' + . 'and subsequent retries resulted in the same error. Turn on ' + . 'the debug option to see what went wrong. See ' + . 'https://bugs.php.net/bug.php?id=47204 for more information.'; + return self::createRejection($easy, $ctx); + } else { + $easy->options['_curl_retries']++; + } + + return $handler($easy->request, $easy->options); + } + + private function createHeaderFn(EasyHandle $easy) + { + if (!isset($easy->options['on_headers'])) { + $onHeaders = null; + } elseif (!is_callable($easy->options['on_headers'])) { + throw new \InvalidArgumentException('on_headers must be callable'); + } else { + $onHeaders = $easy->options['on_headers']; + } + + return function ($ch, $h) use ( + $onHeaders, + $easy, + &$startingResponse + ) { + $value = trim($h); + if ($value === '') { + $startingResponse = true; + $easy->createResponse(); + if ($onHeaders) { + try { + $onHeaders($easy->response); + } catch (\Exception $e) { + // Associate the exception with the handle and trigger + // a curl header write error by returning 0. + $easy->onHeadersException = $e; + return -1; + } + } + } elseif ($startingResponse) { + $startingResponse = false; + $easy->headers = [$value]; + } else { + $easy->headers[] = $value; + } + return strlen($h); + }; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlFactoryInterface.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlFactoryInterface.php new file mode 100644 index 0000000..b0fc236 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlFactoryInterface.php @@ -0,0 +1,27 @@ +factory = isset($options['handle_factory']) + ? $options['handle_factory'] + : new CurlFactory(3); + } + + public function __invoke(RequestInterface $request, array $options) + { + if (isset($options['delay'])) { + usleep($options['delay'] * 1000); + } + + $easy = $this->factory->create($request, $options); + curl_exec($easy->handle); + $easy->errno = curl_errno($easy->handle); + + return CurlFactory::finish($this, $easy, $this->factory); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlMultiHandler.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlMultiHandler.php new file mode 100644 index 0000000..417850b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/CurlMultiHandler.php @@ -0,0 +1,197 @@ +factory = isset($options['handle_factory']) + ? $options['handle_factory'] : new CurlFactory(50); + $this->selectTimeout = isset($options['select_timeout']) + ? $options['select_timeout'] : 1; + } + + public function __get($name) + { + if ($name === '_mh') { + return $this->_mh = curl_multi_init(); + } + + throw new \BadMethodCallException(); + } + + public function __destruct() + { + if (isset($this->_mh)) { + curl_multi_close($this->_mh); + unset($this->_mh); + } + } + + public function __invoke(RequestInterface $request, array $options) + { + $easy = $this->factory->create($request, $options); + $id = (int) $easy->handle; + + $promise = new Promise( + [$this, 'execute'], + function () use ($id) { return $this->cancel($id); } + ); + + $this->addRequest(['easy' => $easy, 'deferred' => $promise]); + + return $promise; + } + + /** + * Ticks the curl event loop. + */ + public function tick() + { + // Add any delayed handles if needed. + if ($this->delays) { + $currentTime = microtime(true); + foreach ($this->delays as $id => $delay) { + if ($currentTime >= $delay) { + unset($this->delays[$id]); + curl_multi_add_handle( + $this->_mh, + $this->handles[$id]['easy']->handle + ); + } + } + } + + // Step through the task queue which may add additional requests. + P\queue()->run(); + + if ($this->active && + curl_multi_select($this->_mh, $this->selectTimeout) === -1 + ) { + // Perform a usleep if a select returns -1. + // See: https://bugs.php.net/bug.php?id=61141 + usleep(250); + } + + while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM); + + $this->processMessages(); + } + + /** + * Runs until all outstanding connections have completed. + */ + public function execute() + { + $queue = P\queue(); + + while ($this->handles || !$queue->isEmpty()) { + // If there are no transfers, then sleep for the next delay + if (!$this->active && $this->delays) { + usleep($this->timeToNext()); + } + $this->tick(); + } + } + + private function addRequest(array $entry) + { + $easy = $entry['easy']; + $id = (int) $easy->handle; + $this->handles[$id] = $entry; + if (empty($easy->options['delay'])) { + curl_multi_add_handle($this->_mh, $easy->handle); + } else { + $this->delays[$id] = microtime(true) + ($easy->options['delay'] / 1000); + } + } + + /** + * Cancels a handle from sending and removes references to it. + * + * @param int $id Handle ID to cancel and remove. + * + * @return bool True on success, false on failure. + */ + private function cancel($id) + { + // Cannot cancel if it has been processed. + if (!isset($this->handles[$id])) { + return false; + } + + $handle = $this->handles[$id]['easy']->handle; + unset($this->delays[$id], $this->handles[$id]); + curl_multi_remove_handle($this->_mh, $handle); + curl_close($handle); + + return true; + } + + private function processMessages() + { + while ($done = curl_multi_info_read($this->_mh)) { + $id = (int) $done['handle']; + curl_multi_remove_handle($this->_mh, $done['handle']); + + if (!isset($this->handles[$id])) { + // Probably was cancelled. + continue; + } + + $entry = $this->handles[$id]; + unset($this->handles[$id], $this->delays[$id]); + $entry['easy']->errno = $done['result']; + $entry['deferred']->resolve( + CurlFactory::finish( + $this, + $entry['easy'], + $this->factory + ) + ); + } + } + + private function timeToNext() + { + $currentTime = microtime(true); + $nextTime = PHP_INT_MAX; + foreach ($this->delays as $time) { + if ($time < $nextTime) { + $nextTime = $time; + } + } + + return max(0, $currentTime - $nextTime); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/EasyHandle.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/EasyHandle.php new file mode 100644 index 0000000..c4b927e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/EasyHandle.php @@ -0,0 +1,87 @@ +headers)) { + throw new \RuntimeException('No headers have been received'); + } + + // HTTP-version SP status-code SP reason-phrase + $startLine = explode(' ', array_shift($this->headers), 3); + $headers = \GuzzleHttp\headers_from_lines($this->headers); + $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers); + + if (!empty($this->options['decode_content']) + && isset($normalizedKeys['content-encoding']) + ) { + unset($headers[$normalizedKeys['content-encoding']]); + if (isset($normalizedKeys['content-length'])) { + $bodyLength = (int) $this->sink->getSize(); + if ($bodyLength) { + $headers[$normalizedKeys['content-length']] = $bodyLength; + } else { + unset($headers[$normalizedKeys['content-length']]); + } + } + } + + // Attach a response to the easy handle with the parsed headers. + $this->response = new Response( + $startLine[1], + $headers, + $this->sink, + substr($startLine[0], 5), + isset($startLine[2]) ? (string) $startLine[2] : null + ); + } + + public function __get($name) + { + $msg = $name === 'handle' + ? 'The EasyHandle has been released' + : 'Invalid property: ' . $name; + throw new \BadMethodCallException($msg); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/MockHandler.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/MockHandler.php new file mode 100644 index 0000000..4b1b0af --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/MockHandler.php @@ -0,0 +1,163 @@ +onFulfilled = $onFulfilled; + $this->onRejected = $onRejected; + + if ($queue) { + call_user_func_array([$this, 'append'], $queue); + } + } + + public function __invoke(RequestInterface $request, array $options) + { + if (!$this->queue) { + throw new \OutOfBoundsException('Mock queue is empty'); + } + + if (isset($options['delay'])) { + usleep($options['delay'] * 1000); + } + + $this->lastRequest = $request; + $this->lastOptions = $options; + $response = array_shift($this->queue); + + if (is_callable($response)) { + $response = $response($request, $options); + } + + $response = $response instanceof \Exception + ? new RejectedPromise($response) + : \GuzzleHttp\Promise\promise_for($response); + + return $response->then( + function ($value) use ($request, $options) { + $this->invokeStats($request, $options, $value); + if ($this->onFulfilled) { + call_user_func($this->onFulfilled, $value); + } + return $value; + }, + function ($reason) use ($request, $options) { + $this->invokeStats($request, $options, null, $reason); + if ($this->onRejected) { + call_user_func($this->onRejected, $reason); + } + return new RejectedPromise($reason); + } + ); + } + + /** + * Adds one or more variadic requests, exceptions, callables, or promises + * to the queue. + */ + public function append() + { + foreach (func_get_args() as $value) { + if ($value instanceof ResponseInterface + || $value instanceof \Exception + || $value instanceof PromiseInterface + || is_callable($value) + ) { + $this->queue[] = $value; + } else { + throw new \InvalidArgumentException('Expected a response or ' + . 'exception. Found ' . \GuzzleHttp\describe_type($value)); + } + } + } + + /** + * Get the last received request. + * + * @return RequestInterface + */ + public function getLastRequest() + { + return $this->lastRequest; + } + + /** + * Get the last received request options. + * + * @return RequestInterface + */ + public function getLastOptions() + { + return $this->lastOptions; + } + + /** + * Returns the number of remaining items in the queue. + * + * @return int + */ + public function count() + { + return count($this->queue); + } + + private function invokeStats( + RequestInterface $request, + array $options, + ResponseInterface $response = null, + $reason = null + ) { + if (isset($options['on_stats'])) { + $stats = new TransferStats($request, $response, 0, $reason); + call_user_func($options['on_stats'], $stats); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/Proxy.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/Proxy.php new file mode 100644 index 0000000..9bd76d2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Handler/Proxy.php @@ -0,0 +1,54 @@ +withoutHeader('Expect'); + + // Append a content-length header if body size is zero to match + // cURL's behavior. + 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) { + // Determine if the error was a networking error. + $message = $e->getMessage(); + // This list can probably get more comprehensive. + if (strpos($message, 'getaddrinfo') // DNS lookup failed + || strpos($message, 'Connection refused') + || strpos($message, "couldn't connect to host") // error on HHVM + ) { + $e = new ConnectException($e->getMessage(), $request, $e); + } + $e = RequestException::wrapException($request, $e); + $this->invokeStats($options, $request, $startTime, null, $e); + + return new RejectedPromise($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); + $stream = Psr7\stream_for($stream); + $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 new RejectedPromise($ex); + } + } + + if ($sink !== $stream) { + $this->drain($stream, $sink); + } + + $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+'); + + return is_string($sink) + ? new Psr7\Stream(Psr7\try_fopen($sink, 'r+')) + : Psr7\stream_for($sink); + } + + private function checkDecode(array $options, array $headers, $stream) + { + // Automatically decode responses when instructed. + 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') { + $stream = new Psr7\InflateStream( + Psr7\stream_for($stream) + ); + // Remove content-encoding header + unset($headers[$normalizedKeys['content-encoding']]); + // Fix content-length header + if (isset($normalizedKeys['content-length'])) { + $length = (int) $stream->getSize(); + if ($length == 0) { + unset($headers[$normalizedKeys['content-length']]); + } else { + $headers[$normalizedKeys['content-length']] = [$length]; + } + } + } + } + } + + return [$stream, $headers]; + } + + /** + * Drains the source stream into the "sink" client option. + * + * @param StreamInterface $source + * @param StreamInterface $sink + * + * @return StreamInterface + * @throws \RuntimeException when the sink option is invalid. + */ + private function drain(StreamInterface $source, StreamInterface $sink) + { + Psr7\copy_to_stream($source, $sink); + $sink->seek(0); + $source->close(); + + return $sink; + } + + /** + * Create a resource and check to ensure it was created successfully + * + * @param callable $callback Callable that returns stream resource + * + * @return resource + * @throws \RuntimeException on error + */ + 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__)); + } + + // HTTP/1.1 streams using the PHP stream wrapper require a + // Connection: close header + if ($request->getProtocolVersion() == '1.1' + && !$request->hasHeader('Connection') + ) { + $request = $request->withHeader('Connection', 'close'); + } + + // Ensure SSL is verified by default + 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'] + ); + } + + $context = $this->createResource( + function () use ($context, $params) { + return stream_context_create($context, $params); + } + ); + + return $this->createResource( + function () use ($request, &$http_response_header, $context) { + $resource = fopen($request->getUri(), 'r', null, $context); + $this->lastHeaders = $http_response_header; + return $resource; + } + ); + } + + 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; + // Prevent the HTTP handler from adding a Content-Type header. + 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) + { + $options['http']['timeout'] = $value; + } + + private function add_verify(RequestInterface $request, &$options, $value, &$params) + { + if ($value === true) { + // PHP 5.6 or greater will find the system cert by default. When + // < 5.6, use the Guzzle bundled cacert. + 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; + return; + } else { + throw new \InvalidArgumentException('Invalid verify request option'); + } + + $options['ssl']['verify_peer'] = 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(); + $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) + { + // Wrap the existing function if needed. + 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/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/HandlerStack.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/HandlerStack.php new file mode 100644 index 0000000..f851849 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/HandlerStack.php @@ -0,0 +1,272 @@ +push(Middleware::httpErrors(), 'http_errors'); + $stack->push(Middleware::redirect(), 'allow_redirects'); + $stack->push(Middleware::cookies(), 'cookies'); + $stack->push(Middleware::prepareBody(), 'prepare_body'); + + return $stack; + } + + /** + * @param callable $handler Underlying HTTP handler. + */ + public function __construct(callable $handler = null) + { + $this->handler = $handler; + } + + /** + * Invokes the handler stack as a composed handler + * + * @param RequestInterface $request + * @param array $options + */ + public function __invoke(RequestInterface $request, array $options) + { + if (!$this->cached) { + $this->cached = $this->resolve(); + } + + $handler = $this->cached; + return $handler($request, $options); + } + + /** + * Dumps a string representation of the stack. + * + * @return string + */ + public function __toString() + { + $depth = 0; + $stack = []; + if ($this->handler) { + $stack[] = "0) Handler: " . $this->debugCallable($this->handler); + } + + $result = ''; + foreach (array_reverse($this->stack) as $tuple) { + $depth++; + $str = "{$depth}) Name: '{$tuple[1]}', "; + $str .= "Function: " . $this->debugCallable($tuple[0]); + $result = "> {$str}\n{$result}"; + $stack[] = $str; + } + + foreach (array_keys($stack) as $k) { + $result .= "< {$stack[$k]}\n"; + } + + return $result; + } + + /** + * Set the HTTP handler that actually returns a promise. + * + * @param callable $handler Accepts a request and array of options and + * returns a Promise. + */ + public function setHandler(callable $handler) + { + $this->handler = $handler; + $this->cached = null; + } + + /** + * Returns true if the builder has a handler. + * + * @return bool + */ + public function hasHandler() + { + return (bool) $this->handler; + } + + /** + * Unshift a middleware to the bottom of the stack. + * + * @param callable $middleware Middleware function + * @param string $name Name to register for this middleware. + */ + public function unshift(callable $middleware, $name = null) + { + array_unshift($this->stack, [$middleware, $name]); + $this->cached = null; + } + + /** + * Push a middleware to the top of the stack. + * + * @param callable $middleware Middleware function + * @param string $name Name to register for this middleware. + */ + public function push(callable $middleware, $name = '') + { + $this->stack[] = [$middleware, $name]; + $this->cached = null; + } + + /** + * Add a middleware before another middleware by name. + * + * @param string $findName Middleware to find + * @param callable $middleware Middleware function + * @param string $withName Name to register for this middleware. + */ + public function before($findName, callable $middleware, $withName = '') + { + $this->splice($findName, $withName, $middleware, true); + } + + /** + * Add a middleware after another middleware by name. + * + * @param string $findName Middleware to find + * @param callable $middleware Middleware function + * @param string $withName Name to register for this middleware. + */ + public function after($findName, callable $middleware, $withName = '') + { + $this->splice($findName, $withName, $middleware, false); + } + + /** + * Remove a middleware by instance or name from the stack. + * + * @param callable|string $remove Middleware to remove by instance or name. + */ + public function remove($remove) + { + $this->cached = null; + $idx = is_callable($remove) ? 0 : 1; + $this->stack = array_values(array_filter( + $this->stack, + function ($tuple) use ($idx, $remove) { + return $tuple[$idx] !== $remove; + } + )); + } + + /** + * Compose the middleware and handler into a single callable function. + * + * @return callable + */ + public function resolve() + { + if (!($prev = $this->handler)) { + throw new \LogicException('No handler has been specified'); + } + + foreach (array_reverse($this->stack) as $fn) { + $prev = $fn[0]($prev); + } + + return $prev; + } + + /** + * @param $name + * @return int + */ + private function findByName($name) + { + foreach ($this->stack as $k => $v) { + if ($v[1] === $name) { + return $k; + } + } + + throw new \InvalidArgumentException("Middleware not found: $name"); + } + + /** + * Splices a function into the middleware list at a specific position. + * + * @param $findName + * @param $withName + * @param callable $middleware + * @param $before + */ + private function splice($findName, $withName, callable $middleware, $before) + { + $this->cached = null; + $idx = $this->findByName($findName); + $tuple = [$middleware, $withName]; + + if ($before) { + if ($idx === 0) { + array_unshift($this->stack, $tuple); + } else { + $replacement = [$tuple, $this->stack[$idx]]; + array_splice($this->stack, $idx, 1, $replacement); + } + } elseif ($idx === count($this->stack) - 1) { + $this->stack[] = $tuple; + } else { + $replacement = [$this->stack[$idx], $tuple]; + array_splice($this->stack, $idx, 1, $replacement); + } + } + + /** + * Provides a debug string for a given callable. + * + * @param array|callable $fn Function to write as a string. + * + * @return string + */ + private function debugCallable($fn) + { + if (is_string($fn)) { + return "callable({$fn})"; + } + + if (is_array($fn)) { + return is_string($fn[0]) + ? "callable({$fn[0]}::{$fn[1]})" + : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])"; + } + + return 'callable(' . spl_object_hash($fn) . ')'; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/MessageFormatter.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/MessageFormatter.php new file mode 100644 index 0000000..6b090a9 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/MessageFormatter.php @@ -0,0 +1,182 @@ +>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}"; + const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}'; + + /** @var string Template used to format log messages */ + private $template; + + /** + * @param string $template Log message template + */ + public function __construct($template = self::CLF) + { + $this->template = $template ?: self::CLF; + } + + /** + * 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 + ) { + $cache = []; + + return preg_replace_callback( + '/{\s*([A-Za-z_\-\.0-9]+)\s*}/', + function (array $matches) use ($request, $response, $error, &$cache) { + + if (isset($cache[$matches[1]])) { + return $cache[$matches[1]]; + } + + $result = ''; + switch ($matches[1]) { + case 'request': + $result = Psr7\str($request); + break; + case 'response': + $result = $response ? Psr7\str($response) : ''; + break; + case 'req_headers': + $result = trim($request->getMethod() + . ' ' . $request->getRequestTarget()) + . ' HTTP/' . $request->getProtocolVersion() . "\r\n" + . $this->headers($request); + break; + case 'res_headers': + $result = $response ? + sprintf( + 'HTTP/%s %d %s', + $response->getProtocolVersion(), + $response->getStatusCode(), + $response->getReasonPhrase() + ) . "\r\n" . $this->headers($response) + : 'NULL'; + break; + case 'req_body': + $result = $request->getBody(); + break; + case 'res_body': + $result = $response ? $response->getBody() : 'NULL'; + break; + case 'ts': + case 'date_iso_8601': + $result = gmdate('c'); + break; + case 'date_common_log': + $result = date('d/M/Y:H:i:s O'); + break; + case 'method': + $result = $request->getMethod(); + break; + case 'version': + $result = $request->getProtocolVersion(); + break; + case 'uri': + case 'url': + $result = $request->getUri(); + break; + case 'target': + $result = $request->getRequestTarget(); + break; + case 'req_version': + $result = $request->getProtocolVersion(); + break; + case 'res_version': + $result = $response + ? $response->getProtocolVersion() + : 'NULL'; + break; + case 'host': + $result = $request->getHeaderLine('Host'); + break; + case 'hostname': + $result = gethostname(); + break; + case 'code': + $result = $response ? $response->getStatusCode() : 'NULL'; + break; + case 'phrase': + $result = $response ? $response->getReasonPhrase() : 'NULL'; + break; + case 'error': + $result = $error ? $error->getMessage() : 'NULL'; + break; + default: + // handle prefixed dynamic headers + if (strpos($matches[1], 'req_header_') === 0) { + $result = $request->getHeaderLine(substr($matches[1], 11)); + } elseif (strpos($matches[1], 'res_header_') === 0) { + $result = $response + ? $response->getHeaderLine(substr($matches[1], 11)) + : 'NULL'; + } + } + + $cache[$matches[1]] = $result; + return $result; + }, + $this->template + ); + } + + private function headers(MessageInterface $message) + { + $result = ''; + foreach ($message->getHeaders() as $name => $values) { + $result .= $name . ': ' . implode(', ', $values) . "\r\n"; + } + + return trim($result); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Middleware.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Middleware.php new file mode 100644 index 0000000..2f165f3 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Middleware.php @@ -0,0 +1,253 @@ +withCookieHeader($request); + return $handler($request, $options) + ->then(function ($response) use ($cookieJar, $request) { + $cookieJar->extractCookies($request, $response); + return $response; + } + ); + }; + }; + } + + /** + * Middleware that throws exceptions for 4xx or 5xx responses when the + * "http_error" request option is set to true. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function httpErrors() + { + return function (callable $handler) { + return function ($request, array $options) use ($handler) { + if (empty($options['http_errors'])) { + return $handler($request, $options); + } + return $handler($request, $options)->then( + function (ResponseInterface $response) use ($request, $handler) { + $code = $response->getStatusCode(); + if ($code < 400) { + return $response; + } + throw $code > 499 + ? new ServerException("Server error: $code", $request, $response) + : new ClientException("Client error: $code", $request, $response); + } + ); + }; + }; + } + + /** + * Middleware that pushes history data to an ArrayAccess container. + * + * @param array $container Container to hold the history (by reference). + * + * @return callable Returns a function that accepts the next handler. + */ + public static function history(array &$container) + { + return function (callable $handler) use (&$container) { + return function ($request, array $options) use ($handler, &$container) { + return $handler($request, $options)->then( + function ($value) use ($request, &$container, $options) { + $container[] = [ + 'request' => $request, + 'response' => $value, + 'error' => null, + 'options' => $options + ]; + return $value; + }, + function ($reason) use ($request, &$container, $options) { + $container[] = [ + 'request' => $request, + 'response' => null, + 'error' => $reason, + 'options' => $options + ]; + return new RejectedPromise($reason); + } + ); + }; + }; + } + + /** + * Middleware that invokes a callback before and after sending a request. + * + * The provided listener cannot modify or alter the response. It simply + * "taps" into the chain to be notified before returning the promise. The + * before listener accepts a request and options array, and the after + * listener accepts a request, options array, and response promise. + * + * @param callable $before Function to invoke before forwarding the request. + * @param callable $after Function invoked after forwarding. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function tap(callable $before = null, callable $after = null) + { + return function (callable $handler) use ($before, $after) { + return function ($request, array $options) use ($handler, $before, $after) { + if ($before) { + $before($request, $options); + } + $response = $handler($request, $options); + if ($after) { + $after($request, $options, $response); + } + return $response; + }; + }; + } + + /** + * Middleware that handles request redirects. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function redirect() + { + return function (callable $handler) { + return new RedirectMiddleware($handler); + }; + } + + /** + * Middleware that retries requests based on the boolean result of + * invoking the provided "decider" function. + * + * If no delay function is provided, a simple implementation of exponential + * backoff will be utilized. + * + * @param callable $decider Function that accepts the number of retries, + * a request, [response], and [exception] and + * returns true if the request is to be retried. + * @param callable $delay Function that accepts the number of retries and + * returns the number of milliseconds to delay. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function retry(callable $decider, callable $delay = null) + { + return function (callable $handler) use ($decider, $delay) { + return new RetryMiddleware($decider, $handler, $delay); + }; + } + + /** + * Middleware that logs requests, responses, and errors using a message + * formatter. + * + * @param LoggerInterface $logger Logs messages. + * @param MessageFormatter $formatter Formatter used to create message strings. + * @param string $logLevel Level at which to log requests. + * + * @return callable Returns a function that accepts the next handler. + */ + public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = LogLevel::INFO) + { + return function (callable $handler) use ($logger, $formatter, $logLevel) { + return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) { + return $handler($request, $options)->then( + function ($response) use ($logger, $request, $formatter, $logLevel) { + $message = $formatter->format($request, $response); + $logger->log($logLevel, $message); + return $response; + }, + function ($reason) use ($logger, $request, $formatter) { + $response = $reason instanceof RequestException + ? $reason->getResponse() + : null; + $message = $formatter->format($request, $response, $reason); + $logger->notice($message); + return \GuzzleHttp\Promise\rejection_for($reason); + } + ); + }; + }; + } + + /** + * This middleware adds a default content-type if possible, a default + * content-length or transfer-encoding header, and the expect header. + * + * @return callable + */ + public static function prepareBody() + { + return function (callable $handler) { + return new PrepareBodyMiddleware($handler); + }; + } + + /** + * Middleware that applies a map function to the request before passing to + * the next handler. + * + * @param callable $fn Function that accepts a RequestInterface and returns + * a RequestInterface. + * @return callable + */ + public static function mapRequest(callable $fn) + { + return function (callable $handler) use ($fn) { + return function ($request, array $options) use ($handler, $fn) { + return $handler($fn($request), $options); + }; + }; + } + + /** + * Middleware that applies a map function to the resolved promise's + * response. + * + * @param callable $fn Function that accepts a ResponseInterface and + * returns a ResponseInterface. + * @return callable + */ + public static function mapResponse(callable $fn) + { + return function (callable $handler) use ($fn) { + return function ($request, array $options) use ($handler, $fn) { + return $handler($request, $options)->then($fn); + }; + }; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Pool.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Pool.php new file mode 100644 index 0000000..bc41d6e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Pool.php @@ -0,0 +1,123 @@ +sendAsync($rfn, $opts); + } elseif (is_callable($rfn)) { + yield $rfn($opts); + } else { + throw new \InvalidArgumentException('Each value yielded by ' + . 'the iterator must be a Psr7\Http\Message\RequestInterface ' + . 'or a callable that returns a promise that fulfills ' + . 'with a Psr7\Message\Http\ResponseInterface object.'); + } + } + }; + + $this->each = new EachPromise($requests(), $config); + } + + public function promise() + { + return $this->each->promise(); + } + + /** + * Sends multiple requests concurrently and returns an array of responses + * and exceptions that uses the same ordering as the provided requests. + * + * IMPORTANT: This method keeps every request and response in memory, and + * as such, is NOT recommended when sending a large number or an + * indeterminate number of requests concurrently. + * + * @param ClientInterface $client Client used to send the requests + * @param array|\Iterator $requests Requests to send concurrently. + * @param array $options Passes through the options available in + * {@see GuzzleHttp\Pool::__construct} + * + * @return array Returns an array containing the response or an exception + * in the same order that the requests were sent. + * @throws \InvalidArgumentException if the event format is incorrect. + */ + public static function batch( + ClientInterface $client, + $requests, + array $options = [] + ) { + $res = []; + self::cmpCallback($options, 'fulfilled', $res); + self::cmpCallback($options, 'rejected', $res); + $pool = new static($client, $requests, $options); + $pool->promise()->wait(); + ksort($res); + + return $res; + } + + private static function cmpCallback(array &$options, $name, array &$results) + { + if (!isset($options[$name])) { + $options[$name] = function ($v, $k) use (&$results) { + $results[$k] = $v; + }; + } else { + $currentFn = $options[$name]; + $options[$name] = function ($v, $k) use (&$results, $currentFn) { + $currentFn($v, $k); + $results[$k] = $v; + }; + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/PrepareBodyMiddleware.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/PrepareBodyMiddleware.php new file mode 100644 index 0000000..e6d176b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/PrepareBodyMiddleware.php @@ -0,0 +1,112 @@ + true, 'HEAD' => true]; + + /** + * @param callable $nextHandler Next handler to invoke. + */ + public function __construct(callable $nextHandler) + { + $this->nextHandler = $nextHandler; + } + + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(RequestInterface $request, array $options) + { + $fn = $this->nextHandler; + + // Don't do anything if the request has no body. + if (isset(self::$skipMethods[$request->getMethod()]) + || $request->getBody()->getSize() === 0 + ) { + return $fn($request, $options); + } + + $modify = []; + + // Add a default content-type if possible. + if (!$request->hasHeader('Content-Type')) { + if ($uri = $request->getBody()->getMetadata('uri')) { + if ($type = Psr7\mimetype_from_filename($uri)) { + $modify['set_headers']['Content-Type'] = $type; + } + } + } + + // Add a default content-length or transfer-encoding header. + if (!isset(self::$skipMethods[$request->getMethod()]) + && !$request->hasHeader('Content-Length') + && !$request->hasHeader('Transfer-Encoding') + ) { + $size = $request->getBody()->getSize(); + if ($size !== null) { + $modify['set_headers']['Content-Length'] = $size; + } else { + $modify['set_headers']['Transfer-Encoding'] = 'chunked'; + } + } + + // Add the expect header if needed. + $this->addExpectHeader($request, $options, $modify); + + return $fn(Psr7\modify_request($request, $modify), $options); + } + + private function addExpectHeader( + RequestInterface $request, + array $options, + array &$modify + ) { + // Determine if the Expect header should be used + if ($request->hasHeader('Expect')) { + return; + } + + $expect = isset($options['expect']) ? $options['expect'] : null; + + // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0 + if ($expect === false || $request->getProtocolVersion() < 1.1) { + return; + } + + // The expect header is unconditionally enabled + if ($expect === true) { + $modify['set_headers']['Expect'] = '100-Continue'; + return; + } + + // By default, send the expect header when the payload is > 1mb + if ($expect === null) { + $expect = 1048576; + } + + // Always add if the body cannot be rewound, the size cannot be + // determined, or the size is greater than the cutoff threshold + $body = $request->getBody(); + $size = $body->getSize(); + + if ($size === null || $size >= (int) $expect || !$body->isSeekable()) { + $modify['set_headers']['Expect'] = '100-Continue'; + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/AggregateException.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/AggregateException.php new file mode 100644 index 0000000..6a5690c --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/AggregateException.php @@ -0,0 +1,16 @@ +iterable = iter_for($iterable); + + if (isset($config['concurrency'])) { + $this->concurrency = $config['concurrency']; + } + + if (isset($config['fulfilled'])) { + $this->onFulfilled = $config['fulfilled']; + } + + if (isset($config['rejected'])) { + $this->onRejected = $config['rejected']; + } + } + + public function promise() + { + if ($this->aggregate) { + return $this->aggregate; + } + + try { + $this->createPromise(); + $this->iterable->rewind(); + $this->refillPending(); + } catch (\Exception $e) { + $this->aggregate->reject($e); + } + + return $this->aggregate; + } + + private function createPromise() + { + $this->aggregate = new Promise(function () { + reset($this->pending); + // Consume a potentially fluctuating list of promises while + // ensuring that indexes are maintained (precluding array_shift). + while ($promise = current($this->pending)) { + next($this->pending); + $promise->wait(); + if ($this->aggregate->getState() !== PromiseInterface::PENDING) { + return; + } + } + }); + + // Clear the references when the promise is resolved. + $clearFn = function () { + $this->iterable = $this->concurrency = $this->pending = null; + $this->onFulfilled = $this->onRejected = null; + }; + + $this->aggregate->then($clearFn, $clearFn); + } + + private function refillPending() + { + if (!$this->concurrency) { + // Add all pending promises. + while ($this->addPending() && $this->advanceIterator()); + return; + } + + // Add only up to N pending promises. + $concurrency = is_callable($this->concurrency) + ? call_user_func($this->concurrency, count($this->pending)) + : $this->concurrency; + $concurrency = max($concurrency - count($this->pending), 0); + // Concurrency may be set to 0 to disallow new promises. + if (!$concurrency) { + return; + } + // Add the first pending promise. + $this->addPending(); + // Note this is special handling for concurrency=1 so that we do + // not advance the iterator after adding the first promise. This + // helps work around issues with generators that might not have the + // next value to yield until promise callbacks are called. + while (--$concurrency + && $this->advanceIterator() + && $this->addPending()); + } + + private function addPending() + { + if (!$this->iterable || !$this->iterable->valid()) { + return false; + } + + $promise = promise_for($this->iterable->current()); + $idx = $this->iterable->key(); + + $this->pending[$idx] = $promise->then( + function ($value) use ($idx) { + if ($this->onFulfilled) { + call_user_func( + $this->onFulfilled, $value, $idx, $this->aggregate + ); + } + $this->step($idx); + }, + function ($reason) use ($idx) { + if ($this->onRejected) { + call_user_func( + $this->onRejected, $reason, $idx, $this->aggregate + ); + } + $this->step($idx); + } + ); + + return true; + } + + private function advanceIterator() + { + try { + $this->iterable->next(); + return true; + } catch (\Exception $e) { + $this->aggregate->reject($e); + return false; + } + } + + private function step($idx) + { + // If the promise was already resolved, then ignore this step. + if ($this->aggregate->getState() !== PromiseInterface::PENDING) { + return; + } + + unset($this->pending[$idx]); + $this->advanceIterator(); + + if (!$this->checkIfFinished()) { + // Add more pending promises if possible. + $this->refillPending(); + } + } + + private function checkIfFinished() + { + if (!$this->pending && !$this->iterable->valid()) { + // Resolve the promise if there's nothing left to do. + $this->aggregate->resolve(null); + return true; + } + + return false; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/FulfilledPromise.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/FulfilledPromise.php new file mode 100644 index 0000000..5596296 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/FulfilledPromise.php @@ -0,0 +1,80 @@ +value = $value; + } + + public function then( + callable $onFulfilled = null, + callable $onRejected = null + ) { + // Return itself if there is no onFulfilled function. + if (!$onFulfilled) { + return $this; + } + + $queue = queue(); + $p = new Promise([$queue, 'run']); + $value = $this->value; + $queue->add(static function () use ($p, $value, $onFulfilled) { + if ($p->getState() === self::PENDING) { + try { + $p->resolve($onFulfilled($value)); + } catch (\Exception $e) { + $p->reject($e); + } + } + }); + + return $p; + } + + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + + public function wait($unwrap = true, $defaultDelivery = null) + { + return $unwrap ? $this->value : null; + } + + public function getState() + { + return self::FULFILLED; + } + + public function resolve($value) + { + if ($value !== $this->value) { + throw new \LogicException("Cannot resolve a fulfilled promise"); + } + } + + public function reject($reason) + { + throw new \LogicException("Cannot reject a fulfilled promise"); + } + + public function cancel() + { + // pass + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/Promise.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/Promise.php new file mode 100644 index 0000000..c2cf969 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/Promise.php @@ -0,0 +1,268 @@ +waitFn = $waitFn; + $this->cancelFn = $cancelFn; + } + + public function then( + callable $onFulfilled = null, + callable $onRejected = null + ) { + if ($this->state === self::PENDING) { + $p = new Promise(null, [$this, 'cancel']); + $this->handlers[] = [$p, $onFulfilled, $onRejected]; + $p->waitList = $this->waitList; + $p->waitList[] = $this; + return $p; + } + + // Return a fulfilled promise and immediately invoke any callbacks. + if ($this->state === self::FULFILLED) { + return $onFulfilled + ? promise_for($this->result)->then($onFulfilled) + : promise_for($this->result); + } + + // It's either cancelled or rejected, so return a rejected promise + // and immediately invoke any callbacks. + $rejection = rejection_for($this->result); + return $onRejected ? $rejection->then(null, $onRejected) : $rejection; + } + + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + + public function wait($unwrap = true) + { + $this->waitIfPending(); + + if (!$unwrap) { + return null; + } + + if ($this->result instanceof PromiseInterface) { + return $this->result->wait($unwrap); + } elseif ($this->state === self::FULFILLED) { + return $this->result; + } else { + // It's rejected so "unwrap" and throw an exception. + throw exception_for($this->result); + } + } + + public function getState() + { + return $this->state; + } + + public function cancel() + { + if ($this->state !== self::PENDING) { + return; + } + + $this->waitFn = $this->waitList = null; + + if ($this->cancelFn) { + $fn = $this->cancelFn; + $this->cancelFn = null; + try { + $fn(); + } catch (\Exception $e) { + $this->reject($e); + } + } + + // Reject the promise only if it wasn't rejected in a then callback. + if ($this->state === self::PENDING) { + $this->reject(new CancellationException('Promise has been cancelled')); + } + } + + public function resolve($value) + { + $this->settle(self::FULFILLED, $value); + } + + public function reject($reason) + { + $this->settle(self::REJECTED, $reason); + } + + private function settle($state, $value) + { + if ($this->state !== self::PENDING) { + // Ignore calls with the same resolution. + if ($state === $this->state && $value === $this->result) { + return; + } + throw $this->state === $state + ? new \LogicException("The promise is already {$state}.") + : new \LogicException("Cannot change a {$this->state} promise to {$state}"); + } + + if ($value === $this) { + throw new \LogicException('Cannot fulfill or reject a promise with itself'); + } + + // Clear out the state of the promise but stash the handlers. + $this->state = $state; + $this->result = $value; + $handlers = $this->handlers; + $this->handlers = null; + $this->waitList = $this->waitFn = null; + $this->cancelFn = null; + + if (!$handlers) { + return; + } + + // If the value was not a settled promise or a thenable, then resolve + // it in the task queue using the correct ID. + if (!method_exists($value, 'then')) { + $id = $state === self::FULFILLED ? 1 : 2; + // It's a success, so resolve the handlers in the queue. + queue()->add(static function () use ($id, $value, $handlers) { + foreach ($handlers as $handler) { + self::callHandler($id, $value, $handler); + } + }); + } elseif ($value instanceof Promise + && $value->getState() === self::PENDING + ) { + // We can just merge our handlers onto the next promise. + $value->handlers = array_merge($value->handlers, $handlers); + } else { + // Resolve the handlers when the forwarded promise is resolved. + $value->then( + static function ($value) use ($handlers) { + foreach ($handlers as $handler) { + self::callHandler(1, $value, $handler); + } + }, + static function ($reason) use ($handlers) { + foreach ($handlers as $handler) { + self::callHandler(2, $reason, $handler); + } + } + ); + } + } + + /** + * Call a stack of handlers using a specific callback index and value. + * + * @param int $index 1 (resolve) or 2 (reject). + * @param mixed $value Value to pass to the callback. + * @param array $handler Array of handler data (promise and callbacks). + * + * @return array Returns the next group to resolve. + */ + private static function callHandler($index, $value, array $handler) + { + /** @var PromiseInterface $promise */ + $promise = $handler[0]; + + // The promise may have been cancelled or resolved before placing + // this thunk in the queue. + if ($promise->getState() !== self::PENDING) { + return; + } + + try { + if (isset($handler[$index])) { + $promise->resolve($handler[$index]($value)); + } elseif ($index === 1) { + // Forward resolution values as-is. + $promise->resolve($value); + } else { + // Forward rejections down the chain. + $promise->reject($value); + } + } catch (\Exception $reason) { + $promise->reject($reason); + } + } + + private function waitIfPending() + { + if ($this->state !== self::PENDING) { + return; + } elseif ($this->waitFn) { + $this->invokeWaitFn(); + } elseif ($this->waitList) { + $this->invokeWaitList(); + } else { + // If there's not wait function, then reject the promise. + $this->reject('Cannot wait on a promise that has ' + . 'no internal wait function. You must provide a wait ' + . 'function when constructing the promise to be able to ' + . 'wait on a promise.'); + } + + queue()->run(); + + if ($this->state === self::PENDING) { + $this->reject('Invoking the wait callback did not resolve the promise'); + } + } + + private function invokeWaitFn() + { + try { + $wfn = $this->waitFn; + $this->waitFn = null; + $wfn(true); + } catch (\Exception $reason) { + if ($this->state === self::PENDING) { + // The promise has not been resolved yet, so reject the promise + // with the exception. + $this->reject($reason); + } else { + // The promise was already resolved, so there's a problem in + // the application. + throw $reason; + } + } + } + + private function invokeWaitList() + { + $waitList = $this->waitList; + $this->waitList = null; + + foreach ($waitList as $result) { + descend: + $result->waitIfPending(); + if ($result->result instanceof Promise) { + $result = $result->result; + goto descend; + } + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/PromiseInterface.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/PromiseInterface.php new file mode 100644 index 0000000..8f5f4b9 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/PromiseInterface.php @@ -0,0 +1,93 @@ +reason = $reason; + } + + public function then( + callable $onFulfilled = null, + callable $onRejected = null + ) { + // If there's no onRejected callback then just return self. + if (!$onRejected) { + return $this; + } + + $queue = queue(); + $reason = $this->reason; + $p = new Promise([$queue, 'run']); + $queue->add(static function () use ($p, $reason, $onRejected) { + if ($p->getState() === self::PENDING) { + try { + // Return a resolved promise if onRejected does not throw. + $p->resolve($onRejected($reason)); + } catch (\Exception $e) { + // onRejected threw, so return a rejected promise. + $p->reject($e); + } + } + }); + + return $p; + } + + public function otherwise(callable $onRejected) + { + return $this->then(null, $onRejected); + } + + public function wait($unwrap = true, $defaultDelivery = null) + { + if ($unwrap) { + throw exception_for($this->reason); + } + } + + public function getState() + { + return self::REJECTED; + } + + public function resolve($value) + { + throw new \LogicException("Cannot resolve a rejected promise"); + } + + public function reject($reason) + { + if ($reason !== $this->reason) { + throw new \LogicException("Cannot reject a rejected promise"); + } + } + + public function cancel() + { + // pass + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/RejectionException.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/RejectionException.php new file mode 100644 index 0000000..07c1136 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/RejectionException.php @@ -0,0 +1,47 @@ +reason = $reason; + + $message = 'The promise was rejected'; + + if ($description) { + $message .= ' with reason: ' . $description; + } elseif (is_string($reason) + || (is_object($reason) && method_exists($reason, '__toString')) + ) { + $message .= ' with reason: ' . $this->reason; + } elseif ($reason instanceof \JsonSerializable) { + $message .= ' with reason: ' + . json_encode($this->reason, JSON_PRETTY_PRINT); + } + + parent::__construct($message); + } + + /** + * Returns the rejection reason. + * + * @return mixed + */ + public function getReason() + { + return $this->reason; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/TaskQueue.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/TaskQueue.php new file mode 100644 index 0000000..5026363 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/TaskQueue.php @@ -0,0 +1,79 @@ +run(); + */ +class TaskQueue +{ + private $enableShutdown = true; + private $queue = []; + + public function __construct($withShutdown = true) + { + if ($withShutdown) { + register_shutdown_function(function () { + if ($this->enableShutdown) { + // Only run the tasks if an E_ERROR didn't occur. + $err = error_get_last(); + if (!$err || ($err['type'] ^ E_ERROR)) { + $this->run(); + } + } + }); + } + } + + /** + * Returns true if the queue is empty. + * + * @return bool + */ + public function isEmpty() + { + return !$this->queue; + } + + /** + * Adds a task to the queue that will be executed the next time run is + * called. + * + * @param callable $task + */ + public function add(callable $task) + { + $this->queue[] = $task; + } + + /** + * Execute all of the pending task in the queue. + */ + public function run() + { + while ($task = array_shift($this->queue)) { + $task(); + } + } + + /** + * The task queue will be run and exhausted by default when the process + * exits IFF the exit is not the result of a PHP E_ERROR error. + * + * You can disable running the automatic shutdown of the queue by calling + * this function. If you disable the task queue shutdown process, then you + * MUST either run the task queue (as a result of running your event loop + * or manually using the run() method) or wait on each outstanding promise. + * + * Note: This shutdown will occur before any destructors are triggered. + */ + public function disableShutdown() + { + $this->enableShutdown = false; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions.php new file mode 100644 index 0000000..89c6569 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions.php @@ -0,0 +1,495 @@ + + * while ($eventLoop->isRunning()) { + * GuzzleHttp\Promise\queue()->run(); + * } + * + * + * @return TaskQueue + */ +function queue() +{ + static $queue; + + if (!$queue) { + $queue = new TaskQueue(); + } + + return $queue; +} + +/** + * Adds a function to run in the task queue when it is next `run()` and returns + * a promise that is fulfilled or rejected with the result. + * + * @param callable $task Task function to run. + * + * @return PromiseInterface + */ +function task(callable $task) +{ + $queue = queue(); + $promise = new Promise([$queue, 'run']); + $queue->add(function () use ($task, $promise) { + try { + $promise->resolve($task()); + } catch (\Exception $e) { + $promise->reject($e); + } + }); + + return $promise; +} + +/** + * Creates a promise for a value if the value is not a promise. + * + * @param mixed $value Promise or value. + * + * @return PromiseInterface + */ +function promise_for($value) +{ + if ($value instanceof PromiseInterface) { + return $value; + } + + // Return a Guzzle promise that shadows the given promise. + if (method_exists($value, 'then')) { + $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null; + $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null; + $promise = new Promise($wfn, $cfn); + $value->then([$promise, 'resolve'], [$promise, 'reject']); + return $promise; + } + + return new FulfilledPromise($value); +} + +/** + * Creates a rejected promise for a reason if the reason is not a promise. If + * the provided reason is a promise, then it is returned as-is. + * + * @param mixed $reason Promise or reason. + * + * @return PromiseInterface + */ +function rejection_for($reason) +{ + if ($reason instanceof PromiseInterface) { + return $reason; + } + + return new RejectedPromise($reason); +} + +/** + * Create an exception for a rejected promise value. + * + * @param mixed $reason + * + * @return \Exception + */ +function exception_for($reason) +{ + return $reason instanceof \Exception + ? $reason + : new RejectionException($reason); +} + +/** + * Returns an iterator for the given value. + * + * @param mixed $value + * + * @return \Iterator + */ +function iter_for($value) +{ + if ($value instanceof \Iterator) { + return $value; + } elseif (is_array($value)) { + return new \ArrayIterator($value); + } else { + return new \ArrayIterator([$value]); + } +} + +/** + * Synchronously waits on a promise to resolve and returns an inspection state + * array. + * + * Returns a state associative array containing a "state" key mapping to a + * valid promise state. If the state of the promise is "fulfilled", the array + * will contain a "value" key mapping to the fulfilled value of the promise. If + * the promise is rejected, the array will contain a "reason" key mapping to + * the rejection reason of the promise. + * + * @param PromiseInterface $promise Promise or value. + * + * @return array + */ +function inspect(PromiseInterface $promise) +{ + try { + return [ + 'state' => PromiseInterface::FULFILLED, + 'value' => $promise->wait() + ]; + } catch (RejectionException $e) { + return ['state' => 'rejected', 'reason' => $e->getReason()]; + } catch (\Exception $e) { + return ['state' => 'rejected', 'reason' => $e]; + } +} + +/** + * Waits on all of the provided promises, but does not unwrap rejected promises + * as thrown exception. + * + * Returns an array of inspection state arrays. + * + * @param PromiseInterface[] $promises Traversable of promises to wait upon. + * + * @return array + * @see GuzzleHttp\Promise\inspect for the inspection state array format. + */ +function inspect_all($promises) +{ + $results = []; + foreach ($promises as $key => $promise) { + $results[$key] = inspect($promise); + } + + return $results; +} + +/** + * Waits on all of the provided promises and returns the fulfilled values. + * + * Returns an array that contains the value of each promise (in the same order + * the promises were provided). An exception is thrown if any of the promises + * are rejected. + * + * @param mixed $promises Iterable of PromiseInterface objects to wait on. + * + * @return array + * @throws \Exception on error + */ +function unwrap($promises) +{ + $results = []; + foreach ($promises as $key => $promise) { + $results[$key] = $promise->wait(); + } + + return $results; +} + +/** + * Given an array of promises, return a promise that is fulfilled when all the + * items in the array are fulfilled. + * + * The promise's fulfillment value is an array with fulfillment values at + * respective positions to the original array. If any promise in the array + * rejects, the returned promise is rejected with the rejection reason. + * + * @param mixed $promises Promises or values. + * + * @return Promise + */ +function all($promises) +{ + $results = []; + return each( + $promises, + function ($value, $idx) use (&$results) { + $results[$idx] = $value; + }, + function ($reason, $idx, Promise $aggregate) { + $aggregate->reject($reason); + } + )->then(function () use (&$results) { + ksort($results); + return $results; + }); +} + +/** + * Initiate a competitive race between multiple promises or values (values will + * become immediately fulfilled promises). + * + * When count amount of promises have been fulfilled, the returned promise is + * fulfilled with an array that contains the fulfillment values of the winners + * in order of resolution. + * + * This prommise is rejected with a {@see GuzzleHttp\Promise\AggregateException} + * if the number of fulfilled promises is less than the desired $count. + * + * @param int $count Total number of promises. + * @param mixed $promises Promises or values. + * + * @return Promise + */ +function some($count, $promises) +{ + $results = []; + $rejections = []; + + return each( + $promises, + function ($value, $idx, PromiseInterface $p) use (&$results, $count) { + if ($p->getState() !== PromiseInterface::PENDING) { + return; + } + $results[$idx] = $value; + if (count($results) >= $count) { + $p->resolve(null); + } + }, + function ($reason) use (&$rejections) { + $rejections[] = $reason; + } + )->then( + function () use (&$results, &$rejections, $count) { + if (count($results) !== $count) { + throw new AggregateException( + 'Not enough promises to fulfill count', + $rejections + ); + } + ksort($results); + return array_values($results); + } + ); +} + +/** + * Like some(), with 1 as count. However, if the promise fulfills, the + * fulfillment value is not an array of 1 but the value directly. + * + * @param mixed $promises Promises or values. + * + * @return PromiseInterface + */ +function any($promises) +{ + return some(1, $promises)->then(function ($values) { return $values[0]; }); +} + +/** + * Returns a promise that is fulfilled when all of the provided promises have + * been fulfilled or rejected. + * + * The returned promise is fulfilled with an array of inspection state arrays. + * + * @param mixed $promises Promises or values. + * + * @return Promise + * @see GuzzleHttp\Promise\inspect for the inspection state array format. + */ +function settle($promises) +{ + $results = []; + + return each( + $promises, + function ($value, $idx) use (&$results) { + $results[$idx] = ['state' => 'fulfilled', 'value' => $value]; + }, + function ($reason, $idx) use (&$results) { + $results[$idx] = ['state' => 'rejected', 'reason' => $reason]; + } + )->then(function () use (&$results) { + ksort($results); + return $results; + }); +} + +/** + * Given an iterator that yields promises or values, returns a promise that is + * fulfilled with a null value when the iterator has been consumed or the + * aggregate promise has been fulfilled or rejected. + * + * $onFulfilled is a function that accepts the fulfilled value, iterator + * index, and the aggregate promise. The callback can invoke any necessary side + * effects and choose to resolve or reject the aggregate promise if needed. + * + * $onRejected is a function that accepts the rejection reason, iterator + * index, and the aggregate promise. The callback can invoke any necessary side + * effects and choose to resolve or reject the aggregate promise if needed. + * + * @param mixed $iterable Iterator or array to iterate over. + * @param callable $onFulfilled + * @param callable $onRejected + * + * @return Promise + */ +function each( + $iterable, + callable $onFulfilled = null, + callable $onRejected = null +) { + return (new EachPromise($iterable, [ + 'fulfilled' => $onFulfilled, + 'rejected' => $onRejected + ]))->promise(); +} + +/** + * Like each, but only allows a certain number of outstanding promises at any + * given time. + * + * $concurrency may be an integer or a function that accepts the number of + * pending promises and returns a numeric concurrency limit value to allow for + * dynamic a concurrency size. + * + * @param mixed $iterable + * @param int|callable $concurrency + * @param callable $onFulfilled + * @param callable $onRejected + * + * @return mixed + */ +function each_limit( + $iterable, + $concurrency, + callable $onFulfilled = null, + callable $onRejected = null +) { + return (new EachPromise($iterable, [ + 'fulfilled' => $onFulfilled, + 'rejected' => $onRejected, + 'concurrency' => $concurrency + ]))->promise(); +} + +/** + * Like each_limit, but ensures that no promise in the given $iterable argument + * is rejected. If any promise is rejected, then the aggregate promise is + * rejected with the encountered rejection. + * + * @param mixed $iterable + * @param int|callable $concurrency + * @param callable $onFulfilled + * + * @return mixed + */ +function each_limit_all( + $iterable, + $concurrency, + callable $onFulfilled = null +) { + return each_limit( + $iterable, + $concurrency, + $onFulfilled, + function ($reason, $idx, PromiseInterface $aggregate) { + $aggregate->reject($reason); + } + ); +} + +/** + * Returns true if a promise is fulfilled. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_fulfilled(PromiseInterface $promise) +{ + return $promise->getState() === PromiseInterface::FULFILLED; +} + +/** + * Returns true if a promise is rejected. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_rejected(PromiseInterface $promise) +{ + return $promise->getState() === PromiseInterface::REJECTED; +} + +/** + * Returns true if a promise is fulfilled or rejected. + * + * @param PromiseInterface $promise + * + * @return bool + */ +function is_settled(PromiseInterface $promise) +{ + return $promise->getState() !== PromiseInterface::PENDING; +} + +/** + * Creates a promise that is resolved using a generator that yields values or + * promises (somewhat similar to C#'s async keyword). + * + * When called, the coroutine function will start an instance of the generator + * and returns a promise that is fulfilled with its final yielded value. + * + * Control is returned back to the generator when the yielded promise settles. + * This can lead to less verbose code when doing lots of sequential async calls + * with minimal processing in between. + * + * use GuzzleHttp\Promise; + * + * function createPromise($value) { + * return new Promise\FulfilledPromise($value); + * } + * + * $promise = Promise\coroutine(function () { + * $value = (yield createPromise('a')); + * try { + * $value = (yield createPromise($value . 'b')); + * } catch (\Exception $e) { + * // The promise was rejected. + * } + * yield $value . 'c'; + * }); + * + * // Outputs "abc" + * $promise->then(function ($v) { echo $v; }); + * + * @param callable $generatorFn Generator function to wrap into a promise. + * + * @return Promise + * @link https://github.com/petkaantonov/bluebird/blob/master/API.md#generators inspiration + */ +function coroutine(callable $generatorFn) +{ + $generator = $generatorFn(); + return __next_coroutine($generator->current(), $generator)->then(); +} + +/** @internal */ +function __next_coroutine($yielded, \Generator $generator) +{ + return promise_for($yielded)->then( + function ($value) use ($generator) { + $nextYield = $generator->send($value); + return $generator->valid() + ? __next_coroutine($nextYield, $generator) + : $value; + }, + function ($reason) use ($generator) { + $nextYield = $generator->throw(exception_for($reason)); + // The throw was caught, so keep iterating on the coroutine + return __next_coroutine($nextYield, $generator); + } + ); +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions_include.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions_include.php new file mode 100644 index 0000000..34cd171 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Promise/functions_include.php @@ -0,0 +1,6 @@ +addStream($stream); + } + } + + public function __toString() + { + try { + $this->rewind(); + return $this->getContents(); + } catch (\Exception $e) { + return ''; + } + } + + /** + * Add a stream to the AppendStream + * + * @param StreamInterface $stream Stream to append. Must be readable. + * + * @throws \InvalidArgumentException if the stream is not readable + */ + public function addStream(StreamInterface $stream) + { + if (!$stream->isReadable()) { + throw new \InvalidArgumentException('Each stream must be readable'); + } + + // The stream is only seekable if all streams are seekable + if (!$stream->isSeekable()) { + $this->seekable = false; + } + + $this->streams[] = $stream; + } + + public function getContents() + { + return copy_to_string($this); + } + + /** + * Closes each attached stream. + * + * {@inheritdoc} + */ + public function close() + { + $this->pos = $this->current = 0; + + foreach ($this->streams as $stream) { + $stream->close(); + } + + $this->streams = []; + } + + /** + * Detaches each attached stream + * + * {@inheritdoc} + */ + public function detach() + { + $this->close(); + $this->detached = true; + } + + public function tell() + { + return $this->pos; + } + + /** + * Tries to calculate the size by adding the size of each stream. + * + * If any of the streams do not return a valid number, then the size of the + * append stream cannot be determined and null is returned. + * + * {@inheritdoc} + */ + public function getSize() + { + $size = 0; + + foreach ($this->streams as $stream) { + $s = $stream->getSize(); + if ($s === null) { + return null; + } + $size += $s; + } + + return $size; + } + + public function eof() + { + return !$this->streams || + ($this->current >= count($this->streams) - 1 && + $this->streams[$this->current]->eof()); + } + + public function rewind() + { + $this->seek(0); + } + + /** + * Attempts to seek to the given position. Only supports SEEK_SET. + * + * {@inheritdoc} + */ + public function seek($offset, $whence = SEEK_SET) + { + if (!$this->seekable) { + throw new \RuntimeException('This AppendStream is not seekable'); + } elseif ($whence !== SEEK_SET) { + throw new \RuntimeException('The AppendStream can only seek with SEEK_SET'); + } + + $this->pos = $this->current = 0; + + // Rewind each stream + foreach ($this->streams as $i => $stream) { + try { + $stream->rewind(); + } catch (\Exception $e) { + throw new \RuntimeException('Unable to seek stream ' + . $i . ' of the AppendStream', 0, $e); + } + } + + // Seek to the actual position by reading from each stream + while ($this->pos < $offset && !$this->eof()) { + $result = $this->read(min(8096, $offset - $this->pos)); + if ($result === '') { + break; + } + } + } + + /** + * Reads from all of the appended streams until the length is met or EOF. + * + * {@inheritdoc} + */ + public function read($length) + { + $buffer = ''; + $total = count($this->streams) - 1; + $remaining = $length; + $progressToNext = false; + + while ($remaining > 0) { + + // Progress to the next stream if needed. + if ($progressToNext || $this->streams[$this->current]->eof()) { + $progressToNext = false; + if ($this->current === $total) { + break; + } + $this->current++; + } + + $result = $this->streams[$this->current]->read($remaining); + + // Using a loose comparison here to match on '', false, and null + if ($result == null) { + $progressToNext = true; + continue; + } + + $buffer .= $result; + $remaining = $length - strlen($buffer); + } + + $this->pos += strlen($buffer); + + return $buffer; + } + + public function isReadable() + { + return true; + } + + public function isWritable() + { + return false; + } + + public function isSeekable() + { + return $this->seekable; + } + + public function write($string) + { + throw new \RuntimeException('Cannot write to an AppendStream'); + } + + public function getMetadata($key = null) + { + return $key ? null : []; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/BufferStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/BufferStream.php new file mode 100644 index 0000000..af4d4c2 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/BufferStream.php @@ -0,0 +1,137 @@ +hwm = $hwm; + } + + public function __toString() + { + return $this->getContents(); + } + + public function getContents() + { + $buffer = $this->buffer; + $this->buffer = ''; + + return $buffer; + } + + public function close() + { + $this->buffer = ''; + } + + public function detach() + { + $this->close(); + } + + public function getSize() + { + return strlen($this->buffer); + } + + public function isReadable() + { + return true; + } + + public function isWritable() + { + return true; + } + + public function isSeekable() + { + return false; + } + + public function rewind() + { + $this->seek(0); + } + + public function seek($offset, $whence = SEEK_SET) + { + throw new \RuntimeException('Cannot seek a BufferStream'); + } + + public function eof() + { + return strlen($this->buffer) === 0; + } + + public function tell() + { + throw new \RuntimeException('Cannot determine the position of a BufferStream'); + } + + /** + * Reads data from the buffer. + */ + public function read($length) + { + $currentLength = strlen($this->buffer); + + if ($length >= $currentLength) { + // No need to slice the buffer because we don't have enough data. + $result = $this->buffer; + $this->buffer = ''; + } else { + // Slice up the result to provide a subset of the buffer. + $result = substr($this->buffer, 0, $length); + $this->buffer = substr($this->buffer, $length); + } + + return $result; + } + + /** + * Writes data to the buffer. + */ + public function write($string) + { + $this->buffer .= $string; + + // TODO: What should happen here? + if (strlen($this->buffer) >= $this->hwm) { + return false; + } + + return strlen($string); + } + + public function getMetadata($key = null) + { + if ($key == 'hwm') { + return $this->hwm; + } + + return $key ? null : []; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/CachingStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/CachingStream.php new file mode 100644 index 0000000..796d581 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/CachingStream.php @@ -0,0 +1,136 @@ +remoteStream = $stream; + $this->stream = $target ?: new Stream(fopen('php://temp', 'r+')); + } + + public function getSize() + { + return max($this->stream->getSize(), $this->remoteStream->getSize()); + } + + public function rewind() + { + $this->seek(0); + } + + public function seek($offset, $whence = SEEK_SET) + { + if ($whence == SEEK_SET) { + $byte = $offset; + } elseif ($whence == SEEK_CUR) { + $byte = $offset + $this->tell(); + } elseif ($whence == SEEK_END) { + $size = $this->remoteStream->getSize(); + if ($size === null) { + $size = $this->cacheEntireStream(); + } + // Because 0 is the first byte, we seek to size - 1. + $byte = $size - 1 - $offset; + } else { + throw new \InvalidArgumentException('Invalid whence'); + } + + $diff = $byte - $this->stream->getSize(); + + if ($diff > 0) { + // If the seek byte is greater the number of read bytes, then read + // the difference of bytes to cache the bytes and inherently seek. + $this->read($diff); + } else { + // We can just do a normal seek since we've already seen this byte. + $this->stream->seek($byte); + } + } + + public function read($length) + { + // Perform a regular read on any previously read data from the buffer + $data = $this->stream->read($length); + $remaining = $length - strlen($data); + + // More data was requested so read from the remote stream + if ($remaining) { + // If data was written to the buffer in a position that would have + // been filled from the remote stream, then we must skip bytes on + // the remote stream to emulate overwriting bytes from that + // position. This mimics the behavior of other PHP stream wrappers. + $remoteData = $this->remoteStream->read( + $remaining + $this->skipReadBytes + ); + + if ($this->skipReadBytes) { + $len = strlen($remoteData); + $remoteData = substr($remoteData, $this->skipReadBytes); + $this->skipReadBytes = max(0, $this->skipReadBytes - $len); + } + + $data .= $remoteData; + $this->stream->write($remoteData); + } + + return $data; + } + + public function write($string) + { + // When appending to the end of the currently read stream, you'll want + // to skip bytes from being read from the remote stream to emulate + // other stream wrappers. Basically replacing bytes of data of a fixed + // length. + $overflow = (strlen($string) + $this->tell()) - $this->remoteStream->tell(); + if ($overflow > 0) { + $this->skipReadBytes += $overflow; + } + + return $this->stream->write($string); + } + + public function eof() + { + return $this->stream->eof() && $this->remoteStream->eof(); + } + + /** + * Close both the remote stream and buffer stream + */ + public function close() + { + $this->remoteStream->close() && $this->stream->close(); + } + + private function cacheEntireStream() + { + $target = new FnStream(['write' => 'strlen']); + copy_to_stream($this, $target); + + return $this->tell(); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/DroppingStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/DroppingStream.php new file mode 100644 index 0000000..8935c80 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/DroppingStream.php @@ -0,0 +1,42 @@ +stream = $stream; + $this->maxLength = $maxLength; + } + + public function write($string) + { + $diff = $this->maxLength - $this->stream->getSize(); + + // Begin returning 0 when the underlying stream is too large. + if ($diff <= 0) { + return 0; + } + + // Write the stream or a subset of the stream if needed. + if (strlen($string) < $diff) { + return $this->stream->write($string); + } + + return $this->stream->write(substr($string, 0, $diff)); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/FnStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/FnStream.php new file mode 100644 index 0000000..cc9b445 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/FnStream.php @@ -0,0 +1,149 @@ +methods = $methods; + + // Create the functions on the class + foreach ($methods as $name => $fn) { + $this->{'_fn_' . $name} = $fn; + } + } + + /** + * Lazily determine which methods are not implemented. + * @throws \BadMethodCallException + */ + public function __get($name) + { + throw new \BadMethodCallException(str_replace('_fn_', '', $name) + . '() is not implemented in the FnStream'); + } + + /** + * The close method is called on the underlying stream only if possible. + */ + public function __destruct() + { + if (isset($this->_fn_close)) { + call_user_func($this->_fn_close); + } + } + + /** + * Adds custom functionality to an underlying stream by intercepting + * specific method calls. + * + * @param StreamInterface $stream Stream to decorate + * @param array $methods Hash of method name to a closure + * + * @return FnStream + */ + public static function decorate(StreamInterface $stream, array $methods) + { + // If any of the required methods were not provided, then simply + // proxy to the decorated stream. + foreach (array_diff(self::$slots, array_keys($methods)) as $diff) { + $methods[$diff] = [$stream, $diff]; + } + + return new self($methods); + } + + public function __toString() + { + return call_user_func($this->_fn___toString); + } + + public function close() + { + return call_user_func($this->_fn_close); + } + + public function detach() + { + return call_user_func($this->_fn_detach); + } + + public function getSize() + { + return call_user_func($this->_fn_getSize); + } + + public function tell() + { + return call_user_func($this->_fn_tell); + } + + public function eof() + { + return call_user_func($this->_fn_eof); + } + + public function isSeekable() + { + return call_user_func($this->_fn_isSeekable); + } + + public function rewind() + { + call_user_func($this->_fn_rewind); + } + + public function seek($offset, $whence = SEEK_SET) + { + call_user_func($this->_fn_seek, $offset, $whence); + } + + public function isWritable() + { + return call_user_func($this->_fn_isWritable); + } + + public function write($string) + { + return call_user_func($this->_fn_write, $string); + } + + public function isReadable() + { + return call_user_func($this->_fn_isReadable); + } + + public function read($length) + { + return call_user_func($this->_fn_read, $length); + } + + public function getContents() + { + return call_user_func($this->_fn_getContents); + } + + public function getMetadata($key = null) + { + return call_user_func($this->_fn_getMetadata, $key); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/InflateStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/InflateStream.php new file mode 100644 index 0000000..2c8628b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/InflateStream.php @@ -0,0 +1,29 @@ +stream = new Stream($resource); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LazyOpenStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LazyOpenStream.php new file mode 100644 index 0000000..02cec3a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LazyOpenStream.php @@ -0,0 +1,39 @@ +filename = $filename; + $this->mode = $mode; + } + + /** + * Creates the underlying stream lazily when required. + * + * @return StreamInterface + */ + protected function createStream() + { + return stream_for(try_fopen($this->filename, $this->mode)); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LimitStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LimitStream.php new file mode 100644 index 0000000..7f2298b --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/LimitStream.php @@ -0,0 +1,155 @@ +stream = $stream; + $this->setLimit($limit); + $this->setOffset($offset); + } + + public function eof() + { + // Always return true if the underlying stream is EOF + if ($this->stream->eof()) { + return true; + } + + // No limit and the underlying stream is not at EOF + if ($this->limit == -1) { + return false; + } + + return $this->stream->tell() >= $this->offset + $this->limit; + } + + /** + * Returns the size of the limited subset of data + * {@inheritdoc} + */ + public function getSize() + { + if (null === ($length = $this->stream->getSize())) { + return null; + } elseif ($this->limit == -1) { + return $length - $this->offset; + } else { + return min($this->limit, $length - $this->offset); + } + } + + /** + * Allow for a bounded seek on the read limited stream + * {@inheritdoc} + */ + public function seek($offset, $whence = SEEK_SET) + { + if ($whence !== SEEK_SET || $offset < 0) { + throw new \RuntimeException(sprintf( + 'Cannot seek to offset % with whence %s', + $offset, + $whence + )); + } + + $offset += $this->offset; + + if ($this->limit !== -1) { + if ($offset > $this->offset + $this->limit) { + $offset = $this->offset + $this->limit; + } + } + + $this->stream->seek($offset); + } + + /** + * Give a relative tell() + * {@inheritdoc} + */ + public function tell() + { + return $this->stream->tell() - $this->offset; + } + + /** + * Set the offset to start limiting from + * + * @param int $offset Offset to seek to and begin byte limiting from + * + * @throws \RuntimeException if the stream cannot be seeked. + */ + public function setOffset($offset) + { + $current = $this->stream->tell(); + + if ($current !== $offset) { + // If the stream cannot seek to the offset position, then read to it + if ($this->stream->isSeekable()) { + $this->stream->seek($offset); + } elseif ($current > $offset) { + throw new \RuntimeException("Could not seek to stream offset $offset"); + } else { + $this->stream->read($offset - $current); + } + } + + $this->offset = $offset; + } + + /** + * Set the limit of bytes that the decorator allows to be read from the + * stream. + * + * @param int $limit Number of bytes to allow to be read from the stream. + * Use -1 for no limit. + */ + public function setLimit($limit) + { + $this->limit = $limit; + } + + public function read($length) + { + if ($this->limit == -1) { + return $this->stream->read($length); + } + + // Check if the current position is less than the total allowed + // bytes + original offset + $remaining = ($this->offset + $this->limit) - $this->stream->tell(); + if ($remaining > 0) { + // Only return the amount of requested data, ensuring that the byte + // limit is not exceeded + return $this->stream->read(min($remaining, $length)); + } + + return ''; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MessageTrait.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MessageTrait.php new file mode 100644 index 0000000..123205c --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MessageTrait.php @@ -0,0 +1,158 @@ +protocol; + } + + public function withProtocolVersion($version) + { + if ($this->protocol === $version) { + return $this; + } + + $new = clone $this; + $new->protocol = $version; + return $new; + } + + public function getHeaders() + { + return $this->headerLines; + } + + public function hasHeader($header) + { + return isset($this->headers[strtolower($header)]); + } + + public function getHeader($header) + { + $name = strtolower($header); + return isset($this->headers[$name]) ? $this->headers[$name] : []; + } + + public function getHeaderLine($header) + { + return implode(', ', $this->getHeader($header)); + } + + public function withHeader($header, $value) + { + $new = clone $this; + $header = trim($header); + $name = strtolower($header); + + if (!is_array($value)) { + $new->headers[$name] = [trim($value)]; + } else { + $new->headers[$name] = $value; + foreach ($new->headers[$name] as &$v) { + $v = trim($v); + } + } + + // Remove the header lines. + foreach (array_keys($new->headerLines) as $key) { + if (strtolower($key) === $name) { + unset($new->headerLines[$key]); + } + } + + // Add the header line. + $new->headerLines[$header] = $new->headers[$name]; + + return $new; + } + + public function withAddedHeader($header, $value) + { + if (!$this->hasHeader($header)) { + return $this->withHeader($header, $value); + } + + $new = clone $this; + $new->headers[strtolower($header)][] = $value; + $new->headerLines[$header][] = $value; + return $new; + } + + public function withoutHeader($header) + { + if (!$this->hasHeader($header)) { + return $this; + } + + $new = clone $this; + $name = strtolower($header); + unset($new->headers[$name]); + + foreach (array_keys($new->headerLines) as $key) { + if (strtolower($key) === $name) { + unset($new->headerLines[$key]); + } + } + + return $new; + } + + public function getBody() + { + if (!$this->stream) { + $this->stream = stream_for(''); + } + + return $this->stream; + } + + public function withBody(StreamInterface $body) + { + if ($body === $this->stream) { + return $this; + } + + $new = clone $this; + $new->stream = $body; + return $new; + } + + private function setHeaders(array $headers) + { + $this->headerLines = $this->headers = []; + foreach ($headers as $header => $value) { + $header = trim($header); + $name = strtolower($header); + if (!is_array($value)) { + $value = trim($value); + $this->headers[$name][] = $value; + $this->headerLines[$header][] = $value; + } else { + foreach ($value as $v) { + $v = trim($v); + $this->headers[$name][] = $v; + $this->headerLines[$header][] = $v; + } + } + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MultipartStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MultipartStream.php new file mode 100644 index 0000000..fd006ec --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/MultipartStream.php @@ -0,0 +1,153 @@ +boundary = $boundary ?: uniqid(); + $this->stream = $this->createStream($elements); + } + + /** + * Get the boundary + * + * @return string + */ + public function getBoundary() + { + return $this->boundary; + } + + public function isWritable() + { + return false; + } + + /** + * Get the headers needed before transferring the content of a POST file + */ + private function getHeaders(array $headers) + { + $str = ''; + foreach ($headers as $key => $value) { + $str .= "{$key}: {$value}\r\n"; + } + + return "--{$this->boundary}\r\n" . trim($str) . "\r\n\r\n"; + } + + /** + * Create the aggregate stream that will be used to upload the POST data + */ + protected function createStream(array $elements) + { + $stream = new AppendStream(); + + foreach ($elements as $element) { + $this->addElement($stream, $element); + } + + // Add the trailing boundary with CRLF + $stream->addStream(stream_for("--{$this->boundary}--\r\n")); + + return $stream; + } + + private function addElement(AppendStream $stream, array $element) + { + foreach (['contents', 'name'] as $key) { + if (!array_key_exists($key, $element)) { + throw new \InvalidArgumentException("A '{$key}' key is required"); + } + } + + $element['contents'] = stream_for($element['contents']); + + if (empty($element['filename'])) { + $uri = $element['contents']->getMetadata('uri'); + if (substr($uri, 0, 6) !== 'php://') { + $element['filename'] = $uri; + } + } + + list($body, $headers) = $this->createElement( + $element['name'], + $element['contents'], + isset($element['filename']) ? $element['filename'] : null, + isset($element['headers']) ? $element['headers'] : [] + ); + + $stream->addStream(stream_for($this->getHeaders($headers))); + $stream->addStream($body); + $stream->addStream(stream_for("\r\n")); + } + + /** + * @return array + */ + private function createElement($name, $stream, $filename, array $headers) + { + // Set a default content-disposition header if one was no provided + $disposition = $this->getHeader($headers, 'content-disposition'); + if (!$disposition) { + $headers['Content-Disposition'] = $filename + ? sprintf('form-data; name="%s"; filename="%s"', + $name, + basename($filename)) + : "form-data; name=\"{$name}\""; + } + + // Set a default content-length header if one was no provided + $length = $this->getHeader($headers, 'content-length'); + if (!$length) { + if ($length = $stream->getSize()) { + $headers['Content-Length'] = (string) $length; + } + } + + // Set a default Content-Type if one was not supplied + $type = $this->getHeader($headers, 'content-type'); + if (!$type && $filename) { + if ($type = mimetype_from_filename($filename)) { + $headers['Content-Type'] = $type; + } + } + + return [$stream, $headers]; + } + + private function getHeader(array $headers, $key) + { + $lowercaseHeader = strtolower($key); + foreach ($headers as $k => $v) { + if (strtolower($k) === $lowercaseHeader) { + return $v; + } + } + + return null; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/NoSeekStream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/NoSeekStream.php new file mode 100644 index 0000000..2332218 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/NoSeekStream.php @@ -0,0 +1,22 @@ +source = $source; + $this->size = isset($options['size']) ? $options['size'] : null; + $this->metadata = isset($options['metadata']) ? $options['metadata'] : []; + $this->buffer = new BufferStream(); + } + + public function __toString() + { + try { + return copy_to_string($this); + } catch (\Exception $e) { + return ''; + } + } + + public function close() + { + $this->detach(); + } + + public function detach() + { + $this->tellPos = false; + $this->source = null; + } + + public function getSize() + { + return $this->size; + } + + public function tell() + { + return $this->tellPos; + } + + public function eof() + { + return !$this->source; + } + + public function isSeekable() + { + return false; + } + + public function rewind() + { + $this->seek(0); + } + + public function seek($offset, $whence = SEEK_SET) + { + throw new \RuntimeException('Cannot seek a PumpStream'); + } + + public function isWritable() + { + return false; + } + + public function write($string) + { + throw new \RuntimeException('Cannot write to a PumpStream'); + } + + public function isReadable() + { + return true; + } + + public function read($length) + { + $data = $this->buffer->read($length); + $readLen = strlen($data); + $this->tellPos += $readLen; + $remaining = $length - $readLen; + + if ($remaining) { + $this->pump($remaining); + $data .= $this->buffer->read($remaining); + $this->tellPos += strlen($data) - $readLen; + } + + return $data; + } + + public function getContents() + { + $result = ''; + while (!$this->eof()) { + $result .= $this->read(1000000); + } + + return $result; + } + + public function getMetadata($key = null) + { + if (!$key) { + return $this->metadata; + } + + return isset($this->metadata[$key]) ? $this->metadata[$key] : null; + } + + private function pump($length) + { + if ($this->source) { + do { + $data = call_user_func($this->source, $length); + if ($data === false || $data === null) { + $this->source = null; + return; + } + $this->buffer->write($data); + $length -= strlen($data); + } while ($length > 0); + } + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Request.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Request.php new file mode 100644 index 0000000..0189b14 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Request.php @@ -0,0 +1,149 @@ +method = strtoupper($method); + $this->uri = $uri; + $this->setHeaders($headers); + $this->protocol = $protocolVersion; + + $host = $uri->getHost(); + if ($host && !$this->hasHeader('Host')) { + $this->updateHostFromUri($host); + } + + if ($body) { + $this->stream = stream_for($body); + } + } + + public function getRequestTarget() + { + if ($this->requestTarget !== null) { + return $this->requestTarget; + } + + $target = $this->uri->getPath(); + if ($target == null) { + $target = '/'; + } + if ($this->uri->getQuery()) { + $target .= '?' . $this->uri->getQuery(); + } + + return $target; + } + + public function withRequestTarget($requestTarget) + { + if (preg_match('#\s#', $requestTarget)) { + throw new InvalidArgumentException( + 'Invalid request target provided; cannot contain whitespace' + ); + } + + $new = clone $this; + $new->requestTarget = $requestTarget; + return $new; + } + + public function getMethod() + { + return $this->method; + } + + public function withMethod($method) + { + $new = clone $this; + $new->method = strtoupper($method); + return $new; + } + + public function getUri() + { + return $this->uri; + } + + public function withUri(UriInterface $uri, $preserveHost = false) + { + if ($uri === $this->uri) { + return $this; + } + + $new = clone $this; + $new->uri = $uri; + + if (!$preserveHost) { + if ($host = $uri->getHost()) { + $new->updateHostFromUri($host); + } + } + + return $new; + } + + public function withHeader($header, $value) + { + /** @var Request $newInstance */ + $newInstance = $this->withParentHeader($header, $value); + return $newInstance; + } + + private function updateHostFromUri($host) + { + // Ensure Host is the first header. + // See: http://tools.ietf.org/html/rfc7230#section-5.4 + if ($port = $this->uri->getPort()) { + $host .= ':' . $port; + } + + $this->headerLines = ['Host' => [$host]] + $this->headerLines; + $this->headers = ['host' => [$host]] + $this->headers; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Response.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Response.php new file mode 100644 index 0000000..c94bf8f --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Response.php @@ -0,0 +1,130 @@ + 'Continue', + 101 => 'Switching Protocols', + 102 => 'Processing', + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 207 => 'Multi-status', + 208 => 'Already Reported', + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 306 => 'Switch Proxy', + 307 => 'Temporary Redirect', + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Time-out', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Large', + 415 => 'Unsupported Media Type', + 416 => 'Requested range not satisfiable', + 417 => 'Expectation Failed', + 418 => 'I\'m a teapot', + 422 => 'Unprocessable Entity', + 423 => 'Locked', + 424 => 'Failed Dependency', + 425 => 'Unordered Collection', + 426 => 'Upgrade Required', + 428 => 'Precondition Required', + 429 => 'Too Many Requests', + 431 => 'Request Header Fields Too Large', + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Time-out', + 505 => 'HTTP Version not supported', + 506 => 'Variant Also Negotiates', + 507 => 'Insufficient Storage', + 508 => 'Loop Detected', + 511 => 'Network Authentication Required', + ]; + + /** @var null|string */ + private $reasonPhrase = ''; + + /** @var int */ + private $statusCode = 200; + + /** + * @param int $status Status code for the response, if any. + * @param array $headers Headers for the response, if any. + * @param mixed $body Stream body. + * @param string $version Protocol version. + * @param string $reason Reason phrase (a default will be used if possible). + */ + public function __construct( + $status = 200, + array $headers = [], + $body = null, + $version = '1.1', + $reason = null + ) { + $this->statusCode = (int) $status; + + if ($body !== null) { + $this->stream = stream_for($body); + } + + $this->setHeaders($headers); + if (!$reason && isset(self::$phrases[$this->statusCode])) { + $this->reasonPhrase = self::$phrases[$status]; + } else { + $this->reasonPhrase = (string) $reason; + } + + $this->protocol = $version; + } + + public function getStatusCode() + { + return $this->statusCode; + } + + public function getReasonPhrase() + { + return $this->reasonPhrase; + } + + public function withStatus($code, $reasonPhrase = '') + { + $new = clone $this; + $new->statusCode = (int) $code; + if (!$reasonPhrase && isset(self::$phrases[$new->statusCode])) { + $reasonPhrase = self::$phrases[$new->statusCode]; + } + $new->reasonPhrase = $reasonPhrase; + return $new; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Stream.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Stream.php new file mode 100644 index 0000000..0b0db01 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Stream.php @@ -0,0 +1,245 @@ + [ + 'r' => true, 'w+' => true, 'r+' => true, 'x+' => true, 'c+' => true, + 'rb' => true, 'w+b' => true, 'r+b' => true, 'x+b' => true, + 'c+b' => true, 'rt' => true, 'w+t' => true, 'r+t' => true, + 'x+t' => true, 'c+t' => true, 'a+' => true + ], + 'write' => [ + 'w' => true, 'w+' => true, 'rw' => true, 'r+' => true, 'x+' => true, + 'c+' => true, 'wb' => true, 'w+b' => true, 'r+b' => true, + 'x+b' => true, 'c+b' => true, 'w+t' => true, 'r+t' => true, + 'x+t' => true, 'c+t' => true, 'a' => true, 'a+' => true + ] + ]; + + /** + * This constructor accepts an associative array of options. + * + * - size: (int) If a read stream would otherwise have an indeterminate + * size, but the size is known due to foreknownledge, then you can + * provide that size, in bytes. + * - metadata: (array) Any additional metadata to return when the metadata + * of the stream is accessed. + * + * @param resource $stream Stream resource to wrap. + * @param array $options Associative array of options. + * + * @throws \InvalidArgumentException if the stream is not a stream resource + */ + public function __construct($stream, $options = []) + { + if (!is_resource($stream)) { + throw new \InvalidArgumentException('Stream must be a resource'); + } + + if (isset($options['size'])) { + $this->size = $options['size']; + } + + $this->customMetadata = isset($options['metadata']) + ? $options['metadata'] + : []; + + $this->stream = $stream; + $meta = stream_get_meta_data($this->stream); + $this->seekable = $meta['seekable']; + $this->readable = isset(self::$readWriteHash['read'][$meta['mode']]); + $this->writable = isset(self::$readWriteHash['write'][$meta['mode']]); + $this->uri = $this->getMetadata('uri'); + } + + public function __get($name) + { + if ($name == 'stream') { + throw new \RuntimeException('The stream is detached'); + } + + throw new \BadMethodCallException('No value for ' . $name); + } + + /** + * Closes the stream when the destructed + */ + public function __destruct() + { + $this->close(); + } + + public function __toString() + { + try { + $this->seek(0); + return (string) stream_get_contents($this->stream); + } catch (\Exception $e) { + return ''; + } + } + + public function getContents() + { + $contents = stream_get_contents($this->stream); + + if ($contents === false) { + throw new \RuntimeException('Unable to read stream contents'); + } + + return $contents; + } + + public function close() + { + if (isset($this->stream)) { + if (is_resource($this->stream)) { + fclose($this->stream); + } + $this->detach(); + } + } + + public function detach() + { + if (!isset($this->stream)) { + return null; + } + + $result = $this->stream; + unset($this->stream); + $this->size = $this->uri = null; + $this->readable = $this->writable = $this->seekable = false; + + return $result; + } + + public function getSize() + { + if ($this->size !== null) { + return $this->size; + } + + if (!isset($this->stream)) { + return null; + } + + // Clear the stat cache if the stream has a URI + if ($this->uri) { + clearstatcache(true, $this->uri); + } + + $stats = fstat($this->stream); + if (isset($stats['size'])) { + $this->size = $stats['size']; + return $this->size; + } + + return null; + } + + public function isReadable() + { + return $this->readable; + } + + public function isWritable() + { + return $this->writable; + } + + public function isSeekable() + { + return $this->seekable; + } + + public function eof() + { + return !$this->stream || feof($this->stream); + } + + public function tell() + { + $result = ftell($this->stream); + + if ($result === false) { + throw new \RuntimeException('Unable to determine stream position'); + } + + return $result; + } + + public function rewind() + { + $this->seek(0); + } + + public function seek($offset, $whence = SEEK_SET) + { + if (!$this->seekable) { + throw new \RuntimeException('Stream is not seekable'); + } elseif (fseek($this->stream, $offset, $whence) === -1) { + throw new \RuntimeException('Unable to seek to stream position ' + . $offset . ' with whence ' . var_export($whence, true)); + } + } + + public function read($length) + { + if (!$this->readable) { + throw new \RuntimeException('Cannot read from non-readable stream'); + } + + return fread($this->stream, $length); + } + + public function write($string) + { + if (!$this->writable) { + throw new \RuntimeException('Cannot write to a non-writable stream'); + } + + // We can't know the size after writing anything + $this->size = null; + $result = fwrite($this->stream, $string); + + if ($result === false) { + throw new \RuntimeException('Unable to write to stream'); + } + + return $result; + } + + public function getMetadata($key = null) + { + if (!isset($this->stream)) { + return $key ? null : []; + } elseif (!$key) { + return $this->customMetadata + stream_get_meta_data($this->stream); + } elseif (isset($this->customMetadata[$key])) { + return $this->customMetadata[$key]; + } + + $meta = stream_get_meta_data($this->stream); + + return isset($meta[$key]) ? $meta[$key] : null; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamDecoratorTrait.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamDecoratorTrait.php new file mode 100644 index 0000000..daec6f5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamDecoratorTrait.php @@ -0,0 +1,149 @@ +stream = $stream; + } + + /** + * Magic method used to create a new stream if streams are not added in + * the constructor of a decorator (e.g., LazyOpenStream). + * + * @param string $name Name of the property (allows "stream" only). + * + * @return StreamInterface + */ + public function __get($name) + { + if ($name == 'stream') { + $this->stream = $this->createStream(); + return $this->stream; + } + + throw new \UnexpectedValueException("$name not found on class"); + } + + public function __toString() + { + try { + if ($this->isSeekable()) { + $this->seek(0); + } + return $this->getContents(); + } catch (\Exception $e) { + // Really, PHP? https://bugs.php.net/bug.php?id=53648 + trigger_error('StreamDecorator::__toString exception: ' + . (string) $e, E_USER_ERROR); + return ''; + } + } + + public function getContents() + { + return copy_to_string($this); + } + + /** + * Allow decorators to implement custom methods + * + * @param string $method Missing method name + * @param array $args Method arguments + * + * @return mixed + */ + public function __call($method, array $args) + { + $result = call_user_func_array([$this->stream, $method], $args); + + // Always return the wrapped object if the result is a return $this + return $result === $this->stream ? $this : $result; + } + + public function close() + { + $this->stream->close(); + } + + public function getMetadata($key = null) + { + return $this->stream->getMetadata($key); + } + + public function detach() + { + return $this->stream->detach(); + } + + public function getSize() + { + return $this->stream->getSize(); + } + + public function eof() + { + return $this->stream->eof(); + } + + public function tell() + { + return $this->stream->tell(); + } + + public function isReadable() + { + return $this->stream->isReadable(); + } + + public function isWritable() + { + return $this->stream->isWritable(); + } + + public function isSeekable() + { + return $this->stream->isSeekable(); + } + + public function rewind() + { + $this->seek(0); + } + + public function seek($offset, $whence = SEEK_SET) + { + $this->stream->seek($offset, $whence); + } + + public function read($length) + { + return $this->stream->read($length); + } + + public function write($string) + { + return $this->stream->write($string); + } + + /** + * Implement in subclasses to dynamically create streams when requested. + * + * @return StreamInterface + * @throws \BadMethodCallException + */ + protected function createStream() + { + throw new \BadMethodCallException('Not implemented'); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamWrapper.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamWrapper.php new file mode 100644 index 0000000..cf7b223 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/StreamWrapper.php @@ -0,0 +1,121 @@ +isReadable()) { + $mode = $stream->isWritable() ? 'r+' : 'r'; + } elseif ($stream->isWritable()) { + $mode = 'w'; + } else { + throw new \InvalidArgumentException('The stream must be readable, ' + . 'writable, or both.'); + } + + return fopen('guzzle://stream', $mode, null, stream_context_create([ + 'guzzle' => ['stream' => $stream] + ])); + } + + /** + * Registers the stream wrapper if needed + */ + public static function register() + { + if (!in_array('guzzle', stream_get_wrappers())) { + stream_wrapper_register('guzzle', __CLASS__); + } + } + + public function stream_open($path, $mode, $options, &$opened_path) + { + $options = stream_context_get_options($this->context); + + if (!isset($options['guzzle']['stream'])) { + return false; + } + + $this->mode = $mode; + $this->stream = $options['guzzle']['stream']; + + return true; + } + + public function stream_read($count) + { + return $this->stream->read($count); + } + + public function stream_write($data) + { + return (int) $this->stream->write($data); + } + + public function stream_tell() + { + return $this->stream->tell(); + } + + public function stream_eof() + { + return $this->stream->eof(); + } + + public function stream_seek($offset, $whence) + { + $this->stream->seek($offset, $whence); + + return true; + } + + public function stream_stat() + { + static $modeMap = [ + 'r' => 33060, + 'r+' => 33206, + 'w' => 33188 + ]; + + return [ + 'dev' => 0, + 'ino' => 0, + 'mode' => $modeMap[$this->mode], + 'nlink' => 0, + 'uid' => 0, + 'gid' => 0, + 'rdev' => 0, + 'size' => $this->stream->getSize() ?: 0, + 'atime' => 0, + 'mtime' => 0, + 'ctime' => 0, + 'blksize' => 0, + 'blocks' => 0 + ]; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Uri.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Uri.php new file mode 100644 index 0000000..d428f2e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/Uri.php @@ -0,0 +1,599 @@ + 80, + 'https' => 443, + ]; + + private static $charUnreserved = 'a-zA-Z0-9_\-\.~'; + private static $charSubDelims = '!\$&\'\(\)\*\+,;='; + private static $replaceQuery = ['=' => '%3D', '&' => '%26']; + + /** @var string Uri scheme. */ + private $scheme = ''; + + /** @var string Uri user info. */ + private $userInfo = ''; + + /** @var string Uri host. */ + private $host = ''; + + /** @var int|null Uri port. */ + private $port; + + /** @var string Uri path. */ + private $path = ''; + + /** @var string Uri query string. */ + private $query = ''; + + /** @var string Uri fragment. */ + private $fragment = ''; + + /** + * @param string $uri URI to parse and wrap. + */ + public function __construct($uri = '') + { + if ($uri != null) { + $parts = parse_url($uri); + if ($parts === false) { + throw new \InvalidArgumentException("Unable to parse URI: $uri"); + } + $this->applyParts($parts); + } + } + + public function __toString() + { + return self::createUriString( + $this->scheme, + $this->getAuthority(), + $this->getPath(), + $this->query, + $this->fragment + ); + } + + /** + * Removes dot segments from a path and returns the new path. + * + * @param string $path + * + * @return string + * @link http://tools.ietf.org/html/rfc3986#section-5.2.4 + */ + public static function removeDotSegments($path) + { + static $noopPaths = ['' => true, '/' => true, '*' => true]; + static $ignoreSegments = ['.' => true, '..' => true]; + + if (isset($noopPaths[$path])) { + return $path; + } + + $results = []; + $segments = explode('/', $path); + foreach ($segments as $segment) { + if ($segment == '..') { + array_pop($results); + } elseif (!isset($ignoreSegments[$segment])) { + $results[] = $segment; + } + } + + $newPath = implode('/', $results); + // Add the leading slash if necessary + if (substr($path, 0, 1) === '/' && + substr($newPath, 0, 1) !== '/' + ) { + $newPath = '/' . $newPath; + } + + // Add the trailing slash if necessary + if ($newPath != '/' && isset($ignoreSegments[end($segments)])) { + $newPath .= '/'; + } + + return $newPath; + } + + /** + * Resolve a base URI with a relative URI and return a new URI. + * + * @param UriInterface $base Base URI + * @param string $rel Relative URI + * + * @return UriInterface + */ + public static function resolve(UriInterface $base, $rel) + { + if ($rel === null || $rel === '') { + return $base; + } + + if (!($rel instanceof UriInterface)) { + $rel = new self($rel); + } + + // Return the relative uri as-is if it has a scheme. + if ($rel->getScheme()) { + return $rel->withPath(static::removeDotSegments($rel->getPath())); + } + + $relParts = [ + 'scheme' => $rel->getScheme(), + 'authority' => $rel->getAuthority(), + 'path' => $rel->getPath(), + 'query' => $rel->getQuery(), + 'fragment' => $rel->getFragment() + ]; + + $parts = [ + 'scheme' => $base->getScheme(), + 'authority' => $base->getAuthority(), + 'path' => $base->getPath(), + 'query' => $base->getQuery(), + 'fragment' => $base->getFragment() + ]; + + if (!empty($relParts['authority'])) { + $parts['authority'] = $relParts['authority']; + $parts['path'] = self::removeDotSegments($relParts['path']); + $parts['query'] = $relParts['query']; + $parts['fragment'] = $relParts['fragment']; + } elseif (!empty($relParts['path'])) { + if (substr($relParts['path'], 0, 1) == '/') { + $parts['path'] = self::removeDotSegments($relParts['path']); + $parts['query'] = $relParts['query']; + $parts['fragment'] = $relParts['fragment']; + } else { + if (!empty($parts['authority']) && empty($parts['path'])) { + $mergedPath = '/'; + } else { + $mergedPath = substr($parts['path'], 0, strrpos($parts['path'], '/') + 1); + } + $parts['path'] = self::removeDotSegments($mergedPath . $relParts['path']); + $parts['query'] = $relParts['query']; + $parts['fragment'] = $relParts['fragment']; + } + } elseif (!empty($relParts['query'])) { + $parts['query'] = $relParts['query']; + } elseif ($relParts['fragment'] != null) { + $parts['fragment'] = $relParts['fragment']; + } + + return new self(static::createUriString( + $parts['scheme'], + $parts['authority'], + $parts['path'], + $parts['query'], + $parts['fragment'] + )); + } + + /** + * Create a new URI with a specific query string value removed. + * + * Any existing query string values that exactly match the provided key are + * removed. + * + * Note: this function will convert "=" to "%3D" and "&" to "%26". + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Query string key value pair to remove. + * + * @return UriInterface + */ + public static function withoutQueryValue(UriInterface $uri, $key) + { + $current = $uri->getQuery(); + if (!$current) { + return $uri; + } + + $result = []; + foreach (explode('&', $current) as $part) { + if (explode('=', $part)[0] !== $key) { + $result[] = $part; + }; + } + + return $uri->withQuery(implode('&', $result)); + } + + /** + * Create a new URI with a specific query string value. + * + * Any existing query string values that exactly match the provided key are + * removed and replaced with the given key value pair. + * + * Note: this function will convert "=" to "%3D" and "&" to "%26". + * + * @param UriInterface $uri URI to use as a base. + * @param string $key Key to set. + * @param string $value Value to set. + * + * @return UriInterface + */ + public static function withQueryValue(UriInterface $uri, $key, $value) + { + $current = $uri->getQuery(); + $key = strtr($key, self::$replaceQuery); + + if (!$current) { + $result = []; + } else { + $result = []; + foreach (explode('&', $current) as $part) { + if (explode('=', $part)[0] !== $key) { + $result[] = $part; + }; + } + } + + if ($value !== null) { + $result[] = $key . '=' . strtr($value, self::$replaceQuery); + } else { + $result[] = $key; + } + + return $uri->withQuery(implode('&', $result)); + } + + /** + * Create a URI from a hash of parse_url parts. + * + * @param array $parts + * + * @return self + */ + public static function fromParts(array $parts) + { + $uri = new self(); + $uri->applyParts($parts); + return $uri; + } + + public function getScheme() + { + return $this->scheme; + } + + public function getAuthority() + { + if (empty($this->host)) { + return ''; + } + + $authority = $this->host; + if (!empty($this->userInfo)) { + $authority = $this->userInfo . '@' . $authority; + } + + if ($this->isNonStandardPort($this->scheme, $this->host, $this->port)) { + $authority .= ':' . $this->port; + } + + return $authority; + } + + public function getUserInfo() + { + return $this->userInfo; + } + + public function getHost() + { + return $this->host; + } + + public function getPort() + { + return $this->port; + } + + public function getPath() + { + return $this->path == null ? '' : $this->path; + } + + public function getQuery() + { + return $this->query; + } + + public function getFragment() + { + return $this->fragment; + } + + public function withScheme($scheme) + { + $scheme = $this->filterScheme($scheme); + + if ($this->scheme === $scheme) { + return $this; + } + + $new = clone $this; + $new->scheme = $scheme; + $new->port = $new->filterPort($new->scheme, $new->host, $new->port); + return $new; + } + + public function withUserInfo($user, $password = null) + { + $info = $user; + if ($password) { + $info .= ':' . $password; + } + + if ($this->userInfo === $info) { + return $this; + } + + $new = clone $this; + $new->userInfo = $info; + return $new; + } + + public function withHost($host) + { + if ($this->host === $host) { + return $this; + } + + $new = clone $this; + $new->host = $host; + return $new; + } + + public function withPort($port) + { + $port = $this->filterPort($this->scheme, $this->host, $port); + + if ($this->port === $port) { + return $this; + } + + $new = clone $this; + $new->port = $port; + return $new; + } + + public function withPath($path) + { + if (!is_string($path)) { + throw new \InvalidArgumentException( + 'Invalid path provided; must be a string' + ); + } + + $path = $this->filterPath($path); + + if ($this->path === $path) { + return $this; + } + + $new = clone $this; + $new->path = $path; + return $new; + } + + public function withQuery($query) + { + if (!is_string($query) && !method_exists($query, '__toString')) { + throw new \InvalidArgumentException( + 'Query string must be a string' + ); + } + + $query = (string) $query; + if (substr($query, 0, 1) === '?') { + $query = substr($query, 1); + } + + $query = $this->filterQueryAndFragment($query); + + if ($this->query === $query) { + return $this; + } + + $new = clone $this; + $new->query = $query; + return $new; + } + + public function withFragment($fragment) + { + if (substr($fragment, 0, 1) === '#') { + $fragment = substr($fragment, 1); + } + + $fragment = $this->filterQueryAndFragment($fragment); + + if ($this->fragment === $fragment) { + return $this; + } + + $new = clone $this; + $new->fragment = $fragment; + return $new; + } + + /** + * Apply parse_url parts to a URI. + * + * @param $parts Array of parse_url parts to apply. + */ + private function applyParts(array $parts) + { + $this->scheme = isset($parts['scheme']) + ? $this->filterScheme($parts['scheme']) + : ''; + $this->userInfo = isset($parts['user']) ? $parts['user'] : ''; + $this->host = isset($parts['host']) ? $parts['host'] : ''; + $this->port = !empty($parts['port']) + ? $this->filterPort($this->scheme, $this->host, $parts['port']) + : null; + $this->path = isset($parts['path']) + ? $this->filterPath($parts['path']) + : ''; + $this->query = isset($parts['query']) + ? $this->filterQueryAndFragment($parts['query']) + : ''; + $this->fragment = isset($parts['fragment']) + ? $this->filterQueryAndFragment($parts['fragment']) + : ''; + if (isset($parts['pass'])) { + $this->userInfo .= ':' . $parts['pass']; + } + } + + /** + * Create a URI string from its various parts + * + * @param string $scheme + * @param string $authority + * @param string $path + * @param string $query + * @param string $fragment + * @return string + */ + private static function createUriString($scheme, $authority, $path, $query, $fragment) + { + $uri = ''; + + if (!empty($scheme)) { + $uri .= $scheme . '://'; + } + + if (!empty($authority)) { + $uri .= $authority; + } + + if ($path != null) { + // Add a leading slash if necessary. + if ($uri && substr($path, 0, 1) !== '/') { + $uri .= '/'; + } + $uri .= $path; + } + + if ($query != null) { + $uri .= '?' . $query; + } + + if ($fragment != null) { + $uri .= '#' . $fragment; + } + + return $uri; + } + + /** + * Is a given port non-standard for the current scheme? + * + * @param string $scheme + * @param string $host + * @param int $port + * @return bool + */ + private static function isNonStandardPort($scheme, $host, $port) + { + if (!$scheme && $port) { + return true; + } + + if (!$host || !$port) { + return false; + } + + return !isset(static::$schemes[$scheme]) || $port !== static::$schemes[$scheme]; + } + + /** + * @param string $scheme + * + * @return string + */ + private function filterScheme($scheme) + { + $scheme = strtolower($scheme); + $scheme = rtrim($scheme, ':/'); + + return $scheme; + } + + /** + * @param string $scheme + * @param string $host + * @param int $port + * + * @return int|null + * + * @throws \InvalidArgumentException If the port is invalid. + */ + private function filterPort($scheme, $host, $port) + { + if (null !== $port) { + $port = (int) $port; + if (1 > $port || 0xffff < $port) { + throw new \InvalidArgumentException( + sprintf('Invalid port: %d. Must be between 1 and 65535', $port) + ); + } + } + + return $this->isNonStandardPort($scheme, $host, $port) ? $port : null; + } + + /** + * Filters the path of a URI + * + * @param $path + * + * @return string + */ + private function filterPath($path) + { + return preg_replace_callback( + '/(?:[^' . self::$charUnreserved . self::$charSubDelims . ':@\/%]+|%(?![A-Fa-f0-9]{2}))/', + [$this, 'rawurlencodeMatchZero'], + $path + ); + } + + /** + * Filters the query string or fragment of a URI. + * + * @param $str + * + * @return string + */ + private function filterQueryAndFragment($str) + { + return preg_replace_callback( + '/(?:[^' . self::$charUnreserved . self::$charSubDelims . '%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/', + [$this, 'rawurlencodeMatchZero'], + $str + ); + } + + private function rawurlencodeMatchZero(array $match) + { + return rawurlencode($match[0]); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions.php new file mode 100644 index 0000000..fd3e7f5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions.php @@ -0,0 +1,802 @@ +getMethod() . ' ' + . $message->getRequestTarget()) + . ' HTTP/' . $message->getProtocolVersion(); + if (!$message->hasHeader('host')) { + $msg .= "\r\nHost: " . $message->getUri()->getHost(); + } + } elseif ($message instanceof ResponseInterface) { + $msg = 'HTTP/' . $message->getProtocolVersion() . ' ' + . $message->getStatusCode() . ' ' + . $message->getReasonPhrase(); + } else { + throw new \InvalidArgumentException('Unknown message type'); + } + + foreach ($message->getHeaders() as $name => $values) { + $msg .= "\r\n{$name}: " . implode(', ', $values); + } + + return "{$msg}\r\n\r\n" . $message->getBody(); +} + +/** + * Returns a UriInterface for the given value. + * + * This function accepts a string or {@see Psr\Http\Message\UriInterface} and + * returns a UriInterface for the given value. If the value is already a + * `UriInterface`, it is returned as-is. + * + * @param string|UriInterface $uri + * + * @return UriInterface + * @throws \InvalidArgumentException + */ +function uri_for($uri) +{ + if ($uri instanceof UriInterface) { + return $uri; + } elseif (is_string($uri)) { + return new Uri($uri); + } + + throw new \InvalidArgumentException('URI must be a string or UriInterface'); +} + +/** + * Create a new stream based on the input type. + * + * Options is an associative array that can contain the following keys: + * - metadata: Array of custom metadata. + * - size: Size of the stream. + * + * @param resource|string|StreamInterface $resource Entity body data + * @param array $options Additional options + * + * @return Stream + * @throws \InvalidArgumentException if the $resource arg is not valid. + */ +function stream_for($resource = '', array $options = []) +{ + switch (gettype($resource)) { + case 'string': + $stream = fopen('php://temp', 'r+'); + if ($resource !== '') { + fwrite($stream, $resource); + fseek($stream, 0); + } + return new Stream($stream, $options); + case 'resource': + return new Stream($resource, $options); + case 'object': + if ($resource instanceof StreamInterface) { + return $resource; + } elseif ($resource instanceof \Iterator) { + return new PumpStream(function () use ($resource) { + if (!$resource->valid()) { + return false; + } + $result = $resource->current(); + $resource->next(); + return $result; + }, $options); + } elseif (method_exists($resource, '__toString')) { + return stream_for((string) $resource, $options); + } + break; + case 'NULL': + return new Stream(fopen('php://temp', 'r+'), $options); + } + + if (is_callable($resource)) { + return new PumpStream($resource, $options); + } + + throw new \InvalidArgumentException('Invalid resource type: ' . gettype($resource)); +} + +/** + * Parse an array of header values containing ";" separated data into an + * array of associative arrays representing the header key value pair + * data of the header. When a parameter does not contain a value, but just + * contains a key, this function will inject a key with a '' string value. + * + * @param string|array $header Header to parse into components. + * + * @return array Returns the parsed header values. + */ +function parse_header($header) +{ + static $trimmed = "\"' \n\t\r"; + $params = $matches = []; + + foreach (normalize_header($header) as $val) { + $part = []; + foreach (preg_split('/;(?=([^"]*"[^"]*")*[^"]*$)/', $val) as $kvp) { + if (preg_match_all('/<[^>]+>|[^=]+/', $kvp, $matches)) { + $m = $matches[0]; + if (isset($m[1])) { + $part[trim($m[0], $trimmed)] = trim($m[1], $trimmed); + } else { + $part[] = trim($m[0], $trimmed); + } + } + } + if ($part) { + $params[] = $part; + } + } + + return $params; +} + +/** + * Converts an array of header values that may contain comma separated + * headers into an array of headers with no comma separated values. + * + * @param string|array $header Header to normalize. + * + * @return array Returns the normalized header field values. + */ +function normalize_header($header) +{ + if (!is_array($header)) { + return array_map('trim', explode(',', $header)); + } + + $result = []; + foreach ($header as $value) { + foreach ((array) $value as $v) { + if (strpos($v, ',') === false) { + $result[] = $v; + continue; + } + foreach (preg_split('/,(?=([^"]*"[^"]*")*[^"]*$)/', $v) as $vv) { + $result[] = trim($vv); + } + } + } + + return $result; +} + +/** + * Clone and modify a request with the given changes. + * + * The changes can be one of: + * - method: (string) Changes the HTTP method. + * - set_headers: (array) Sets the given headers. + * - remove_headers: (array) Remove the given headers. + * - body: (mixed) Sets the given body. + * - uri: (UriInterface) Set the URI. + * - query: (string) Set the query string value of the URI. + * - version: (string) Set the protocol version. + * + * @param RequestInterface $request Request to clone and modify. + * @param array $changes Changes to apply. + * + * @return RequestInterface + */ +function modify_request(RequestInterface $request, array $changes) +{ + if (!$changes) { + return $request; + } + + $headers = $request->getHeaders(); + + if (!isset($changes['uri'])) { + $uri = $request->getUri(); + } else { + // Remove the host header if one is on the URI + if ($host = $changes['uri']->getHost()) { + $changes['set_headers']['Host'] = $host; + } + $uri = $changes['uri']; + } + + if (!empty($changes['remove_headers'])) { + $headers = _caseless_remove($changes['remove_headers'], $headers); + } + + if (!empty($changes['set_headers'])) { + $headers = _caseless_remove(array_keys($changes['set_headers']), $headers); + $headers = $changes['set_headers'] + $headers; + } + + if (isset($changes['query'])) { + $uri = $uri->withQuery($changes['query']); + } + + return new Request( + isset($changes['method']) ? $changes['method'] : $request->getMethod(), + $uri, + $headers, + isset($changes['body']) ? $changes['body'] : $request->getBody(), + isset($changes['version']) + ? $changes['version'] + : $request->getProtocolVersion() + ); +} + +/** + * Attempts to rewind a message body and throws an exception on failure. + * + * The body of the message will only be rewound if a call to `tell()` returns a + * value other than `0`. + * + * @param MessageInterface $message Message to rewind + * + * @throws \RuntimeException + */ +function rewind_body(MessageInterface $message) +{ + $body = $message->getBody(); + + if ($body->tell()) { + $body->rewind(); + } +} + +/** + * Safely opens a PHP stream resource using a filename. + * + * When fopen fails, PHP normally raises a warning. This function adds an + * error handler that checks for errors and throws an exception instead. + * + * @param string $filename File to open + * @param string $mode Mode used to open the file + * + * @return resource + * @throws \RuntimeException if the file cannot be opened + */ +function try_fopen($filename, $mode) +{ + $ex = null; + set_error_handler(function () use ($filename, $mode, &$ex) { + $ex = new \RuntimeException(sprintf( + 'Unable to open %s using mode %s: %s', + $filename, + $mode, + func_get_args()[1] + )); + }); + + $handle = fopen($filename, $mode); + restore_error_handler(); + + if ($ex) { + /** @var $ex \RuntimeException */ + throw $ex; + } + + return $handle; +} + +/** + * Copy the contents of a stream into a string until the given number of + * bytes have been read. + * + * @param StreamInterface $stream Stream to read + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * @return string + * @throws \RuntimeException on error. + */ +function copy_to_string(StreamInterface $stream, $maxLen = -1) +{ + $buffer = ''; + + if ($maxLen === -1) { + while (!$stream->eof()) { + $buf = $stream->read(1048576); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + } + return $buffer; + } + + $len = 0; + while (!$stream->eof() && $len < $maxLen) { + $buf = $stream->read($maxLen - $len); + // Using a loose equality here to match on '' and false. + if ($buf == null) { + break; + } + $buffer .= $buf; + $len = strlen($buffer); + } + + return $buffer; +} + +/** + * Copy the contents of a stream into another stream until the given number + * of bytes have been read. + * + * @param StreamInterface $source Stream to read from + * @param StreamInterface $dest Stream to write to + * @param int $maxLen Maximum number of bytes to read. Pass -1 + * to read the entire stream. + * + * @throws \RuntimeException on error. + */ +function copy_to_stream( + StreamInterface $source, + StreamInterface $dest, + $maxLen = -1 +) { + if ($maxLen === -1) { + while (!$source->eof()) { + if (!$dest->write($source->read(1048576))) { + break; + } + } + return; + } + + $bytes = 0; + while (!$source->eof()) { + $buf = $source->read($maxLen - $bytes); + if (!($len = strlen($buf))) { + break; + } + $bytes += $len; + $dest->write($buf); + if ($bytes == $maxLen) { + break; + } + } +} + +/** + * Calculate a hash of a Stream + * + * @param StreamInterface $stream Stream to calculate the hash for + * @param string $algo Hash algorithm (e.g. md5, crc32, etc) + * @param bool $rawOutput Whether or not to use raw output + * + * @return string Returns the hash of the stream + * @throws \RuntimeException on error. + */ +function hash( + StreamInterface $stream, + $algo, + $rawOutput = false +) { + $pos = $stream->tell(); + + if ($pos > 0) { + $stream->rewind(); + } + + $ctx = hash_init($algo); + while (!$stream->eof()) { + hash_update($ctx, $stream->read(1048576)); + } + + $out = hash_final($ctx, (bool) $rawOutput); + $stream->seek($pos); + + return $out; +} + +/** + * Read a line from the stream up to the maximum allowed buffer length + * + * @param StreamInterface $stream Stream to read from + * @param int $maxLength Maximum buffer length + * + * @return string|bool + */ +function readline(StreamInterface $stream, $maxLength = null) +{ + $buffer = ''; + $size = 0; + + while (!$stream->eof()) { + // Using a loose equality here to match on '' and false. + if (null == ($byte = $stream->read(1))) { + return $buffer; + } + $buffer .= $byte; + // Break when a new line is found or the max length - 1 is reached + if ($byte == PHP_EOL || ++$size == $maxLength - 1) { + break; + } + } + + return $buffer; +} + +/** + * Parses a request message string into a request object. + * + * @param string $message Request message string. + * + * @return Request + */ +function parse_request($message) +{ + $data = _parse_message($message); + $matches = []; + if (!preg_match('/^[a-zA-Z]+\s+([a-zA-Z]+:\/\/|\/).*/', $data['start-line'], $matches)) { + throw new \InvalidArgumentException('Invalid request string'); + } + $parts = explode(' ', $data['start-line'], 3); + $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1'; + + $request = new Request( + $parts[0], + $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], + $data['headers'], + $data['body'], + $version + ); + + return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); +} + +/** + * Parses a response message string into a response object. + * + * @param string $message Response message string. + * + * @return Response + */ +function parse_response($message) +{ + $data = _parse_message($message); + if (!preg_match('/^HTTP\/.* [0-9]{3} .*/', $data['start-line'])) { + throw new \InvalidArgumentException('Invalid response string'); + } + $parts = explode(' ', $data['start-line'], 3); + + return new Response( + $parts[1], + $data['headers'], + $data['body'], + explode('/', $parts[0])[1], + isset($parts[2]) ? $parts[2] : null + ); +} + +/** + * Parse a query string into an associative array. + * + * If multiple values are found for the same key, the value of that key + * value pair will become an array. This function does not parse nested + * PHP style arrays into an associative array (e.g., foo[a]=1&foo[b]=2 will + * be parsed into ['foo[a]' => '1', 'foo[b]' => '2']). + * + * @param string $str Query string to parse + * @param bool|string $urlEncoding How the query string is encoded + * + * @return array + */ +function parse_query($str, $urlEncoding = true) +{ + $result = []; + + if ($str === '') { + return $result; + } + + if ($urlEncoding === true) { + $decoder = function ($value) { + return rawurldecode(str_replace('+', ' ', $value)); + }; + } elseif ($urlEncoding == PHP_QUERY_RFC3986) { + $decoder = 'rawurldecode'; + } elseif ($urlEncoding == PHP_QUERY_RFC1738) { + $decoder = 'urldecode'; + } else { + $decoder = function ($str) { return $str; }; + } + + foreach (explode('&', $str) as $kvp) { + $parts = explode('=', $kvp, 2); + $key = $decoder($parts[0]); + $value = isset($parts[1]) ? $decoder($parts[1]) : null; + if (!isset($result[$key])) { + $result[$key] = $value; + } else { + if (!is_array($result[$key])) { + $result[$key] = [$result[$key]]; + } + $result[$key][] = $value; + } + } + + return $result; +} + +/** + * Build a query string from an array of key value pairs. + * + * This function can use the return value of parseQuery() to build a query + * string. This function does not modify the provided keys when an array is + * encountered (like http_build_query would). + * + * @param array $params Query string parameters. + * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 + * to encode using RFC3986, or PHP_QUERY_RFC1738 + * to encode using RFC1738. + * @return string + */ +function build_query(array $params, $encoding = PHP_QUERY_RFC3986) +{ + if (!$params) { + return ''; + } + + if ($encoding === false) { + $encoder = function ($str) { return $str; }; + } elseif ($encoding == PHP_QUERY_RFC3986) { + $encoder = 'rawurlencode'; + } elseif ($encoding == PHP_QUERY_RFC1738) { + $encoder = 'urlencode'; + } else { + throw new \InvalidArgumentException('Invalid type'); + } + + $qs = ''; + foreach ($params as $k => $v) { + $k = $encoder($k); + if (!is_array($v)) { + $qs .= $k; + if ($v !== null) { + $qs .= '=' . $encoder($v); + } + $qs .= '&'; + } else { + foreach ($v as $vv) { + $qs .= $k; + if ($vv !== null) { + $qs .= '=' . $encoder($vv); + } + $qs .= '&'; + } + } + } + + return $qs ? (string) substr($qs, 0, -1) : ''; +} + +/** + * Determines the mimetype of a file by looking at its extension. + * + * @param $filename + * + * @return null|string + */ +function mimetype_from_filename($filename) +{ + return mimetype_from_extension(pathinfo($filename, PATHINFO_EXTENSION)); +} + +/** + * Maps a file extensions to a mimetype. + * + * @param $extension string The file extension. + * + * @return string|null + * @link http://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x/conf/mime.types + */ +function mimetype_from_extension($extension) +{ + static $mimetypes = [ + '7z' => 'application/x-7z-compressed', + 'aac' => 'audio/x-aac', + 'ai' => 'application/postscript', + 'aif' => 'audio/x-aiff', + 'asc' => 'text/plain', + 'asf' => 'video/x-ms-asf', + 'atom' => 'application/atom+xml', + 'avi' => 'video/x-msvideo', + 'bmp' => 'image/bmp', + 'bz2' => 'application/x-bzip2', + 'cer' => 'application/pkix-cert', + 'crl' => 'application/pkix-crl', + 'crt' => 'application/x-x509-ca-cert', + 'css' => 'text/css', + 'csv' => 'text/csv', + 'cu' => 'application/cu-seeme', + 'deb' => 'application/x-debian-package', + 'doc' => 'application/msword', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dvi' => 'application/x-dvi', + 'eot' => 'application/vnd.ms-fontobject', + 'eps' => 'application/postscript', + 'epub' => 'application/epub+zip', + 'etx' => 'text/x-setext', + 'flac' => 'audio/flac', + 'flv' => 'video/x-flv', + 'gif' => 'image/gif', + 'gz' => 'application/gzip', + 'htm' => 'text/html', + 'html' => 'text/html', + 'ico' => 'image/x-icon', + 'ics' => 'text/calendar', + 'ini' => 'text/plain', + 'iso' => 'application/x-iso9660-image', + 'jar' => 'application/java-archive', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'js' => 'text/javascript', + 'json' => 'application/json', + 'latex' => 'application/x-latex', + 'log' => 'text/plain', + 'm4a' => 'audio/mp4', + 'm4v' => 'video/mp4', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mov' => 'video/quicktime', + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'mp4a' => 'audio/mp4', + 'mp4v' => 'video/mp4', + 'mpe' => 'video/mpeg', + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpg4' => 'video/mp4', + 'oga' => 'audio/ogg', + 'ogg' => 'audio/ogg', + 'ogv' => 'video/ogg', + 'ogx' => 'application/ogg', + 'pbm' => 'image/x-portable-bitmap', + 'pdf' => 'application/pdf', + 'pgm' => 'image/x-portable-graymap', + 'png' => 'image/png', + 'pnm' => 'image/x-portable-anymap', + 'ppm' => 'image/x-portable-pixmap', + 'ppt' => 'application/vnd.ms-powerpoint', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'ps' => 'application/postscript', + 'qt' => 'video/quicktime', + 'rar' => 'application/x-rar-compressed', + 'ras' => 'image/x-cmu-raster', + 'rss' => 'application/rss+xml', + 'rtf' => 'application/rtf', + 'sgm' => 'text/sgml', + 'sgml' => 'text/sgml', + 'svg' => 'image/svg+xml', + 'swf' => 'application/x-shockwave-flash', + 'tar' => 'application/x-tar', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'torrent' => 'application/x-bittorrent', + 'ttf' => 'application/x-font-ttf', + 'txt' => 'text/plain', + 'wav' => 'audio/x-wav', + 'webm' => 'video/webm', + 'wma' => 'audio/x-ms-wma', + 'wmv' => 'video/x-ms-wmv', + 'woff' => 'application/x-font-woff', + 'wsdl' => 'application/wsdl+xml', + 'xbm' => 'image/x-xbitmap', + 'xls' => 'application/vnd.ms-excel', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xml' => 'application/xml', + 'xpm' => 'image/x-xpixmap', + 'xwd' => 'image/x-xwindowdump', + 'yaml' => 'text/yaml', + 'yml' => 'text/yaml', + 'zip' => 'application/zip', + ]; + + $extension = strtolower($extension); + + return isset($mimetypes[$extension]) + ? $mimetypes[$extension] + : null; +} + +/** + * Parses an HTTP message into an associative array. + * + * The array contains the "start-line" key containing the start line of + * the message, "headers" key containing an associative array of header + * array values, and a "body" key containing the body of the message. + * + * @param string $message HTTP request or response to parse. + * + * @return array + * @internal + */ +function _parse_message($message) +{ + if (!$message) { + throw new \InvalidArgumentException('Invalid message'); + } + + // Iterate over each line in the message, accounting for line endings + $lines = preg_split('/(\\r?\\n)/', $message, -1, PREG_SPLIT_DELIM_CAPTURE); + $result = ['start-line' => array_shift($lines), 'headers' => [], 'body' => '']; + array_shift($lines); + + for ($i = 0, $totalLines = count($lines); $i < $totalLines; $i += 2) { + $line = $lines[$i]; + // If two line breaks were encountered, then this is the end of body + if (empty($line)) { + if ($i < $totalLines - 1) { + $result['body'] = implode('', array_slice($lines, $i + 2)); + } + break; + } + if (strpos($line, ':')) { + $parts = explode(':', $line, 2); + $key = trim($parts[0]); + $value = isset($parts[1]) ? trim($parts[1]) : ''; + $result['headers'][$key][] = $value; + } + } + + return $result; +} + +/** + * Constructs a URI for an HTTP request message. + * + * @param string $path Path from the start-line + * @param array $headers Array of headers (each value an array). + * + * @return string + * @internal + */ +function _parse_request_uri($path, array $headers) +{ + $hostKey = array_filter(array_keys($headers), function ($k) { + return strtolower($k) === 'host'; + }); + + // If no host is found, then a full URI cannot be constructed. + if (!$hostKey) { + return $path; + } + + $host = $headers[reset($hostKey)][0]; + $scheme = substr($host, -4) === ':443' ? 'https' : 'http'; + + return $scheme . '://' . $host . '/' . ltrim($path, '/'); +} + +/** @internal */ +function _caseless_remove($keys, array $data) +{ + $result = []; + + foreach ($keys as &$key) { + $key = strtolower($key); + } + + foreach ($data as $k => $v) { + if (!in_array(strtolower($k), $keys)) { + $result[$k] = $v; + } + } + + return $result; +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions_include.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions_include.php new file mode 100644 index 0000000..96a4a83 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/Psr7/functions_include.php @@ -0,0 +1,6 @@ + 5, + 'protocols' => ['http', 'https'], + 'strict' => false, + 'referer' => false, + 'track_redirects' => false, + ]; + + /** @var callable */ + private $nextHandler; + + /** + * @param callable $nextHandler Next handler to invoke. + */ + public function __construct(callable $nextHandler) + { + $this->nextHandler = $nextHandler; + } + + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(RequestInterface $request, array $options) + { + $fn = $this->nextHandler; + + if (empty($options['allow_redirects'])) { + return $fn($request, $options); + } + + if ($options['allow_redirects'] === true) { + $options['allow_redirects'] = self::$defaultSettings; + } elseif (!is_array($options['allow_redirects'])) { + throw new \InvalidArgumentException('allow_redirects must be true, false, or array'); + } else { + // Merge the default settings with the provided settings + $options['allow_redirects'] += self::$defaultSettings; + } + + if (empty($options['allow_redirects']['max'])) { + return $fn($request, $options); + } + + return $fn($request, $options) + ->then(function (ResponseInterface $response) use ($request, $options) { + return $this->checkRedirect($request, $options, $response); + }); + } + + /** + * @param RequestInterface $request + * @param array $options + * @param ResponseInterface|PromiseInterface $response + * + * @return ResponseInterface|PromiseInterface + */ + public function checkRedirect( + RequestInterface $request, + array $options, + ResponseInterface $response + ) { + if (substr($response->getStatusCode(), 0, 1) != '3' + || !$response->hasHeader('Location') + ) { + return $response; + } + + $this->guardMax($request, $options); + $nextRequest = $this->modifyRequest($request, $options, $response); + + if (isset($options['allow_redirects']['on_redirect'])) { + call_user_func( + $options['allow_redirects']['on_redirect'], + $request, + $response, + $nextRequest->getUri() + ); + } + + /** @var PromiseInterface|ResponseInterface $promise */ + $promise = $this($nextRequest, $options); + + // Add headers to be able to track history of redirects. + if (!empty($options['allow_redirects']['track_redirects'])) { + return $this->withTracking( + $promise, + (string) $nextRequest->getUri() + ); + } + + return $promise; + } + + private function withTracking(PromiseInterface $promise, $uri) + { + return $promise->then( + function (ResponseInterface $response) use ($uri) { + // Note that we are pushing to the front of the list as this + // would be an earlier response than what is currently present + // in the history header. + $header = $response->getHeader(self::HISTORY_HEADER); + array_unshift($header, $uri); + return $response->withHeader(self::HISTORY_HEADER, $header); + } + ); + } + + private function guardMax(RequestInterface $request, array &$options) + { + $current = isset($options['__redirect_count']) + ? $options['__redirect_count'] + : 0; + $options['__redirect_count'] = $current + 1; + $max = $options['allow_redirects']['max']; + + if ($options['__redirect_count'] > $max) { + throw new TooManyRedirectsException( + "Will not follow more than {$max} redirects", + $request + ); + } + } + + /** + * @param RequestInterface $request + * @param array $options + * @param ResponseInterface $response + * + * @return RequestInterface + */ + public function modifyRequest( + RequestInterface $request, + array $options, + ResponseInterface $response + ) { + // Request modifications to apply. + $modify = []; + $protocols = $options['allow_redirects']['protocols']; + + // Use a GET request if this is an entity enclosing request and we are + // not forcing RFC compliance, but rather emulating what all browsers + // would do. + $statusCode = $response->getStatusCode(); + if ($statusCode == 303 || + ($statusCode <= 302 && $request->getBody() && !$options['allow_redirects']['strict']) + ) { + $modify['method'] = 'GET'; + $modify['body'] = ''; + } + + $modify['uri'] = $this->redirectUri($request, $response, $protocols); + Psr7\rewind_body($request); + + // Add the Referer header if it is told to do so and only + // add the header if we are not redirecting from https to http. + if ($options['allow_redirects']['referer'] + && $modify['uri']->getScheme() === $request->getUri()->getScheme() + ) { + $uri = $request->getUri()->withUserInfo('', ''); + $modify['set_headers']['Referer'] = (string) $uri; + } else { + $modify['remove_headers'][] = 'Referer'; + } + + // Remove Authorization header if host is different. + if ($request->getUri()->getHost() !== $modify['uri']->getHost()) { + $modify['remove_headers'][] = 'Authorization'; + } + + return Psr7\modify_request($request, $modify); + } + + /** + * Set the appropriate URL on the request based on the location header + * + * @param RequestInterface $request + * @param ResponseInterface $response + * @param array $protocols + * + * @return UriInterface + */ + private function redirectUri( + RequestInterface $request, + ResponseInterface $response, + array $protocols + ) { + $location = Psr7\Uri::resolve( + $request->getUri(), + $response->getHeaderLine('Location') + ); + + // Ensure that the redirect URI is allowed based on the protocols. + if (!in_array($location->getScheme(), $protocols)) { + throw new BadResponseException( + sprintf( + 'Redirect URI, %s, does not use one of the allowed redirect protocols: %s', + $location, + implode(', ', $protocols) + ), + $request, + $response + ); + } + + return $location; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RequestOptions.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RequestOptions.php new file mode 100644 index 0000000..3af2f36 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/RequestOptions.php @@ -0,0 +1,244 @@ +decider = $decider; + $this->nextHandler = $nextHandler; + $this->delay = $delay ?: __CLASS__ . '::exponentialDelay'; + } + + /** + * Default exponential backoff delay function. + * + * @param $retries + * + * @return int + */ + public static function exponentialDelay($retries) + { + return (int) pow(2, $retries - 1); + } + + /** + * @param RequestInterface $request + * @param array $options + * + * @return PromiseInterface + */ + public function __invoke(RequestInterface $request, array $options) + { + if (!isset($options['retries'])) { + $options['retries'] = 0; + } + + $fn = $this->nextHandler; + return $fn($request, $options) + ->then( + $this->onFulfilled($request, $options), + $this->onRejected($request, $options) + ); + } + + private function onFulfilled(RequestInterface $req, array $options) + { + return function ($value) use ($req, $options) { + if (!call_user_func( + $this->decider, + $options['retries'], + $req, + $value, + null + )) { + return $value; + } + return $this->doRetry($req, $options); + }; + } + + private function onRejected(RequestInterface $req, array $options) + { + return function ($reason) use ($req, $options) { + if (!call_user_func( + $this->decider, + $options['retries'], + $req, + null, + $reason + )) { + return new RejectedPromise($reason); + } + return $this->doRetry($req, $options); + }; + } + + private function doRetry(RequestInterface $request, array $options) + { + $options['delay'] = call_user_func($this->delay, ++$options['retries']); + + return $this($request, $options); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/TransferStats.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/TransferStats.php new file mode 100644 index 0000000..15f717e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/TransferStats.php @@ -0,0 +1,126 @@ +request = $request; + $this->response = $response; + $this->transferTime = $transferTime; + $this->handlerErrorData = $handlerErrorData; + $this->handlerStats = $handlerStats; + } + + /** + * @return RequestInterface + */ + public function getRequest() + { + return $this->request; + } + + /** + * Returns the response that was received (if any). + * + * @return ResponseInterface|null + */ + public function getResponse() + { + return $this->response; + } + + /** + * Returns true if a response was received. + * + * @return bool + */ + public function hasResponse() + { + return $this->response !== null; + } + + /** + * Gets handler specific error data. + * + * This might be an exception, a integer representing an error code, or + * anything else. Relying on this value assumes that you know what handler + * you are using. + * + * @return mixed + */ + public function getHandlerErrorData() + { + return $this->handlerErrorData; + } + + /** + * Get the effective URI the request was sent to. + * + * @return UriInterface + */ + public function getEffectiveUri() + { + return $this->request->getUri(); + } + + /** + * Get the estimated time the request was being transferred by the handler. + * + * @return float Time in seconds. + */ + public function getTransferTime() + { + return $this->transferTime; + } + + /** + * Gets an array of all of the handler specific transfer data. + * + * @return array + */ + public function getHandlerStats() + { + return $this->handlerStats; + } + + /** + * Get a specific handler statistic from the handler by name. + * + * @param string $stat Handler specific transfer stat to retrieve. + * + * @return mixed|null + */ + public function getHandlerStat($stat) + { + return isset($this->handlerStats[$stat]) + ? $this->handlerStats[$stat] + : null; + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/UriTemplate.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/UriTemplate.php new file mode 100644 index 0000000..55dfeb5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/UriTemplate.php @@ -0,0 +1,241 @@ + array('prefix' => '', 'joiner' => ',', 'query' => false), + '+' => array('prefix' => '', 'joiner' => ',', 'query' => false), + '#' => array('prefix' => '#', 'joiner' => ',', 'query' => false), + '.' => array('prefix' => '.', 'joiner' => '.', 'query' => false), + '/' => array('prefix' => '/', 'joiner' => '/', 'query' => false), + ';' => array('prefix' => ';', 'joiner' => ';', 'query' => true), + '?' => array('prefix' => '?', 'joiner' => '&', 'query' => true), + '&' => array('prefix' => '&', 'joiner' => '&', 'query' => true) + ); + + /** @var array Delimiters */ + private static $delims = array(':', '/', '?', '#', '[', ']', '@', '!', '$', + '&', '\'', '(', ')', '*', '+', ',', ';', '='); + + /** @var array Percent encoded delimiters */ + private static $delimsPct = array('%3A', '%2F', '%3F', '%23', '%5B', '%5D', + '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', + '%3B', '%3D'); + + public function expand($template, array $variables) + { + if (false === strpos($template, '{')) { + return $template; + } + + $this->template = $template; + $this->variables = $variables; + + return preg_replace_callback( + '/\{([^\}]+)\}/', + [$this, 'expandMatch'], + $this->template + ); + } + + /** + * Parse an expression into parts + * + * @param string $expression Expression to parse + * + * @return array Returns an associative array of parts + */ + private function parseExpression($expression) + { + $result = array(); + + if (isset(self::$operatorHash[$expression[0]])) { + $result['operator'] = $expression[0]; + $expression = substr($expression, 1); + } else { + $result['operator'] = ''; + } + + foreach (explode(',', $expression) as $value) { + $value = trim($value); + $varspec = array(); + if ($colonPos = strpos($value, ':')) { + $varspec['value'] = substr($value, 0, $colonPos); + $varspec['modifier'] = ':'; + $varspec['position'] = (int) substr($value, $colonPos + 1); + } elseif (substr($value, -1) == '*') { + $varspec['modifier'] = '*'; + $varspec['value'] = substr($value, 0, -1); + } else { + $varspec['value'] = (string) $value; + $varspec['modifier'] = ''; + } + $result['values'][] = $varspec; + } + + return $result; + } + + /** + * Process an expansion + * + * @param array $matches Matches met in the preg_replace_callback + * + * @return string Returns the replacement string + */ + private function expandMatch(array $matches) + { + static $rfc1738to3986 = array('+' => '%20', '%7e' => '~'); + + $replacements = array(); + $parsed = self::parseExpression($matches[1]); + $prefix = self::$operatorHash[$parsed['operator']]['prefix']; + $joiner = self::$operatorHash[$parsed['operator']]['joiner']; + $useQuery = self::$operatorHash[$parsed['operator']]['query']; + + foreach ($parsed['values'] as $value) { + + if (!isset($this->variables[$value['value']])) { + continue; + } + + $variable = $this->variables[$value['value']]; + $actuallyUseQuery = $useQuery; + $expanded = ''; + + if (is_array($variable)) { + + $isAssoc = $this->isAssoc($variable); + $kvp = array(); + foreach ($variable as $key => $var) { + + if ($isAssoc) { + $key = rawurlencode($key); + $isNestedArray = is_array($var); + } else { + $isNestedArray = false; + } + + if (!$isNestedArray) { + $var = rawurlencode($var); + if ($parsed['operator'] == '+' || + $parsed['operator'] == '#' + ) { + $var = $this->decodeReserved($var); + } + } + + if ($value['modifier'] == '*') { + if ($isAssoc) { + if ($isNestedArray) { + // Nested arrays must allow for deeply nested + // structures. + $var = strtr( + http_build_query([$key => $var]), + $rfc1738to3986 + ); + } else { + $var = $key . '=' . $var; + } + } elseif ($key > 0 && $actuallyUseQuery) { + $var = $value['value'] . '=' . $var; + } + } + + $kvp[$key] = $var; + } + + if (empty($variable)) { + $actuallyUseQuery = false; + } elseif ($value['modifier'] == '*') { + $expanded = implode($joiner, $kvp); + if ($isAssoc) { + // Don't prepend the value name when using the explode + // modifier with an associative array. + $actuallyUseQuery = false; + } + } else { + if ($isAssoc) { + // When an associative array is encountered and the + // explode modifier is not set, then the result must be + // a comma separated list of keys followed by their + // respective values. + foreach ($kvp as $k => &$v) { + $v = $k . ',' . $v; + } + } + $expanded = implode(',', $kvp); + } + + } else { + if ($value['modifier'] == ':') { + $variable = substr($variable, 0, $value['position']); + } + $expanded = rawurlencode($variable); + if ($parsed['operator'] == '+' || $parsed['operator'] == '#') { + $expanded = $this->decodeReserved($expanded); + } + } + + if ($actuallyUseQuery) { + if (!$expanded && $joiner != '&') { + $expanded = $value['value']; + } else { + $expanded = $value['value'] . '=' . $expanded; + } + } + + $replacements[] = $expanded; + } + + $ret = implode($joiner, $replacements); + if ($ret && $prefix) { + return $prefix . $ret; + } + + return $ret; + } + + /** + * Determines if an array is associative. + * + * This makes the assumption that input arrays are sequences or hashes. + * This assumption is a tradeoff for accuracy in favor of speed, but it + * should work in almost every case where input is supplied for a URI + * template. + * + * @param array $array Array to check + * + * @return bool + */ + private function isAssoc(array $array) + { + return $array && array_keys($array)[0] !== 0; + } + + /** + * Removes percent encoding on reserved characters (used with + and # + * modifiers). + * + * @param string $string String to fix + * + * @return string + */ + private function decodeReserved($string) + { + return str_replace(self::$delimsPct, self::$delims, $string); + } +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions.php new file mode 100644 index 0000000..d0a2ca8 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions.php @@ -0,0 +1,280 @@ +expand($template, $variables); +} + +/** + * Debug function used to describe the provided value type and class. + * + * @param mixed $input + * + * @return string Returns a string containing the type of the variable and + * if a class is provided, the class name. + */ +function describe_type($input) +{ + switch (gettype($input)) { + case 'object': + return 'object(' . get_class($input) . ')'; + case 'array': + return 'array(' . count($input) . ')'; + default: + ob_start(); + var_dump($input); + // normalize float vs double + return str_replace('double(', 'float(', rtrim(ob_get_clean())); + } +} + +/** + * Parses an array of header lines into an associative array of headers. + * + * @param array $lines Header lines array of strings in the following + * format: "Name: Value" + * @return array + */ +function headers_from_lines($lines) +{ + $headers = []; + + foreach ($lines as $line) { + $parts = explode(':', $line, 2); + $headers[trim($parts[0])][] = isset($parts[1]) + ? trim($parts[1]) + : null; + } + + return $headers; +} + +/** + * Returns a debug stream based on the provided variable. + * + * @param mixed $value Optional value + * + * @return resource + */ +function debug_resource($value = null) +{ + if (is_resource($value)) { + return $value; + } elseif (defined('STDOUT')) { + return STDOUT; + } + + return fopen('php://output', 'w'); +} + +/** + * Chooses and creates a default handler to use based on the environment. + * + * The returned handler is not wrapped by any default middlewares. + * + * @throws \RuntimeException if no viable Handler is available. + * @return callable Returns the best handler for the given system. + */ +function choose_handler() +{ + $handler = null; + if (extension_loaded('curl')) { + $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler()); + } + + if (ini_get('allow_url_fopen')) { + $handler = $handler + ? Proxy::wrapStreaming($handler, new StreamHandler()) + : new StreamHandler(); + } elseif (!$handler) { + throw new \RuntimeException('GuzzleHttp requires cURL, the ' + . 'allow_url_fopen ini setting, or a custom HTTP handler.'); + } + + return $handler; +} + +/** + * Get the default User-Agent string to use with Guzzle + * + * @return string + */ +function default_user_agent() +{ + static $defaultAgent = ''; + + if (!$defaultAgent) { + $defaultAgent = 'GuzzleHttp/' . Client::VERSION; + if (extension_loaded('curl') && function_exists('curl_version')) { + $defaultAgent .= ' curl/' . \curl_version()['version']; + } + $defaultAgent .= ' PHP/' . PHP_VERSION; + } + + return $defaultAgent; +} + +/** + * Returns the default cacert bundle for the current system. + * + * First, the openssl.cafile and curl.cainfo php.ini settings are checked. + * If those settings are not configured, then the common locations for + * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X + * and Windows are checked. If any of these file locations are found on + * disk, they will be utilized. + * + * Note: the result of this function is cached for subsequent calls. + * + * @return string + * @throws \RuntimeException if no bundle can be found. + */ +function default_ca_bundle() +{ + static $cached = null; + static $cafiles = [ + // Red Hat, CentOS, Fedora (provided by the ca-certificates package) + '/etc/pki/tls/certs/ca-bundle.crt', + // Ubuntu, Debian (provided by the ca-certificates package) + '/etc/ssl/certs/ca-certificates.crt', + // FreeBSD (provided by the ca_root_nss package) + '/usr/local/share/certs/ca-root-nss.crt', + // OS X provided by homebrew (using the default path) + '/usr/local/etc/openssl/cert.pem', + // Google app engine + '/etc/ca-certificates.crt', + // Windows? + 'C:\\windows\\system32\\curl-ca-bundle.crt', + 'C:\\windows\\curl-ca-bundle.crt', + ]; + + if ($cached) { + return $cached; + } + + if ($ca = ini_get('openssl.cafile')) { + return $cached = $ca; + } + + if ($ca = ini_get('curl.cainfo')) { + return $cached = $ca; + } + + foreach ($cafiles as $filename) { + if (file_exists($filename)) { + return $cached = $filename; + } + } + + throw new \RuntimeException(<<< EOT +No system CA bundle could be found in any of the the common system locations. +PHP versions earlier than 5.6 are not properly configured to use the system's +CA bundle by default. In order to verify peer certificates, you will need to +supply the path on disk to a certificate bundle to the 'verify' request +option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not +need a specific certificate bundle, then Mozilla provides a commonly used CA +bundle which can be downloaded here (provided by the maintainer of cURL): +https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once +you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP +ini setting to point to the path to the file, allowing you to omit the 'verify' +request option. See http://curl.haxx.se/docs/sslcerts.html for more +information. +EOT + ); +} + +/** + * Creates an associative array of lowercase header names to the actual + * header casing. + * + * @param array $headers + * + * @return array + */ +function normalize_header_keys(array $headers) +{ + $result = []; + foreach (array_keys($headers) as $key) { + $result[strtolower($key)] = $key; + } + + return $result; +} + +/** + * Returns true if the provided host matches any of the no proxy areas. + * + * This method will strip a port from the host if it is present. Each pattern + * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a + * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" == + * "baz.foo.com", but ".foo.com" != "foo.com"). + * + * Areas are matched in the following cases: + * 1. "*" (without quotes) always matches any hosts. + * 2. An exact match. + * 3. The area starts with "." and the area is the last part of the host. e.g. + * '.mit.edu' will match any host that ends with '.mit.edu'. + * + * @param string $host Host to check against the patterns. + * @param array $noProxyArray An array of host patterns. + * + * @return bool + */ +function is_host_in_noproxy($host, array $noProxyArray) +{ + if (strlen($host) === 0) { + throw new \InvalidArgumentException('Empty host provided'); + } + + // Strip port if present. + if (strpos($host, ':')) { + $host = explode($host, ':', 2)[0]; + } + + foreach ($noProxyArray as $area) { + // Always match on wildcards. + if ($area === '*') { + return true; + } elseif (empty($area)) { + // Don't match on empty values. + continue; + } elseif ($area === $host) { + // Exact matches. + return true; + } else { + // Special match if the area when prefixed with ".". Remove any + // existing leading "." and add a new leading ".". + $area = '.' . ltrim($area, '.'); + if (substr($host, -(strlen($area))) === $area) { + return true; + } + } + } + + return false; +} diff --git a/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions_include.php b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions_include.php new file mode 100644 index 0000000..a93393a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/GuzzleHttp/functions_include.php @@ -0,0 +1,6 @@ +getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * // Emit headers iteratively: + * foreach ($message->getHeaders() as $name => $values) { + * foreach ($values as $value) { + * header(sprintf('%s: %s', $name, $value), false); + * } + * } + * + * While header names are not case-sensitive, getHeaders() will preserve the + * exact case in which headers were originally specified. + * + * @return array Returns an associative array of the message's headers. Each + * key MUST be a header name, and each value MUST be an array of strings + * for that header. + */ + public function getHeaders(); + + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $name Case-insensitive header field name. + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($name); + + /** + * Retrieves a message header value by the given case-insensitive name. + * + * This method returns an array of all the header values of the given + * case-insensitive header name. + * + * If the header does not appear in the message, this method MUST return an + * empty array. + * + * @param string $name Case-insensitive header field name. + * @return string[] An array of string values as provided for the given + * header. If the header does not appear in the message, this method MUST + * return an empty array. + */ + public function getHeader($name); + + /** + * Retrieves a comma-separated string of the values for a single header. + * + * This method returns all of the header values of the given + * case-insensitive header name as a string concatenated together using + * a comma. + * + * NOTE: Not all header values may be appropriately represented using + * comma concatenation. For such headers, use getHeader() instead + * and supply your own delimiter when concatenating. + * + * If the header does not appear in the message, this method MUST return + * an empty string. + * + * @param string $name Case-insensitive header field name. + * @return string A string of values as provided for the given header + * concatenated together using a comma. If the header does not appear in + * the message, this method MUST return an empty string. + */ + public function getHeaderLine($name); + + /** + * Return an instance with the provided value replacing the specified header. + * + * While header names are case-insensitive, the casing of the header will + * be preserved by this function, and returned from getHeaders(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new and/or updated header and value. + * + * @param string $name Case-insensitive header field name. + * @param string|string[] $value Header value(s). + * @return self + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withHeader($name, $value); + + /** + * Return an instance with the specified header appended with the given value. + * + * Existing values for the specified header will be maintained. The new + * value(s) will be appended to the existing list. If the header did not + * exist previously, it will be added. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new header and/or value. + * + * @param string $name Case-insensitive header field name to add. + * @param string|string[] $value Header value(s). + * @return self + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withAddedHeader($name, $value); + + /** + * Return an instance without the specified header. + * + * Header resolution MUST be done without case-sensitivity. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the named header. + * + * @param string $name Case-insensitive header field name to remove. + * @return self + */ + public function withoutHeader($name); + + /** + * Gets the body of the message. + * + * @return StreamInterface Returns the body as a stream. + */ + public function getBody(); + + /** + * Return an instance with the specified message body. + * + * The body MUST be a StreamInterface object. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * new body stream. + * + * @param StreamInterface $body Body. + * @return self + * @throws \InvalidArgumentException When the body is not valid. + */ + public function withBody(StreamInterface $body); +} diff --git a/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/RequestInterface.php b/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/RequestInterface.php new file mode 100644 index 0000000..75c802e --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/RequestInterface.php @@ -0,0 +1,129 @@ +getQuery()` + * or from the `QUERY_STRING` server param. + * + * @return array + */ + public function getQueryParams(); + + /** + * Return an instance with the specified query string arguments. + * + * These values SHOULD remain immutable over the course of the incoming + * request. They MAY be injected during instantiation, such as from PHP's + * $_GET superglobal, or MAY be derived from some other value such as the + * URI. In cases where the arguments are parsed from the URI, the data + * MUST be compatible with what PHP's parse_str() would return for + * purposes of how duplicate query parameters are handled, and how nested + * sets are handled. + * + * Setting query string arguments MUST NOT change the URI stored by the + * request, nor the values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated query string arguments. + * + * @param array $query Array of query string arguments, typically from + * $_GET. + * @return self + */ + public function withQueryParams(array $query); + + /** + * Retrieve normalized file upload data. + * + * This method returns upload metadata in a normalized tree, with each leaf + * an instance of Psr\Http\Message\UploadedFileInterface. + * + * These values MAY be prepared from $_FILES or the message body during + * instantiation, or MAY be injected via withUploadedFiles(). + * + * @return array An array tree of UploadedFileInterface instances; an empty + * array MUST be returned if no data is present. + */ + public function getUploadedFiles(); + + /** + * Create a new instance with the specified uploaded files. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param array An array tree of UploadedFileInterface instances. + * @return self + * @throws \InvalidArgumentException if an invalid structure is provided. + */ + public function withUploadedFiles(array $uploadedFiles); + + /** + * Retrieve any parameters provided in the request body. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, this method MUST + * return the contents of $_POST. + * + * Otherwise, this method may return any results of deserializing + * the request body content; as parsing returns structured content, the + * potential types MUST be arrays or objects only. A null value indicates + * the absence of body content. + * + * @return null|array|object The deserialized body parameters, if any. + * These will typically be an array or object. + */ + public function getParsedBody(); + + /** + * Return an instance with the specified body parameters. + * + * These MAY be injected during instantiation. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, use this method + * ONLY to inject the contents of $_POST. + * + * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of + * deserializing the request body content. Deserialization/parsing returns + * structured data, and, as such, this method ONLY accepts arrays or objects, + * or a null value if nothing was available to parse. + * + * As an example, if content negotiation determines that the request data + * is a JSON payload, this method could be used to create a request + * instance with the deserialized parameters. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param null|array|object $data The deserialized body data. This will + * typically be in an array or object. + * @return self + * @throws \InvalidArgumentException if an unsupported argument type is + * provided. + */ + public function withParsedBody($data); + + /** + * Retrieve attributes derived from the request. + * + * The request "attributes" may be used to allow injection of any + * parameters derived from the request: e.g., the results of path + * match operations; the results of decrypting cookies; the results of + * deserializing non-form-encoded message bodies; etc. Attributes + * will be application and request specific, and CAN be mutable. + * + * @return array Attributes derived from the request. + */ + public function getAttributes(); + + /** + * Retrieve a single derived request attribute. + * + * Retrieves a single derived request attribute as described in + * getAttributes(). If the attribute has not been previously set, returns + * the default value as provided. + * + * This method obviates the need for a hasAttribute() method, as it allows + * specifying a default value to return if the attribute is not found. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * @return mixed + */ + public function getAttribute($name, $default = null); + + /** + * Return an instance with the specified derived request attribute. + * + * This method allows setting a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $value The value of the attribute. + * @return self + */ + public function withAttribute($name, $value); + + /** + * Return an instance that removes the specified derived request attribute. + * + * This method allows removing a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @return self + */ + public function withoutAttribute($name); +} diff --git a/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/StreamInterface.php b/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/StreamInterface.php new file mode 100644 index 0000000..f68f391 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Psr/Http/Message/StreamInterface.php @@ -0,0 +1,158 @@ + + * [user-info@]host[:port] + * + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + * @return string The URI authority, in "[user-info@]host[:port]" format. + */ + public function getAuthority(); + + /** + * Retrieve the user information component of the URI. + * + * If no user information is present, this method MUST return an empty + * string. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + * + * @return string The URI user information, in "username[:password]" format. + */ + public function getUserInfo(); + + /** + * Retrieve the host component of the URI. + * + * If no host is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + * @return string The URI host. + */ + public function getHost(); + + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + * + * @return null|int The URI port. + */ + public function getPort(); + + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + * @return string The URI path. + */ + public function getPath(); + + /** + * Retrieve the query string of the URI. + * + * If no query string is present, this method MUST return an empty string. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + * @return string The URI query string. + */ + public function getQuery(); + + /** + * Retrieve the fragment component of the URI. + * + * If no fragment is present, this method MUST return an empty string. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + * @return string The URI fragment. + */ + public function getFragment(); + + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * Implementations MUST support the schemes "http" and "https" case + * insensitively, and MAY accommodate other schemes if required. + * + * An empty scheme is equivalent to removing the scheme. + * + * @param string $scheme The scheme to use with the new instance. + * @return self A new instance with the specified scheme. + * @throws \InvalidArgumentException for invalid or unsupported schemes. + */ + public function withScheme($scheme); + + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; an empty string for the user is equivalent to removing user + * information. + * + * @param string $user The user name to use for authority. + * @param null|string $password The password associated with $user. + * @return self A new instance with the specified user information. + */ + public function withUserInfo($user, $password = null); + + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * An empty host value is equivalent to removing the host. + * + * @param string $host The hostname to use with the new instance. + * @return self A new instance with the specified host. + * @throws \InvalidArgumentException for invalid hostnames. + */ + public function withHost($host); + + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * Implementations MUST raise an exception for ports outside the + * established TCP and UDP port ranges. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @param null|int $port The port to use with the new instance; a null value + * removes the port information. + * @return self A new instance with the specified port. + * @throws \InvalidArgumentException for invalid ports. + */ + public function withPort($port); + + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * If the path is intended to be domain-relative rather than path relative then + * it must begin with a slash ("/"). Paths not starting with a slash ("/") + * are assumed to be relative to some base path known to the application or + * consumer. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @param string $path The path to use with the new instance. + * @return self A new instance with the specified path. + * @throws \InvalidArgumentException for invalid paths. + */ + public function withPath($path); + + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * An empty query string value is equivalent to removing the query string. + * + * @param string $query The query string to use with the new instance. + * @return self A new instance with the specified query string. + * @throws \InvalidArgumentException for invalid query strings. + */ + public function withQuery($query); + + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * An empty fragment value is equivalent to removing the fragment. + * + * @param string $fragment The fragment to use with the new instance. + * @return self A new instance with the specified fragment. + */ + public function withFragment($fragment); + + /** + * Return the string representation as a URI reference. + * + * Depending on which components of the URI are present, the resulting + * string is either a full URI or relative reference according to RFC 3986, + * Section 4.1. The method concatenates the various components of the URI, + * using the appropriate delimiters: + * + * - If a scheme is present, it MUST be suffixed by ":". + * - If an authority is present, it MUST be prefixed by "//". + * - The path can be concatenated without delimiters. But there are two + * cases where the path has to be adjusted to make the URI reference + * valid as PHP does not allow to throw an exception in __toString(): + * - If the path is rootless and an authority is present, the path MUST + * be prefixed by "/". + * - If the path is starting with more than one "/" and no authority is + * present, the starting slashes MUST be reduced to one. + * - If a query is present, it MUST be prefixed by "?". + * - If a fragment is present, it MUST be prefixed by "#". + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @return string + */ + public function __toString(); +} diff --git a/aliyun-mns-php-sdk-1.3.3/README.md b/aliyun-mns-php-sdk-1.3.3/README.md new file mode 100644 index 0000000..3d97187 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/README.md @@ -0,0 +1,5 @@ +# MNS SDK for PHP +Please refer to http://www.aliyun.com/product/mns and https://docs.aliyun.com/?spm=5176.7393424.9.6.5ki1hv#/pub/mns/api_reference/intro&intro for more API details. + +## Samples +You must fulfill the AccessId/AccessKey/AccountID in the example before running. diff --git a/aliyun-mns-php-sdk-1.3.3/Samples/Queue/CreateQueueAndSendMessage.php b/aliyun-mns-php-sdk-1.3.3/Samples/Queue/CreateQueueAndSendMessage.php new file mode 100644 index 0000000..432a08a --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Samples/Queue/CreateQueueAndSendMessage.php @@ -0,0 +1,116 @@ +accessId = $accessId; + $this->accessKey = $accessKey; + $this->endPoint = $endPoint; + } + + public function run() + { + $queueName = "CreateQueueAndSendMessageExample"; + + $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey); + + // 1. create queue + $request = new CreateQueueRequest($queueName); + try + { + $res = $this->client->createQueue($request); + echo "QueueCreated! \n"; + } + catch (MnsException $e) + { + echo "CreateQueueFailed: " . $e; + return; + } + $queue = $this->client->getQueueRef($queueName); + + // 2. send message + $messageBody = "test"; + // as the messageBody will be automatically encoded + // the MD5 is calculated for the encoded body + $bodyMD5 = md5(base64_encode($messageBody)); + $request = new SendMessageRequest($messageBody); + try + { + $res = $queue->sendMessage($request); + echo "MessageSent! \n"; + } + catch (MnsException $e) + { + echo "SendMessage Failed: " . $e; + return; + } + + // 3. receive message + $receiptHandle = NULL; + try + { + // when receiving messages, it's always a good practice to set the waitSeconds to be 30. + // it means to send one http-long-polling request which lasts 30 seconds at most. + $res = $queue->receiveMessage(30); + echo "ReceiveMessage Succeed! \n"; + if (strtoupper($bodyMD5) == $res->getMessageBodyMD5()) + { + echo "You got the message sent by yourself! \n"; + } + $receiptHandle = $res->getReceiptHandle(); + } + catch (MnsException $e) + { + echo "ReceiveMessage Failed: " . $e; + return; + } + + // 4. delete message + try + { + $res = $queue->deleteMessage($receiptHandle); + echo "DeleteMessage Succeed! \n"; + } + catch (MnsException $e) + { + echo "DeleteMessage Failed: " . $e; + return; + } + + // 5. delete queue + try { + $this->client->deleteQueue($queueName); + echo "DeleteQueue Succeed! \n"; + } catch (MnsException $e) { + echo "DeleteQueue Failed: " . $e; + return; + } + } +} + +$accessId = ""; +$accessKey = ""; +$endPoint = ""; + +if (empty($accessId) || empty($accessKey) || empty($endPoint)) +{ + echo "Must Provide AccessId/AccessKey/EndPoint to Run the Example. \n"; + return; +} + +$instance = new CreateQueueAndSendMessage($accessId, $accessKey, $endPoint); +$instance->run(); + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Samples/Topic/CreateTopicAndPublishMessage.php b/aliyun-mns-php-sdk-1.3.3/Samples/Topic/CreateTopicAndPublishMessage.php new file mode 100644 index 0000000..f5a0246 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Samples/Topic/CreateTopicAndPublishMessage.php @@ -0,0 +1,125 @@ +ip = $ip; + $this->port = strval($port); + $this->accessId = $accessId; + $this->accessKey = $accessKey; + $this->endPoint = $endPoint; + } + + public function run() + { + $topicName = "CreateTopicAndPublishMessageExample"; + + $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey); + + // 1. create topic + $request = new CreateTopicRequest($topicName); + try + { + $res = $this->client->createTopic($request); + echo "TopicCreated! \n"; + } + catch (MnsException $e) + { + echo "CreateTopicFailed: " . $e; + return; + } + $topic = $this->client->getTopicRef($topicName); + + // 2. subscribe + $subscriptionName = "SubscriptionExample"; + $attributes = new SubscriptionAttributes($subscriptionName, 'http://' . $this->ip . ':' . $this->port); + + try + { + $topic->subscribe($attributes); + echo "Subscribed! \n"; + } + catch (MnsException $e) + { + echo "SubscribeFailed: " . $e; + return; + } + + // 3. send message + $messageBody = "test"; + // as the messageBody will be automatically encoded + // the MD5 is calculated for the encoded body + $bodyMD5 = md5(base64_encode($messageBody)); + $request = new PublishMessageRequest($messageBody); + try + { + $res = $topic->publishMessage($request); + echo "MessagePublished! \n"; + } + catch (MnsException $e) + { + echo "PublishMessage Failed: " . $e; + return; + } + + // 4. sleep for receiving notification + sleep(20); + + // 5. unsubscribe + try + { + $topic->unsubscribe($subscriptionName); + echo "Unsubscribe Succeed! \n"; + } + catch (MnsException $e) + { + echo "Unsubscribe Failed: " . $e; + return; + } + + // 6. delete topic + try + { + $this->client->deleteTopic($topicName); + echo "DeleteTopic Succeed! \n"; + } + catch (MnsException $e) + { + echo "DeleteTopic Failed: " . $e; + return; + } + } +} + +$accessId = ""; +$accessKey = ""; +$endPoint = ""; +$ip = ""; //鍏綉IP +$port = "8000"; + +if (empty($accessId) || empty($accessKey) || empty($endPoint)) +{ + echo "Must Provide AccessId/AccessKey/EndPoint to Run the Example. \n"; + return; +} + + +$instance = new CreateTopicAndPublishMessage($ip, $port, $accessId, $accessKey, $endPoint); +$instance->run(); + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Samples/Topic/http_server_sample.php b/aliyun-mns-php-sdk-1.3.3/Samples/Topic/http_server_sample.php new file mode 100644 index 0000000..a5cca27 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Samples/Topic/http_server_sample.php @@ -0,0 +1,113 @@ + $value) + { + if (substr($name, 0, 5) == 'HTTP_') + { + $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; + } + } + return $headers; + } +} + +// 1. get the headers and check the signature +$tmpHeaders = array(); +$headers = getallheaders(); +foreach ($headers as $key => $value) +{ + if (0 === strpos($key, 'x-mns-')) + { + $tmpHeaders[$key] = $value; + } +} +ksort($tmpHeaders); +$canonicalizedMNSHeaders = implode("\n", array_map(function ($v, $k) { return $k . ":" . $v; }, $tmpHeaders, array_keys($tmpHeaders))); + +$method = $_SERVER['REQUEST_METHOD']; +$canonicalizedResource = $_SERVER['REQUEST_URI']; +error_log($canonicalizedResource); + +$contentMd5 = ''; +if (array_key_exists('Content-MD5', $headers)) +{ + $contentMd5 = $headers['Content-MD5']; +} +else if (array_key_exists('Content-md5', $headers)) +{ + $contentMd5 = $headers['Content-md5']; +} + +$contentType = ''; +if (array_key_exists('Content-Type', $headers)) +{ + $contentType = $headers['Content-Type']; +} +$date = $headers['Date']; + +$stringToSign = strtoupper($method) . "\n" . $contentMd5 . "\n" . $contentType . "\n" . $date . "\n" . $canonicalizedMNSHeaders . "\n" . $canonicalizedResource; +error_log($stringToSign); + +$publicKeyURL = base64_decode($headers['x-mns-signing-cert-url']); +$publicKey = get_by_url($publicKeyURL); +$signature = $headers['Authorization']; + +$pass = verify($stringToSign, $signature, $publicKey); +if (!$pass) +{ + error_log("verify signature fail"); + http_response_code(400); + return; +} + +// 2. now parse the content +$content = file_get_contents("php://input"); +error_log($content); + +if (!empty($contentMd5) && $contentMd5 != base64_encode(md5($content))) +{ + error_log("md5 mismatch"); + http_response_code(401); + return; +} + +$msg = new SimpleXMLElement($content); +echo "\n______________________________________________________\n"; +echo "TopicName: " . $msg->TopicName . "\n"; +echo "SubscriptionName: " . $msg->SubscriptionName . "\n"; +echo "MessageId: " . $msg->MessageId . "\n"; +echo "MessageMD5: " . $msg->MessageMD5 . "\n"; +echo "Message: " . $msg->Message . "\n"; +echo "______________________________________________________\n"; +http_response_code(200); + + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Tests/ClientTest.php b/aliyun-mns-php-sdk-1.3.3/Tests/ClientTest.php new file mode 100644 index 0000000..09b6dfe --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Tests/ClientTest.php @@ -0,0 +1,539 @@ +endPoint = $ini_array["endpoint"]; + $this->accessId = $ini_array["accessid"]; + $this->accessKey = $ini_array["accesskey"]; + + $this->queueToDelete = array(); + $this->topicToDelete = array(); + + $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey); + } + + public function tearDown() + { + foreach ($this->queueToDelete as $queueName) + { + try { + $this->client->deleteQueue($queueName); + } catch (\Exception $e) { + } + } + foreach ($this->topicToDelete as $topicName) + { + try { + $this->client->deleteTopic($topicName); + } catch (\Exception $e) { + } + } + } + + public function testAccountAttributes() + { + try + { + $attributes = new AccountAttributes; + $attributes->setLoggingBucket("Test"); + $this->client->setAccountAttributes($attributes); + $res = $this->client->getAccountAttributes(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals("Test", $res->getAccountAttributes()->getLoggingBucket()); + + $attributes = new AccountAttributes; + $this->client->setAccountAttributes($attributes); + $res = $this->client->getAccountAttributes(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals("Test", $res->getAccountAttributes()->getLoggingBucket()); + + $attributes = new AccountAttributes; + $attributes->setLoggingBucket(""); + $this->client->setAccountAttributes($attributes); + $res = $this->client->getAccountAttributes(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals("", $res->getAccountAttributes()->getLoggingBucket()); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT); + } + } + + public function testCreateQueueAsync() + { + $queueName = "testCreateQueueAsync"; + $request = new CreateQueueRequest($queueName); + $this->queueToDelete[] = $queueName; + + // Async Call with callback + try + { + $res = $this->client->createQueueAsync($request, + new AsyncCallback( + function($response) { + $this->assertTrue($response->isSucceed()); + }, + function($e) { + $this->assertTrue(FALSE, $e); + } + ) + ); + $res = $res->wait(); + + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // Async call without callback + try + { + $res = $this->client->createQueueAsync($request); + $res = $res->wait(); + + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testCreateQueueSync() + { + $queueName = "testCreateQueueSync"; + + // 1. create queue with InvalidArgument + $attributes = new QueueAttributes; + $attributes->setPollingWaitSeconds(60); + + $request = new CreateQueueRequest($queueName, $attributes); + try + { + $res = $this->client->createQueue($request); + $this->assertTrue(FALSE, "Should throw InvalidArgumentException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT); + } + + // 2. create queue + $request = new CreateQueueRequest($queueName); + $this->queueToDelete[] = $queueName; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 3. create queue with same attributes + $request = new CreateQueueRequest($queueName); + $this->queueToDelete[] = $queueName; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 4. create same queue with different attributes + $attributes = new QueueAttributes; + $attributes->setPollingWaitSeconds(20); + + $request = new CreateQueueRequest($queueName, $attributes); + try + { + $res = $this->client->createQueue($request); + $this->assertTrue(FALSE, "Should throw QueueAlreadyExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::QUEUE_ALREADY_EXIST); + } + } + + public function testListQueue() + { + $queueNamePrefix = uniqid(); + $queueName1 = $queueNamePrefix . "testListQueue1"; + $queueName2 = $queueNamePrefix . "testListQueue2"; + + // 1. create queue + $request = new CreateQueueRequest($queueName1); + $this->queueToDelete[] = $queueName1; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $request = new CreateQueueRequest($queueName2); + $this->queueToDelete[] = $queueName2; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 2. list queue + $queueName1Found = FALSE; + $queueName2Found = FALSE; + + $count = 0; + $request = new ListQueueRequest(1, $queueNamePrefix); + + while ($count < 2) { + try + { + $res = $this->client->listQueue($request); + $this->assertTrue($res->isSucceed()); + + $queueNames = $res->getQueueNames(); + foreach ($queueNames as $queueName) { + if ($queueName == $queueName1) { + $queueName1Found = TRUE; + } elseif ($queueName == $queueName2) { + $queueName2Found = TRUE; + } else { + $this->assertTrue(FALSE, $queueName . " Should not be here."); + } + } + + if ($count > 0) { + $this->assertTrue($res->isFinished(), implode(", ", $queueNames)); + } + $request->setMarker($res->getNextMarker()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + $count += 1; + } + + $this->assertTrue($queueName1Found, $queueName1 . " Not Found!"); + $this->assertTrue($queueName2Found, $queueName2 . " Not Found!"); + } + + public function testListQueueAsync() + { + $queueNamePrefix = uniqid(); + $queueName1 = $queueNamePrefix . "testListQueue1"; + $queueName2 = $queueNamePrefix . "testListQueue2"; + + // 1. create queue + $request = new CreateQueueRequest($queueName1); + $this->queueToDelete[] = $queueName1; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $request = new CreateQueueRequest($queueName2); + $this->queueToDelete[] = $queueName2; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 2. list queue + $queueName1Found = FALSE; + $queueName2Found = FALSE; + + $count = 0; + $request = new ListQueueRequest(1, $queueNamePrefix); + + while ($count < 2) { + try + { + $res = $this->client->listQueueAsync($request, + new AsyncCallback( + function($response) use ($count, &$request, $queueName1, $queueName2, &$queueName1Found, &$queueName2Found) { + $this->assertTrue($response->isSucceed()); + + $queueNames = $response->getQueueNames(); + foreach ($queueNames as $queueName) { + if ($queueName == $queueName1) { + $queueName1Found = TRUE; + } elseif ($queueName == $queueName2) { + $queueName2Found = TRUE; + } else { + $this->assertTrue(FALSE, $queueName . " Should not be here."); + } + } + + if ($count > 0) { + $this->assertTrue($response->isFinished(), implode(", ", $queueNames)); + } + $request->setMarker($response->getNextMarker()); + }, + function($e) { + $this->assertTrue(FALSE, $e); + } + ) + ); + $res = $res->wait(); + + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + $count += 1; + } + + $this->assertTrue($queueName1Found, $queueName1 . " Not Found!"); + $this->assertTrue($queueName2Found, $queueName2 . " Not Found!"); + } + + public function testDeleteQueue() + { + $queueName = "testDeleteQueue"; + + // 1. create queue + $request = new CreateQueueRequest($queueName); + $this->queueToDelete[] = $queueName; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 2. delete queue + try + { + $res = $this->client->deleteQueue($queueName); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testDeleteQueueAsync() + { + $queueName = "testDeleteQueueAsync"; + + // 1. create queue + $request = new CreateQueueRequest($queueName); + $this->queueToDelete[] = $queueName; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 2. delete Queue + try + { + $res = $this->client->deleteQueueAsync($queueName); + $res = $res->wait(); + + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testCreateTopicSync() + { + $topicName = "testCreateTopicSync"; + + // 1. create topic with InvalidArgument + $attributes = new TopicAttributes; + $attributes->setMaximumMessageSize(65 * 1024); + + $request = new CreateTopicRequest($topicName, $attributes); + try + { + $res = $this->client->createTopic($request); + $this->assertTrue(FALSE, "Should throw InvalidArgumentException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::INVALID_ARGUMENT); + } + + // 2. create topic + $request = new CreateTopicRequest($topicName); + $this->topicToDelete[] = $topicName; + try + { + $res = $this->client->createTopic($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 3. create topic with same attributes + $request = new CreateTopicRequest($topicName); + $this->topicToDelete[] = $topicName; + try + { + $res = $this->client->createTopic($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 4. create same topic with different attributes + $attributes = new TopicAttributes; + $attributes->setMaximumMessageSize(10 * 1024); + + $request = new CreateTopicRequest($topicName, $attributes); + try + { + $res = $this->client->createTopic($request); + $this->assertTrue(FALSE, "Should throw TopicAlreadyExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::TOPIC_ALREADY_EXIST); + } + } + + public function testListTopic() + { + $topicNamePrefix = uniqid(); + $topicName1 = $topicNamePrefix . "testListTopic1"; + $topicName2 = $topicNamePrefix . "testListTopic2"; + + // 1. create Topic + $request = new CreateTopicRequest($topicName1); + $this->topicToDelete[] = $topicName1; + try + { + $res = $this->client->createTopic($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $request = new CreateTopicRequest($topicName2); + $this->topicToDelete[] = $topicName2; + try + { + $res = $this->client->createTopic($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + // 2. list Topic + $topicName1Found = FALSE; + $topicName2Found = FALSE; + + $count = 0; + $request = new ListTopicRequest(1, $topicNamePrefix); + + while ($count < 2) { + try + { + $res = $this->client->listTopic($request); + $this->assertTrue($res->isSucceed()); + + $topicNames = $res->getTopicNames(); + foreach ($topicNames as $topicName) { + if ($topicName == $topicName1) { + $topicName1Found = TRUE; + } elseif ($topicName == $topicName2) { + $topicName2Found = TRUE; + } else { + $this->assertTrue(FALSE, $topicName . " Should not be here."); + } + } + + if ($count > 0) { + $this->assertTrue($res->isFinished(), implode(", ", $topicNames)); + } + $request->setMarker($res->getNextMarker()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + $count += 1; + } + + $this->assertTrue($topicName1Found, $topicName1 . " Not Found!"); + $this->assertTrue($topicName2Found, $topicName2 . " Not Found!"); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Tests/QueueTest.php b/aliyun-mns-php-sdk-1.3.3/Tests/QueueTest.php new file mode 100644 index 0000000..f2a0050 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Tests/QueueTest.php @@ -0,0 +1,494 @@ +endPoint = $ini_array["endpoint"]; + $this->accessId = $ini_array["accessid"]; + $this->accessKey = $ini_array["accesskey"]; + + $this->queueToDelete = array(); + + $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey); + } + + public function tearDown() + { + foreach ($this->queueToDelete as $queueName) + { + try { + $this->client->deleteQueue($queueName); + } catch (\Exception $e) { + } + } + } + + private function prepareQueue($queueName, $attributes = NULL, $base64=TRUE) + { + $request = new CreateQueueRequest($queueName, $attributes); + $this->queueToDelete[] = $queueName; + try + { + $res = $this->client->createQueue($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + return $this->client->getQueueRef($queueName, $base64); + } + + public function testLoggingEnabled() + { + $queueName = "testLoggingEnabled"; + $queue = $this->prepareQueue($queueName); + + try + { + $attributes = new QueueAttributes; + $attributes->setLoggingEnabled(false); + $queue->setAttribute($attributes); + $res = $queue->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(false, $res->getQueueAttributes()->getLoggingEnabled()); + + $attributes = new QueueAttributes; + $attributes->setLoggingEnabled(true); + $queue->setAttribute($attributes); + $res = $queue->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(true, $res->getQueueAttributes()->getLoggingEnabled()); + + $attributes = new QueueAttributes; + $queue->setAttribute($attributes); + $res = $queue->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(true, $res->getQueueAttributes()->getLoggingEnabled()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testQueueAttributes() + { + $queueName = "testQueueAttributes"; + $queue = $this->prepareQueue($queueName); + + try + { + $res = $queue->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($queueName, $res->getQueueAttributes()->getQueueName()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $delaySeconds = 3; + $attributes = new QueueAttributes; + $attributes->setDelaySeconds($delaySeconds); + try + { + $res = $queue->setAttribute($attributes); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $queue->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($res->getQueueAttributes()->getDelaySeconds(), $delaySeconds); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testMessageDelaySeconds() + { + $queueName = "testMessageDelaySeconds" . uniqid(); + $queue = $this->prepareQueue($queueName, NULL, FALSE); + + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + $delaySeconds = 1; + $request = new SendMessageRequest($messageBody, $delaySeconds); + $receiptHandle = NULL; + try + { + $res = $queue->sendMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testMessageNoBase64() + { + $queueName = "testQueueAttributes" . uniqid(); + $queue = $this->prepareQueue($queueName, NULL, FALSE); + + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + $request = new SendMessageRequest($messageBody); + try + { + $res = $queue->sendMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $queue->peekMessage(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $receiptHandle = NULL; + try + { + $res = $queue->receiveMessage(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + + $receiptHandle = $res->getReceiptHandle(); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $newReceiptHandle = NULL; + try + { + $res = $queue->changeMessageVisibility($receiptHandle, 18); + $this->assertTrue($res->isSucceed()); + $newReceiptHandle = $res->getReceiptHandle(); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $queue->deleteMessage($receiptHandle); + $this->assertTrue(FALSE, "Should NOT reach here!"); + } + catch (MnsException $e) + { + $this->assertEquals(Constants::MESSAGE_NOT_EXIST, $e->getMnsErrorCode()); + } + + try + { + $res = $queue->deleteMessage($newReceiptHandle); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testMessage() + { + $queueName = "testQueueAttributes" . uniqid(); + $queue = $this->prepareQueue($queueName); + + $messageBody = "test"; + $bodyMD5 = md5(base64_encode($messageBody)); + $request = new SendMessageRequest($messageBody); + try + { + $res = $queue->sendMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $queue->peekMessage(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $receiptHandle = NULL; + try + { + $res = $queue->receiveMessage(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + + $receiptHandle = $res->getReceiptHandle(); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $newReceiptHandle = NULL; + try + { + $res = $queue->changeMessageVisibility($receiptHandle, 18); + $this->assertTrue($res->isSucceed()); + $newReceiptHandle = $res->getReceiptHandle(); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $queue->deleteMessage($receiptHandle); + $this->assertTrue(FALSE, "Should NOT reach here!"); + } + catch (MnsException $e) + { + $this->assertEquals(Constants::MESSAGE_NOT_EXIST, $e->getMnsErrorCode()); + } + + try + { + $res = $queue->deleteMessage($newReceiptHandle); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testBatchNoBase64() + { + $queueName = "testBatch" . uniqid(); + $queue = $this->prepareQueue($queueName, NULL, FALSE); + + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + + $numOfMessages = 3; + + $item = new SendMessageRequestItem($messageBody); + $items = array($item, $item, $item); + $request = new BatchSendMessageRequest($items); + try + { + $res = $queue->batchSendMessage($request); + $this->assertTrue($res->isSucceed()); + + $responseItems = $res->getSendMessageResponseItems(); + $this->assertTrue(count($responseItems) == 3); + foreach ($responseItems as $item) + { + $this->assertEquals(strtoupper($bodyMD5), $item->getMessageBodyMD5()); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + if ($e instanceof BatchSendFailException) + { + var_dump($e->getSendMessageResponseItems()); + } + } + + try + { + $res = $queue->batchPeekMessage($numOfMessages); + $this->assertTrue($res->isSucceed()); + + $messages = $res->getMessages(); + $this->assertEquals($numOfMessages, count($messages)); + foreach ($messages as $message) + { + $this->assertEquals(strtoupper($bodyMD5), $message->getMessageBodyMD5()); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $receiptHandles = array(); + $request = new BatchReceiveMessageRequest($numOfMessages); + try + { + $res = $queue->batchReceiveMessage($request); + $this->assertTrue($res->isSucceed()); + + $messages = $res->getMessages(); + $this->assertEquals($numOfMessages, count($messages)); + foreach ($messages as $message) + { + $this->assertEquals(strtoupper($bodyMD5), $message->getMessageBodyMD5()); + $receiptHandles[] = $message->getReceiptHandle(); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $errorReceiptHandle = "1-ODU4OTkzNDU5My0xNDM1MTk3NjAwLTItNg=="; + $receiptHandles[] = $errorReceiptHandle; + try + { + $res = $queue->batchDeleteMessage($receiptHandles); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue($e instanceof BatchDeleteFailException); + $items = $e->getDeleteMessageErrorItems(); + $this->assertEquals(1, count($items)); + $this->assertEquals($errorReceiptHandle, $items[0]->getReceiptHandle()); + } + } + + public function testBatch() + { + $queueName = "testBatch" . uniqid(); + $queue = $this->prepareQueue($queueName); + + $messageBody = "test"; + $bodyMD5 = md5(base64_encode($messageBody)); + + $numOfMessages = 3; + + $item = new SendMessageRequestItem($messageBody); + $items = array($item, $item, $item); + $request = new BatchSendMessageRequest($items); + try + { + $res = $queue->batchSendMessage($request); + $this->assertTrue($res->isSucceed()); + + $responseItems = $res->getSendMessageResponseItems(); + foreach ($responseItems as $item) + { + $this->assertEquals(strtoupper($bodyMD5), $item->getMessageBodyMD5()); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + if ($e instanceof BatchSendFailException) + { + var_dump($e->getSendMessageResponseItems()); + } + } + + try + { + $res = $queue->batchPeekMessage($numOfMessages); + $this->assertTrue($res->isSucceed()); + + $messages = $res->getMessages(); + $this->assertEquals($numOfMessages, count($messages)); + foreach ($messages as $message) + { + $this->assertEquals(strtoupper($bodyMD5), $message->getMessageBodyMD5()); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $receiptHandles = array(); + $request = new BatchReceiveMessageRequest($numOfMessages); + try + { + $res = $queue->batchReceiveMessage($request); + $this->assertTrue($res->isSucceed()); + + $messages = $res->getMessages(); + $this->assertEquals($numOfMessages, count($messages)); + foreach ($messages as $message) + { + $this->assertEquals(strtoupper($bodyMD5), $message->getMessageBodyMD5()); + $receiptHandles[] = $message->getReceiptHandle(); + } + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $errorReceiptHandle = "1-ODU4OTkzNDU5My0xNDM1MTk3NjAwLTItNg=="; + $receiptHandles[] = $errorReceiptHandle; + try + { + $res = $queue->batchDeleteMessage($receiptHandles); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue($e instanceof BatchDeleteFailException); + $items = $e->getDeleteMessageErrorItems(); + $this->assertEquals(1, count($items)); + $this->assertEquals($errorReceiptHandle, $items[0]->getReceiptHandle()); + } + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Tests/TopicTest.php b/aliyun-mns-php-sdk-1.3.3/Tests/TopicTest.php new file mode 100644 index 0000000..3b158e5 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Tests/TopicTest.php @@ -0,0 +1,522 @@ +endPoint = $ini_array["endpoint"]; + $this->accessId = $ini_array["accessid"]; + $this->accessKey = $ini_array["accesskey"]; + + $this->topicToDelete = array(); + + $this->client = new Client($this->endPoint, $this->accessId, $this->accessKey); + } + + public function tearDown() + { + foreach ($this->topicToDelete as $topicName) + { + try + { + $this->client->deleteTopic($topicName); + } + catch (\Exception $e) + { + } + } + } + + private function prepareTopic($topicName, $attributes = NULL) + { + $request = new CreateTopicRequest($topicName, $attributes); + $this->topicToDelete[] = $topicName; + try + { + $res = $this->client->createTopic($request); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + return $this->client->getTopicRef($topicName); + } + + private function prepareSubscription(Topic $topic, $subscriptionName) + { + try + { + $attributes = new SubscriptionAttributes($subscriptionName, 'http://127.0.0.1', 'BACKOFF_RETRY', 'XML'); + $topic->subscribe($attributes); + } + catch (MnsException $e) + { + } + } + + public function testLoggingEnabled() + { + $topicName = "testLoggingEnabled"; + $topic = $this->prepareTopic($topicName); + + try + { + $attributes = new TopicAttributes; + $attributes->setLoggingEnabled(false); + $topic->setAttribute($attributes); + $res = $topic->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(false, $res->getTopicAttributes()->getLoggingEnabled()); + + $attributes = new TopicAttributes; + $attributes->setLoggingEnabled(true); + $topic->setAttribute($attributes); + $res = $topic->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(true, $res->getTopicAttributes()->getLoggingEnabled()); + + $attributes = new TopicAttributes; + $topic->setAttribute($attributes); + $res = $topic->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(true, $res->getTopicAttributes()->getLoggingEnabled()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + } + + public function testTopicAttributes() + { + $topicName = "testTopicAttributes"; + $topic = $this->prepareTopic($topicName); + + try + { + $res = $topic->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($topicName, $res->getTopicAttributes()->getTopicName()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $maximumMessageSize = 10 * 1024; + $attributes = new TopicAttributes; + $attributes->setMaximumMessageSize($maximumMessageSize); + try + { + $res = $topic->setAttribute($attributes); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $topic->getAttribute(); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($res->getTopicAttributes()->getMaximumMessageSize(), $maximumMessageSize); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topicName); + + try + { + $res = $topic->getAttribute(); + $this->assertTrue(False, "Should throw TopicNotExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::TOPIC_NOT_EXIST); + } + + try + { + $res = $topic->setAttribute($attributes); + $this->assertTrue(False, "Should throw TopicNotExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::TOPIC_NOT_EXIST); + } + } + + public function testPublishMessage() + { + $topicName = "testPublishMessage" . uniqid(); + + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + $request = new PublishMessageRequest($messageBody); + + $topic = $this->prepareTopic($topicName); + try + { + $res = $topic->publishMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topic->getTopicName()); + try + { + $res = $topic->publishMessage($request); + $this->assertTrue(False, "Should throw TopicNotExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::TOPIC_NOT_EXIST); + } + } + + public function testPublishBatchSmsMessage() + { + $topicName = "testPublishBatchSmsMessage" . uniqid(); + + // now sub and send message + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + + $topic = $this->prepareTopic($topicName); + try + { + $smsEndpoint = $topic->generateSmsEndpoint(); + + $subscriptionName = 'testSubscribeSubscription' . uniqid(); + $attributes = new SubscriptionAttributes($subscriptionName, $smsEndpoint); + $topic->subscribe($attributes); + + $batchSmsAttributes = new BatchSmsAttributes("闄堣垷閿", "SMS_15535414"); + $batchSmsAttributes->addReceiver("13735576932", array("name" => "phpsdk-batchsms")); + $messageAttributes = new MessageAttributes(array($batchSmsAttributes)); + $request = new PublishMessageRequest($messageBody, $messageAttributes); + + $res = $topic->publishMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + echo $res->getMessageId(); + sleep(5); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topic->getTopicName()); + } + + public function testPublishDirectSmsMessage() + { + $topicName = "testPublishDirectSmsMessage" . uniqid(); + + // now sub and send message + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + + $topic = $this->prepareTopic($topicName); + try + { + $smsEndpoint = $topic->generateSmsEndpoint(); + + $subscriptionName = 'testSubscribeSubscription' . uniqid(); + $attributes = new SubscriptionAttributes($subscriptionName, $smsEndpoint); + $topic->subscribe($attributes); + + $smsParams = array("name" => "phpsdk"); + $smsAttributes = new SmsAttributes("闄堣垷閿", "SMS_15535414", $smsParams, "13735576932"); + $messageAttributes = new MessageAttributes($smsAttributes); + $request = new PublishMessageRequest($messageBody, $messageAttributes); + + $res = $topic->publishMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + echo $res->getMessageId(); + sleep(5); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topic->getTopicName()); + } + + public function testPublishMailMessage() + { + $topicName = "testPublishMailMessage" . uniqid(); + + // now sub and send message + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + + $topic = $this->prepareTopic($topicName); + try + { + $mailEndpoint = $topic->generateMailEndpoint("liji.canglj@alibaba-inc.com"); + + $subscriptionName = 'testSubscribeSubscription' . uniqid(); + $attributes = new SubscriptionAttributes($subscriptionName, $mailEndpoint); + $topic->subscribe($attributes); + + $mailAttributes = new MailAttributes("TestSubject", "TestAccountName"); + $messageAttributes = new MessageAttributes($mailAttributes); + $request = new PublishMessageRequest($messageBody, $messageAttributes); + + $res = $topic->publishMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + echo $res->getMessageId(); + sleep(5); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topic->getTopicName()); + } + + public function testPublishQueueMessage() + { + $topicName = "testPublishQueueMessage" . uniqid(); + + // prepare the queue + $queueName = "testPublishQueueMessageQueue"; + $this->client->deleteQueue($queueName); + $request = new CreateQueueRequest($queueName); + $this->client->createQueue($request); + + // now sub and send message + $messageBody = "test"; + $bodyMD5 = md5($messageBody); + + $topic = $this->prepareTopic($topicName); + try + { + $queue = $this->client->getQueueRef($queueName, FALSE); + + $queueEndpoint = $topic->generateQueueEndpoint($queueName); + //echo($queueEndpoint); + + $subscriptionName = 'testSubscribeSubscription' . uniqid(); + $attributes = new SubscriptionAttributes($subscriptionName, $queueEndpoint); + $topic->subscribe($attributes); + + $request = new PublishMessageRequest($messageBody); + + $res = $topic->publishMessage($request); + $this->assertTrue($res->isSucceed()); + $this->assertEquals(strtoupper($bodyMD5), $res->getMessageBodyMD5()); + + $res = $queue->receiveMessage(30); + $this->assertTrue(strpos($res->getMessageBody(), "" . $messageBody . "") >= 0); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $this->client->deleteTopic($topic->getTopicName()); + $this->client->deleteQueue($queueName); + } + + public function testSubscribe() + { + $topicName = 'testSubscribeTopic' . uniqid(); + $topic = $this->prepareTopic($topicName); + + $subscriptionName = 'testSubscribeSubscription' . uniqid(); + $attributes = new SubscriptionAttributes($subscriptionName, 'http://127.0.0.1', 'BACKOFF_RETRY', 'XML'); + try + { + $topic->subscribe($attributes); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $attributes->setContentFormat('SIMPLIFIED'); + $res = $topic->subscribe($attributes); + $this->assertTrue(False, "Should throw SubscriptionAlreadyExist"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::SUBSCRIPTION_ALREADY_EXIST); + } + + $topic->unsubscribe($subscriptionName); + } + + public function testSubscriptionAttributes() + { + $topicName = "testSubscriptionAttributes" . uniqid(); + $subscriptionName = "testSubscriptionAttributes" . uniqid(); + $topic = $this->prepareTopic($topicName); + $this->prepareSubscription($topic, $subscriptionName); + + try + { + $res = $topic->getSubscriptionAttribute($subscriptionName); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($topicName, $res->getSubscriptionAttributes()->getTopicName()); + $this->assertEquals('BACKOFF_RETRY', $res->getSubscriptionAttributes()->getStrategy()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $strategy = 'EXPONENTIAL_DECAY_RETRY'; + $attributes = new UpdateSubscriptionAttributes($subscriptionName); + $attributes->setStrategy($strategy); + try + { + $res = $topic->setSubscriptionAttribute($attributes); + $this->assertTrue($res->isSucceed()); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + try + { + $res = $topic->getSubscriptionAttribute($subscriptionName); + $this->assertTrue($res->isSucceed()); + $this->assertEquals($res->getSubscriptionAttributes()->getStrategy(), $strategy); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + + $topic->unsubscribe($subscriptionName); + + try + { + $res = $topic->getSubscriptionAttribute($subscriptionName); + $this->assertTrue(False, "Should throw SubscriptionNotExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::SUBSCRIPTION_NOT_EXIST); + } + + try + { + $res = $topic->setSubscriptionAttribute($attributes); + $this->assertTrue(False, "Should throw SubscriptionNotExistException"); + } + catch (MnsException $e) + { + $this->assertEquals($e->getMnsErrorCode(), Constants::SUBSCRIPTION_NOT_EXIST); + } + } + + public function testListSubscriptions() + { + $topicName = "testListSubscriptionsTopic" . uniqid(); + $subscriptionNamePrefix = uniqid(); + $subscriptionName1 = $subscriptionNamePrefix . "testListTopic1"; + $subscriptionName2 = $subscriptionNamePrefix . "testListTopic2"; + + // 1. create Topic and Subscriptions + $topic = $this->prepareTopic($topicName); + $this->prepareSubscription($topic, $subscriptionName1); + $this->prepareSubscription($topic, $subscriptionName2); + + // 2. list subscriptions + $subscriptionName1Found = FALSE; + $subscriptionName2Found = FALSE; + + $count = 0; + $marker = ''; + while ($count < 2) { + try + { + $res = $topic->listSubscription(1, $subscriptionNamePrefix, $marker); + $this->assertTrue($res->isSucceed()); + + $subscriptionNames = $res->getSubscriptionNames(); + foreach ($subscriptionNames as $subscriptionName) + { + if ($subscriptionName == $subscriptionName1) + { + $subscriptionName1Found = TRUE; + } + elseif ($subscriptionName == $subscriptionName2) + { + $subscriptionName2Found = TRUE; + } + else + { + $this->assertTrue(FALSE, $subscriptionName . " Should not be here."); + } + } + + if ($count > 0) + { + $this->assertTrue($res->isFinished(), implode(", ", $subscriptionNames)); + } + $marker = $res->getNextMarker(); + } + catch (MnsException $e) + { + $this->assertTrue(FALSE, $e); + } + $count += 1; + } + + $this->assertTrue($subscriptionName1Found, $subscriptionName1 . " Not Found!"); + $this->assertTrue($subscriptionName2Found, $subscriptionName2 . " Not Found!"); + } +} + +?> diff --git a/aliyun-mns-php-sdk-1.3.3/Tests/aliyun-mns.ini b/aliyun-mns-php-sdk-1.3.3/Tests/aliyun-mns.ini new file mode 100644 index 0000000..2dcc3e1 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/Tests/aliyun-mns.ini @@ -0,0 +1,3 @@ +endpoint = +accessid = +accesskey = diff --git a/aliyun-mns-php-sdk-1.3.3/mns-autoloader.php b/aliyun-mns-php-sdk-1.3.3/mns-autoloader.php new file mode 100644 index 0000000..ca24056 --- /dev/null +++ b/aliyun-mns-php-sdk-1.3.3/mns-autoloader.php @@ -0,0 +1,187 @@ + __DIR__ . '/AliyunMNS/Client.php', + 'AliyunMNS\Config' => __DIR__ . '/AliyunMNS/Config.php', + 'AliyunMNS\Constants' => __DIR__ . '/AliyunMNS/Constants.php', + 'AliyunMNS\Queue' => __DIR__ . '/AliyunMNS/Queue.php', + 'AliyunMNS\Topic' => __DIR__ . '/AliyunMNS/Topic.php', + 'AliyunMNS\AsyncCallback' => __DIR__ . '/AliyunMNS/AsyncCallback.php', + 'AliyunMNS\Common\XMLParser' => __DIR__ . '/AliyunMNS/Common/XMLParser.php', + 'AliyunMNS\Exception\MnsException' => __DIR__ . '/AliyunMNS/Exception/MnsException.php', + 'AliyunMNS\Exception\BatchDeleteFailException' => __DIR__ . '/AliyunMNS/Exception/BatchDeleteFailException.php', + 'AliyunMNS\Exception\InvalidArgumentException' => __DIR__ . '/AliyunMNS/Exception/InvalidArgumentException.php', + 'AliyunMNS\Exception\MessageNotExistException' => __DIR__ . '/AliyunMNS/Exception/MessageNotExistException.php', + 'AliyunMNS\Exception\QueueAlreadyExistException' => __DIR__ . '/AliyunMNS/Exception/QueueAlreadyExistException.php', + 'AliyunMNS\Exception\ReceiptHandleErrorException' => __DIR__ . '/AliyunMNS/Exception/ReceiptHandleErrorException.php', + 'AliyunMNS\Exception\BatchSendFailException' => __DIR__ . '/AliyunMNS/Exception/BatchSendFailException.php', + 'AliyunMNS\Exception\MalformedXMLException' => __DIR__ . '/AliyunMNS/Exception/MalformedXMLException.php', + 'AliyunMNS\Exception\QueueNotExistException' => __DIR__ . '/AliyunMNS/Exception/QueueNotExistException.php', + 'AliyunMNS\Exception\TopicAlreadyExistException' => __DIR__ . '/AliyunMNS/Exception/TopicAlreadyExistException.php', + 'AliyunMNS\Exception\TopicNotExistException' => __DIR__ . '/AliyunMNS/Exception/TopicNotExistException.php', + 'AliyunMNS\Exception\SubscriptionAlreadyExistException' => __DIR__ . '/AliyunMNS/Exception/SubscriptionAlreadyExistException.php', + 'AliyunMNS\Exception\SubscriptionNotExistException' => __DIR__ . '/AliyunMNS/Exception/SubscriptionNotExistException.php', + 'AliyunMNS\Http\HttpClient' => __DIR__ . '/AliyunMNS/Http/HttpClient.php', + 'AliyunMNS\Model\DeleteMessageErrorItem' => __DIR__ . '/AliyunMNS/Model/DeleteMessageErrorItem.php', + 'AliyunMNS\Model\Message' => __DIR__ . '/AliyunMNS/Model/Message.php', + 'AliyunMNS\Model\QueueAttributes' => __DIR__ . '/AliyunMNS/Model/QueueAttributes.php', + 'AliyunMNS\Model\MessageAttributes' => __DIR__ . '/AliyunMNS/Model/MessageAttributes.php', + 'AliyunMNS\Model\MailAttributes' => __DIR__ . '/AliyunMNS/Model/MailAttributes.php', + 'AliyunMNS\Model\SmsAttributes' => __DIR__ . '/AliyunMNS/Model/SmsAttributes.php', + 'AliyunMNS\Model\BatchSmsAttributes' => __DIR__ . '/AliyunMNS/Model/BatchSmsAttributes.php', + 'AliyunMNS\Model\WebSocketAttributes' => __DIR__ . '/AliyunMNS/Model/WebSocketAttributes.php', + 'AliyunMNS\Model\TopicAttributes' => __DIR__ . '/AliyunMNS/Model/TopicAttributes.php', + 'AliyunMNS\Model\AccountAttributes' => __DIR__ . '/AliyunMNS/Model/AccountAttributes.php', + 'AliyunMNS\Model\SubscriptionAttributes' => __DIR__ . '/AliyunMNS/Model/SubscriptionAttributes.php', + 'AliyunMNS\Model\UpdateSubscriptionAttributes' => __DIR__ . '/AliyunMNS/Model/UpdateSubscriptionAttributes.php', + 'AliyunMNS\Model\SendMessageRequestItem' => __DIR__ . '/AliyunMNS/Model/SendMessageRequestItem.php', + 'AliyunMNS\Model\SendMessageResponseItem' => __DIR__ . '/AliyunMNS/Model/SendMessageResponseItem.php', + 'AliyunMNS\Signature\Signature' => __DIR__ . '/AliyunMNS/Signature/Signature.php', + 'AliyunMNS\Traits\MessageIdAndMD5' => __DIR__ . '/AliyunMNS/Traits/MessageIdAndMD5.php', + 'AliyunMNS\Traits\MessagePropertiesForPeek' => __DIR__ . '/AliyunMNS/Traits/MessagePropertiesForPeek.php', + 'AliyunMNS\Traits\MessagePropertiesForReceive' => __DIR__ . '/AliyunMNS/Traits/MessagePropertiesForReceive.php', + 'AliyunMNS\Traits\MessagePropertiesForSend' => __DIR__ . '/AliyunMNS/Traits/MessagePropertiesForSend.php', + 'AliyunMNS\Traits\MessagePropertiesForPublish' => __DIR__ . '/AliyunMNS/Traits/MessagePropertiesForPublish.php', + 'AliyunMNS\Requests\BaseRequest' => __DIR__ . '/AliyunMNS/Requests/BaseRequest.php', + 'AliyunMNS\Requests\BatchDeleteMessageRequest' => __DIR__ . '/AliyunMNS/Requests/BatchDeleteMessageRequest.php', + 'AliyunMNS\Requests\BatchPeekMessageRequest' => __DIR__ . '/AliyunMNS/Requests/BatchPeekMessageRequest.php', + 'AliyunMNS\Requests\BatchReceiveMessageRequest' => __DIR__ . '/AliyunMNS/Requests/BatchReceiveMessageRequest.php', + 'AliyunMNS\Requests\BatchSendMessageRequest' => __DIR__ . '/AliyunMNS/Requests/BatchSendMessageRequest.php', + 'AliyunMNS\Requests\ChangeMessageVisibilityRequest' => __DIR__ . '/AliyunMNS/Requests/ChangeMessageVisibilityRequest.php', + 'AliyunMNS\Requests\CreateQueueRequest' => __DIR__ . '/AliyunMNS/Requests/CreateQueueRequest.php', + 'AliyunMNS\Requests\DeleteMessageRequest' => __DIR__ . '/AliyunMNS/Requests/DeleteMessageRequest.php', + 'AliyunMNS\Requests\DeleteQueueRequest' => __DIR__ . '/AliyunMNS/Requests/DeleteQueueRequest.php', + 'AliyunMNS\Requests\GetQueueAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/GetQueueAttributeRequest.php', + 'AliyunMNS\Requests\GetAccountAttributesRequest' => __DIR__ . '/AliyunMNS/Requests/GetAccountAttributesRequest.php', + 'AliyunMNS\Requests\ListQueueRequest' => __DIR__ . '/AliyunMNS/Requests/ListQueueRequest.php', + 'AliyunMNS\Requests\PeekMessageRequest' => __DIR__ . '/AliyunMNS/Requests/PeekMessageRequest.php', + 'AliyunMNS\Requests\ReceiveMessageRequest' => __DIR__ . '/AliyunMNS/Requests/ReceiveMessageRequest.php', + 'AliyunMNS\Requests\SendMessageRequest' => __DIR__ . '/AliyunMNS/Requests/SendMessageRequest.php', + 'AliyunMNS\Requests\SetQueueAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/SetQueueAttributeRequest.php', + 'AliyunMNS\Requests\SetAccountAttributesRequest' => __DIR__ . '/AliyunMNS/Requests/SetAccountAttributesRequest.php', + 'AliyunMNS\Requests\CreateTopicRequest' => __DIR__ . '/AliyunMNS/Requests/CreateTopicRequest.php', + 'AliyunMNS\Requests\DeleteTopicRequest' => __DIR__ . '/AliyunMNS/Requests/DeleteTopicRequest.php', + 'AliyunMNS\Requests\ListTopicRequest' => __DIR__ . '/AliyunMNS/Requests/ListTopicRequest.php', + 'AliyunMNS\Requests\GetTopicAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/GetTopicAttributeRequest.php', + 'AliyunMNS\Requests\SetTopicAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/SetTopicAttributeRequest.php', + 'AliyunMNS\Requests\PublishMessageRequest' => __DIR__ . '/AliyunMNS/Requests/PublishMessageRequest.php', + 'AliyunMNS\Requests\SubscribeRequest' => __DIR__ . '/AliyunMNS/Requests/SubscribeRequest.php', + 'AliyunMNS\Requests\UnsubscribeRequest' => __DIR__ . '/AliyunMNS/Requests/UnsubscribeRequest.php', + 'AliyunMNS\Requests\GetSubscriptionAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/GetSubscriptionAttributeRequest.php', + 'AliyunMNS\Requests\SetSubscriptionAttributeRequest' => __DIR__ . '/AliyunMNS/Requests/SetSubscriptionAttributeRequest.php', + 'AliyunMNS\Requests\ListSubscriptionRequest' => __DIR__ . '/AliyunMNS/Requests/ListSubscriptionRequest.php', + 'AliyunMNS\Responses\BaseResponse' => __DIR__ . '/AliyunMNS/Responses/BaseResponse.php', + 'AliyunMNS\Responses\BatchDeleteMessageResponse' => __DIR__ . '/AliyunMNS/Responses/BatchDeleteMessageResponse.php', + 'AliyunMNS\Responses\BatchPeekMessageResponse' => __DIR__ . '/AliyunMNS/Responses/BatchPeekMessageResponse.php', + 'AliyunMNS\Responses\BatchReceiveMessageResponse' => __DIR__ . '/AliyunMNS/Responses/BatchReceiveMessageResponse.php', + 'AliyunMNS\Responses\BatchSendMessageResponse' => __DIR__ . '/AliyunMNS/Responses/BatchSendMessageResponse.php', + 'AliyunMNS\Responses\ChangeMessageVisibilityResponse' => __DIR__ . '/AliyunMNS/Responses/ChangeMessageVisibilityResponse.php', + 'AliyunMNS\Responses\CreateQueueResponse' => __DIR__ . '/AliyunMNS/Responses/CreateQueueResponse.php', + 'AliyunMNS\Responses\DeleteMessageResponse' => __DIR__ . '/AliyunMNS/Responses/DeleteMessageResponse.php', + 'AliyunMNS\Responses\DeleteQueueResponse' => __DIR__ . '/AliyunMNS/Responses/DeleteQueueResponse.php', + 'AliyunMNS\Responses\GetQueueAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/GetQueueAttributeResponse.php', + 'AliyunMNS\Responses\GetAccountAttributesResponse' => __DIR__ . '/AliyunMNS/Responses/GetAccountAttributesResponse.php', + 'AliyunMNS\Responses\ListQueueResponse' => __DIR__ . '/AliyunMNS/Responses/ListQueueResponse.php', + 'AliyunMNS\Responses\MnsPromise' => __DIR__ . '/AliyunMNS/Responses/MnsPromise.php', + 'AliyunMNS\Responses\PeekMessageResponse' => __DIR__ . '/AliyunMNS/Responses/PeekMessageResponse.php', + 'AliyunMNS\Responses\ReceiveMessageResponse' => __DIR__ . '/AliyunMNS/Responses/ReceiveMessageResponse.php', + 'AliyunMNS\Responses\SendMessageResponse' => __DIR__ . '/AliyunMNS/Responses/SendMessageResponse.php', + 'AliyunMNS\Responses\SetQueueAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/SetQueueAttributeResponse.php', + 'AliyunMNS\Responses\SetAccountAttributesResponse' => __DIR__ . '/AliyunMNS/Responses/SetAccountAttributesResponse.php', + 'AliyunMNS\Responses\CreateTopicResponse' => __DIR__ . '/AliyunMNS/Responses/CreateTopicResponse.php', + 'AliyunMNS\Responses\DeleteTopicResponse' => __DIR__ . '/AliyunMNS/Responses/DeleteTopicResponse.php', + 'AliyunMNS\Responses\ListTopicResponse' => __DIR__ . '/AliyunMNS/Responses/ListTopicResponse.php', + 'AliyunMNS\Responses\GetTopicAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/GetTopicAttributeResponse.php', + 'AliyunMNS\Responses\SetTopicAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/SetTopicAttributeResponse.php', + 'AliyunMNS\Responses\PublishMessageResponse' => __DIR__ . '/AliyunMNS/Responses/PublishMessageResponse.php', + 'AliyunMNS\Responses\SubscribeResponse' => __DIR__ . '/AliyunMNS/Responses/SubscribeResponse.php', + 'AliyunMNS\Responses\UnsubscribeResponse' => __DIR__ . '/AliyunMNS/Responses/UnsubscribeResponse.php', + 'AliyunMNS\Responses\GetSubscriptionAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/GetSubscriptionAttributeResponse.php', + 'AliyunMNS\Responses\SetSubscriptionAttributeResponse' => __DIR__ . '/AliyunMNS/Responses/SetSubscriptionAttributeResponse.php', + 'AliyunMNS\Responses\ListSubscriptionResponse' => __DIR__ . '/AliyunMNS/Responses/ListSubscriptionResponse.php', + 'GuzzleHttp\Client' => __DIR__ . '/GuzzleHttp/Client.php', + 'GuzzleHttp\ClientInterface' => __DIR__ . '/GuzzleHttp/ClientInterface.php', + 'GuzzleHttp\Cookie\CookieJar' => __DIR__ . '/GuzzleHttp/Cookie/CookieJar.php', + 'GuzzleHttp\Cookie\CookieJarInterface' => __DIR__ . '/GuzzleHttp/Cookie/CookieJarInterface.php', + 'GuzzleHttp\Cookie\FileCookieJar' => __DIR__ . '/GuzzleHttp/Cookie/FileCookieJar.php', + 'GuzzleHttp\Cookie\SessionCookieJar' => __DIR__ . '/GuzzleHttp/Cookie/SessionCookieJar.php', + 'GuzzleHttp\Cookie\SetCookie' => __DIR__ . '/GuzzleHttp/Cookie/SetCookie.php', + 'GuzzleHttp\Exception\BadResponseException' => __DIR__ . '/GuzzleHttp/Exception/BadResponseException.php', + 'GuzzleHttp\Exception\ClientException' => __DIR__ . '/GuzzleHttp/Exception/ClientException.php', + 'GuzzleHttp\Exception\ConnectException' => __DIR__ . '/GuzzleHttp/Exception/ConnectException.php', + 'GuzzleHttp\Exception\GuzzleException' => __DIR__ . '/GuzzleHttp/Exception/GuzzleException.php', + 'GuzzleHttp\Exception\RequestException' => __DIR__ . '/GuzzleHttp/Exception/RequestException.php', + 'GuzzleHttp\Exception\SeekException' => __DIR__ . '/GuzzleHttp/Exception/SeekException.php', + 'GuzzleHttp\Exception\ServerException' => __DIR__ . '/GuzzleHttp/Exception/ServerException.php', + 'GuzzleHttp\Exception\TooManyRedirectsException' => __DIR__ . '/GuzzleHttp/Exception/TooManyRedirectsException.php', + 'GuzzleHttp\Exception\TransferException' => __DIR__ . '/GuzzleHttp/Exception/TransferException.php', + 'GuzzleHttp\functions' => __DIR__ . '/GuzzleHttp/functions.php', + 'GuzzleHttp\functions_include' => __DIR__ . '/GuzzleHttp/functions_include.php', + 'GuzzleHttp\Handler\CurlFactory' => __DIR__ . '/GuzzleHttp/Handler/CurlFactory.php', + 'GuzzleHttp\Handler\CurlFactoryInterface' => __DIR__ . '/GuzzleHttp/Handler/CurlFactoryInterface.php', + 'GuzzleHttp\Handler\CurlHandler' => __DIR__ . '/GuzzleHttp/Handler/CurlHandler.php', + 'GuzzleHttp\Handler\CurlMultiHandler' => __DIR__ . '/GuzzleHttp/Handler/CurlMultiHandler.php', + 'GuzzleHttp\Handler\EasyHandle' => __DIR__ . '/GuzzleHttp/Handler/EasyHandle.php', + 'GuzzleHttp\Handler\MockHandler' => __DIR__ . '/GuzzleHttp/Handler/MockHandler.php', + 'GuzzleHttp\Handler\Proxy' => __DIR__ . '/GuzzleHttp/Handler/Proxy.php', + 'GuzzleHttp\Handler\StreamHandler' => __DIR__ . '/GuzzleHttp/Handler/StreamHandler.php', + 'GuzzleHttp\HandlerStack' => __DIR__ . '/GuzzleHttp/HandlerStack.php', + 'GuzzleHttp\MessageFormatter' => __DIR__ . '/GuzzleHttp/MessageFormatter.php', + 'GuzzleHttp\Middleware' => __DIR__ . '/GuzzleHttp/Middleware.php', + 'GuzzleHttp\Pool' => __DIR__ . '/GuzzleHttp/Pool.php', + 'GuzzleHttp\PrepareBodyMiddleware' => __DIR__ . '/GuzzleHttp/PrepareBodyMiddleware.php', + 'GuzzleHttp\Promise\AggregateException' => __DIR__ . '/GuzzleHttp/Promise/AggregateException.php', + 'GuzzleHttp\Promise\CancellationException' => __DIR__ . '/GuzzleHttp/Promise/CancellationException.php', + 'GuzzleHttp\Promise\EachPromise' => __DIR__ . '/GuzzleHttp/Promise/EachPromise.php', + 'GuzzleHttp\Promise\FulfilledPromise' => __DIR__ . '/GuzzleHttp/Promise/FulfilledPromise.php', + 'GuzzleHttp\Promise\functions' => __DIR__ . '/GuzzleHttp/Promise/functions.php', + 'GuzzleHttp\Promise\functions_include' => __DIR__ . '/GuzzleHttp/Promise/functions_include.php', + 'GuzzleHttp\Promise\Promise' => __DIR__ . '/GuzzleHttp/Promise/Promise.php', + 'GuzzleHttp\Promise\PromiseInterface' => __DIR__ . '/GuzzleHttp/Promise/PromiseInterface.php', + 'GuzzleHttp\Promise\PromisorInterface' => __DIR__ . '/GuzzleHttp/Promise/PromisorInterface.php', + 'GuzzleHttp\Promise\RejectedPromise' => __DIR__ . '/GuzzleHttp/Promise/RejectedPromise.php', + 'GuzzleHttp\Promise\RejectionException' => __DIR__ . '/GuzzleHttp/Promise/RejectionException.php', + 'GuzzleHttp\Promise\TaskQueue' => __DIR__ . '/GuzzleHttp/Promise/TaskQueue.php', + 'GuzzleHttp\Psr7\AppendStream' => __DIR__ . '/GuzzleHttp/Psr7/AppendStream.php', + 'GuzzleHttp\Psr7\BufferStream' => __DIR__ . '/GuzzleHttp/Psr7/BufferStream.php', + 'GuzzleHttp\Psr7\CachingStream' => __DIR__ . '/GuzzleHttp/Psr7/CachingStream.php', + 'GuzzleHttp\Psr7\DroppingStream' => __DIR__ . '/GuzzleHttp/Psr7/DroppingStream.php', + 'GuzzleHttp\Psr7\FnStream' => __DIR__ . '/GuzzleHttp/Psr7/FnStream.php', + 'GuzzleHttp\Psr7\functions' => __DIR__ . '/GuzzleHttp/Psr7/functions.php', + 'GuzzleHttp\Psr7\functions_include' => __DIR__ . '/GuzzleHttp/Psr7/functions_include.php', + 'GuzzleHttp\Psr7\InflateStream' => __DIR__ . '/GuzzleHttp/Psr7/InflateStream.php', + 'GuzzleHttp\Psr7\LazyOpenStream' => __DIR__ . '/GuzzleHttp/Psr7/LazyOpenStream.php', + 'GuzzleHttp\Psr7\LimitStream' => __DIR__ . '/GuzzleHttp/Psr7/LimitStream.php', + 'GuzzleHttp\Psr7\MessageTrait' => __DIR__ . '/GuzzleHttp/Psr7/MessageTrait.php', + 'GuzzleHttp\Psr7\MultipartStream' => __DIR__ . '/GuzzleHttp/Psr7/MultipartStream.php', + 'GuzzleHttp\Psr7\NoSeekStream' => __DIR__ . '/GuzzleHttp/Psr7/NoSeekStream.php', + 'GuzzleHttp\Psr7\PumpStream' => __DIR__ . '/GuzzleHttp/Psr7/PumpStream.php', + 'GuzzleHttp\Psr7\Request' => __DIR__ . '/GuzzleHttp/Psr7/Request.php', + 'GuzzleHttp\Psr7\Response' => __DIR__ . '/GuzzleHttp/Psr7/Response.php', + 'GuzzleHttp\Psr7\Stream' => __DIR__ . '/GuzzleHttp/Psr7/Stream.php', + 'GuzzleHttp\Psr7\StreamDecoratorTrait' => __DIR__ . '/GuzzleHttp/Psr7/StreamDecoratorTrait.php', + 'GuzzleHttp\Psr7\StreamWrapper' => __DIR__ . '/GuzzleHttp/Psr7/StreamWrapper.php', + 'GuzzleHttp\Psr7\Uri' => __DIR__ . '/GuzzleHttp/Psr7/Uri.php', + 'GuzzleHttp\RedirectMiddleware' => __DIR__ . '/GuzzleHttp/RedirectMiddleware.php', + 'GuzzleHttp\RequestOptions' => __DIR__ . '/GuzzleHttp/RequestOptions.php', + 'GuzzleHttp\RetryMiddleware' => __DIR__ . '/GuzzleHttp/RetryMiddleware.php', + 'GuzzleHttp\TransferStats' => __DIR__ . '/GuzzleHttp/TransferStats.php', + 'GuzzleHttp\UriTemplate' => __DIR__ . '/GuzzleHttp/UriTemplate.php', + 'Psr\Http\Message\MessageInterface' => __DIR__ . '/Psr/Http/Message/MessageInterface.php', + 'Psr\Http\Message\RequestInterface' => __DIR__ . '/Psr/Http/Message/RequestInterface.php', + 'Psr\Http\Message\ResponseInterface' => __DIR__ . '/Psr/Http/Message/ResponseInterface.php', + 'Psr\Http\Message\ServerRequestInterface' => __DIR__ . '/Psr/Http/Message/ServerRequestInterface.php', + 'Psr\Http\Message\StreamInterface' => __DIR__ . '/Psr/Http/Message/StreamInterface.php', + 'Psr\Http\Message\UploadedFileInterface' => __DIR__ . '/Psr/Http/Message/UploadedFileInterface.php', + 'Psr\Http\Message\UriInterface' => __DIR__ . '/Psr/Http/Message/UriInterface.php', +); + +spl_autoload_register(function ($class) use ($mapping) { + if (isset($mapping[$class])) { + require $mapping[$class]; + } +}, true); + +require __DIR__ . '/GuzzleHttp/functions.php'; +require __DIR__ . '/GuzzleHttp/Psr7/functions.php'; +require __DIR__ . '/GuzzleHttp/Promise/functions.php'; diff --git a/aliyun-oss-php-sdk-2.2.2/.coveralls.yml b/aliyun-oss-php-sdk-2.2.2/.coveralls.yml new file mode 100644 index 0000000..850cc59 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/.coveralls.yml @@ -0,0 +1,2 @@ +coverage_clover: coverage.xml +json_path: coverage.json diff --git a/aliyun-oss-php-sdk-2.2.2/.gitignore b/aliyun-oss-php-sdk-2.2.2/.gitignore new file mode 100644 index 0000000..7cdb514 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/.gitignore @@ -0,0 +1,8 @@ +vendor +composer.lock +doc +output +.idea +.buildpath +.project +.settings diff --git a/aliyun-oss-php-sdk-2.2.2/.travis.yml b/aliyun-oss-php-sdk-2.2.2/.travis.yml new file mode 100644 index 0000000..8c433e7 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/.travis.yml @@ -0,0 +1,20 @@ +language: php +php: + - 7.0 + - 5.6 + - 5.5 + - 5.4 + - 5.3 +install: + - composer self-update + - composer install --no-interaction +script: + - php vendor/bin/phpunit +after_success: + - php vendor/bin/coveralls -v +env: + global: + - secure: SzmQ854lQmhV6ZkAG7lQNTY3CkazrXnDSb6VMwPU/sdaLGxPO159AW3fJS5d0sO/XN1P8x5WNkoA4i9soDlLBRibEEISNUM/2EMnpszsRymZ9o97PrS2IgORXTUL/OF+rpATzyNVB2p+2l9hBLiGf17exMSA5iOeY7W6E+VKPGi8TFykgbGUnLKU0h1hV3rzmtfGjOXcSpvYU/hxeZD/J/+6m5Gic9b/pNS+AbfTj7Y7Ru9tNsnyUP29V/vtEYtpQir3ZxQiSiUv9idybgGnJBOMYydJofb/mpFYHhYLSWqtMKGNLpeawmqs4z8S1Tvx5U5uzW5+h/mpzhvBaFlWGpm8t89BQxun5LVX5NiYCrV7TqaLitGp1cSpMjMDnrnSTNzk1exVz+rWZZcWS7yB9ULYA681GA8StXWk167qB7Y30iK1dFK3+2mDN2cEY+qLs8+bupDowQ4eOM+eqfhxX8F8+ouKcKomETsjiIwL+CUsIe6wjvnYFWb1YlRhbsI75bblHApflohnt6gVSJ78ZPqID+u2oUMjmIWXLTnRR2Y2tgEW8uqHeIoQ8BBntLdQDmv0BO4FpnGQIwrUUwQYeNzEM0DOr3hWZhyDR6Xvl+9H0l52xjANaSqpuTZfC3zmeFTG7kIjydvxNePRrony6XAawL9BvI7aKWuVF6YVjPM= + - secure: nEhsU8aUQqsAJeuger+boh51oTpeo4YNG7vUWbKxdwVDIrcLb+l7r7RvTlxU7mt8IZTWwicgri18mh+Wi04BwX4ulBA1SCs8jPbL51KEo5izoDGGtLSd2fuPHdslYSrwagrvq90EPnDT/7fHWn/TAoT+rueZzjNyCu5IGSgL3GnXaUThsJ82NMePL2YRdP4Q1qmtZPRFBOkOQ6F0heuV8fw8sLyTO3txaCQum9YneGxrWxOl/E8zB0qtlnPwLE8ogaHZMQh2/jThmTbI5UqwRTxV4f0qoD5eJYH+j0fslsSAjsg/HPnSuVcnccK3zSU+s2sV4dPCcISzECJvZEObwipfxOGhdqt5gMcxHhn8qVsbT97iIh106pG/BJCDgQd2EeVW8WfCi6cCuCKIMipvVkMypkmjQHWU1XaqPzILl7g5diW9Ctp2C4Akq5dYdrdu8IrnVK1ShtkQVaWU+S/Bht8VU5gYP7olPW/GdTz7sceU1NOIC4NPXqmWKbfavR98U5dkHMLMvzABYL1Q87h+KhPD1c14NUyw3YENUW7REiF/X5lERRm5H0kJ/1JqAa+AgeHQEGmPVuZV2s/na4b0S1479QRVmSM/6ZzXQpU+Y8jCRfETpUFA4S331369kirHgCqDlxyIntuEKrzivD02/O+5C3eJ0WHRz6QsN2/R4qg= + - secure: ZTvzNXEZP4efl+a/3VGMmdabfUQp83v5/lecMns039Ro7UuZYPdtbPtpPnpjaTI6Htd22A4Rva5BU/3JCQJAyQvpbKNn5sGou2SmfQu3o0SyhggSB7gWjYAf707aW1j4bHYfP8IjDS5NjuVk3AqXeNSUuLRUXRmwSOB0lSYiRhiTJY+pUdBl382Hx4NbhIU/gmOzRoJCs7coTip8IURXYEHPi5dnDWluajxI+TgNXFccSgEleeQDJajYgXmpLb2EhSj8piipOnVgaCEE5bh5fbp32024Qq38SGHKcbfnwj2IInpZpZESJknRKoqAlFjdOJhork82dBcvAr5JxCBZKx5IuwXcTjxkQ6tRtBeqhPLPFuX3MQ8WrtU+wniPM0RCH/VoFkUKO7JGQDwmoi2AKago4PsuDs4P6Y6CeuOVpcso731GwwMNhIJcyrJJivXprQNEGsEw+9wLjU1qNYs6IIA3S/gPzFrNbdX5Wf8vxt0vLpgYvBNtPnLMejMtknuyfVzf5iKuVVoGPDTEz+ajs06+jfoPfm/4sLTaLghuVH7Adm74OpF769JQNnQYKwJuu4bNlcbLJChulCEMBOx7myqo/9O6RCTuqzHaGmVWNot4RGqRFHgJGl/JJf0WpAVitbhbRH3kGoyKb6jFM74CJbPsE7OORlJLDC3cdD3C8Pk= + - secure: Qr5NR4CVzBKCQgRgMH0x772TPJ1+brx3UCvtRNu8fi4j3p8bz+HDMjBaBDSFmEB09nunLI55/8mj88/5GXmnpFs8+CPTkcW+QZOcxg3cxpI4SNmxoB12/ZawlFHAqSUaRRE7RUWVkY3KL8tIGjEZcFyUBQ1DVNX3OMpiKs3NLtHa7oUIknyBxdSokm4kpLhSXYe7WmO0vhuZbMZE0S1EISToiBS6AdhGUEbTLJ/vNsIDY07fu6+Vh3HxVbyUFPqUZGlkZpQ+2xMJ3kiqPBMrXtRF/IhhPjORDil6Ns9SQ8/AAlaCddvYvRaT4Pjv2/aX+t3l28qI1qmryPtWXpce5UXecWGYqdRpSJc6Y/pEt4m4FeeGoEFWnSPGIs7FRmeiis8q2rojGZ18i4vI/k4iHmqEBnTlMp3SWnRb9L1adJ8ZAWln8aC88gkQXm67w7+1CxLycerbYj9H1ugqHENuHcxv4uHUcZgEENX3EWatu8i9+K2IUuU/2zcmpu7qtsziYcoyW8DOOmYpJfXGMLtmF9+pqp/Tp6i0tltFSEfmY3N8o7xvv3enLvFHsjL+3ElFdd1blUPSrvZJHgA9M3lJ+QF1RJZCpJqgPlQ0XOZK1Bf4P46zpEj01wKaK4JQrkLPRXhbBOuIJn5O6WlFJyPX4+SaBfwTzb4AvM4aUg2TgTg= diff --git a/aliyun-oss-php-sdk-2.2.2/CHANGELOG.md b/aliyun-oss-php-sdk-2.2.2/CHANGELOG.md new file mode 100644 index 0000000..407f88a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/CHANGELOG.md @@ -0,0 +1,74 @@ +# ChangeLog - Aliyun OSS SDK for PHP + +## v2.2.2 / 2017-01-18 + +* 瑙e喅鍦╬hp7涓婅繍琛岃繛鎺ユ暟鍜屽唴瀛榖ug + +## v2.2.1 / 2016-12-01 + +* 绂佹http curl鑷姩濉厖Accept-Encoding + +## v2.2.0 / 2016-11-22 + +* 淇PutObject/CompleteMultipartUpload鐨勮繑鍥炲奸棶棰(#26) + +## v2.1.0 / 2016-11-12 + +* 澧炲姞[RTMP](https://help.aliyun.com/document_detail/44297.html)鎺ュ彛 +* 澧炲姞鏀寔[鍥剧墖鏈嶅姟](https://help.aliyun.com/document_detail/44686.html) + +## v2.0.7 / 2016-06-17 + +* Support append object + +## v2.0.6 + +* Trim access key id/secret and endpoint +* Refine tests and setup travis CI + +## v2.0.5 + +* 澧炲姞Add/Delete/Get BucketCname鎺ュ彛 + +## v2.0.4 + +* 澧炲姞Put/Get Object Acl鎺ュ彛 + +## v2.0.3 + +* 淇Util涓殑甯搁噺瀹氫箟鍦ㄤ綆浜5.6鐨凱HP鐗堟湰涓姤閿欑殑闂 + +## v2.0.2 + +* 淇multipart涓婁紶鏃舵棤娉曟寚瀹欳ontent-Type鐨勯棶棰 + +## v2.0.1 + +* 澧炲姞瀵筁istObjects/ListMultipartUploads鏃剁壒娈婂瓧绗︾殑澶勭悊 +* 鎻愪緵鎺ュ彛鑾峰彇OssException涓殑璇︾粏淇℃伅 + + +## 2015.11.25 + +* **澶х増鏈崌绾э紝涓嶅啀鍏煎浠ュ墠鎺ュ彛锛屾柊鐗堟湰瀵规槗鐢ㄦу仛浜嗗緢澶х殑鏀硅繘锛屽缓璁敤鎴疯縼绉诲埌鏂扮増鏈** + +## 淇敼鍐呭 + +* 涓嶅啀鏀寔PHP 5.2鐗堟湰 + +### 鏂板鍐呭 + +* 寮曞叆鍛藉悕绌洪棿 +* 鎺ュ彛鍛藉悕淇锛岄噰鐢ㄩ┘宄板紡鍛藉悕 +* 鎺ュ彛鍏ュ弬淇敼锛屾妸甯哥敤鍙傛暟浠嶰ptions鍙傛暟涓彁鍑烘潵 +* 鎺ュ彛杩斿洖缁撴灉淇敼锛屽杩斿洖缁撴灉杩涜澶勭悊锛岀敤鎴峰彲浠ョ洿鎺ュ緱鍒板鏄撳鐞嗙殑鏁版嵁缁撴瀯銆 +* OssClient鐨勬瀯閫犲嚱鏁板彉鏇 +* 鏀寔CNAME鍜孖P鏍煎紡鐨凟ndpoint鍦板潃 +* 閲嶆柊鏁寸悊sample鏂囦欢缁勭粐缁撴瀯锛屼娇鐢╢unction缁勭粐鍔熻兘鐐 +* 澧炲姞璁剧疆杩炴帴瓒呮椂锛岃姹傝秴鏃剁殑鎺ュ彛 +* 鍘绘帀Object Group鐩稿叧鐨勫凡缁忚繃鏃剁殑鎺ュ彛 +* OssException涓殑message鏀逛负鑻辨枃 + +### 闂淇 + +* object鍚嶇О鏍¢獙涓嶅畬澶 diff --git a/aliyun-oss-php-sdk-2.2.2/LICENSE.md b/aliyun-oss-php-sdk-2.2.2/LICENSE.md new file mode 100644 index 0000000..3183de8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/LICENSE.md @@ -0,0 +1,21 @@ +#The MIT License (MIT) + +Copyright (c) ali-sdk and other 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. \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/README.md b/aliyun-oss-php-sdk-2.2.2/README.md new file mode 100644 index 0000000..1549dda --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/README.md @@ -0,0 +1,152 @@ +# Aliyun 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) + +## 姒傝堪 + +闃块噷浜戝璞″瓨鍌紙Object Storage Service锛岀畝绉癘SS锛夛紝鏄樋閲屼簯瀵瑰鎻愪緵鐨勬捣閲忋佸畨鍏ㄣ佷綆鎴愭湰銆侀珮鍙潬鐨勪簯瀛樺偍鏈嶅姟銆傜敤鎴峰彲浠ラ氳繃璋冪敤API锛屽湪浠讳綍搴旂敤銆佷换浣曟椂闂淬佷换浣曞湴鐐逛笂浼犲拰涓嬭浇鏁版嵁锛屼篃鍙互閫氳繃鐢ㄦ埛Web鎺у埗鍙板鏁版嵁杩涜绠鍗曠殑绠$悊銆侽SS閫傚悎瀛樻斁浠绘剰鏂囦欢绫诲瀷锛岄傚悎鍚勭缃戠珯銆佸紑鍙戜紒涓氬強寮鍙戣呬娇鐢ㄣ + + +## 杩愯鐜 +- PHP 5.3+ +- cURL extension + +鎻愮ず锛 + +- Ubuntu涓嬪彲浠ヤ娇鐢╝pt-get鍖呯鐞嗗櫒瀹夎php鐨刢URL鎵╁睍 `sudo apt-get install php5-curl` + +## 瀹夎鏂规硶 + +1. 濡傛灉鎮ㄩ氳繃composer绠$悊鎮ㄧ殑椤圭洰渚濊禆锛屽彲浠ュ湪浣犵殑椤圭洰鏍圭洰褰曡繍琛岋細 + + $ composer require aliyuncs/oss-sdk-php + + 鎴栬呭湪浣犵殑`composer.json`涓0鏄庡Aliyun OSS SDK for PHP鐨勪緷璧栵細 + + "require": { + "aliyuncs/oss-sdk-php": "~2.0" + } + + 鐒跺悗閫氳繃`composer install`瀹夎渚濊禆銆俢omposer瀹夎瀹屾垚鍚庯紝鍦ㄦ偍鐨凱HP浠g爜涓紩鍏ヤ緷璧栧嵆鍙細 + + require_once __DIR__ . '/vendor/autoload.php'; + +2. 鎮ㄤ篃鍙互鐩存帴涓嬭浇宸茬粡鎵撳寘濂界殑[phar鏂囦欢][releases-page]锛岀劧鍚庡湪浣 + 鐨勪唬鐮佷腑寮曞叆杩欎釜鏂囦欢鍗冲彲锛 + + require_once '/path/to/oss-sdk-php.phar'; + +3. 涓嬭浇SDK婧愮爜锛屽湪鎮ㄧ殑浠g爜涓紩鍏DK鐩綍涓嬬殑`autoload.php`鏂囦欢锛 + + require_once '/path/to/oss-sdk/autoload.php'; + +## 蹇熶娇鐢 + +### 甯哥敤绫 + +| 绫诲悕 | 瑙i噴 | +|:------------------|:------------------------------------| +|OSS\OssClient | OSS瀹㈡埛绔被锛岀敤鎴烽氳繃OssClient鐨勫疄渚嬭皟鐢ㄦ帴鍙 | +|OSS\Core\OssException | OSS寮傚父绫伙紝鐢ㄦ埛鍦ㄤ娇鐢ㄧ殑杩囩▼涓紝鍙渶瑕佹敞鎰忚繖涓紓甯竱 + +### OssClient鍒濆鍖 + +SDK鐨凮SS鎿嶄綔閫氳繃OssClient绫诲畬鎴愮殑锛屼笅闈唬鐮佸垱寤轰竴涓狾ssClient瀵硅薄: + +```php +"; ; +$accessKeySecret = "<鎮ㄤ粠OSS鑾峰緱鐨凙ccessKeySecret>"; +$endpoint = "<鎮ㄩ夊畾鐨凮SS鏁版嵁涓績璁块棶鍩熷悕锛屼緥濡俹ss-cn-hangzhou.aliyuncs.com>"; +try { + $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint); +} catch (OssException $e) { + print $e->getMessage(); +} +``` + +### 鏂囦欢鎿嶄綔 + +鏂囦欢(鍙堢О瀵硅薄,Object)鏄疧SS涓渶鍩烘湰鐨勬暟鎹崟鍏冿紝鎮ㄥ彲浠ユ妸瀹冪畝鍗曞湴鐞嗚В涓烘枃浠讹紝鐢ㄤ笅闈唬鐮佸彲浠ュ疄鐜颁竴涓狾bject鐨勪笂浼狅細 + +```php +"; +$object = "<鎮ㄤ娇鐢ㄧ殑Object鍚嶅瓧锛屾敞鎰忓懡鍚嶈鑼>"; +$content = "Hello, OSS!"; // 涓婁紶鐨勬枃浠跺唴瀹 +try { + $ossClient->putObject($bucket, $object, $content); +} catch (OssException $e) { + print $e->getMessage(); +} +``` + +### 瀛樺偍绌洪棿鎿嶄綔 + +瀛樺偍绌洪棿(鍙堢ОBucket)鏄竴涓敤鎴风敤鏉ョ鐞嗘墍瀛樺偍Object鐨勫瓨鍌ㄧ┖闂,瀵逛簬鐢ㄦ埛鏉ヨ鏄竴涓鐞哋bject鐨勫崟鍏冿紝鎵鏈夌殑Object閮藉繀椤婚毝灞炰簬鏌愪釜Bucket銆傛偍鍙互鎸夌収涓嬮潰鐨勪唬鐮佹柊寤轰竴涓狟ucket锛 + +```php +"; +try { + $ossClient->createBucket($bucket); +} catch (OssException $e) { + print $e->getMessage(); +} +``` + +### 杩斿洖缁撴灉澶勭悊 + +OssClient鎻愪緵鐨勬帴鍙h繑鍥炶繑鍥炴暟鎹垎涓轰袱绉嶏細 + +* Put锛孌elete绫绘帴鍙o紝鎺ュ彛杩斿洖null锛屽鏋滄病鏈塐ssException锛屽嵆鍙涓烘搷浣滄垚鍔 +* Get锛孡ist绫绘帴鍙o紝鎺ュ彛杩斿洖瀵瑰簲鐨勬暟鎹紝濡傛灉娌℃湁OssException锛屽嵆鍙涓烘搷浣滄垚鍔燂紝涓句釜渚嬪瓙锛 + +```php +listBuckets(); +$bucketList = $bucketListInfo->getBucketList(); +foreach($bucketList as $bucket) { + print($bucket->getLocation() . "\t" . $bucket->getName() . "\t" . $bucket->getCreatedate() . "\n"); +} +``` +涓婇潰浠g爜涓殑$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` + +## 璐$尞浠g爜 + +0. 寮鍙戞祦绋嬪弬鑰冿細https://github.com/rockuw/oss-sdk-status#development-oss-members-only +1. 鎻愪氦浠g爜鍚庯紝纭繚travis CI鏄疨ASS鐨 +2. 姣忓彂甯冧竴涓柊鐨勭増鏈細 + - 杩愯`build-phar.sh`鐢熸垚鐩稿簲鐨刾har鍖咃紙闇瑕佸畨瑁匸phar-composer][phar-composer]) + - 鍦╗Release椤甸潰][releases-page]鍙戝竷涓涓増鏈 + - 灏嗙敓鎴愮殑phar鍖呬笂浼犲埌鐩稿簲鐨凴elease涓嬮潰 + +## 鑱旂郴鎴戜滑 + +- [闃块噷浜慜SS瀹樻柟缃戠珯](http://oss.aliyun.com) +- [闃块噷浜慜SS瀹樻柟璁哄潧](http://bbs.aliyun.com) +- [闃块噷浜慜SS瀹樻柟鏂囨。涓績](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/aliyun-oss-php-sdk-2.2.2/autoload.php b/aliyun-oss-php-sdk-2.2.2/autoload.php new file mode 100644 index 0000000..505bf7c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/autoload.php @@ -0,0 +1,11 @@ +=5.3" + }, + "require-dev" : { + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~1.0" + }, + "minimum-stability": "stable", + "autoload": { + "psr-4": {"OSS\\": "src/OSS"} + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/example.jpg b/aliyun-oss-php-sdk-2.2.2/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffd46a2f81b1fe020ed0673f27711124110eed3f GIT binary patch literal 21839 zcmbT6Wl$W^*X9Qg1PL+;GDsLCSb{S+f#B{iNN|VXG6aGL1|NKa1lJkdB@o=*CAdrQ zKnU6V-*;=bYCrAn>FWN_eY@-aTJAmPdHV0d-*vzy*ad2>OadGkRiShBDJi#X;A|fCLl0AP8B%`2sLH!c+f|8z!f`XQnmYxyJ%*^~8 z#K!rGiQ^>`Gt+-Ag7NQE{3rON`1qtuloXUq|IhKa6F~X|<0(c076u~#lN1As6yt9X zfc{@UaWMWX0RJ;EFtM<4aPgkt6FmLbp#B*E69Wqi6B`TXAH%=a0soEzut{;qUh=%f zCD$~^V|1h74NlB`0+z1s0%}eEWa6`M55XsR{(_Q|5hwgY@C-oxMXiN@yy-G8F_=BP)H}{R(Iip z`LuolE!-ywo-^@pFrWVi?Z3$W@4!O-zsUX<*#G8Q0uW+h{CjvI+$K+I)$tsJ~rz^hZo@j`1KWf=EcjNIVSyfn`vb4CeiA(Y>&N9&;J z4(PSS|H*@N&76CkaOw~p=YdQW9y~LQVv#k7lfq-k?bH__v+$orI^@*`@gU#x(|H(* zm@T?0CQcQ-qa4+W?JDPB5uLeMc&((B>s#aS_7xb#{xD0dilJmcIfFaf&S7n~swUWc zqP%P%>|#zyWq;nv<=CFyuT*y9Cq@uB%L9q8Z{?Vo8!dbU>{eUUnYqgvMe+u5JFo&7 z^D-v7OU%5=@jsHl_Qd8Wu3F4j<~jF)qm~6i7-el}ns#f{jp)P&d6at#@%py9NL+mm zq#uSOxj}A5!|w!2sVlMuf$Ytu*XA#AkvDf@ zdO|8_qbDrjc4bfxGJ3#ix`z`_MkeHGs-DViaVW9`tMp8(AfnbzpVexhBtsqs8}1eO zA*NF#n!pRN7kVS3<`6qAQ0DVAG#HLz&pg+|wOc+>H)~cL!(%M3wW+g?;XcqsauVYh zvuFZ7yAG7tG~m_0k9xb+F1|_F=2hm!2`ZMDe5P=s!b9f8YwK)X7GW z&Afe11w=eFSqVq?`7upyF(uQLfZ)4}8V|QP4|V0PBOOyVz?sUES>vc!sRg6Sg_&V* zg(E{!ux|K@xC1Q{s0hBAxQ3SXCgvb_qb#*ZFWs&6B&V(LtTHBMKXxxC*v)NSj&nFP zC4p|0ey(COSQa(Vey5BaQI(-R^gT7Gm^5Rb7X zo8TMQv5b9Yba&h=`8#=~A0k{^1K{U1FPH#L+k1sfEwtP3qPUo)aTVC*f#b&xsLjFZ zv6c?@iZ6X0CZJTS*D6+)ak9FIQG=_p=$%zOwrFxeS4X)u?TKmR09LO!*UfZNOae#V zcV+me?2dY!+WX41pf>4Ic6HOtxayCp7$i0CHQp1|uthJ84u@c9JC`4oRT6SR$dap+Rv<2coZ zqd8ZQ7(t@*g(H=Pp%RN2%m&7##^0VV>IhpJ=RmM~2TS#F(4$fYJW7jQAj^9C3VO60 zCX5;|onYx0q&nH6rXuC1MFJ8fx2a^3R_IRJ+?Qq}I306royX;Y)D=+ms^(ia{HQHR zUMWtQ!C$wVa!{DZO6oxExve-yo`~<`iLmEJc1n4los7H$C$TV)X0hf5om(Ltm!fB+ zAwuBV86LCuO#(N@`N_Xr{ zndh!uB#iZiB#z9K@DWu0!F)@>0R@lPm-wGC=ce@=@fc2xxSOofKYU*}1@QEJqF$b; zqvcZw3qSy4)~yl;QNLdEe6OS{hToK!=gQib3&lRaC0Cm`sjz$sa%eLP;wG|7XEgsT zYkta3U(Zfhjdi5@+d*9$wxW@7MmOZyr~_@)(EM*`%u zr(l`j9}Z_@&g2X;Lr=o@ymBI-HU(3|PO5ciUd;G31~WI41pelVy(gnkrHz4%&HK;a z|2T}%L~Y^o_NdLgZ`%@kCXq6r?CkX6Br(=@U6h081_0kYor*D)^I#SUdcR}_-&cGgy@XTF>H>2vu~%_Md3_m zxAg-QuGn>^AsXV){LI+jWbjBus8X|fTq(Q>ML{aW8NEw;(5=-E%MJ0@aVi!t9b(+I z$+<~nMJfI%?1%OVQ$%Rtu^{szik!0KXGCH>u^yk2z!~|Ex||~P!nIuIM>^Zz zn64`>eG&&tOxNkImBQg#{NYC)qvCI9XdNlX$D!G5YP>|maN5y*0X$>Eb112r)i&td zINBsVl3^}9qDY0>N>(VRqgzyk;R=uZ|xdFg{H1TycR)DelOus@r{5SX`&7jyC|-kWY(H8t)e*w z$%(V<2W`PY4%=^;%tsw$F>#KNprsdFW2T#<6F)_!8N*XL91dP{rNlcF-58$8H~RA$ z6R>Z{^ZUWoft(FtoFfsS^#P*$HB?7=VX zVvss{>fDJu*daXiLHBXqb&X<#Kck7#~Te_iH;O=3(*kl z9?OKzIqUF=X5D2m-goklJ=TSLy&knP!EJ(M_=h~!=$#`yjIy%FdS1moHXia&IS1~? ztJVX+!_u> zC32|MTnAHq&qNmWeWeFo@T{A$dQY{^ksWGsJf0)w@pCEw(*`j^7T~!17eHeOUG{|^idqz6Y*(uM1;kgjyIH)X{5=Wb z(Ab#;*+(4+3fTMc_XT;QB^}}dwLYf?uto4?%i2-8^|28efZz^!oA6MjP!A4nNOc^Gt0T<$j0p<^GbzD86kSH?_$G zd58HN)vZEZXa2;gQk`gOYde=r;v$r+@5sU^!}Or*SDh_YPxFgxMX>`i0r zDZbyd0__$gn zW2f`RU3jhn)x_-yxUznkFUT+fEOohUiT=p#(jb$kH~qQjk{Urppo3_kt1xhH;?M=c zbw3v)GW-gJ+{`w;2U15KTlwBx1Jz_@GW8|A#`TK(QMi&k6@jIYV=|<`L&7YL5oxB5 zhJ$7m2;T78(sO{Z7~$x~0#|?fhGAOnthAg=Ekg_*rchkOp;O0P!^(w>N)Odz*=}J^{kF9|iYibVhCFjwFnm|dih;|qf6>PN zVQCOX)ov0)|Ez1T_L*?SvJpzE%xG9}*=xTQpna@B^>C?Q|FnnGr&>CooGrB6FY3*Z zKm4lPur*8Pi^7>FN8}Q7>@Y4}3_g84Y=1o~|41mkBZhn7v3@(@y@^!U?3YKZUdOka z2TI|IQRau-juKuo`7;b1(h&20heq0|Mq%LYy?o^3qQuCtwQZy zJ48j?k#{y*m+sn<5Z6IGj~@IQKln_kr>V1I(z|TI0#g1IR(zT>GRwxo!S7+pJNY>4 zyc;AoyJG~3mw^Ui&f)9?*C)m=as4v$kB83sTervLy3n9S=Y>%3)}9lU8geST1_d!g z^zcdqx{Qzl6#3Pw)QO(PHaCI~0qDPg@1h&gqq2e-y3%qLzOQ>QuKN`G>pzZ*A2*Wo zPgUD`q)HUEexUue^t(@Ud0C9Z*%5!uLOW~9l8W^k_ST_eoFn+am@-B>xuQX=Y`NIwXEp&UPJL)Cv z&74n~P`X=Tq!_|ChuFYXmC0)7&^vvy61O28LM*Fz6K3IIkT~WMGd1YG>@EWDoou#8 zdbBzD_DYM@sPP!S@xIG_P0zH)Fk8m;GRq4cQ-F{cFFS@Qopu>-Hsm#GWO|iqJ>y;N z^?h&XoHbRHIDAO0knF76byJe`ZuuF8dNVrDKnCI>T$(zolz?M@-G_KrrkDxd4=-G& zA1V^Tc#054Px5aQtKk?JQLs%5XpcCJWYK`cJ3{NM;0O~Cnj0dp(4OhoNzrWu3XXI5 zR7c~(x(I?FymNnBBp%wIi3LCIOC>Sa7%bo!SpH?v5W%~pqsF3;VHYC=JwRW{Ic-QP z6)Y+DwY_#M0&X!`vpbEFw*?TX1Fzbnij|8yPCp-L8y!?^6Kb+a_mn4oY4-SmM6mr3 z_{xvw){FGaFuVz4sWPtdhO>{rMe{q+U%H_@bIdf0vmP^SrB{-lZ}riY?BS6Y%KG^S zEvgMkfC!u}EbROF`ru)Ky^;>;Rv2SeYLa8Y+Xil`Z*B4d(G~GRqKcy~KL(at=4jUx zBzsRxk7{BQHKCa%znCN4-9={&=sbmEs%Zzr0(Gm)jY=gf;;!j3zXnW@NP2pqC6sIP zZr-_d^B?8Zeq1<;(MS5`Y+@Zy$M%LbXx}9^%rdIN^Q*zwIi`8-%c=^mx#QB^9{u&f zTW8@7fiK%%F!E7+KI5|rJ?jFN1x?F~|IF$2I9$psSxA2g;KrscaGME`|8-sYmA~~x zOR!-A8jlLNmqQ>y0sUoT|2kTqg!4JVEpGuS{UqUaDxf#Pf{-1e&Y_RJx* zg*my_M5XGhajFG?J_`NCR$%)F-2-rwgu?zAE$K?+`;Uoo3N`>&c{B;+rox0zLA2&1 zyA^oswgO#Ys!~uJOzh6LEWrj@!Sr@wcugQH{dDD~vOhyNa-z7%oMjAK+GC4ebr>lq zyu`%-LzoCL_92ySQ+4IhZuJe$v`51GCuGR8=5lM7)XD8^JP(7wH+As_Q+vTuto96B z-?kmKjj$^oWHdCBuQ@`3j z^xN1B^9+`Iqnh+bXD3@hFQ_^D_~5Z9sc~R2wH2Lj?pJ`vs3lc(dfp8Az=3vQRlk7C zJHQ0s?K||4ENg>`J9}NiD{PCpOk8YusUZ6#XMbztJ4i)eLLY3i5zR=Zr#hQqv)NL5 zmoW6f8&6x8wVAk$8hO|!#fzr|e=3+3%n?E)OX#)F+QXeOZ0E7I{M|cpB(v+2K5hpigT{|5usJxJEPlJ^>u%~4?AuamAOu2Hh7j$9 zZELug`0ZsoSo&w&9(AL<1aYu7p&QmIqkgs@Q=deK%fT5todfJ&RvBAdm$E?WX} z`x5wLj=6-T-1^QV-M}nZi67|I6_9f~b*JI?9+0rKS*b4k8-do$^9Z^^jHajt!A%i2 zx~Z zQFjmK@^vajONw^Fz+ud7;lj~CQCyRY->2mn0fg!?WwJ+xn8?-j=$XO6 zUw{Mi=8{AheWCvJyYcxd~s!=1(}j7sGve zw`9w2#TcJs-R9GD?aS|&s5#Q4Kp>*L`0E-4K_W0+h>O&~1N+H#FoT5x$OrAd@FgQ7 z>FbsNxi{IHl^ibG*|#2tZaIBz9Q|~REv+*w@J+l(xn8%V_@58u%U&E|H4Se#K(IaF zW`}^0v(m3Ye4MUs+H~;p1AMnfQ7*e;r$_Kgp8lq--lV=`2{t8|7Cr#fJuwCM`VmPh zY|qjX3LWYv>7TrtA0eaQGA^v(8|QcJ%^K^Hg#j}Mt;v>_0fsM#yXTtDiTUTgWT#?1 zIVba3Bs2Ua=wFCyxEYhP!OBv0xCU&S>bo(S{0sQ#&Y{+AOe%_Nevt#+M|q`xc=>Fw zezu=sp0S*3t-n+oLusX2K1G;j=oUyAS>RzpAJ-FsT+U>h{#EU6|J~JGNN#c4YG61e8@TmPul@D>Zi8 zQPB|I@({?e!@K$+EVz>z z6vqP6`)n=c&L0cj+vs1boLlKwbt=GIUzf%k9`o_XSg5Owmo7~ljNq`&nfH|?@z$Q$ zr72oFRZQn@w|&N1Bz5w+XF0h&!6}v-Xs(8vHe6p+YJDO$X|3asJBBfzHW6{jRf{Qk zfBp3JR#z|oRw@5DkB?W8=BpSVraumB6aOmHKkN5_p8eZD-IUfXe#o{m!245I=aVh) z4on1kOfA-9=5)>}7h*sG_S|xu=m809&VbLrlu|kCn6$nCj{K&2MeTo8xT#@{)!rrA z@7NhDDPrf?#nqKuT%PjbFQBi*U-j*CW;10M(AK>kalQkB=lgd2W8pE@zYpC}>hu9z8t>+Ba2(wwbHP^_%+wC>Dx1)ybH$o=qukeJn%)Yx??diW#_BC` z3ppFup7z$sy14h&{s`{en`?KGC-_o3)h4=8cq~CvAIG+7Cs?BO)h*|H>#BC^4Z zaOVBU>B@l+AZwn5Bg>hY7pCUUmLA{L1P=vyfU)Al+5Ihnbr{-|boHb5F{ho?oCe$f zKBdJyl)yTrCe{ay+K`;*$u~F%RV0IquPNzw1aR z-4ii=AwS!fpAtaCj^BGNbPbp8!6EL>D>-Aap9Qou(CR8WI821FdCiSacxZH~c<-@Gsjou6FEOR1NpEOG=5Im%-Fv0|xX&I|Q;|2pg5G5AZbv3U zH%bR{(iE~0t1qZl8{<*d?~QvZ2`5EWFfMxR6d{nkpO5uLZ-{_uM|$zaozptzLph~g zzw*0mO&Xr_9=;GHuKB<#=Uzi1NBgI|Y`Ws>v@;iKD`lZGn!1+GhyWMnF;z5kY7Vz3 zxLiU|2=P=zdT%ixFRUYz56aZ7?Ah&AM_uT6Ge>j#+vTJn1C?BerPd!WOanJ*v>(8< z98uY_E3Uri5l&;a9LaP=rSj_c0|R~kq~MGGLPNvO6GcwA)Trlgxi}ie^k{nlxdWuo z5mZhJ|6gHNWo_XI^`e1g)X4&S;@ptVJ!%G^Y*|6z;w!F+b12cyKtAO_dFGurwVZYa zo`;T&A8;JHn237})AQgK+WS`jY#@T#TcvUS_IzN*cZuJ5xw$w1Kh92(J4aLI4~x@@^$z~M(v{0CmdDhGyU z+YZCIUU+cIMe}-~S4`E_T8!|Qg=35PxszmM)9BZpW4W$>y@!D0r+(1!%;vU8V?bDxp=Q3ZM1XcV6psdAc+9#C? z$L6L^RLp%s`*4gxevAWHN7R9R(D$_}q$I3`u=f#lm$WU)FYhA9o}k-s_0GxXt(%kz zKOfN1rBa2}z5yRjgDV6tqBAjmAwxa*u(GfvM!B9F4ebyRkD`t}&v(N=8 ziHQ*w(_jUBdNGGejTQz6kMBFQ#r1|OS>UR9X9*M0Wf#-+_{jw*spvv8=<#whd8 zSPEU>*<6jw)qcp&{G6%!otaR~)mWRlai(;DW&20>%)1I}0lEn0K4khzIXswb7h^}p zjnhF*K^}ak_b^HOjk`?M=J*aU|B>m~>`Qc;Nx1H}j(XDJ058ViOe%xF0BB{+Z#hMl z;J%Bdy9n6*{akoV#JqdUW!%*rxM`NfVA6naFEmu+aPWQgzPWgzV!7g>^U;=FW(nKX(=VNzpuU2cU-g7Tnj@ej4 zr;o`$_*%IO8#?cGxa`!$%N|W-QbAhA3S_)^(0ZZj=X|V^+xhGX3>B z5od!C3l0Y@XY#_K7w73&)fxtE2wQO+yA_;tzD8KwcV_3#*W4V{$}6oeviREhAs9frbw!)3-XTweD(hQxRo{Lb4%a=?E3UH}qVoenx5JyI zg;8cnvrh*G4B|7wX?fIpN(b@a(^YXo-b^I0T0dvXr56X+s6uTcgO82+YzCh*uMT>> zpaNwzJZAW`9P}!(jR~b7Z&W(dvkskg>MfK{-jhYLE~l41d!b1>NJ-%W%IzCen87Ok z_?xFGhelnu`w1p=6*Hk<$8+BtJ3GvYwHZc(x`x)Hoj zt^{uQUwu!0!N?13tyOjLan}dWPZb&d01;<(jav2ckzf2|A5wZdCf|e`F^YH-rA%xP z`gX0;Do7Gq@x{jlG`-UCBRSZx0s5}2%Xf+ANH0|yypH%JGGI^ZZqm0gp_B0A*^}4m zRX}3di)b&`N$UnSmqiMLktxtXcO?{7GZbj2fS2t*^?CVwY>DU|Rf#p&Wo_vtrT1{s zy>7{|x!Dse))LHGCjnf&?wXjt0RMWIw+!alMiMDwi#6|XKBBQKmp}XknC2x}W{prL zLP@ZiSZM-3Ba1mj<%s>nKaE3&w5lsKiE4XsckfbQJEil8D2;V@-?B81Xzgqx`*o5% zJuYhDuX>uh60WYWoX2|e6X3Dq(CsVn&*_RBNh&4`ggcT1ht3t7*r!wy*J3xCK!`E* zq}+YNV)qx4S_A-Pgfm7gEa0J8^?{R@6yXL}l~il~*X_BY^XS^=DC1@rA@tqUlbB#! zrMRX_!H#Bs#K?#@+LZ{_^GqqB%^j1sz_#A+bs^2$PXetj8}Y1}^YK~ILwwvNOKb(P z-;;U`4Ygiob)V-MnUv5kRiDxs)I96Rpi3MUVc*{eX4c%jXk@*u>hK0MELAf{P$+5eL`52zKcgp@XXww z77E`1&CscAmZTdP-3>8&rjzIMNJDpZ%03*e`MR?PLxm;~A-vg#rrLts;9qBR-z#Hc1^Pt<+$Wfh0)R%4WVl>y@D6q;oTV50$LY4%t_l_ z0I#c}qaoG4UiWK;a2d5uVpWabFYoti^CR-U-9t$#jnax#k4J#xv| zqyIA%0goY44UTxvlkj0l!T1KnR*yxf8qozVq?VnMy&PCiJ!GF%?0em7C>Spqa=wKz zpL?Xo)S5VJMJQ_pHNM=*4yjON;7O6|I(aX*&XI4yB^5)rtrx#E7-sf|1G6_DAtsCw zREqqt8ZLKWd`g`#S#Mva*z`3pyY8~2DUIFl!1zy0%~M2w${Ey$ub=Xgw8rj6QPcpW zmZUhdjrAsz+=zQMAU7m@x2avi&pK7qcQUJh0f47;9Z%$I;)FsN#bhXqkvL3~r2MwO zbV?|c&^1q;7-;BBjAKhIk6@M|H=14sgM^e&TnU=Z5Za>yVPT8B7E(+ad>4r$wtsWT zS4oDI9@}YnF(psg3FTF}!+Ux^#R{flPiA-D9R{=TF$mLy3xN=q2K##K2uTU816#q{ zi&D3vmTGr?g^%+9K?>I&86~P+F@M%c+(m!u5Z>)o9cZYFyu=xk2yiQ&h4Of%rJkeQ8~pw_J4x?aMG_DKGcZRff>AiuTAuF};LfJL$*} z8csfEQhuKJUMFET=mTsg*7w0^lg6nm}oCSwh5p&T8bdsuoZp~V9v2?iq840cxn z&#%$=zhe$fFN7G{&Dl#$MR=}{^pX3X1KX}1bNQdu$fUxq&5^w=w!fie%{+8G*`FVf zt7@9i^oyb^A+qU{9$Y3lse?H*s)E{yc{cOawJ^mfmr@VL!=bYtxkQebV{9)mpZ*88 zv89YgTg$ZB2j`oo^YBa0t%r3!00MsoJY=xXWd(63nL&xs=x{lu$Ct z)!HV_HF$CGdxyWkPBd8RSl~*O+JVg_|G9g%tdL*2_AIec`o~!9*S6NwU$3;Q)f`5D zlFNOrNz^t}cVRVn5BNs)z|laeBv{1;qWF?WrQv-)ePV?($t0E?k!j8Q&U?M=8mK*b zNvj_;khoWd3E3cG9wq*j zD>#YP`m3)gAaadv5W$QfPp_<%86ri>b za92HVajExw;x%SD=zjLMjqE@9{s39`sG+*ymL1xRR#e)1XW?;6N?F@<;ZGb=YmL#Q zi?!f``n{}|K;}CR&{G{v2>yLl5nY`lnt*wQHC?aOW-_F%9S?2gAzW6Vb!879fj5IZ zroND7*-YX?1ru_`qfq{y&WB*8AlRP3XR?Ykd7=SvHxrzY^j}uIZVzC}imj^qEV(TH zs=Ph#%Lid`NAy%NBR6d`T3I2Sb{3vOx7Y4WKBv(2NhC47g1s~ z@&q)Sb+?&l{h=mp;E+#4xv1zoF&;J(6Wm#LTNAnE;;Q3<_S04qNi8@9lTx^qK>C4$ zU6&583zF)qN1a!GFqIV2Fsz>&pA;0B@FmSQ7czT&m0dWgc*ZFMeBS(tE~i+LqsjQ; zYYq(l{fr$$ygc$(=%(F=*GWnt)*SSsERyX9hMPyf*@;jiMJJ_7_jYfTDS!6kW$KHC zb#d^!TVh@3*1!DVGRcM$*(s1?al$lGaknR_bjN??F1(}JV6Vtj`79&Oh?cz#8Ld!G zoz%)N@clCnA7=hk`MYN;gS?sH`{E7(G1kmxu{+FUzgG%d8Aao{FI34)z641f#1L%9 z&fG4Q`U%Mss{Saao=&}VV*puVTh9Lz8$_-ShL*rfZklkoNEV5*fAh_2v2UAOq49gr zdBq#wtyqf7+pa_Z&8m+)Wg@^BOG{iWzWF%CzW~V;Pq@~ju4vq@6X<3u(fC*LlE|yp z7j+|%)jKH%6S^BMf~O>xC1$A*ovZIB1E5KPbsr|ekNFVs!=IOm&|NQWr}n30?tY^l zrUDa0v#l%r^dop098iu<%GgyRCn>$d*;HA=Fi$b~Sgo2pYw4HI{M3kvb2cqegNNqo zq+WByl407vfYf4lx{#L2NN>gBm0@Aj~!z$-{0cT2azcfhNoCj&|n7K7mCpuzfFQ zcczR4K~1UMYRfjSHdhE%lFqWWV?gTB?Rn~`Jn%tg)G}oJA_&J*ySu44K*nU$w|>55 zxRkzSD@ivl|4*KD$~upY#B7+!%)lhK&RN{mk^kp#xiu^=feP0{-WJyMMNOi<9glE4 z$#BcH<-wPiY2n0f@k)komIsrAyY^+@EM*?3EUYLK670k6S6;gZMWPKUXoFHD)vj{P z6;4S;e2BBJ;58gtw?`(*2(wO$GyOd))edjiWNXns z1A_~Up;0aw*~Smu0{cr|v$4sJ6i*`a3w@bWbA2rNLEOq%YMb#JD z-B@iq6ZqYq{vm?#^YE`D>NAMHINka?>ps~DrbuhtpXA09t`wMT(`kfYs^qB5jV#UW z^lg}iImjvPkEfuBC^~r5FB|ly8Y;XnsD`o@uLZiJXOdI72FksW5x9EB{`#C{2D9(3 zCds-pSTRW_#+8wp=JjG1-AsY>k7XqzYOHtxFQWDtiPRI@(iayHLeQ}U1R zp6?{AK@5bh(Rt(o(ls+l{9zD`8D`3UO9ev{voJ zM280WO`p0Xbl}C#&(I&N0)_nLUN#k&?iB`ypBcS6iY2u`4#~>&U>2q4P#l@`H zo64I{Z-y8=UpN1=st(5wbjf=RkqZBeSB@)m;9r1V(7-wVQ!j$I`|grz^`=u8OdE|> z-jZ9!O37c*o=O!~$3An7L;|HrR9l(1s7hi-ou^mFarzI>q%C zKOp>6lIH~8tq&QPytsfQKeDoBv9~l1?IAbTI_vrb*vrWx663!)oVEFpK8^>Kj!9T} zOtlT&Uv4Y7%OjU_XpQ~}jix;o9kyc@Cnp4mCBrXya&u1Wgn{)qdyAwCa&W`ITdLi< zylJyUQ{69?TL9|bB!w2mFuV1>(X_y(8+0V<18Z*I&cbjO0BMvlV6w{VP}mlYzox)& zh1*cSDhToZFwAIP10y{#VB9txkQ1wdfUeQ|{zF^(hgKc=d}}Saf97B?((j-FvI6*pW|GXRTB|+@E*2@k_MRiwU3SXK0QIJk?+Hty%WF+$MZ>Obpv}07 zS?GLK*MZ?pHbq9!NZH(^v6G{hH0`c&CUCDv4gVzcKrQ>_#qZAbTRGCOU$8k|OE%6$ z3;b;WWN!soU1F+QWV+PP6dTc~SWNUl*v$}_e~pr)ShoLAxojXcWjyKxR!$?j7?4v2 zh*lnu0ce+gw9C^lCC?qN#2cDmqa&7#+yE?0B?@SuZ z<~khVK`7G4Gd$|lJb|Re5ULI z$K_XEq1P53j}>$P@>tE46h9jyy_JS81ZOlN4X!jh|L~Y57C4Tbo5v5&dppMJ9D4Vf z7$4fuw@NBqj*}bnC)EXbpU)S1-HJ3txo+dWQn=Y{JJN3>TUFBdskl9_`^GP0W)g(1 zB=zoxZV5QzlYJ0&2XsNur|0frw~l zII5=v3@tS%Up&~&ePqMUqD0~guhwDAOXNUD8Zz>}SOO?rW!=roO^qvl0CC#Xr6;{^ zQ(XyaUWsL%n|#!Mk>aXDXm(X8I905$ZAiQePRRfIP+n2>E%qK)gG5-kQa)jQSF~N+ z74H*l5rpQ*m^#xbGyg15E56=P)zoZ*VIIECbkjNdu8v>jZd$(szSX-F;|hNAIQ0v! z$Op99f_g)#A!^CeR{0$odMMI9-Ri=kK(*pM$YaQOuH6ygc)qxbViAQF-99dTYpqQtTGpR0#B-u6bj;x_C$;Fxy?K zFcXG-EikrXeB7)WmGI*0I`uB6*9I_MIW?i06{q6>2!dtuii$OoN$E37yW{P>7mbYB z6B70kW)`Rsp|7v@X2V?{5AjGuE=^oD4PLrHxtm#sq@N17wFGR_c~xdHDv6C$tp&OV zl$W*6psp4k776ip$*?uO-p1`VISl{MQ~<9;_qB{5RpUHceNSd`veHub)|$(OnP>Qe zKQVYmrN8u+^!+Ef&(yTkeoJ8f9aaOTmlSwjckf*=QJ;x&w02~O0_#G|vkiX#)@u=! zMfr!$uUXx=_Ty&l6okBOy{HIKd^`L~%mdm`tQJd0qa4NT&Fbm~A85(Mhw^n%$Z;uL z|E%3DLQRA-*~s3BcxZQv7_qFYtLMHilqWnd=k%91u4XN{Dr<~TbkR-2P^ZKy*=%Wk zU18*HQy=M=214+Kk9v7~Pvv3i1Fp;HD5k?|ijK`ZvHkUPp$7>f!3VRBp+E^8&&gsR zZ~Y0b=#ue?P^bh0TwGESq4yn^#$yJ)HpL$~bGF1SUTsX@J1VzvWKwjKW$4?dc-U9RH}B+?HO}JwsekEfTYs4O&h|-9&Z>7Vq-mp*OrVj z=`*kcdu-%r8{)p9^qbThhqsqb?ej3jyzxruGxiQl+rUFpiI*3Mq?I?j3Jhf6S_*pZ zahOYDNqd{aE$c|sm{KE@f0Sh%aa$91XndFcC7+d)yIujH~4+!Z{gqn&0`=b5OcQcq)F*o)cYSg>h9(ODbdoU}??*Jr4} zw?qwVtAnuS1M#FxU38O z64uZ!`90KSB+-AQYntTKu&FlIFSmrwDLV)^P$w^U(F0ivB`@}CNG6JTAd?h3l3n6h zF}N0Ab4}^4-k5X=rGU{p$iv-xF^wAiM&_M?y156@Y{48#D4nXBG|>p}S2WuogH>qP7`K|# zhiGs^3-{V`UG&q)9fMoiu9={2x-hc9^kPFt3G4K4%N)vt<-2kVAli+7FpWpu<-kfn znYga=8_t6Eh*P~r|9F9v2q+z3Ip#94HJ23-;P67I&Uh{7C&tiWPm7F+eQo>N{@m(I z!pQM@-6dH<5;06Hk7>M0V^yz>PxWt0d-+KX*ZN-AKZ&V{kZfflY3jk`R>z~e_E2q$ z^H*?jvVGxR3kg%mz=@bUncoFZhYR;JNW4NWIWDGWfLl_R4z`_w`p3LP6(4CAHIFg& z9l%;js>g!|7OBnl#RvC#IR)xgHX+Xwty^R8?2NIyZA&Prz{Mj0JleG46`XZPY%YP; z*@iYL5jq&LpXsH!MG^MeW3A1p%KoxGhAcVT>GJ8FoK|BH$rcxphjgleB8Rwn5w$GA zsY2TiZ8;n#20^9}JhPasW(Xyu7=L^<&?T;&eqhxD~>8il?fgV{u|xBydta_5RoDHGs;{M{?*FrP!y}DR1k! zrz~AL)kwriKHmF0l*i1uj0h&K`dQPWz+|aggxm#N^Wf{7Vgu8aafa`Ged~C!R%T^A z;bNfsJ-Vj*Ss9ukbi-djL~~}j@rjC!HK76N$@FE(#*EcO4+2eV0Lne}4E_@HVnHTRAol+?NL&YU4_p z%X~B2zpvI=4}Cl!I6oSf%+eBxZ9n;4)8u~A#BEBG`l|TSqkZEI)PyvBM@y@4d@ zpF=>zJN6;iGkM0Ua@=W!{b&i9pC2{s(*}Gv6UI{&lYg$|(?*_h%v=rMN!Eg!eKDER zB(#DD7ZF1A1M^Sm!{4+qZ;89lYm&;Ey)JO{X@W2zlm@ideJ|@jmX}Pf;@3 z6ZDPfBok2iVKkr2Lk^IamTS_(V9iPZU!W8o-1-Z6+b=Lzt-0goU*mv!?Z*_?H&Z^;njA79{L*iG7Ds9-@ADe2 zE9G_h{cL@9dg1X|$Gn?}NS)hdRc_}tEQn;PsBv2B>625Jr}F%nh(JxUtx~#z#Qr;w z)~(N>hkLnk+~~)=%L1zkLk0xy_*lM3(XTl}jD*s`wN*S9HUVV>;@@x0i8WT-kGzWA z;!AEh1KuJdDk_5Jz3T@DVQq))i<%<`GIg31A01sPVBpdt+wlo1H%4i> z^CANFdkz%oVnK@M4ReE?!Zp>>UX=F z*1%||zfI<;-H7KSUM{Q^E?CF{yHoMod36UA+j~k=MdeA90J92AVQ(Ntew{)_}u5H3Jl{%DX1!jGI0= zD)#Q~vp2SsEmMw@eu6LJNOzu#aVGWt6;%Q2Z9l;e9s(U$0?D3A(;V07)$b^#6ssqT z7q_(Ccw+ZINg&sIg~lxrI0~9upIG{svlX@hX@PjcJ8m)l07;PjCaY@E{Pn_5$C;Zf zPu>q-tJ~}SFgH*Sy?)$kI-ta}q0Qz1%${CP0Z9oXN4-lXGe3I+ccTTb!3P{~YM0y( z{x@k^nq1a(nS@ra?kEAGnTU>S**v2j_-I>Rs~Sj1s;aKG9ryJ$&)b=;a!keL~#i?GA`U=<5eCYp205%lK z>t%JYw~h%5EVJ_%QWPm-LCHMuKfE{{*!mukY&QL{T%<9JmJtFIx{?lkN|E2_0i>;~ zYRd2NCC2+RDdzirsU5ps88*lQ$`j>_aX7&B&IWs8v1gF!sRsA+CZ7@G9T;GLU(&T~ zY|%6e+xyEj^HIWD#FOE;DDK_3A1*t5&FNUz7IKjHcTTY-!7|4)jN}k^Y#e8)>A)cK zU9ewf`XEu4L#EaA_MgQ5B9K6@ExpvxtSEV6(h!F~mmbxNYjC%g_oSd_lWdl`=L~?k z#~nygzwj!3*0^PpU!F9LE-y6*XJT6*VWeVyfZ*f3X2EvWEbjw5c~^2t0t5hX$V%g% zlrSUcO%j7^P4xUM#@(IHFJVH{apbwRbEs`LVDrQXFsW1Xa9j8sNy_A2Vny6cNu{^cd}1miJbP zXL3BD9D?7g93;v}%C{gE+FKsPjP|S*k)*X)pxx&xkk2nM$fNmo{c1?AF72ae?x2xT z{{VL&fj18<Ebb zKe$&k^sQ3cPSosYgig}Ls{Iox?Ig^BqlG)h_2%`R-&#C~eER z&wsu^;P43GcN9tz<{V~=cIkC#eQOik3pmEbj7)ZhY<$OVNiX^2p19(t(Y1dtMSCyw#zu<7>t zpO>dd*HD!TyCVp095(QFjxs*)r^-9j&YEq;T9=|%L*$M*r*Q9T?`ma^IDlqC&yWKi z25=dO!Nv}7YFD{`55WWosXfiU8fb!+QlJgUM|^HPl78pDDQ+~l?CpQIrkWJIm6lko zOo1a;BxRhF{q4MUJ5R4TtEFmI@m^je^IhIrwg`?==`w;8h6=>h%L_Zxyvgq#$HJyJQMxkIqfc=soPvi(WFzeGh%o_BWXe~z?_Yx zR02BieHOBHJrd^j?%5q)CyLHF7~E%x21{}dMh*sZ*w&7T2$CIM`qmTuqOpi11##v! zLmn~15IF#zy}1;opq1OcpV!_yJ6M8UU80e1QPy9d&XLuD7|M`1=nmpB)P5X6{i7Yx zmfn9QC23hhi1ELl;~o8*IRtaXE~9A(lz)ltZnCwl@FS+tcritK0Q4<5$J2lFSOb1wApOslh3!b z`IzMQ=Z|b-gVU`)N7Unr7>&Kl6brfI00OQ6+y)0A{G<#Xhd%u@abC(VulWO$Nctkz z#45`?jT1w8r@0b9IcHsn%oo%U!*5KGJt`jy`0mzQyK5OW1UiGW#QWq@uEjw{;Nh4m z#-t2nvk}nOh3eiV)ipcF?-`OinZMQrbMt-GRv9~Z0CR!PO-ZD9gu`bt$7+ofk$s+M zsB&r|WWs(8+8j}u4secE$GjYiI@E)h#prQZBV=qml(q;iRQgH#Ma{}XXFQE>2?2=6XOL|lC>cF+I`$aN zQHt3oXr`2-Gb1SSaCZ>fu)VX$=i0aBxsu+}TgzBXX7&^b<$w#Yky}2a2X|0Cs<~G( zh$duMxskl*gxQGLsf?#58TIITWDoweGVDm#fK4=ttOne4Zk;^l5vbKJ{aI#8UY z_OxHA$Fa4%yn^QO?r%&vFC#ut5kNQt@E{7wy}O>vQn;5f!vyjdEjjs^k`8&~eMcQ@ zcU)w$yq;TVBZ+p0NmTE7bI#B9MnC{|1L;_IIznrbdGRvAe**_(!Pv`@o!R8z4xRI# zQC$?F7P+MKJhvy!V|jI!zk6tWt1G5?4#&3nS{BZ5$;$N$k}!WWp1a~*`}khlK+vt5 zXV`5;!?u1`nT|*++=a;pw(ol3bZt5Q*>44n+)(*b8D+U;K1c&BS%+Pu?H}+gb*(=g z_=4A8md}_7^D`^W_*hXQwke3f5 z6lWlU#Yy9F!2_wu6=W=Sa$AVzb+$y?H=1@Bb}8JXbjjYI&z@_RySS3ZcxFVJTTF=* z;~^v7eU5SS4EOyGyc&R;eZ0ZG%1;`<}=Yfvi=OU*;MhPyacCm4_=os4> zV2E2x9y8|<0t{t|UWX?xRON(!B8QnXNjVcIiQa%ZbB4R3$d|`vvAal3T$T4keD>KoNsv6$Az> zaCklXk=p&Fw-yMlwh+xG<&kALAT}_h0uDlR#~EUJflt-7mzL61x4yVr`^k>zCYx^8 zJTL%Yb{vkqJMpS=T7D%YjtXJqZIUtjnMVHruc!5>qqvn@3V2+Q4?sKOv}`_W7(wS~ za6N@!v$vSsp0(0_+~= zapUr?IavA3xi}zk_}62n+r>SL2_shmKzSYZ))gadLB(92%Tu(py_;lj98VFBHD~#} zwmD&tqmjuUUc7TN>XDlf1;SfGuf$O-Wt1uCTXgH0TQ3tlRD|T)q$xIUr*I3=z|wJJWSdMCzJ+*5W<#tK_yZ zgU2K5{Lf*gqSLM= z4JEgj#uM`tW08^Hp8oYNlhNN}JDQ2-TWy7x%n?WCW20vSlkJ03>UXhSfMQ^W%L;>l zQ1SY4T>XXA^22b?D>FQMSd+;d@t?qcRjC?*XA6KgF#w-jVzZoV!dEn>)XcWc9m2CU z#3nE~VBq7Z`uFS8(zdNE%Uj$}_Bmj>K6A{ls3+%8Luaz}KZXre(<4;1OT|zw6_FNB z>Zd#pO3Sm=FJ-;FN4Sxf?J=$i?Y*)-hbJSwV;J*Yb}lbNQWu_i?j&g>m6Tv2F3AF5 z{{R;!1m}a0Gx$~AH|*DX6t}jsT}H`u=4R=CdRqZ|Stm*#L7 z91)NYPfCL3(g`Jdi-B-&*4crEIRu|%MHwYW0B1YBNhI|qwRD9G;QM*742vYL81h2^ zaC!Qg&S;~wv(#=NMUH8&UO62{EWT@SeX5~eP)^-H%vM%1JUgNr9a19>tsA8Ahn^{- zD!?8?9^bEX>re3(mXHM913=DM_!McnCyQc2)?S3U;G?_F{l zGIkvO-aAr+RogApa*d19-=K_4sEoyr%tq6X?wofV{MhJo$2A;EOl@$57%S{$CnI(T zBl-RnhifZ&_UrQEMazw&=05(lw{B0`CWro6qp4Nw4Q%vwB1lmWn>*XX8F`TX$1DLj z>~Vwn(i_7C%#cU25{bQ;kTA|hIR60kdsKQOu(Z6n&+nE#9Q7QnR?`^jw@@wV^OcFn zZu|qCK$=N!Ww&=`h{D-Ic>B4cFil)7?%dY`NMo03$>xu| zjJ!58k`HswBifwzW<^B|MB7yDJy$r-AAui-;YjY$leLK4yN^9j9MyZU5_Z}E{n+R| z+Od-NtV~_a2ykE~*M4)g!*k|yoDb)ZVd+-vuOpIKAs$?9G++`lxHvs|&OJECZ+hgW zxRxunjU;7M$xshW^{%eY)*GabS(9|1XA*A7A28^6?^)EQxo&M4N;@*jYS%W_7Z%=Z ztd{{wKsesRorDg#2PZy*2C^1wrn;3ayvPuS5^Zc8-)Qa9kRn9ka`Sc4l;RA zX}9eRHjqckvng%Z&UxwA{Nk!hZxi0TGUs;2Ad`YfJmaToOaB0#;yBxt^W8E2$Weh> z#wl4LOJs`gd3W|tA}#3%#^S%kJ;>)C)f&jC8aU-;I0O!$9{sv={&Q5=bs+e+&~&@_xj~=n6%&6h{6QVaVsUJ^SLR%WDL1 zT(U%}UKK1y8Ts-3D{^HY+7|KST?Ksa~4tohydF^6P0JD73lfl}#r*D#|h zO#4ECgUILWQz}YP)NQw^dsDmf?-0mif&jil6en@R6TI{U + + + + + + ./src + + + + + + + + ./tests + ./tests/OSS/Tests/BucketCnameTest.php + + + diff --git a/aliyun-oss-php-sdk-2.2.2/samples/Bucket.php b/aliyun-oss-php-sdk-2.2.2/samples/Bucket.php new file mode 100644 index 0000000..bd16e65 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/Bucket.php @@ -0,0 +1,167 @@ +createBucket($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); +Common::println("bucket $bucket created"); + +// 鍒ゆ柇Bucket鏄惁瀛樺湪 +$doesExist = $ossClient->doesBucketExist($bucket); +Common::println("bucket $bucket exist? " . ($doesExist ? "yes" : "no")); + +// 鑾峰彇Bucket鍒楄〃 +$bucketListInfo = $ossClient->listBuckets(); + +// 璁剧疆bucket鐨凙CL +$ossClient->putBucketAcl($bucket, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE); +Common::println("bucket $bucket acl put"); +// 鑾峰彇bucket鐨凙CL +$acl = $ossClient->getBucketAcl($bucket); +Common::println("bucket $bucket acl get: " . $acl); + + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +createBucket($ossClient, $bucket); +doesBucketExist($ossClient, $bucket); +deleteBucket($ossClient, $bucket); +putBucketAcl($ossClient, $bucket); +getBucketAcl($ossClient, $bucket); +listBuckets($ossClient); + +/** + * 鍒涘缓涓涓瓨鍌ㄧ┖闂 + * acl 鎸囩殑鏄痓ucket鐨勮闂帶鍒舵潈闄愶紝鏈変笁绉嶏紝绉佹湁璇诲啓锛屽叕鍏辫绉佹湁鍐欙紝鍏叡璇诲啓銆 + * 绉佹湁璇诲啓灏辨槸鍙湁bucket鐨勬嫢鏈夎呮垨鎺堟潈鐢ㄦ埛鎵嶆湁鏉冮檺鎿嶄綔 + * 涓夌鏉冮檺鍒嗗埆瀵瑰簲 (OssClient::OSS_ACL_TYPE_PRIVATE锛孫ssClient::OSS_ACL_TYPE_PUBLIC_READ, OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE) + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瑕佸垱寤虹殑瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒ゆ柇Bucket鏄惁瀛樺湪 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + */ +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"); + } +} + +/** + * 鍒犻櫎bucket锛屽鏋渂ucket涓嶄负绌哄垯bucket鏃犳硶鍒犻櫎鎴愬姛锛 涓嶄负绌鸿〃绀篵ucket鏃㈡病鏈塷bject锛屼篃娌℃湁鏈畬鎴愮殑multipart涓婁紶鏃剁殑parts + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 寰呭垹闄ょ殑瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 璁剧疆bucket鐨刟cl閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + + +/** + * 鑾峰彇bucket鐨刟cl閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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); +} + + +/** + * 鍒楀嚭鐢ㄦ埛鎵鏈夌殑Bucket + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @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/aliyun-oss-php-sdk-2.2.2/samples/BucketCors.php b/aliyun-oss-php-sdk-2.2.2/samples/BucketCors.php new file mode 100644 index 0000000..cc5c0b9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/BucketCors.php @@ -0,0 +1,108 @@ +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()); + +// 鑾峰彇cors閰嶇疆 +$corsConfig = $ossClient->getBucketCors($bucket); +Common::println("bucket $bucket corsConfig fetched:" . $corsConfig->serializeToXml()); + +// 鍒犻櫎cors閰嶇疆 +$ossClient->deleteBucketCors($bucket); +Common::println("bucket $bucket corsConfig deleted"); + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 ***************************************************** + +putBucketCors($ossClient, $bucket); +getBucketCors($ossClient, $bucket); +deleteBucketCors($ossClient, $bucket); +getBucketCors($ossClient, $bucket); + +/** + * 璁剧疆bucket鐨刢ors閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鑾峰彇骞舵墦鍗癰ucket鐨刢ors閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒犻櫎bucket鐨勬墍鏈夌殑cors閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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/aliyun-oss-php-sdk-2.2.2/samples/BucketLifecycle.php b/aliyun-oss-php-sdk-2.2.2/samples/BucketLifecycle.php new file mode 100644 index 0000000..ec0c37f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/BucketLifecycle.php @@ -0,0 +1,109 @@ +addRule($lifecycleRule); +$ossClient->putBucketLifecycle($bucket, $lifecycleConfig); +Common::println("bucket $bucket lifecycleConfig created:" . $lifecycleConfig->serializeToXml()); + +//鑾峰彇lifecycle瑙勫垯 +$lifecycleConfig = $ossClient->getBucketLifecycle($bucket); +Common::println("bucket $bucket lifecycleConfig fetched:" . $lifecycleConfig->serializeToXml()); + +//鍒犻櫎bucket鐨刲ifecycle閰嶇疆 +$ossClient->deleteBucketLifecycle($bucket); +Common::println("bucket $bucket lifecycleConfig deleted"); + + +//***************************** 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 *********************************************** + +putBucketLifecycle($ossClient, $bucket); +getBucketLifecycle($ossClient, $bucket); +deleteBucketLifecycle($ossClient, $bucket); +getBucketLifecycle($ossClient, $bucket); + +/** + * 璁剧疆bucket鐨勭敓鍛藉懆鏈熼厤缃 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鑾峰彇bucket鐨勭敓鍛藉懆鏈熼厤缃 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒犻櫎bucket鐨勭敓鍛藉懆鏈熼厤缃 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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/aliyun-oss-php-sdk-2.2.2/samples/BucketLogging.php b/aliyun-oss-php-sdk-2.2.2/samples/BucketLogging.php new file mode 100644 index 0000000..406e1d4 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/BucketLogging.php @@ -0,0 +1,95 @@ +putBucketLogging($bucket, $bucket, "access.log", array()); +Common::println("bucket $bucket lifecycleConfig created"); + +// 鑾峰彇Bucket璁块棶鏃ュ織璁板綍瑙勫垯 +$loggingConfig = $ossClient->getBucketLogging($bucket, array()); +Common::println("bucket $bucket lifecycleConfig fetched:" . $loggingConfig->serializeToXml()); + +// 鍒犻櫎Bucket璁块棶鏃ュ織璁板綍瑙勫垯 +$loggingConfig = $ossClient->getBucketLogging($bucket, array()); +Common::println("bucket $bucket lifecycleConfig deleted"); + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +putBucketLogging($ossClient, $bucket); +getBucketLogging($ossClient, $bucket); +deleteBucketLogging($ossClient, $bucket); +getBucketLogging($ossClient, $bucket); + +/** + * 璁剧疆bucket鐨凩ogging閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @return null + */ +function putBucketLogging($ossClient, $bucket) +{ + $option = array(); + //璁块棶鏃ュ織瀛樻斁鍦ㄦ湰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"); +} + +/** + * 鑾峰彇bucket鐨凩ogging閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒犻櫎bucket鐨凩ogging閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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/aliyun-oss-php-sdk-2.2.2/samples/BucketReferer.php b/aliyun-oss-php-sdk-2.2.2/samples/BucketReferer.php new file mode 100644 index 0000000..3828df6 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/BucketReferer.php @@ -0,0 +1,101 @@ +setAllowEmptyReferer(true); +$refererConfig->addReferer("www.aliiyun.com"); +$refererConfig->addReferer("www.aliiyuncs.com"); +$ossClient->putBucketReferer($bucket, $refererConfig); +Common::println("bucket $bucket refererConfig created:" . $refererConfig->serializeToXml()); +//鑾峰彇Referer鐧藉悕鍗 +$refererConfig = $ossClient->getBucketReferer($bucket); +Common::println("bucket $bucket refererConfig fetched:" . $refererConfig->serializeToXml()); + +//鍒犻櫎referer鐧藉悕鍗 +$refererConfig = new RefererConfig(); +$ossClient->putBucketReferer($bucket, $refererConfig); +Common::println("bucket $bucket refererConfig deleted"); + + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +putBucketReferer($ossClient, $bucket); +getBucketReferer($ossClient, $bucket); +deleteBucketReferer($ossClient, $bucket); +getBucketReferer($ossClient, $bucket); + +/** + * 璁剧疆bucket鐨勯槻鐩楅摼閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鑾峰彇bucket鐨勯槻鐩楅摼閰嶇疆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒犻櫎bucket鐨勯槻鐩楅摼閰嶇疆 + * Referer鐧藉悕鍗曚笉鑳界洿鎺ユ竻绌猴紝鍙兘閫氳繃閲嶆柊璁剧疆鏉ヨ鐩栦箣鍓嶇殑瑙勫垯銆 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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/aliyun-oss-php-sdk-2.2.2/samples/BucketWebsite.php b/aliyun-oss-php-sdk-2.2.2/samples/BucketWebsite.php new file mode 100644 index 0000000..54706f8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/BucketWebsite.php @@ -0,0 +1,92 @@ +putBucketWebsite($bucket, $websiteConfig); +Common::println("bucket $bucket websiteConfig created:" . $websiteConfig->serializeToXml()); + +// 鏌ョ湅Bucket鐨勯潤鎬佺綉绔欐墭绠$姸鎬 +$websiteConfig = $ossClient->getBucketWebsite($bucket); +Common::println("bucket $bucket websiteConfig fetched:" . $websiteConfig->serializeToXml()); + +// 鍒犻櫎Bucket鐨勯潤鎬佺綉绔欐墭绠℃ā寮 +$ossClient->deleteBucketWebsite($bucket); +Common::println("bucket $bucket websiteConfig deleted"); + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +putBucketWebsite($ossClient, $bucket); +getBucketWebsite($ossClient, $bucket); +deleteBucketWebsite($ossClient, $bucket); +getBucketWebsite($ossClient, $bucket); + +/** + * 璁剧疆bucket鐨勯潤鎬佺綉绔欐墭绠℃ā寮忛厤缃 + * + * @param $ossClient OssClient + * @param $bucket string 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鑾峰彇bucket鐨勯潤鎬佺綉绔欐墭绠$姸鎬 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒犻櫎bucket鐨勯潤鎬佺綉绔欐墭绠℃ā寮忛厤缃 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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/aliyun-oss-php-sdk-2.2.2/samples/Callback.php b/aliyun-oss-php-sdk-2.2.2/samples/Callback.php new file mode 100644 index 0000000..8612a1c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/Callback.php @@ -0,0 +1,83 @@ + $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 浣跨敤callback涓婁紶鍐呭鍒皁ss鏂囦欢 + * callbackurl鍙傛暟鎸囧畾璇锋眰鍥炶皟鐨勬湇鍔″櫒url + * callbackbodytype鍙傛暟鍙负application/json鎴朼pplication/x-www-form-urlencoded, 鍙夊弬鏁帮紝榛樿涓篴pplication/x-www-form-urlencoded + * OSS_CALLBACK_VAR鍙傛暟鍙互涓嶈缃 + */ +$object = "multipart-callback-test.txt"; +$copiedObject = "multipart-callback-test.txt.copied"; +$ossClient->putObject($bucket, $copiedObject, file_get_contents(__FILE__)); + +/** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇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/aliyun-oss-php-sdk-2.2.2/samples/Common.php b/aliyun-oss-php-sdk-2.2.2/samples/Common.php new file mode 100644 index 0000000..f419d17 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/Common.php @@ -0,0 +1,84 @@ +getMessage() . "\n"); + return null; + } + return $ossClient; + } + + public static function getBucketName() + { + return self::bucket; + } + + /** + * 宸ュ叿鏂规硶锛屽垱寤轰竴涓瓨鍌ㄧ┖闂达紝濡傛灉鍙戠敓寮傚父鐩存帴exit + */ + 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/aliyun-oss-php-sdk-2.2.2/samples/Config.php b/aliyun-oss-php-sdk-2.2.2/samples/Config.php new file mode 100644 index 0000000..35c0dc7 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/Config.php @@ -0,0 +1,15 @@ +uploadFile($bucketName, $object, "example.jpg"); + +// 鍥剧墖缂╂斁 +$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); + +// 鍥剧墖瑁佸壀 +$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); + +// 鍥剧墖鏃嬭浆 +$options = array( + OssClient::OSS_FILE_DOWNLOAD => $download_file, + OssClient::OSS_PROCESS => "image/rotate,90", ); +$ossClient->getObject($bucketName, $object, $options); +printImage("imageRotate", $download_file); + +// 鍥剧墖閿愬寲 +$options = array( + OssClient::OSS_FILE_DOWNLOAD => $download_file, + OssClient::OSS_PROCESS => "image/sharpen,100", ); +$ossClient->getObject($bucketName, $object, $options); +printImage("imageSharpen", $download_file); + +// 鍥剧墖姘村嵃 +$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); + +// 鍥剧墖鏍煎紡杞崲 +$options = array( + OssClient::OSS_FILE_DOWNLOAD => $download_file, + OssClient::OSS_PROCESS => "image/format,png", ); +$ossClient->getObject($bucketName, $object, $options); +printImage("imageFormat", $download_file); + +// 鑾峰彇鍥剧墖淇℃伅 +$options = array( + OssClient::OSS_FILE_DOWNLOAD => $download_file, + OssClient::OSS_PROCESS => "image/info", ); +$ossClient->getObject($bucketName, $object, $options); +printImage("imageInfo", $download_file); + + +/** + * 鐢熸垚涓涓甫绛惧悕鐨勫彲鐢ㄤ簬娴忚鍣ㄧ洿鎺ユ墦寮鐨剈rl, URL鐨勬湁鏁堟湡鏄3600绉 + */ + $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); + +//鏈鍚庡垹闄や笂浼犵殑$object +$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(filesize($imageFile))); +} diff --git a/aliyun-oss-php-sdk-2.2.2/samples/LiveChannel.php b/aliyun-oss-php-sdk-2.2.2/samples/LiveChannel.php new file mode 100644 index 0000000..2f7d3a8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/LiveChannel.php @@ -0,0 +1,125 @@ + '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"); + +/** + 瀵瑰垱寤哄ソ鐨勯閬擄紝鍙互浣跨敤listBucketLiveChannels鏉ヨ繘琛屽垪涓惧凡杈惧埌绠$悊鐨勭洰鐨勩 + prefix鍙互鎸夌収鍓嶇紑杩囨护list鍑烘潵鐨勯閬撱 + max_keys琛ㄧず杩唬鍣ㄥ唴閮ㄤ竴娆ist鍑烘潵鐨勯閬撶殑鏈澶ф暟閲忥紝杩欎釜鍊兼渶澶т笉鑳借秴杩1000锛屼笉濉啓鐨勮瘽榛樿涓100銆 + */ +$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"); +} +/** + 鍒涘缓鐩存挱棰戦亾涔嬪悗鎷垮埌鎺ㄦ祦鐢ㄧ殑play_url锛坮tmp鎺ㄦ祦鐨剈rl锛屽鏋淏ucket涓嶆槸鍏叡璇诲啓鏉冮檺閭d箞杩橀渶瑕佸甫涓婄鍚嶏紝瑙佷笅鏂囩ず渚嬶級鍜屾帹娴佺敤鐨刾ublish_url锛堟帹娴佷骇鐢熺殑m3u8鏂囦欢鐨剈rl锛 + */ +$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); + +/** + 鍒涘缓濂界洿鎾閬擄紝濡傛灉鎯虫妸杩欎釜棰戦亾绂佺敤鎺夛紙鏂帀姝e湪鎺ㄧ殑娴佹垨鑰呬笉鍐嶅厑璁稿悜涓涓湴鍧鎺ㄦ祦锛夛紝搴旇浣跨敤putLiveChannelStatus鎺ュ彛锛屽皢棰戦亾鐨剆tatus鏀规垚鈥淒isabled鈥濓紝濡傛灉瑕佸皢涓涓鐢ㄧ姸鎬佺殑棰戦亾鍚敤锛岄偅涔堜篃鏄皟鐢ㄨ繖涓帴鍙o紝灏唖tatus鏀规垚鈥淓nabled鈥 + */ +$resp = $ossClient->putLiveChannelStatus($bucket, "test_rtmp_live", "enabled"); + +/** + 鍒涘缓濂界洿鎾閬撲箣鍚庤皟鐢╣etLiveChannelInfo鍙互寰楀埌棰戦亾鐩稿叧鐨勪俊鎭 + */ +$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"); + +/** + 濡傛灉鎯虫煡鐪嬩竴涓閬撳巻鍙叉帹娴佽褰曪紝鍙互璋冪敤getLiveChannelHistory銆傜洰鍓嶆渶澶氬彲浠ョ湅鍒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"); + } +} + +/** + 瀵逛簬姝e湪鎺ㄦ祦鐨勯閬撹皟鐢╣et_live_channel_stat鍙互鑾峰緱娴佺殑鐘舵佷俊鎭 + 濡傛灉棰戦亾姝e湪鎺ㄦ祦锛岄偅涔坰tat_result涓殑鎵鏈夊瓧娈甸兘鏈夋剰涔夈 + 濡傛灉棰戦亾闂茬疆鎴栬呭浜庘淒isabled鈥濈姸鎬侊紝閭d箞status涓衡淚dle鈥濇垨鈥淒isabled鈥濓紝鍏朵粬瀛楁鏃犳剰涔夈 + */ +$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"); + +/** + * 濡傛灉甯屾湜鍒╃敤鐩存挱鎺ㄦ祦浜х敓鐨則s鏂囦欢鐢熸垚涓涓偣鎾垪琛紝鍙互浣跨敤postVodPlaylist鏂规硶銆 + * 鎸囧畾璧峰鏃堕棿涓哄綋鍓嶆椂闂村噺鍘60绉掞紝缁撴潫鏃堕棿涓哄綋鍓嶆椂闂达紝杩欐剰鍛崇潃灏嗙敓鎴愪竴涓暱搴︿负60绉掔殑鐐规挱瑙嗛銆 + * 鎾斁鍒楄〃鎸囧畾涓衡渧od_playlist.m3u8鈥濓紝涔熷氨鏄杩欎釜鎺ュ彛璋冪敤鎴愬姛涔嬪悗浼氬湪OSS涓婄敓鎴愪竴涓悕鍙渧od_playlist.m3u8鈥濈殑鎾斁鍒楄〃鏂囦欢銆 + */ +$current_time = time(); +$ossClient->postVodPlaylist($bucket, + "test_rtmp_live", "vod_playlist.m3u8", + array('StartTime' => $current_time - 60, + 'EndTime' => $current_time) +); + +/** + * 濡傛灉涓涓洿鎾閬撳凡缁忎笉鎵撶畻鍐嶄娇鐢ㄤ簡锛岄偅涔堝彲浠ヨ皟鐢╠elete_live_channel鏉ュ垹闄ら閬撱 + */ +$ossClient->deleteBucketLiveChannel($bucket, "test_rtmp_live"); diff --git a/aliyun-oss-php-sdk-2.2.2/samples/MultipartUpload.php b/aliyun-oss-php-sdk-2.2.2/samples/MultipartUpload.php new file mode 100644 index 0000000..e8d69a3 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/MultipartUpload.php @@ -0,0 +1,182 @@ +multiuploadFile($bucket, "file.php", __FILE__, array()); +Common::println("local file " . __FILE__ . " is uploaded to the bucket $bucket, file.php"); + + +// 涓婁紶鏈湴鐩綍鍒癰ucket鍐呯殑targetdir瀛愮洰褰曚腑 +$ossClient->uploadDir($bucket, "targetdir", __DIR__); +Common::println("local dir " . __DIR__ . " is uploaded to the bucket $bucket, targetdir/"); + + +// 鍒楀嚭褰撳墠鏈畬鎴愮殑鍒嗙墖涓婁紶 +$listMultipartUploadInfo = $ossClient->listMultipartUploads($bucket, array()); + + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +multiuploadFile($ossClient, $bucket); +putObjectByRawApis($ossClient, $bucket); +uploadDir($ossClient, $bucket); +listMultipartUploads($ossClient, $bucket); + +/** + * 閫氳繃multipart涓婁紶鏂囦欢 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 浣跨敤鍩烘湰鐨刟pi鍒嗛樁娈佃繘琛屽垎鐗囦笂浼 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @throws OssException + */ +function putObjectByRawApis($ossClient, $bucket) +{ + $object = "test/multipart-test.txt"; + /** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇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. 涓婁紶鍒嗙墖 + */ + $partSize = 10 * 1024 * 1024; + $uploadFile = __FILE__; + $uploadFileSize = 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. 灏嗘瘡涓鍒嗙墖涓婁紶鍒癘SS + 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. 瀹屾垚涓婁紶 + */ + 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"); +} + +/** + * 鎸夌収鐩綍涓婁紶鏂囦欢 + * + * @param OssClient $ossClient OssClient + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * + */ +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"); +} + +/** + * 鑾峰彇褰撳墠鏈畬鎴愮殑鍒嗙墖涓婁紶鍒楄〃 + * + * @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/aliyun-oss-php-sdk-2.2.2/samples/Object.php b/aliyun-oss-php-sdk-2.2.2/samples/Object.php new file mode 100644 index 0000000..68e1ed3 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/Object.php @@ -0,0 +1,451 @@ +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']); + +// 涓婁紶鏈湴鏂囦欢 +$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']); + +// 涓嬭浇object鍒版湰鍦板彉閲 +$content = $ossClient->getObject($bucket, "b.file"); +Common::println("b.file is fetched, the content is: " . $content); + + +// 涓嬭浇object鍒版湰鍦版枃浠 +$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"); + +// 鎷疯礉object +$result = $ossClient->copyObject($bucket, "c.file", $bucket, "c.file.copy"); +Common::println("lastModifiedTime: " . $result[0]); +Common::println("ETag: " . $result[1]); + +// 鍒ゆ柇object鏄惁瀛樺湪 +$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); +Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); + +// 鍒犻櫎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']); + +// 鍒ゆ柇object鏄惁瀛樺湪 +$doesExist = $ossClient->doesObjectExist($bucket, "c.file.copy"); +Common::println("file c.file.copy exist? " . ($doesExist ? "yes" : "no")); + +// 鎵归噺鍒犻櫎object +$result = $ossClient->deleteObjects($bucket, array("b.file", "c.file")); +foreach($result as $object) + Common::println($object); + +sleep(2); +unlink("c.file.localcopy"); + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +listObjects($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); + +/** + * 鍒涘缓铏氭嫙鐩綍 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鎶婃湰鍦板彉閲忕殑鍐呭鍒版枃浠 + * + * 绠鍗曚笂浼,涓婁紶鎸囧畾鍙橀噺鐨勫唴瀛樺间綔涓簅bject鐨勫唴瀹 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + + +/** + * 涓婁紶鎸囧畾鐨勬湰鍦版枃浠跺唴瀹 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒楀嚭Bucket鍐呮墍鏈夌洰褰曞拰鏂囦欢, 娉ㄦ剰濡傛灉绗﹀悎鏉′欢鐨勬枃浠舵暟鐩秴杩囪缃殑max-keys锛 鐢ㄦ埛闇瑕佷娇鐢ㄨ繑鍥炵殑nextMarker浣滀负鍏ュ弬锛岄氳繃 + * 寰幆璋冪敤ListObjects寰楀埌鎵鏈夌殑鏂囦欢锛屽叿浣撴搷浣滆涓嬮潰鐨 listAllObjects 绀轰緥 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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(); // 鏂囦欢鍒楄〃 + $prefixList = $listObjectInfo->getPrefixList(); // 鐩綍鍒楄〃 + if (!empty($objectList)) { + print("objectList:\n"); + foreach ($objectList as $objectInfo) { + print($objectInfo->getKey() . "\n"); + } + } + if (!empty($prefixList)) { + print("prefixList: \n"); + foreach ($prefixList as $prefixInfo) { + print($prefixInfo->getPrefix() . "\n"); + } + } +} + +/** + * 鍒楀嚭Bucket鍐呮墍鏈夌洰褰曞拰鏂囦欢锛 鏍规嵁杩斿洖鐨刵extMarker寰幆寰楀埌鎵鏈塐bjects + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @return null + */ +function listAllObjects($ossClient, $bucket) +{ + //鏋勯燿ir涓嬬殑鏂囦欢鍜岃櫄鎷熺洰褰 + 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; + } + // 寰楀埌nextMarker锛屼粠涓婁竴娆istObjects璇诲埌鐨勬渶鍚庝竴涓枃浠剁殑涓嬩竴涓枃浠跺紑濮嬬户缁幏鍙栨枃浠跺垪琛 + $nextMarker = $listObjectInfo->getNextMarker(); + $listObject = $listObjectInfo->getObjectList(); + $listPrefix = $listObjectInfo->getPrefixList(); + var_dump(count($listObject)); + var_dump(count($listPrefix)); + if ($nextMarker === '') { + break; + } + } +} + +/** + * 鑾峰彇object鐨勫唴瀹 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); + } +} + +/** + * get_object_to_local_file + * + * 鑾峰彇object + * 灏唎bject涓嬭浇鍒版寚瀹氱殑鏂囦欢 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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); + } +} + +/** + * 鎷疯礉object + * 褰撶洰鐨刼bject鍜屾簮object瀹屽叏鐩稿悓鏃讹紝琛ㄧず淇敼object鐨刴eta淇℃伅 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 淇敼Object Meta + * 鍒╃敤copyObject鎺ュ彛鐨勭壒鎬э細褰撶洰鐨刼bject鍜屾簮object瀹屽叏鐩稿悓鏃讹紝琛ㄧず淇敼object鐨刴eta淇℃伅 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鑾峰彇object meta, 涔熷氨鏄痝etObjectMeta鎺ュ彛 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); + } +} + +/** + * 鍒犻櫎object + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + + +/** + * 鎵归噺鍒犻櫎object + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); +} + +/** + * 鍒ゆ柇object鏄惁瀛樺湪 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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); +} + diff --git a/aliyun-oss-php-sdk-2.2.2/samples/RunAll.php b/aliyun-oss-php-sdk-2.2.2/samples/RunAll.php new file mode 100644 index 0000000..a4d6d9b --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/samples/RunAll.php @@ -0,0 +1,13 @@ +uploadFile($bucket, "a.file", __FILE__); + +// 鐢熸垚GetObject鐨勭鍚島rl锛岀敤鎴峰彲浠ヤ娇鐢ㄨ繖涓猽rl鐩存帴鍦ㄦ祻瑙堝櫒涓嬭浇 +$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600); +Common::println($signedUrl); + +// 鐢熸垚鐢ㄤ簬putObject鐨勭鍚峌RL锛岀敤鎴峰彲浠ョ洿鎺ョ敤put鏂规硶浣跨敤杩欎釜url涓婁紶鏂囦欢鍒 "a.file" +$signedUrl = $ossClient->signUrl($bucket, "a.file", "3600", "PUT"); +Common::println($signedUrl); + +// 鐢熸垚浠庢湰鍦版枃浠朵笂浼燩utObject鐨勭鍚島rl, 鐢ㄦ埛鍙互鐩存帴浣跨敤杩欎釜url鎶婃湰鍦版枃浠朵笂浼犲埌銆"a.file" +$signedUrl = $ossClient->signUrl($bucket, "a.file", 3600, "PUT", array('Content-Type' => 'txt')); +Common::println($signedUrl); + +//******************************* 瀹屾暣鐢ㄦ硶鍙傝冧笅闈㈠嚱鏁 **************************************************** + +getSignedUrlForPuttingObject($ossClient, $bucket); +getSignedUrlForPuttingObjectFromFile($ossClient, $bucket); +getSignedUrlForGettingObject($ossClient, $bucket); + +/** + * 鐢熸垚GetObject鐨勭鍚島rl,涓昏鐢ㄤ簬绉佹湁鏉冮檺涓嬬殑璇昏闂帶鍒 + * + * @param $ossClient OssClient OssClient瀹炰緥 + * @param $bucket string 瀛樺偍绌洪棿鍚嶇О + * @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"); + /** + * 鍙互绫讳技鐨勪唬鐮佹潵璁块棶绛惧悕鐨刄RL锛屼篃鍙互杈撳叆鍒版祻瑙堝櫒涓幓璁块棶 + */ + $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"); + }; +} + +/** + * 鐢熸垚PutObject鐨勭鍚島rl,涓昏鐢ㄤ簬绉佹湁鏉冮檺涓嬬殑鍐欒闂帶鍒 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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"); + }; +} + +/** + * 鐢熸垚PutObject鐨勭鍚島rl,涓昏鐢ㄤ簬绉佹湁鏉冮檺涓嬬殑鍐欒闂帶鍒讹紝 鐢ㄦ埛鍙互鍒╃敤鐢熸垚鐨剆ignedUrl + * 浠庢枃浠朵笂浼犳枃浠 + * + * @param OssClient $ossClient OssClient瀹炰緥 + * @param string $bucket 瀛樺偍绌洪棿鍚嶇О + * @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(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/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/MimeTypes.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/MimeTypes.php new file mode 100644 index 0000000..e9b88ff --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/MimeTypes.php @@ -0,0 +1,262 @@ + 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/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssException.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssException.php new file mode 100644 index 0000000..b0e9e8b --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssException.php @@ -0,0 +1,54 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssUtil.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssUtil.php new file mode 100644 index 0000000..b70680e --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Core/OssUtil.php @@ -0,0 +1,448 @@ + $value) { + if (is_string($key) && !is_array($value)) { + $temp[] = rawurlencode($key) . '=' . rawurlencode($value); + } + } + return implode('&', $temp); + } + + /** + * 杞箟瀛楃鏇挎崲 + * + * @param string $subject + * @return string + */ + public static function sReplace($subject) + { + $search = array('<', '>', '&', '\'', '"'); + $replace = array('<', '>', '&', ''', '"'); + return str_replace($search, $replace, $subject); + } + + /** + * 妫鏌ユ槸鍚︽槸涓枃缂栫爜 + * + * @param $str + * @return int + */ + public static function chkChinese($str) + { + return preg_match('/[\x80-\xff]./', $str); + } + + /** + * 妫娴嬫槸鍚B2312缂栫爜 + * + * @param string $str + * @return boolean false UTF-8缂栫爜 TRUE GB2312缂栫爜 + */ + 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; + } + + /** + * 妫娴嬫槸鍚BK缂栫爜 + * + * @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; + } + + /** + * 妫楠宐ucket鍚嶇О鏄惁鍚堟硶 + * bucket鐨勫懡鍚嶈鑼冿細 + * 1. 鍙兘鍖呮嫭灏忓啓瀛楁瘝锛屾暟瀛 + * 2. 蹇呴』浠ュ皬鍐欏瓧姣嶆垨鑰呮暟瀛楀紑澶 + * 3. 闀垮害蹇呴』鍦3-63瀛楄妭涔嬮棿 + * + * @param string $bucket Bucket鍚嶇О + * @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; + } + + /** + * 妫楠宱bject鍚嶇О鏄惁鍚堟硶 + * object鍛藉悕瑙勮寖: + * 1. 瑙勫垯闀垮害蹇呴』鍦1-1023瀛楄妭涔嬮棿 + * 2. 浣跨敤UTF-8缂栫爜 + * 3. 涓嶈兘浠 "/" "\\"寮澶 + * + * @param string $object Object鍚嶇О + * @return boolean + */ + public static function validateObject($object) + { + $pattern = '/^.{1,1023}$/'; + if (empty($object) || !preg_match($pattern, $object) || + self::startsWith($object, '/') || self::startsWith($object, '\\') + ) { + return false; + } + return true; + } + + + /** + * 鍒ゆ柇瀛楃涓$str鏄笉鏄互$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; + } + } + + /** + * 妫楠$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'); + } + } + + /** + * 妫鏌ヤ笂浼犳枃浠剁殑鍐呭鏄惁鍚堟硶 + * + * @param $content string + * @throws OssException + */ + public static function validateContent($content) + { + if (empty($content)) { + throw new OssException("http body content is invalid"); + } + } + + /** + * 鏍¢獙BUCKET/OBJECT/OBJECT GROUP鏄惁涓虹┖ + * + * @param string $name + * @param string $errMsg + * @throws OssException + * @return void + */ + public static function throwOssExceptionWithMessageIfEmpty($name, $errMsg) + { + if (empty($name)) { + throw new OssException($errMsg); + } + } + + /** + * 浠呬緵娴嬭瘯浣跨敤鐨勬帴鍙,璇峰嬁浣跨敤 + * + * @param $filename + * @param $size + */ + public static function generateFile($filename, $size) + { + if (file_exists($filename) && $size == 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); + } + + /** + * 寰楀埌鏂囦欢鐨刴d5缂栫爜 + * + * @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 = 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; + } + + /** + * 妫娴嬫槸鍚indows绯荤粺锛屽洜涓簑indows绯荤粺榛樿缂栫爜涓篏BK + * + * @return bool + */ + public static function isWin() + { + return strtoupper(substr(PHP_OS, 0, 3)) == "WIN"; + } + + /** + * 涓昏鏄敱浜巜indows绯荤粺缂栫爜鏄痝bk锛岄亣鍒颁腑鏂囨椂鍊欙紝濡傛灉涓嶈繘琛岃浆鎹㈠鐞嗕細鍑虹幇鎵句笉鍒版枃浠剁殑闂 + * + * @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; + } + + /** + * 鍒ゆ柇鐢ㄦ埛杈撳叆鐨別ndpoint鏄惁鏄 xxx.xxx.xxx.xxx:port 鎴栬 xxx.xxx.xxx.xxx鐨刬p鏍煎紡 + * + * @param string $endpoint 闇瑕佸仛鍒ゆ柇鐨別ndpoint + * @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; + } + } + + /** + * 鐢熸垚DeleteMultiObjects鎺ュ彛鐨剎ml娑堟伅 + * + * @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(); + } + + /** + * 鐢熸垚CompleteMultipartUpload鎺ュ彛鐨剎ml娑堟伅 + * + * @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(); + } + + /** + * 璇诲彇鐩綍 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/LICENSE b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/LICENSE new file mode 100644 index 0000000..49b38bd --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/LICENSE @@ -0,0 +1,25 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore.php new file mode 100644 index 0000000..ec447e1 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore.php @@ -0,0 +1,848 @@ +). + */ + 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; + + /** + * 璇锋眰瓒呮椂鏃堕棿锛 榛樿鏄5184000绉掞紝6澶 + * + * @var int + */ + public $timeout = 5184000; + + /** + * 杩炴帴瓒呮椂鏃堕棿锛岄粯璁ゆ槸10绉 + * + * @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 + + /** + * Constructs 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; + } + + /** + * Destructs 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 + + /** + * Sets 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; + } + + /** + * Adds 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; + } + + /** + * Removes 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; + } + + /** + * Sets 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; + } + + /** + * Sets 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; + } + + /** + * Sets 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); + } + + /** + * Sets 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); + } + + /** + * Sets 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; + } + + /** + * Sets 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; + $write_file_handle = fopen($location, 'w'); + + return $this->set_write_stream($write_file_handle); + } + + /** + * 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; + } + + /** + * Register a callback function to execute whenever a data stream is read from using + * . + * + * The user-defined callback function should accept three arguments: + * + *

+ * + * @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) + { + $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; + } + + /** + * Prepares 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_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) { + curl_setopt($curl_handle, CURLOPT_HTTPPROXYTUNNEL, true); + + $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; + } + + 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)) { + 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 $curl_handle (Optional) The reference to the already executed cURL request. + * @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... + if (is_resource($curl_handle)) { + // 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); + + // 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; + } + + /** + * Sends 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 resource: ' . (string)$curl_handle . '; cURL error: ' . curl_error($curl_handle) . ' (' . curl_errno($curl_handle) . ')'); + } + + $parsed_response = $this->process_response($curl_handle, $this->response); + + curl_close($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/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore_Exception.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore_Exception.php new file mode 100644 index 0000000..cb4e83c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Http/RequestCore_Exception.php @@ -0,0 +1,8 @@ +). + * @param string $body (Required) XML-formatted response from AWS. + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketInfo.php new file mode 100644 index 0000000..9b89674 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketInfo.php @@ -0,0 +1,78 @@ +location = $location; + $this->name = $name; + $this->createDate = $createDate; + } + + /** + * 寰楀埌bucket鎵鍦ㄧ殑region + * + * @return string + */ + public function getLocation() + { + return $this->location; + } + + /** + * 寰楀埌bucket鐨勫悕绉 + * + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * 寰楀埌bucket鐨勫垱寤烘椂闂 + * + * @return string + */ + public function getCreateDate() + { + return $this->createDate; + } + + /** + * bucket鎵鍦ㄧ殑region + * + * @var string + */ + private $location; + /** + * bucket鐨勫悕绉 + * + * @var string + */ + private $name; + + /** + * bucket鐨勫垱寤轰簨浠 + * + * @var string + */ + private $createDate; + +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketListInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketListInfo.php new file mode 100644 index 0000000..910717f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/BucketListInfo.php @@ -0,0 +1,39 @@ +bucketList = $bucketList; + } + + /** + * 寰楀埌BucketInfo鍒楄〃 + * + * @return BucketInfo[] + */ + public function getBucketList() + { + return $this->bucketList; + } + + /** + * BucketInfo淇℃伅鍒楄〃 + * + * @var array + */ + private $bucketList = array(); +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CnameConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CnameConfig.php new file mode 100644 index 0000000..f3597d2 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CnameConfig.php @@ -0,0 +1,99 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsConfig.php new file mode 100644 index 0000000..c44c10a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsConfig.php @@ -0,0 +1,113 @@ +rules = array(); + } + + /** + * 寰楀埌CorsRule鍒楄〃 + * + * @return CorsRule[] + */ + public function getRules() + { + return $this->rules; + } + + + /** + * 娣诲姞涓鏉orsRule + * + * @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; + } + + /** + * 浠巟ml鏁版嵁涓В鏋愬嚭CorsConfig + * + * @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; + } + + /** + * 鐢熸垚xml瀛楃涓 + * + * @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; + + /** + * orsRule鍒楄〃 + * + * @var CorsRule[] + */ + private $rules = array(); +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsRule.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsRule.php new file mode 100644 index 0000000..2cbe1c1 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/CorsRule.php @@ -0,0 +1,150 @@ +allowedOrigins[] = $allowedOrigin; + } + } + + /** + * Rule涓鍔犱竴鏉llowedMethod + * + * @param string $allowedMethod + */ + public function addAllowedMethod($allowedMethod) + { + if (!empty($allowedMethod)) { + $this->allowedMethods[] = $allowedMethod; + } + } + + /** + * Rule涓鍔犱竴鏉llowedHeader + * + * @param string $allowedHeader + */ + public function addAllowedHeader($allowedHeader) + { + if (!empty($allowedHeader)) { + $this->allowedHeaders[] = $allowedHeader; + } + } + + /** + * Rule涓鍔犱竴鏉xposeHeader + * + * @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; + } + + /** + * 寰楀埌AllowedHeaders鍒楄〃 + * + * @return string[] + */ + public function getAllowedHeaders() + { + return $this->allowedHeaders; + } + + /** + * 寰楀埌AllowedOrigins鍒楄〃 + * + * @return string[] + */ + public function getAllowedOrigins() + { + return $this->allowedOrigins; + } + + /** + * 寰楀埌AllowedMethods鍒楄〃 + * + * @return string[] + */ + public function getAllowedMethods() + { + return $this->allowedMethods; + } + + /** + * 寰楀埌ExposeHeaders鍒楄〃 + * + * @return string[] + */ + public function getExposeHeaders() + { + return $this->exposeHeaders; + } + + /** + * 鏍规嵁鎻愪緵鐨剎mlRule锛 鎶妕his鎸夌収涓瀹氱殑瑙勫垯鎻掑叆鍒$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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelHistory.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelHistory.php new file mode 100644 index 0000000..6643444 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelHistory.php @@ -0,0 +1,34 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelInfo.php new file mode 100644 index 0000000..0b5edfc --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelInfo.php @@ -0,0 +1,68 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelStatus.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelStatus.php new file mode 100644 index 0000000..2ee7a68 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/GetLiveChannelStatus.php @@ -0,0 +1,107 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleAction.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleAction.php new file mode 100644 index 0000000..5abd825 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleAction.php @@ -0,0 +1,88 @@ +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; + } + + /** + * appendToXml 鎶奱ctions鎻掑叆鍒皒ml涓 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleConfig.php new file mode 100644 index 0000000..fc4f575 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleConfig.php @@ -0,0 +1,107 @@ +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; + } + + + /** + * 鐢熸垚xml瀛楃涓 + * + * @return string + */ + public function serializeToXml() + { + + $xml = new \SimpleXMLElement(''); + foreach ($this->rules as $rule) { + $xmlRule = $xml->addChild('Rule'); + $rule->appendToXml($xmlRule); + } + return $xml->asXML(); + } + + /** + * + * 娣诲姞LifecycleRule + * + * @param LifecycleRule $lifecycleRule + * @throws OssException + */ + public function addRule($lifecycleRule) + { + if (!isset($lifecycleRule)) { + throw new OssException("lifecycleRule is null"); + } + $this->rules[] = $lifecycleRule; + } + + /** + * 灏嗛厤缃浆鎹㈡垚瀛楃涓诧紝渚夸簬鐢ㄦ埛鏌ョ湅 + * + * @return string + */ + public function __toString() + { + return $this->serializeToXml(); + } + + /** + * 寰楀埌鎵鏈夌殑鐢熷懡鍛ㄦ湡瑙勫垯 + * + * @return LifecycleRule[] + */ + public function getRules() + { + return $this->rules; + } + + /** + * @var LifecycleRule[] + */ + private $rules; +} + + diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleRule.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleRule.php new file mode 100644 index 0000000..ec615b9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LifecycleRule.php @@ -0,0 +1,126 @@ +id; + } + + /** + * @param string $id 瑙勫垯ID + */ + public function setId($id) + { + $this->id = $id; + } + + /** + * 寰楀埌鏂囦欢鍓嶇紑 + * + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + /** + * 璁剧疆鏂囦欢鍓嶇紑 + * + * @param string $prefix 鏂囦欢鍓嶇紑 + */ + public function setPrefix($prefix) + { + $this->prefix = $prefix; + } + + /** + * Lifecycle瑙勫垯鐨勭姸鎬 + * + * @return string + */ + public function getStatus() + { + return $this->status; + } + + /** + * 璁剧疆Lifecycle瑙勫垯鐘舵 + * + * @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 瑙勫垯ID + * @param string $prefix 鏂囦欢鍓嶇紑 + * @param string $status 瑙勫垯鐘舵侊紝鍙塠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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListMultipartUploadInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListMultipartUploadInfo.php new file mode 100644 index 0000000..105d005 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListMultipartUploadInfo.php @@ -0,0 +1,134 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListPartsInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListPartsInfo.php new file mode 100644 index 0000000..f1d10ee --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ListPartsInfo.php @@ -0,0 +1,97 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelConfig.php new file mode 100644 index 0000000..dadedc9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelConfig.php @@ -0,0 +1,121 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelHistory.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelHistory.php new file mode 100644 index 0000000..1c1fd4d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelHistory.php @@ -0,0 +1,59 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelInfo.php new file mode 100644 index 0000000..c63ec54 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelInfo.php @@ -0,0 +1,107 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelListInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelListInfo.php new file mode 100644 index 0000000..bb5093a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LiveChannelListInfo.php @@ -0,0 +1,107 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LoggingConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LoggingConfig.php new file mode 100644 index 0000000..978421a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/LoggingConfig.php @@ -0,0 +1,86 @@ +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; + } + } + + /** + * 搴忓垪鍖栨垚xml瀛楃涓 + * + */ + 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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectInfo.php new file mode 100644 index 0000000..2ae6c99 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectInfo.php @@ -0,0 +1,93 @@ +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; + } + + /** + * @return int + */ + public function getSize() + { + 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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectListInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectListInfo.php new file mode 100644 index 0000000..dbe7c7a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/ObjectListInfo.php @@ -0,0 +1,126 @@ +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; + } + + /** + * 杩斿洖ListObjects鎺ュ彛杩斿洖鏁版嵁涓殑ObjectInfo鍒楄〃 + * + * @return ObjectInfo[] + */ + public function getObjectList() + { + return $this->objectList; + } + + /** + * 杩斿洖ListObjects鎺ュ彛杩斿洖鏁版嵁涓殑PrefixInfo鍒楄〃 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PartInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PartInfo.php new file mode 100644 index 0000000..439a84d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PartInfo.php @@ -0,0 +1,63 @@ +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; + } + + /** + * @return int + */ + public function getSize() + { + return $this->size; + } + + private $partNumber = 0; + private $lastModified = ""; + private $eTag = ""; + private $size = 0; +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PrefixInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PrefixInfo.php new file mode 100644 index 0000000..e61eac4 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/PrefixInfo.php @@ -0,0 +1,36 @@ +prefix = $prefix; + } + + /** + * @return string + */ + public function getPrefix() + { + return $this->prefix; + } + + private $prefix; +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/RefererConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/RefererConfig.php new file mode 100644 index 0000000..1d7d975 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/RefererConfig.php @@ -0,0 +1,93 @@ +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); + } + } + + + /** + * 鎶奟efererConfig搴忓垪鍖栨垚xml + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/UploadInfo.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/UploadInfo.php new file mode 100644 index 0000000..8eaa363 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/UploadInfo.php @@ -0,0 +1,55 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/WebsiteConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/WebsiteConfig.php new file mode 100644 index 0000000..8ea08a0 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/WebsiteConfig.php @@ -0,0 +1,76 @@ +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); + } + } + + /** + * 鎶奧ebsiteConfig搴忓垪鍖栨垚xml + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/XmlConfig.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/XmlConfig.php new file mode 100644 index 0000000..d353a22 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Model/XmlConfig.php @@ -0,0 +1,27 @@ +hostname = $this->checkEndpoint($endpoint, $isCName); + $this->accessKeyId = $accessKeyId; + $this->accessKeySecret = $accessKeySecret; + $this->securityToken = $securityToken; + self::checkEnv(); + } + + /** + * 鍒椾妇鐢ㄦ埛鎵鏈夌殑Bucket[GetService], Endpoint绫诲瀷涓篶name涓嶈兘杩涜姝ゆ搷浣 + * + * @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(); + } + + /** + * 鍒涘缓bucket锛岄粯璁ゅ垱寤虹殑bucket鐨凙CL鏄疧ssClient::OSS_ACL_TYPE_PRIVATE + * + * @param string $bucket + * @param string $acl + * @param array $options + * @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); + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 鍒犻櫎bucket + * 濡傛灉Bucket涓嶄负绌猴紙Bucket涓湁Object锛屾垨鑰呮湁鍒嗗潡涓婁紶鐨勭鐗囷級锛屽垯Bucket鏃犳硶鍒犻櫎锛 + * 蹇呴』鍒犻櫎Bucket涓殑鎵鏈塐bject浠ュ強纰庣墖鍚庯紝Bucket鎵嶈兘鎴愬姛鍒犻櫎銆 + * + * @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(); + } + + /** + * 鍒ゆ柇bucket鏄惁瀛樺湪 + * + * @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(); + } + + /** + * 鑾峰彇bucket鐨凙CL閰嶇疆鎯呭喌 + * + * @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(); + } + + /** + * 璁剧疆bucket鐨凙CL閰嶇疆鎯呭喌 + * + * @param string $bucket bucket鍚嶇О + * @param string $acl 璇诲啓鏉冮檺锛屽彲閫夊 ['private', 'public-read', 'public-read-write'] + * @param array $options 鍙互涓虹┖ + * @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(); + } + + /** + * 鑾峰彇object鐨凙CL灞炴 + * + * @param string $bucket + * @param string $object + * @throws OssException + * @return string + */ + public function getObjectAcl($bucket, $object) + { + $options = array(); + $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(); + } + + /** + * 璁剧疆object鐨凙CL灞炴 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $acl 璇诲啓鏉冮檺锛屽彲閫夊 ['default', 'private', 'public-read', 'public-read-write'] + * @throws OssException + * @return null + */ + public function putObjectAcl($bucket, $object, $acl) + { + $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(); + } + + /** + * 鑾峰彇Bucket鐨勮闂棩蹇楅厤缃儏鍐 + * + * @param string $bucket bucket鍚嶇О + * @param array $options 鍙互涓虹┖ + * @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(); + } + + /** + * 寮鍚疊ucket璁块棶鏃ュ織璁板綍鍔熻兘锛屽彧鏈塀ucket鐨勬墍鏈夎呮墠鑳芥洿鏀 + * + * @param string $bucket bucket鍚嶇О + * @param string $targetBucket 鏃ュ織鏂囦欢瀛樻斁鐨刡ucket + * @param string $targetPrefix 鏃ュ織鐨勬枃浠跺墠缂 + * @param array $options 鍙互涓虹┖ + * @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(); + } + + /** + * 鍏抽棴bucket璁块棶鏃ュ織璁板綍鍔熻兘 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 灏哹ucket璁剧疆鎴愰潤鎬佺綉绔欐墭绠℃ā寮 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鑾峰彇bucket鐨勯潤鎬佺綉绔欐墭绠$姸鎬 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鍏抽棴bucket鐨勯潤鎬佺綉绔欐墭绠℃ā寮 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鍦ㄦ寚瀹氱殑bucket涓婅瀹氫竴涓法鍩熻祫婧愬叡浜(CORS)鐨勮鍒欙紝濡傛灉鍘熻鍒欏瓨鍦ㄥ垯瑕嗙洊鍘熻鍒 + * + * @param string $bucket bucket鍚嶇О + * @param CorsConfig $corsConfig 璺ㄥ煙璧勬簮鍏变韩閰嶇疆锛屽叿浣撹鍒欏弬瑙丼DK鏂囨。 + * @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(); + } + + /** + * 鑾峰彇Bucket鐨凜ORS閰嶇疆鎯呭喌 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鍏抽棴鎸囧畾Bucket瀵瑰簲鐨凜ORS鍔熻兘骞舵竻绌烘墍鏈夎鍒 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 涓烘寚瀹欱ucket澧炲姞CNAME缁戝畾 + * + * @param string $bucket bucket鍚嶇О + * @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_SUB_RESOURCE] = 'cname'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $cnameConfig = new CnameConfig(); + $cnameConfig->addCname($cname); + $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); + $options[self::OSS_COMP] = 'add'; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 鑾峰彇鎸囧畾Bucket宸茬粦瀹氱殑CNAME鍒楄〃 + * + * @param string $bucket bucket鍚嶇О + * @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_SUB_RESOURCE] = 'cname'; + $response = $this->auth($options); + $result = new GetCnameResult($response); + return $result->getData(); + } + + /** + * 瑙i櫎鎸囧畾Bucket鐨凜NAME缁戝畾 + * + * @param string $bucket bucket鍚嶇О + * @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_SUB_RESOURCE] = 'cname'; + $options[self::OSS_CONTENT_TYPE] = 'application/xml'; + $cnameConfig = new CnameConfig(); + $cnameConfig->addCname($cname); + $options[self::OSS_CONTENT] = $cnameConfig->serializeToXml(); + $options[self::OSS_COMP] = 'delete'; + + $response = $this->auth($options); + $result = new PutSetDeleteResult($response); + return $result->getData(); + } + + /** + * 涓烘寚瀹欱ucket鍒涘缓LiveChannel + * + * @param string $bucket bucket鍚嶇О + * @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; + } + + /** + * 璁剧疆LiveChannel鐨剆tatus + * + * @param string $bucket bucket鍚嶇О + * @param string channelName $channelName + * @param string channelStatus $channelStatus 涓篹nabled鎴杁isabled + * @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(); + } + + /** + * 鑾峰彇LiveChannel淇℃伅 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鑾峰彇LiveChannel鐘舵佷俊鎭 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + *鑾峰彇LiveChannel鎺ㄦ祦璁板綍 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + *鑾峰彇鎸囧畾Bucket涓嬬殑live channel鍒楄〃 + * + * @param string $bucket bucket鍚嶇О + * @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; + } + + /** + * 涓烘寚瀹歀iveChannel鐢熸垚鎾斁鍒楄〃 + * + * @param string $bucket bucket鍚嶇О + * @param string channelName $channelName + * @param string $playlistName 鎸囧畾鐢熸垚鐨勭偣鎾挱鏀惧垪琛ㄧ殑鍚嶇О锛屽繀椤讳互鈥.m3u8鈥濈粨灏 + * @param array $setTime startTime鍜孍ndTime浠nix鏃堕棿鎴虫牸寮忕粰瀹,璺ㄥ害涓嶈兘瓒呰繃涓澶 + * @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(); + } + + /** + * 鍒犻櫎鎸囧畾Bucket鐨凩iveChannel + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鐢熸垚甯︾鍚嶇殑鎺ㄦ祦鍦板潃 + * + * @param string $bucket bucket鍚嶇О + * @param string channelName $channelName + * @param int timeout 璁剧疆瓒呮椂鏃堕棿锛屽崟浣嶄负绉 + * @param array $options + * @throws OssException + * @return 鎺ㄦ祦鍦板潃 + */ + 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; + $signature = base64_encode(hash_hmac('sha1', $string_to_sign, $this->accessKeySecret, true)); + + $query_items[] = 'OSSAccessKeyId=' . rawurlencode($this->accessKeyId); + $query_items[] = 'Expires=' . rawurlencode($expires); + $query_items[] = 'Signature=' . rawurlencode($signature); + + return $proto . $hostname . '/live/' . $channelName . '?' . implode('&', $query_items); + } + + /** + * 妫楠岃法鍩熻祫婧愯姹, 鍙戦佽法鍩熻姹備箣鍓嶄細鍙戦佷竴涓猵reflight璇锋眰锛圤PTIONS锛夊苟甯︿笂鐗瑰畾鐨勬潵婧愬煙锛 + * HTTP鏂规硶鍜宧eader淇℃伅绛夌粰OSS浠ュ喅瀹氭槸鍚﹀彂閫佺湡姝g殑璇锋眰銆 OSS鍙互閫氳繃putBucketCors鎺ュ彛 + * 鏉ュ紑鍚疊ucket鐨凜ORS鏀寔锛屽紑鍚疌ORS鍔熻兘涔嬪悗锛孫SS鍦ㄦ敹鍒版祻瑙堝櫒preflight璇锋眰鏃朵細鏍规嵁璁惧畾鐨 + * 瑙勫垯璇勪及鏄惁鍏佽鏈璇锋眰 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $origin 璇锋眰鏉ユ簮鍩 + * @param string $request_method 琛ㄦ槑瀹為檯璇锋眰涓細浣跨敤鐨凥TTP鏂规硶 + * @param string $request_headers 琛ㄦ槑瀹為檯璇锋眰涓細浣跨敤鐨勯櫎浜嗙畝鍗曞ご閮ㄤ箣澶栫殑headers + * @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(); + } + + /** + * 璁剧疆Bucket鐨凩ifecycle閰嶇疆 + * + * @param string $bucket bucket鍚嶇О + * @param LifecycleConfig $lifecycleConfig Lifecycle閰嶇疆绫 + * @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(); + } + + /** + * 鑾峰彇Bucket鐨凩ifecycle閰嶇疆鎯呭喌 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鍒犻櫎鎸囧畾Bucket鐨勭敓鍛藉懆鏈熼厤缃 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 璁剧疆涓涓猙ucket鐨剅eferer璁块棶鐧藉悕鍗曞拰鏄惁鍏佽referer瀛楁涓虹┖鐨勮姹傝闂 + * Bucket Referer闃茬洍閾惧叿浣撹OSS闃茬洍閾 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鑾峰彇Bucket鐨凴eferer閰嶇疆鎯呭喌 + * Bucket Referer闃茬洍閾惧叿浣撹OSS闃茬洍閾 + * + * @param string $bucket bucket鍚嶇О + * @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(); + } + + /** + * 鑾峰彇bucket涓嬬殑object鍒楄〃 + * + * @param string $bucket + * @param array $options + * 鍏朵腑options涓殑鍙傛暟濡備笅 + * $options = array( + * 'max-keys' => max-keys鐢ㄤ簬闄愬畾姝ゆ杩斿洖object鐨勬渶澶ф暟锛屽鏋滀笉璁惧畾锛岄粯璁や负100锛宮ax-keys鍙栧间笉鑳藉ぇ浜1000銆 + * 'prefix' => 闄愬畾杩斿洖鐨刼bject key蹇呴』浠refix浣滀负鍓嶇紑銆傛敞鎰忎娇鐢╬refix鏌ヨ鏃讹紝杩斿洖鐨刱ey涓粛浼氬寘鍚玴refix銆 + * 'delimiter' => 鏄竴涓敤浜庡Object鍚嶅瓧杩涜鍒嗙粍鐨勫瓧绗︺傛墍鏈夊悕瀛楀寘鍚寚瀹氱殑鍓嶇紑涓旂涓娆″嚭鐜癲elimiter瀛楃涔嬮棿鐨刼bject浣滀负涓缁勫厓绱 + * 'marker' => 鐢ㄦ埛璁惧畾缁撴灉浠巑arker涔嬪悗鎸夊瓧姣嶆帓搴忕殑绗竴涓紑濮嬭繑鍥炪 + *) + * 鍏朵腑 prefix锛宮arker鐢ㄦ潵瀹炵幇鍒嗛〉鏄剧ず鏁堟灉锛屽弬鏁扮殑闀垮害蹇呴』灏忎簬256瀛楄妭銆 + * @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] = '/'; + $options[self::OSS_HEADERS] = array( + 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] : '', + ); + $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 ListObjectsResult($response); + return $result->getData(); + } + + /** + * 鍒涘缓铏氭嫙鐩綍 (鏈嚱鏁颁細鍦╫bject鍚嶇О鍚庡鍔'/', 鎵浠ュ垱寤虹洰褰曠殑object鍚嶇О涓嶉渶瑕'/'缁撳熬锛屽惁鍒欙紝鐩綍鍚嶇О浼氬彉鎴'//') + * + * 鏆備笉寮鏀炬鎺ュ彛 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @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(); + } + + /** + * 涓婁紶鍐呭瓨涓殑鍐呭 + * + * @param string $bucket bucket鍚嶇О + * @param string $object objcet鍚嶇О + * @param string $content 涓婁紶鐨勫唴瀹 + * @param array $options + * @return null + */ + public function putObject($bucket, $object, $content, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + + OssUtil::validateContent($content); + $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]; + } + + 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(); + } + + /** + * 涓婁紶鏈湴鏂囦欢 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $file 鏈湴鏂囦欢璺緞 + * @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 = 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(); + } + + /** + * 杩藉姞涓婁紶鍐呭瓨涓殑鍐呭 + * + * @param string $bucket bucket鍚嶇О + * @param string $object objcet鍚嶇О + * @param string $content 鏈杩藉姞涓婁紶鐨勫唴瀹 + * @param array $options + * @return int next append position + * @throws OssException + */ + public function appendObject($bucket, $object, $content, $position, $options = NULL) + { + $this->precheckCommon($bucket, $object, $options); + + OssUtil::validateContent($content); + $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]; + } + + 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(); + } + + /** + * 杩藉姞涓婁紶鏈湴鏂囦欢 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $file 杩藉姞涓婁紶鐨勬湰鍦版枃浠惰矾寰 + * @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 = 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(); + } + + /** + * 鎷疯礉涓涓湪OSS涓婂凡缁忓瓨鍦ㄧ殑object鎴愬彟澶栦竴涓猳bject + * + * @param string $fromBucket 婧恇ucket鍚嶇О + * @param string $fromObject 婧恛bject鍚嶇О + * @param string $toBucket 鐩爣bucket鍚嶇О + * @param string $toObject 鐩爣object鍚嶇О + * @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; + if (isset($options[self::OSS_HEADERS])) { + $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = '/' . $fromBucket . '/' . $fromObject; + } else { + $options[self::OSS_HEADERS] = array(self::OSS_OBJECT_COPY_SOURCE => '/' . $fromBucket . '/' . $fromObject); + } + $response = $this->auth($options); + $result = new CopyObjectResult($response); + return $result->getData(); + } + + /** + * 鑾峰彇Object鐨凪eta淇℃伅 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $options 鍏蜂綋鍙傝僑DK鏂囨。 + * @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(); + } + + /** + * 鍒犻櫎鏌愪釜Object + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @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(); + } + + /** + * 鍒犻櫎鍚屼竴涓狟ucket涓殑澶氫釜Object + * + * @param string $bucket bucket鍚嶇О + * @param array $objects object鍒楄〃 + * @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(); + } + + /** + * 鑾峰緱Object鍐呭 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param array $options 璇ュ弬鏁颁腑蹇呴』璁剧疆ALIOSS::OSS_FILE_DOWNLOAD锛孉LIOSS::OSS_RANGE鍙夛紝鍙互鏍规嵁瀹為檯鎯呭喌璁剧疆锛涘鏋滀笉璁剧疆锛岄粯璁や細涓嬭浇鍏ㄩ儴鍐呭 + * @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(); + } + + /** + * 妫娴婳bject鏄惁瀛樺湪 + * 閫氳繃鑾峰彇Object鐨凪eta淇℃伅鏉ュ垽鏂璒bject鏄惁瀛樺湪锛 鐢ㄦ埛闇瑕佽嚜琛岃В鏋怰esponseCore鍒ゆ柇object鏄惁瀛樺湪 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param array $options + * @return bool + */ + 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(); + } + + /** + * 鑾峰彇鍒嗙墖澶у皬锛屾牴鎹敤鎴锋彁渚涚殑part_size锛岄噸鏂拌绠椾竴涓洿鍚堢悊鐨刾artsize + * + * @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; + } + + /** + * 璁$畻鏂囦欢鍙互鍒嗘垚澶氬皯涓猵art锛屼互鍙婃瘡涓猵art鐨勯暱搴︿互鍙婅捣濮嬩綅缃 + * 鏂规硶蹇呴』鍦 涓皟鐢 + * + * @param integer $file_size 鏂囦欢澶у皬 + * @param integer $partSize part澶у皬,榛樿5M + * @return array An array 鍖呭惈 key-value 閿煎. Key 涓 `seekTo` 鍜 `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; + } + + /** + * 鍒濆鍖杕ulti-part upload + * + * @param string $bucket Bucket鍚嶇О + * @param string $object Object鍚嶇О + * @param array $options Key-Value鏁扮粍 + * @throws OssException + * @return string 杩斿洖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(); + } + + /** + * 鍒嗙墖涓婁紶鐨勫潡涓婁紶鎺ュ彛 + * + * @param string $bucket Bucket鍚嶇О + * @param string $object Object鍚嶇О + * @param string $uploadId + * @param array $options Key-Value鏁扮粍 + * @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(); + } + + /** + * 鑾峰彇宸叉垚鍔熶笂浼犵殑part + * + * @param string $bucket Bucket鍚嶇О + * @param string $object Object鍚嶇О + * @param string $uploadId uploadId + * @param array $options Key-Value鏁扮粍 + * @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(); + } + + /** + * 涓杩涜涓鍗婄殑鍒嗙墖涓婁紶鎿嶄綔 + * + * @param string $bucket Bucket鍚嶇О + * @param string $object Object鍚嶇О + * @param string $uploadId uploadId + * @param array $options Key-Value鏁扮粍 + * @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(); + } + + /** + * 鍦ㄥ皢鎵鏈夋暟鎹甈art閮戒笂浼犲畬鎴愬悗锛岃皟鐢ㄦ鎺ュ彛瀹屾垚鏈鍒嗗潡涓婁紶 + * + * @param string $bucket Bucket鍚嶇О + * @param string $object Object鍚嶇О + * @param string $uploadId uploadId + * @param array $listParts array( array("PartNumber"=> int, "ETag"=>string)) + * @param array $options Key-Value鏁扮粍 + * @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)) { + throw new OssException("listParts must be array type"); + } + $options[self::OSS_CONTENT] = OssUtil::createCompleteMultipartUploadXmlBody($listParts); + $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(); + } + + /** + * 缃楀垪鍑烘墍鏈夋墽琛屼腑鐨凪ultipart Upload浜嬩欢锛屽嵆宸茬粡琚垵濮嬪寲鐨凪ultipart Upload浣嗘槸鏈 + * Complete鎴栬匒bort鐨凪ultipart Upload浜嬩欢 + * + * @param string $bucket bucket + * @param array $options 鍏宠仈鏁扮粍 + * @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(); + } + + /** + * 浠庝竴涓凡瀛樺湪鐨凮bject涓嫹璐濇暟鎹潵涓婁紶涓涓狿art + * + * @param string $fromBucket 婧恇ucket鍚嶇О + * @param string $fromObject 婧恛bject鍚嶇О + * @param string $toBucket 鐩爣bucket鍚嶇О + * @param string $toObject 鐩爣object鍚嶇О + * @param int $partNumber 鍒嗗潡涓婁紶鐨勫潡id + * @param string $uploadId 鍒濆鍖杕ultipart upload杩斿洖鐨剈ploadid + * @param array $options Key-Value鏁扮粍 + * @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); + + //濡傛灉娌℃湁璁剧疆$options['isFullCopy']锛屽垯闇瑕佸己鍒跺垽鏂璫opy鐨勮捣姝綅缃 + $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(); + } + + $options[self::OSS_HEADERS][self::OSS_OBJECT_COPY_SOURCE] = '/' . $fromBucket . '/' . $fromObject; + $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(); + } + + /** + * multipart涓婁紶缁熶竴灏佽锛屼粠鍒濆鍖栧埌瀹屾垚multipart锛屼互鍙婂嚭閿欏悗涓鍔ㄤ綔 + * + * @param string $bucket bucket鍚嶇О + * @param string $object object鍚嶇О + * @param string $file 闇瑕佷笂浼犵殑鏈湴鏂囦欢鐨勮矾寰 + * @param array $options Key-Value鏁扮粍 + * @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 = 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__ . '().'); + } + // 澶勭悊partSize + 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); + // 濡傛灉涓婁紶鐨勬枃浠跺皬浜巔artSize,鍒欑洿鎺ヤ娇鐢ㄦ櫘閫氭柟寮忎笂浼 + if ($upload_file_size < $options[self::OSS_PART_SIZE] && !isset($options[self::OSS_UPLOAD_ID])) { + return $this->uploadFile($bucket, $object, $uploadFile, $options); + } + + // 鍒濆鍖杕ultipart + if (isset($options[self::OSS_UPLOAD_ID])) { + $uploadId = $options[self::OSS_UPLOAD_ID]; + } else { + // 鍒濆鍖 + $uploadId = $this->initiateMultipartUpload($bucket, $object, $options); + } + + // 鑾峰彇鐨勫垎鐗 + $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, + ); + } + return $this->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts); + } + + /** + * 涓婁紶鏈湴鐩綍鍐呯殑鏂囦欢鎴栬呯洰褰曞埌鎸囧畾bucket鐨勬寚瀹歱refix鐨刼bject涓 + * + * @param string $bucket bucket鍚嶇О + * @param string $prefix 闇瑕佷笂浼犲埌鐨刼bject鐨刱ey鍓嶇紑锛屽彲浠ョ悊瑙f垚bucket涓殑瀛愮洰褰曪紝缁撳熬涓嶈兘鏄'/'锛屾帴鍙d腑浼氳ˉ鍏'/' + * @param string $localDirectory 闇瑕佷笂浼犵殑鏈湴鐩綍 + * @param string $exclude 闇瑕佹帓闄ょ殑鐩綍 + * @param bool $recursive 鏄惁閫掑綊鐨勪笂浼爈ocalDirectory涓嬬殑瀛愮洰褰曞唴瀹 + * @param bool $checkMd5 + * @return array 杩斿洖涓や釜鍒楄〃 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 (!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; + } + + /** + * 鏀寔鐢熸垚get鍜宲ut绛惧悕, 鐢ㄦ埛鍙互鐢熸垚涓涓叿鏈変竴瀹氭湁鏁堟湡鐨 + * 绛惧悕杩囩殑url + * + * @param string $bucket + * @param string $object + * @param int $timeout + * @param string $method + * @param array $options Key-Value鏁扮粍 + * @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); + } + + /** + * 妫娴媜ptions鍙傛暟 + * + * @param array $options + * @throws OssException + */ + private function precheckOptions(&$options) + { + OssUtil::validateOptions($options); + if (!$options) { + $options = array(); + } + } + + /** + * 鏍¢獙bucket鍙傛暟 + * + * @param string $bucket + * @param string $errMsg + * @throws OssException + */ + private function precheckBucket($bucket, $errMsg = 'bucket is not allowed empty') + { + OssUtil::throwOssExceptionWithMessageIfEmpty($bucket, $errMsg); + } + + /** + * 鏍¢獙object鍙傛暟 + * + * @param string $object + * @throws OssException + */ + private function precheckObject($object) + { + OssUtil::throwOssExceptionWithMessageIfEmpty($object, "object name is empty"); + } + + /** + * 鏍¢獙bucket,options鍙傛暟 + * + * @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); + } + + /** + * 鍙傛暟鏍¢獙 + * + * @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 . '().'); + } + } + + /** + * 妫娴媘d5 + * + * @param array $options + * @return bool|null + */ + private function isCheckMD5($options) + { + return $this->getValue($options, self::OSS_CHECK_MD5, false, true, true); + } + + /** + * 鑾峰彇value + * + * @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; + } + + /** + * 鑾峰彇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; + } + + /** + * 楠岃瘉骞朵笖鎵ц璇锋眰锛屾寜鐓SS Api鍗忚锛屾墽琛屾搷浣 + * + * @param array $options + * @return ResponseCore + * @throws OssException + * @throws RequestCore_Exception + */ + private function auth($options) + { + OssUtil::validateOptions($options); + //楠岃瘉bucket锛宭ist_bucket鏃朵笉闇瑕侀獙璇 + $this->authPrecheckBucket($options); + //楠岃瘉object + $this->authPrecheckObject($options); + //Object鍚嶇О鐨勭紪鐮佸繀椤绘槸utf8 + $this->authPrecheckObjectEncoding($options); + //楠岃瘉ACL + $this->authPrecheckAcl($options); + // 鑾峰緱褰撴璇锋眰浣跨敤鐨勫崗璁ご锛屾槸https杩樻槸http + $scheme = $this->useSSL ? 'https://' : 'http://'; + // 鑾峰緱褰撴璇锋眰浣跨敤鐨刪ostname锛屽鏋滄槸鍏叡鍩熷悕鎴栬呬笓鏈夊煙鍚嶏紝bucket鎷煎湪鍓嶉潰鏋勬垚涓夌骇鍩熷悕 + $hostname = $this->generateHostname($options[self::OSS_BUCKET]); + $string_to_sign = ''; + $headers = $this->generateHeaders($options, $hostname); + $signable_query_string_params = $this->generateSignableQueryStringParam($options); + $signable_query_string = OssUtil::toQueryString($signable_query_string_params); + $resource_uri = $this->generateResourceUri($options); + //鐢熸垚璇锋眰URL + $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 = '&'; + } + $this->requestUrl = $scheme . $hostname . $resource_uri . $signable_query_string . $non_signable_resource; + + //鍒涘缓璇锋眰 + $request = new RequestCore($this->requestUrl); + $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"; + } + } + // 鐢熸垚 signable_resource + $signable_resource = $this->generateSignableResource($options); + $string_to_sign .= rawurldecode($signable_resource) . urldecode($signable_query_string); + + //瀵?鍚庨潰鐨勮绛惧悕鐨剆tring瀛楁瘝搴忔帓搴 + $string_to_sign_ordered = $this->stringToSignSorted($string_to_sign); + + $signature = base64_encode(hash_hmac('sha1', $string_to_sign_ordered, $this->accessKeySecret, true)); + $request->add_header('Authorization', 'OSS ' . $this->accessKeyId . ':' . $signature); + + if (isset($options[self::OSS_PREAUTH]) && (integer)$options[self::OSS_PREAUTH] > 0) { + $signed_url = $this->requestUrl . $conjunction . self::OSS_URL_ACCESS_KEY_ID . '=' . rawurlencode($this->accessKeyId) . '&' . self::OSS_URL_EXPIRES . '=' . $options[self::OSS_PREAUTH] . '&' . self::OSS_URL_SIGNATURE . '=' . rawurlencode($signature); + return $signed_url; + } elseif (isset($options[self::OSS_PREAUTH])) { + return $this->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'] = $this->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) { + //璁剧疆浼戠湢 + $delay = (integer)(pow(4, $this->redirects) * 100000); + usleep($delay); + $this->redirects++; + $data = $this->auth($options); + } + } + + $this->redirects = 0; + return $data; + } + + /** + * 璁剧疆鏈澶у皾璇曟鏁 + * + * @param int $maxRetries + * @return void + */ + public function setMaxTries($maxRetries = 3) + { + $this->maxRetries = $maxRetries; + } + + /** + * 鑾峰彇鏈澶у皾璇曟鏁 + * + * @return int + */ + public function getMaxRetries() + { + return $this->maxRetries; + } + + /** + * 鎵撳紑sts enable鏍囧織锛屼娇鐢ㄦ埛鏋勯犲嚱鏁颁腑浼犲叆鐨$sts鐢熸晥 + * + * @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; + } + + /** + * 妫鏌ucket鍚嶇О鏍煎紡鏄惁姝g‘锛屽鏋滈潪娉曟姏鍑哄紓甯 + * + * @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'); + } + } + + /** + * + * 妫鏌bject鍚嶇О鏍煎紡鏄惁姝g‘锛屽鏋滈潪娉曟姏鍑哄紓甯 + * + * @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'); + } + } + + /** + * 妫鏌bject鐨勭紪鐮侊紝濡傛灉鏄痝bk鎴栬単b2312鍒欏皾璇曞皢鍏惰浆鍖栦负utf8缂栫爜 + * + * @param mixed $options 鍙傛暟 + */ + 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; + } + + /** + * 妫鏌CL鏄惁鏄瀹氫箟涓笁绉嶄箣涓锛屽鏋滀笉鏄姏鍑哄紓甯 + * + * @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)'); + } + } + } + + /** + * 鑾峰緱妗f璇锋眰浣跨敤鐨勫煙鍚 + * bucket鍦ㄥ墠鐨勪笁绾у煙鍚嶏紝鎴栬呬簩绾у煙鍚嶏紝濡傛灉鏄痗name鎴栬卛p鐨勮瘽锛屽垯鏄簩绾у煙鍚 + * + * @param $bucket + * @return string 鍓ユ帀鍗忚澶寸殑鍩熷悕 + */ + 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 { + // 涓撴湁鍩熸垨鑰呭畼缃慹ndpoint + $hostname = ($bucket == '') ? $this->hostname : ($bucket . '.') . $this->hostname; + } + return $hostname; + } + + /** + * 鑾峰緱褰撴璇锋眰鐨勮祫婧愬畾浣嶅瓧娈 + * + * @param $options + * @return string 璧勬簮瀹氫綅瀛楁 + */ + 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; + } + + /** + * 鐢熸垚signalbe_query_string_param, array绫诲瀷 + * + * @param array $options + * @return array + */ + private function generateSignableQueryStringParam($options) + { + $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 + ); + + foreach ($signableList as $item) { + if (isset($options[$item])) { + $signableQueryStringParams[$item] = $options[$item]; + } + } + + if ($this->enableStsInUrl && (!is_null($this->securityToken))) { + $signableQueryStringParams["security-token"] = $this->securityToken; + } + + return $signableQueryStringParams; + } + + /** + * 鐢熸垚鐢ㄤ簬绛惧悕resource娈 + * + * @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]; + // 濡傛灉鎿嶄綔娌℃湁Object鎿嶄綔鐨勮瘽锛岃繖閲屾渶鍚庢槸鍚︽湁鏂滅嚎鏈変釜trick锛宨p鐨勫煙鍚嶄笅锛屼笉闇瑕佸姞'/'锛 鍚﹀垯闇瑕佸姞'/' + 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; + } + + /** + * 鐢熸垚query_string + * + * @param mixed $options + * @return string + */ + private function generateQueryString($options) + { + //璇锋眰鍙傛暟 + $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); + + return $explodeResult[0] . '?' . $queryStringSorted; + } + + /** + * 鍒濆鍖杊eaders + * + * @param mixed $options + * @param string $hostname hostname + * @return array + */ + private function generateHeaders($options, $hostname) + { + $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]; + } + + //娣诲姞stsSecurityToken + if ((!is_null($this->securityToken)) && (!$this->enableStsInUrl)) { + $headers[self::OSS_SECURITY_TOKEN] = $this->securityToken; + } + //鍚堝苟HTTP headers + if (isset($options[self::OSS_HEADERS])) { + $headers = array_merge($headers, $options[self::OSS_HEADERS]); + } + return $headers; + } + + /** + * 鐢熸垚璇锋眰鐢ㄧ殑UserAgent + * + * @return string + */ + private function generateUserAgent() + { + return self::OSS_NAME . "/" . self::OSS_VERSION . " (" . php_uname('s') . "/" . php_uname('r') . "/" . php_uname('m') . ";" . PHP_VERSION . ")"; + } + + /** + * 妫鏌ndpoint鐨勭绫 + * 濡傛湁鏈夊崗璁ご锛屽墺鍘诲崗璁ご + * 骞朵笖鏍规嵁鍙傛暟 is_cname 鍜宔ndpoint鏈韩锛屽垽瀹氬煙鍚嶇被鍨嬶紝鏄痠p锛宑name锛岃繕鏄笓鏈夊煙鎴栬呭畼缃戝煙鍚 + * + * @param string $endpoint + * @param boolean $isCName + * @return string 鍓ユ帀鍗忚澶寸殑鍩熷悕 + */ + 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; + } + + 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; + } + + /** + * 鐢ㄦ潵妫鏌dk鎵浠ユ潵鐨勬墿灞曟槸鍚︽墦寮 + * + * @throws OssException + */ + public static function checkEnv() + { + if (function_exists('get_loaded_extensions')) { + //妫娴媍url鎵╁睍 + $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.'); + } + } + + /** + //* 璁剧疆http搴撶殑璇锋眰瓒呮椂鏃堕棿锛屽崟浣嶇 + * + * @param int $timeout + */ + public function setTimeout($timeout) + { + $this->timeout = $timeout; + } + + /** + * 璁剧疆http搴撶殑杩炴帴瓒呮椂鏃堕棿锛屽崟浣嶇 + * + * @param int $connectTimeout + */ + public function setConnectTimeout($connectTimeout) + { + $this->connectTimeout = $connectTimeout; + } + + // 鐢熷懡鍛ㄦ湡鐩稿叧甯搁噺 + const OSS_LIFECYCLE_EXPIRATION = "Expiration"; + const OSS_LIFECYCLE_TIMING_DAYS = "Days"; + const OSS_LIFECYCLE_TIMING_DATE = "Date"; + //OSS 鍐呴儴甯搁噺 + 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_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'; + + //绉佹湁URL鍙橀噺 + const OSS_URL_ACCESS_KEY_ID = 'OSSAccessKeyId'; + const OSS_URL_EXPIRES = 'Expires'; + const OSS_URL_SIGNATURE = 'Signature'; + //HTTP鏂规硶 + 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'; + //鍏朵粬甯搁噺 + 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"; + //鏀寔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_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鏁扮粍 + static $OSS_ACL_TYPES = array( + self::OSS_ACL_TYPE_PRIVATE, + self::OSS_ACL_TYPE_PUBLIC_READ, + self::OSS_ACL_TYPE_PUBLIC_READ_WRITE + ); + // OssClient鐗堟湰淇℃伅 + const OSS_NAME = "aliyun-sdk-php"; + const OSS_VERSION = "2.2.2"; + const OSS_BUILD = "20170118"; + 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'; + + //鏄惁浣跨敤ssl + private $useSSL = false; + private $maxRetries = 3; + private $redirects = 0; + + // 鐢ㄦ埛鎻愪緵鐨勫煙鍚嶇被鍨嬶紝鏈夊洓绉 OSS_HOST_TYPE_NORMAL, OSS_HOST_TYPE_IP, OSS_HOST_TYPE_SPECIAL, OSS_HOST_TYPE_CNAME + private $hostType = self::OSS_HOST_TYPE_NORMAL; + private $requestUrl; + private $accessKeyId; + private $accessKeySecret; + private $hostname; + private $securityToken; + private $enableStsInUrl = false; + private $timeout = 0; + private $connectTimeout = 0; +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AclResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AclResult.php new file mode 100644 index 0000000..6da0860 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AclResult.php @@ -0,0 +1,32 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AppendResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AppendResult.php new file mode 100644 index 0000000..433c03e --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/AppendResult.php @@ -0,0 +1,27 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/BodyResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/BodyResult.php new file mode 100644 index 0000000..44ba15e --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/BodyResult.php @@ -0,0 +1,19 @@ +rawResponse->body) ? "" : $this->rawResponse->body; + } +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CallbackResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CallbackResult.php new file mode 100644 index 0000000..514e985 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CallbackResult.php @@ -0,0 +1,21 @@ +rawResponse->status; + if ((int)(intval($status) / 100) == 2 && (int)(intval($status)) !== 203) { + return true; + } + return false; + } + +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CopyObjectResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CopyObjectResult.php new file mode 100644 index 0000000..498723e --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/CopyObjectResult.php @@ -0,0 +1,30 @@ +rawResponse->body; + $xml = simplexml_load_string($body); + $result = array(); + + if (isset($xml->LastModified)) { + $result[] = $xml->LastModified; + } + if (isset($xml->ETag)) { + $result[] = $xml->ETag; + } + + return $result; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/DeleteObjectsResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/DeleteObjectsResult.php new file mode 100644 index 0000000..dc373b8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/DeleteObjectsResult.php @@ -0,0 +1,27 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ExistResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ExistResult.php new file mode 100644 index 0000000..f7aa287 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ExistResult.php @@ -0,0 +1,35 @@ +rawResponse->status) === 200 ? true : false; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鍒ゆ柇鏄惁瀛樺湪鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCnameResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCnameResult.php new file mode 100644 index 0000000..eed01f9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCnameResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $config = new CnameConfig(); + $config->parseFromXml($content); + return $config; + } +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCorsResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCorsResult.php new file mode 100644 index 0000000..a51afe2 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetCorsResult.php @@ -0,0 +1,35 @@ +rawResponse->body; + $config = new CorsConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鑾峰彇bucket鐩稿叧閰嶇疆鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLifecycleResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLifecycleResult.php new file mode 100644 index 0000000..6b440c3 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLifecycleResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new LifecycleConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鑾峰彇bucket鐩稿叧閰嶇疆鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelHistoryResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelHistoryResult.php new file mode 100644 index 0000000..202a668 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelHistoryResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelHistory(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelInfoResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelInfoResult.php new file mode 100644 index 0000000..d5a9005 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelInfoResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelInfo(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelStatusResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelStatusResult.php new file mode 100644 index 0000000..6b8a60f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLiveChannelStatusResult.php @@ -0,0 +1,19 @@ +rawResponse->body; + $channelList = new GetLiveChannelStatus(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLoggingResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLoggingResult.php new file mode 100644 index 0000000..72fc3ae --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetLoggingResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new LoggingConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鑾峰彇bucket鐩稿叧閰嶇疆鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetRefererResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetRefererResult.php new file mode 100644 index 0000000..aee50d3 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetRefererResult.php @@ -0,0 +1,41 @@ +rawResponse->body; + $config = new RefererConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鑾峰彇bucket鐩稿叧閰嶇疆鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetWebsiteResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetWebsiteResult.php new file mode 100644 index 0000000..3099172 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/GetWebsiteResult.php @@ -0,0 +1,40 @@ +rawResponse->body; + $config = new WebsiteConfig(); + $config->parseFromXml($content); + return $config; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK, 鑾峰彇bucket鐩稿叧閰嶇疆鐨勬帴鍙o紝404涔熻涓烘槸涓绉 + * 鏈夋晥鍝嶅簲 + * + * @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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/HeaderResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/HeaderResult.php new file mode 100644 index 0000000..c9aae56 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/HeaderResult.php @@ -0,0 +1,23 @@ +rawResponse->header) ? array() : $this->rawResponse->header; + } + +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/InitiateMultipartUploadResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/InitiateMultipartUploadResult.php new file mode 100644 index 0000000..af985f2 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/InitiateMultipartUploadResult.php @@ -0,0 +1,29 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListBucketsResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListBucketsResult.php new file mode 100644 index 0000000..a58fb2d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListBucketsResult.php @@ -0,0 +1,33 @@ +rawResponse->body; + $xml = new \SimpleXMLElement($content); + if (isset($xml->Buckets) && isset($xml->Buckets->Bucket)) { + foreach ($xml->Buckets->Bucket as $bucket) { + $bucketInfo = new BucketInfo(strval($bucket->Location), + strval($bucket->Name), + strval($bucket->CreationDate)); + $bucketList[] = $bucketInfo; + } + } + return new BucketListInfo($bucketList); + } +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListLiveChannelResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListLiveChannelResult.php new file mode 100644 index 0000000..1a6e2a4 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListLiveChannelResult.php @@ -0,0 +1,16 @@ +rawResponse->body; + $channelList = new LiveChannelListInfo(); + $channelList->parseFromXml($content); + return $channelList; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListMultipartUploadResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListMultipartUploadResult.php new file mode 100644 index 0000000..bcb20bf --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListMultipartUploadResult.php @@ -0,0 +1,55 @@ +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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListObjectsResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListObjectsResult.php new file mode 100644 index 0000000..fcf493d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListObjectsResult.php @@ -0,0 +1,71 @@ +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) ? intval($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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListPartsResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListPartsResult.php new file mode 100644 index 0000000..fd8a1b8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/ListPartsResult.php @@ -0,0 +1,42 @@ +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) ? intval($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/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutLiveChannelResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutLiveChannelResult.php new file mode 100644 index 0000000..dcac86b --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutLiveChannelResult.php @@ -0,0 +1,16 @@ +rawResponse->body; + $channel = new LiveChannelInfo(); + $channel->parseFromXml($content); + return $channel; + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutSetDeleteResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutSetDeleteResult.php new file mode 100644 index 0000000..97af003 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/PutSetDeleteResult.php @@ -0,0 +1,20 @@ + $this->rawResponse->body); + return array_merge($this->rawResponse->header, $body); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/Result.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/Result.php new file mode 100644 index 0000000..491256f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/Result.php @@ -0,0 +1,175 @@ +rawResponse = $response; + $this->parseResponse(); + } + + /** + * 鑾峰彇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 ''; + } + } + + /** + * 寰楀埌杩斿洖鏁版嵁锛屼笉鍚岀殑璇锋眰杩斿洖鏁版嵁鏍煎紡涓嶅悓 + * + * $return mixed + */ + public function getData() + { + return $this->parsedData; + } + + /** + * 鐢卞瓙绫诲疄鐜帮紝涓嶅悓鐨勮姹傝繑鍥炴暟鎹湁涓嶅悓鐨勮В鏋愰昏緫锛岀敱瀛愮被瀹炵幇 + * + * @return mixed + */ + abstract protected function parseDataFromResponse(); + + /** + * 鎿嶄綔鏄惁鎴愬姛 + * + * @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); + } + } + + /** + * 灏濊瘯浠巄ody涓幏鍙栭敊璇疢essage + * + * @param $body + * @return string + */ + private function retrieveErrorMessage($body) + { + if (empty($body) || false === strpos($body, 'Message)) { + return strval($xml->Message); + } + return ''; + } + + /** + * 灏濊瘯浠巄ody涓幏鍙栭敊璇疌ode + * + * @param $body + * @return string + */ + private function retrieveErrorCode($body) + { + if (empty($body) || false === strpos($body, 'Code)) { + return strval($xml->Code); + } + return ''; + } + + /** + * 鏍规嵁杩斿洖http鐘舵佺爜鍒ゆ柇锛孾200-299]鍗宠涓烘槸OK + * + * @return bool + */ + protected function isResponseOk() + { + $status = $this->rawResponse->status; + if ((int)(intval($status) / 100) == 2) { + return true; + } + return false; + } + + /** + * 杩斿洖鍘熷鐨勮繑鍥炴暟鎹 + * + * @return ResponseCore + */ + public function getRawResponse() + { + return $this->rawResponse; + } + + /** + * 鏍囩ず璇锋眰鏄惁鎴愬姛 + */ + protected $isOk = false; + /** + * 鐢卞瓙绫昏В鏋愯繃鐨勬暟鎹 + */ + protected $parsedData = null; + /** + * 瀛樻斁auth鍑芥暟杩斿洖鐨勫師濮婻esponse + * + * @var ResponseCore + */ + protected $rawResponse; +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/UploadPartResult.php b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/UploadPartResult.php new file mode 100644 index 0000000..c6b66d4 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/src/OSS/Result/UploadPartResult.php @@ -0,0 +1,28 @@ +rawResponse->header; + if (isset($header["etag"])) { + return $header["etag"]; + } + throw new OssException("cannot get ETag"); + + } +} \ No newline at end of file diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/AclResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/AclResultTest.php new file mode 100644 index 0000000..12f4b1a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/AclResultTest.php @@ -0,0 +1,59 @@ + + + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BodyResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BodyResultTest.php new file mode 100644 index 0000000..af13d4d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BodyResultTest.php @@ -0,0 +1,26 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketCnameTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketCnameTest.php new file mode 100644 index 0000000..87c9e54 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketCnameTest.php @@ -0,0 +1,77 @@ +client = Common::getOssClient(); + $this->bucketName = 'php-sdk-test-bucket-' . strval(rand(0, 10000)); + $this->client->createBucket($this->bucketName); + } + + public function tearDown() + { + $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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketInfoTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketInfoTest.php new file mode 100644 index 0000000..80fa25c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketInfoTest.php @@ -0,0 +1,21 @@ +assertNotNull($bucketInfo); + $this->assertEquals('cn-beijing', $bucketInfo->getLocation()); + $this->assertEquals('name', $bucketInfo->getName()); + $this->assertEquals('today', $bucketInfo->getCreateDate()); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketLiveChannelTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketLiveChannelTest.php new file mode 100644 index 0000000..bed68b0 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/BucketLiveChannelTest.php @@ -0,0 +1,283 @@ +client = Common::getOssClient(); + $this->bucketName = 'php-sdk-test-rtmp-bucket-name-' . strval(rand(0, 10000)); + $this->client->createBucket($this->bucketName); + Common::waitMetaSync(); + } + + public function tearDown() + { + ////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 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CallbackTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CallbackTest.php new file mode 100644 index 0000000..491c4d9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CallbackTest.php @@ -0,0 +1,297 @@ +ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); + + /** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇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":"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 + ); + + 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. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇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":"callback.oss-demo.com:23450", + "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":"callback.oss-demo.com:23450", + "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":"callback.oss-demo.com:23450", + "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":"callback.oss-demo.com:23450", + "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":"callback.oss-demo.com:23450", + "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":"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":"aliyun.com" + }'; + $options = array(OssClient::OSS_CALLBACK => $json, + OssClient::OSS_CALLBACK_VAR => $var + ); + $this->putObjectCallbackOk($options, "200"); + } + //url and add callback_var + { + $url = + '{ + "callbackUrl":"callback.oss-demo.com:23450", + "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); + } + } + + public function setUp() + { + parent::setUp(); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CnameConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CnameConfigTest.php new file mode 100644 index 0000000..e3c1ce9 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CnameConfigTest.php @@ -0,0 +1,77 @@ + + + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/Common.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/Common.php new file mode 100644 index 0000000..9d7190c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/Common.php @@ -0,0 +1,70 @@ +getMessage() . "\n"); + return null; + } + return $ossClient; + } + + public static function getBucketName() + { + return getenv('OSS_BUCKET'); + } + + /** + * 宸ュ叿鏂规硶锛屽垱寤轰竴涓猙ucket + */ + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ContentTypeTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ContentTypeTest.php new file mode 100644 index 0000000..606c810 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ContentTypeTest.php @@ -0,0 +1,133 @@ +/dev/null', $output, $status); + + $this->assertEquals(0, $status); + } + + private function getContentType($bucket, $object) + { + $client = Common::getOssClient(); + $headers = $client->getObjectMeta($bucket, $object); + return $headers['content-type']; + } + + public function testByFileName() + { + $client = Common::getOssClient(); + $bucket = Common::getBucketName(); + + $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 = Common::getOssClient(); + $bucket = Common::getBucketName(); + + $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 = Common::getOssClient(); + $bucket = Common::getBucketName(); + + $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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CopyObjectResult.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CopyObjectResult.php new file mode 100644 index 0000000..171d4c8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CopyObjectResult.php @@ -0,0 +1,52 @@ + + + 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) { + + } + } + +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CorsConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CorsConfigTest.php new file mode 100644 index 0000000..ddc4d3a --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/CorsConfigTest.php @@ -0,0 +1,140 @@ + + + +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ExistResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ExistResultTest.php new file mode 100644 index 0000000..e1b4e81 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ExistResultTest.php @@ -0,0 +1,38 @@ +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) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetCorsResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetCorsResultTest.php new file mode 100644 index 0000000..a3281c8 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetCorsResultTest.php @@ -0,0 +1,67 @@ + + + +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 { + new GetCorsResult($response); + $this->assertTrue(false); + } catch (OssException $e) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLifecycleResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLifecycleResultTest.php new file mode 100644 index 0000000..92ae208 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLifecycleResultTest.php @@ -0,0 +1,59 @@ + + + +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 { + new GetLifecycleResult($response); + $this->assertTrue(false); + } catch (OssException $e) { + + } + } + +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLoggingResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLoggingResultTest.php new file mode 100644 index 0000000..6195014 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetLoggingResultTest.php @@ -0,0 +1,51 @@ + + + +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 { + new GetLoggingResult($response); + $this->assertTrue(false); + } catch (OssException $e) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetRefererResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetRefererResultTest.php new file mode 100644 index 0000000..072aa43 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetRefererResultTest.php @@ -0,0 +1,51 @@ + + +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 { + new GetRefererResult($response); + $this->assertTrue(false); + } catch (OssException $e) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetWebsiteResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetWebsiteResultTest.php new file mode 100644 index 0000000..70e1559 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/GetWebsiteResultTest.php @@ -0,0 +1,50 @@ + + + +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 { + new GetWebsiteResult($response); + $this->assertTrue(false); + } catch (OssException $e) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HeaderResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HeaderResultTest.php new file mode 100644 index 0000000..dae4975 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HeaderResultTest.php @@ -0,0 +1,23 @@ + '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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HttpTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HttpTest.php new file mode 100644 index 0000000..a59dfcd --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/HttpTest.php @@ -0,0 +1,77 @@ +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) { + + } + } + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/InitiateMultipartUploadResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/InitiateMultipartUploadResultTest.php new file mode 100644 index 0000000..9f6c7a5 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/InitiateMultipartUploadResultTest.php @@ -0,0 +1,47 @@ + + + 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) { + + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LifecycleConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LifecycleConfigTest.php new file mode 100644 index 0000000..7bd0331 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LifecycleConfigTest.php @@ -0,0 +1,130 @@ + + + +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListBucketsResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListBucketsResultTest.php new file mode 100644 index 0000000..1abe1f5 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListBucketsResultTest.php @@ -0,0 +1,97 @@ + + + + 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); + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListMultipartUploadResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListMultipartUploadResultTest.php new file mode 100644 index 0000000..5c757d3 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListMultipartUploadResultTest.php @@ -0,0 +1,114 @@ + + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListObjectsResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListObjectsResultTest.php new file mode 100644 index 0000000..85f262c --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListObjectsResultTest.php @@ -0,0 +1,151 @@ + + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListPartsResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListPartsResultTest.php new file mode 100644 index 0000000..c446714 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ListPartsResultTest.php @@ -0,0 +1,62 @@ + + + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LiveChannelXmlTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LiveChannelXmlTest.php new file mode 100644 index 0000000..cc3e219 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LiveChannelXmlTest.php @@ -0,0 +1,249 @@ + + + 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 testLiveChannelHistory() + { + $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]); + } + +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LoggingConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LoggingConfigTest.php new file mode 100644 index 0000000..01496bb --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/LoggingConfigTest.php @@ -0,0 +1,47 @@ + + + +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/MimeTypesTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/MimeTypesTest.php new file mode 100644 index 0000000..0697409 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/MimeTypesTest.php @@ -0,0 +1,13 @@ +assertEquals('application/xml', MimeTypes::getMimetype('file.xml')); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ObjectAclTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ObjectAclTest.php new file mode 100644 index 0000000..d397288 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/ObjectAclTest.php @@ -0,0 +1,28 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketCorsTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketCorsTest.php new file mode 100644 index 0000000..a32154b --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketCorsTest.php @@ -0,0 +1,84 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLifecycleTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLifecycleTest.php new file mode 100644 index 0000000..46da1f0 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLifecycleTest.php @@ -0,0 +1,57 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLoggingTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLoggingTest.php new file mode 100644 index 0000000..16a10eb --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketLoggingTest.php @@ -0,0 +1,43 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketRefererTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketRefererTest.php new file mode 100644 index 0000000..ba7d14f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketRefererTest.php @@ -0,0 +1,48 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketTest.php new file mode 100644 index 0000000..b5e0862 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketTest.php @@ -0,0 +1,49 @@ +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')); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketWebsiteTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketWebsiteTest.php new file mode 100644 index 0000000..dfa9cc1 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientBucketWebsiteTest.php @@ -0,0 +1,46 @@ +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientImageTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientImageTest.php new file mode 100644 index 0000000..edb469e --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientImageTest.php @@ -0,0 +1,101 @@ +client = Common::getOssClient(); + $this->bucketName = 'php-sdk-test-bucket-image-' . strval(rand(0, 10000)); + $this->client->createBucket($this->bucketName); + Common::waitMetaSync(); + $this->local_file = "example.jpg"; + $this->object = "oss-example.jpg"; + $this->download_file = "image.jpg"; + + $this->client->uploadFile($this->bucketName, $this->object, $this->local_file); + } + + public function tearDown() + { + $this->client->deleteObject($this->bucketName, $this->object); + $this->client->deleteBucket($this->bucketName); + } + + 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, 3587, '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, 2281, 'jpg'); + } + + public function testImageRotate() + { + $options = array( + OssClient::OSS_FILE_DOWNLOAD => $this->download_file, + OssClient::OSS_PROCESS => "image/rotate,90", ); + $this->check($options, 267, 400, 21509, 'jpg'); + } + + public function testImageSharpen() + { + $options = array( + OssClient::OSS_FILE_DOWNLOAD => $this->download_file, + OssClient::OSS_PROCESS => "image/sharpen,100", ); + $this->check($options, 400, 267, 24183, '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, 26953, '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, 3587, 'jpg'); + } + + 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 + $this->assertEquals($size, ceil(filesize($this->download_file))); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientMultipartUploadTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientMultipartUploadTest.php new file mode 100644 index 0000000..da3e056 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientMultipartUploadTest.php @@ -0,0 +1,277 @@ +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 testCopyPart() + { + $object = "mpu/multipart-test.txt"; + $copiedObject = "mpu/multipart-test.txt.copied"; + $this->ossClient->putObject($this->bucket, $copiedObject, file_get_contents(__FILE__)); + /** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇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. + */ + 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 testAbortMultipartUpload() + { + $object = "mpu/multipart-test.txt"; + /** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇upload id + */ + try { + $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); + } catch (OssException $e) { + $this->assertFalse(true); + } + /* + * step 2. 涓婁紶鍒嗙墖 + */ + $part_size = 10 * 1024 * 1024; + $upload_file = __FILE__; + $upload_filesize = 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. 灏嗘瘡涓鍒嗙墖涓婁紶鍒癘SS + 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); + } + $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, $options); + $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"; + /** + * step 1. 鍒濆鍖栦竴涓垎鍧椾笂浼犱簨浠, 涔熷氨鏄垵濮嬪寲涓婁紶Multipart, 鑾峰彇upload id + */ + try { + $upload_id = $this->ossClient->initiateMultipartUpload($this->bucket, $object); + } catch (OssException $e) { + $this->assertFalse(true); + } + /* + * step 2. 涓婁紶鍒嗙墖 + */ + $part_size = 10 * 1024 * 1024; + $upload_file = __FILE__; + $upload_filesize = 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. 灏嗘瘡涓鍒嗙墖涓婁紶鍒癘SS + 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); + } catch (OssException $e) { + $this->assertFalse(true); + } + } + + public function testListMultipartUploads() + { + $options = null; + try { + $listMultipartUploadInfo = $this->ossClient->listMultipartUploads($this->bucket, $options); + $this->assertNotNull($listMultipartUploadInfo); + } catch (OssException $e) { + $this->assertFalse(true); + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientObjectTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientObjectTest.php new file mode 100644 index 0000000..0caa568 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientObjectTest.php @@ -0,0 +1,426 @@ +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 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 testObject() + { + /** + * 涓婁紶鏈湴鍙橀噺鍒癰ucket + */ + $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-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); + } + + 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鍒版湰鍦板彉閲忥紝妫鏌ユ槸鍚atch + */ + try { + $content = $this->ossClient->getObject($this->bucket, $object); + $this->assertEquals($content, file_get_contents(__FILE__)); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * getObject鐨勫墠浜斾釜瀛楄妭 + */ + try { + $options = array(OssClient::OSS_RANGE => '0-4'); + $content = $this->ossClient->getObject($this->bucket, $object, $options); + $this->assertEquals($content, 'assertFalse(true); + } + + + /** + * 涓婁紶鏈湴鏂囦欢鍒皁bject + */ + try { + $this->ossClient->uploadFile($this->bucket, $object, __FILE__); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 涓嬭浇鏂囦欢鍒版湰鍦板彉閲忥紝妫鏌ユ槸鍚atch + */ + try { + $content = $this->ossClient->getObject($this->bucket, $object); + $this->assertEquals($content, file_get_contents(__FILE__)); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 涓嬭浇鏂囦欢鍒版湰鍦版枃浠 + */ + $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); + } + + /** + * 澶嶅埗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()); + + } + + /** + * 妫鏌ュ鍒剁殑鏄惁鐩稿悓 + */ + try { + $content = $this->ossClient->getObject($this->bucket, $to_object); + $this->assertEquals($content, file_get_contents(__FILE__)); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 鍒楀嚭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); + } + + /** + * 璁剧疆鏂囦欢鐨刴eta淇℃伅 + */ + $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); + } + + /** + * 鑾峰彇鏂囦欢鐨刴eta淇℃伅 + */ + $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); + } + + /** + * 鍒犻櫎鍗曚釜鏂囦欢 + */ + $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); + } + + /** + * 鍒犻櫎澶氫釜涓枃浠 + */ + $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[1], $result[0]); + $this->assertEquals($list[0], $result[1]); + + $result = $this->ossClient->deleteObjects($this->bucket, $list, array('quiet' => 'true')); + $this->assertEquals(array(), $result); + $this->assertFalse($this->ossClient->doesObjectExist($this->bucket, $object2)); + } 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'); + + /** + * 杩藉姞涓婁紶瀛楃涓 + */ + 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); + $this->assertEquals($position, strlen($content_array[0]) + strlen($content_array[1]) + strlen($content_array[1])); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 妫鏌ュ唴瀹圭殑鏄惁鐩稿悓 + */ + try { + $content = $this->ossClient->getObject($this->bucket, $object); + $this->assertEquals($content, implode($content_array)); + } catch (OssException $e) { + $this->assertFalse(true); + } + + + /** + * 鍒犻櫎娴嬭瘯object + */ + try { + $this->ossClient->deleteObject($this->bucket, $object); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 杩藉姞涓婁紶鏈湴鏂囦欢 + */ + try { + $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, 0); + $this->assertEquals($position, filesize(__FILE__)); + $position = $this->ossClient->appendFile($this->bucket, $object, __FILE__, $position); + $this->assertEquals($position, filesize(__FILE__) * 2); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 妫鏌ュ鍒剁殑鏄惁鐩稿悓 + */ + 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); + } + + /** + * 鍒犻櫎娴嬭瘯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"', + ), + ); + + /** + * 甯ption鐨勮拷鍔犱笂浼 + */ + 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); + } + + /** + * 鑾峰彇鏂囦欢鐨刴eta淇℃伅 + */ + try { + $objectMeta = $this->ossClient->getObjectMeta($this->bucket, $object); + $this->assertEquals('attachment; filename="xxxxxx"', $objectMeta[strtolower('Content-Disposition')]); + } catch (OssException $e) { + $this->assertFalse(true); + } + + /** + * 鍒犻櫎娴嬭瘯object + */ + try { + $this->ossClient->deleteObject($this->bucket, $object); + } catch (OssException $e) { + $this->assertFalse(true); + } + } + + public function setUp() + { + parent::setUp(); + $this->ossClient->putObject($this->bucket, 'oss-php-sdk-test/upload-test-object-name.txt', file_get_contents(__FILE__)); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientSignatureTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientSignatureTest.php new file mode 100644 index 0000000..109121d --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientSignatureTest.php @@ -0,0 +1,111 @@ +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(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 tearDown() + { + $this->ossClient->deleteObject($this->bucket, "a.file"); + parent::tearDown(); + } + + public function setUp() + { + parent::setUp(); + /** + * 涓婁紶鏈湴鍙橀噺鍒癰ucket + */ + $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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientTest.php new file mode 100644 index 0000000..72bf5cc --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssClientTest.php @@ -0,0 +1,111 @@ +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"); + } catch (OssException $e) { + $this->assertTrue(false); + } + } + + public function testConstrunct6() + { + try { + $ossClient = new OssClient('id', 'key', "https://123.123.123.1"); + $this->assertTrue($ossClient->isUseSSL()); + } catch (OssException $e) { + $this->assertTrue(false); + } + } + + public function testConstrunct7() + { + try { + $ossClient = new OssClient('id', 'key', "http://123.123.123.1"); + $this->assertFalse($ossClient->isUseSSL()); + } 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) { + + } + } + + 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(); + } catch (OssException $e) { + $this->assertFalse(true); + } + } + +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssExceptionTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssExceptionTest.php new file mode 100644 index 0000000..4a418d5 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssExceptionTest.php @@ -0,0 +1,19 @@ +assertTrue(false); + } catch (OssException $e) { + $this->assertNotNull($e); + $this->assertEquals($e->getMessage(), "ERR"); + } + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssUtilTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssUtilTest.php new file mode 100644 index 0000000..3279417 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/OssUtilTest.php @@ -0,0 +1,214 @@ +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 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, filesize(__FILE__) - 1), base64_encode(md5(file_get_contents(__FILE__), true))); + } + + public function testGenerateFile() + { + $path = __DIR__ . DIRECTORY_SEPARATOR . "generatedFile.txt"; + OssUtil::generateFile($path, 1024 * 1024); + $this->assertEquals(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)); + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/PutSetDeleteResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/PutSetDeleteResultTest.php new file mode 100644 index 0000000..b298e44 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/PutSetDeleteResultTest.php @@ -0,0 +1,66 @@ +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) { + + } + } + + public function setUp() + { + + } + + public function tearDown() + { + + } +} diff --git a/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/RefererConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/RefererConfigTest.php new file mode 100644 index 0000000..8360a24 --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/RefererConfigTest.php @@ -0,0 +1,54 @@ + + +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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/TestOssClientBase.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/TestOssClientBase.php new file mode 100644 index 0000000..4abd31f --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/TestOssClientBase.php @@ -0,0 +1,51 @@ +bucket = Common::getBucketName() . rand(100000, 999999); + $this->ossClient = Common::getOssClient(); + $this->ossClient->createBucket($this->bucket); + Common::waitMetaSync(); + } + + public function tearDown() + { + 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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/UploadPartResultTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/UploadPartResultTest.php new file mode 100644 index 0000000..e4789ef --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/UploadPartResultTest.php @@ -0,0 +1,33 @@ + '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/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/WebsiteConfigTest.php b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/WebsiteConfigTest.php new file mode 100644 index 0000000..2ec0fcb --- /dev/null +++ b/aliyun-oss-php-sdk-2.2.2/tests/OSS/Tests/WebsiteConfigTest.php @@ -0,0 +1,56 @@ + + + +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/composer.json b/composer.json new file mode 100644 index 0000000..0ce2188 --- /dev/null +++ b/composer.json @@ -0,0 +1,26 @@ +{ + "name": "gulltour/aliyun", + "type": "yii2-extension", + "description": "Yii2 extension for Aliyun library", + "keywords": ["yii2","extension","widget","oss","dayu","log","mns"], + "homepage": "https://github.com/weijiansdlx/aliyun", + "license": "GPL-3.0+", + "version": "1.0.0", + "authors": [ + { + "name": "Wei Jian", + "email": "fancy.wei@qq.com", + "homepage": "https://github.com/weijiansdlx", + "role": "Developer" + } + ], + "require": { + "php": ">=5.4.0", + "yiisoft/yii2": "*" + }, + "autoload": { + "psr-4": { + "gulltour\\aliyun\\": "" + } + } +} \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/Autoloader.php b/taobao-sdk-PHP-auto/Autoloader.php new file mode 100644 index 0000000..313885d --- /dev/null +++ b/taobao-sdk-PHP-auto/Autoloader.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/TopSdk.php b/taobao-sdk-PHP-auto/TopSdk.php new file mode 100644 index 0000000..8f623d2 --- /dev/null +++ b/taobao-sdk-PHP-auto/TopSdk.php @@ -0,0 +1,40 @@ +checkRequest) { + try { + $request->check(); + } catch (Exception $e) { + $result->code = $e->getCode(); + $result->message = $e->getMessage(); + return $result; + } + } + //鑾峰彇涓氬姟鍙傛暟 + $apiParams = $request->getApiParas(); + //缁勮绯荤粺鍙傛暟 + $apiParams["AccessKeyId"] = $this->accessKeyId; + $apiParams["Format"] = $this->format;// + $apiParams["SignatureMethod"] = $this->signatureMethod; + $apiParams["SignatureVersion"] = $this->signatureVersion; + $apiParams["SignatureNonce"] = uniqid(); + date_default_timezone_set("GMT"); + $apiParams["TimeStamp"] = date($this->dateTimeFormat); + $apiParams["partner_id"] = $this->sdkVersion; + + $apiNameArray = split("\.", $request->getApiMethodName()); + $apiParams["Action"] = $apiNameArray[3]; + $apiParams["Version"] = $apiNameArray[4]; + //绛惧悕 + $apiParams["Signature"] = $this->computeSignature($apiParams, $this->accessKeySecret); + + //绯荤粺鍙傛暟鏀惧叆GET璇锋眰涓 + $requestUrl = rtrim($this->serverUrl,"/") . "/?"; + foreach ($apiParams as $apiParamKey => $apiParamValue) + { + $requestUrl .= "$apiParamKey=" . urlencode($apiParamValue) . "&"; + } + $requestUrl = substr($requestUrl, 0, -1); + //鍙戣捣HTTP璇锋眰 + try + { + $resp = $this->curl($requestUrl, null); + } + catch (Exception $e) + { + $this->logCommunicationError($apiParams["Action"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage()); + if ("json" == $this->format) + { + return json_decode($e->getMessage()); + } + else if("xml" == $this->format) + { + return @simplexml_load_string($e->getMessage()); + } + } + + //瑙f瀽API杩斿洖缁撴灉 + $respWellFormed = false; + if ("json" == $this->format) + { + $respObject = json_decode($resp); + if (null !== $respObject) + { + $respWellFormed = true; + } + } + else if("xml" == $this->format) + { + $respObject = @simplexml_load_string($resp); + if (false !== $respObject) + { + $respWellFormed = true; + } + } + + //杩斿洖鐨凥TTP鏂囨湰涓嶆槸鏍囧噯JSON鎴栬匵ML锛岃涓嬮敊璇棩蹇 + if (false === $respWellFormed) + { + $this->logCommunicationError($apiParams["Action"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp); + $result->code = 0; + $result->message = "HTTP_RESPONSE_NOT_WELL_FORMED"; + return $result; + } + + //濡傛灉TOP杩斿洖浜嗛敊璇爜锛岃褰曞埌涓氬姟閿欒鏃ュ織涓 + if (isset($respObject->code)) + { + $logger = new LtLogger; + $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log"; + $logger->log(array( + date("Y-m-d H:i:s"), + $resp + )); + } + return $respObject; + } + + public function exec($paramsArray) + { + if (!isset($paramsArray["Action"])) + { + trigger_error("No api name passed"); + } + $inflector = new LtInflector; + $inflector->conf["separator"] = "."; + $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["Action"], 7))) . "Request"; + if (!class_exists($requestClassName)) + { + trigger_error("No such api: " . $paramsArray["Action"]); + } + + $req = new $requestClassName; + foreach($paramsArray as $paraKey => $paraValue) + { + $inflector->conf["separator"] = "_"; + $setterMethodName = $inflector->camelize($paraKey); + $inflector->conf["separator"] = "."; + $setterMethodName = "set" . $inflector->camelize($setterMethodName); + if (method_exists($req, $setterMethodName)) + { + $req->$setterMethodName($paraValue); + } + } + return $this->execute($req, $session); + } + + protected function percentEncode($str) + { + // 浣跨敤urlencode缂栫爜鍚庯紝灏"+","*","%7E"鍋氭浛鎹㈠嵆婊¤冻 API瑙勫畾鐨勭紪鐮佽鑼 + $res = urlencode($str); + $res = preg_replace('/\+/', '%20', $res); + $res = preg_replace('/\*/', '%2A', $res); + $res = preg_replace('/%7E/', '~', $res); + return $res; + } + + protected function computeSignature($parameters, $accessKeySecret) + { + // 灏嗗弬鏁癒ey鎸夊瓧鍏搁『搴忔帓搴 + ksort($parameters); + + // 鐢熸垚瑙勮寖鍖栬姹傚瓧绗︿覆 + $canonicalizedQueryString = ''; + foreach($parameters as $key => $value) + { + $canonicalizedQueryString .= '&' . $this->percentEncode($key) + . '=' . $this->percentEncode($value); + } + + // 鐢熸垚鐢ㄤ簬璁$畻绛惧悕鐨勫瓧绗︿覆 stringToSign + $stringToSign = 'GET&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1)); + + // 璁$畻绛惧悕锛屾敞鎰廰ccessKeySecret鍚庨潰瑕佸姞涓婂瓧绗'&' + $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true)); + return $signature; + } + + public function curl($url, $postFields = null) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FAILONERROR, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + if ($this->readTimeout) { + curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); + } + if ($this->connectTimeout) { + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); + } + //https 璇锋眰 + if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + } + + if (is_array($postFields) && 0 < count($postFields)) + { + $postBodyString = ""; + $postMultipart = false; + foreach ($postFields as $k => $v) + { + if("@" != substr($v, 0, 1))//鍒ゆ柇鏄笉鏄枃浠朵笂浼 + { + $postBodyString .= "$k=" . urlencode($v) . "&"; + } + else//鏂囦欢涓婁紶鐢╩ultipart/form-data锛屽惁鍒欑敤www-form-urlencoded + { + $postMultipart = true; + } + } + unset($k, $v); + curl_setopt($ch, CURLOPT_POST, true); + if ($postMultipart) + { + curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); + } + else + { + curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1)); + } + } + $reponse = curl_exec($ch); + + if (curl_errno($ch)) + { + throw new Exception(curl_error($ch),0); + } + curl_close($ch); + return $reponse; + } + + protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt) + { + $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI"; + $logger = new LtLogger; + $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->accessKeyId . "_" . date("Y-m-d") . ".log"; + $logger->conf["separator"] = "^_^"; + $logData = array( + date("Y-m-d H:i:s"), + $apiName, + $this->accessKeyId, + $localIp, + PHP_OS, + $this->sdkVersion, + $requestUrl, + $errorCode, + str_replace("\n","",$responseTxt) + ); + $logger->log($logData); + } +} diff --git a/taobao-sdk-PHP-auto/fileTest.php b/taobao-sdk-PHP-auto/fileTest.php new file mode 100644 index 0000000..541889a --- /dev/null +++ b/taobao-sdk-PHP-auto/fileTest.php @@ -0,0 +1,26 @@ +appkey = '12497914'; + $c->secretKey = '4b0f28396e072d67fae169684613bcd1'; + // $req = new TradeVoucherUploadRequest; + // $req->setFileName("example"); + // $req->setFileData("@/Users/xt/Downloads/1.jpg"); + // $req->setSellerNick("濂ュ埄濂ュ畼鏂规棗鑸板簵"); + // $req->setBuyerNick("101NufynDYcbjf2cFQDd62j8M/mjtyz6RoxQ2OL1c0e/Bc="); + // var_dump($c->execute($req)); + + $req2 = new TradeVoucherUploadRequest; + $req2->setFileName("example"); + + $myPic = array( + 'type' => 'application/octet-stream', + 'content' => file_get_contents('/Users/xt/Downloads/1.jpg') + ); + $req2->setFileData($myPic); + $req2->setSellerNick("濂ュ埄濂ュ畼鏂规棗鑸板簵"); + $req2->setBuyerNick("101NufynDYcbjf2cFQDd62j8M/mjtyz6RoxQ2OL1c0e/Bc="); + var_dump($c->execute($req2)); +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/test.php b/taobao-sdk-PHP-auto/test.php new file mode 100644 index 0000000..3e45c22 --- /dev/null +++ b/taobao-sdk-PHP-auto/test.php @@ -0,0 +1,10 @@ +gatewayUrl = "http://api.daily.taobao.net/router/rest"; + var_dump($client->execute($httpdns,"6100e23657fb0b2d0c78568e55a3031134be9a3a5d4b3a365753805")); + +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/ApplicationVar.php b/taobao-sdk-PHP-auto/top/ApplicationVar.php new file mode 100644 index 0000000..528b2ba --- /dev/null +++ b/taobao-sdk-PHP-auto/top/ApplicationVar.php @@ -0,0 +1,47 @@ +save_file = __DIR__.'/httpdns.conf' ; + $this->application = array(); + } + + public function setValue($var_name,$var_value) + { + if (!is_string($var_name) || empty($var_name)) + return false; + + $this->application[$var_name] = $var_value; + } + + public function write(){ + $this->app_data = @serialize($this->application); + $this->__writeToFile(); + } + + public function getValue() + { + if (!is_file($this->save_file)) + $this->__writeToFile(); + return @unserialize(@file_get_contents($this->save_file)); + } + + function __writeToFile() + { + $fp = @fopen($this->save_file,"w"); + if(flock($fp , LOCK_EX | LOCK_NB)){ + @fwrite($fp,$this->app_data); + flock($fp , LOCK_UN); + } + @fclose($fp); + } +} + +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/ClusterTopClient.php b/taobao-sdk-PHP-auto/top/ClusterTopClient.php new file mode 100644 index 0000000..8d1ca00 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/ClusterTopClient.php @@ -0,0 +1,199 @@ +appkey = $appkey; + $this->secretKey = $secretKey ; + $saveConfig = ClusterTopClient::$applicationVar->getValue(); + + if($saveConfig){ + $tmpConfig = $saveConfig['dnsconfig']; + ClusterTopClient::$dnsconfig = $this->object_to_array($tmpConfig); + unset($tmpConfig); + + ClusterTopClient::$syncDate = $saveConfig['syncDate']; + if(!ClusterTopClient::$syncDate) + ClusterTopClient::$syncDate = 0; + } + } + + public function __destruct(){ + if(ClusterTopClient::$dnsconfig && ClusterTopClient::$syncDate){ + ClusterTopClient::$applicationVar->setValue("dnsconfig",ClusterTopClient::$dnsconfig); + ClusterTopClient::$applicationVar->setValue("syncDate",ClusterTopClient::$syncDate); + ClusterTopClient::$applicationVar->write(); + } + } + + public function execute($request = null, $session = null,$bestUrl = null){ + $currentDate = date('U'); + $syncDuration = $this->getDnsConfigSyncDuration(); + $bestUrl = $this->getBestVipUrl($this->gatewayUrl,$request->getApiMethodName(),$session); + if($currentDate - ClusterTopClient::$syncDate > $syncDuration * 60){ + $httpdns = new HttpdnsGetRequest; + ClusterTopClient::$dnsconfig = json_decode(parent::execute($httpdns,null,$bestUrl)->result,true); + $syncDate = date('U'); + ClusterTopClient::$syncDate = $syncDate ; + } + return parent::execute($request,$session,$bestUrl); + } + + private function getDnsConfigSyncDuration(){ + if(ClusterTopClient::$cfgDuration){ + return ClusterTopClient::$cfgDuration; + } + if(!ClusterTopClient::$dnsconfig){ + return ClusterTopClient::$cfgDuration; + } + $config = json_encode(ClusterTopClient::$dnsconfig); + if(!$config){ + return ClusterTopClient::$cfgDuration; + } + $config = ClusterTopClient::$dnsconfig['config']; + $duration = $config['interval']; + ClusterTopClient::$cfgDuration = $duration; + + return ClusterTopClient::$cfgDuration; + } + + private function getBestVipUrl($url,$apiname = null,$session = null){ + $config = ClusterTopClient::$dnsconfig['config']; + $degrade = $config['degrade']; + if(strcmp($degrade,'true') == 0){ + return $url; + } + $currentEnv = $this->getEnvByApiName($apiname,$session); + $vip = $this->getVipByEnv($url,$currentEnv); + if($vip) + return $vip; + return $url; + } + + private function getVipByEnv($comUrl,$currentEnv){ + $urlSchema = parse_url($comUrl); + if(!$urlSchema) + return null; + if(!ClusterTopClient::$dnsconfig['env']) + return null; + + if(!array_key_exists($currentEnv,ClusterTopClient::$dnsconfig['env'])) + return null; + + $hostList = ClusterTopClient::$dnsconfig['env'][$currentEnv]; + if(!$hostList) + return null ; + + $vipList = null; + foreach ($hostList as $key => $value) { + if(strcmp($key,$urlSchema['host']) == 0 && strcmp($value['proto'],$urlSchema['scheme']) == 0){ + $vipList = $value; + break; + } + } + $vip = $this->getRandomWeightElement($vipList['vip']); + + if($vip){ + return $urlSchema['scheme']."://".$vip.$urlSchema['path']; + } + return null; + } + + private function getEnvByApiName($apiName,$session=""){ + $apiCfgArray = ClusterTopClient::$dnsconfig['api']; + if($apiCfgArray){ + if(array_key_exists($apiName,$apiCfgArray)){ + $apiCfg = $apiCfgArray[$apiName]; + if(array_key_exists('user',$apiCfg)){ + $userFlag = $apiCfg['user']; + $flag = $this->getUserFlag($session); + if($userFlag && $flag ){ + return $this->getEnvBySessionFlag($userFlag,$flag); + }else{ + return $this->getRandomWeightElement($apiCfg['rule']); + } + } + } + } + return $this->getDeafultEnv(); + } + + private function getUserFlag($session){ + if($session && strlen($session) > 5){ + if($session[0] == '6' || $session[0] == '7'){ + return $session[strlen($session) -1]; + }else if($session[0] == '5' || $session[0] == '8'){ + return $session[5]; + } + } + return null; + } + + private function getEnvBySessionFlag($targetConfig,$flag){ + if($flag){ + $userConf = ClusterTopClient::$dnsconfig['user']; + $cfgArry = $userConf[$targetConfig]; + foreach ($cfgArry as $key => $value) { + if(in_array($flag,$value)) + return $key; + } + }else{ + return null; + } + } + + private function getRandomWeightElement($elements){ + $totalWeight = 0; + if($elements){ + foreach ($elements as $ele) { + $weight = $this->getElementWeight($ele); + $r = $this->randomFloat() * ($weight + $totalWeight); + if($r >= $totalWeight){ + $selected = $ele; + } + $totalWeight += $weight; + } + if($selected){ + return $this->getElementValue($selected); + } + } + return null; + + } + + private function getElementWeight($ele){ + $params = explode('|', $ele); + return floatval($params[1]); + } + private function getElementValue($ele){ + $params = explode('|', $ele); + return $params[0]; + } + + private function getDeafultEnv(){ + return ClusterTopClient::$dnsconfig['config']['def_env']; + } + + private static function startsWith($haystack, $needle) { + return $needle === "" || strpos($haystack, $needle) === 0; + } + + private function object_to_array($obj) + { + $_arr= is_object($obj) ? get_object_vars($obj) : $obj; + foreach($_arr as $key=> $val) + { + $val= (is_array($val) || is_object($val))? $this->object_to_array($val) : $val; + $arr[$key] = $val; + } + return$arr; + } + + private function randomFloat($min = 0, $max = 1) { return $min + mt_rand() / mt_getrandmax() * ($max - $min); } +} +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/HttpdnsGetRequest.php b/taobao-sdk-PHP-auto/top/HttpdnsGetRequest.php new file mode 100644 index 0000000..13adcf0 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/HttpdnsGetRequest.php @@ -0,0 +1,23 @@ +apiParas; + } + + public function check(){} + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/RequestCheckUtil.php b/taobao-sdk-PHP-auto/top/RequestCheckUtil.php new file mode 100644 index 0000000..3c3b21e --- /dev/null +++ b/taobao-sdk-PHP-auto/top/RequestCheckUtil.php @@ -0,0 +1,107 @@ + $maxLength){ + throw new Exception("client-check-error:Invalid Arguments:the length of " .$fieldName . " can not be larger than " . $maxLength . "." , 41); + } + } + + /** + * 检验字段fieldName的值value的最大列表长度 + * + **/ + public static function checkMaxListSize($value,$maxSize,$fieldName) { + + if(self::checkEmpty($value)) + return ; + + $list=preg_split("/,/",$value); + if(count($list) > $maxSize){ + throw new Exception("client-check-error:Invalid Arguments:the listsize(the string split by \",\") of ". $fieldName . " must be less than " . $maxSize . " ." , 41); + } + } + + /** + * 检验字段fieldName的值value 的最大值 + * + **/ + public static function checkMaxValue($value,$maxValue,$fieldName){ + + if(self::checkEmpty($value)) + return ; + + self::checkNumeric($value,$fieldName); + + if($value > $maxValue){ + throw new Exception("client-check-error:Invalid Arguments:the value of " . $fieldName . " can not be larger than " . $maxValue ." ." , 41); + } + } + + /** + * 检验字段fieldName的值value 的最小值 + * + **/ + public static function checkMinValue($value,$minValue,$fieldName) { + + if(self::checkEmpty($value)) + return ; + + self::checkNumeric($value,$fieldName); + + if($value < $minValue){ + throw new Exception("client-check-error:Invalid Arguments:the value of " . $fieldName . " can not be less than " . $minValue . " ." , 41); + } + } + + /** + * 检验字段fieldName的值value是否是number + * + **/ + protected static function checkNumeric($value,$fieldName) { + if(!is_numeric($value)) + throw new Exception("client-check-error:Invalid Arguments:the value of " . $fieldName . " is not number : " . $value . " ." , 41); + } + + /** + * 校验$value是否非空 + * if not set ,return true; + * if is null , return true; + * + * + **/ + public static function checkEmpty($value) { + if(!isset($value)) + return true ; + if($value === null ) + return true; + if(is_array($value) && count($value) == 0) + return true; + if(is_string($value) &&trim($value) === "") + return true; + + return false; + } + +} +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/ResultSet.php b/taobao-sdk-PHP-auto/top/ResultSet.php new file mode 100644 index 0000000..dc3684e --- /dev/null +++ b/taobao-sdk-PHP-auto/top/ResultSet.php @@ -0,0 +1,21 @@ + $v){ + $params[$k] = $v ; + } + + // 2. 鑾峰彇url鍙傛暟 + $queryMap = self::getQueryMap(); + foreach ($queryMap as $k => $v){ + $params[$k] = $v ; + } + + // 3. 鑾峰彇form鍙傛暟 + if ($form == null && $body == null) { + $formMap = self::getFormMap(); + foreach ($formMap as $k => $v){ + $params[$k] = $v ; + } + } else if ($form != null) { + foreach ($form as $k => $v){ + $params[$k] = $v ; + } + } + + if($body == null){ + $body = file_get_contents('php://input'); + } + + $remoteSign = $queryMap["sign"]; + $localSign = self::sign($params, $body, $secret); + if (strcmp($remoteSign, $localSign) == 0) { + return true; + } else { + $paramStr = self::getParamStrFromMap($params); + self::logCommunicationError($remoteSign,$localSign,$paramStr,$body); + return false; + } + } + + private static function getHeaderMap() { + $headerMap = array(); + $signList = $_SERVER['HTTP_TOP_SIGN_LIST']; // 鍙幏鍙栧弬涓庣鍚嶇殑澶撮儴瀛楁 + $signList = trim($signList); + if (strlen($signList) > 0){ + $params = split(",", $signList); + foreach ($_SERVER as $k => $v){ + if (substr($k, 0, 5) == 'HTTP_'){ + foreach($params as $kk){ + $upperkey = strtoupper($kk); + if(self::endWith($k,$upperkey)){ + $headerMap[$kk] = $v; + } + } + } + } + } + return $headerMap; + } + + private static function getQueryMap(){ + $queryStr = $_SERVER["QUERY_STRING"]; + $resultArray = array(); + foreach (explode('&', $queryStr) as $pair) { + list($key, $value) = explode('=', $pair); + if (strpos($key, '.') !== false) { + list($subKey, $subVal) = explode('.', $key); + + if (preg_match('/(?P\w+)\[(?P\w+)\]/', $subKey, $matches)) { + $resultArray[$matches['name']][$matches['index']][$subVal] = $value; + } else { + $resultArray[$subKey][$subVal] = urldecode($value); + } + } else { + $resultArray[$key] = urldecode($value); + } + } + return $resultArray; + } + + private static function checkRemoteIp(){ + $remoteIp = $_SERVER["REMOTE_ADDR"]; + foreach ($header_real_ip as $k){ + $realIp = $_SERVER[$k]; + $realIp = trim($realIp); + if(strlen($realIp) > 0 && strcasecmp("unknown",$realIp)){ + $remoteIp = $realIp; + break; + } + } + return self::startsWith($remoteIp,"140.205.144.") || $this->startsWith($remoteIp,"40.205.145."); + } + + private static function getFormMap(){ + $resultArray = array(); + foreach($_POST as $key=>$v) { + $resultArray[$k] = $v ; + } + return $resultArray ; + } + + private static function startsWith($haystack, $needle) { + return $needle === "" || strpos($haystack, $needle) === 0; + } + + private static function endWith($haystack, $needle) { + $length = strlen($needle); + if($length == 0) + { + return true; + } + return (substr($haystack, -$length) === $needle); + } + + private static function checkTimestamp(){ + $ts = $_POST['timestamp']; + if($ts){ + $clientTimestamp = strtotime($ts); + $current = $_SERVER['REQUEST_TIME']; + return ($current - $clientTimestamp) <= 5*60*1000; + }else{ + return false; + } + } + + private static function getParamStrFromMap($params){ + ksort($params); + $stringToBeSigned = ""; + foreach ($params as $k => $v) + { + if(strcmp("sign", $k) != 0) + { + $stringToBeSigned .= "$k$v"; + } + } + unset($k, $v); + return $stringToBeSigned; + } + + private static function sign($params,$body,$secret){ + ksort($params); + + $stringToBeSigned = $secret; + $stringToBeSigned .= self::getParamStrFromMap($params); + + if($body) + $stringToBeSigned .= $body; + $stringToBeSigned .= $secret; + return strtoupper(md5($stringToBeSigned)); + } + + protected static function logCommunicationError($remoteSign, $localSign, $paramStr, $body) + { + $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI"; + $logger = new TopLogger; + $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_". date("Y-m-d") . ".log"; + $logger->conf["separator"] = "^_^"; + $logData = array( + "checkTopSign error" , + "remoteSign=".$remoteSign , + "localSign=".$localSign , + "paramStr=".$paramStr , + "body=".$body + ); + $logger->log($logData); + } + private static function clear_blank($str, $glue='') + { + $replace = array(" ", "\r", "\n", "\t"); return str_replace($replace, $glue, $str); + } +} +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/TopClient.php b/taobao-sdk-PHP-auto/top/TopClient.php new file mode 100644 index 0000000..b545d1c --- /dev/null +++ b/taobao-sdk-PHP-auto/top/TopClient.php @@ -0,0 +1,375 @@ +appkey = $appkey; + $this->secretKey = $secretKey ; + } + + protected function generateSign($params) + { + ksort($params); + + $stringToBeSigned = $this->secretKey; + foreach ($params as $k => $v) + { + if(is_string($v) && "@" != substr($v, 0, 1)) + { + $stringToBeSigned .= "$k$v"; + } + } + unset($k, $v); + $stringToBeSigned .= $this->secretKey; + + return strtoupper(md5($stringToBeSigned)); + } + + public function curl($url, $postFields = null) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FAILONERROR, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + if ($this->readTimeout) { + curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); + } + if ($this->connectTimeout) { + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); + } + curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" ); + //https 璇锋眰 + if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + } + + if (is_array($postFields) && 0 < count($postFields)) + { + $postBodyString = ""; + $postMultipart = false; + foreach ($postFields as $k => $v) + { + if(!is_string($v)) + continue ; + + if("@" != substr($v, 0, 1))//鍒ゆ柇鏄笉鏄枃浠朵笂浼 + { + $postBodyString .= "$k=" . urlencode($v) . "&"; + } + else//鏂囦欢涓婁紶鐢╩ultipart/form-data锛屽惁鍒欑敤www-form-urlencoded + { + $postMultipart = true; + if(class_exists('\CURLFile')){ + $postFields[$k] = new \CURLFile(substr($v, 1)); + } + } + } + unset($k, $v); + curl_setopt($ch, CURLOPT_POST, true); + if ($postMultipart) + { + if (class_exists('\CURLFile')) { + curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); + } else { + if (defined('CURLOPT_SAFE_UPLOAD')) { + curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); + } + } + curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); + } + else + { + $header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8"); + curl_setopt($ch,CURLOPT_HTTPHEADER,$header); + curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1)); + } + } + $reponse = curl_exec($ch); + + if (curl_errno($ch)) + { + throw new Exception(curl_error($ch),0); + } + else + { + $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if (200 !== $httpStatusCode) + { + throw new Exception($reponse,$httpStatusCode); + } + } + curl_close($ch); + return $reponse; + } + public function curl_with_memory_file($url, $postFields = null, $fileFields = null) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FAILONERROR, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + if ($this->readTimeout) { + curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); + } + if ($this->connectTimeout) { + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); + } + curl_setopt ( $ch, CURLOPT_USERAGENT, "top-sdk-php" ); + //https 璇锋眰 + if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + } + //鐢熸垚鍒嗛殧绗 + $delimiter = '-------------' . uniqid(); + //鍏堝皢post鐨勬櫘閫氭暟鎹敓鎴愪富浣撳瓧绗︿覆 + $data = ''; + if($postFields != null){ + foreach ($postFields as $name => $content) { + $data .= "--" . $delimiter . "\r\n"; + $data .= 'Content-Disposition: form-data; name="' . $name . '"'; + //multipart/form-data 涓嶉渶瑕乽rlencode锛屽弬瑙 http:stackoverflow.com/questions/6603928/should-i-url-encode-post-data + $data .= "\r\n\r\n" . $content . "\r\n"; + } + unset($name,$content); + } + + //灏嗕笂浼犵殑鏂囦欢鐢熸垚涓讳綋瀛楃涓 + if($fileFields != null){ + foreach ($fileFields as $name => $file) { + $data .= "--" . $delimiter . "\r\n"; + $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n"; + $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n";//澶氫簡涓枃妗g被鍨 + + $data .= $file['content'] . "\r\n"; + } + unset($name,$file); + } + //涓讳綋缁撴潫鐨勫垎闅旂 + $data .= "--" . $delimiter . "--"; + + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_HTTPHEADER , array( + 'Content-Type: multipart/form-data; boundary=' . $delimiter, + 'Content-Length: ' . strlen($data)) + ); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + + $reponse = curl_exec($ch); + unset($data); + + if (curl_errno($ch)) + { + throw new Exception(curl_error($ch),0); + } + else + { + $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + if (200 !== $httpStatusCode) + { + throw new Exception($reponse,$httpStatusCode); + } + } + curl_close($ch); + return $reponse; + } + + protected function logCommunicationError($apiName, $requestUrl, $errorCode, $responseTxt) + { + $localIp = isset($_SERVER["SERVER_ADDR"]) ? $_SERVER["SERVER_ADDR"] : "CLI"; + $logger = new TopLogger; + $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_comm_err_" . $this->appkey . "_" . date("Y-m-d") . ".log"; + $logger->conf["separator"] = "^_^"; + $logData = array( + date("Y-m-d H:i:s"), + $apiName, + $this->appkey, + $localIp, + PHP_OS, + $this->sdkVersion, + $requestUrl, + $errorCode, + str_replace("\n","",$responseTxt) + ); + $logger->log($logData); + } + + public function execute($request, $session = null,$bestUrl = null) + { + $result = new ResultSet(); + if($this->checkRequest) { + try { + $request->check(); + } catch (Exception $e) { + + $result->code = $e->getCode(); + $result->msg = $e->getMessage(); + return $result; + } + } + //缁勮绯荤粺鍙傛暟 + $sysParams["app_key"] = $this->appkey; + $sysParams["v"] = $this->apiVersion; + $sysParams["format"] = $this->format; + $sysParams["sign_method"] = $this->signMethod; + $sysParams["method"] = $request->getApiMethodName(); + $sysParams["timestamp"] = date("Y-m-d H:i:s"); + if (null != $session) + { + $sysParams["session"] = $session; + } + $apiParams = array(); + //鑾峰彇涓氬姟鍙傛暟 + $apiParams = $request->getApiParas(); + + + //绯荤粺鍙傛暟鏀惧叆GET璇锋眰涓 + if($bestUrl){ + $requestUrl = $bestUrl."?"; + $sysParams["partner_id"] = $this->getClusterTag(); + }else{ + $requestUrl = $this->gatewayUrl."?"; + $sysParams["partner_id"] = $this->sdkVersion; + } + //绛惧悕 + $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams)); + + foreach ($sysParams as $sysParamKey => $sysParamValue) + { + // if(strcmp($sysParamKey,"timestamp") != 0) + $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&"; + } + + $fileFields = array(); + foreach ($apiParams as $key => $value) { + if(is_array($value) && array_key_exists('type',$value) && array_key_exists('content',$value) ){ + $value['name'] = $key; + $fileFields[$key] = $value; + unset($apiParams[$key]); + } + } + + // $requestUrl .= "timestamp=" . urlencode($sysParams["timestamp"]) . "&"; + $requestUrl = substr($requestUrl, 0, -1); + + //鍙戣捣HTTP璇锋眰 + try + { + if(count($fileFields) > 0){ + $resp = $this->curl_with_memory_file($requestUrl, $apiParams, $fileFields); + }else{ + $resp = $this->curl($requestUrl, $apiParams); + } + } + catch (Exception $e) + { + $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_ERROR_" . $e->getCode(),$e->getMessage()); + $result->code = $e->getCode(); + $result->msg = $e->getMessage(); + return $result; + } + + unset($apiParams); + unset($fileFields); + //瑙f瀽TOP杩斿洖缁撴灉 + $respWellFormed = false; + if ("json" == $this->format) + { + $respObject = json_decode($resp); + if (null !== $respObject) + { + $respWellFormed = true; + foreach ($respObject as $propKey => $propValue) + { + $respObject = $propValue; + } + } + } + else if("xml" == $this->format) + { + $respObject = @simplexml_load_string($resp); + if (false !== $respObject) + { + $respWellFormed = true; + } + } + + //杩斿洖鐨凥TTP鏂囨湰涓嶆槸鏍囧噯JSON鎴栬匵ML锛岃涓嬮敊璇棩蹇 + if (false === $respWellFormed) + { + $this->logCommunicationError($sysParams["method"],$requestUrl,"HTTP_RESPONSE_NOT_WELL_FORMED",$resp); + $result->code = 0; + $result->msg = "HTTP_RESPONSE_NOT_WELL_FORMED"; + return $result; + } + + //濡傛灉TOP杩斿洖浜嗛敊璇爜锛岃褰曞埌涓氬姟閿欒鏃ュ織涓 + if (isset($respObject->code)) + { + $logger = new TopLogger; + $logger->conf["log_file"] = rtrim(TOP_SDK_WORK_DIR, '\\/') . '/' . "logs/top_biz_err_" . $this->appkey . "_" . date("Y-m-d") . ".log"; + $logger->log(array( + date("Y-m-d H:i:s"), + $resp + )); + } + return $respObject; + } + + public function exec($paramsArray) + { + if (!isset($paramsArray["method"])) + { + trigger_error("No api name passed"); + } + $inflector = new LtInflector; + $inflector->conf["separator"] = "."; + $requestClassName = ucfirst($inflector->camelize(substr($paramsArray["method"], 7))) . "Request"; + if (!class_exists($requestClassName)) + { + trigger_error("No such api: " . $paramsArray["method"]); + } + + $session = isset($paramsArray["session"]) ? $paramsArray["session"] : null; + + $req = new $requestClassName; + foreach($paramsArray as $paraKey => $paraValue) + { + $inflector->conf["separator"] = "_"; + $setterMethodName = $inflector->camelize($paraKey); + $inflector->conf["separator"] = "."; + $setterMethodName = "set" . $inflector->camelize($setterMethodName); + if (method_exists($req, $setterMethodName)) + { + $req->$setterMethodName($paraValue); + } + } + return $this->execute($req, $session); + } + + private function getClusterTag() + { + return substr($this->sdkVersion,0,11)."-cluster".substr($this->sdkVersion,11); + } +} diff --git a/taobao-sdk-PHP-auto/top/TopLogger.php b/taobao-sdk-PHP-auto/top/TopLogger.php new file mode 100644 index 0000000..536330a --- /dev/null +++ b/taobao-sdk-PHP-auto/top/TopLogger.php @@ -0,0 +1,43 @@ + "\t", + "log_file" => "" + ); + + private $fileHandle; + + protected function getFileHandle() + { + if (null === $this->fileHandle) + { + if (empty($this->conf["log_file"])) + { + trigger_error("no log file spcified."); + } + $logDir = dirname($this->conf["log_file"]); + if (!is_dir($logDir)) + { + mkdir($logDir, 0777, true); + } + $this->fileHandle = fopen($this->conf["log_file"], "a"); + } + return $this->fileHandle; + } + + public function log($logData) + { + if ("" == $logData || array() == $logData) + { + return false; + } + if (is_array($logData)) + { + $logData = implode($this->conf["separator"], $logData); + } + $logData = $logData. "\n"; + fwrite($this->getFileHandle(), $logData); + } +} +?> \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/Area.php b/taobao-sdk-PHP-auto/top/domain/Area.php new file mode 100644 index 0000000..187a0dc --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/Area.php @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/BizResult.php b/taobao-sdk-PHP-auto/top/domain/BizResult.php new file mode 100644 index 0000000..3974de1 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/BizResult.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/FcPartnerSmsDetailDto.php b/taobao-sdk-PHP-auto/top/domain/FcPartnerSmsDetailDto.php new file mode 100644 index 0000000..e8855cb --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/FcPartnerSmsDetailDto.php @@ -0,0 +1,50 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/KfcSearchResult.php b/taobao-sdk-PHP-auto/top/domain/KfcSearchResult.php new file mode 100644 index 0000000..d34257a --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/KfcSearchResult.php @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/Result.php b/taobao-sdk-PHP-auto/top/domain/Result.php new file mode 100644 index 0000000..6df77c5 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/Result.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/Subtask.php b/taobao-sdk-PHP-auto/top/domain/Subtask.php new file mode 100644 index 0000000..617ab52 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/Subtask.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/domain/Task.php b/taobao-sdk-PHP-auto/top/domain/Task.php new file mode 100644 index 0000000..6e1e274 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/domain/Task.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeProvinceRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeProvinceRequest.php new file mode 100644 index 0000000..20fda4d --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeProvinceRequest.php @@ -0,0 +1,98 @@ +grade = $grade; + $this->apiParas["grade"] = $grade; + } + + public function getGrade() + { + return $this->grade; + } + + public function setOutRechargeId($outRechargeId) + { + $this->outRechargeId = $outRechargeId; + $this->apiParas["out_recharge_id"] = $outRechargeId; + } + + public function getOutRechargeId() + { + return $this->outRechargeId; + } + + public function setPhoneNum($phoneNum) + { + $this->phoneNum = $phoneNum; + $this->apiParas["phone_num"] = $phoneNum; + } + + public function getPhoneNum() + { + return $this->phoneNum; + } + + public function setReason($reason) + { + $this->reason = $reason; + $this->apiParas["reason"] = $reason; + } + + public function getReason() + { + return $this->reason; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.flow.charge.province"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->grade,"grade"); + RequestCheckUtil::checkNotNull($this->outRechargeId,"outRechargeId"); + RequestCheckUtil::checkNotNull($this->phoneNum,"phoneNum"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeRequest.php new file mode 100644 index 0000000..5854f8e --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowChargeRequest.php @@ -0,0 +1,98 @@ +grade = $grade; + $this->apiParas["grade"] = $grade; + } + + public function getGrade() + { + return $this->grade; + } + + public function setOutRechargeId($outRechargeId) + { + $this->outRechargeId = $outRechargeId; + $this->apiParas["out_recharge_id"] = $outRechargeId; + } + + public function getOutRechargeId() + { + return $this->outRechargeId; + } + + public function setPhoneNum($phoneNum) + { + $this->phoneNum = $phoneNum; + $this->apiParas["phone_num"] = $phoneNum; + } + + public function getPhoneNum() + { + return $this->phoneNum; + } + + public function setReason($reason) + { + $this->reason = $reason; + $this->apiParas["reason"] = $reason; + } + + public function getReason() + { + return $this->reason; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.flow.charge"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->grade,"grade"); + RequestCheckUtil::checkNotNull($this->outRechargeId,"outRechargeId"); + RequestCheckUtil::checkNotNull($this->phoneNum,"phoneNum"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowGradeRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowGradeRequest.php new file mode 100644 index 0000000..12f1447 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowGradeRequest.php @@ -0,0 +1,32 @@ +apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowQueryRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowQueryRequest.php new file mode 100644 index 0000000..3bc7c7f --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcFlowQueryRequest.php @@ -0,0 +1,47 @@ +outId = $outId; + $this->apiParas["out_id"] = $outId; + } + + public function getOutId() + { + return $this->outId; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.flow.query"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumQueryRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumQueryRequest.php new file mode 100644 index 0000000..f4cfa7f --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumQueryRequest.php @@ -0,0 +1,115 @@ +bizId = $bizId; + $this->apiParas["biz_id"] = $bizId; + } + + public function getBizId() + { + return $this->bizId; + } + + public function setCurrentPage($currentPage) + { + $this->currentPage = $currentPage; + $this->apiParas["current_page"] = $currentPage; + } + + public function getCurrentPage() + { + return $this->currentPage; + } + + public function setPageSize($pageSize) + { + $this->pageSize = $pageSize; + $this->apiParas["page_size"] = $pageSize; + } + + public function getPageSize() + { + return $this->pageSize; + } + + public function setQueryDate($queryDate) + { + $this->queryDate = $queryDate; + $this->apiParas["query_date"] = $queryDate; + } + + public function getQueryDate() + { + return $this->queryDate; + } + + public function setRecNum($recNum) + { + $this->recNum = $recNum; + $this->apiParas["rec_num"] = $recNum; + } + + public function getRecNum() + { + return $this->recNum; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.sms.num.query"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->currentPage,"currentPage"); + RequestCheckUtil::checkNotNull($this->pageSize,"pageSize"); + RequestCheckUtil::checkNotNull($this->queryDate,"queryDate"); + RequestCheckUtil::checkNotNull($this->recNum,"recNum"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumSendRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumSendRequest.php new file mode 100644 index 0000000..5d8a055 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcSmsNumSendRequest.php @@ -0,0 +1,131 @@ +extend = $extend; + $this->apiParas["extend"] = $extend; + } + + public function getExtend() + { + return $this->extend; + } + + public function setRecNum($recNum) + { + $this->recNum = $recNum; + $this->apiParas["rec_num"] = $recNum; + } + + public function getRecNum() + { + return $this->recNum; + } + + public function setSmsFreeSignName($smsFreeSignName) + { + $this->smsFreeSignName = $smsFreeSignName; + $this->apiParas["sms_free_sign_name"] = $smsFreeSignName; + } + + public function getSmsFreeSignName() + { + return $this->smsFreeSignName; + } + + public function setSmsParam($smsParam) + { + $this->smsParam = $smsParam; + $this->apiParas["sms_param"] = $smsParam; + } + + public function getSmsParam() + { + return $this->smsParam; + } + + public function setSmsTemplateCode($smsTemplateCode) + { + $this->smsTemplateCode = $smsTemplateCode; + $this->apiParas["sms_template_code"] = $smsTemplateCode; + } + + public function getSmsTemplateCode() + { + return $this->smsTemplateCode; + } + + public function setSmsType($smsType) + { + $this->smsType = $smsType; + $this->apiParas["sms_type"] = $smsType; + } + + public function getSmsType() + { + return $this->smsType; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.sms.num.send"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->recNum,"recNum"); + RequestCheckUtil::checkNotNull($this->smsFreeSignName,"smsFreeSignName"); + RequestCheckUtil::checkNotNull($this->smsTemplateCode,"smsTemplateCode"); + RequestCheckUtil::checkNotNull($this->smsType,"smsType"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcTtsNumSinglecallRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcTtsNumSinglecallRequest.php new file mode 100644 index 0000000..263a838 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcTtsNumSinglecallRequest.php @@ -0,0 +1,114 @@ +calledNum = $calledNum; + $this->apiParas["called_num"] = $calledNum; + } + + public function getCalledNum() + { + return $this->calledNum; + } + + public function setCalledShowNum($calledShowNum) + { + $this->calledShowNum = $calledShowNum; + $this->apiParas["called_show_num"] = $calledShowNum; + } + + public function getCalledShowNum() + { + return $this->calledShowNum; + } + + public function setExtend($extend) + { + $this->extend = $extend; + $this->apiParas["extend"] = $extend; + } + + public function getExtend() + { + return $this->extend; + } + + public function setTtsCode($ttsCode) + { + $this->ttsCode = $ttsCode; + $this->apiParas["tts_code"] = $ttsCode; + } + + public function getTtsCode() + { + return $this->ttsCode; + } + + public function setTtsParam($ttsParam) + { + $this->ttsParam = $ttsParam; + $this->apiParas["tts_param"] = $ttsParam; + } + + public function getTtsParam() + { + return $this->ttsParam; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.tts.num.singlecall"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->calledNum,"calledNum"); + RequestCheckUtil::checkNotNull($this->calledShowNum,"calledShowNum"); + RequestCheckUtil::checkNotNull($this->ttsCode,"ttsCode"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumDoublecallRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumDoublecallRequest.php new file mode 100644 index 0000000..b9077e3 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumDoublecallRequest.php @@ -0,0 +1,131 @@ +calledNum = $calledNum; + $this->apiParas["called_num"] = $calledNum; + } + + public function getCalledNum() + { + return $this->calledNum; + } + + public function setCalledShowNum($calledShowNum) + { + $this->calledShowNum = $calledShowNum; + $this->apiParas["called_show_num"] = $calledShowNum; + } + + public function getCalledShowNum() + { + return $this->calledShowNum; + } + + public function setCallerNum($callerNum) + { + $this->callerNum = $callerNum; + $this->apiParas["caller_num"] = $callerNum; + } + + public function getCallerNum() + { + return $this->callerNum; + } + + public function setCallerShowNum($callerShowNum) + { + $this->callerShowNum = $callerShowNum; + $this->apiParas["caller_show_num"] = $callerShowNum; + } + + public function getCallerShowNum() + { + return $this->callerShowNum; + } + + public function setExtend($extend) + { + $this->extend = $extend; + $this->apiParas["extend"] = $extend; + } + + public function getExtend() + { + return $this->extend; + } + + public function setSessionTimeOut($sessionTimeOut) + { + $this->sessionTimeOut = $sessionTimeOut; + $this->apiParas["session_time_out"] = $sessionTimeOut; + } + + public function getSessionTimeOut() + { + return $this->sessionTimeOut; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.voice.num.doublecall"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->calledNum,"calledNum"); + RequestCheckUtil::checkNotNull($this->calledShowNum,"calledShowNum"); + RequestCheckUtil::checkNotNull($this->callerNum,"callerNum"); + RequestCheckUtil::checkNotNull($this->callerShowNum,"callerShowNum"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumSinglecallRequest.php b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumSinglecallRequest.php new file mode 100644 index 0000000..0722dcb --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AlibabaAliqinFcVoiceNumSinglecallRequest.php @@ -0,0 +1,98 @@ +calledNum = $calledNum; + $this->apiParas["called_num"] = $calledNum; + } + + public function getCalledNum() + { + return $this->calledNum; + } + + public function setCalledShowNum($calledShowNum) + { + $this->calledShowNum = $calledShowNum; + $this->apiParas["called_show_num"] = $calledShowNum; + } + + public function getCalledShowNum() + { + return $this->calledShowNum; + } + + public function setExtend($extend) + { + $this->extend = $extend; + $this->apiParas["extend"] = $extend; + } + + public function getExtend() + { + return $this->extend; + } + + public function setVoiceCode($voiceCode) + { + $this->voiceCode = $voiceCode; + $this->apiParas["voice_code"] = $voiceCode; + } + + public function getVoiceCode() + { + return $this->voiceCode; + } + + public function getApiMethodName() + { + return "alibaba.aliqin.fc.voice.num.singlecall"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->calledNum,"calledNum"); + RequestCheckUtil::checkNotNull($this->calledShowNum,"calledShowNum"); + RequestCheckUtil::checkNotNull($this->voiceCode,"voiceCode"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AppipGetRequest.php b/taobao-sdk-PHP-auto/top/request/AppipGetRequest.php new file mode 100644 index 0000000..bb33689 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AppipGetRequest.php @@ -0,0 +1,32 @@ +apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/AreasGetRequest.php b/taobao-sdk-PHP-auto/top/request/AreasGetRequest.php new file mode 100644 index 0000000..ce90280 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/AreasGetRequest.php @@ -0,0 +1,48 @@ +fields = $fields; + $this->apiParas["fields"] = $fields; + } + + public function getFields() + { + return $this->fields; + } + + public function getApiMethodName() + { + return "taobao.areas.get"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->fields,"fields"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/HttpdnsGetRequest.php b/taobao-sdk-PHP-auto/top/request/HttpdnsGetRequest.php new file mode 100644 index 0000000..c2ae3a5 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/HttpdnsGetRequest.php @@ -0,0 +1,32 @@ +apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/KfcKeywordSearchRequest.php b/taobao-sdk-PHP-auto/top/request/KfcKeywordSearchRequest.php new file mode 100644 index 0000000..7b3ad1e --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/KfcKeywordSearchRequest.php @@ -0,0 +1,85 @@ +apply = $apply; + $this->apiParas["apply"] = $apply; + } + + public function getApply() + { + return $this->apply; + } + + public function setContent($content) + { + $this->content = $content; + $this->apiParas["content"] = $content; + } + + public function getContent() + { + return $this->content; + } + + public function setNick($nick) + { + $this->nick = $nick; + $this->apiParas["nick"] = $nick; + } + + public function getNick() + { + return $this->nick; + } + + public function getApiMethodName() + { + return "taobao.kfc.keyword.search"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->content,"content"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TimeGetRequest.php b/taobao-sdk-PHP-auto/top/request/TimeGetRequest.php new file mode 100644 index 0000000..d54476c --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TimeGetRequest.php @@ -0,0 +1,32 @@ +apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopAuthTokenCreateRequest.php b/taobao-sdk-PHP-auto/top/request/TopAuthTokenCreateRequest.php new file mode 100644 index 0000000..9a8146c --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopAuthTokenCreateRequest.php @@ -0,0 +1,64 @@ +code = $code; + $this->apiParas["code"] = $code; + } + + public function getCode() + { + return $this->code; + } + + public function setUuid($uuid) + { + $this->uuid = $uuid; + $this->apiParas["uuid"] = $uuid; + } + + public function getUuid() + { + return $this->uuid; + } + + public function getApiMethodName() + { + return "taobao.top.auth.token.create"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->code,"code"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopAuthTokenRefreshRequest.php b/taobao-sdk-PHP-auto/top/request/TopAuthTokenRefreshRequest.php new file mode 100644 index 0000000..a3459c2 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopAuthTokenRefreshRequest.php @@ -0,0 +1,48 @@ +refreshToken = $refreshToken; + $this->apiParas["refresh_token"] = $refreshToken; + } + + public function getRefreshToken() + { + return $this->refreshToken; + } + + public function getApiMethodName() + { + return "taobao.top.auth.token.refresh"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->refreshToken,"refreshToken"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopIpoutGetRequest.php b/taobao-sdk-PHP-auto/top/request/TopIpoutGetRequest.php new file mode 100644 index 0000000..9df9bf4 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopIpoutGetRequest.php @@ -0,0 +1,32 @@ +apiParas; + } + + public function check() + { + + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopSecretGetRequest.php b/taobao-sdk-PHP-auto/top/request/TopSecretGetRequest.php new file mode 100644 index 0000000..321ee91 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopSecretGetRequest.php @@ -0,0 +1,64 @@ +randomNum = $randomNum; + $this->apiParas["random_num"] = $randomNum; + } + + public function getRandomNum() + { + return $this->randomNum; + } + + public function setSecretVersion($secretVersion) + { + $this->secretVersion = $secretVersion; + $this->apiParas["secret_version"] = $secretVersion; + } + + public function getSecretVersion() + { + return $this->secretVersion; + } + + public function getApiMethodName() + { + return "taobao.top.secret.get"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->randomNum,"randomNum"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopatsResultGetRequest.php b/taobao-sdk-PHP-auto/top/request/TopatsResultGetRequest.php new file mode 100644 index 0000000..9cbe830 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopatsResultGetRequest.php @@ -0,0 +1,48 @@ +taskId = $taskId; + $this->apiParas["task_id"] = $taskId; + } + + public function getTaskId() + { + return $this->taskId; + } + + public function getApiMethodName() + { + return "taobao.topats.result.get"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->taskId,"taskId"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +} diff --git a/taobao-sdk-PHP-auto/top/request/TopatsTaskDeleteRequest.php b/taobao-sdk-PHP-auto/top/request/TopatsTaskDeleteRequest.php new file mode 100644 index 0000000..7f3aeb0 --- /dev/null +++ b/taobao-sdk-PHP-auto/top/request/TopatsTaskDeleteRequest.php @@ -0,0 +1,48 @@ +taskId = $taskId; + $this->apiParas["task_id"] = $taskId; + } + + public function getTaskId() + { + return $this->taskId; + } + + public function getApiMethodName() + { + return "taobao.topats.task.delete"; + } + + public function getApiParas() + { + return $this->apiParas; + } + + public function check() + { + + RequestCheckUtil::checkNotNull($this->taskId,"taskId"); + } + + public function putOtherTextParam($key, $value) { + $this->apiParas[$key] = $value; + $this->$key = $value; + } +}