temporary-signature-sample.html 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!--
  2. * Copyright 2019 Huawei Technologies Co.,Ltd.
  3. * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
  4. * this file except in compliance with the License. You may obtain a copy of the
  5. * License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software distributed
  10. * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
  11. * CONDITIONS OF ANY KIND, either express or implied. See the License for the
  12. * specific language governing permissions and limitations under the License.
  13. -->
  14. <!DOCTYPE html>
  15. <html lang="en">
  16. <head>
  17. <meta charset="utf-8">
  18. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  19. <meta http-equiv="Pragma" name="Pragma" content="no-cache">
  20. <title>temporary_signature_sample</title>
  21. </head>
  22. <body>
  23. <h3>OBS BrowserJS SDK demo</h3>
  24. <h4>Basic Configuration</h4>
  25. <label>AK:</label> <input type="text" value="*** Provide your Access Key ***" id="ak" size="30"/>
  26. <label>SK:</label> <input type="text" value="*** Provide your Secret Key ***" id="sk" size="30"/>
  27. <p>
  28. <label>Server:</label> <input type="text" value="http://your-endpoint" id="server" size="30"/>
  29. <label>Bucket:</label> <input type="text" value="bucketname" id="bucketname"/>
  30. <label>Key:</label> <input type="text" value="objectkey" id="objectkey"/>
  31. <p>
  32. <input type="button" value="Click to upload object" onclick="putObject();"/>
  33. <p>
  34. <input type="button" value="Click to download object" onclick="getObject();"/>
  35. <p>
  36. <input type="button" value="Click to set object acl" onclick="setObjectAcl();"/>
  37. <p>
  38. <input type="button" value="Click to get object acl" onclick="getObjectAcl();"/>
  39. <p>
  40. <input type="button" value="Click to delete object" onclick="deleteObject();"/>
  41. </body>
  42. <script src="../dist/esdk-obs-browserjs.3.23.5.min.js"></script>
  43. <script type="text/javascript">
  44. /**
  45. * This sample demonstrates how to do common operations in temporary signature way
  46. * on OBS using the OBS SDK for BrowserJS.
  47. */
  48. function getObsClient(){
  49. /*
  50. * Initialize a obs client instance with your account for accessing OBS
  51. */
  52. var ak = document.getElementById('ak').value;
  53. var sk = document.getElementById('sk').value;
  54. var server = document.getElementById('server').value;
  55. return new ObsClient({
  56. access_key_id: ak,
  57. secret_access_key: sk,
  58. server : server,
  59. timeout : 60 * 5,
  60. signature : 'obs'
  61. });
  62. }
  63. function doAction(msg, method, _url, content,headers){
  64. console.log(headers);
  65. var req = {
  66. method : method,
  67. url : _url,
  68. withCredentials: false,
  69. headers : headers || {},
  70. validateStatus: function(status){
  71. return status >= 200;
  72. },
  73. data : content
  74. };
  75. axios.request(req).then(function (response) {
  76. if(response.status <300){
  77. console.log(msg + ' using temporary signature successfully.');
  78. console.log('response data:');
  79. console.log(response.data);
  80. console.log('\n');
  81. }else{
  82. console.log(msg + ' using temporary signature failed!');
  83. console.log('status:' + response.status);
  84. console.log('\n');
  85. }
  86. }).catch(function (err) {
  87. console.log(msg + ' using temporary signature failed!');
  88. console.log('\n');
  89. });
  90. }
  91. function putObject(){
  92. var bucketName = document.getElementById('bucketname').value;
  93. var objectKey = document.getElementById('objectkey').value;
  94. var obs = getObsClient();
  95. var method = 'PUT';
  96. var content = 'Hello OBS';
  97. var headers = {};
  98. headers['Content-Length'] = content.length;
  99. headers['Content-Type'] = 'text/plain';//if not set, axios will add content-type automaticlly
  100. var res = obs.createSignedUrlSync({Method : method, Bucket : bucketName, Key: objectKey, Headers: headers});
  101. doAction('Create object', method, res.SignedUrl, content, res.ActualSignedRequestHeaders);
  102. }
  103. function getObject(){
  104. var bucketName = document.getElementById('bucketname').value;
  105. var objectKey = document.getElementById('objectkey').value;
  106. var obs = getObsClient();
  107. var method = 'GET';
  108. var res = obs.createV2SignedUrlSync({Method : method, Bucket : bucketName, Key: objectKey});
  109. doAction('Get object', method, res.SignedUrl, null, res.ActualSignedRequestHeaders);
  110. }
  111. function setObjectAcl(){
  112. var bucketName = document.getElementById('bucketname').value;
  113. var objectKey = document.getElementById('objectkey').value;
  114. var obs = getObsClient();
  115. var method = 'PUT';
  116. var headers = {'x-obs-acl' : obs.enums.AclPublicRead};
  117. headers['Content-Type'] = 'text/plain';//if not set, axios will add content-type automaticlly
  118. var res = obs.createV2SignedUrlSync({Method : method, Bucket : bucketName, Key: objectKey, SpecialParam: 'acl', Headers: headers});
  119. doAction('Set object acl', method, res.SignedUrl, null, res.ActualSignedRequestHeaders);
  120. }
  121. function getObjectAcl(){
  122. var bucketName = document.getElementById('bucketname').value;
  123. var objectKey = document.getElementById('objectkey').value;
  124. var obs = getObsClient();
  125. var method = 'GET';
  126. var res = obs.createV2SignedUrlSync({Method : method, Bucket : bucketName, Key: objectKey, SpecialParam: 'acl'});
  127. doAction('Get object acl', method, res.SignedUrl, null, res.ActualSignedRequestHeaders);
  128. }
  129. function deleteObject(){
  130. var bucketName = document.getElementById('bucketname').value;
  131. var objectKey = document.getElementById('objectkey').value;
  132. var obs = getObsClient();
  133. var method = 'DELETE';
  134. var res = obs.createV2SignedUrlSync({Method : method, Bucket : bucketName, Key: objectKey});
  135. doAction('Delete object', method, res.SignedUrl, null, res.ActualSignedRequestHeaders);
  136. }
  137. </script>
  138. </html>