All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.findify.s3mock.provider.Provider.scala Maven / Gradle / Ivy

The newest version!
package io.findify.s3mock.provider

import com.amazonaws.services.s3.model.ObjectMetadata
import io.findify.s3mock.provider.metadata.MetadataStore
import io.findify.s3mock.request.{CompleteMultipartUpload, CreateBucketConfiguration}
import io.findify.s3mock.response._


case class GetObjectData(bytes: Array[Byte], metadata: Option[ObjectMetadata])

/**
  * Interface for provider implementations.
  */
trait Provider {
  def metadataStore: MetadataStore
  def listBuckets:ListAllMyBuckets
  def listBucket(bucket:String, prefix:Option[String], delimiter: Option[String], maxkeys: Option[Int]):ListBucket
  def createBucket(name:String, bucketConfig:CreateBucketConfiguration):CreateBucket
  def putObject(bucket:String, key:String, data:Array[Byte], metadata: ObjectMetadata):Unit
  def getObject(bucket:String, key:String): GetObjectData
  def putObjectMultipartStart(bucket:String, key:String, metadata: ObjectMetadata):InitiateMultipartUploadResult
  def putObjectMultipartPart(bucket:String, key:String, partNumber:Int, uploadId:String, data:Array[Byte]):Unit
  def putObjectMultipartComplete(bucket:String, key:String, uploadId:String, request:CompleteMultipartUpload):CompleteMultipartUploadResult
  def deleteObject(bucket:String, key:String):Unit
  def deleteBucket(bucket:String):Unit
  def copyObject(sourceBucket: String, sourceKey: String, destBucket: String, destKey: String, newMeta: Option[ObjectMetadata] = None): CopyObjectResult
  def copyObjectMultipart(sourceBucket: String, sourceKey: String, destBucket: String, destKey: String,  partNumber:Int, uploadId:String, fromByte: Int, toByte:Int,  meta: Option[ObjectMetadata] = None): CopyObjectResult

  def normalizeDelimiter(delimiter:Option[String]):Option[String] = delimiter.flatMap {s => if(s.isEmpty) None else Some(s)}
}






© 2015 - 2024 Weber Informatics LLC | Privacy Policy