github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/api/plugin/plugin_repository.go (about)

     1  package plugin
     2  
     3  import "net/url"
     4  
     5  // PluginRepository represents a plugin repository
     6  type PluginRepository struct {
     7  	Plugins []Plugin `json:"plugins"`
     8  }
     9  
    10  type PluginBinary struct {
    11  	Platform string `json:"platform"`
    12  	URL      string `json:"url"`
    13  	Checksum string `json:"checksum"`
    14  }
    15  
    16  type Plugin struct {
    17  	Name        string         `json:"name"`
    18  	Description string         `json:"description"`
    19  	Version     string         `json:"version"`
    20  	Binaries    []PluginBinary `json:"binaries"`
    21  }
    22  
    23  func (client *Client) GetPluginRepository(repositoryURL string) (PluginRepository, error) {
    24  	parsedURL, err := url.Parse(repositoryURL)
    25  	if err != nil {
    26  		return PluginRepository{}, err
    27  	}
    28  	parsedURL.Path = "/list"
    29  
    30  	request, err := client.newGETRequest(parsedURL.String())
    31  	if err != nil {
    32  		return PluginRepository{}, err
    33  	}
    34  
    35  	var pluginRepository PluginRepository
    36  	response := Response{
    37  		Result: &pluginRepository,
    38  	}
    39  	err = client.connection.Make(request, &response, nil)
    40  	if err != nil {
    41  		return PluginRepository{}, err
    42  	}
    43  
    44  	return pluginRepository, nil
    45  }