shorturl

module
v0.0.0-...-de89868 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2023 License: MIT

README

shorturl

Сервис сокращения URL, приложение чистой архитектуры.

Сервис сохраняет URL переданный на его API и возвращает укороченный URL, перейдя по которому получите тот же результат, что и при переходе по-длинному URL.


демо: https://rooder.ru

API

POST

Отправить текстом длинный url например: http://example.com/sdg/dfg/dfgh

POST {{baseurl}}/

или JSON например:

{ "url":"http://example.com/sdg/dfg/dfgh" }

POST {{domain}}/shorten
GET

Получить все свои адреса

GET {{domain}}/user/urls

Начало работы

godoc: http://rooder.ru:6060/pkg/github.com/SETTER2000/shorturl/?m=all

Compile

go build -o cmd/shortener/shortener cmd/shortener/main.go

Run

Запуск сервера без поддержки https.

В этом случаи сервер будет доступен только в локальной сети на порте :8080

./cmd/shortener/shortener

Запрос со второго терминала

curl http://localhost:8080

Запуск сервера с поддержкой https

Здесь для примера используется домен rooder.ru.

Для того чтоб сервис правильно отвечал на запросы по https протоколу, его нужно разместить на хосте с белым IP.

Для начала нужно сгенерировать сертификат.

Генерация сертификата SSL/TLS
  1. Генерим RSA ключи
mkdir certs && openssl genrsa -out certs/dev_rsa.key 4096
  1. Генерим CSR (certificate signing request) (что указывать - не имеет значения):
openssl req -new -key certs/dev_rsa.key -out certs/dev.csr
  1. Генерим self-signed сертификат
openssl x509 -req -days 365 -in certs/dev.csr -signkey certs/dev_rsa.key -out certs/dev.crt
  1. Получаем инфо. сертификата (опционально)
openssl x509 -in certs/dev.crt -text -noout
  1. Компилируем и запускаем
go build -o cmd/shortener/shortener cmd/shortener/main.go && sudo ./cmd/shortener/shortener -s
  1. Запрос по сети
curl https://rooder.ru
Запустить как сервис
sudo ./cmd/shortener/shortener -s >/dev/null &
Make

Для удобства на сервер установить make

sudo apt-get update && sudo apt-get install make
Compile
make short
Run

Запустить сервис shorturl

make run 
HTTPS

Запустить сервис shorturl с протоколом HTTPS

make hs
Документация

Запустить сервис с документацией, доступна здесь: http://rooder.ru:6060/pkg/github.com/SETTER2000/shorturl/?m=all

make godoc

Запустить сервис с документацией в фоновом режиме

make doc

Флаги

Включить поддержку HTTPS протокола

sudo ./cmd/shortener/shortener -s
Check ports

Проверить порты открытые на удалённом сервере в данном примере это сервер mo.ru

nc -zv rooder.ru 1-9999 2>&1 | grep succeeded!
AST проверка проекта
go vet -vettool=$(which cmd/staticlint/staticlint) ./...
Генерация AST в графическом представлении
./cmd/staticlint/ast4 cmd/shortener/main.go | dot -Tsvg -o shorturl.svg

Обновление шаблона

Чтобы иметь возможность получать обновления автотестов и других частей шаблона выполните следующую команды:

git remote add -m main template https://github.com/yandex-praktikum/go-musthave-shortener-tpl.git

Для обновления кода автотестов выполните команду:

git fetch template && git checkout template/main .github

затем добавьте полученые изменения в свой репозиторий.

Запуск автотестов

Для успешного запуска автотестов вам необходимо давать вашим веткам названия вида iter<number>, где <number> - порядковый номер итерации.

Например в ветке с названием iter4 запустятся автотесты для итераций с первой по четвертую.

При мерже ветки с итерацией в основную ветку (main) будут запускаться все автотесты.

Directories

Path Synopsis
cmd
Package config - конфигурация, настройка всего сервиса.
Package config - конфигурация, настройка всего сервиса.
internal
app
Package app - точка входа в проект, запуск сервиса shortener.
Package app - точка входа в проект, запуск сервиса shortener.
controller/http/v1
Package v1 реализует пути маршрутизации.
Package v1 реализует пути маршрутизации.
entity
Package entity определяет основные сущности для бизнес-логики (сервиса), сопоставления базы данных и объектов ответа HTTP, если они подходят.
Package entity определяет основные сущности для бизнес-логики (сервиса), сопоставления базы данных и объектов ответа HTTP, если они подходят.
server
Package server реализует HTTP-сервер.
Package server реализует HTTP-сервер.
usecase
Package usecase - слой usecase, интерфейсы, реализует бизнес-логику приложения, каждая логическая группа в собственном файле.
Package usecase - слой usecase, интерфейсы, реализует бизнес-логику приложения, каждая логическая группа в собственном файле.
usecase/encryp
Package encryp - middleware, работает с шифрованием cookie аутентификации.
Package encryp - middleware, работает с шифрованием cookie аутентификации.
pkg
compress/gzip
Package gzip - middleware, сжатие gzip.
Package gzip - middleware, сжатие gzip.
log/logger
Package logger - логирование проекта на основе zerolog.
Package logger - логирование проекта на основе zerolog.
Package scripts - вспомогательный функционал
Package scripts - вспомогательный функционал

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL