
sherzod
08.12.2017
09:04:12
это ж к контенту относится, вроде ничего не мешает вернуть multipart

Nick
08.12.2017
09:04:22
Ну вот, мне никто не ответил, опять в исходники опенждк идти(

Aleksey
08.12.2017
09:05:37

Henadz
08.12.2017
09:05:39

Google

Henadz
08.12.2017
09:05:49
ты реквест шлёшь
а тебе мультипартом файл сливается

Denis
08.12.2017
09:07:07
Множественный респонз )))

Aleksey
08.12.2017
09:07:18

sherzod
08.12.2017
09:08:06

Vadim
08.12.2017
09:08:20
Chunked это

Aleksey
08.12.2017
09:08:23
Так?

Aleksei
08.12.2017
09:09:25
скорее всего да

Henadz
08.12.2017
09:09:37

sherzod
08.12.2017
09:09:50
ну да это тогда _не_ про multipart

Google

Henadz
08.12.2017
09:09:57
а
сорри тогда, спутал терминологию

Denis
08.12.2017
09:10:52
чтобы тот читал файл по мере отправления

Aleksey
08.12.2017
09:11:10

Denis
08.12.2017
09:11:11
кусками

Henadz
08.12.2017
09:11:35
в этом и был затык, я думал это называется multipart type

sherzod
08.12.2017
09:12:27
multipart это когда разные типы контента в одном "сообщении"

Henadz
08.12.2017
09:12:31
есть анмаршаллер для сорсов?

Aleksey
08.12.2017
09:12:33

Denis
08.12.2017
09:15:07

Henadz
08.12.2017
09:15:36
да
ну тогда это вообще шикарно )
ушёл пробовать, спасибо

Denis
08.12.2017
09:16:10
https://doc.akka.io/docs/akka-http/current/scala/http/routing-dsl/source-streaming-support.html
Походу обманул немного
А нет
Source[ByteString, _]
чет не разжигается никак, слишком толсто?

Nikolay
08.12.2017
09:25:39
где толсто?

Google

Denis
08.12.2017
09:25:50
в чатике жвм

Kirill
08.12.2017
09:27:32
не знаю, они слишком агрессивно себя ведут, там либо хамить в ответ (некрасиво), либо я не знаю как, но похоже будет трудно

Nikolay
08.12.2017
09:30:11
печальное место там

Alexandr
08.12.2017
09:32:26
люди большую часть своего рабочего времени геттеры-сеттеры пишут, чего вы от них хотите, надо к ним с сожалением и пониманием относиться

Alex
08.12.2017
09:40:23

Denis
08.12.2017
09:46:40
Уф, умылся дермецом ))

Sergey
08.12.2017
10:06:51
скаланы, как поставить локально sbt-1.1.0-RC1 через brew ?

Nikolay
08.12.2017
10:07:28
А почему не через build.properties?

Denis
08.12.2017
10:07:30
Ты можешь просто в build.properties указать нужную версию

Aleksey
08.12.2017
10:07:37

Denis
08.12.2017
10:07:52
Кто нибудь уже сказал про build.properties ?

Sergey
08.12.2017
10:07:57
=D

Sergey
08.12.2017
10:08:21
ставил, vscode с плагином пробую, который требует 1.1.0-RC1 — что-то не работает, локально что ли sbt запускает

Henadz
08.12.2017
10:09:41
возвращаясь к вопросу о стриминге файла в ответ на хттп реквест
код на akka-http я вроде написал, вот только как теперь проверить это реквестом?
банально вот эта штука
complete(HttpEntity.Chunked(ContentTypes.`text/plain(UTF-8)`, Source.repeat("hello").limit(10).map(ChunkStreamPart.apply)))
ни через браузер ни через curl нормально не отрабатывает

Timothy
08.12.2017
10:17:11

Denis
08.12.2017
10:17:30

Sergey
08.12.2017
10:17:39

Google

Henadz
08.12.2017
10:17:54
а что происходит?
вот например в консоли ответ
➜ ~ curl -G http://localhost:8080/hello
curl: (56) Recv failure: Connection reset by peer
из браузера тупо This site can’t be reached

Daniel
08.12.2017
10:18:25
так ты даже не подключился, о роутах речи уже нет

