client

package module
v0.17.2-0...-a8c50c0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 22, 2021 License: MPL-2.0 Imports: 13 Imported by: 0

README

Golang Nexus Client

Introduction

Sonatype Nexus Golang Client

Development and testing

Start a Nexus Docker container

$ docker run -d -p 8081:8081 --name nexus sonatype/nexus3

Get the Admin password

$ docker exec -ti nexus /bin/bash -c 'cat /nexus-data/admin.password'

Set config as environment variables

$ export NEXUS_URL=http://127.0.0.1:8081
$ export NEXUS_USERNAME=admin
$ export NEXUS_PASSWORD=<random-password-from-above>

Run tests

$ make test

Author

Datadrivers GmbH

Documentation

Index

Constants

View Source
const (
	BlobstoreTypeFile = "File"
	BlobstoreTypeS3   = "S3"
)
View Source
const (
	// ContentTypeApplicationJSON ...
	ContentTypeApplicationJSON = "application/json"
	// ContentTypeTextPlain ...
	ContentTypeTextPlain = "text/plain"
)
View Source
const (

	// PrivilegeDomains
	PrivilegeDomainAll                = "*"
	PrivilegeDomainAPIKey             = "apikey"
	PrivilegeDomainAnalytics          = "analytics"
	PrivilegeDomainAtlas              = "atlas"
	PrivilegeDomainBlobstores         = "blobstores"
	PrivilegeDomainBundles            = "bundles"
	PrivilegeDomainCapabilities       = "capabilities"
	PrivilegeDomainComponent          = "component"
	PrivilegeDomainDatastores         = "datastores"
	PrivilegeDomainHealthcheck        = "healthcheck"
	PrivilegeDomainHealthcheckSummary = "healthchecksummary"
	PrivilegeDomainIQViolationSummery = "iq-violation-summary"
	PrivilegeDomainLDAP               = "ldap"
	PrivilegeDomainLicensing          = "licensing"
	PrivilegeDomainLogging            = "logging"
	PrivilegeDomainMetrics            = "metrics"
	PrivilegeDomainPrivileges         = "privileges"
	PrivilegeDomainRoles              = "roles"
	PrivilegeDomainSearch             = "search"
	PrivilegeDomainSelectors          = "selectors"
	PrivilegeDomainSettings           = "settings"
	PrivilegeDomainSSLTruststore      = "ssl-truststore"
	PrivilegeDomainTasks              = "tasks"
	PrivilegeDomainUsers              = "users"
	PrivilegeDomainUsersChangePW      = "userschangepw"
	PrivilegeDomainWonderland         = "wonderland"

	// PrivilegeTypes
	PrivilegeTypeApplication     = "application"
	PrivilegeTypeContentSelector = "repository-content-selector"
	PrivilegeTypeRepositoryAdmin = "repository-admin"
	PrivilegeTypeRepositoryView  = "repository-view"
	PrivilegeTypeScript          = "script"
	PrivilegeTypeWildcard        = "wildcard"
)
View Source
const (
	RepositoryFormatApt    = "apt"
	RepositoryFormatBower  = "bower"
	RepositoryFormatConan  = "conan"
	RepositoryFormatDocker = "docker"
	RepositoryFormatGitLFS = "gitlfs"
	RepositoryFormatGo     = "go"
	RepositoryFormatHelm   = "helm"
	RepositoryFormatMaven2 = "maven2"
	RepositoryFormatNPM    = "npm"
	RepositoryFormatNuget  = "nuget"
	RepositoryFormatP2     = "p2"
	RepositoryFormatPyPi   = "pypi"
	RepositoryFormatRAW    = "raw"
	RepositoryFormatRuby   = "rubygems"
	RepositoryFormatYum    = "yum"

	RepositoryTypeGroup  = "group"
	RepositoryTypeHosted = "hosted"
	RepositoryTypeProxy  = "proxy"
)

Variables

Functions

This section is empty.

Types

type Blobstore

