Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

wework-next

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wework-next

  • 1.2.6
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Wechat Work 「企业微信」

Wework is a ruby API wrapper for wechat work「企业微信」.

企业微信 API 文档

CircleCI Gem Version

Installation

Add this line to your application's Gemfile:

gem 'wework'

And then execute:

$ bundle

Or install it yourself as:

$ gem install wework

Usage

初始化

Wework.configure do |config|
  config.redis = Redis.new(host: ENV['REDIS_HOST'], port: ENV['REDIS_PORT'], db: ENV['REDIS_CACHE_DB'])   # redis
  config.http_timeout_options = {write: 15, read: 15, connect: 10}                                        # 请求超时
  config.expired_shift_seconds = 180                                                                      # access token 有效期偏移量 (时间有效期 - 偏移量)
end

第三方应用

1). 初始化套件接口 Wework::Api::Suite

$wework_suite = Wework::Api::Suite.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 应用服务商 CorpID
  suite_id: ENV['WEWORK_SUITE_ID'],                         # SuiteID
  encoding_aes_key: ENV['WEWORK_SUITE_ENCODING_AES_KEY'],   # EncodingAESKey
  suite_token: ENV['WEWORK_SUITE_TOKEN'],                   # Token
  suite_secret: ENV['WEWORK_SUITE_SECRET']                  # Secret
)

2). 获取第三方应用接口 Wework::Api::Agent

agent_api = $wework_suite.corp(
              corp_id,                                      # 授权企业 CorpID
              permanent_code                                # 永久授权码
            ).agent(agent_id)

3). 第三方应用回调协议

获取加密数据

encrypt_str = if params[:xml].present?
                params[:xml]['Encrypt']
              else
                Hash.from_xml(request.raw_post)['xml']['Encrypt']
              end

#首次校验接口 encrpt_str = params[:echostr]

消息签名

$wework_suite.signature(timestamp, nonce, encrypt_str)

消息解密

$wework_suite.msg_decrypt(encrypt_data)

自建应用

初始化接口 Wework::Api::Agent

$agent_api = Wework::Api::Agent.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 企业 CorpID
  agent_id: ENV['WEWORK_APPID'],                            # AgentId
  secret: ENV['DEMO_APP_SECRET']                            # Secret
)

通讯录同步

初始化接口 Wework::Api::Contact

$contact_api = Wework::Api::Contact.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 企业 CorpID
  secret: ENV['DEMO_APP_SECRET']                            # 通讯录同步 Secret
)

应用服务商接口

初始化

$provider_api = Wework::Api::Provider.new(
  corp_id: ENV['WEWORK_PROVIDER_CORPID'],                     # 应用服务商 CorpID
  secret: ENV['WEWORK_PROVIDER_SECRET'],                      # Secret
  token: ENV['WEWORK_PROVIDER_TOKEN'],
  encoding_aes_key: ENV['WEWORK_PROVIDER_ENCODING_AES_KEY']
)

回调接口消息加解密参考「第三方应用回调协议」

小程序 encryptedData 解密

require "openssl"
CIPHER = 'AES-128-CBC'.freeze

cipher = OpenSSL::Cipher.new(CIPHER)
cipher.decrypt
cipher.key = Base64.decode64(session_key)
cipher.iv = Base64.decode64(iv)
encrypted = Base64.decode64(encryptedData)
data = cipher.update(encrypted) + cipher.final
values = JSON.parse data

已实现接口列表

Wework::Api::Methods::Agent

Wework::Api::Methods::User

Wework::Api::Methods::Tag

Wework::Api::Methods::Department

Wework::Api::Methods::Message

Wework::Api::Methods::Appchat

Wework::Api::Methods::Media

Wework::Api::Methods::Menu

Wework::Api::Methods::Approval

Wework::Api::Methods::Checkin

Wework::Api::Methods::Batch

Wework::Api::Methods::Provider

Wework::Api::Methods::Service

Contributing

  • Fork Wework on GitHub
  • Make your changes
  • Ensure all tests pass (bundle exec rake)
  • Send a pull request
  • If we like them we'll merge them
  • If we've accepted a patch, feel free to ask for commit access!

License

Copyright (c) 2018 MyColorway. See LICENSE.txt for further details.

FAQs

Package last updated on 30 Mar 2024

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc