# sdk-csharp
**Repository Path**: pyfxl/sdk-csharp
## Basic Information
- **Project Name**: sdk-csharp
- **Description**: Gokuai Enterprise C# SDK
- **Primary Language**: C#
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-03-13
- **Last Updated**: 2024-03-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#够快.NET SDK使用说明
版本:1.0.0.4
创建:2013-09-09
## 引用
1.将**GokuaiNetSDK.dll**库文件引用为进项目
2.在**GokuaiNetSDK.XML**对SDK里调用的类做了简单的注释,确保与dll文件放在同一目下,调用SDK时方便查看
## 命名空间及类说明
1. **GoKuai_EntSDK**命名空间:
(1) **GokuaiEngine**是调用接口主要使用的类;
(2) **SearchResult**是**GokuaiEngine**的派生类,主要用于做搜索结果的保存、删除和重现。
2. **GoKuai_EntSDK.Data**命名空间:
(1) **Condition**是构建搜索条件所要使用的类,设置参数以后,然后使用对象里的**ToJsonString**方法,可以将对象转化为json字符串,方便调用**Search**方法传参(详细见下文方法调用或者**GokuaiEngineDemo**解决方案);
(2) **Collaboration**是添加共享、删除共享、编辑共享,所使用到的类,方便转化成调用接口使用的参数形式。
3. **GoKuai_EntSDK.UtilClass**命名空间:在这里面封装了一些辅助转化数据的类
(1) **SimpleJson**简单转译json的类;
(2) **Util**里面封装了一些流处理、文件名、时间处理、转化文件大小等的方法;
(3) **UnixTimestampConverter**里面封装了转时间戳的方法。
## 类的实例化及方法调用
###**GokuaiEngine**
####构造方法
```c
new GokuaiEngine(Username,Password,ClientId,ClientSecret)
```
##### 参数
|
必需 |
类型 |
说明 |
Username |
是 |
String |
用户名 |
Password |
是 |
String |
密码 |
ClientId |
是 |
String |
申请应用时分配的AppKey |
ClientSecret |
是 |
String |
申请应用时分配的AppSecret |
####GetToken()方法
GokuaiEngine实例化以后,需要执行着一个方法来进行身份验证获取token,验证通过,则才可以使用该类里面的其他方法。
```c
//新实例化对象
GokuaiEngine ge = new GokuaiEngine(_username,_password,_clientId,_clientSecret);
String result=ge.GetToken();
if (ge.StatusCode==HttpStatusCode.OK)
{
//获得token,也可以在result中自己解析
TB_Token.Text = ge.Token;
}
```
##### 返回格式
JSON
##### 返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
access_token |
String |
用于调用access_token,接口获取授权后的access token。 |
expires_in |
Int32 |
Access Token的有效期,以秒为单位 |
refresh_token |
String |
用于刷新access_token 的 refresh_token,有效期1个月 |
错误返回 error参数
字段 |
说明 |
默认 |
请求错误,请重试 |
invalid_request |
请求参数错误 |
invalid_client |
当前客户端版本已不能使用 |
invalid_grant |
邮箱或密码错误 |
unauthorized_client |
该设备已限制使用 |
access_denied |
您的客户端已被限制登录 |
#### RefreshToken()方法
token有过期时限,如果token失效,可以通过这个方法重新获取token。
```c
GokuaiEngine ge = new GokuaiEngine(_username,_password,_clientId,_clientSecret);
ge.GetToken();//需要第一次验证以后,refreshtoken方法才会有用
ge.RefreshToken();
```
##### 返回格式
JSON
##### 返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
access_token |
String |
用于调用access_token,接口获取授权后的access token。 |
expires_in |
Int32 |
Access Token的有效期,以秒为单位 |
refresh_token |
String |
用于刷新access_token 的 refresh_token,有效期1个月 |
####Get(Fullpath,Mount)方法
用于获取单文件信息。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
要获取信息文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/”。 |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
hash |
String |
路径hash |
dir |
Int |
是否文件夹 |
fullpath |
String |
文件路径 |
filename |
String |
文件名称 |
last_member_name |
String |
文件最后修改人 |
last_dateline |
Int |
文件最后修改时间戳(10位精确到秒) |
####GetUserInfo()方法
获取帐号信息
#### 请求参数
|
必需 |
类型 |
说明 |
token |
是 |
string |
授权成功后获取的access_token |
sign |
是 |
string |
参考使用说明的签名算法 |
#### 返回格式
JSON
#### 返回结果
字段 |
类型 |
说明 |
org_id |
int |
团队ID |
org_name |
string |
团队名称 |
id |
int |
用户编号 |
username |
string |
用户名 |
photourl |
string |
头像地址 |
capacity |
bigint |
当前用户可用空间大小 |
size |
bigint |
个人已使用空间容量 |
org_capacity |
bigint |
团队可用空间大小 |
org_size |
bigint |
团队已使用空间大小 |
####Get(DownloadUrl , FileName)方法
根据下载地址,下载到TeamFolderPath指定的位置,TeamFolderPath默认为D:\GokuaiApiExt\Team\,可以通过GokuaiEngine实例化对象TeamFolderPath来设置。
#####参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
要获取信息文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
bool
#####返回结果
true,下载过程中无发生异常,否则为false
####Get(Stream , FileName)方法
将流存放到TeamFolderPath指定的位置,TeamFolderPath注释见Get(DownloadUrl , FileName)方法。
#####参数
|
必需 |
类型 |
说明 |
Stream |
是 |
Stream |
文件流数据 |
FileName |
是 |
Enmu |
文件名 |
#####返回格式
bool
#####返回结果
true,存放过程中无发生异常,否则为false
####List(FullPath,Start,Mount)方法
获取文件夹里的文件列表。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
要获取信息文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Start |
是 |
String |
列表开始位置,如果Start=50,是从列表里第51个文件开始获取 |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
|
必需 |
类型 |
说明 |
token |
是 |
string |
授权成功后获取的access_token |
sign |
是 |
string |
参考使用说明中的签名算法 |
start |
是 |
int |
开始位置(每次返回100条数据) |
fullpath |
是 |
string |
文件的路径 |
mount |
否 |
string |
操作的存储空间,gokuai:个人的存储空间(默认),team:团队的存储空间 |
####Add(FullPath,Mount,LocalPath)方法
上传文件或添加文件夹.
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
上传文件和添加文件夹的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
LocalPath |
是 |
String |
上传文件夹,则传空 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
hash |
string |
路径hash |
fullpath |
string |
文件的路径 |
filehash |
string |
文件的sha1值(仅新增文件返回) |
filesize |
bigint |
文件的大小(仅新增文件返回) |
####Del(FullPath,Mount)方法
上传文件或添加文件夹.
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
删除文件或文件夹的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####Move(FullPath,FromFullPath,Mount,ToMount)方法
移动文件或文件夹。FullPath, FromFullPath,规则,例如将text.txt从1文件夹到2文件夹,FullPath=2/text.txt, FromFullPath=1/text.txt;.
##### 参数
|
必需 |
类型 |
说明 |
FromFullPath |
是 |
String |
目标文件全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/”。 |
Fullpath |
是 |
String |
源文件全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
ToMount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####Copy(FullPath,FromFullPath,Mount,ToMount)方法
复制文件或文件夹。FullPath, FromFullPath,规则,例如将text.txt从1文件夹到2文件夹,FullPath=2/text.txt, FromFullPath=1/text.txt;
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
目标文件全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
FromFullPath |
是 |
String |
源文件全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
ToMount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####GetShare(FullPath,Mount)方法
获取文件或文件夹的共享参与人。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
获取共享参与人文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
ReturnType |
是 |
Enmu |
返回参数的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
members |
array |
参与共享的独立成员列表,结构请参考后面的说明 |
groups |
array |
参与共享的分组列表,结构请参考后面的说明(只返回成员时,返回空数组) |
>members的结构
[
{
'member_id':共享参与人的用户id,
'member_name':共享参与人的用户名,
'role':'共享的权限角色'
},
...
]
>groups的结构
[
{
'group_id':共享参与分组的id
'group_name':共享参与人分组的名称,
'role':'共享的权限角色',
'members':该共享分组的成员列表
[
{
'member_id':共享参与人的用户id,
'member_name':共享参与人的用户名,
'role':'共享的权限角色'
},
...
]
},
...
]
####AddShare(FullPath,Mount)方法
添加文件或文件夹的共享参与人。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
添加共享参与人文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
Collaboration |
是 |
Array |
共享参与人参数,可以通过Collaboration类辅助创建 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####DelShare(FullPath,Mount)方法
删除文件或文件夹的共享参与人。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
删除共享参与人文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####EditShare(FullPath,Mount)方法
编辑文件或文件夹的共享参与人的权限。
##### 参数
|
必需 |
类型 |
说明 |
Fullpath |
是 |
String |
编辑共享参与人文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型 |
Collaboration |
是 |
Array |
共享参与人参数,可以通过Collaboration类辅助创建 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####GetMember()方法
获取团队成员和分组。
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####GetGroupMember(GroupId)方法
获取分组里的成员。
##### 参数
|
必需 |
类型 |
说明 |
GroupId |
是 |
Int |
获取分组成员的id号 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####Search(Condition,Mount)方法
根据条件搜索。
##### 参数
|
必需 |
类型 |
说明 |
Condition |
是 |
String |
搜索条件,为jsonstring格式,可以实例化类Condition,然后设置里面属性参数,最后ToJsonString来传参 |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200,返回数据格式与获取文件夹列表的接口List返回的数据格式一样
####UpdateList(FullPath,Mount ,UpdateType,StartTime,EndTime)方法
获取更新用户更新列表。
##### 参数
|
必需 |
类型 |
说明 |
FullPath |
是 |
String |
获取更新列表文件的全路径,如果为文件夹,后面需要加上“/”,例如“FolderName/” |
Mount |
是 |
Enmu |
存储空间的类型,为空传enum Empty |
UpdateType |
是 |
Enmu |
更新操作类型:1文件操作2讨论3时间,为空传enum All |
StartTime |
是 |
Int32 |
开始时间戳 |
EndTime |
是 |
Int32 |
结束时间戳 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
字段 |
类型 |
说明 |
act |
int |
更新的具体类型,请参考后面详细说明 |
member_id |
int |
更新发起人的用户ID |
member_name |
string |
更新发起人的用户名 |
dateline |
int |
更新发生的时间,时间戳形式,秒为单位 |
files |
array |
该次更新的文件或文件夹信息,结构请参考后面的说明 |
act的值
字段 |
类型 |
0 |
删除 |
1 |
新增 |
2 |
重命名 |
3 |
修改 |
4 |
移动 |
5 |
恢复删除 |
6 |
修改还原 |
16 |
讨论 |
100 |
团队成员离开 |
101 |
团队成员加入 |
110 |
不再是联系人 |
111 |
成为联系人 |
997 |
关闭共享 |
998 |
退出共享 |
999 |
取消共享 |
1000 |
共享文件/文件夹 |
1010 |
链接被下载 |
1011 |
链接被保存到够快 |
1012 |
链接被保存到够快 |
1013 |
链接文件夹内有新文件上传 |
files的结构
[
{
"hash":文件路径hash (string),
"dir":是否为目录 (int),
"up_fullpath":文件的上级路径 (string),
"fullpath":文件路径 (string),
"filename":文件名 (string),
"filesize":文件大小,以b为单位(int),
"org_share":是否为团队共享文件夹 1为是 0为否
},
…
]
####GetMemberInfo(AuthorizationId)方法
根据帐号获取MemberId
##### 参数
|
必需 |
类型 |
说明 |
AuthorizationId |
是 |
String |
用户授权唯一ID |
#####返回格式
JSON
#####返回结果
字段 |
类型 |
说明 |
member_id |
int |
用户唯一ID |
####GetAccountInfo(MemberId)方法
根据帐号获取AccountInfo
##### 参数
|
必需 |
类型 |
说明 |
MemberId |
是 |
int |
用户唯一ID |
#####返回格式
JSON
#####返回结果
字段 |
类型 |
说明 |
authorization_id |
int |
用户授权唯一ID |
###SearchResult
搜索结果操作
####Save(Condition, Name,Desciption,Mount)
保存搜索。
##### 参数
|
必需 |
类型 |
说明 |
Condition |
是 |
String |
搜索条件,为jsonstring格式,可以实例化类Condition,然后设置里面属性参数,最后ToJsonString来传参 |
Name |
是 |
String |
搜索名称 |
Desciption |
是 |
String |
描述 |
Mount |
是 |
Enmu |
存储空间的类型 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####Restore(Code)
根据保存搜索获得的code,重现搜索结果。
##### 参数
|
必需 |
类型 |
说明 |
Code |
是 |
String |
搜索结果集的唯一编码,该唯一码保存搜索结果后会返回 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200
####Earse(Code)
根据保存搜索获得的code,删除搜索结果。
##### 参数
|
必需 |
类型 |
说明 |
Code |
是 |
String |
搜索结果集的唯一编码,该唯一码保存搜索结果后会返回 |
#####返回格式
JSON
#####返回结果
正常返回 HTTP 200