Browse Source

升级X组件,改进语法

v1.4
大石头 7 years ago
parent
commit
756d92c25f
  1. 112
      .editorconfig
  2. BIN
      DLL/NewLife.Core.dll
  3. BIN
      DLL/NewLife.Core.pdb
  4. 2277
      DLL/NewLife.Core.xml
  5. 549
      DLL/NewLife.Cube.XML
  6. BIN
      DLL/NewLife.Cube.dll
  7. BIN
      DLL/NewLife.Cube.pdb
  8. BIN
      DLL/XCode.dll
  9. BIN
      DLL/XCode.pdb
  10. 1107
      DLL/XCode.xml
  11. 3
      GitCandy.Web/App_Start/RouteConfig.cs
  12. 10
      GitCandy.Web/Controllers/GitController.cs
  13. 5
      GitCandy.Web/Data/RepositoryService.cs
  14. 8
      GitCandy.Web/Extensions/MetadataExtension.cs
  15. 18
      GitCandy.Web/Git/ArchiverAccessor.cs
  16. 39
      GitCandy.Web/Git/Cache/GitCacheAccessor.cs
  17. 3
      GitCandy.Web/Git/ContributorsAccessor.cs
  18. 49
      GitCandy.Web/Git/GitService.cs
  19. 5
      GitCandy.Web/Global.asax.cs
  20. 2
      GitCandy/Base/StringLogicalComparer.cs
  21. 41
      GitCandy/Entity/CandyManageProvider.cs

112
.editorconfig

@ -0,0 +1,112 @@
# EditorConfig is awesome:http://EditorConfig.org
# https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference
# top-most EditorConfig file
root = true
# Don't use tabs for indentation.
[*]
indent_style = space
# (Please don't specify an indent_size here; that has too many unintended consequences.)
# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4
insert_final_newline = false
charset = utf-8-bom
end_of_line = crlf
# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2
# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2
# JSON files
[*.json]
indent_size = 2
# Dotnet code style settings:
[*.{cs,vb}]
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left
#csharp_space_after_cast = true
#csharp_space_after_keywords_in_control_flow_statements = true
#csharp_space_between_method_declaration_parameter_list_parentheses = true
#csharp_space_between_method_call_parameter_list_parentheses = true
#csharp_space_between_parentheses = control_flow_statements, type_casts
# 单行放置代码
csharp_preserve_single_line_statements = true
csharp_preserve_single_line_blocks = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:warning
dotnet_style_qualification_for_property = false:warning
dotnet_style_qualification_for_method = false:warning
dotnet_style_qualification_for_event = false:warning
# Use language keywords instead of framework type names for type references
dotnet_style_predefined_type_for_locals_parameters_members = false:suggestion
dotnet_style_predefined_type_for_member_access = false:suggestion
#dotnet_style_require_accessibility_modifiers = for_non_interface_members:none/always:suggestion
# Suggest more modern language features when available
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
# CSharp code style settings:
[*.cs]
# Prefer "var" everywhere
csharp_style_var_for_built_in_types = true:warning
csharp_style_var_when_type_is_apparent = true:warning
csharp_style_var_elsewhere = true:warning
# Prefer method-like constructs to have a block body
csharp_style_expression_bodied_methods = when_on_single_line:suggestion
csharp_style_expression_bodied_constructors = when_on_single_line:suggestion
csharp_style_expression_bodied_operators = when_on_single_line:suggestion
# Prefer property-like constructs to have an expression-body
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
#csharp_style_expression_bodied_accessors = true:suggestion
# Suggest more modern language features when available
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
# 单行不需要大括号
csharp_prefer_braces = false:suggestion
# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
[*.md]
trim_trailing_whitespace = false

BIN
DLL/NewLife.Core.dll

BIN
DLL/NewLife.Core.pdb

2277
DLL/NewLife.Core.xml
File diff suppressed because it is too large
View File

549
DLL/NewLife.Cube.XML

