
Sergey
21.01.2018
18:52:11
Ну у указателя

Aleksandr
21.01.2018
18:52:13
вот же

Sergey
21.01.2018
18:53:23
Ща сек

Google

Mykyta
21.01.2018
18:53:27
а не FileInfo
сорри, наизусть стандарт либу плохо помню

Sergey
21.01.2018
18:54:22

Mykyta
21.01.2018
18:55:03

Sergey
21.01.2018
18:55:04
то есть
по идеи
*File реализует io.Writer / Reader

Mykyta
21.01.2018
18:55:29
Ага
Сорян что запутал с FileInfo

Sergey
21.01.2018
18:56:15
да нормас

Google

Demuz
22.01.2018
06:36:04
Доброго времени суток всем! Ну что, начем? )))
Посоветуйте пожалуйста либ, где максимально упрощен HTTP POST JSON запрос.

Alexey
22.01.2018
06:36:32

Demuz
22.01.2018
06:37:07
net/http?)
Мне более высокоуровнего нужно. Подобие requests в питоне есть. Просто написал в строку и отправил.

Alexey
22.01.2018
06:37:08
Можно маленький враппер написать, чтоб парсить ответ, и ништяк

Demuz
22.01.2018
06:38:01
Здесь сам язык не позволит запрос так же просто отправить как в питоне ((((

Alexey
22.01.2018
06:39:58
Ну можно написать функцию, на вход урл, и два интерфейса, в один структура для отправки, в другой - для ответа. И внутри вся отсылка. Ради такого либу искать - это совсем оверкилл, это не из пушки по воробьям, это атомной бомбой по муравью
10 строчек

Demuz
22.01.2018
06:40:50
10 строчек
Ща попробую. Думал может бест практис есть какой-нибудь.

Alexey
22.01.2018
06:41:51

Demuz
22.01.2018
06:42:22

Alexey
22.01.2018
06:42:50

Demuz
22.01.2018
06:43:02

Alexey
22.01.2018
06:43:09
Из коробки боль и унижение
А в го из коробки достаточно, чтоб не искать либу

Demuz
22.01.2018
06:44:33
Ща попробуем.

Alexey
22.01.2018
06:44:47
Ну типа того. Только http client надо переиспользовать и ошибки проверять

Google

Demuz
22.01.2018
06:45:23
Ну в принципе ничего сложного.

Александр
22.01.2018
06:52:32
в дефолтной либе еще таймауты настраивать надо
var netTransport = &http.Transport{
Dial: (&net.Dialer{
Timeout: 5 * time.Second,
}).Dial,
TLSHandshakeTimeout: 5 * time.Second,
}
var netClient = &http.Client{
Timeout: time.Second * 10,
Transport: netTransport,
}
например так
@Demuzx

Demuz
22.01.2018
06:55:11
Окей. Спасибо.

Александр
22.01.2018
06:56:06
Окей. Спасибо.
их надо именно настраивать, под задачу ? Не вздумайте копипастить тупо

Demuz
22.01.2018
06:56:16
Я уже скопипастил.
Из коробки боль и унижение
Согласен. Самому под себя легче высокоуровневое что-нибудь написать. Класная вещь. Понравилось в net http копаться.
И теперь, чтобы корректный JSON отправить на эндпоинт, сейчас начнется маршалл, анмаршалл, туда-сюда, да?

Alexey
22.01.2018
07:31:38

Alexey
22.01.2018
07:32:04
А на вход даёшь просто указатели для нужной структуры

Demuz
22.01.2018
07:35:00
Еще говорят же часто многие не понимают интерфейсы. Смотрите, имеет ли смысл делать
type Notificator interface {
Send() error
}
, например если есть методы(Send() error) отправки уведомлений SMS(http.req), WEB(WebSocket), Email(пока не начал), Android(WS), IOS(WS). Разумеется, каждое из уведомлений отправляется своим методом Send(). Имеет ли вобще смысл здесь создавать и реализовывать именно интерфейс?

Александр
22.01.2018
07:36:24
а они где то в одном месте передаются?
интерфейсы то делаются что бы конкретный тип не писать

Demuz
22.01.2018
07:39:16
Send() реализуют - SMS(http.req), WEB(WebSocket), Email(пока не начал), Android(WS), IOS(WS)
И он получается отправляет для каждого типа своим методом.

Александр
22.01.2018
07:40:26
если бы где то эти классы передавались, тогда да

Google

Александр
22.01.2018
07:40:31
а так то какой смысл?
для струирования кода интерфейсы в коде не применимы
ибо утиная типизация

Admin
ERROR: S client not available

Александр
22.01.2018
07:41:19
ну это чисто моей имхо, подождем более авторитетных товарищей

Demuz
22.01.2018
07:42:16
если бы где то эти классы передавались, тогда да
Передаются. Берется клиента WebSocket, клиента Номер телефона, Клиента имейл, клиента телефон на Android. Затем вся эта пачка просто передается сюда и всё. Так не делают? *Клиент - имею ввиду конечный пользователь.

Александр
22.01.2018
07:43:20
ну тогда можно и запилить

Demuz
22.01.2018
07:43:37
Просто по другому мне придется всё постоянно руками писать. А после того как я начал так делать, заметил что масштабируемость чтоли безболезненная, или незнаю как выразиться, типа того.
Я заметил что вот как раз таки вот эта точка отправки сообщений, она вообще нихрена не изменяется )))) Например прибавляется метод отправки через ШмебСокет ))), а в методе ничего не менается )

Michael
22.01.2018
07:46:02
ну, вот есть транспорты, они могут отправлять
реализуешь Send
а в месте отправки его дёргаешь так как реалтзация тебе не важно
те главное отправить

Demuz
22.01.2018
07:47:00
ну тогда можно и запилить
Я еще не пилил, но предполагаю такую возможность и поэтому тоже хочу у спецов спросить, имеет ли смысл, поскольку допускаю что я сам не до конца могу применять интерфейсы именно там, где это необходимо.

Michael
22.01.2018
07:47:54
?

Demuz
22.01.2018
07:48:11
Имею ввиду, что именно вы подразумевали в сообщении?

Michael
22.01.2018
07:49:02
обобщение - смс, веб, сокет

Demuz
22.01.2018
07:49:11
Типа, реализация отправки чего-либо?

Michael
22.01.2018
07:49:18
угу

Google

Demuz
22.01.2018
07:49:19
А, все, понятно. Ну вон я там сфоткал.

Michael
22.01.2018
07:49:52
и выпей чашечку кохфа

Demuz
22.01.2018
07:50:02
Да, вот ща заварю.

Alexey
22.01.2018
07:53:15
Съешь ещё этих вкусных французских булочек

Demuz
22.01.2018
07:55:55
Да мне просто ппц нравится идея того, что если в проект понадобилось добавить новый метод отправки сообщений, например пусть будет телеграм бот, теперь ты описываешь новую структуру, прописываете ей метод сенд, который реализует Notificator interface{} и все. Это жесть! И все! И получается, больше ни в каких точках нет изменений.
Это я конкретно про эту точку.

Marlik
22.01.2018
08:05:25
А вот кстати вопрос, есть у меня структура, но все данные на первом этапе не нужны, возможно на другом понадобятся, это нормально не юзать сразу всё из структуры?

Александр
22.01.2018
08:06:37
ну норм

Alexander
22.01.2018
08:59:51

Marlik
22.01.2018
09:02:02

Alexander
22.01.2018
09:02:25
тебе решать, но я так не делаю)