Denis
08.12.2017
10:18:32
ты уверен что коннект то есть?
сервер запустил?
Http().bindAndHandle

sherzod
08.12.2017
10:24:07
подключился, recv же
curl -vvv все остальное
надо ему три раз подмигнуть

Henadz
08.12.2017
10:26:23

Admin
ERROR: S client not available

Henadz
08.12.2017
10:26:34
Http().bindAndHandle
это всё есть, в логах
Server online at http://localhost:8080/
Press RETURN to stop...

sherzod
08.12.2017
10:26:46
да подключился ты. сделай verbose

Denis
08.12.2017
10:27:07
Прекрасные моменты
По крайней мере, теперь я нашёл ответ на это:
Пушто ФПшники в мире энтерпрайза. И защищают не скалу, а ФП.

sherzod
08.12.2017
10:27:08
возможно подключился не к серверу, но подключился)

Henadz
08.12.2017
10:27:13
* Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 8080 failed: Connection refused
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /hello HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: akka-http/10.0.11
< Date: Fri, 08 Dec 2017 10:26:51 GMT
< Transfer-Encoding: chunked
< Content-Type: text/plain; charset=UTF-8
<
* Recv failure: Connection reset by peer
* stopped the pause stream!
* Closing connection 0

Denis
08.12.2017
10:27:55
Странно

Henadz
08.12.2017
10:28:05
+

sherzod
08.12.2017
10:28:24
покажи код на сервере

Google

Henadz
08.12.2017
10:29:21
всё максимум просто

sherzod
08.12.2017
10:29:38
весь код пож-ста

Henadz
08.12.2017
10:29:42
val route =
path("hello") {
get {
complete(HttpEntity.Chunked(ContentTypes.`text/plain(UTF-8)`, Source.repeat("hello").limit(10).map(ChunkStreamPart.apply)))
}
}
val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)
println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine()
bindingFuture
.flatMap(_.unbind())
.onComplete(_ => system.terminate())
это весь код в мейне
ну и
implicit val system = ActorSystem("Data-export")
implicit val mat = ActorMaterializer()
в начале

Denis
08.12.2017
10:30:59
А если просто complete(Source.repeat("hello").limit(10).map(ByteString(_))) или типа того?

Henadz
08.12.2017
10:31:46
the same

Ilya
08.12.2017
10:32:25
private def handling[Ex <: Throwable, T](exType: Class[Ex])(block: => T): Either[Ex, T] =
catching(exType).either(block).asInstanceOf[Either[Ex, T]]
Подскажите плиз при такой обработке ошибки насколько костыльно использовать asInstanceOf?
Как пример использования: handling(classOf[DateTimeParseException])(opt map ZonedDateTime.parse)

Henadz
08.12.2017
10:34:23
* Trying ::1...
* TCP_NODELAY set
* Connection failed
* connect to ::1 port 8080 failed: Connection refused
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /hello HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: akka-http/10.0.11
< Date: Fri, 08 Dec 2017 10:34:13 GMT
< Transfer-Encoding: chunked
< Content-Type: text/plain; charset=UTF-8
<
* Recv failure: Connection reset by peer
* stopped the pause stream!
* Closing connection 0
вот, всё тоже самое

Artem
08.12.2017
10:59:47
как нынче модно тестировать софт? например написал я одну фигню. И написал к ней генератор траффика. Где подешевле все это запустить можно? В амазоне дороха

sherzod
08.12.2017
11:01:09
@Insferatu попробуй Source.repeat("hello\n")
либо trottle добавить как здесь
https://github.com/calvinlfer/akka-http-streaming-response-examples/blob/master/src/main/scala/com/experiments/calvin/chunked/http/ChunkedStreamingRoutes.scala
.throttle(elements = 1000, per = 1 second, maximumBurst = 1, mode = ThrottleMode.Shaping)

Nikolay
08.12.2017
11:03:10

Henadz
08.12.2017
11:03:18
ща чекну throttle

sherzod
08.12.2017
11:03:54
val s = Source.repeat("hello\n").limit(10).map(ChunkStreamPart(_))
val route =
path("hello") {
get {
complete(HttpEntity.Chunked(ContentTypes.`text/plain(UTF-8)`, s))
}
}
вот это работает

Artem
08.12.2017
11:04:41

Henadz
08.12.2017
11:05:11