Skip to content

Commit

Permalink
using end point if defined to create URI akka#3253
Browse files Browse the repository at this point in the history
  • Loading branch information
sfali committed Aug 25, 2024
1 parent 93c2aab commit 7ac0aa4
Showing 1 changed file with 51 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.GET,
accountName = settings.azureNameKeyCredential.accountName,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value")),
uri = createUri(settings = settings,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value"))),
headers = populateCommonHeaders(HttpEntity.Empty, range = range, leaseId = leaseId)
)
val objectMetadataMat = Promise[ObjectMetadata]()
Expand Down Expand Up @@ -93,10 +93,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.HEAD,
accountName = settings.azureNameKeyCredential.accountName,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value")),
uri = createUri(settings = settings,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value"))),
headers = populateCommonHeaders(HttpEntity.Empty, leaseId = leaseId)
)

Expand Down Expand Up @@ -126,10 +126,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.DELETE,
accountName = settings.azureNameKeyCredential.accountName,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value")),
uri = createUri(settings = settings,
storageType = storageType,
objectPath = objectPath,
queryString = createQueryString(settings, versionId.map(value => s"versionId=$value"))),
headers = populateCommonHeaders(HttpEntity.Empty, leaseId = leaseId)
)

Expand Down Expand Up @@ -161,10 +161,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.PUT,
accountName = settings.azureNameKeyCredential.accountName,
storageType = BlobType,
objectPath = objectPath,
queryString = createQueryString(settings),
uri = createUri(settings = settings,
storageType = BlobType,
objectPath = objectPath,
queryString = createQueryString(settings)),
headers = populateCommonHeaders(httpEntity, blobType = Some(blobType), leaseId = leaseId)
).withEntity(httpEntity)
handlePutRequest(request, settings)
Expand All @@ -183,10 +183,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.PUT,
accountName = settings.azureNameKeyCredential.accountName,
storageType = FileType,
objectPath = objectPath,
queryString = createQueryString(settings),
uri = createUri(settings = settings,
storageType = FileType,
objectPath = objectPath,
queryString = createQueryString(settings)),
headers = Seq(
CustomContentTypeHeader(contentType),
RawHeader(XMsContentLengthHeaderKey, maxSize.toString),
Expand Down Expand Up @@ -216,10 +216,10 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.PUT,
accountName = settings.azureNameKeyCredential.accountName,
storageType = FileType,
objectPath = objectPath,
queryString = createQueryString(settings, Some("comp=range")),
uri = createUri(settings = settings,
storageType = FileType,
objectPath = objectPath,
queryString = createQueryString(settings, Some("comp=range"))),
headers = populateCommonHeaders(httpEntity,
overrideContentLength,
range = Some(range),
Expand All @@ -239,12 +239,13 @@ object AzureStorageStream {
val request =
createRequest(
method = HttpMethods.PUT,
accountName = settings.azureNameKeyCredential.accountName,
storageType = BlobType,
objectPath = objectPath,
queryString = createQueryString(settings, Some("restype=container")),
uri = createUri(settings = settings,
storageType = BlobType,
objectPath = objectPath,
queryString = createQueryString(settings, Some("restype=container"))),
headers = populateCommonHeaders(HttpEntity.Empty)
)

handlePutRequest(request, settings)
}
.mapMaterializedValue(_ => NotUsed)
Expand Down Expand Up @@ -370,19 +371,28 @@ object AzureStorageStream {
(maybeContentLengthHeader ++ maybeContentTypeHeader ++ maybeRangeHeader ++ maybeBlobTypeHeader ++ maybeLeaseIdHeader ++ maybeWriteTypeHeader).toSeq
}

private def createRequest(method: HttpMethod,
accountName: String,
storageType: String,
objectPath: String,
queryString: Option[String],
headers: Seq[HttpHeader]) =
HttpRequest(method = method, uri = createUri(accountName, storageType, objectPath, queryString), headers = headers)

private def createUri(accountName: String, storageType: String, objectPath: String, queryString: Option[String]) = {
Uri.from(scheme = "https",
host = s"$accountName.$storageType.core.windows.net",
path = Uri.Path(objectPath).toString(),
queryString = queryString)
private def createRequest(method: HttpMethod, uri: Uri, headers: Seq[HttpHeader]) =
HttpRequest(method = method, uri = uri, headers = headers)

private def createUri(settings: StorageSettings,
storageType: String,
objectPath: String,
queryString: Option[String]) = {
val accountName = settings.azureNameKeyCredential.accountName
val path = if (objectPath.startsWith("/")) objectPath else s"/$objectPath"
settings.endPointUrl
.map { endPointUrl =>
val qs = queryString.getOrElse("")
Uri(endPointUrl).withPath(Uri.Path(s"/$accountName$path")).withQuery(Uri.Query(qs))
}
.getOrElse(
Uri.from(
scheme = "https",
host = s"$accountName.$storageType.core.windows.net",
path = Uri.Path(path).toString(),
queryString = queryString
)
)
}

private def createQueryString(settings: StorageSettings, apiQueryString: Option[String] = None) = {
Expand Down

0 comments on commit 7ac0aa4

Please sign in to comment.