github.com/cs3org/reva/v2@v2.27.7/internal/grpc/services/storageprovider/transcoder.go (about)

     1  // Copyright 2018-2021 CERN
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  // In applying this license, CERN does not waive the privileges and immunities
    16  // granted to it by virtue of its status as an Intergovernmental Organization
    17  // or submit itself to any jurisdiction.
    18  
    19  package storageprovider
    20  
    21  import (
    22  	provider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
    23  )
    24  
    25  // XS defines an hex-encoded string as checksum.
    26  type XS string
    27  
    28  func (x XS) String() string { return string(x) }
    29  
    30  const (
    31  	// XSInvalid means the checksum type is invalid.
    32  	XSInvalid XS = "invalid"
    33  	// XSUnset means the checksum is optional.
    34  	XSUnset = "unset"
    35  	// XSAdler32 means the checksum is adler32
    36  	XSAdler32 = "adler32"
    37  	// XSMD5 means the checksum is md5
    38  	XSMD5 = "md5"
    39  	// XSSHA1 means the checksum is SHA1
    40  	XSSHA1 = "sha1"
    41  	// XSSHA256 means the checksum is SHA256.
    42  	XSSHA256 = "sha256"
    43  )
    44  
    45  // GRPC2PKGXS converts the grpc checksum type to an internal pkg type.
    46  func GRPC2PKGXS(t provider.ResourceChecksumType) XS {
    47  	switch t {
    48  	case provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_INVALID:
    49  		return XSInvalid
    50  	case provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_UNSET:
    51  		return XSUnset
    52  	case provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_SHA1:
    53  		return XSSHA1
    54  	case provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_ADLER32:
    55  		return XSAdler32
    56  	case provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_MD5:
    57  		return XSMD5
    58  	default:
    59  		return XSInvalid
    60  	}
    61  }
    62  
    63  // PKG2GRPCXS converts an internal checksum type to the grpc checksum type.
    64  func PKG2GRPCXS(xsType string) provider.ResourceChecksumType {
    65  	switch xsType {
    66  	case XSUnset:
    67  		return provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_UNSET
    68  	case XSAdler32:
    69  		return provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_ADLER32
    70  	case XSMD5:
    71  		return provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_MD5
    72  	case XSSHA1:
    73  		return provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_SHA1
    74  	default:
    75  		return provider.ResourceChecksumType_RESOURCE_CHECKSUM_TYPE_INVALID
    76  	}
    77  }