mailru-api 1.0.0.pre → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +20 -0
  3. data/README.md +173 -0
  4. data/lib/mailru/api/dsl.rb +1 -4
  5. metadata +7 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69c9fc8530988ef680533c17e96390d73bdefcc1
4
- data.tar.gz: 878f132c2290585fe5eb82e13ba9ed342d870f4c
3
+ metadata.gz: 294bf8eaf893af56dd8f04e36a2393311872b21e
4
+ data.tar.gz: 135ce3c89736e3a9bdf902fbb851a6f6f26c596e
5
5
  SHA512:
6
- metadata.gz: d2e33108fb5de2f0c800f74ba4d87bc329c148e338cd8ffb428564c4359bb73e8734b3e184fe58798788761ac1c35f46b7dc859124a4f8f230a81bda1519a63b
7
- data.tar.gz: 144fb0b1862eb613c5c7e2d3d6dc2fd1d18d787359ac25d737aafa588e6d0d011fa8646a6ff464e9c271f415f842580ccdde58cf769c87d37199d9951ec2dff9
6
+ metadata.gz: 46df139e9ccbd0c09a66469ded2491d0ce070014e1c2ba46832fa780bcfd18cd7ae01e900b4c6f01ae1e0889bdf35c37148a373c4d7055e8dc7a89a5b7d4d851
7
+ data.tar.gz: 851587dc9280e312df7595e6c8d3036f7f2d6fff98c2070fad120b25baa20cc3bff68fca7d14a68a10e8704febf9473bf691d284a8da6780b55f071e0247692e
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013 Alexey Demin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,173 @@
1
+ [![Gem Version](https://badge.fury.io/rb/mailru-api.png)](http://badge.fury.io/rb/mailru-api) [![Build Status](https://secure.travis-ci.org/ademin/mailru-api.png)](http://travis-ci.org/ademin/mailru-api) [![Code Climate](https://codeclimate.com/github/ademin/mailru-api.png)](https://codeclimate.com/github/ademin/mailru-api) [![Coverage Status](https://coveralls.io/repos/ademin/mailru-api/badge.png)](https://coveralls.io/r/ademin/mailru-api) [![Dependency Status](https://gemnasium.com/ademin/mailru-api.png)](https://gemnasium.com/ademin/mailru-api)
2
+
3
+ ***
4
+
5
+ # Mailru-api
6
+
7
+ Mailru-api - это гем, предоставляющий простой и лаконичный способ взаимодействия с сервисами @MAIL.RU, реализованный на базе @MAIL.RU REST API (документацию можно найти по ссылке: http://api.mail.ru/docs/guides/restapi/).
8
+
9
+ Для того, чтобы установить гем выполните команду:
10
+
11
+ gem install mailru-api
12
+
13
+ или добавьте следующую строчку в свой Gemfile:
14
+
15
+ gem "mailru-api", :require => 'mailru/api'
16
+
17
+ # Документация
18
+
19
+ * [Конфигурация](#Конфигурация-api)
20
+ * [Вызов методов @MAIL.RU](#Вызов-методов-mailru)
21
+ * [Обработка результатов вызова](#Обработка-результатов-вызова)
22
+ * [Примеры из реальной жизни](#Примеры-из-реальной-жизни)
23
+
24
+
25
+ ## Конфигурация API
26
+
27
+ Перед тем как начать непосредственно вызывать методы @MAIL.RU, нужно создать и сконфигурировать API. Существуют несколько методов конфигурации:
28
+
29
+ 1. Через DSL синтаксис:
30
+
31
+ api = MailRU::API.new do
32
+ app_id 'your app id is here'
33
+ secret_key 'your secret key is here'
34
+ session_key 'your session key is here when required'
35
+ format MailRU::API::Format::XML
36
+ end
37
+
38
+ 2. Через конфигурирование в блоке
39
+
40
+ api = MailRU::API.new do |configuration|
41
+ configuration.app_id = 'your app id is here'
42
+ configuration.secret_key = 'your secret key is here'
43
+ configuration.session_key = 'your session key is here when required'
44
+ end
45
+
46
+ 3. Через параметры конструктора
47
+
48
+ api = MailRU::API.new(
49
+ app_id: 'your app id is here',
50
+ uid: 'the UID the request made on behalf of',
51
+ private_key: 'your private key is here',
52
+ session_key: 'your session key is here when required'
53
+ )
54
+
55
+ 4. Путем комбинирования несколько методов конфигурации:
56
+
57
+ api = MailRU::API.new(app_id: 'your app id is here', secret_key: 'your secret key is here') do
58
+ secret_key 'your secret key is here'
59
+ session_key 'your session key is here when required'
60
+ private_key 'your private key is here'
61
+ end
62
+
63
+ 5. Путем обычной установки параметров
64
+
65
+ api = MailRU::API.new
66
+ app.app_id = 'your app id is here'
67
+ app.secret_key = 'your secret key is here'
68
+ ...
69
+
70
+ ### Поддерживаемые параметры конфигурации:
71
+
72
+ <table>
73
+ <tr><td>app_id</td><td>Идентификатор приложения</td></tr>
74
+ <tr><td>secret_key</td><td>Значение secret_key из настроек приложения</td></tr>
75
+ <tr><td>private_key</td><td>Значение private_key из настроек приложения</td></tr>
76
+ <tr><td>uid</td><td>Идентификатор пользователя, для которого вызывается метод; данный аргумент должен быть указан, если не указан session_key</td></tr>
77
+ <tr><td>session_key</td><td>Сессия текущего пользователя</td></tr>
78
+ <tr><td>format</td><td>Формат ответа API; возможные значения: MailRU::API::Format::XML или MailRU::API::Format::JSON (по-умолчанию)</td></tr>
79
+ </table>
80
+
81
+ Более подробную информацию можно найти по ссылке http://api.mail.ru/docs/guides/restapi/
82
+
83
+ ## Вызов методов @MAIL.RU
84
+
85
+ После того как объект API создан и сконфигурирован можно начинать взаимодействовать с методами @MAIL.RU.
86
+ Все методы @MAIL.RU REST API представленны соответствующими Ruby методами в underscore варианте. Например:
87
+
88
+ REST API метод: friends.getAppUsers
89
+ Ruby API метод: friends.get_app_users
90
+
91
+ Методы вызываются по схеме "Сервер-Сервер" везде, где это возможно. Если этого сделать не возможно (например, не был указан secret_key), будет сделана попытка вызвать метода по схеме "Клиент-Сервер".
92
+
93
+ ### Примеры вызова методов:
94
+
95
+ * Метод audio.get:
96
+
97
+ api.audio.get
98
+ api.audio.get(limit: 10)
99
+ api.audio.get(offset: 10, limit:20)
100
+
101
+ * Метод notifications.send
102
+
103
+ uids = ['uid1', 'uid2', ..., 'uidn'].join(',')
104
+ text = 'hello'.encode('utf-8')
105
+ api.notifications.send(uids: uids, text: text)
106
+
107
+ * Метод users.hasAppPermission
108
+
109
+ api.users.has_app_permission(ext_perm: 'events')
110
+
111
+ ### Что делать если @MAIL.RU обновил API, но их поддержка еще не добавленна в Mailru-api?
112
+
113
+ Любой метод можно вызвать выполнением HTTP GET или HTTP POST запроса. Для этого Mailru-api
114
+ предоставляет два метода:
115
+
116
+ api.get(name, params = {}, secure = MailRU::API::Request::Secure::Any)
117
+ api.post(name, params = {}, secure = MailRU::API::Request::Secure::Any)
118
+
119
+ * Вызов метода audio.get через HTTP GET
120
+
121
+ api.get('audio.get')
122
+ api.get('audio.get', limit:10)
123
+ api.get('audio.get', offset: 2, limit: 10)
124
+
125
+ * Вызов метода audio.get через HTTP POST
126
+
127
+ api.post('audio.get')
128
+
129
+ * Вызов метода notifications.send через HTTP POST
130
+
131
+ uids = ['uid1', 'uid2', 'uid3'].join(',')
132
+ text = 'Тексе сообщения.'.encoding('utf-8')
133
+
134
+ api.post('notifications.send', {uids: uids, text: text})
135
+
136
+ ## Обработка результатов вызова
137
+
138
+ В зависимости от того, какой формат взаимодействия с API выбран, XML или JSON, все методы будут возвращать соответствующие объекты.
139
+
140
+ ## Примеры из реальной жизни
141
+
142
+ * Пример 1
143
+
144
+ require 'mailru/api'
145
+
146
+ ...
147
+
148
+ api = MailRU::API.new do |configuration|
149
+ configuration.app_id = 'hidden'
150
+ configuration.secret_key = 'hidden'
151
+ configuration.session_key = 'hidden'
152
+ end
153
+
154
+ begin
155
+ api.events.get_new_count
156
+ rescue MailRU::API::PermissionDeniedError => e
157
+ begin
158
+ p "Can not obtain count of new events!"
159
+ p "Has 'events' permission: #{api.users.has_app_permission(ext_perm: 'events')['events']}"
160
+ rescue MailRU::API::Error => e
161
+ end
162
+ end
163
+
164
+ * Пример 2
165
+
166
+ uids = ['uid1', 'uid2', 'uid3'].join(',')
167
+ text = message.encoding('utf-8')
168
+
169
+ MailRU::API.new(app_id: 'hidden', secret_key: 'hidden').notifications.send(uids: uids,text: text)
170
+
171
+ # License
172
+
173
+ Copyright &#169; 2013 Alexey Demin, MIT License
@@ -10,7 +10,7 @@ module MailRU
10
10
  def api name, method = :get, secure = Request::Secure::Any
11
11
  raise Error.create(0, 'HTTP method must be GET or POST!') unless [:get, :post].include?(method)
12
12
 
13
- method(SEND).call(:define_singleton_method, underscore(name)) do |params = {}|
13
+ __send__(:define_singleton_method, underscore(name)) do |params = {}|
14
14
  return @api.get("#{@group}.#{name}", params, secure) if method == :get
15
15
  return @api.post("#{@group}.#{name}", params, secure) if method == :post
16
16
  end
@@ -18,9 +18,6 @@ module MailRU
18
18
 
19
19
  private
20
20
 
21
- SEND = (0...6).map{ (65 + rand(26)).chr }.join
22
- alias_method(SEND, :send)
23
-
24
21
  def underscore s
25
22
  s.gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
26
23
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailru-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Demin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-16 00:00:00.000000000 Z
11
+ date: 2013-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -78,7 +78,9 @@ files:
78
78
  - lib/mailru/api/format.rb
79
79
  - lib/mailru/api/request.rb
80
80
  - lib/mailru/api/dsl.rb
81
- homepage: https://github.com/ademin/mailru
81
+ - LICENSE
82
+ - README.md
83
+ homepage: https://github.com/ademin/mailru-api
82
84
  licenses:
83
85
  - MIT
84
86
  metadata: {}
@@ -93,9 +95,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
95
  version: 1.9.3
94
96
  required_rubygems_version: !ruby/object:Gem::Requirement
95
97
  requirements:
96
- - - '>'
98
+ - - '>='
97
99
  - !ruby/object:Gem::Version
98
- version: 1.3.1
100
+ version: '0'
99
101
  requirements: []
100
102
  rubyforge_project:
101
103
  rubygems_version: 2.0.3