@ -103,6 +103,9 @@
<summary>清空剪切板</summary>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Admin.Controllers.UserConnectController">
<summary>用户链接控制器</summary>
</member>
<member name="T:NewLife.Cube.Admin.Controllers.VisitStatController">
<summary>访问统计控制器</summary>
</member>
@ -126,11 +129,6 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.VisitStatController.DeleteAjax(System.Int32)">
<summary>不允许删除</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.VisitStatController.Clear">
<summary>清空全表数据</summary>
<returns></returns>
@ -170,11 +168,6 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.LogController.DeleteAjax(System.Int32)">
<summary>不允许删除日志</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.LogController.Clear">
<summary>清空全表数据</summary>
<returns></returns>
@ -215,17 +208,15 @@
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Login(System.String)">
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Login">
<summary>登录</summary>
<param name="returnUrl"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Login(System.String,System.String,System.Nullable{System.Boolean},System.String)">
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Login(System.String,System.String,System.Nullable{System.Boolean})">
<summary>登录</summary>
<param name="username"></param>
<param name="password"></param>
<param name="remember"></param>
<param name="returnUrl"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Logout">
@ -242,11 +233,6 @@
<param name="user"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.ForgetPassword(System.String)">
<summary>忘记密码</summary>
<param name="email"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.Register(System.String,System.String,System.String,System.String)">
<summary>注册</summary>
<param name="email"></param>
@ -260,6 +246,16 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.EnableSelect(System.String)">
<summary>批量启用</summary>
<param name="keys"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Admin.Controllers.UserController.DisableSelect(System.String)">
<summary>批量禁用</summary>
<param name="keys"></param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Admin.Controllers.IndexController">
<summary>首页</summary>
</member>
@ -322,6 +318,20 @@
<member name="P:NewLife.Cube.Admin.DbItem.Backups">
<summary>备份数</summary>
</member>
<member name="T:NewLife.Cube.ControllerHelper">
<summary>控制器帮助类</summary>
</member>
<member name="M:NewLife.Cube.ControllerHelper.JsonTips(System.Object,System.String)">
<summary>返回结果并跳转</summary>
<param name="data">结果。可以是错误文本、成功文本、其它结构化数据</param>
<param name="url">提示信息后跳转的目标地址,[refresh]表示刷新当前页</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.ControllerHelper.JsonRefresh(System.Object)">
<summary>返回结果并刷新</summary>
<param name="data">消息</param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.EntityTreeController`1">
<summary>实体树控制器基类</summary>
<typeparam name="TEntity"></typeparam>
@ -354,6 +364,16 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.CubeModule">
<summary>魔方处理模块</summary>
</member>
<member name="M:NewLife.Cube.CubeModule.System#Web#IHttpModule#Init(System.Web.HttpApplication)">
<summary>初始化模块,准备拦截请求。</summary>
<param name="context"></param>
</member>
<member name="M:NewLife.Cube.CubeModule.OnRequest">
<summary>初始化模块,准备拦截请求。</summary>
</member>
<member name="T:NewLife.Cube.ObjectController`1">
<summary>对象控制器</summary>
</member>
@ -397,6 +417,17 @@
<param name="menu">该控制器所在菜单</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.ControllerBaseX.JsonTips(System.Object,System.String)">
<summary>返回结果并跳转</summary>
<param name="data">结果。可以是错误文本、成功文本、其它结构化数据</param>
<param name="url">提示信息后跳转的目标地址,[refresh]表示刷新当前页</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.ControllerBaseX.JsonRefresh(System.Object)">
<summary>返回结果并刷新</summary>
<param name="data">消息</param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.DbRunTimeModule">
<summary>页面查询执行时间模块</summary>
</member>
@ -762,6 +793,10 @@
<param name="key"></param>
<returns></returns>
</member>
<member name="P:NewLife.Cube.EntityController`1.SelectKeys">
<summary>获取选中键</summary>
<returns></returns>
</member>
<member name="M:NewLife.Cube.EntityController`1.ExportData">
<summary>导出当前页以后的数据</summary>
<returns></returns>
@ -785,13 +820,6 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.EntityController`1.DeleteAjax(System.Int32)">
<summary>
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.EntityController`1.Add">
<summary>表单,添加/修改</summary>
<returns></returns>
@ -858,6 +886,14 @@
<param name="fs"></param>
<param name="list"></param>
</member>
<member name="M:NewLife.Cube.EntityController`1.DeleteSelect">
<summary>删除选中</summary>
<returns></returns>
</member>
<member name="M:NewLife.Cube.EntityController`1.DeleteAll">
<summary>删除全部</summary>
<returns></returns>
</member>
<member name="M:NewLife.Cube.EntityController`1.Clear">
<summary>清空全表数据</summary>
<returns></returns>
@ -945,6 +981,16 @@
<param name="entity"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.ViewHelper.EnableSelect(System.Web.Mvc.WebViewPage)">
<summary>是否启用多选</summary>
<param name="page"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.ViewHelper.GetAvatarUrl(XCode.Membership.IUser)">
<summary>获取头像地址</summary>
<param name="user"></param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Bootstrap">
<summary>Bootstrap页面控制。允许继承</summary>
</member>
@ -1032,6 +1078,349 @@
<summary>主页面</summary>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Controllers.SsoController">
<summary>单点登录控制器</summary>
</member>
<member name="P:NewLife.Cube.Controllers.SsoController.Provider">
<summary>当前提供者</summary>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Index">
<summary>首页</summary>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Login(System.String)">
<summary>第三方登录</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.LoginInfo(System.String,System.String)">
<summary>第三方登录完成后跳转到此</summary>
<param name="code"></param>
<param name="state"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Bind(System.String)">
<summary>绑定</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.UnBind(System.String)">
<summary>取消绑定</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Authorize(System.String,System.String,System.String,System.String,System.String)">
<summary>1,验证用户身份</summary>
<remarks>
子系统需要验证访问者身份时,引导用户跳转到这里。
用户登录完成后,得到一个独一无二的code,并跳转回去子系统。
</remarks>
<param name="client_id">应用标识</param>
<param name="redirect_uri">回调地址</param>
<param name="response_type">响应类型。默认code</param>
<param name="scope">授权域</param>
<param name="state">用户状态数据</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Auth2(System.Int32)">
<summary>2,用户登录成功后返回这里</summary>
<remarks>
构建身份验证结构,返回code给子系统
</remarks>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Access_Token(System.String,System.String,System.String,System.String)">
<summary>3,根据code获取令牌</summary>
<remarks>
子系统根据验证用户身份时得到的code,直接在服务器间请求本系统。
传递应用标识和密钥,主要是为了向本系统表明其合法身份。
</remarks>
<param name="client_id">应用标识</param>
<param name="client_secret">密钥</param>
<param name="code">代码</param>
<param name="grant_type">授权类型。</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.UserInfo(System.String)">
<summary>3,根据token获取用户信息</summary>
<param name="access_token">访问令牌</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Logout">
<summary>4,注销登录</summary>
<remarks>
子系统引导用户跳转到这里注销登录。
</remarks>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Controllers.SsoController.Avatar(System.Int32)">
<summary>获取用户头像</summary>
<param name="id">用户编号</param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Entity.UserConnect">
<summary>用户链接。第三方绑定</summary>
<summary>用户链接。第三方绑定</summary>
</member>
<member name="M:NewLife.Cube.Entity.UserConnect.Valid(System.Boolean)">
<summary>验证数据,通过抛出异常的方式提示验证失败。</summary>
<param name="isNew">是否插入</param>
</member>
<member name="M:NewLife.Cube.Entity.UserConnect.FindByID(System.Int32)">
<summary>根据编号查找</summary>
<param name="id">编号</param>
<returns>实体对象</returns>
</member>
<member name="M:NewLife.Cube.Entity.UserConnect.FindByProviderAndOpenID(System.String,System.String)">
<summary>根据提供商、用户查找</summary>
<param name="provider">提供商</param>
<param name="openid">身份标识</param>
<returns>实体对象</returns>
</member>
<member name="M:NewLife.Cube.Entity.UserConnect.FindAllByUserID(System.Int32)">
<summary>根据用户查找</summary>
<param name="userid">用户</param>
<returns>实体列表</returns>
</member>
<member name="M:NewLife.Cube.Entity.UserConnect.Fill(NewLife.Web.OAuthClient)">
<summary>填充用户</summary>
<param name="client"></param>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.ID">
<summary>编号</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Provider">
<summary>提供商</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.UserID">
<summary>用户。本地用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.OpenID">
<summary>身份标识。用户名、OpenID</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.LinkID">
<summary>用户编号。第三方用户编号</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.NickName">
<summary>昵称</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Avatar">
<summary>头像</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.AccessToken">
<summary>访问令牌</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.RefreshToken">
<summary>刷新令牌</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Expire">
<summary>过期时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Enable">
<summary>启用</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.CreateUserID">
<summary>创建用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.CreateIP">
<summary>创建地址</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.CreateTime">
<summary>创建时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.UpdateUserID">
<summary>更新用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.UpdateIP">
<summary>更新地址</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.UpdateTime">
<summary>更新时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Remark">
<summary>备注</summary>
</member>
<member name="P:NewLife.Cube.Entity.UserConnect.Item(System.String)">
<summary>获取/设置 字段值</summary>
<param name="name">字段名</param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Entity.UserConnect._">
<summary>取得用户链接字段信息的快捷方式</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.ID">
<summary>编号</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.Provider">
<summary>提供商</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.UserID">
<summary>用户。本地用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.OpenID">
<summary>身份标识。用户名、OpenID</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.LinkID">
<summary>用户编号。第三方用户编号</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.NickName">
<summary>昵称</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.Avatar">
<summary>头像</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.AccessToken">
<summary>访问令牌</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.RefreshToken">
<summary>刷新令牌</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.Expire">
<summary>过期时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.Enable">
<summary>启用</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.CreateUserID">
<summary>创建用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.CreateIP">
<summary>创建地址</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.CreateTime">
<summary>创建时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.UpdateUserID">
<summary>更新用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.UpdateIP">
<summary>更新地址</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.UpdateTime">
<summary>更新时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect._.Remark">
<summary>备注</summary>
</member>
<member name="T:NewLife.Cube.Entity.UserConnect.__">
<summary>取得用户链接字段名称的快捷方式</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.ID">
<summary>编号</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.Provider">
<summary>提供商</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.UserID">
<summary>用户。本地用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.OpenID">
<summary>身份标识。用户名、OpenID</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.LinkID">
<summary>用户编号。第三方用户编号</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.NickName">
<summary>昵称</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.Avatar">
<summary>头像</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.AccessToken">
<summary>访问令牌</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.RefreshToken">
<summary>刷新令牌</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.Expire">
<summary>过期时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.Enable">
<summary>启用</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.CreateUserID">
<summary>创建用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.CreateIP">
<summary>创建地址</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.CreateTime">
<summary>创建时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.UpdateUserID">
<summary>更新用户</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.UpdateIP">
<summary>更新地址</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.UpdateTime">
<summary>更新时间</summary>
</member>
<member name="F:NewLife.Cube.Entity.UserConnect.__.Remark">
<summary>备注</summary>
</member>
<member name="T:NewLife.Cube.Entity.IUserConnect">
<summary>用户链接。第三方绑定接口</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.ID">
<summary>编号</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Provider">
<summary>提供商</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.UserID">
<summary>用户。本地用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.OpenID">
<summary>身份标识。用户名、OpenID</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.LinkID">
<summary>用户编号。第三方用户编号</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.NickName">
<summary>昵称</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Avatar">
<summary>头像</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.AccessToken">
<summary>访问令牌</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.RefreshToken">
<summary>刷新令牌</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Expire">
<summary>过期时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Enable">
<summary>启用</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.CreateUserID">
<summary>创建用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.CreateIP">
<summary>创建地址</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.CreateTime">
<summary>创建时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.UpdateUserID">
<summary>更新用户</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.UpdateIP">
<summary>更新地址</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.UpdateTime">
<summary>更新时间</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Remark">
<summary>备注</summary>
</member>
<member name="P:NewLife.Cube.Entity.IUserConnect.Item(System.String)">
<summary>获取/设置 字段值</summary>
<param name="name">字段名</param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.MvcApplication">
<summary>
注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
@ -1307,13 +1696,16 @@
<summary>布局页。</summary>
</member>
<member name="P:NewLife.Cube.Setting.DefaultRole">
<summary>默认角色。注册用户得到的角色</summary>
<summary>默认角色。注册用户得到的角色,0使用认证中心角色,-1强制使用</summary>
</member>
<member name="P:NewLife.Cube.Setting.AllowLogin">
<summary>启用密码登录。允许输入用户名密码进行登录</summary>
</member>
<member name="P:NewLife.Cube.Setting.AllowRegister">
<summary>启用注册</summary>
<summary>启用注册。允许输入用户名密码进行注册</summary>
</member>
<member name="P:NewLife.Cube.Setting.AllowForgot">
<summary>启用取回密码</summary>
<member name="P:NewLife.Cube.Setting.AutoRegister">
<summary>自动注册。第三方登录后,如果本地未登录,自动注册新用户</summary>
</member>
<member name="P:NewLife.Cube.Setting.LoginTip">
<summary>登录提示。留空表示不显示登录提示信息</summary>
@ -1333,12 +1725,109 @@
<member name="P:NewLife.Cube.Setting.BootstrapSelect">
<summary>下拉选择框。使用Bootstrap,美观,但有呈现方面的性能损耗</summary>
</member>
<member name="P:NewLife.Cube.Setting.ForceSSL">
<summary>强制SSL。强制使用https访问</summary>
</member>
<member name="P:NewLife.Cube.Setting.AvatarPath">
<summary>头像目录。设定后下载远程头像到本地</summary>
</member>
<member name="M:NewLife.Cube.Setting.#ctor">
<summary>实例化</summary>
</member>
<member name="M:NewLife.Cube.Setting.OnLoaded">
<summary>加载时触发</summary>
</member>
<member name="T:NewLife.Cube.Web.OAuthHelper">
<summary>开放验证助手</summary>
</member>
<member name="M:NewLife.Cube.Web.OAuthHelper.GetLoginUrl(System.String,System.String)">
<summary>获取登录地址</summary>
<param name="name"></param>
<param name="returnUrl"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.OAuthHelper.GetUrl(System.String,System.String)">
<summary>合并Url</summary>
<param name="baseUrl"></param>
<param name="returnUrl"></param>
<returns></returns>
</member>
<member name="T:NewLife.Cube.Web.SsoProvider">
<summary>单点登录提供者</summary>
</member>
<member name="P:NewLife.Cube.Web.SsoProvider.Provider">
<summary>用户管理提供者</summary>
</member>
<member name="P:NewLife.Cube.Web.SsoProvider.RedirectUrl">
<summary>重定向地址。~/Sso/LoginInfo</summary>
</member>
<member name="P:NewLife.Cube.Web.SsoProvider.SuccessUrl">
<summary>登录成功后跳转地址。~/Admin</summary>
</member>
<member name="P:NewLife.Cube.Web.SsoProvider.LoginUrl">
<summary>本地登录检查地址。~/Admin/User/Login</summary>
</member>
<member name="P:NewLife.Cube.Web.SsoProvider.Current">
<summary>已登录用户</summary>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.#ctor">
<summary>实例化</summary>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.GetClient(System.String)">
<summary>获取OAuth客户端</summary>
<param name="name"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.GetReturnUrl(System.Web.HttpRequestBase,System.Boolean)">
<summary>获取返回地址</summary>
<param name="request">请求对象</param>
<param name="referr">是否使用引用</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.GetRedirect(System.Web.HttpRequestBase,System.String)">
<summary>获取回调地址</summary>
<param name="request"></param>
<param name="returnUrl"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.OnLogin(NewLife.Web.OAuthClient,System.IServiceProvider)">
<summary>登录成功</summary>
<param name="client">OAuth客户端</param>
<param name="service">服务提供者。可用于获取HttpContext成员</param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.Fill(NewLife.Web.OAuthClient,NewLife.Model.IManageUser)">
<summary>填充用户,登录成功并获取用户信息之后</summary>
<param name="client"></param>
<param name="user"></param>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.OnBind(NewLife.Cube.Entity.UserConnect,NewLife.Web.OAuthClient)">
<summary>绑定用户,用户未有效绑定或需要强制绑定时</summary>
<param name="uc"></param>
<param name="client"></param>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.Logout">
<summary>注销</summary>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.GetAccessToken(NewLife.Web.OAuthServer,System.String)">
<summary>获取访问令牌</summary>
<param name="sso"></param>
<param name="code"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.GetUserInfo(NewLife.Web.OAuthServer,System.String,NewLife.Model.IManageUser)">
<summary>获取用户信息</summary>
<param name="sso"></param>
<param name="token"></param>
<param name="user"></param>
<returns></returns>
</member>
<member name="M:NewLife.Cube.Web.SsoProvider.FetchAvatar(NewLife.Model.IManageUser)">
<summary>抓取远程头像</summary>
<param name="user"></param>
<returns></returns>
</member>
<member name="T:NewLife.Bootstrap.BootstrapJs">
<summary>Bootstrap脚本提供者</summary>
</member>

