smart_vk_api 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc114237623563fcc0840b489143865529dc4353
4
- data.tar.gz: 9d1c7c33d2a3da851e6d21db9d7245506b92dfc5
3
+ metadata.gz: 8354ecbe8304332b16d0b43a4c69060d19ef0cf5
4
+ data.tar.gz: fafd8588f05532cb2609a04a36ec0f9e4099edc5
5
5
  SHA512:
6
- metadata.gz: 586a88970465808274559974e6a2d267caa5e8d980676451075a19ebab55688475cbd001e06f83e7b0b0728a46e64349dc5528fd04763c2efb10f21610be9aef
7
- data.tar.gz: 50b3e36b5f5a8c420274b1927962dbb378451757f5eaeb5a32a862a5767ca64fd3d30463dd5e25a810e68872fd61ecfd107bc8caa19a663a7fb9e03a4e0ddb10
6
+ metadata.gz: 9a23dfe06a3160339651dbc49244401d8d9202bf6bc86c3d2f1c11c5822869d7494fc7cd1ec22e2453a5269433dfcb7dd001e25e6357a19a6181227d11294302
7
+ data.tar.gz: 4cc3ebfc7cc1aea74f878d46c1635d343a6efadc50077bab16b6fd12ce9c86a3102220e8300ab6449d592b4c0133372f07198edc7e0ed328f2235189fe146418
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## Версия 1.1.1
2
+
3
+ * В `Proxy` обработка методов API в camelCase нотации. Например, вызвать `users.isAppUser` можно так:
4
+
5
+ ```ruby
6
+ SmartVkApi.vk.users.is_app_user(:user_id => 'kimrgrey')
7
+ ```
1
8
 
2
9
  ## Версия 1.1.0
3
10
 
data/README.md CHANGED
@@ -39,6 +39,58 @@ $ bundle install
39
39
  $ gem install smart_vk_api
40
40
  ```
41
41
 
42
+ ## Прямое использование API
43
+
44
+ В простейшем случае можно вызвать произвольный метод VK API и передать ему параметры следующим образом:
45
+
46
+ ```ruby
47
+ SmartVkApi.call('users.get', :user_ids => 'kimrgrey') # [{:uid=>3710412, ...}]
48
+ ```
49
+
50
+ Для вызова нескольких методов разумно создать враппер один раз и использовать его повторно:
51
+
52
+ ```ruby
53
+ vk = SmartVkApi.vk
54
+ vk.call('users.get', :user_ids => 'kimrgrey') # [{:uid=>3710412, ...}]
55
+ vk.call('photos.get', :owner_id => '3710412', :album_id => 'wall')
56
+ ```
57
+
58
+ По умолчанию, `access_token` не передается, так что для вызова доступны только публичные методы. При попытке вызвать метод, требующий наличие токена, возникнет исключение `SmartVkApi::MethodCallError`. Например:
59
+
60
+ ```ruby
61
+ SmartVkApi.call('wall.get', :owner_id => '3710412') # SmartVkApi::MethodCallError: {"error":{..., "error_msg":"Access denied: user hid his wall from accessing from outside"}}
62
+ ```
63
+
64
+ Чтобы вызвать приватные методы, можно задать глобальный конфиг, токен из которого будет использоваться по умолчанию, если он задан:
65
+
66
+ ```ruby
67
+ SmartVkApi.configure do |config|
68
+ config.access_token = ACCESS_TOKEN
69
+ end
70
+ ```
71
+
72
+ Если при этом передать другой `access_token` в качестве параметра для метода `call`, ему будет отдано предпочтение:
73
+
74
+ ```ruby
75
+ SmartVkApi.call('users.get', :user_ids => 'kimrgrey', :access_token => ANOTHER_ACCESS_TOKEN)
76
+ ```
77
+
78
+ ## Проксирующий объект
79
+
80
+ Вместо прямых обращений к API через передачу имени метода в качестве параметра для `call` можно использовать более удобный вариант, позволяющий вызывать методы VK API как собственные методы враппера. Пример:
81
+
82
+ ```ruby
83
+ vk = SmartVkApi.vk
84
+ vk.users.get(:user_ids => 'kimrgrey')
85
+ ```
86
+
87
+ Токен доступа, как и для прямых вызовов, можно задать в конфиге или передать в качестве параметра метода.
88
+
89
+ ```ruby
90
+ vk = SmartVkApi.vk
91
+ vk.users.get(:user_ids => 'kimrgrey', :access_token => ACCESS_TOKEN)
92
+ ```
93
+
42
94
  ## Как помочь в разработке?
43
95
 
44
96
  Все как обычно:
@@ -12,12 +12,19 @@ module SmartVkApi
12
12
  attr_accessor :vk
13
13
  attr_accessor :scope
14
14
 
15
+ def self.camelcase(method_name)
16
+ result = method_name.to_s.split('_').map(&:capitalize).join
17
+ result[0] = result[0].downcase
18
+ result
19
+ end
20
+
15
21
  def initialize(vk, scope)
16
22
  self.vk = vk
17
23
  self.scope = scope
18
24
  end
19
25
 
20
26
  def method_missing(method_name, *arguments, &block)
27
+ method_name = Proxy.camelcase(method_name)
21
28
  vk.call("#{scope}.#{method_name}", arguments.first)
22
29
  end
23
30
 
@@ -1,3 +1,3 @@
1
1
  module SmartVkApi
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
data/spec/methods_spec.rb CHANGED
@@ -26,6 +26,12 @@ describe SmartVkApi::VK do
26
26
  vk.users.get({:user_ids => "kimrgrey"})
27
27
  expect(WebMock).to have_requested(:get, "https://api.vk.com/method/users.get?user_ids=kimrgrey")
28
28
  end
29
+
30
+ it 'should convert method name using CamelCase' do
31
+ stub_request(:get, "https://api.vk.com/method/users.isAppUser?user_id=kimrgrey").to_return(:status => 200, :body => default_response_body.to_json)
32
+ vk.users.is_app_user(:user_id => 'kimrgrey')
33
+ expect(WebMock).to have_requested(:get, "https://api.vk.com/method/users.isAppUser?user_id=kimrgrey")
34
+ end
29
35
  end
30
36
 
31
37
  describe 'configuration' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_vk_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Tsvetkov