mailru-api 1.0.0.pre → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +20 -0
- data/README.md +173 -0
- data/lib/mailru/api/dsl.rb +1 -4
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 294bf8eaf893af56dd8f04e36a2393311872b21e
|
4
|
+
data.tar.gz: 135ce3c89736e3a9bdf902fbb851a6f6f26c596e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
data/README.md
ADDED
@@ -0,0 +1,173 @@
|
|
1
|
+
[](http://badge.fury.io/rb/mailru-api) [](http://travis-ci.org/ademin/mailru-api) [](https://codeclimate.com/github/ademin/mailru-api) [](https://coveralls.io/r/ademin/mailru-api) [](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 © 2013 Alexey Demin, MIT License
|
data/lib/mailru/api/dsl.rb
CHANGED
@@ -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
|
-
|
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
|
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-
|
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
|
-
|
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:
|
100
|
+
version: '0'
|
99
101
|
requirements: []
|
100
102
|
rubyforge_project:
|
101
103
|
rubygems_version: 2.0.3
|