BIN
DLL/NewLife.Cube.dll

BIN
DLL/NewLife.Cube.pdb

BIN
DLL/XCode.dll

BIN
DLL/XCode.pdb

1107
DLL/XCode.xml
File diff suppressed because it is too large
View File

3
GitCandy.Web/App_Start/RouteConfig.cs

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Routing.Constraints;
using System.Web.Routing;
using GitCandy.Controllers;
using NewLife.Collections;
@ -144,8 +143,6 @@ namespace GitCandy
{
_cache = new DictionaryCache<String, Boolean?>(StringComparer.OrdinalIgnoreCase)
{
Asynchronous = true,
CacheDefault = true,
Expire = 10 * 60 // 10分钟过期
};
//_cache.ClearPeriod = 10 * 60; // 10分钟清理一次过期项

10
GitCandy.Web/Controllers/GitController.cs

@ -175,15 +175,9 @@ namespace GitCandy.Controllers
return Request.GetBufferlessInputStream(true);
}
private static String FormatMessage(String input)
{
return (input.Length + 4).ToString("X4", CultureInfo.InvariantCulture) + input;
}
private static String FormatMessage(String input) => (input.Length + 4).ToString("X4", CultureInfo.InvariantCulture) + input;
private static String FlushMessage()
{
return "0000";
}
private static String FlushMessage() => "0000";
#endregion
}
}

