Методы и модуль для работы с Яндекс.Метрика · GitHub
| def get_oauth_token |
| code = params[‘code’] |
| data = { |
| grant_type: ‘authorization_code’, |
| client_id: YA_CONFIG[:yandex_app_id], |
| client_secret: YA_CONFIG[:yandex_app_password], |
| code: code |
| } |
| response = RestClient.post «https://oauth.yandex.ru/token», data, content_type: ‘application/x-www-form-urlencoded’ |
| render json: response |
| end |
| |
| def popular |
| method = ‘popular’ |
| counter = { |
| :date1 => params[:date1] ? params[:date1] : date1, |
| :date2 => params[:date2] ? params[:date2] : date2, |
| :per_page => ’30’ |
| } |
| ym_obj = YaMetrika::Statistic. new(YA_CONFIG[:yandex_token],YA_CONFIG[:yandex_counter]) |
| json = ym_obj.get_statistic(method,counter) |
| render :json => json |
| end |
| |
| #encoding: utf-8 |
| module YaMetrika |
| class Statistic |
| |
| def initialize oauth_token, counter_id |
| @oauth_token, @counter_id = oauth_token, counter_id |
| end |
| |
| def get_statistic(method,data) |
| piece_of_url = nil |
| e = nil |
| data[:id] = @counter_id |
| data[:oauth_token] = @oauth_token |
| case method |
| when ‘traffic_summary’ |
| piece_of_url = «stat/traffic/summary» |
| when ‘traffic_day’ |
| piece_of_url = «stat/traffic/load. json» |
| when ‘deepness’ |
| piece_of_url = «stat/traffic/deepness.json» |
| when ‘popular’ |
| piece_of_url = «/stat/content/popular.json» |
| end |
| |
| begin |
| response = RestClient.get root_host + piece_of_url, {params: data, :content_type => :json, :accept => :json} |
| JSON(response.body, :symbolize_names => true) |
| rescue Exception => e |
| e = e. as_json |
| if e[«initial_response_code»] |
| case e[«initial_response_code»] |
| when 400 |
| response = {error_code: ‘400’, error_message: ‘Запрос невалидный.’} |
| when 401 |
| response = {error_code: ‘401’, error_message: ‘В запросе не указаны авторизационные данные.’} |
| when 403 |
| response = {error_code: ‘403’, error_message: ‘Неверны авторизационные данные, указанные в запросе, или запрещен доступ к запрашиваемому ресурсу.’} |
| when 404 |
| response = {error_code: ‘404’, error_message: ‘Запрашиваемый ресурс не найден. ‘} |
| when 405 |
| response = {error_code: ‘405’, error_message: ‘Запрашиваемый метод для указанного ресурса не поддерживается.’} |
| when 415 |
| response = {error_code: ‘415’, error_message: ‘Запрашиваемый тип контента не поддерживается методом.’} |
| when 420 |
| response = {error_code: ‘420’, error_message: ‘Превышено ограничение на доступ к ресурсу.’} |
| when 500 |
| response = {error_code: ‘500’, error_message: ‘Внутренняя ошибка сервера. Попробуйте вызвать метод через некоторое время. ‘} |
| when 503 |
| response = {error_code: ‘503’, error_message: ‘Сервер временно недоступен из-за высокой загрузки. Попробуйте вызвать метод через некоторое время.’} |
| end |
| puts «ОШИБКА ЯНДЕКС.МЕТРИКИ»,»КОД ОШИБКИ : #{response[:error_code]}; СООБЩЕНИЕ ОШИБКИ: #{response[:error_message]}» |
| else |
| puts ‘ОШИБКА ЯНДЕКС.МЕТРИКИ’, «КОНТЕНТ ОШИБКИ : #{e}» |
| end |
| end |
| response |
| end |
| |
| private |
| |
| def root_host |
| host = «https://api-metrika.
|