Задать вопрос

Можно ли вернуться к прежнему формата времени Redmine REST API после обновления до новых версий?

Добрый день.

Достаточно долго использовался довольно старый Redmine, версия 3.4

К нему был написан инструмент, обращающийся по API (/projects/project_identifier.json) и получающий дату в формате
"created_on":"2012-09-15T08:54:45Z"

После перехода на Redmine 5.0, API стал возвращать в формате даты со смещением зоны:
"created_on":"2012-09-15T08:54:45+03:00"

Подскажите, можно ли как-то вернуть формат времени API в новой версии Redmine к прежнему варианту?
Именно настройкой самого Redmine, т.к. очень не хочется погружаться в исходники старо-самописного инструмента...
  • Вопрос задан
  • 16 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Проще всего добавить какой-нибудь конвертер между ними на JS или питоне, который будет проксировать все запросы и конвертировать даты во всех API ответах/запросах. И не надо никуда погружаться ни в свой проект ни в редмайн.
Например: https://github.com/chimurai/http-proxy-middleware/...
const proxy = createProxyMiddleware({
    target: 'http://redmine-url-or-ip',
    changeOrigin: true, // for vhosted sites

    selfHandleResponse: true, // res.end() will be called internally by responseInterceptor()

    on: {
        proxyRes: responseInterceptor(async (responseBuffer, proxyRes, req, res) => {
            // detect json responses
            if (proxyRes.headers['content-type'] === 'application/json') {
                let data = JSON.parse(responseBuffer.toString('utf8'));

                // manipulate JSON data here
                if (Object.hasOwnProperty.call(data, 'created_on')) {
                    data['created_on'] = new Date(data['created_on']).toISOString()
                }

                // return manipulated JSON
                return JSON.stringify(data);
            }

            // return other content-types as-is
            return responseBuffer;
        }),
    },
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы