let know the source code to fetch files from git hub repository..while running the attached file we are getting error. ERROR #5001: Repository doesn't exist OR you don't have accesscoming1 1 Please help us to resolve the error. Please find the code used : ~~~ Class Util.download Extends %Persistent { ClassMethod Update(Owner As %String, Repository As %String, Branch As %String = "", Username As %String, Password As %String, Namespace = {$Namespace}) As %Status { write ! , Username write ! , Password Set req = ..CreateRequest(Username, Password) write !,req //Set req.Location = "repos/" _ Owner _ "/" _ Repository _ "/contents" // as described in https://developer.github.com/v3/repos/ set req.Location = "http://github.com/vadsamm/sam.git" //set req.Location = "" //Do:(Branch'="") req.SetParam("ref",Branch) // if omitted the repository’s default branch (usually master) would be used Set links = ##class(%ListOfDataTypes).%New() //Set st = ..ProcessDirectory("",req,.links) //write !,"coming1 "_$system.Status.DisplayError(st) // Return:$$$ISERR(st) st write !,"coming2" Set namespace = $Namespace Zn Namespace Set st = ..DownloadFiles(links,req,.list) Set st2 = $system.OBJ.CompileList(.list,"cuk /checkuptodate=expandedonly") Zn namespace WRITE !,st WRITE !,st2 Return $$$ADDSC(st, st2) } /** Process one directory of GitHub repository. Recursive.
Path -Internal repository path. Root is empty string
Request - Authenticated/Set %Net.HttpRequest object.
Links - List of links to raw files (which satisfy IsCacheFile conditions) from repository.
**/ ClassMethod ProcessDirectory(Path As %String = "", Request As %Net.HttpRequest, ByRef Links As %ListOfDataTypes) As %Status { Set location = Request.Location write !, "location::"_location Set Request.Location = Request.Location _ Path Set st = Request.Get() write !, "st::"_st Return:$$$ISERR(st) st Return:(Request.HttpResponse.StatusCode = 404) $$$ERROR($$$GeneralError,"Repository doesn't exist OR you don't have access") Return:((Request.HttpResponse.StatusCode = 403) || (Request.HttpResponse.GetHeader("X-RATELIMIT-REMAINING")=0)) $$$ERROR($$$GeneralError,"API rate limit exceeded. Try logging in.") Return:(Request.HttpResponse.StatusCode '= 200) $$$ERROR($$$GeneralError,"Received " _ Request.HttpResponse.StatusCode _ " expected 200") #dim objects As List of %ZEN.proxyObject #dim obj As %ZEN.proxyObject Set st = ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(Request.HttpResponse.Data,,.objects,1) Return:$$$ISERR(st) st /*write !, objects.Count() For i = 1:1:objects.Count() { Set obj = objects.GetAt(i) If (obj.type = "dir") { Set st = ..ProcessDirectory("/"_obj.name,Request,.Links) Return:$$$ISERR(st) st } ElseIf (obj.type = "file") { Do:..IsCacheFile(obj) Links.Insert(obj."download_url") } Else { // obj.type = "symlink" or obj.type = "submodule" } } */ Set Request.Location = location // to keep track of where in the repository tree we are Return $$$OK } /** Check that incoming file is the one you need. **/ ClassMethod IsCacheFile(File As %ZEN.proxyObject) As %Boolean { Set extensions = ",xml,cls,csp,csr,mac,int,bas,inc,gbl,prj,obj,pkg,gof," Return:($L(File.name,".")=1) 0 //no extension Set File.Extension = $P(File.name,".",$L(File.name,".")) Return $F(extensions,","_$ZCVT(File.Extension,"l")_",") } /** Download list of files on https://raw.githubusercontent.com/ server.
Links - List of links to raw files.
Request - Authenticated/Set %Net.HttpRequest object.
loadedlist - Returns an array of the items loaded. **/ ClassMethod DownloadFiles(Links As %ListOfDataTypes, Request As %Net.HttpRequest, Output Items) As %Status { Kill Items //Set Request.Server = "raw.githubusercontent.com" Set Request.Server ="https://github.com/vadsamm/sam.git/" Set st = $$$OK For i = 1:1:Links.Count() { Set streq = Request.Get($e(Links.GetAt(i),35,*)) // Remove "https://raw.githubusercontent.com/" from URL. Set:$$$ISERR(streq) st=$$$ADDSC(st, streq) Set stload = $system.OBJ.LoadStream(Request.HttpResponse.Data,"",.error,.items) Set:$$$ISERR(stload) st=$$$ADDSC(st, stload) Merge Items = items } //Set Request.Server="api.github.com" Return st } ClassMethod CreateRequest(Username As %String = "", Password As %String = "") As %Net.HttpRequest { Set namespace = $Namespace Set SSLConfig = "GitHub" Zn "%SYS" Do:'##class(Security.SSLConfigs).Exists(SSLConfig) ##class(Security.SSLConfigs).Create(SSLConfig) Zn namespace Set req=##class(%Net.HttpRequest).%New() write !,"req::"_req Set req.Https=1 Set req.SSLConfiguration=SSLConfig Set req.Server="api.github.com" Do req.SetHeader("Accept","application/vnd.github.v3+json") // we want 3rd version of api If ((Username="") || (Password="")) { // supply Username and Password, if both are provided. GitHub accept Basic Auth Set req.Username = Username // https://developer.github.com/v3/auth/ Set req.Password = Password } write !,"req::"_req Return req } ~~~