vkontakte 0.0.2 → 0.0.3

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/Gemfile CHANGED
@@ -8,6 +8,9 @@ gem "i18n"
8
8
  gem "rspec", "~> 2.6.0", :require => "spec"
9
9
  gem "fakeweb"
10
10
 
11
+ gem "rake"
12
+ gem "rdoc"
13
+
11
14
  # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
12
15
  # gem 'ruby-debug'
13
16
  # gem 'ruby-debug19'
@@ -1,16 +1,16 @@
1
1
  = Vkontakte
2
2
 
3
- The easiest way to access Vkontakte API and some other utils.
3
+ The easiest way to access Vkontakte API and some other utils.
4
4
  More info about API:
5
5
 
6
- 1. http://vkontakte.ru/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
6
+ 1. 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
7
7
 
8
- 2. http://vkontakte.ru/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
8
+ 2. 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
9
9
 
10
10
  3. 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
11
11
 
12
12
  == Install
13
-
13
+
14
14
  gem 'vkontakte'
15
15
 
16
16
  == Configure
@@ -22,7 +22,7 @@ More info about API:
22
22
  config.debug = false
23
23
  config.logger = File.open(Rails.root.join('log', 'vkontakte.log'), "a")
24
24
  end
25
-
25
+
26
26
  == Usage
27
27
 
28
28
  === User API by access_token
@@ -31,27 +31,29 @@ More info about API:
31
31
  user.fetch # {"response"=>[{"uid"=>2592709, ...
32
32
 
33
33
  Profile
34
-
35
- user.profile.isAppUser() # {"response"=>"1"}
36
- user.profile.getUserBalance()
37
- user.profile.getUserSettings()
34
+
35
+ user.profile.isAppUser # {"response"=>"1"}
36
+ user.profile.getUserBalance
37
+ user.profile.getUserSettings
38
38
  user.profile.likesGetList(:type => 'post')
39
39
 
40
40
  Photos
41
41
 
42
- user.photos.getAlbums()
43
- user.photos.getAlbumsCount()
42
+ user.photos.getAlbums
43
+ user.photos.getAlbumsCount
44
44
  user.photos.get(:aid => 'album_id')
45
45
 
46
46
  Groups
47
47
 
48
- user.groups.get()
48
+ user.groups.get
49
49
  user.groups.isMember(:gid => 'group_id')
50
+ user.groups.join(:gid => 1)
51
+ user.groups.leave(:gid => 1)
50
52
 
51
53
  Friends
52
-
53
- user.friends.get()
54
- user.friends.getOnline()
54
+
55
+ user.friends.get
56
+ user.friends.getOnline
55
57
 
56
58
  === Secure API
57
59
 
@@ -66,7 +68,7 @@ Check if auth_key is valid:
66
68
  def index
67
69
  @app = Vkontakte::App::Iframe.new
68
70
  @app.params = params
69
-
71
+
70
72
  if @app.valid_auth_key?
71
73
  session[:viewer_id] = params[:viewer_id]
72
74
  else
@@ -5,26 +5,27 @@ require 'active_support/core_ext/string'
5
5
  module Vkontakte
6
6
  autoload :Config, 'vkontakte/config'
7
7
  autoload :Utils, 'vkontakte/utils'
8
-
8
+
9
9
  module App
10
10
  autoload :Base, 'vkontakte/app/base'
11
11
  autoload :Iframe, 'vkontakte/app/iframe'
12
12
  autoload :Secure, 'vkontakte/app/secure'
13
13
  autoload :User, 'vkontakte/app/user'
14
14
  end
15
-
15
+
16
16
  module Api
17
17
  autoload :Base, 'vkontakte/api/base'
18
- autoload :Photos, 'vkontakte/api/photos'
19
18
  autoload :Friends, 'vkontakte/api/friends'
20
19
  autoload :Groups, 'vkontakte/api/groups'
21
- autoload :Secure, 'vkontakte/api/secure'
20
+ autoload :Likes, 'vkontakte/api/likes'
21
+ autoload :Photos, 'vkontakte/api/photos'
22
22
  autoload :Profile, 'vkontakte/api/profile'
23
+ autoload :Secure, 'vkontakte/api/secure'
23
24
  end
24
-
25
+
25
26
  mattr_accessor :config
26
27
  @@config = Config.new
27
-
28
+
28
29
  def self.setup(&block)
29
30
  yield config
30
31
  end
@@ -2,20 +2,20 @@ module Vkontakte
2
2
  module Api
3
3
  class Base
4
4
  attr_accessor :app, :default_params
5
-
5
+
6
6
  delegate :call, :to => :app
