check for existence of schema file when fetching the download URL

pull/32/head
vaikas-google 9 years ago
parent 0cecefd4ac
commit da8ba9564c

@ -60,21 +60,32 @@ func (g *GithubRegistry) List() ([]Type, error) {
return retTypes, nil return retTypes, nil
} }
// GetURL fetches the download URL for a given Type. // GetURL fetches the download URL for a given Type and checks for existence of a schema file.
func (g *GithubRegistry) GetURL(t Type) (string, error) { func (g *GithubRegistry) GetURL(t Type) (string, error) {
_, dc, _, err := g.client.Repositories.GetContents(g.owner, g.repository, TypesDir+"/"+t.Name+"/"+t.Version, nil) _, dc, _, err := g.client.Repositories.GetContents(g.owner, g.repository, TypesDir+"/"+t.Name+"/"+t.Version, nil)
if err != nil { if err != nil {
log.Printf("Failed to list types : %v", err) log.Printf("Failed to list types : %v", err)
return "", err return "", err
} }
var downloadURL, typeName, schemaName string
for _, f := range dc { for _, f := range dc {
if *f.Type == "file" { if *f.Type == "file" {
if *f.Name == t.Name+".jinja" || *f.Name == t.Name+".py" { if *f.Name == t.Name+".jinja" || *f.Name == t.Name+".py" {
return *f.DownloadURL, nil typeName = *f.Name
downloadURL = *f.DownloadURL
} }
if *f.Name == t.Name+".jinja.schema" || *f.Name == t.Name+".py.schema" {
schemaName = *f.Name
} }
} }
}
if downloadURL == "" {
return "", fmt.Errorf("Can not find type %s:%s", t.Name, t.Version) return "", fmt.Errorf("Can not find type %s:%s", t.Name, t.Version)
}
if schemaName == typeName + ".schema" {
return downloadURL, nil
}
return "", fmt.Errorf("Can not find schema for %s:%s, expected to find %s", t.Name, t.Version, typeName + ".schema")
} }
func (g *GithubRegistry) getDirs(dir string) ([]string, error) { func (g *GithubRegistry) getDirs(dir string) ([]string, error) {

Loading…
Cancel
Save