Skip to content

后端接口设计

李大狗 edited this page Sep 17, 2022 · 11 revisions

Soul-Card 后端使用加载在 FaaS 上的 SoulCard Snippets

https://github.com/WeLightProject/tai_shang_micro_faas_system

How to Use Snippets?

curl --location --request POST 'https://faasbyleeduckgo.gigalixirapp.com/api/v1/run?name=[ModuleName]&func_name=[func_name]' \
--header 'Content-Type: application/json' \
--data-raw '{
 "params": [params_list]
}'

SoulCard.UserManager

用户管理模块。

  • create_user(info, "dao" | "user" , addr, msg, signature)

直接创建用户,需要经过签名正确性的校验与msg时间戳的校验。

  • create_user(info, "user", addr, msg, signature, inviter_addr, invatation)

通过邀请链接创建用户,会校验邀请链接的合法性。

  • update_user(info, role, addr, msg, signature)

更新用户信息。

  • get_user(addr)

通过地址拿到用户信息

  • get_role_map("dao")

拿到所有 dao 的信息。

  • get_role_list("dao", "addr" | "name")

拿到所有 dao addr 或 dao name。

SoulCard.InvitationManager

邀请管理模块。

  • gen_invitation(addr, msg, signature)

创建邀请。

  • check_invitation(addr, invitation)

检查邀请是否合法。

SoulCard.DataHandler

数据处理模块。

  • rand_msg()

拿到一个指定格式的随机字符串用于签名验证。

  • check_format(data, "dao" | "user")

查看数据格式是否正确。

  • get_github_white_map()

拿到 Github 白名单地图。

  • analyze_github(addr, username_or_userid)

分析该用户是否在白名单中,可以使用唯一的github_id,也可以使用用户名。

  • analyze_github(addr, username_or_userid, "only_org")

经检查该用户是否为组织提交过代码(仅限于白名单中的 Repos),而不检查每个仓库。

SoulCard.IpfsInteractor

  • get_data(ipfs_cid)

从 ifps 上拿数据

  • put_data(addr, data, msg, signature)

data is a base64-encoded webpage. the upload limit is 500_000 bit = 62.5 kb

SoulCard.Test

测试用例合集