Запрос HTTP / Curl для реализации iOS Pu sh Token Kit - PullRequest
0 голосов
/ 07 мая 2020

Итак, я пытаюсь реализовать iOS Pu sh функцию вызова токена из Rails API.

Эквивалентный запрос curl выглядит примерно так:

"curl -v -d '"+'{"aps":{"user":"'+user.name.to_s+'"}}'+"' --http2 --cert #{cert_path}:passwd <apple_account_url>/#{push_token}"

Мы выполнение этого через Kernel.system curl_request Хотя это работает в нашем тестовом экземпляре, но не работает на производственном сервере с сообщением:

Unsupported protocol: curl_request

Я пытаюсь преобразовать это в эквивалентный HTTP-запрос, вот следующий код для того же:

def send_ios_call_http(user)
  uri_str = ENV['IOS_PUSH_URL'] + "/"
  push_tokens = ['has5766782ebjadad7712831313', '2131112...']
  cert_path = Rails.root.join("config", "private/Certificates.pem")
  push_tokens.each do |push_token|        
    uri_str += push_token
    uri = URI.parse(uri_str)
    request = Net::HTTP::Post.new(uri)
    request.body = JSON.dump({
      "aps" => {
        "user" => user.email
      }
    }) 
    req_options = {
      use_ssl: uri.scheme == "https",
      cert: "#{cert_path}:passwd"
    }

    response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
      http.request(request)
    end                 
  end 
end

Кажется, это не работает. Оба запроса требуют путь к сертификату и пароль, который у нас уже включен в оба запроса.

Запрос curl работает на нашем тестовом экземпляре, но не на производственном сервере heroku, на котором установлен curl. Пытался позвонить с номера bash, но все равно не работает

...