Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) OneDrive -- Create a Sharing LinkCreates a sharing link for a file. Note: This example requires Chilkat v9.5.0.97 or greater.
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ; Use your client ID, client secret, and tenant ID in the following lines json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(json,"client_id","2871da2c-8176-4b7f-869b-2311aa82e743") CkJsonObject::ckUpdateString(json,"client_secret","2hu9Q~r5QuryUcEkNbg1btLtnfU1VUXzhSCG6brH") CkJsonObject::ckUpdateString(json,"scope","https://graph.microsoft.com/.default") CkJsonObject::ckUpdateString(json,"token_endpoint","https://login.microsoftonline.com/114d7ed6-71bf-4dbe-a866-748364121bf2/oauth2/v2.0/token") http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkAuthToken(http, CkJsonObject::ckEmit(json)) ; Sends a POST such as the following: ; POST https://graph.microsoft.com/v1.0/users/{user-id}/drive/root:/{item-path}:/createLink ; Content-type: application/json ; ; { ; "type": "view", ; "scope": "anonymous" ; } ; This example will create a shareable link for /Pictures/three_penguins.jpg CkHttp::ckSetUrlVar(http,"item_path","Pictures/three_penguins.jpg") CkHttp::ckSetUrlVar(http,"user_id","4fe732c3-322e-4a6b-b729-2fd1eb5c6104") ; Create the JSON request body: jsonReqBody.i = CkJsonObject::ckCreate() If jsonReqBody.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; See https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_createlink ; for information about link types and scope types. CkJsonObject::ckUpdateString(jsonReqBody,"type","view") CkJsonObject::ckUpdateString(jsonReqBody,"scope","anonymous") resp.i = CkHttp::ckPostJson3(http,"https://graph.microsoft.com/v1.0/users/{$user_id}/drive/root:/{$item_path}:/createLink","application/json",jsonReqBody) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkJsonObject::ckDispose(json) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonReqBody) ProcedureReturn EndIf CkJsonObject::setCkEmitCompact(json, 0) CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) ; If the response status code was not 200 or 201, then it failed. If (CkHttpResponse::ckStatusCode(resp) <> 201) AND (CkHttpResponse::ckStatusCode(resp) <> 200) Debug CkJsonObject::ckEmit(json) Debug "Response Status Code = " + Str(CkHttpResponse::ckStatusCode(resp)) Debug "Failed." CkHttpResponse::ckDispose(resp) CkJsonObject::ckDispose(json) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonReqBody) ProcedureReturn EndIf Debug CkJsonObject::ckEmit(json) CkHttpResponse::ckDispose(resp) ; A sample successful JSON response: ; { ; "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#permission", ; "@odata.type": "#microsoft.graph.permission", ; "id": "gIwOOCCzbeRlnx54vk7MlxqQDN0", ; "link": { ; "application": { ; "id": "441c9990" ; }, ; "type": "view", ; "webUrl": "https://1drv.ms/u/s!AhXMdJvr_DM6pghxw0E-5oJX9Hrz" ; }, ; "roles": [ ; "read" ; ], ; "shareId": "s!AhXMdJvr_DM6pghxw0E-5oJX9Hrz" ; } ; Get the webUrl like this: webUrl.s = CkJsonObject::ckStringOf(json,"link.webUrl") ; Test by downloading using an HTTP object with no authentication: http2.i = CkHttp::ckCreate() If http2.i = 0 Debug "Failed to create object." ProcedureReturn EndIf sbHtml.i = CkStringBuilder::ckCreate() If sbHtml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkHttp::ckDownloadSb(http2,webUrl,"utf-8",sbHtml) If success <> 1 Debug CkHttp::ckLastErrorText(http2) Debug "Download of Shared URL failed." CkJsonObject::ckDispose(json) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonReqBody) CkHttp::ckDispose(http2) CkStringBuilder::ckDispose(sbHtml) ProcedureReturn EndIf Debug CkStringBuilder::ckGetAsString(sbHtml) ; The shared URL is not actually the data of the file itself, but is HTML ; that can be shared, and will display the file. For example: ; <html> ; <head> ; <title>Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.</title><meta name="title" content="Microsoft OneDrive - Access files anywhere. Create docs with free Office Online."/><meta name="description" content="Store photos and docs online. Access them from any PC, Mac or phone. Create and work together on Word, Excel or PowerPoint documents."/><meta property="og:title" content="penguins.jpg"/><meta property="og:image" content="https://storage.live.com/Items/3A33FCEB9B74CC15%214872%3ACustomThumbnailSource%2CHighRes%2CDefault?width=1024&height=768&authKey=%21AHHDQT7mglf0evM"/><meta property="og:image:width" content="1024"/><meta property="og:image:height" content="768"/><meta property="og:url" content="https://onedrive.live.com/redir?resid=3A33FCEB9B74CC15!4872&authkey=!AHHDQT7mglf0evM"/><meta property="og:description" content="JPG Image"/><meta property="twitter:site" content="@OneDrive"/><meta property="twitter:card" content="photo"/><meta property="twitter:image" content="https://storage.live.com/Items/3A33FCEB9B74CC15%214872%3ACustomThumbnailSource%2CHighRes%2CDefault?width=1024&height=768&authKey=%21AHHDQT7mglf0evM"/><meta property="twitter:image:width" content="1024"/><meta property="twitter:image:height" content="768"/> ; <noscript><meta http-equiv="refresh" content="0;url=https://onedrive.live.com/?cid=3a33fceb9b74cc15&id=3A33FCEB9B74CC15%214872&sff=1&authkey=!AHHDQT7mglf0evM" /></noscript> ; <script type="text/javascript">//<![CDATA[ ; var _d=document,_dh=_d.getElementsByTagName("head")[0];function _ge(a){return _d.getElementById(a)}var $U={a:"^((ftp|http|https):)?//",b:"(^(\\s?ftp:|\\s?http:|\\s?https:|\\s?//))",primaryAjaxDelimiter:"#",pairDelimiter:"&",keyValueDelimiter:"=",queryDelimiter:"?",isAbsoluteUrl:function(a){var b=new RegExp($U.a,"i"),c=new RegExp($U.b,"i");return b.test(a)||c.test(a)},getHost:function(c){var a=$U.a+"([^:/]*([:][^@/]*)?[@])?([-.a-z0-9]*)[^-.a-z0-9]?",b=new RegExp(a,"i");return urlHost=(String(c).search(b)<0?"":RegExp.$5).toLowerCase()},doesMatchHost:function(b,e){var f="^(mailto|tel|sms):",g=new RegExp(f,"i"),c=$U.isAbsoluteUrl(b),a=$U.getHost(b),i=g.test(b),d="."+e,h=a.substr(a.length-d.length)==d||a==""&&!c||a.charAt(0)=="#"||a==e;return (!c||h)&&!i},isLinkABookmark:function(a,b){b=b||_d;var d=b.createElement("span");d.innerHTML='<a href="#"></a>';var f=d.firstChild.href,c=a.indexOf("#"),e=a.indexOf("javascript:");if(c>-1)if(c==0||a.indexOf(f)==0)return 1;if(e==0)return 1;return 0},getUrlFragment:function(c){var a="",b=c.indexOf("#");if(b>-1)a=c.substr(b+1);return a},getHashUrl:function(){var c,e=window.location,a=e.href,b=a.indexOf($U.primaryAjaxDelimiter),d=b==-1?"":a.substr(b+1);if(d)c=$U.getNormalizedUrl(a,$U.primaryAjaxDelimiter);return c},getNormalizedUrl:function(a,c){c=c||$U.primaryAjaxDelimiter;var f="",e=$U.getAjaxIndex(a,c);if(e>-1){f=a.substr(e+1);a=a.substr(0,e)}var b="",d=a.indexOf($U.queryDelimiter);if(d>-1){b=a.substr(d+1);a=a.substr(0,d)}b=$U.serialize($U.deserialize(f?f:b));if(b)a=[a,$U.queryDelimiter,b].join("");a=a.replace(/[!]/g,"%21");return a},getAjaxIndex:function(a,d){var h=-1,c=a.indexOf(d);while(c!=-1){var b=c+1,e=a.indexOf(d,b),j=a.indexOf($U.pairDelimiter,b),k=a.indexOf($U.queryDelimiter,b),g=a.indexOf($U.keyValueDelimiter,b),i=[e,j,k,g].sort(function(a,b){return a==-1?1:b==-1?-1:a-b}),f=i[0];if(f==-1)break;else if(f==g){h=c;break}else c=e}return h},getCurrentUrl:function(){return $U.getHashUrl()||window.location.href},deserialize:function(f){var c={};if(f){var e=f.split($U.pairDelimiter),g=e.length,a=0;for(;a<g;a++){var j=e[a],b=j.split($U.keyValueDelimiter),i=b[0];b.splice(0,1);var h=b.join($U.keyValueDelimiter);try{c[i]=decodeURIComponent(h)}catch(d){if(!(d instanceof URIError))throw d;c={};break}}}return c},serialize:function(d){var a=[];for(var c in d){var b=d[c];b=b?b:"";a.push(c,$U.keyValueDelimiter,encodeURIComponent(b).replace(/[^\w.%-]/g,function(b){var a=b.charCodeAt(0).toString(16);return "%"+(a.length==1?"0"+a:a).toUpperCase()}),$U.pairDelimiter)}if(a.length>0)a.pop();return a.join("")}} ; //]]></script> ; ; <script type="text/javascript">//<![CDATA[ ; var $PF={"d":"live.com","ru":"https\u003a\u002f\u002fonedrive.live.com\u002f\u003fcid\u003d3a33fceb9b74cc15\u0026id\u003d3A33FCEB9B74CC15\u0025214872\u0026sff\u003d1\u0026authkey\u003d\u0021AHHDQT7mglf0evM"}; ; (function(){var b=window,a=b.$PF=b.$PF||{},p=":",k="&colon",j="&#",g="&",d="=",f="?",e="#",n="!",o="!",l=new RegExp("[^a-z0-9-.+:]","i"),m=new RegExp("^[a-z0-9-.+]+:","i");a.isProtocolAllowed=function v(d){d=(d||"").toLowerCase();var b="",g=d.length,f;for(var e=0;e<g;e++){f=d.charCodeAt(e);if(f>32&&f<127)b+=d.charAt(e)}var a=b.indexOf(p);if(a==-1)a=b.indexOf(k);if(a==-1)a=b.indexOf(j);var c=b.substr(0,a+1);return !l.test(c)&&(!m.test(c)||c=="http:"||c=="https:"||c=="ftp:")};a.isInternalUrl=function y(b){try{return !!b&&$U.doesMatchHost(b,a.d)&&a.isProtocolAllowed(b)}catch(c){return false}};a.getHashUrl=function z(){var c,h=b.location,d=h.href,g=d.indexOf(e),f=g==-1?"":d.substr(g+1);if(f){var i=e;c=d;if(f.indexOf(o)==0)if(f.length>1){c=d.substr(d.indexOf(f)+1);i=n}else c=c.substr(0,g);if(c.indexOf("/")==0)c=[h.protocol,"//",h.host,c].join("");c=a.getNormalizedUrl(c,i)}return c};a.getCurrentUrl=function x(){var c=a.getHashUrl();return a.isInternalUrl(c)?c:b.location.href};a.getAppFrameWindow=function u(){try{return (!a.m||a.merged)&&_ge(a.fid).contentWindow}catch(b){return undefined}};a.getAppFrameDocument=function t(){try{return a.getAppFrameWindow().document}catch(b){return undefined}};function q(a,e){var k=-1,c=a.indexOf(e);while(c!=-1){var b=c+1,h=a.indexOf(e,b),m=a.indexOf(g,b),n=a.indexOf(f,b),j=a.indexOf(d,b),l=[h,m,n,j].sort(function(a,b){return a==-1?1:b==-1?-1:a-b}),i=l[0];if(i==-1)break;else if(i==j){k=c;break}else c=h}return k}a.getNormalizedUrl=function w(a,c){c=c||e;var h="",g=q(a,c);if(g>-1){h=a.substr(g+1);a=a.substr(0,g)}var b="",d=a.indexOf(f);if(d>-1){b=a.substr(d+1);a=a.substr(0,d)}b=s(r(h?h:b));if(b)a=[a,f,b].join("");a=a.replace(/[!]/g,"%21");return a};function r(h){var c={};if(h){var f=h.split(g),i=f.length,a=0;for(;a<i;a++){var l=f[a],b=l.split(d),k=b[0];b.splice(0,1);var j=b.join(d);try{c[k]=decodeURIComponent(j)}catch(e){if(!(e instanceof URIError))throw e;c={};break}}}return c}function s(e){var a=[];for(var c in e){var b=e[c];b=b?b:"";a.push(c,d,encodeURIComponent(b).replace(/[^\w.%-]/g,function(b){var a=b.charCodeAt(0).toString(16);return "%"+(a.length==1?"0"+a:a).toUpperCase()}),g)}if(a.length>0)a.pop();return a.join("")}if(!a.f)try{var c=a.getHashUrl()||a.ru;if(c){var h=document.location;try{if(b!=b.top){document.domain=a.d;if(c.indexOf("login."+a.d)>-1||c.indexOf("account."+a.d)>-1||c.indexOf(b.top.document.location.protocol)!=0)h=b.top.document.location}}catch(i){}if(a.isInternalUrl(c))h.replace(c)}}catch(i){}})(); ; ; //]]></script> ; ; </head> ; </html> CkJsonObject::ckDispose(json) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonReqBody) CkHttp::ckDispose(http2) CkStringBuilder::ckDispose(sbHtml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.