go to post Hansel Rudy Sta... · Jul 2, 2020 in my case, some fixes for Huawei (like Old version s3) Class Cloud.Storage { ClassMethod GetOBSCredentials(profile = "CloudStorage") As %Status { Set tUsername = ##Class(Ens.Config.Credentials).%OpenId(profile) If (tUsername){ Set %extOBS("AccessKeyId")=tUsername.Username Set %extOBS("SecretAccessKey")=tUsername.Password } Quit $$$OK } ClassMethod OBSSignRequest(ByRef request, requeststring, bucket) As %String { If '$data(%extOBS) { Set sc=..GetOBSCredentials() } Set tAccessKeyId = %extOBS("AccessKeyId") Set tSecretAccessKey = %extOBS("SecretAccessKey") Set tDateH = $ZTS Set tWeekDay = $Piece($ZDateTime(tDateH,11)," ",1) Set tDate = tWeekDay_", "_$ZDateTime(tDateH,2,1)_" GMT" Set request.Date = tDate Set tContentMD5 = "" Set tContentType = "" Set CanonicalizedHeaders = "x-obs-acl:private" Set tStringToSign = $Piece(requeststring," ",1)_$Char(10)_ tContentMD5_$Char(10)_ tContentType_$Char(10)_ tDate_$Char(10)_ "/"_ bucket_$Piece(requeststring," ",2) Set tStringToSignUTF8 = $Zconvert(tStringToSign,"O","UTF8") Set tSignature = ##Class(%SYSTEM.Encryption).HMACSHA1(tStringToSignUTF8,tSecretAccessKey) Set tSignatureBase64 = ##Class(%SYSTEM.Encryption).Base64Encode(tSignature) Set tAuthorization = "OBS "_tAccessKeyId_":"_tSignatureBase64 Set request.Authorization=tAuthorization Quit $$$OK } ClassMethod GetFileHeader(filename, ByRef stream As %Stream.GlobalBinary, ByRef status As %Library.DynamicObject, classname = "") As %Status { Set status = {} Set bucket = $Piece(filename,"/",3) Set key=$Piece(filename,"/",4,*) Set object="/"_bucket_"/"_key Set obsRegion=$Get(^EXT.OBSBucketRegion(bucket),"la-south-2") Set server = bucket_".obs."_obsRegion_".myhuaweicloud.com" Set request = ##Class(%Net.HttpRequest).%New() Set request.Server = server Set request.Https=1 Set request.SSLConfiguration="ISC.FeatureTracker.SSL.Config" Set url = "/"_key Set requeststring="GET "_"/"_key Set sc= ..OBSSignRequest(request,requeststring,bucket) Set sc = request.Get(url) Set status.code = request.HttpResponse.StatusCode Set stream=request.HttpResponse.Data Set stream.LineTerminator=$Char(10) Quit $$$OK } } I use Credentials to save data. Thanks !!
go to post Hansel Rudy Sta... · Jun 30, 2020 Finally, wizard created methods and objects not create as persistent by default, i change that and everything works.