type Blobstore struct {
	AvailableSpaceInBytes int    `json:"availableSpaceInBytes"`
	BlobCount             int    `json:"blobCount"`
	Name                  string `json:"name"`
	Path                  string `json:"path,omitempty"` // only if type File
	TotalSizeInBytes      int    `json:"totalSizeInBytes"`
	Type                  string `json:"type"`

	*BlobstoreS3BucketConfiguration `json:"bucketConfiguration,omitempty"`
	*BlobstoreSoftQuota             `json:"softQuota,omitempty"`
}

Blobstore data

type BlobstoreS3AdvancedBucketConnection

type BlobstoreS3AdvancedBucketConnection struct {
	Endpoint       string `json:"endpoint"`
	SignerType     string `json:"signerType"`
	ForcePathStyle bool   `json:"forcePathStyle"`
}

BlobstoreS3AdvancedBucketConnection data

type BlobstoreS3Bucket

type BlobstoreS3Bucket struct {
	Expiration int    `json:"expiration"`
	Name       string `json:"name"`
	Prefix     string `json:"prefix"`
	Region     string `json:"region"`
}

BlobstoreS3Bucket data

type BlobstoreS3BucketConfiguration

type BlobstoreS3BucketConfiguration struct {
	*BlobstoreS3Bucket                   `json:"bucket,omitempty"`
	*BlobstoreS3Encryption               `json:"encryption,omitempty"`
	*BlobstoreS3BucketSecurity           `json:"bucketSecurity,omitempty"`
	*BlobstoreS3AdvancedBucketConnection `json:"advancedBucketConnection,omitempty"`
}

BlobstoreS3BucketConfiguration data

type BlobstoreS3BucketSecurity

type BlobstoreS3BucketSecurity struct {
	AccessKeyID     string `json:"accessKeyId"`
	Role            string `json:"role"`
	SecretAccessKey string `json:"secretAccessKey"`
	SessionToken    string `json:"sessionToken"`
}

BlobstoreS3BucketSecurity data

type BlobstoreS3Encryption

type BlobstoreS3Encryption struct {
	Key  string `json:"encryptionKey"`
	Type string `json:"encryptionType"`
}

BlobstoreS3Encryption data

type BlobstoreSoftQuota

type BlobstoreSoftQuota struct {
	Limit int    `json:"limit"`
	Type  string `json:"type"`
}

BlobstoreSoftQuota data

type Certificate

type Certificate struct {
	Id                      string `json:"id"`
	Fingerprint             string `json:"fingerprint"`
	SerialNumber            string `json:"serialNumber"`
	IssuerCommonName        string `json:"issuerCommonName"`
	IssuerOrganization      string `json:"issuerOrganization"`
	IssuerOrganizationUnit  string `json:"issuerOrganizationalUnit"`
	SubjectCommonName       string `json:"subjectCommonName"`
	SubjectOrganization     string `json:"subjectOrganization"`
	SubjectOrganizationUnit string `json:"subjectOrganizationalUnit"`
	Pem                     string `json:"pem"`
	IssuedOn                int64  `json:"issuedOn"`
	ExpiresOn               int64  `json:"expiresOn"`
}

type CertificateRequest

type CertificateRequest struct {
	Host string `url:"host"`
	Port int    `url:"port"`
}

func NewCertificateRequest

func NewCertificateRequest(proxyUrl string) (*CertificateRequest, error)

type Client