5
GitCandy.Web/Data/RepositoryService.cs

@ -339,10 +339,7 @@ namespace GitCandy.Data
return model;
}
private RepositoryModel[] ToModels(IEnumerable<Repository> source)
{
return source.Select(ToModel).ToArray();
}
private RepositoryModel[] ToModels(IEnumerable<Repository> source) => source.Select(ToModel).ToArray();
private RepositoryModel ToModel(Repository repo)
{

8
GitCandy.Web/Extensions/MetadataExtension.cs

@ -54,15 +54,11 @@ namespace GitCandy.Extensions
return new String(chars);
}
public static String ToFlagString(this Boolean flag, String trueStr, String falseStr)
{
return flag ? trueStr : falseStr;
}
public static String ToFlagString(this Boolean flag, String trueStr, String falseStr) => flag ? trueStr : falseStr;
public static Dictionary<String, Object> CastToDictionary(this Object values)
{
if (values == null)
return null;
if (values == null) return null;
var dictionary = new Dictionary<String, Object>(StringComparer.OrdinalIgnoreCase);
var properties = TypeDescriptor.GetProperties(values);

18
GitCandy.Web/Git/ArchiverAccessor.cs

@ -26,12 +26,9 @@ namespace GitCandy.Git
this.encodings = encodings;
}
public override Boolean IsAsync { get { return false; } }
public override Boolean IsAsync => false;
protected override String GetCacheKey()
{
return GetCacheKey(commit.Sha);
}
protected override String GetCacheKey() => GetCacheKey(commit.Sha);
protected override void Init()
{
@ -92,13 +89,8 @@ namespace GitCandy.Git
resultDone = true;
}
protected override Boolean Load()
{
return File.Exists(result);
}
protected override Boolean Load() => File.Exists(result);
protected override void Save()
{
}
protected override void Save() { }
}
}
}

