2016-09-26 7 views
1

Я хочу, чтобы иметь возможность сделать следующее в Ruby:HTTP Проверка диапазона кода в Ruby,

Я могу описать только то, что мне нужно сделать в PHP коде как сейчас:

$handle = curl_init($url); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 
$httpResponse = curl_getinfo($handle, CURLINFO_HTTP_CODE); 

if ($httpResponse >= 200 && $httpResponse < 300 || $httpResponse == 302) { 
    do some action; 
} 

Я знаю, о Net::HTTP, который я получил следующий код из:

require 'net/http' 

def check_status(uri_str, limit = 10) 
    # You should choose a better exception. 
    raise ArgumentError, 'too many HTTP redirects' if limit == 0 

    response = Net::HTTP.get_response(URI(uri_str)) 

    case response 
    when Net::HTTPSuccess then #if 200 then do action 
    puts "It works!" 
    response.code 
    #response 
    when Net::HTTPRedirection then #if 3xx then check where it goes 
    location = response['location'] 
    check_status(location, limit - 1) 
    else 
    response.value 
    end 
end 

print check_status('https://git.company.com') 

Но я не знаю, как проверить, если ответ HTTP является >= 200 и < 300 или 302.

Должен ли я написать чек на все HTTP responses? Или есть более простой способ, как этот PHP-код выше?

+2

Почему бы просто не протестировать 'response.code' напрямую, если это все, о чем вы заботитесь? – tadman

+0

Я думаю, потому что мой мозг жарится. :(Idk, почему я не думал об этом. Я тот, кто добавил, что response.code тоже .. lol – Fadi

+2

Если вы можете исправить свой код, возможно, вы можете ответить на свой вопрос, чтобы помочь другим застрять в той же ситуации – tadman

ответ

0

Итак, благодаря tadman's comment (за указание моей очевидной ошибки .. XD) и для the Tin Man's suggestion, я изменил код на следующее, и она работает, как ожидалось

require 'rest-client' 

def check_status(uri_str) 

    response = RestClient.get "#{uri_str}" 

    case response.code 
    when 200...300 || 302 
     puts "It works!" 
    else 
     puts "It doesn't work!" 
     puts "#{response.code}" 
    end 
end 

print check_status('https://git.company.com') 

Примечания: Вы необходимо установить жемчужину rest-client, выполнив: gem install rest-client

 Смежные вопросы

  • Нет связанных вопросов^_^