@startuml BasicTileService.getTile

!$tileRequest = "[tileRequest]"
!$tile_http_resp = "[Tile HTTP response]"
!$copyright_http_resp = "[Copyright HTTP response]"
!$merged_http_resp = "[Merged HTTP response]"
!$compressed_http_resp = "[Compressed HTTP response]"

Client -> BasicTileService: getTile($tileRequest)

par
    BasicTileService -> GoogleSatelliteImageService: getTile(tileCoordinates, ifNoneMatch, format)
    GoogleSatelliteImageService --> BasicTileService: $tile_http_resp
else
    BasicTileService -> GoogleSatelliteImageService: getCopyright(viewPort, ifNoneMatch, language)
    GoogleSatelliteImageService --> BasicTileService: $copyright_http_resp
end

BasicTileService -> BasicTileService: mergeResponses($tile_http_resp, $copyright_http_resp)

alt $tile_http_resp.status = '304 not modified'
    BasicTileService -> BasicTileService: mergeHeaders($tile_http_resp, $copyright_http_resp) => $merged_http_resp
else
    BasicTileService -> BasicTileService: mergeHeadersWithCopyright($tile_http_resp, $copyright_http_resp) => $merged_http_resp
    note right: if copyright is found, then is added to $merged_http_resp
end

BasicTileService -> CompressionHandler: compress(format, qualityLevel, $merged_http_resp)
CompressionHandler --> BasicTileService: compressed resource
BasicTileService --> Client: $compressed_http_resp

@enduml