39
GitCandy.Web/Git/Cache/GitCacheAccessor.cs

@ -161,7 +161,7 @@ namespace GitCandy.Git.Cache
}
catch (Exception ex)
{
XTrace.Log.Error("GitCacheAccessor {0} exception" + Environment.NewLine + "{1}", this.GetType().FullName, ex);
XTrace.Log.Error("GitCacheAccessor {0} exception" + Environment.NewLine + "{1}", GetType().FullName, ex);
}
});
@ -192,30 +192,24 @@ namespace GitCandy.Git.Cache
protected abstract void Calculate();
public virtual Boolean IsAsync { get { return true; } }
public virtual Boolean IsAsync => true;
public static Boolean operator ==(GitCacheAccessor left, GitCacheAccessor right)
{
return object.ReferenceEquals(left, right)
|| !object.ReferenceEquals(left, null) && left.Equals(right)
|| !object.ReferenceEquals(right, null) && right.Equals(left);
return ReferenceEquals(left, right)
|| !(left is null) && left.Equals(right)
|| !(right is null) && right.Equals(left);
}
public static Boolean operator !=(GitCacheAccessor left, GitCacheAccessor right)
{
return !object.ReferenceEquals(left, null) && !left.Equals(right)
|| !object.ReferenceEquals(right, null) && !right.Equals(left);
return !(left is null) && !left.Equals(right)
|| !(right is null) && !right.Equals(left);
}
public override Boolean Equals(Object obj)
{
throw new NotImplementedException("Must override this method");
}
public override Boolean Equals(Object obj) => throw new NotImplementedException("Must override this method");
public override Int32 GetHashCode()
{
throw new NotImplementedException("Must override this method");
}
public override Int32 GetHashCode() => throw new NotImplementedException("Must override this method");
}
public abstract class GitCacheAccessor<TReturn, TAccessor> : GitCacheAccessor
@ -242,10 +236,7 @@ namespace GitCandy.Git.Cache
}
}
static GitCacheAccessor()
{
Name = typeof(TAccessor).Name.TrimEnd("Accessor");
}
static GitCacheAccessor() => Name = typeof(TAccessor).Name.TrimEnd("Accessor");
public GitCacheAccessor(String repoId, Repository repo)
{
@ -273,10 +264,7 @@ namespace GitCandy.Git.Cache
return cacheKey;
}
protected virtual String GetCacheFile()
{
return Name + "\\" + repoId + "\\" + GetCacheKey();
}
protected virtual String GetCacheFile() => Name + "\\" + repoId + "\\" + GetCacheKey();
protected override Boolean Load()
{
@ -323,9 +311,6 @@ namespace GitCandy.Git.Cache
return accessor != null && GetCacheKey() == accessor.GetCacheKey();
}
public override Int32 GetHashCode()
{
return typeof(TAccessor).GetHashCode() ^ GetCacheKey().GetHashCode();
}
public override Int32 GetHashCode() => typeof(TAccessor).GetHashCode() ^ GetCacheKey().GetHashCode();
}
}

