(no subject)

Jun 18, 2014 22:40

давно не хотел ничего писать. ну тут захотелось оставить таки зарубку на память.
[p4.net api]
Сел пару дней помучать билдсистему и вспомнить шарп. Не могу не поделиться от впечатлений от перфорсовского апи под шарп.

Итак начинает юзер работу с логина. У него 4 параметра: строка о том где в сети сервер, имя пользователя, имя локального workspace, и пароль. В апи за этот нехитрый шаг отвечает 4 (!) класса каждый из которых получает свой кусочек этой информации и 2(!) метода Connect и Login. Connect принимает 'options' Dictionary  строк куда можно засунуть пароль (согласно официальному примеру). Login принимает пароль и какой то другой 'options' Dictionary.
Теперь немного о безопасности. Для улучшения оной современные серверы перфорса доступ дают по тикетам. В тикете есть некий секрет и дата истечения. Тикет хранится "где-то там" куда лицам интересующимся безопасностью лучше не смотреть, но особенность этого состоит в том что оно на каждом компьютере отдельное. Чтобы получить новый по истечению нужно ввести пароль.
Итак возвращаемся к поведению апи:
Connect стал безопасный и поэтому ему на пароль в опциях теперь глубоко плевать. Чтобы он стрельнул эксепшн нужно чтобы чтото было "сильно не так".
Login при прямолинейном применении и живом тикете стреляется (connection timed out). Если же тикет не живой но Login мы пропустили то стрельнет любое действие и скажет "пароль не выставлен".
Путь через тернии выглядит так:
коннект(опции_с_паролем) //без разницы что с паролем что без - зато копипаста с примера
пробуем потрогать объект // для простоты я взял GetUser того юзера кем заходим
если застрелились и код похож на NNNNNNNNNN и месадж что мол пароль не выставлен
то логин(пароль)
иначе пробрасываем наверх с гуманным сообщением в комплекте

...
Это был только логин. До других приседаний руки может дойдут в другой раз =)

programming, continuous integration

Previous post Next post
Up