vkontakte_api 1.4 → 1.4.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: abc394ecea0593151c184221c7584d2497e5a0b5
4
- data.tar.gz: fa75472686aceeb47d0846004b5efdbb3314e0ed
3
+ metadata.gz: 5f135f0fa55b982c98358a7e47fc635321bff4e4
4
+ data.tar.gz: a02fed95ccd6c1af2b96fe2fa39df38eb2e90833
5
5
  SHA512:
6
- metadata.gz: 8e93465f3862e9731749ca37149057e361a6eb3f30e0bfbfa2ce897ff38676f121d4b7e9eb27429868b7fbf742814b5abb0d11e580b608c5aeac190a89d75d4c
7
- data.tar.gz: 017d9ac66a4b8a9aafe2d4a0db0d5d4c407e415167aef95f5a7f76b4a4322b5df62db09b15283faf447fe0d60fe799f28f095428e67579330f1f0a85f15ca03c
6
+ metadata.gz: 731b0b5b6eb1ec51e4be67ba9b799cf5d24006423d52c4522bf843cfcc9cf077cc8800704f976516aa9df731f63ac1129ce54099b36e338f3cdab212461d726a
7
+ data.tar.gz: c47aaf4aaf695d78e346fc200141b31c35738f6ecc4e03745bdad57759cd08f8d60c532e31766872be220cb2089895387a1c7f234dbd4043b33481802647a250
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.4.2 (09.10.2014)
2
+
3
+ * Удален бинстаб `rspec`, случайно попавший в гем
4
+
5
+ ## 1.4.1 (05.10.2014)
6
+
7
+ * Поддержка хранимых процедур
8
+
1
9
  ## 1.4 (11.05.2014)
2
10
 
3
11
  * Совместимость с `faraday 0.9`
data/Guardfile CHANGED
@@ -1,4 +1,4 @@
1
- guard 'rspec', all_on_start: true, all_after_pass: true do
1
+ guard 'rspec', all_on_start: true, all_after_pass: true, cmd: 'bin/rspec' do
2
2
  watch(%r{^spec/.+_spec\.rb$})
3
3
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
4
4
  watch('spec/spec_helper.rb') { 'spec' }
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## vkontakte_api [![Build Status](https://secure.travis-ci.org/7even/vkontakte_api.png)](http://travis-ci.org/7even/vkontakte_api) [![Gem Version](https://badge.fury.io/rb/vkontakte_api.png)](http://badge.fury.io/rb/vkontakte_api) [![Dependency Status](https://gemnasium.com/7even/vkontakte_api.png)](https://gemnasium.com/7even/vkontakte_api) [![Code Climate](https://codeclimate.com/github/7even/vkontakte_api.png)](https://codeclimate.com/github/7even/vkontakte_api)
2
2
 
3
- `vkontakte_api` - ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).
3
+ `vkontakte_api` — ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).
4
4
 
5
5
  ## Установка
6
6
 
@@ -55,16 +55,16 @@ end
55
55
 
56
56
  ### Загрузка файлов
57
57
 
58
- Загрузка файлов на сервера ВКонтакте осуществляется в несколько этапов: сначала вызывается метод API, возвращающий URL для загрузки, затем происходит сама загрузка файлов, и после этого в некоторых случаях нужно вызвать другой метод API, передав в параметрах данные, возвращенные сервером после предыдущего запроса. Вызываемые методы API зависят от типа загружаемых файлов и описаны в [соответствующем разделе документации](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5).
58
+ Загрузка файлов на сервера ВКонтакте осуществляется в несколько этапов: сначала вызывается метод API, возвращающий URL для загрузки, затем происходит сама загрузка файлов, и после этого в некоторых случаях нужно вызвать другой метод API, передав в параметрах данные, возвращенные сервером после предыдущего запроса. Вызываемые методы API зависят от типа загружаемых файлов и описаны в [соответствующем разделе документации](https://vk.com/dev/upload_files).
59
59
 
60
- Файлы передаются в формате хэша, где ключом является название параметра в запросе (указано в документации, например для загрузки фото на стену это будет `photo`), а значением - массив из 2 строк: полный путь к файлу и его MIME-тип:
60
+ Файлы передаются в формате хэша, где ключом является название параметра в запросе (указано в документации, например для загрузки фото на стену это будет `photo`), а значением — массив из 2 строк: полный путь к файлу и его MIME-тип:
61
61
 
62
62
  ``` ruby
63
63
  url = 'http://cs303110.vkontakte.ru/upload.php?act=do_add'
64
64
  VkontakteApi.upload(url: url, photo: ['/path/to/file.jpg', 'image/jpeg'])
65
65
  ```
66
66
 
67
- Если загружаемый файл доступен как открытый IO-объект, его можно передать альтернативным синтаксисом - IO-объект, MIME-тип и путь к файлу:
67
+ Если загружаемый файл доступен как открытый IO-объект, его можно передать альтернативным синтаксисом — IO-объект, MIME-тип и путь к файлу:
68
68
 
69
69
  ``` ruby
70
70
  url = 'http://cs303110.vkontakte.ru/upload.php?act=do_add'
@@ -77,13 +77,13 @@ VkontakteApi.upload(url: url, photo: [file_io, 'image/jpeg', '/path/to/file.jpg'
77
77
 
78
78
  Для вызова большинства методов требуется токен доступа (access token). Чтобы получить его, можно использовать авторизацию, встроенную в `vkontakte_api`, либо положиться на какой-то другой механизм (например, [OmniAuth](https://github.com/intridea/omniauth)). В последнем случае в результате авторизации будет получен токен, который нужно будет передать в `VkontakteApi::Client.new`.
79
79
 
80
- Для работы с ВКонтакте API предусмотрено 3 типа авторизации: для сайтов, для клиентских приложений (мобильных либо десктопных, имеющих доступ к управлению браузером) и специальный тип авторизации серверов приложений для вызова административных методов без авторизации самого пользователя. Более подробно они описаны [тут](http://vk.com/developers.php?oid=-1&p=%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F); рассмотрим, как работать с ними средствами `vkontakte_api`.
80
+ Для работы с ВКонтакте API предусмотрено 3 типа авторизации: для сайтов, для клиентских приложений (мобильных либо десктопных, имеющих доступ к управлению браузером) и специальный тип авторизации серверов приложений для вызова административных методов без авторизации самого пользователя. Более подробно они описаны [тут](https://vk.com/dev/authentication); рассмотрим, как работать с ними средствами `vkontakte_api`.
81
81
 
82
82
  Для авторизации необходимо задать параметры `app_id` (ID приложения), `app_secret` (защищенный ключ) и `redirect_uri` (адрес, куда пользователь будет направлен после предоставления прав приложению) в настройках `VkontakteApi.configure`. Более подробно о конфигурировании `vkontakte_api` см. далее в соответствующем разделе.
83
83
 
84
84
  ##### Сайт
85
85
 
86
- Авторизация сайтов проходит в 2 шага. Сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](http://vk.com/developers.php?oid=-1&p=%D0%9F%D1%80%D0%B0%D0%B2%D0%B0_%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
86
+ Авторизация сайтов проходит в 2 шага. Сначала пользователь перенаправляется на страницу ВКонтакте для подтверждения запрошенных у него прав сайта на доступ к его данным. Со списком возможных прав можно ознакомиться [здесь](https://vk.com/dev/permissions). Допустим, нужно получить доступ к друзьям (`friends`) и фотографиям (`photos`) пользователя.
87
87
 
88
88
  В соответствии с [рекомендациями](http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-10.12) в протоколе OAuth2 для защиты от [CSRF](http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2), нужно передать параметр `state`, содержащий случайное значение.
89
89
 
@@ -92,7 +92,7 @@ session[:state] = Digest::MD5.hexdigest(rand.to_s)
92
92
  redirect_to VkontakteApi.authorization_url(scope: [:notify, :friends, :photos], state: session[:state])
93
93
  ```
94
94
 
95
- После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа, а также переданный ранее `state`. Если `state` не совпадает с тем, который был использован при отправлении пользователя на ВКонтакте, то скорее всего это попытка CSRF-атаки - стоит отправить пользователя на повторную авторизацию.
95
+ После подтверждения пользователь перенаправляется на указанный в настройках `redirect_uri`, причем в параметрах будет передан код, по которому можно получить токен доступа, а также переданный ранее `state`. Если `state` не совпадает с тем, который был использован при отправлении пользователя на ВКонтакте, то скорее всего это попытка CSRF-атаки — стоит отправить пользователя на повторную авторизацию.
96
96
 
97
97
  ``` ruby
98
98
  redirect_to login_url, alert: 'Ошибка авторизации' if params[:state] != session[:state]
@@ -124,7 +124,7 @@ current_user.save
124
124
 
125
125
  ##### Клиентское приложение
126
126
 
127
- Авторизация клиентского приложения несколько проще - не нужно получать токен отдельным запросом, он выдается сразу после редиректа пользователя.
127
+ Авторизация клиентского приложения несколько проще — не нужно получать токен отдельным запросом, он выдается сразу после редиректа пользователя.
128
128
 
129
129
  ``` ruby
130
130
  # пользователь направляется на следующий урл
@@ -137,7 +137,7 @@ VkontakteApi.authorization_url(type: :client, scope: [:friends, :photos])
137
137
 
138
138
  ##### Сервер приложения
139
139
 
140
- Последний тип авторизации - самый простой, т.к. не предполагает участия пользователя.
140
+ Последний тип авторизации — самый простой, т.к. не предполагает участия пользователя.
141
141
 
142
142
  ``` ruby
143
143
  @vk = VkontakteApi.authorize(type: :app_server)
@@ -188,9 +188,9 @@ vk.friends.get(uid: 1, fields: [:first_name, :last_name, :photo])
188
188
  # VkontakteApi::Error: VKontakte returned an error 7: 'Permission to perform this action is denied' after calling method 'friends.get' with parameters {"uid"=>"1", "fields"=>"first_name,last_name,photo"}.
189
189
  ```
190
190
 
191
- Особый случай ошибки - 14: необходимо ввести код с captcha.
191
+ Особый случай ошибки — 14: необходимо ввести код с captcha.
192
192
  В этом случае можно получить параметры капчи методами
193
- `VkontakteApi::Error#captcha_sid` и `VkontakteApi::Error#captcha_img` - например,
193
+ `VkontakteApi::Error#captcha_sid` и `VkontakteApi::Error#captcha_img` — например,
194
194
  [так](https://github.com/7even/vkontakte_api/issues/10#issuecomment-11666091).
195
195
 
196
196
  ### Логгирование
@@ -265,12 +265,12 @@ end
265
265
  [любой другой адаптер](https://github.com/technoweenie/faraday/blob/master/lib/faraday/adapter.rb),
266
266
  поддерживаемый `faraday`.
267
267
 
268
- ВКонтакте [позволяет](http://vk.com/developers.php?oid=-1&p=%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2_%D0%BA_API)
268
+ ВКонтакте [позволяет](https://vk.com/dev/api_requests)
269
269
  использовать как `GET`-, так и `POST`-запросы при вызове методов API.
270
270
  По умолчанию `vkontakte_api` использует `POST`, но в настройке `http_verb`
271
271
  можно указать `:get`, чтобы совершать `GET`-запросы.
272
272
 
273
- При необходимости можно указать параметры для faraday-соединения - например,
273
+ При необходимости можно указать параметры для faraday-соединения — например,
274
274
  параметры прокси-сервера или путь к SSL-сертификатам.
275
275
 
276
276
  Чтобы при каждом вызове API-метода передавалась определенная версия API, можно
@@ -286,7 +286,7 @@ $ rails generate vkontakte_api:install
286
286
 
287
287
  ## JSON-парсер
288
288
 
289
- `vkontakte_api` использует парсер [Oj](https://github.com/ohler55/oj) - это
289
+ `vkontakte_api` использует парсер [Oj](https://github.com/ohler55/oj) — это
290
290
  единственный парсер, который не показал [ошибок](https://github.com/7even/vkontakte_api/issues/1)
291
291
  при парсинге JSON, генерируемого ВКонтакте.
292
292
 
data/bin/rspec ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rspec' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= Pathname.new(__FILE__).expand_path.join('../../Gemfile').to_s
11
+
12
+ require 'rubygems'
13
+ require 'bundler/setup'
14
+
15
+ load Gem.bin_path('rspec-core', 'rspec')
@@ -76,6 +76,16 @@ module VkontakteApi
76
76
  end.keys
77
77
  end
78
78
 
79
+ # Called without arguments it returns the `execute` namespace;
80
+ # called with arguments it calls the top-level `execute` API method.
81
+ def execute(*args)
82
+ if args.empty?
83
+ create_namespace(:execute)
84
+ else
85
+ call_method([:execute, *args])
86
+ end
87
+ end
88
+
79
89
  # If the called method is a namespace, it creates and returns a new `VkontakteApi::Namespace` instance.
80
90
  # Otherwise it creates a `VkontakteApi::Method` instance and calls it passing the arguments and a block.
81
91
  def method_missing(*args, &block)
@@ -1,4 +1,4 @@
1
1
  module VkontakteApi
2
2
  # Library version.
3
- VERSION = '1.4'
3
+ VERSION = '1.4.2'
4
4
  end
@@ -41,7 +41,7 @@ describe "Integration" do
41
41
  let(:vk) { MechanizedAuthorization.client }
42
42
 
43
43
  it "convert method names to vk.com format" do
44
- expect(vk.is_app_user?).to be_true
44
+ expect(vk.is_app_user?).to be_truthy
45
45
  end
46
46
  end
47
47
  end
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,10 @@ require 'pry'
3
3
  require 'awesome_print'
4
4
  require_relative './support/mechanized_authorization'
5
5
 
6
+ RSpec.configure do |config|
7
+ config.raise_errors_for_deprecations!
8
+ end
9
+
6
10
  RSpec::Matchers.define :log_requests do
7
11
  match do |logger|
8
12
  logger.log_requests?
@@ -13,7 +13,7 @@ describe VkontakteApi::API do
13
13
  end
14
14
  end
15
15
  end
16
- subject.stub(:connection).and_return(@connection)
16
+ allow(subject).to receive(:connection).and_return(@connection)
17
17
  end
18
18
 
19
19
  describe ".call" do
@@ -65,7 +65,7 @@ describe VkontakteApi::API do
65
65
  describe ".connection" do
66
66
  it "uses the :url parameter and VkontakteApi.faraday_options" do
67
67
  faraday_options = double("Faraday options")
68
- VkontakteApi.stub(:faraday_options).and_return(faraday_options)
68
+ allow(VkontakteApi).to receive(:faraday_options).and_return(faraday_options)
69
69
  url = double("URL")
70
70
 
71
71
  expect(Faraday).to receive(:new).with(url, faraday_options)
@@ -3,11 +3,11 @@ require 'spec_helper'
3
3
  describe VkontakteApi::Authorization do
4
4
  before(:each) do
5
5
  @app_id = double("App id")
6
- VkontakteApi.stub(:app_id).and_return(@app_id)
6
+ allow(VkontakteApi).to receive(:app_id).and_return(@app_id)
7
7
  @app_secret = double("App secret")
8
- VkontakteApi.stub(:app_secret).and_return(@app_secret)
8
+ allow(VkontakteApi).to receive(:app_secret).and_return(@app_secret)
9
9
  @redirect_uri = double("Redirect uri")
10
- VkontakteApi.stub(:redirect_uri).and_return(@redirect_uri)
10
+ allow(VkontakteApi).to receive(:redirect_uri).and_return(@redirect_uri)
11
11
 
12
12
  @url = double("Authorization url")
13
13
  @token = double("Token")
@@ -17,18 +17,18 @@ describe VkontakteApi::Authorization do
17
17
  @client_credentials = double("Client credentials strategy", get_token: @token)
18
18
 
19
19
  @client = double("OAuth2::Client instance", auth_code: @auth_code, implicit: @implicit, client_credentials: @client_credentials)
20
- OAuth2::Client.stub(:new).and_return(@client)
20
+ allow(OAuth2::Client).to receive(:new).and_return(@client)
21
21
  end
22
22
 
23
23
  let(:auth) do
24
24
  Object.new.tap do |object|
25
25
  object.extend VkontakteApi::Authorization
26
26
  end
27
- end
27
+ end
28
28
 
29
29
  describe "#authorization_url" do
30
30
  before(:each) do
31
- auth.stub(:client).and_return(@client)
31
+ allow(auth).to receive(:client).and_return(@client)
32
32
  end
33
33
 
34
34
  context "with a site type" do
@@ -69,7 +69,7 @@ describe VkontakteApi::Authorization do
69
69
  context "with a site type" do
70
70
  before(:each) do
71
71
  @code = double("Authorization code")
72
- @auth_code.stub(:get_token).and_return(@token)
72
+ allow(@auth_code).to receive(:get_token).and_return(@token)
73
73
  end
74
74
 
75
75
  it "gets the token" do
@@ -8,9 +8,9 @@ describe VkontakteApi::Client do
8
8
 
9
9
  def oauth2_token(expires_at = Time.now)
10
10
  token = double("Access token as an OAuth2::AccessToken").tap do |token|
11
- token.stub(:token).and_return(string_token)
12
- token.stub(:params).and_return('user_id' => @user_id, 'email' => @email)
13
- token.stub(:expires_at).and_return(expires_at)
11
+ allow(token).to receive(:token).and_return(string_token)
12
+ allow(token).to receive(:params).and_return('user_id' => @user_id, 'email' => @email)
13
+ allow(token).to receive(:expires_at).and_return(expires_at)
14
14
  end
15
15
  end
16
16
 
@@ -98,7 +98,7 @@ describe VkontakteApi::Client do
98
98
  describe "#scope" do
99
99
  let(:client) do
100
100
  VkontakteApi::Client.new.tap do |client|
101
- client.stub(:get_user_settings).and_return(865310)
101
+ allow(client).to receive(:get_user_settings).and_return(865310)
102
102
  end
103
103
  end
104
104
  let(:scope) { client.scope }
@@ -136,7 +136,7 @@ describe VkontakteApi::Client do
136
136
  before(:each) do
137
137
  @result = double("Result")
138
138
  @method = double("Method", call: @result)
139
- VkontakteApi::Method.stub(:new).and_return(@method)
139
+ allow(VkontakteApi::Method).to receive(:new).and_return(@method)
140
140
  end
141
141
 
142
142
  it "creates a Method instance" do
@@ -150,4 +150,23 @@ describe VkontakteApi::Client do
150
150
  end
151
151
  end
152
152
  end
153
+
154
+ describe '#execute' do
155
+ let(:client) { VkontakteApi::Client.new('token') }
156
+
157
+ context 'called without arguments' do
158
+ it 'returns an :execute namespace' do
159
+ expect(client.execute).to be_a(VkontakteApi::Namespace)
160
+ expect(client.execute.name).to eq('execute')
161
+ end
162
+ end
163
+
164
+ context 'called with arguments' do
165
+ it 'calls the :execute method' do
166
+ code = 'return "Hello World!";'
167
+ expect(client).to receive(:call_method).with([:execute, code: code])
168
+ client.execute(code: code)
169
+ end
170
+ end
171
+ end
153
172
  end
@@ -8,13 +8,13 @@ describe VkontakteApi::Method do
8
8
 
9
9
  let(:method) do
10
10
  VkontakteApi::Method.new('some_name').tap do |method|
11
- method.stub(:full_name).and_return(full_name)
12
- method.stub(:token).and_return(token)
11
+ allow(method).to receive(:full_name).and_return(full_name)
12
+ allow(method).to receive(:token).and_return(token)
13
13
  end
14
14
  end
15
15
 
16
16
  before(:each) do
17
- VkontakteApi::Result.stub(:process)
17
+ allow(VkontakteApi::Result).to receive(:process)
18
18
  end
19
19
 
20
20
  it "calls API.call with full name, args and token" do
@@ -24,9 +24,9 @@ describe VkontakteApi::Method do
24
24
 
25
25
  it "sends the response to Result.process" do
26
26
  response = double("VK response")
27
- VkontakteApi::API.stub(:call).and_return(response)
27
+ allow(VkontakteApi::API).to receive(:call).and_return(response)
28
28
  type = double("Type")
29
- method.stub(:type).and_return(type)
29
+ allow(method).to receive(:type).and_return(type)
30
30
 
31
31
  expect(VkontakteApi::Result).to receive(:process).with(response, type, nil)
32
32
  method.call(args)
@@ -15,7 +15,7 @@ describe VkontakteApi::Resolver do
15
15
  before(:each) do
16
16
  @resolver = @class.new('trololo')
17
17
  @token = double("Token")
18
- @resolver.stub(:token).and_return(@token)
18
+ allow(@resolver).to receive(:token).and_return(@token)
19
19
  end
20
20
 
21
21
  it "gets into #method_missing" do
@@ -30,7 +30,7 @@ describe VkontakteApi::Resolver do
30
30
  @name = double("Name")
31
31
  @resolver = @class.new(@name)
32
32
  @token = double("Token")
33
- @resolver.stub(:token).and_return(@token)
33
+ allow(@resolver).to receive(:token).and_return(@token)
34
34
  end
35
35
 
36
36
  let(:resolver) { @resolver.resolver }
@@ -6,7 +6,7 @@ describe VkontakteApi::Result do
6
6
  let(:result) { double("Result") }
7
7
 
8
8
  before(:each) do
9
- subject.stub(:extract_result).and_return(result)
9
+ allow(subject).to receive(:extract_result).and_return(result)
10
10
  end
11
11
 
12
12
  it "calls .extract_result passing it the response" do
@@ -19,7 +19,7 @@ describe VkontakteApi::Result do
19
19
  let(:typecasted_value) { double("Typecasted value") }
20
20
 
21
21
  before(:each) do
22
- subject.stub(:typecast).and_return(typecasted_value)
22
+ allow(subject).to receive(:typecast).and_return(typecasted_value)
23
23
  end
24
24
 
25
25
  it "returns #typecast-ed value" do
@@ -44,7 +44,7 @@ describe VkontakteApi::Result do
44
44
  let(:enumerable_result) { [element1, element2] }
45
45
 
46
46
  before(:each) do
47
- subject.stub(:extract_result).and_return(enumerable_result)
47
+ allow(subject).to receive(:extract_result).and_return(enumerable_result)
48
48
  end
49
49
 
50
50
  it "returns the untouched value" do
@@ -14,8 +14,8 @@ describe VkontakteApi::Uploading do
14
14
  let(:connection) { double("Faraday connection", post: response) }
15
15
 
16
16
  before(:each) do
17
- Faraday::UploadIO.stub(:new).and_return(upload_io)
18
- VkontakteApi::API.stub(:connection).and_return(connection)
17
+ allow(Faraday::UploadIO).to receive(:new).and_return(upload_io)
18
+ allow(VkontakteApi::API).to receive(:connection).and_return(connection)
19
19
  end
20
20
 
21
21
  context "without a :url param" do
@@ -8,7 +8,7 @@ describe VkontakteApi::Utils do
8
8
  let(:flat_arg2) { double("Flattened second argument") }
9
9
 
10
10
  before(:each) do
11
- VkontakteApi::Utils.stub(:flatten_argument) do |arg|
11
+ allow(VkontakteApi::Utils).to receive(:flatten_argument) do |arg|
12
12
  case arg
13
13
  when arg1 then flat_arg1
14
14
  when arg2 then flat_arg2
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.files = `git ls-files`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
18
17
  s.require_paths = ['lib']
19
18
 
20
19
  s.required_ruby_version = '>= 1.9.2'
@@ -22,11 +21,11 @@ Gem::Specification.new do |s|
22
21
  s.add_runtime_dependency 'faraday', '~> 0.9.0'
23
22
  s.add_runtime_dependency 'faraday_middleware', '~> 0.9.1'
24
23
  s.add_runtime_dependency 'faraday_middleware-parse_oj', '~> 0.3'
25
- s.add_runtime_dependency 'oauth2', '~> 0.8'
26
- s.add_runtime_dependency 'hashie', '~> 2.0'
24
+ s.add_runtime_dependency 'oauth2', '>= 0.8'
25
+ s.add_runtime_dependency 'hashie', '>= 2.0'
27
26
 
28
27
  s.add_development_dependency 'rake'
29
- s.add_development_dependency 'rspec', '~> 2.14'
28
+ s.add_development_dependency 'rspec', '~> 3.0'
30
29
  s.add_development_dependency 'mechanize'
31
30
  s.add_development_dependency 'guard-rspec'
32
31
  s.add_development_dependency 'rb-fsevent', '~> 0.9.1'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vkontakte_api
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vsevolod Romashov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-11 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -56,28 +56,28 @@ dependencies:
56
56
  name: oauth2
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.14'
103
+ version: '3.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2.14'
110
+ version: '3.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: mechanize
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -253,6 +253,7 @@ files:
253
253
  - MIT-LICENSE
254
254
  - README.md
255
255
  - Rakefile
256
+ - bin/rspec
256
257
  - lib/generators/vkontakte_api/install/USAGE
257
258
  - lib/generators/vkontakte_api/install/install_generator.rb
258
259
  - lib/generators/vkontakte_api/install/templates/initializer.rb