3
GitCandy.Web/Git/ContributorsAccessor.cs

@ -59,8 +59,7 @@ namespace GitCandy.Git
statistics.NumberOfContributors++;
}
}
var size = 0L;
statistics.NumberOfFiles = FilesInCommit(commit, out size);
statistics.NumberOfFiles = FilesInCommit(commit, out var size);
statistics.SizeOfSource = size;
var commits = dict

49
GitCandy.Web/Git/GitService.cs

@ -26,10 +26,10 @@ namespace GitCandy.Git
private readonly Lazy<Encoding> _i18n;
private Boolean _disposed;
public Encoding I18n { get { return _i18n.Value; } }
public Encoding I18n => _i18n.Value;
public String Owner { get; private set; }
public String Name { get; private set; }
public Repository Repository { get { return _repository; } }
public Repository Repository => _repository;
public GitService(String owner, String name)
{
@ -72,8 +72,7 @@ namespace GitCandy.Git
public TreeModel GetTree(String path)
{
var isEmptyPath = String.IsNullOrEmpty(path);
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null)
{
if (isEmptyPath)
@ -191,8 +190,7 @@ namespace GitCandy.Git
public TreeEntryModel GetBlob(String path)
{
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null) return null;
var entry = commit[path];
@ -255,8 +253,7 @@ namespace GitCandy.Git
public CommitModel GetCommit(String path)
{
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null) return null;
var treeEntry = commit[path];
@ -276,9 +273,8 @@ namespace GitCandy.Git
public CompareModel GetCompare(String start, String end)
{
String name1, name2;
var commit1 = GetCommitByPath(ref start, out name1);
var commit2 = GetCommitByPath(ref end, out name2);
var commit1 = GetCommitByPath(ref start, out var name1);
var commit2 = GetCommitByPath(ref end, out var name2);
if (commit1 == null)
{
commit1 = _repository.Head.Tip;
@ -319,8 +315,7 @@ namespace GitCandy.Git
public CommitsModel GetCommits(String path, Int32 page = 1, Int32 pagesize = 20)
{
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null) return null;
var commitsAccessor = GitCacheAccessor.Singleton(new CommitsAccessor(_repoId, _repository, commit, path, page, pagesize));
@ -358,8 +353,7 @@ namespace GitCandy.Git
public BlameModel GetBlame(String path)
{
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null)
return null;
@ -454,20 +448,13 @@ namespace GitCandy.Git
return model;
}
public void DeleteBranch(String branch)
{
_repository.Branches.Remove(branch);
}
public void DeleteBranch(String branch) => _repository.Branches.Remove(branch);
public void DeleteTag(String tag)
{
_repository.Tags.Remove(tag);
}
public void DeleteTag(String tag) => _repository.Tags.Remove(tag);
public ContributorsModel GetContributors(String path)
{
String referenceName;
var commit = GetCommitByPath(ref path, out referenceName);
var commit = GetCommitByPath(ref path, out var referenceName);
if (commit == null)
return null;
@ -511,10 +498,7 @@ namespace GitCandy.Git
return head.FriendlyName;
}
public String[] GetLocalBranches()
{
return _repository.Branches.Select(s => s.FriendlyName).OrderBy(s => s, new StringLogicalComparer()).ToArray();
}
public String[] GetLocalBranches() => _repository.Branches.Select(s => s.FriendlyName).OrderBy(s => s, new StringLogicalComparer()).ToArray();
public Boolean SetHeadBranch(String name)
{
@ -637,7 +621,7 @@ namespace GitCandy.Git
try
{
if (encoding.StartsWith("cp", StringComparison.OrdinalIgnoreCase))
return Encoding.GetEncoding(int.Parse(encoding.Substring(2)));
return Encoding.GetEncoding(Int32.Parse(encoding.Substring(2)));
return Encoding.GetEncoding(encoding);
}
@ -677,10 +661,7 @@ namespace GitCandy.Git
return sb.ToString();
}
private Signature CreateSafeSignature(String name, String email, DateTimeOffset when)
{
return new Signature(name.RepetitionIfEmpty(UnknowString), email, when);
}
private Signature CreateSafeSignature(String name, String email, DateTimeOffset when) => new Signature(name.RepetitionIfEmpty(UnknowString), email, when);
#endregion
#region Static Methods

5
GitCandy.Web/Global.asax.cs

@ -64,9 +64,6 @@ namespace GitCandy
}
}
protected void Application_BeginRequest()
{
Profiler.Start();
}
protected void Application_BeginRequest() => Profiler.Start();
}
}

