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.
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