Как аутентифицировать GitHub с HTTParty, чтобы очистить страницу? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь почистить эту страницу:

https://github.com/search?p=1&q=https%3A%2F%2Fsonarcloud.io%2Fdashboard&type=Code

, и мне нужно пройти аутентификацию по электронной почте и паролю.

Я пытался сделать это:

auth = {:usarname => "username", :password => "password"}

a = HTTParty.get(url, :basic_auth)

но это не подтвердило мою подлинность, как и ожидалось.

Почему это не работает и как я могу это исправить?

Я хочу получить эту информацию, и это не такдоступно на Github API:

1 Ответ

0 голосов
/ 10 мая 2019

Не царапайте GitHub.Очистка хрупкая и очень неудобна для сайтов, которые интенсивно используют JavaScript.

Используйте его API вместо:

https://api.github.com/search/code?q=https%3A%2F%2Fsonarcloud.io%2Fdashboard

Для поиска во всех репозиториях вы будетевсе же нужно аутентифицировать , хотя.Вам нужно передать свой auth хеш в HTTParty.get():

auth = {:username => "username", :password => "password"}

a = HTTParty.get(url, :basic_auth => auth)
#                                 ^  Here

Идиоматически, это может выглядеть как

auth = {username: "username", password: "password"}

a = HTTParty.get(url, basic_auth: auth)

У вас также есть опечатка - usarname вместоusername - что я исправил в своей версии.

Редактировать: Если вы хотите получить конкретный сопоставленный текст, файл и строки, вам все равно не нужно их очищатьHTML.Вместо этого вы можете установить для заголовка Accept значение application/vnd.github.v3.text-match+json:

url = "https://api.github.com/search/code"
query = {q: "https://sonarcloud.io/dashboard"}
auth = {username: "username", password: "password"}
headers = {"Accept" => "application/vnd.github.v3.text-match+json"}

a = HTTParty.get(url, query: query, basic_auth: auth, headers: headers)

Теперь в ответе должен быть ключ text_matches, содержащий хэши с fragment s, показывающими совпадениятекст, а также object_type s (например, "FileContent"), object_url s и indices.

Это также упоминается в поисковой ссылке , которую я уже предоставил:

При поиске кода вы можете получить метаданные соответствия текста для полей файла content и файла path при передаче типа носителя text-match.Подробнее о том, как получать выделенные результаты поиска, см. Метаданные соответствия текста .

...