Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Библиотека для обращения к API социальных сетей со стороны сервера. Содержит методы API и средства определения текущей социальной сети.
Данная библиотека была создана в рамках проекта SocialFrame - Шаблон для IFrame приложений на базе Sinatra (Padrino). Но библиотеку можно также использовать и для Rails-приложений и других.
Библиотека решает следующие задачи:
Поддержка социальных сетей:
Поддерживаемые методы API:
gem install social
Для Gemfile
gem 'social'
Получение профиля пользователя (get user profile)
Social::Network(:ok).user.get_info(uid)
или
Social::Network::Vk.user.get_info(uid)
или отправка нотификации
Social::Network(social_type).notification.send(:message => msg, :uids => [ ... ])
Обращение к текущей социальной сети осуществляется после Глобального определения этого типа (см. ниже). При этом возможны следующие вызовы.
Social::Network.current.user.get_info(uid)
Инциализация по запросу (и по SocialPrefix)
Social::Env.init(params[:social_type])
SocialPrefix позволяет определять социальную сеть по строке запроса т.е.
Также пользоволяет решить проблему с показам аватаров пользователей в Одноклассниках, для которых в REFERRAL должно быть слово "odnoklassniki" или "odkl".
config.ru
builder = Social::Builder::produce(Example::Application)
run builder
При этом в параметры запроса добавляется ключ social_env со следующим содержанием
request.params['social_env'] = {
'prefix' => <SOCIAL_PREFIX>,
'type' => <SOCIAL_TYPE_NAME>,
'id' => <SOCIAL_TYPE_ID>
}
Например, при запросе /odkl/*
params[:social_env][:id] # => 1
params[:social_env][:prefix] # => 'odkl'
params[:social_env][:type] # => :ok
Для SinglePage приложения: Предпологается, что первый GET запрос приходит на URL из SocialPrefix, а последующие запросы идут уже без без SocialPrefix и тип соцсети берется из сессии и передается в метод Social::Env.init(<SOCIAL_TYPE>).
Для "Многостраничного" приложения: Предпологается, что все запросы все запросы осуществляются с помощью SocialPrefix
Помимо SocialPrefix определение соцсети можно осуществлять с помощью параметров запроса - SocialParam, если нет поддержки SocialPrefix. Например если запрос содержит параметры viewer_id и sid, то можно сказать что это соцсеть ВКонтакт.
Этот способ также предпологает использование Rack::Builder.
Осуществляет вызовом метода Social::Env.init_by_params, например
before_filter ->{ Social::Env.init_by_params(params) }
Определение конфигурации задает данные для обращения к соц.сети. К этим данным относятся, например, секретный ключ, публичный ключ, ID приложения.
По-умолчанию конфигурация загружается из конфигурационного файла (см. далее), но также конфигурацию можно задать первым вызовом #Network этого хеша, например
Social::Network(:ok, config_hash)
Или определить с помощью у объекта
Social::Network::Ok.instance.params = { config: config_hash }
Social::Network::Ok.instance.reload_config
или
Social::Network(:ok).params = { config: config_hash }
Social::Network(:ok).reload_config
Конфигурационный файл должен иметь имя "social.yml"
При использовании Rails конфигурационный файл должн находится в папаке
APP_ROOT/config
Также путь к папке с конфигурационным файлом может быть определен в переменной окружения "SOCIAL_CONFIG_PATH".
Конфигурационный файл может иметь следующее содержание
ok:
development:
api_server: 'http://api.odnoklassniki.ru/'
application_key: 'APPLICATION_KEY'
secret_key: 'SECRET_KEY'
production:
test:
vk:
development:
key: "KEY"
app_id: 123
production:
test:
Название окружение для чтения конфига задается через переменные окружения "APP_ENV", "RACK_ENV", "RAILS_ENV". По-умолчанию окружение "development".
FAQs
Unknown package
We found that social demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.