
Kirill
15.01.2018
16:32:55
;)

Demuz
15.01.2018
16:32:58
Если ваш фреймворк не делает проще чем ирис, это не повод сразу жаловаться на шутку.
Ааа, тогда извините.

Google

Kirill
15.01.2018
16:33:39
не, шутка с "воруйте и всё будет хорошо" всегда от меня встретит реакцию в виде шутки с /voteban

Demuz
15.01.2018
16:34:34

Kirill
15.01.2018
16:35:00
чтобы было без
if a == b {
ctx.JSON(orders)
return
}
ctx.Forbidden()
хотя это слишком простой пример

Arch
15.01.2018
16:35:42
Народ, приветствую! Кто-то работал с gorilla/websocket? Если закрыть соединение из одной горутины, то что произойдет, если его попытаться закрыть из другой?

Demuz
15.01.2018
16:36:41

Kirill
15.01.2018
16:37:02

Arch
15.01.2018
16:37:15

Demuz
15.01.2018
16:37:33
Вроде ничего не происходит. Бинарник не взрывается как минимум.

Arch
15.01.2018
16:37:44
Как проверить что оно закрыто?

Kirill
15.01.2018
16:38:00
по идее, может вернуть syscall.EINVAL или *net.OpError

Arch
15.01.2018
16:38:03
Или можно закрывать хоть десять раз?

Google

Demuz
15.01.2018
16:38:43
Как проверить что оно закрыто?
Вывести список соединений или это соединение попробовать получить. Обычно сокеты ничего не возвращают в ответ если нет соединения.

Kirill
15.01.2018
16:39:07

Demuz
15.01.2018
16:39:23

Arch
15.01.2018
16:40:23
Ну можно как вариант еще isWritable проверить

Demuz
15.01.2018
16:40:46
@kirilldanshin короче попробовал ввести несколько эндпоинтных комманд в ирисе. сработала только последняя. типа ctx.JSON() и потом ctx.Writef(). )))

Arch
15.01.2018
16:41:19
А ну вроде не злиться, если два раза закрыть одно соединение, ну и ладно

Demuz
15.01.2018
16:42:12

Arch
15.01.2018
16:44:18
Допустим при мульти коннекте пользователя, его старое соединение должно быть закрыто, мы принудительно закрываем каналы на чтение и запись и вуаля, происходит закрытие ws соединения
Я использую gorilla/websocket там вроде нет метода IiConnected

Demuz
15.01.2018
16:54:35
Эт я так, делюсь просто. ?

anton
15.01.2018
16:58:17
винду активируй

Demuz
15.01.2018
16:58:37
Не горит. Мне важней проект. Надпись не мешает.
В принципе конструктор под что угодно можно юзать. Под такси например, или магаз. Бэк на го конечно.
Заказы в виде пуш ап приходят всем владельцам данного объекта.

Alexander
15.01.2018
18:06:59
активация win смущает)
глобально ordrs передавать

Google

Alexander
15.01.2018
18:08:16
не логично)
хотя, если это типо dictionary то норм
а можно в iris при сериализации убирать поля по опр логике?

Demuz
15.01.2018
18:09:27
Я его не передаю глобально. Это пример синтаксиса.

Alexander
15.01.2018
18:09:45

Demuz
15.01.2018
18:09:51

Alexander
15.01.2018
18:09:58
пример

Demuz
15.01.2018
18:10:03
Можно и указать справа обычные поля жсон, разницы нет.
пример
Я имею играю. Сами поищите.
?

Demuz
15.01.2018
18:11:24
Он же про простоту возврата жсон спрашивал, я ему пример показывал.

Alexander
15.01.2018
18:11:52
всм вот про что я, у меня есть модель пользователя, и в одном роуте я хочу получать себя со всеми полями, а в другом список друзей но только с определенными
но модель user одна
можно в iris фильтровать поля модели при сериализации
?
без перекопировывагия в мапку
всм, это как бы и способ, но неудобно) появятся новые поля и код надо менять везде

Demuz
15.01.2018
18:15:20
Насчет фильтра не интересовался. Но там выборка из базы делается череж джинжу орм к примеру, через Scan вытаскиваются только определенные поля. и этот же инстанс возвращают, таким образом и возвращают только определенные поля. Другую логику даже не интересовался. Честно.

Google

Demuz
15.01.2018
18:16:28
Было бы здово вобще не возвращать поля, если они нул к примеру. конкретно мне бы такое подошло.

Alexander
15.01.2018
18:17:14
я просто finalizer описал у себя в движке, можно в тегах указать группу и при финализации указывать необходимую
сейчас пример покажу

Demuz
15.01.2018
18:17:54

Admin
ERROR: S client not available


Alexander
15.01.2018
18:18:41
type PhoneNumber struct{
E164 string `json:"e164"`
}
type User struct {
ID uint64 `json:"id"`
Phone *PhoneNumber `json:"phone,omitempty" group:"private" export:"E164"`
CreatedAt time.Time `json:"created_at" group:"private"`
UpdatedAt time.Time `json:"update_at" group:"private" exclude:"equal:CreatedAt"`
}
тут вот есть group
func main() {
// Create new JUST application
a := just.New()
// replace def serializers
finalizer.ReplaceSerializers(a)
a.GET("/{group:enum(public,private)}", func(c *just.Context) just.IResponse {
now := time.Now()
return c.Serializer().
Response(200, finalizer.Input(
&User{
ID: 1,
Phone: &PhoneNumber{
E164: "+79000000000",
},
CreatedAt: now,
UpdatedAt: now,
},
c.ParamDef("group", "public"),
))
})
a.Run(":80")
}
Result GET request http://localhost/public
{
"id": 1
}
Result GET request http://localhost/private
{
"id": 1,
"phone": "+79000000000",
"created_at": "2017-12-11T22:23:36.709146+05:00"
}
вот как то так
сделал пока топорно, думаю сделать одним тегом с параметрами
как считаете норм?
эта штука умеет эеспортировать поля модели по переданной группе, а так же выделять из объекта модели необходимый ключ, в примере из объекта PhoneNumber экспортируется поле E164 при сериализации User


Demuz
15.01.2018
18:22:43

Alexander
15.01.2018
18:22:46
так же в примере есть условие исключения :
exclude:"equal:CreatedAt"`
то есть поле UpdatedAt не будет выведено в ответ пока оно равно CreatedAt

Demuz
15.01.2018
18:23:08

Alexander
15.01.2018
18:23:49
но возможно эта вся тема прилично нагрузит процесс сериализации в JSON
но делал искобчительно ради удобства
чтобы не плодить модели и ручками в map[string]interface{} не копировать каждый раз

Google

Alexander
15.01.2018
18:24:34
https://github.com/itrabbit/just/tree/master/components/finalizer
можно юзать finalizer.Finalize
func Finalize(encTagName string, v interface{}, groups ...string) interface{}
encTagName это тег из которого будет браться имя поля, к примеру json
v - объекты / массив объектов
groups - список групп
если есть предложения по улучшению всегда рад обсудить

Demuz
15.01.2018
18:26:40

Alexander
15.01.2018
18:27:16
к примеру думаю сделать не разными тегами, в одним finalize:""
и внутри описывать логику параметрами

Demuz
15.01.2018
18:27:24

Alexander
15.01.2018
18:27:47
я буду только рад

Demuz
15.01.2018
18:28:13
Сервер фиг пойми где стоит, зафорвардил порты. Приложение сконектилось и они пишут, якобы уже можно разрабатывать.