type Client interface {
	BlobstoreCreate(Blobstore) error
	BlobstoreDelete(string) error
	BlobstoreRead(string) (*Blobstore, error)
	BlobstoreUpdate(string, Blobstore) error
	CertificateCreate(*Certificate) error
	CertificateDelete(string) error
	CertificateGet(*CertificateRequest) (*Certificate, error)
	CertificateList() (*[]Certificate, error)
	ContentSelectorCreate(ContentSelector) error
	ContentSelectorDelete(string) error
	ContentSelectorRead(string) (*ContentSelector, error)
	ContentSelectorUpdate(string, ContentSelector) error
	ContentType() string
	ContentTypeJSON()
	ContentTypeTextPlain()
	LDAPChangeOrder([]string) error
	LDAPCreate(LDAP) error
	LDAPDelete(string) error
	LDAPList() ([]LDAP, error)
	LDAPRead(string) (*LDAP, error)
	LDAPUpdate(string, LDAP) error
	PrivilegeCreate(Privilege) error
	PrivilegeDelete(string) error
	PrivilegeRead(string) (*Privilege, error)
	PrivilegeUpdate(string, Privilege) error
	Privileges() ([]Privilege, error)
	RealmsActivate([]string) error
	RealmsActive() ([]string, error)
	RealmsAvailable() ([]Realm, error)
	RepositoryCreate(Repository) error
	RepositoryDelete(string) error
	RepositoryRead(string) (*Repository, error)
	RepositoryUpdate(string, Repository) error
	RoleCreate(Role) error
	RoleDelete(string) error
	RoleRead(string) (*Role, error)
	RoleUpdate(string, Role) error
	RoutingRuleCreate(*RoutingRule) error
	RoutingRuleDelete(string) error
	RoutingRuleRead(string) (*RoutingRule, error)
	RoutingRuleUpdate(*RoutingRule) error
	RoutingRulesLists() ([]RoutingRule, error)
	ScriptCreate(*Script) error
	ScriptDelete(string) error
	ScriptLists() ([]Script, error)
	ScriptRead(string) (*Script, error)
	ScriptRun(string) error
	ScriptUpdate(*Script) error
	UserChangePassword(string, string) error
	UserCreate(User) error
	UserDelete(string) error
	UserRead(string) (*User, error)
	UserUpdate(string, User) error
}

Client represents the Nexus API Client interface

func NewClient

func NewClient(config Config) Client

NewClient returns an instance of client that implements the Client interface

type Config

type Config struct {
	URL      string `json:"url"`
	Username string `json:"username"`
	Password string `json:"password"`
	Insecure bool   `json:"insecure"`
}

Config is the configuration structure used to instantiate the Nexus client

type ContentSelector

type ContentSelector struct {
	Description string `json:"description"`
	Expression  string `json:"expression"`
	Name        string `json:"name"`
}

ContentSelector data

type LDAP

type LDAP struct {
	AuthPassword                string `json:"authPassword"`
	AuthRealm                   string `json:"authRealm,omitempty"`
	AuthSchema                  string `json:"authScheme"`
	AuthUserName                string `json:"authUsername,omitempty"`
	ConnectionRetryDelaySeconds uint   `json:"connectionRetryDelaySeconds"`
	ConnectionTimeoutSeconds    uint   `json:"connectionTimeoutSeconds"`
	GroupBaseDn                 string `json:"groupBaseDn,omitempty"`
	GroupIDAttribute            string `json:"groupIdAttribute,omitempty"`
	GroupMemberAttribute        string `json:"groupMemberAttribute,omitempty"`
	GroupMemberFormat           string `json:"groupMemberFormat,omitempty"`
	GroupObjectClass            string `json:"groupObjectClass,omitempty"`
	GroupSubtree                bool   `json:"groupSubtree,omitempty"`
	GroupType                   string `json:"groupType"`
	Host                        string `json:"host"`
	ID                          string `json:"id"`
	LDAPGroupsAsRoles           bool   `json:"ldapGroupsAsRoles,omitempty"`
	MaxIncidentCount            uint   `json:"maxIncidentsCount"`
	Name                        string `json:"name"`
	Port                        uint   `json:"port"`
	Protocol                    string `json:"protocol"`
	SearchBase                  string `json:"searchBase"`
	UseTrustStore               bool   `json:"useTrustStore,omitempty"`
	UserBaseDN                  string `json:"userBaseDn,omitempty"`
	UserEmailAddressAttribute   string `json:"userEmailAddressAttribute,omitempty"`
	UserIDAttribute             string `json:"userIdAttribute,omitempty"`
	UserLDAPFilter              string `json:"userLdapFilter,omitempty"`
	UserMemberOfAttribute       string `json:"userMemberOfAttribute,omitempty"`
	UserObjectClass             string `json:"userObjectClass,omitempty"`
	UserPasswordAttribute       string `json:"userPasswordAttribute,omitempty"`
	UserRealNameAttribute       string `json:"userRealNameAttribute,omitempty"`
	UserSubtree                 bool   `json:"userSubtree,omitempty"`
}

LDAP data structure

type Privilege