7
-
7
+
8
8
  def initialize(base)
9
9
  @app = base
10
10
  end
11
-
11
+
12
12
  def default_params
13
13
  @default_params ||= {}
14
14
  end
15
-
15
+
16
16
  def call(method_name, params = {})
17
17
  params = default_params.merge(params)
18
- @app.call(method_name, params)
18
+ @app.call(method_name, params)['response']
19
19
  end
20
20
  end
21
21
  end
@@ -1,7 +1,7 @@
1
1
  module Vkontakte
2
2
  module Api
3
3
  module Friends
4
-
4
+
5
5
  def self.included(base)
6
6
  base.class_eval do
7
7
  define_method :friends do
@@ -9,29 +9,29 @@ module Vkontakte
9
9
  end
10
10
  end
11
11
  end
12
-
12
+
13
13
  class Standart < Api::Base
14
- # Возвращает список идентификаторов друзей пользователя или
15
- # расширенную информацию о друзьях пользователя (при использовании параметра fields).
16
- # http://vkontakte.ru/developers.php?oid=-1&p=friends.get
14
+ # Возвращает список идентификаторов друзей пользователя или
15
+ # расширенную информацию о друзьях пользователя (при использовании параметра fields).
16
+ # http://vk.com/developers.php?oid=-1&p=friends.get
17
17
  #
18
18
  def get(options = {})
19
19
  call('friends.get', options)
20
20
  end
21
-
22
- # Возвращает список идентификаторов друзей текущего пользователя, которые установили данное приложение.
21
+
22
+ # Возвращает список идентификаторов друзей текущего пользователя, которые установили данное приложение.
23
23
  #
24
24
  def getAppUsers(options = {})
25
25
  call('friends.getAppUsers', options)
26
26
  end
27
-
28
- # Возвращает список идентификаторов, находящихся на сайте друзей, текущего пользователя.
27
+
28
+ # Возвращает список идентификаторов, находящихся на сайте друзей, текущего пользователя.
29
29
  #
30
30
  def getOnline(options = {})
31
31
  call('friends.getOnline', options)
32
32
  end
33
-
34
- # Возвращает список идентификаторов общих друзей между парой пользователей.
33
+
34
+ # Возвращает список идентификаторов общих друзей между парой пользователей.
35
35
  #
36
36
  def getMutual(options = {})
37
37
  call('friends.getMutual', options)
@@ -1,7 +1,7 @@
1
1
  module Vkontakte
2
2
  module Api
3
3
  module Groups
4
-
4
+
5
5
  def self.included(base)
6
6
  base.class_eval do
7
7
  define_method :groups do
@@ -9,32 +9,46 @@ module Vkontakte
9
9
  end
10
10
  end
11
11
  end
12
-
12
+
13
13
  class Standart < Api::Base
14
14
  # Возвращает список групп указанного пользователя.
15
- # http://vkontakte.ru/developers.php?oid=-1&p=groups.get
15
+ # http://vk.com/developers.php?oid=-1&p=groups.get
16
16
  #
17
17
  def get(options = {})
18
18
  call('groups.get', options)
19
19
  end
20
-
21
- # Возвращает информацию о заданной группе или о нескольких группах.
20
+
21
+ # Возвращает информацию о заданной группе или о нескольких группах.
22
22
  #
23
23
  def getById(options = {})
24
24
  call('groups.getById', options)
25
25
  end
26
-
27
- # Возвращает информацию о том является ли пользователь участником заданной группы.
26
+
27
+ # Возвращает информацию о том является ли пользователь участником заданной группы.
28
28
  #
29
29
  def isMember(options = {})
30
30
  call('groups.isMember', options)
31
31
  end
32
-
33
- # Возвращает список участников группы.
32
+
33
+ # Возвращает список участников группы.
34
34
  #
35
35
  def getMembers(options = {})
36
36
  call('groups.getMembers', options)
37
37
  end
38
+
39
+ # Добавляет как участника группы
40
+ # http://vk.com/developers.php?o=-1&p=groups.join
41
+ #
42
+ def join(options = {})
43
+ call('groups.join', options)
44
+ end
45
+
46
+ # Добавляет как участника группы
47
+ # http://vk.com/developers.php?o=-1&p=groups.leave
48
+ #
49
+ def leave(options = {})
50
+ call('groups.leave', options)
51
+ end
38
52
  end
39
53
  end
40
54
  end
