From bf594787d3fd505633caefc2f43741b15b3f1139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D1=88=D0=B5=20=D0=B8=D0=BC=D1=8F?= Date: Thu, 15 May 2025 17:41:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20?= =?UTF-8?q?=D1=81=20API=20Gitea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 0 gitea_api.py | 22 ++++++++++++++++++++++ http_requests.py | 9 +++++++++ http_socket.py | 32 ++++++++++++++++++++++++++++++++ tcp_client.py | 17 +++++++++++++++++ tcp_server.py | 33 +++++++++++++++++++++++++++++++++ token_requiest.py | 13 +++++++++++++ udp_client.py | 15 +++++++++++++++ udp_server.py | 19 +++++++++++++++++++ 9 files changed, 160 insertions(+) create mode 100644 .env create mode 100644 gitea_api.py create mode 100644 http_requests.py create mode 100644 http_socket.py create mode 100644 tcp_client.py create mode 100644 tcp_server.py create mode 100644 token_requiest.py create mode 100644 udp_client.py create mode 100644 udp_server.py diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/gitea_api.py b/gitea_api.py new file mode 100644 index 0000000..4b9684d --- /dev/null +++ b/gitea_api.py @@ -0,0 +1,22 @@ +import requests +import os +from dotenv import load_dotenv + +load_dotenv() + +TOKEN = os.getenv("GITEA_TOKEN") + + +headers = {"Authorization": f"token {TOKEN}"} + +data = { + "name": "3lab_testrepo", + "description": "Репозиторий созданный через API", + "private": False, + "auto_init": True +} + +response = requests.post("https://git.vyatsu.ru/api/v1/user/repos", json=data, headers=headers) + +print("Status code:", response.status_code) +print("Text:", response.text) \ No newline at end of file diff --git a/http_requests.py b/http_requests.py new file mode 100644 index 0000000..68d752e --- /dev/null +++ b/http_requests.py @@ -0,0 +1,9 @@ +import requests + +# Отправляем GET-запрос +response = requests.get("http://vyatsu.ru") + +# Выводим статус код и первые 500 символов ответа +print(f"Status Code: {response.status_code}") +print(f"Headers: {response.headers}") +print(f"Content (first 500 chars):\n{response.text[:500]}") \ No newline at end of file diff --git a/http_socket.py b/http_socket.py new file mode 100644 index 0000000..7b88cce --- /dev/null +++ b/http_socket.py @@ -0,0 +1,32 @@ +import socket + +# Создаем TCP сокет +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# Подключаемся к веб-серверу (порт 80 - стандартный для HTTP) +client.connect(('vyatsu.ru', 80)) + +# Формируем HTTP-запрос +request = ( + "GET / HTTP/1.1\r\n" # Метод GET, путь /, версия HTTP/1.1 + "Host: vyatsu.ru\r\n" # Заголовок Host + "User-Agent: PythonSocket/1.0\r\n" # Идентификатор клиента + "Connection: close\r\n" # Закрыть соединение после ответа + "\r\n" # Пустая строка - конец заголовков +) + +# Отправляем запрос +client.sendall(request.encode()) + +# Получаем ответ +response = b"" +while True: + part = client.recv(4096) + if not part: + break + response += part + +# Выводим ответ +print(response.decode()) + +# Закрываем соединение +client.close() \ No newline at end of file diff --git a/tcp_client.py b/tcp_client.py new file mode 100644 index 0000000..232b0a1 --- /dev/null +++ b/tcp_client.py @@ -0,0 +1,17 @@ +import socket + +# Создаем TCP сокет +client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# Подключаемся к серверу +client.connect(('127.0.0.1', 10000)) + +# Отправляем сообщение +message = input("Введите сообщение для сервера (или 'exit' для выхода): ") +client.sendall(message.encode()) + +# Получаем ответ +data = client.recv(1024) +print(f"Ответ от сервера: {data.decode()}") + +# Закрываем соединение +client.close() \ No newline at end of file diff --git a/tcp_server.py b/tcp_server.py new file mode 100644 index 0000000..734ace7 --- /dev/null +++ b/tcp_server.py @@ -0,0 +1,33 @@ +import socket + +# Создаем TCP сокет (SOCK_STREAM) +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# Привязываем сокет к адресу и порту +server.bind(("0.0.0.0", 10000)) +# Начинаем слушать входящие соединения (1 - максимальное количество ожидающих соединений) +server.listen(1) +print("TCP сервер запущен на порту 10000") + +while True: + # Принимаем соединение + conn, addr = server.accept() + print(f"Подключение от {addr}") + + # Получаем данные (максимум 1024 байта) + data = conn.recv(1024) + if not data: + break + + # Отправляем данные обратно в верхнем регистре + conn.sendall(data.upper()) + print(f"Отправлено: {data.upper().decode()}") + + # Закрываем соединение + conn.close() + + # Если получена команда EXIT, завершаем работу сервера + if data.upper() == b'EXIT': + break + +server.close() +print("TCP сервер остановлен") \ No newline at end of file diff --git a/token_requiest.py b/token_requiest.py new file mode 100644 index 0000000..1e481ee --- /dev/null +++ b/token_requiest.py @@ -0,0 +1,13 @@ +import os +from dotenv import load_dotenv +import requests + +load_dotenv() # Загружаем переменные из .env + +token = os.getenv("GITEA_TOKEN") +if not token: + raise EnvironmentError("GITEA_TOKEN не установлен!") + +headers = {"Authorization": f"token {token}"} +response = requests.get("https://git.vyatsu.ru/api/v1/user", headers=headers) +print(response.json()) diff --git a/udp_client.py b/udp_client.py new file mode 100644 index 0000000..c917521 --- /dev/null +++ b/udp_client.py @@ -0,0 +1,15 @@ +import socket + +# Создаем UDP сокет +client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + +# Отправляем сообщение +message = input("Введите сообщение для сервера: ") +client.sendto(message.encode(), ('127.0.0.1', 10001)) + +# Получаем ответ +data, _ = client.recvfrom(1024) +print(f"Ответ от сервера: {data.decode()}") + +# Закрываем соединение +client.close() \ No newline at end of file diff --git a/udp_server.py b/udp_server.py new file mode 100644 index 0000000..341eed0 --- /dev/null +++ b/udp_server.py @@ -0,0 +1,19 @@ +import socket + +# Создаем UDP сокет (SOCK_DGRAM) +server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) +# Привязываем сокет к адресу и порту +server.bind(('0.0.0.0', 10001)) +print("UDP сервер запущен на порту 10001") + +while True: + # Получаем данные и адрес отправителя + data, addr = server.recvfrom(1024) + print(f"Сообщение от {addr}: {data.decode()}") + + # Модифицируем данные (добавляем "UDP: " в начало) + modified_data = b"UDP: " + data.upper() + + # Отправляем модифицированные данные обратно + server.sendto(modified_data, addr) + print(f"Отправлено: {modified_data.decode()}") \ No newline at end of file