type Privilege struct {
	Actions         []string `json:"actions,omitempty"`
	ContentSelector string   `json:"contentSelector,omitempty"`
	Description     string   `json:"description"`
	Domain          string   `json:"domain,omitempty"`
	Format          string   `json:"format,omitempty"`
	Name            string   `json:"name"`
	Pattern         string   `json:"pattern,omitempty"`
	ScriptName      string   `json:"scriptName,omitempty"`
	ReadOnly        bool     `json:"readOnly"`
	Repository      string   `json:"repository,omitempty"`
	Type            string   `json:"type"`
}

Privilege data

type Realm

type Realm struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

Realm represents an instance of Nexus Realm

type Repository

type Repository struct {
	Format          string  `json:"format"`
	Name            string  `json:"name"`
	Online          bool    `json:"online"`
	RoutingRuleName *string `json:"routingRuleName,omitempty"`
	Type            string  `json:"type"`

	// Apt Repository data
	*RepositoryApt        `json:"apt,omitempty"`
	*RepositoryAptSigning `json:"aptSigning,omitempty"`

	// RepositoryBower data
	*RepositoryBower `json:"bower,omitempty"`

	// RepositoryCleanup data
	*RepositoryCleanup `json:"cleanup,omitempty"`

	// Docker Repository data
	*RepositoryDocker      `json:"docker,omitempty"`
	*RepositoryDockerProxy `json:"dockerProxy,omitempty"`

	// Group data
	*RepositoryGroup `json:"group,omitempty"`

	// HTTPClient
	*RepositoryHTTPClient `json:"httpClient,omitempty"`

	// Maven Reporitoy data
	*RepositoryMaven `json:"maven,omitempty"`

	// Cache data for proxy Repository
	*RepositoryNegativeCache `json:"negativeCache,omitempty"`

	// Nuget Proxy Repository data
	*RepositoryNugetProxy `json:"nugetProxy,omitempty"`

	// Proxy Repository data
	*RepositoryProxy `json:"proxy,omitempty"`

	// Repository storage data
	*RepositoryStorage `json:"storage,omitempty"`

	// Yum Repository data
	*RepositoryYum `json:"yum,omitempty"`
}

Repository ...

type RepositoryApt

type RepositoryApt struct {
	Distribution string `json:"distribution,omitempty"`
	Flat         bool   `json:"flat"`
}

RepositoryApt contains data of hosted repositories of format Apt

type RepositoryAptSigning

type RepositoryAptSigning struct {
	Keypair    string `json:"keypair"`
	Passphrase string `json:"passphrase"`
}

RepositoryAptSigning contains signing data of hosted repositores of format Apt

type RepositoryBower

type RepositoryBower struct {
	RewritePackageUrls bool `json:"rewritePackageUrls"`
}

RepositoryBower contains data of bower repositories

type RepositoryCleanup

type RepositoryCleanup struct {
	PolicyNames []string `json:"policyNames"`
}

RepositoryCleanup ...

type RepositoryDocker

type RepositoryDocker struct {
	ForceBasicAuth bool `json:"forceBasicAuth"`
	HTTPPort       *int `json:"httpPort,omitempty"`
	HTTPSPort      *int `json:"httpsPort,omitempty"`
	V1Enabled      bool `json:"v1Enabled"`
}

RepositoryDocker contains data of a Docker Repositoriy

type RepositoryDockerProxy

type RepositoryDockerProxy struct {
	IndexType string  `json:"indexType"`
	IndexURL  *string `json:"indexUrl,omitempty"`
}

RepositoryDockerProxy contains data of a Docker Proxy Repository

type RepositoryGroup

type RepositoryGroup struct {
	MemberNames []string `json:"memberNames,omitempty"`
}

RepositoryGroup contains repository group configuration data

type RepositoryHTTPClient

type RepositoryHTTPClient struct {
	Authentication *RepositoryHTTPClientAuthentication `json:"authentication,omitempty"`
	AutoBlock      bool                                `json:"autoBlock"`
	Blocked        bool                                `json:"blocked"`
	Connection     *RepositoryHTTPClientConnection     `json:"connection,omitempty"`
}

RepositoryHTTPClient ...

type RepositoryHTTPClientAuthentication