2
GitCandy/Base/StringLogicalComparer.cs

@ -21,7 +21,7 @@ namespace GitCandy.Base
public Int32 Compare(String s1, String s2)
{
//get rid of special cases
if (object.ReferenceEquals(s1, s2)) return 0;
if (ReferenceEquals(s1, s2)) return 0;
else if ((s1 == null) && (s2 == null)) return 0;
else if (s1 == null) return -1;
else if (s2 == null) return 1;

41
GitCandy/Entity/CandyManageProvider.cs

@ -12,33 +12,18 @@ namespace GitCandy.Entity
public IManageUser Current { get => User.Current; set => User.Current = (User)value; }
public IManageUser FindByID(Object userid) { return User.FindByID(userid.ToInt()); }
public IManageUser FindByName(String name) { return User.FindByName(name); }
public TService GetService<TService>()
{
throw new NotImplementedException();
}
public Object GetService(Type serviceType)
{
throw new NotImplementedException();
}
public IManageUser Login(String name, String password, Boolean rememberme = false)
{
throw new NotImplementedException();
}
public void Logout()
{
throw new NotImplementedException();
}
public IManageUser Register(String name, String password, String rolename = "注册用户", Boolean enable = false)
{
throw new NotImplementedException();
}
public IManageUser FindByID(Object userid) => User.FindByID(userid.ToInt());
public IManageUser FindByName(String name) => User.FindByName(name);
public TService GetService<TService>() => throw new NotImplementedException();
public Object GetService(Type serviceType) => throw new NotImplementedException();
public IManageUser Login(String name, String password, Boolean rememberme = false) => throw new NotImplementedException();
public void Logout() => throw new NotImplementedException();
public IManageUser Register(String name, String password, Int32 roleid, Boolean enable = false) => throw new NotImplementedException();
}
}
Loading…
Cancel
Save