social 0.3.0 → 0.3.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 +4 -4
- data/README.md +68 -5
- data/lib/social.rb +7 -6
- data/lib/social/config.rb +0 -39
- data/lib/social/config/driver.rb +9 -0
- data/lib/social/config/driver/file.rb +42 -0
- data/lib/social/config/provider.rb +22 -0
- data/lib/social/env.rb +1 -1
- data/lib/social/network/base.rb +16 -8
- data/lib/social/network/graph/ok/base.rb +4 -1
- data/lib/social/network/graph/vk/base.rb +4 -1
- data/lib/social/network/ok.rb +11 -1
- data/lib/social/network/vk.rb +10 -1
- data/lib/social/networks.rb +3 -5
- data/lib/social/version.rb +1 -1
- metadata +5 -4
- data/lib/social/config/ok.rb +0 -22
- data/lib/social/config/vk.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d6c163dc76e920f4691c6d3555d27bf855add2c
|
4
|
+
data.tar.gz: d180dbf80378b05f4e953498551caea3909687ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3cd8bf8cb022574745256ff2eed2aa9e9e3e9c71870e0557d1c1a61af63fe2c99f410a37e39897f2d186c5f7848456a62be218b2226e9736eae3d73c1244faab
|
7
|
+
data.tar.gz: 28a732ef46c40ae158540f25508dd4634a80e047a75f463f7e444e9c398f105a288afe4e3a05a246c29d3c90ed348e66e87a3f2efaf9dff7404902402223a151
|
data/README.md
CHANGED
@@ -29,6 +29,13 @@ Social
|
|
29
29
|
|
30
30
|
gem 'social'
|
31
31
|
|
32
|
+
Концепция API
|
33
|
+
---------------------
|
34
|
+
|
35
|
+
- Интерфейс API социальной сети представлена одним объектом (синглтоном), чтобы иметь легкий доступ к этому API из разных мест без необходимости каждый раз конструировать объект.
|
36
|
+
- Интерфейс API социальной сети разделен на блоки которые представленны соответствующими цепочками вызова, например api.user.get_info
|
37
|
+
- Конфигурация API социальной сети должна каходится в файле (с учетом различных окруженйи), но также должна быть возможность переопределить ее простым объектом
|
38
|
+
|
32
39
|
Использование
|
33
40
|
---------------------
|
34
41
|
|
@@ -48,11 +55,12 @@ Social
|
|
48
55
|
|
49
56
|
Social::Network.current.user.get_info(uid)
|
50
57
|
|
58
|
+
Инциализация по запросу (и по SocialPrefix)
|
51
59
|
|
52
60
|
Глобальное определение типа социальной сети
|
53
61
|
---------------------
|
54
62
|
|
55
|
-
Social::Env.init(params[:
|
63
|
+
Social::Env.init(params[:social_type])
|
56
64
|
|
57
65
|
Определение соцсети с помощью SocialPrefix
|
58
66
|
---------------------
|
@@ -94,16 +102,71 @@ config.ru
|
|
94
102
|
Предпологается, что все запросы все запросы осуществляются с помощью
|
95
103
|
SocialPrefix
|
96
104
|
|
97
|
-
Определение соцсети с помощью
|
105
|
+
Определение соцсети с помощью SocialParam
|
98
106
|
---------------------
|
99
107
|
|
100
108
|
Помимо SocialPrefix определение соцсети можно осуществлять
|
101
|
-
с помощью параметров
|
102
|
-
параметры viewer_id и sid, то можно сказать что это
|
103
|
-
соцсеть ВКонтакт.
|
109
|
+
с помощью параметров запроса - SocialParam, если нет поддержки SocialPrefix. Например если запрос содержит параметры viewer_id и sid, то можно сказать что это соцсеть ВКонтакт.
|
104
110
|
|
105
111
|
Этот способ также предпологает использование Rack::Builder.
|
106
112
|
|
113
|
+
Глобальная инициализация окружения для SocialPrefix и SocialPrams
|
114
|
+
---------------------
|
115
|
+
|
116
|
+
Осуществляет вызовом метода Social::Env.init_by_params, например
|
117
|
+
|
118
|
+
before_filter ->{ Social::Env.init_by_params(params) }
|
119
|
+
|
120
|
+
Определение конфигурации
|
121
|
+
---------------------
|
122
|
+
|
123
|
+
Определение конфигурации задает данные для обращения к соц.сети. К этим данным относятся, например, секретный ключ, публичный ключ, ID приложения.
|
124
|
+
|
125
|
+
По-умолчанию конфигурация загружается из конфигурационного файла (см. далее), но также конфигурацию можно задать первым вызовом #Network этого хеша, например
|
126
|
+
|
127
|
+
Social::Network(:ok, config_hash)
|
128
|
+
|
129
|
+
Или определить с помощью у объекта
|
130
|
+
|
131
|
+
Social::Network::Ok.instance.params = { config: config_hash }
|
132
|
+
Social::Network::Ok.instance.reload_config
|
133
|
+
|
134
|
+
или
|
135
|
+
|
136
|
+
Social::Network(:ok).params = { config: config_hash }
|
137
|
+
Social::Network(:ok).reload_config
|
138
|
+
|
139
|
+
Определение конфигурации через конфигурационный файл
|
140
|
+
---------------------
|
141
|
+
|
142
|
+
Конфигурационный файл должен иметь имя "social.yml"
|
143
|
+
|
144
|
+
При использовании Rails конфигурационный файл должн находится в папаке
|
145
|
+
|
146
|
+
APP_ROOT/config
|
147
|
+
|
148
|
+
Также путь к папке с конфигурационным файлом может быть определен в переменной окружения "SOCIAL_CONFIG_PATH".
|
149
|
+
|
150
|
+
Конфигурационный файл может иметь следующее содержание
|
151
|
+
|
152
|
+
```yml
|
153
|
+
ok:
|
154
|
+
development:
|
155
|
+
api_server: 'http://api.odnoklassniki.ru/'
|
156
|
+
application_key: 'APPLICATION_KEY'
|
157
|
+
secret_key: 'SECRET_KEY'
|
158
|
+
production:
|
159
|
+
test:
|
160
|
+
vk:
|
161
|
+
development:
|
162
|
+
key: "KEY"
|
163
|
+
app_id: 123
|
164
|
+
production:
|
165
|
+
test:
|
166
|
+
```
|
167
|
+
|
168
|
+
Название окружение для чтения конфига задается через переменные окружения "APP_ENV", "RACK_ENV", "RAILS_ENV". По-умолчанию окружение "development".
|
169
|
+
|
107
170
|
TODO
|
108
171
|
---------------------
|
109
172
|
|
data/lib/social.rb
CHANGED
@@ -6,8 +6,9 @@ require 'social/determinant'
|
|
6
6
|
require 'social/determinant/social_prefix'
|
7
7
|
require 'social/determinant/request_param'
|
8
8
|
require 'social/config'
|
9
|
-
require 'social/config/
|
10
|
-
require 'social/config/
|
9
|
+
require 'social/config/driver'
|
10
|
+
require 'social/config/driver/file'
|
11
|
+
require 'social/config/provider'
|
11
12
|
require 'social/env'
|
12
13
|
require 'social/network'
|
13
14
|
require 'social/network/graph'
|
@@ -90,8 +91,8 @@ module Social
|
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
93
|
-
def request_session_token(params)
|
94
|
-
case request_social_type(params)
|
94
|
+
def request_session_token(params, type = nil)
|
95
|
+
case (type || request_social_type(params))
|
95
96
|
when :vk then "vk::#{params[:sid]}"
|
96
97
|
when :ok then "ok::#{params[:session_key]}"
|
97
98
|
else
|
@@ -99,8 +100,8 @@ module Social
|
|
99
100
|
end
|
100
101
|
end
|
101
102
|
|
102
|
-
def request_uid(params)
|
103
|
-
case request_social_type(params)
|
103
|
+
def request_uid(params, type = nil)
|
104
|
+
case (type || request_social_type(params))
|
104
105
|
when :vk then "vk::#{params[:user_id]}"
|
105
106
|
when :ok then "ok::#{params[:logged_user_id]}"
|
106
107
|
else
|
data/lib/social/config.rb
CHANGED
@@ -1,43 +1,4 @@
|
|
1
1
|
module Social
|
2
2
|
class Config
|
3
|
-
|
4
|
-
def initialize(network_name)
|
5
|
-
@network_name = network_name
|
6
|
-
@config_file_data = {}
|
7
|
-
end
|
8
|
-
|
9
|
-
def network_name
|
10
|
-
@network_name
|
11
|
-
end
|
12
|
-
|
13
|
-
def config
|
14
|
-
@config_data ||= load_config_file[@network_name]
|
15
|
-
end
|
16
|
-
|
17
|
-
def config_file_path=(new_path)
|
18
|
-
@config_file_path = new_path
|
19
|
-
@config = load_config_file if @config_data
|
20
|
-
end
|
21
|
-
|
22
|
-
def config_root=(new_root)
|
23
|
-
@config_root = new_root
|
24
|
-
end
|
25
|
-
|
26
|
-
def config_root
|
27
|
-
@config_root ||= File.join(Rails.root, 'config') if defined?(Rails)
|
28
|
-
@config_root ||= ENV['SOCIAL_CONFIG_ROOT']
|
29
|
-
@config_root ||= File.join('.', 'config')
|
30
|
-
end
|
31
|
-
|
32
|
-
def config_file_path
|
33
|
-
@config_file_path ||= ENV['SOCIAL_CONFIG_PATH']
|
34
|
-
@config_file_path ||= File.join(self.config_root, 'social.yml')
|
35
|
-
end
|
36
|
-
|
37
|
-
def load_config_file
|
38
|
-
@config_file_data[config_file_path] ||= YAML.load_file(config_file_path).with_indifferent_access
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
3
|
end
|
43
4
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Social::Config::Driver
|
2
|
+
class File < self
|
3
|
+
|
4
|
+
def initialize(network_name)
|
5
|
+
@network_name = network_name
|
6
|
+
@config_file_data = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def network_name
|
10
|
+
@network_name
|
11
|
+
end
|
12
|
+
|
13
|
+
def config_data
|
14
|
+
@config_data ||= load_config_file[@network_name]
|
15
|
+
end
|
16
|
+
|
17
|
+
def config_file_path=(new_path)
|
18
|
+
@config_file_path = new_path
|
19
|
+
@config = load_config_file if @config_data
|
20
|
+
end
|
21
|
+
|
22
|
+
def config_root=(new_root)
|
23
|
+
@config_root = new_root
|
24
|
+
end
|
25
|
+
|
26
|
+
def config_root
|
27
|
+
@config_root ||= ::File.join(Rails.root, 'config') if defined?(Rails)
|
28
|
+
@config_root ||= ENV['SOCIAL_CONFIG_ROOT']
|
29
|
+
@config_root ||= ::File.join('.', 'config')
|
30
|
+
end
|
31
|
+
|
32
|
+
def config_file_path
|
33
|
+
@config_file_path ||= ENV['SOCIAL_CONFIG_PATH']
|
34
|
+
@config_file_path ||= ::File.join(self.config_root, 'social.yml')
|
35
|
+
end
|
36
|
+
|
37
|
+
def load_config_file
|
38
|
+
@config_file_data[config_file_path] ||= YAML.load_file(config_file_path).with_indifferent_access
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Social::Config::Provider
|
2
|
+
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def factory_data(social_type, type = :file)
|
6
|
+
factory_driver(social_type, type).config_data[env]
|
7
|
+
end
|
8
|
+
|
9
|
+
def env
|
10
|
+
@env ||= ENV['APP_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
|
11
|
+
end
|
12
|
+
|
13
|
+
def factory_driver(social_type, type)
|
14
|
+
case type
|
15
|
+
when :file
|
16
|
+
Social::Config::Driver::File.new(social_type)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/lib/social/env.rb
CHANGED
@@ -17,7 +17,7 @@ module Social
|
|
17
17
|
|
18
18
|
def init_by_params(params)
|
19
19
|
unless social_type = Social.request_social_type(params)
|
20
|
-
raise "Can't find social
|
20
|
+
raise "Can't find social type into SocialEnv or SocialParams with params: #{params.inspect}"
|
21
21
|
else
|
22
22
|
init(social_type)
|
23
23
|
end
|
data/lib/social/network/base.rb
CHANGED
@@ -14,24 +14,32 @@ class Social::Network::Base
|
|
14
14
|
init_graph_for(root, list)
|
15
15
|
end
|
16
16
|
|
17
|
+
def reload_config
|
18
|
+
if self.params[:config].present?
|
19
|
+
@config = self.params[:config]
|
20
|
+
else
|
21
|
+
provider_type = self.params[:config_provider] || :file
|
22
|
+
@config = Social::Config::Provider.factory_data(social_type, provider_type)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def config
|
27
|
+
reload_config if @config.nil?
|
28
|
+
@config
|
29
|
+
end
|
30
|
+
|
17
31
|
def params
|
18
32
|
@params
|
19
33
|
end
|
20
34
|
|
21
|
-
def params
|
22
|
-
@params = params
|
23
|
-
self
|
35
|
+
def params=(params)
|
36
|
+
@params = params.with_indifferent_access
|
24
37
|
end
|
25
38
|
|
26
39
|
def param(key)
|
27
40
|
@params[key]
|
28
41
|
end
|
29
42
|
|
30
|
-
def param!(key, value)
|
31
|
-
@params[key] = value
|
32
|
-
self
|
33
|
-
end
|
34
|
-
|
35
43
|
protected
|
36
44
|
|
37
45
|
def init_params(params)
|
data/lib/social/network/ok.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
class Social::Network
|
2
2
|
class Ok < Base
|
3
|
-
|
3
|
+
|
4
|
+
def social_type
|
5
|
+
:ok
|
6
|
+
end
|
7
|
+
|
8
|
+
def safe_config(auth_params = {})
|
9
|
+
auth_params.merge \
|
10
|
+
:api_server => Social::Network(:ok).config[:api_server],
|
11
|
+
:application_key => Social::Network(:ok).config[:application_key],
|
12
|
+
:logged_user_id => auth_params['uid']
|
13
|
+
end
|
4
14
|
|
5
15
|
def rate
|
6
16
|
1
|
data/lib/social/network/vk.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
class Social::Network
|
2
2
|
class Vk < Base
|
3
|
-
|
3
|
+
|
4
|
+
def social_type
|
5
|
+
:vk
|
6
|
+
end
|
7
|
+
|
8
|
+
def safe_config(auth_params = {})
|
9
|
+
auth_params.merge \
|
10
|
+
:app_id => Social::Network(:vk).config['app_id'],
|
11
|
+
:logged_user_id => auth_params['uid']
|
12
|
+
end
|
4
13
|
|
5
14
|
def rate
|
6
15
|
6
|
data/lib/social/networks.rb
CHANGED
@@ -8,11 +8,9 @@ module Social
|
|
8
8
|
|
9
9
|
def site(network, params)
|
10
10
|
@domains[network.to_sym] ||= deploy(network)
|
11
|
-
@domains[network.to_sym].params
|
12
|
-
|
13
|
-
|
14
|
-
def sites
|
15
|
-
@domains
|
11
|
+
@domains[network.to_sym].params = params || {}
|
12
|
+
@domains[network.to_sym].reload_config
|
13
|
+
@domains[network.to_sym]
|
16
14
|
end
|
17
15
|
|
18
16
|
protected
|
data/lib/social/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: social
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazantsev Nickolay
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-core
|
@@ -169,8 +169,9 @@ files:
|
|
169
169
|
- lib/social.rb
|
170
170
|
- lib/social/balance.rb
|
171
171
|
- lib/social/config.rb
|
172
|
-
- lib/social/config/
|
173
|
-
- lib/social/config/
|
172
|
+
- lib/social/config/driver.rb
|
173
|
+
- lib/social/config/driver/file.rb
|
174
|
+
- lib/social/config/provider.rb
|
174
175
|
- lib/social/determinant.rb
|
175
176
|
- lib/social/determinant/request_param.rb
|
176
177
|
- lib/social/determinant/social_prefix.rb
|
data/lib/social/config/ok.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
class Social::Config
|
2
|
-
module Ok
|
3
|
-
|
4
|
-
def config
|
5
|
-
|
6
|
-
unless @config
|
7
|
-
@env = ENV['APP_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
|
8
|
-
@config_ins = Social::Config.new(:ok)
|
9
|
-
@config = @config_ins.config[@env]
|
10
|
-
end
|
11
|
-
|
12
|
-
@config
|
13
|
-
end
|
14
|
-
|
15
|
-
def safe_config(auth_params = {})
|
16
|
-
auth_params.merge \
|
17
|
-
:api_server => Social::Network(:ok).config[:api_server],
|
18
|
-
:application_key => Social::Network(:ok).config[:application_key],
|
19
|
-
:logged_user_id => auth_params['uid']
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/lib/social/config/vk.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
class Social::Config
|
2
|
-
module Vk
|
3
|
-
|
4
|
-
def config
|
5
|
-
|
6
|
-
unless @config
|
7
|
-
@env = ENV['APP_ENV'] || ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
|
8
|
-
@config_ins = Social::Config.new(:vk)
|
9
|
-
@config = @config_ins.config[@env]
|
10
|
-
end
|
11
|
-
|
12
|
-
@config
|
13
|
-
end
|
14
|
-
|
15
|
-
def safe_config(auth_params = {})
|
16
|
-
auth_params.merge \
|
17
|
-
:app_id => Social::Network(:vk).config['app_id'],
|
18
|
-
:logged_user_id => auth_params['uid']
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|