KonishchevDmitry / social-rss

Allows you to receive updates from your social network accounts via RSS
16 stars 4 forks source link

HTTPStatus.UNAUTHORIZED #6

Closed sadok closed 9 years ago

sadok commented 9 years ago

Добрый день. Проверяю работу:

wget -S http://localhost:8888/vk.rss

и вместо

HTTP/1.1 401 Unauthorized

получаю строку в заголовке. Соответственно моя читалка не понимает, что нужен пароль (tt-rss). Причем на старом серврер все работало. Вопрос: почему не возвращается 401, а вместо него вот такой буквенный статус? Видимо чего-то не хватает, хотя ставил все по README.md

sadok commented 9 years ago

Соответственно в request.py

- self.set_status(http.client.UNAUTHORIZED)
+ self.set_status(401)

помогло

KonishchevDmitry commented 9 years ago

Добрый день. Прошу прощения, но я не понял, в чем проблема. Насколько вижу я, HTTP/1.1 401 Unauthorized как раз возвращается:

$ http -v http://localhost:8002/vk.rss
GET /vk.rss HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: localhost:8002
User-Agent: HTTPie/0.8.0

HTTP/1.1 401 Unauthorized
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Date: Thu, 01 Oct 2015 12:48:00 GMT
Server: TornadoServer/4.1
Www-Authenticate: Basic realm="Please enter VK access_token in password box."
$ wget -S http://localhost:8002/vk.rss
--2015-10-01 15:48:03--  http://localhost:8002/vk.rss
Resolving localhost (localhost)... ::1, 127.0.0.1
Connecting to localhost (localhost)|::1|:8002... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 401 Unauthorized
  Content-Type: text/html; charset=UTF-8
  Content-Length: 0
  Www-Authenticate: Basic realm="Please enter VK access_token in password box."
  Date: Thu, 01 Oct 2015 12:48:03 GMT
  Server: TornadoServer/4.1

Username/Password Authentication Failed.
sadok commented 9 years ago

@KonishchevDmitry

# uname -a
FreeBSD 10.2-RELEASE 

Вот при установке на чистый сервер чего-то перестало хватать. А я в python не силен, и чего не хватает - понять не могу. Очевидно, какой-то библиотеки, которая "HTTPStatus.UNAUTHORIZED" преобразует в валидный ответ.

Только вышеприведенный костыль помог.

KonishchevDmitry commented 9 years ago

А вы уверены, что вам помог именно этот костыль? Я просто не вижу ни одной причины, как он мог помочь, т. к. http.client.UNAUTHORIZED - это как раз и есть число 401:

$ grep UNAUTHORIZED /usr/local/Cellar/python3/3.4.3/Frameworks/Python.framework/Versions/3.4/lib/python3.4/http/client.py
UNAUTHORIZED = 401
sadok commented 9 years ago

@KonishchevDmitry

Забавно (напомню, что у меня FreeBSD):

# pwd
/
# find . -type f -name client.py -ls
197471       49 -rw-r--r--    1 root  wheel  48236 Oct  1 13:03 ./usr/local/lib/python3.5/xmlrpc/client.py
165991       49 -rw-r--r--    1 root  wheel  47853 Oct  1 13:03 ./usr/local/lib/python3.5/http/client.py
# grep -i UNAUTHORIZED /usr/local/lib/python3.5/http/client.py
# grep -i UNAUTHORIZED /usr/local/lib/python3.5/xmlrpc/client.py

Вообще никакого упоминания.

KonishchevDmitry commented 9 years ago

Мда. Действительно - в Python 3.5 эту константу убрали. Спасибо, поправил в https://github.com/KonishchevDmitry/social-rss/commit/16a818c90e44b662f46e8f017eb0e23093fa4d67.