Arm1.ru

A middleware for Vapor 4 routing to trim a slash in url path

It’s a common thing for a website or a backend to allow URLs like mySite.com/webpage and mySite.Com/webpage/ for the same page. These pages are different URLs for a search engine. If you want to avoid duplicates, you can add a simple middleware to trim the ending slash and redirect a user.

Here’s an example code for such a middleware class for Vapor 4:

final class TrimSlashInPathMiddleware: Middleware {
    func respond(to request: Request, chainingTo next: Responder) -> EventLoopFuture<Response> {
        if request.url.path.count > 1, request.url.path.hasSuffix("/") {
            let newPath = String(request.url.path.trimmingSuffix(while: { $0 == "/" }))
            let response = request.redirect(to: newPath, redirectType: .permanent)
            return request.eventLoop.makeSucceededFuture(response)
        }
        return next.respond(to: request)
    }
}

Just add it to configure.swift file:

import Vapor

public func configure(_ app: Application) throws {
    app.middleware.use(TrimSlashInPathMiddleware())

    app.http.server.configuration.port = 8081

    try routes(app)
}

Works with Vapor 4.92.5.

comment comments

Модульбанк информер 1.3

Модульбанк информер 1.3

Выпустил небольшое обновление для Модульбанк инфомера. Обновил иконку в статусбаре (тепер узнаваемая), и добавил чекбокс для скрытия счетов с нулевым балансом. Ну и немного рефакторинга.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

comment comments

How to get selected text inside of TextEditor in SwiftUI on macOS

How to get selected text inside of TextEditor in SwiftUI on macOS

TextEditor in SwiftUI still doesn’t have any API to get user selection. But since it’s using NSTextView internally we can subscribe to its notifications.

Here’s an example of getting a substring from user selection:

Читать далее...

comment comments
local_offer swiftui macos

Swift CouchDB client 1.3.2

Swift CouchDB client

Recently, there have been a couple of new releases for my Swift CouchDB library. Here are the recent changes:

  • dateDecodingStrategy and dateEncodingStrategy can now be passed as parameters for get, update and insert methods.
  • Added a check to handle expired authentication cookies.
  • Comparing the set-cookie header in the response as lowercased.
  • Introduced new methods to utilize the _find API, allowing you to find documents using a declarative JSON querying syntax
  • Fixed an issue where the update method didn’t use dateEncodingStrategy parameter.

CouchDB Client on GitHub | Documentation with examples and tutorials.

comment comments

AppMetric 1.8

AppMetric 1.8

Обновил AppMetric для macOS - клиент для сервиса AppMetrica от Яндекса. Предыдущая версия, увы, уже перестала работать, т.к. они изменили формат ответа.

Судя по дошедшей до меня информации, я использовал что-то незадокументированное из их ответа. И, судя по текущим ответам их API - это было количество крэшей. Увы, пришлось выпилить и заменить на количество устройств.

Решил, что раз уж руки дошли, надо осовременить. Переделал всё на SwiftUI, но пришлось сам попап обернуть в старый добрый NSPopover, т.к. MenuBarExtra из SwiftUI уж больно ограничен. Может быть, дойдут руки написать пост об этом. Заодно перевёл всё на Swift Concurrency и графику из SF Symbols. Правда, теперь всё это работает на macOS 13+, но, думаю, те, кому оно полезно, обновляют макось тоже. Ну и, естственно, наконец-то нативная работа на Apple Silicon.

Обновление сегодня прошло ревью и доступно для скачивания. Планирую в будущем добавить всё-таки графики по дням/неделям.

Загрузить

comment comments

Модульбанк информер 1.2

Модульбанк информер 1.2

Обнаружил досадный баг в Модульбанк Информере - если был счёт в турецких лирах, то JSON не парсился и данных не было совсем. Исправил в обновлении.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

comment comments

Модульбанк информер

Модульбанк информер

Недавно увидел, что у Модульбанка, которым я пользуюсь, есть публичный API. Поскольку у них для macOS нет приложения, а приложение для iOS не работает на Apple Silicon (их ограничение в целях безопасности), я сделал небольшой информер, который показывает в статус баре список счетов и баланс.

Приложение macOS 13+, т.к. хотелось выжать из SwiftUI всё самое актуальное, заодно попрактиковаться.

Исходный код на GitHub: https://github.com/makoni/ModulbankInformer
Скачать можно тут: https://github.com/makoni/ModulbankInformer/releases

comment comments