type RepositoryHTTPClientAuthentication struct {
	NTLMDomain string `json:"ntlmDomain,omitempty"`
	NTLMHost   string `json:"ntlmHost,omitempty"`
	Password   string `json:"password,omitempty"`
	Type       string `json:"type,omitempty"`
	Username   string `json:"username,omitempty"`
}

RepositoryHTTPClientAuthentication ...

type RepositoryHTTPClientConnection

type RepositoryHTTPClientConnection struct {
	EnableCircularRedirects *bool  `json:"enableCircularRedirects,omitempty"`
	EnableCookies           *bool  `json:"enableCookies,omitempty"`
	Retries                 *int   `json:"retries,omitempty"`
	Timeout                 *int   `json:"timeout,omitempty"`
	UserAgentSuffix         string `json:"userAgentSuffix,omitempty"`
}

RepositoryHTTPClientConnection ...

type RepositoryMaven

type RepositoryMaven struct {
	VersionPolicy string `json:"versionPolicy"`
	LayoutPolicy  string `json:"layoutPolicy"`
}

RepositoryMaven contains additional data of maven repository

type RepositoryNegativeCache

type RepositoryNegativeCache struct {
	Enabled bool `json:"enabled"`
	TTL     int  `json:"timeToLive"`
}

RepositoryNegativeCache ...

type RepositoryNugetProxy

type RepositoryNugetProxy struct {
	QueryCacheItemMaxAge int `json:"queryCacheItemMaxAge"`
}

RepositoryNugetProxy contains data specific to proxy repositories of format Nuget

type RepositoryProxy

type RepositoryProxy struct {
	ContentMaxAge  int    `json:"contentMaxAge"`
	MetadataMaxAge int    `json:"metadataMaxAge"`
	RemoteURL      string `json:"remoteUrl,omitempty"`
}

RepositoryProxy contains Proxy Repository data

type RepositoryStorage

type RepositoryStorage struct {
	BlobStoreName               string  `json:"blobStoreName,omitempty"`
	StrictContentTypeValidation bool    `json:"strictContentTypeValidation"`
	WritePolicy                 *string `json:"writePolicy,omitempty"`
}

RepositoryStorage contains repository storage

type RepositoryYum

type RepositoryYum struct {
	RepodataDepth int    `json:"repodataDepth"`
	DeployPolicy  string `json:"deployPolicy"`
}

RepositoryYum contains data of hosted repositories of format Yum

type Role

type Role struct {
	ID          string   `json:"id"`
	Name        string   `json:"name"`
	Description string   `json:"description"`
	Privileges  []string `json:"privileges"`
	Roles       []string `json:"roles"`
}

Role ...

type RoutingRule

type RoutingRule struct {
	// Name of the routing rule
	Name string `json:"name"`

	//Description of the routing rule
	Description string `json:"description,omitempty"`

	// The mode describe how to hande with mathing requests
	// Possible values: "BLOCK" or "ALLOW"
	Mode RoutingRuleMode `json:"mode"`

	// Regular expressions used to identify request paths that are allowed or blocked (depending on above mode)
	Matchers []string `json:"matchers"`
}

RoutingRule is like a filter you can apply to groups in terms of security access and general component retrieval, and can reduce the number of repositories within a group accessed in order to retrieve an component.

type RoutingRuleMode

type RoutingRuleMode string
const (
	RoutingRuleModeAllow RoutingRuleMode = "ALLOW"
	RoutingRuleModeBlock RoutingRuleMode = "BLOCK"
)

func (RoutingRuleMode) IsValid

func (m RoutingRuleMode) IsValid() error

IsValid checks the values of the enum RoutingRuleMode

type Script

type Script struct {
	Name    string `json:"name"`
	Content string `json:"content"`
	Type    string `json:"type"`
}

Script describe a groovy script object that can be run on the nexus server

type User

type User struct {
	UserID       string   `json:"userId"`
	FirstName    string   `json:"firstName"`
	LastName     string   `json:"lastName"`
	EmailAddress string   `json:"emailAddress"`
	Password     string   `json:"password"`
	Status       string   `json:"status"`
	Source       string   `json:"source"`
	Roles        []string `json:"roles"`
}

User ..

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL