vkontakte_api 1.0.1 → 1.0.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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 1.0.2 (08.09.2012)
2
+
3
+ * Пространство имен `widgets`
4
+ * Возможность изменять HTTP-метод, используемый в методах API
5
+
1
6
  ## 1.0.1 (13.08.2012)
2
7
 
3
8
  * Пространство имен `leads`
data/README.md CHANGED
@@ -178,6 +178,8 @@ VkontakteApi.configure do |config|
178
178
 
179
179
  # faraday-адаптер для сетевых запросов
180
180
  config.adapter = :net_http
181
+ # HTTP-метод для вызова методов API (:get или :post)
182
+ config.http_verb = :get
181
183
  # параметры для faraday-соединения
182
184
  config.faraday_options = {
183
185
  ssl: {
@@ -203,6 +205,8 @@ VkontakteApi.register_alias
203
205
 
204
206
  По умолчанию для HTTP-запросов используется `Net::HTTP`; можно выбрать [любой другой адаптер](https://github.com/technoweenie/faraday/blob/master/lib/faraday/adapter.rb), поддерживаемый `faraday`.
205
207
 
208
+ ВКонтакте [позволяет](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) использовать как `GET`-, так и `POST`-запросы при вызове методов API. По умолчанию `vkontakte_api` использует `GET`, но в настройке `http_verb` можно указать `:post`, чтобы совершать `POST`-запросы.
209
+
206
210
  При необходимости можно указать параметры для faraday-соединения - например, параметры прокси-сервера или путь к SSL-сертификатам.
207
211
 
208
212
  Чтобы сгенерировать файл с настройками по умолчанию в rails-приложении, можно воспользоваться генератором `vkontakte_api:install`:
@@ -222,6 +226,7 @@ $ rails generate vkontakte_api:install
222
226
 
223
227
  * метод, возвращающий права текущего токена в читабельной форме (используя `getUserSettings` и кэшируя результат)
224
228
  * сохранение параметра `expires_in` токена в объекте `VkontakteApi::Client` после авторизации через `VkontakteApi.authorize`
229
+ * `POST`-запросы по умолчанию
225
230
 
226
231
  ## Участие в разработке
227
232
 
@@ -7,6 +7,9 @@ VkontakteApi.configure do |config|
7
7
  # Faraday adapter to make requests with:
8
8
  # config.adapter = :net_http
9
9
 
10
+ # HTTP verb for API methods (:get or :post)
11
+ # config.http_verb = :get
12
+
10
13
  # Logging parameters:
11
14
  # log everything through the rails logger
12
15
  config.logger = Rails.logger
@@ -14,7 +14,7 @@ module VkontakteApi
14
14
  # @return [Hashie::Mash] Mashed server response.
15
15
  def call(method_name, args = {}, token = nil)
16
16
  flat_arguments = Utils.flatten_arguments(args)
17
- connection(:url => URL_PREFIX, :token => token).get(method_name, flat_arguments).body
17
+ connection(:url => URL_PREFIX, :token => token).send(VkontakteApi.http_verb, method_name, flat_arguments).body
18
18
  end
19
19
 
20
20
  # Faraday connection.
@@ -29,6 +29,7 @@ module VkontakteApi
29
29
  Faraday.new(url, VkontakteApi.faraday_options) do |builder|
30
30
  builder.request :oauth2, token unless token.nil?
31
31
  builder.request :multipart
32
+ builder.request :url_encoded
32
33
  builder.response :vk_logger
33
34
  builder.response :mashify
34
35
  builder.response :oj, :preserve_raw => true
@@ -6,7 +6,18 @@ module VkontakteApi
6
6
  # @note `VkontakteApi::Configuration` extends `VkontakteApi` so these methods should be called from the latter.
7
7
  module Configuration
8
8
  # Available options.
9
- OPTION_NAMES = [:app_id, :app_secret, :redirect_uri, :adapter, :faraday_options, :logger, :log_requests, :log_errors, :log_responses]
9
+ OPTION_NAMES = [
10
+ :app_id,
11
+ :app_secret,
12
+ :redirect_uri,
13
+ :adapter,
14
+ :http_verb,
15
+ :faraday_options,
16
+ :logger,
17
+ :log_requests,
18
+ :log_errors,
19
+ :log_responses
20
+ ]
10
21
 
11
22
  attr_accessor *OPTION_NAMES
12
23
 
@@ -17,6 +28,9 @@ module VkontakteApi
17
28
  # Default HTTP adapter.
18
29
  DEFAULT_ADAPTER = Faraday.default_adapter
19
30
 
31
+ # Default HTTP verb for API methods.
32
+ DEFAULT_HTTP_VERB = :get
33
+
20
34
  # Logger default options.
21
35
  DEFAULT_LOGGER_OPTIONS = {
22
36
  :requests => true,
@@ -38,6 +52,7 @@ module VkontakteApi
38
52
  # Reset all configuration options to defaults.
39
53
  def reset
40
54
  @adapter = DEFAULT_ADAPTER
55
+ @http_verb = DEFAULT_HTTP_VERB
41
56
  @faraday_options = {}
42
57
  @logger = ::Logger.new(STDOUT)
43
58
  @log_requests = DEFAULT_LOGGER_OPTIONS[:requests]
@@ -16,6 +16,7 @@
16
16
  - pages
17
17
  - stats
18
18
  - subscriptions
19
+ - widgets
19
20
  - leads
20
21
  - messages
21
22
  - status
@@ -1,4 +1,4 @@
1
1
  module VkontakteApi
2
2
  # Library version.
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
  end
@@ -31,6 +31,19 @@ describe VkontakteApi::API do
31
31
  it "returns the response body" do
32
32
  subject.call('apiMethod').should == @result
33
33
  end
34
+
35
+ it "uses an HTTP verb from VkontakteApi.http_verb" do
36
+ http_verb = stub("HTTP verb")
37
+ VkontakteApi.http_verb = http_verb
38
+
39
+ response = stub("Response", :body => stub)
40
+ @connection.should_receive(:send).with(http_verb, 'apiMethod', {}).and_return(response)
41
+ subject.call('apiMethod')
42
+ end
43
+
44
+ after(:each) do
45
+ VkontakteApi.reset
46
+ end
34
47
  end
35
48
 
36
49
  describe ".connection" do
@@ -24,6 +24,7 @@ describe VkontakteApi::Configuration do
24
24
  Configurable.app_id.should be_nil
25
25
  Configurable.app_secret.should be_nil
26
26
  Configurable.adapter.should == VkontakteApi::Configuration::DEFAULT_ADAPTER
27
+ Configurable.http_verb.should == VkontakteApi::Configuration::DEFAULT_HTTP_VERB
27
28
  Configurable.faraday_options.should == {}
28
29
 
29
30
  Configurable.logger.should be_a(Logger)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vkontakte_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-13 00:00:00.000000000 Z
12
+ date: 2012-09-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday