Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gem Version Build Status Code Climate Coverage Status Dependency Status


Mailru-api

Mailru-api - это гем, предоставляющий простой и лаконичный способ взаимодействия с сервисами @MAIL.RU, реализованный на базе @MAIL.RU REST API (документацию можно найти по ссылке: http://api.mail.ru/docs/guides/restapi/).

Для того, чтобы установить гем выполните команду:

gem install mailru-api

или добавьте следующую строчку в свой Gemfile:

gem "mailru-api", :require => 'mailru/api'

Документация

Конфигурация API

Перед тем как начать непосредственно вызывать методы @MAIL.RU, нужно создать и сконфигурировать API. Существуют несколько методов конфигурации:

  1. Через DSL синтаксис:

     api = MailRU::API.new do
       app_id 'your app id is here'
       secret_key 'your secret key is here'
       session_key 'your session key is here when required'
       format MailRU::API::Format::XML
     end
    
  2. Через конфигурирование в блоке

     api = MailRU::API.new do |configuration|
       configuration.app_id = 'your app id is here'
       configuration.secret_key = 'your secret key is here'
       configuration.session_key = 'your session key is here when required'
     end
    
  3. Через параметры конструктора

     api = MailRU::API.new(
       app_id: 'your app id is here', 
       uid: 'the UID the request made on behalf of', 
       private_key: 'your private key is here',
       session_key: 'your session key is here when required'
     )
    
  4. Путем комбинирования несколько методов конфигурации:

     api = MailRU::API.new(app_id: 'your app id is here', secret_key: 'your secret key is here') do
       secret_key 'your secret key is here'
       session_key 'your session key is here when required'
       private_key 'your private key is here'
     end
    
  5. Путем обычной установки параметров

     api = MailRU::API.new
     app.app_id = 'your app id is here'
     app.secret_key = 'your secret key is here'
     ...
    

Поддерживаемые параметры конфигурации:

app_idИдентификатор приложения
secret_keyЗначение secret_key из настроек приложения
private_keyЗначение private_key из настроек приложения
uidИдентификатор пользователя, для которого вызывается метод; данный аргумент должен быть указан, если не указан session_key
session_keyСессия текущего пользователя
formatФормат ответа API; возможные значения: MailRU::API::Format::XML или MailRU::API::Format::JSON (по-умолчанию)

Более подробную информацию можно найти по ссылке http://api.mail.ru/docs/guides/restapi/

Вызов методов @MAIL.RU

После того как объект API создан и сконфигурирован можно начинать взаимодействовать с методами @MAIL.RU. Все методы @MAIL.RU REST API представленны соответствующими Ruby методами в underscore варианте. Например:

REST API метод: friends.getAppUsers
Ruby API метод: friends.get_app_users

Методы вызываются по схеме "Сервер-Сервер" везде, где это возможно. Если этого сделать не возможно (например, не был указан secret_key), будет сделана попытка вызвать метода по схеме "Клиент-Сервер".

Примеры вызова методов:

  • Метод audio.get:

      api.audio.get
      api.audio.get(limit: 10)
      api.audio.get(offset: 10, limit:20)
    
  • Метод notifications.send

      uids = ['uid1', 'uid2', ..., 'uidn'].join(',')
      text = 'hello'.encode('utf-8')
      api.notifications.send(uids: uids, text: text)
    
  • Метод users.hasAppPermission

      api.users.has_app_permission(ext_perm: 'events')
    

Что делать если @MAIL.RU обновил API, но их поддержка еще не добавленна в Mailru-api?

Любой метод можно вызвать выполнением HTTP GET или HTTP POST запроса. Для этого Mailru-api предоставляет два метода:

api.get(name, params = {}, secure = MailRU::API::Request::Secure::Any)
api.post(name, params = {}, secure = MailRU::API::Request::Secure::Any)
  • Вызов метода audio.get через HTTP GET

      api.get('audio.get')
      api.get('audio.get', limit:10)
      api.get('audio.get', offset: 2, limit: 10)
    
  • Вызов метода audio.get через HTTP POST

      api.post('audio.get')
    
  • Вызов метода notifications.send через HTTP POST

      uids = ['uid1', 'uid2', 'uid3'].join(',')
      text = 'Тексе сообщения.'.encoding('utf-8')
    
      api.post('notifications.send', {uids: uids, text: text})
    

Обработка результатов вызова

В зависимости от того, какой формат взаимодействия с API выбран, XML или JSON, все методы будут возвращать соответствующие объекты.

Примеры из реальной жизни

  • Пример 1

      require 'mailru/api'
    
      ...
    
      api = MailRU::API.new do |configuration|
        configuration.app_id = 'hidden'
        configuration.secret_key = 'hidden'
        configuration.session_key = 'hidden'
      end
    
      begin
        api.events.get_new_count
      rescue MailRU::API::PermissionDeniedError => e
        begin
          p "Can not obtain count of new events!"
          p "Has 'events' permission: #{api.users.has_app_permission(ext_perm: 'events')['events']}"
        rescue MailRU::API::Error => e
        end
      end
    
  • Пример 2

      uids = ['uid1', 'uid2', 'uid3'].join(',')
      text = message.encoding('utf-8')
    
      MailRU::API.new(app_id: 'hidden', secret_key: 'hidden').notifications.send(uids: uids,text: text)
    

License

Copyright © 2013-2018 Alexey Demin, MIT License

About

Ruby @MAIL.RU API

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages