Правильный способ получить ответ от Slack API - PullRequest
0 голосов
/ 24 января 2020

Я хочу переместить этот код из консоли:

curl --data "token=TOKEN_NO&email=USER@EXAMPLE.COM" https://slack.com/api/users.lookupByEmail

в метод класса и получить ответ от Slack (данные пользователя) точно так же, как из консоли. Я пытался сделать что-то вроде этого, но я не вижу никаких результатов:

require 'net/http'

module Slack
  class GetUserID
    SLACK_API_ENDPOINT = 'https://slack.com/api/users.lookupByEmail'

    def call
      escaped_address = URI.decode_www_form_component(SLACK_API_ENDPOINT)
      uri = URI.parse(escaped_address)
      puts Net::HTTP.post(uri, params)
    end

    private

    def params
      {
        token: 'TOKEN_NO',
        email: 'USER@EXAMPLE.COM'
      }
    end
  end
end

Сейчас у меня есть ошибка:

send_request_with_body': undefined method bytesize 'для # Ха sh: 0x00007f9d85093100> (NoMethodError)

Где я ошибаюсь? Должен ли я использовать HTTParty вместо?

1 Ответ

0 голосов
/ 24 января 2020

Второй аргумент, передаваемый Net::HTTP.post, должен быть строкой, подробнее о сигнатуре метода здесь .

Вам нужно будет преобразовать params га sh в формат строки запроса, который выглядит следующим образом:

token=TOKEN_NO&email=USER@EXAMPLE.COM
...