@@ -0,0 +1,28 @@
1
+ module Vkontakte
2
+ module Api
3
+ module Likes
4
+
5
+ def self.included(base)
6
+ base.class_eval do
7
+ define_method :likes do
8
+ @likes ||= Standart.new(self)
9
+ end
10
+ end
11
+ end
12
+
13
+ class Standart < Api::Base
14
+ # http://vk.com/developers.php?oid=-1&p=likes.getList
15
+ #
16
+ def getList(options = {})
17
+ call('likes.getList', options)
18
+ end
19
+
20
+ # http://vk.com/developers.php?o=-1&p=likes.isLiked
21
+ #
22
+ def isLiked(options = {})
23
+ call('likes.isLiked', options)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,7 +1,7 @@
1
1
  module Vkontakte
2
2
  module Api
3
3
  module Secure
4
-
4
+
5
5
  def self.included(base)
6
6
  base.class_eval do
7
7
  define_method :secure do
@@ -9,62 +9,62 @@ module Vkontakte
9
9
  end
10
10
  end
11
11
  end
12
-
12
+
13
13
  class Standart < Api::Base
14
-
14
+
15
15
  def default_options
16
- {
17
- :timestamp => Time.now.utc.to_i,
16
+ {
17
+ :timestamp => Time.now.utc.to_i,
18
18
  :random => Kernel.rand(10000),
19
- :client_secret => Vkontakte.config.app_secret
19
+ :client_secret => Vkontakte.config.app_secret
20
20
  }
21
21
  end
22
-
22
+
23
23
  # Отправляет уведомление пользователю.
24
- # http://vkontakte.ru/developers.php?oid=-1&p=secure.sendNotification
24
+ # http://vk.com/developers.php?oid=-1&p=secure.sendNotification
25
25
  #
26
26
  def sendNotification(options = {})
27
27
  options = default_options.merge(options)
28
28
  call('secure.sendNotification', options)
29
29
  end
30
-
31
- # Возвращает платежный баланс (счет) приложения в сотых долях голоса.
30
+
31
+ # Возвращает платежный баланс (счет) приложения в сотых долях голоса.
32
32
  #
33
33
  def getAppBalance(options = {})
34
34
  options = default_options.merge(options)
35
35
  call("secure.getAppBalance", options)
36
36
  end
37
-
38
- # Возвращает баланс пользователя на счету приложения в сотых долях голоса.
37
+
38
+ # Возвращает баланс пользователя на счету приложения в сотых долях голоса.
39
39
  #
40
40
  def getBalance(options = {})
41
41
  options = default_options.merge(options)
42
42
  call("secure.getBalance", options)
43
43
  end
44
-
44
+
45
45
  # Списывает голоса со счета пользователя на счет приложения (в сотых долях).
46
46
  #
47
47
  def withdrawVotes(options = {})
48
48
  options = default_options.merge(options)
49
49
  call("secure.withdrawVotes", options)
50
50
  end
51
-
52
- # Выводит историю транзакций по переводу голосов между пользователями и приложением.
51
+
52
+ # Выводит историю транзакций по переводу голосов между пользователями и приложением.
53
53
  #
54
54
  def getTransactionsHistory(options = {})
55
55
  options = default_options.merge(options)
56
56
  call("secure.getTransactionsHistory", options)
57
57
  end
58
-
59
- # Поднимает пользователю рейтинг от имени приложения.
58
+
59
+ # Поднимает пользователю рейтинг от имени приложения.
60
60
  #
61
61
  def addRating(options = {})
62
62
  options = default_options.merge(options)
63
63
  call("secure.addRating", options)
64
64
  end
65
-
66
- # Устанавливает счетчик, который выводится пользователю жирным шрифтом в левом меню.
67
- # Это происходит только в том случае, если пользователь добавил приложение в левое меню со страницы приложения,
65
+
66
+ # Устанавливает счетчик, который выводится пользователю жирным шрифтом в левом меню.
67
+ # Это происходит только в том случае, если пользователь добавил приложение в левое меню со страницы приложения,
68
68
  # списка приложений или настроек.
69
69
  #
70
70
  def setCounter(options = {})
@@ -4,84 +4,83 @@ module Vkontakte
4
4
  module App
5
5
  class Base
6
6
  include ::HTTParty
7
-
8
- base_uri "https://api.vkontakte.ru"
7
+
8
+ base_uri "https://api.vk.com"
9
9
  format Vkontakte.config.format
10
10
  debug_output Vkontakte.config.logger
11
-
11
+
12
12
  attr_accessor :auth
13
-
13
+
14
14
  def initialize(app_id = nil, app_secret = nil)
15
15
  @config = {
16
- :app_id => (app_id || Vkontakte.config.app_id),
16
+ :app_id => (app_id || Vkontakte.config.app_id),
17
17
  :app_secret => (app_secret || Vkontakte.config.app_secret)
18
18
  }
19
19
  end
20
-
21
- # http://vkontakte.ru/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
20
+
21
+ # 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
22
22
  # Site auth:
23
- # https://api.vkontakte.ru/oauth/access_token?
23
+ # https://oauth.vk.com/access_token?
24
24
  # client_id=APP_ID&
25
25
  # client_secret=APP_SECRET&
26
26
  # code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a
27
27
  #
28
28
  # Server auth:
29
- # https://api.vkontakte.ru/oauth/access_token?
30
- # client_id=' + APP_ID + '&client_secret=' + APP_SECRET + '&grant_type=client_credentials'
29
+ # https://oauth.vk.com/access_token?client_id=' + APP_ID + '&client_secret=' + APP_SECRET + '&grant_type=client_credentials'
31
30
  #
32
31
  # Response:
33
32
  # {"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, "user_id":6492}
34
33
  #
35
- def authorize(code = nil, options = {})
36
- options = {
37
- :client_id => @config[:app_id],
34
+ def authorize(code = nil, params = {})
35
+ params = {
36
+ :client_id => @config[:app_id],
38
37
  :client_secret => @config[:app_secret],
39
38
  :code => code
40
- }.merge(options)
41
-
39
+ }.merge(params)
40
+
42
41
  # Server auth
43
- if options[:code].blank?
44
- options.delete(:code)
45
- options[:grant_type] = 'client_credentials'
42
+ if params[:code].blank?
43
+ params.delete(:code)
44
+ params[:grant_type] = 'client_credentials'
46
45
  end
47
-
48
- @auth = get("/oauth/access_token", options)
46
+
47
+ @auth = get("/access_token", {:query => params, :base_uri => "https://oauth.vk.com"})
49
48
  end
50
-
49
+
51
50
  # Check if app is authorized
52
51
  #
53
52
  def authorized?
54
53
  auth && auth['access_token']
55
54
  end
56
-
57
- # Выполнение запросов к API
58
- # https://api.vkontakte.ru/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
55
+
56
+ # Выполнение запросов к API
57
+ # https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
59
58
  # METHOD_NAME – название метода из списка функций API,
60
59
  # PARAMETERS – параметры соответствующего метода API,
61
- # ACCESS_TOKEN – ключ доступа, полученный в результате успешной авторизации приложения.
60
+ # ACCESS_TOKEN – ключ доступа, полученный в результате успешной авторизации приложения.
62
61
  # Example:
63
- # https://api.vkontakte.ru/method/getProfiles?uid=66748&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3
62
+ # https://api.vk.com/method/getProfiles?uid=66748&access_token=533bacf01e11f55b536a565b57531ac114461ae8736d6506a3
64
63
  #
65
- # More info: http://vkontakte.ru/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
64
+ # More info: 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
66
65
  #
67
66
  def call(method_name, params = {})
68
67
  params[:access_token] ||= @auth['access_token'] if authorized?
69
-
68
+
70
69
  unless params[:access_token].blank?
71
- get("/method/#{method_name}", params)
70
+ get("/method/#{method_name}", {:query => params, :base_uri => "https://api.vk.com"})
72
71
  else
73
72
  raise VkException.new(method_name, {
74
- :error => 'access_token is blank',
73
+ :error => 'access_token is blank',
75
74
  :error_description => 'You need first authorize app before call API methods.'
76
75
  })
77
76
  end
78
77
  end
79
-
78
+
80
79
  protected
81
-
80
+
82
81
  def get(method_name, options = {})
83
- response = self.class.get(method_name, :query => options)
84
-
82
+ response = self.class.get(method_name, options)
83
+
85
84
  if response['error']
86
85
  raise VkException.new(method_name, response)
87
86
  else
@@ -89,7 +88,7 @@ module Vkontakte
89
88
  end
90
89
  end
91
90
  end
92
-
91
+
93
92
  # Errors
94
93
  # {"error":"invalid_grant","error_description":"Code is expired."}
95
94
  # {"error":{"error_code":5,"error_msg":"User authorization failed: invalid application type","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"getProfiles"},{"key":"uid","value":"66748"},{"key":"access_token","value":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3"}]}}
@@ -98,13 +97,13 @@ module Vkontakte
98
97
  def initialize(method_name, options)
99
98
  error_hash = options.symbolize_keys
100
99
  @message = "Error in #{method_name}: "
101
-
100
+
102
101
  if error_hash[:error].is_a?(Hash)
103
102
  @message += error_hash[:error].inspect
104
103
  else
105
104
  @message += [error_hash[:error], error_hash[:error_description]].join('-')
106
105
  end
107
-
106
+
108
107
  super @message
109
108
  end
110
109
  end