Skip to content

Commit

Permalink
Merge pull request #80 from nabbar/pkg-artifact
Browse files Browse the repository at this point in the history
Pkg artifact : jfrog artifactory
  • Loading branch information
Nicolas JUHEL authored Feb 12, 2021
2 parents f8e7c3b + 98008bc commit 49a29b5
Show file tree
Hide file tree
Showing 6 changed files with 502 additions and 29 deletions.
Binary file removed artifact/jfrog.tar.gz
Binary file not shown.
56 changes: 56 additions & 0 deletions artifact/jfrog/artifactory.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* MIT License
*
* Copyright (c) 2020 Nicolas JUHEL
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/

package jfrog

import (
"context"
"net/http"
"net/url"

"github.com/nabbar/golib/artifact"
"github.com/nabbar/golib/artifact/client"
"github.com/nabbar/golib/errors"
)

func NewArtifactory(ctx context.Context, Do func(req *http.Request) (*http.Response, error), uri, containName, regexName string, reposPath ...string) (artifact.Client, errors.Error) {
if u, e := url.Parse(uri); e != nil {
return nil, ErrorURLParse.ErrorParent(e)
} else {
a := &artifactoryModel{
ClientHelper: client.ClientHelper{},
Do: Do,
ctx: ctx,
endpoint: u,
path: reposPath,
name: containName,
regex: regexName,
}

a.ClientHelper.F = a.ListReleases

return a, nil
}
}
82 changes: 82 additions & 0 deletions artifact/jfrog/error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* MIT License
*
* Copyright (c) 2020 Nicolas JUHEL
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*
*/

package jfrog

import (
"github.com/nabbar/golib/artifact"
"github.com/nabbar/golib/errors"
)

const (
ErrorParamsEmpty errors.CodeError = iota + artifact.MIN_ARTIFACT_JFORG
ErrorURLParse
ErrorRequestInit
ErrorRequestDo
ErrorRequestResponse
ErrorRequestResponseBodyEmpty
ErrorRequestResponseBodyDecode
ErrorArtifactoryNotFound
ErrorArtifactoryDownload
)

var isCodeError = false

func IsCodeError() bool {
return isCodeError
}

func init() {
isCodeError = errors.ExistInMapMessage(ErrorParamsEmpty)
errors.RegisterIdFctMessage(ErrorParamsEmpty, getMessage)
}

func getMessage(code errors.CodeError) (message string) {
switch code {
case errors.UNK_ERROR:
return ""
case ErrorParamsEmpty:
return "given parameters is empty"
case ErrorURLParse:
return "endpoint of JFrog Artifactory seems to be not valid"
case ErrorRequestInit:
return "cannot create new request to JFrog Artifactory"
case ErrorRequestDo:
return "cannot send request to JFrog Artifactory"
case ErrorRequestResponse:
return "error on sending request to JFrog Artifactory"
case ErrorRequestResponseBodyEmpty:
return "empty response while requesting JFrog Artifactory"
case ErrorRequestResponseBodyDecode:
return "cannot decode response from JFrog Artifactory"
case ErrorArtifactoryNotFound:
return "the requested constrains to the release are not matching"
case ErrorArtifactoryDownload:
return "error on downloading artifact"
}

return ""
}
Loading

0 comments on commit 49a29b5

Please sign in to comment.