smart_vk_api 1.1.0 → 1.1.1

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