Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
00459967
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
00459967
编写于
12月 15, 2016
作者:
Z
Z.J. van de Weg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add auto configure of commands
上级
99d8d6f0
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
50 addition
and
33 deletion
+50
-33
app/controllers/projects/mattermost_controller.rb
app/controllers/projects/mattermost_controller.rb
+8
-11
app/models/project_services/mattermost_slash_commands_service.rb
...els/project_services/mattermost_slash_commands_service.rb
+0
-4
app/models/service.rb
app/models/service.rb
+0
-4
lib/mattermost/command.rb
lib/mattermost/command.rb
+9
-7
lib/mattermost/session.rb
lib/mattermost/session.rb
+1
-1
lib/mattermost/team.rb
lib/mattermost/team.rb
+13
-6
spec/lib/mattermost/team_spec.rb
spec/lib/mattermost/team_spec.rb
+19
-0
未找到文件。
app/controllers/projects/mattermost_controller.rb
浏览文件 @
00459967
...
...
@@ -32,16 +32,13 @@ class Projects::MattermostController < Projects::ApplicationController
end
def
teams
# Mocking for frontend development
@teams
=
[{
"id"
=>
"qz8gdr1fopncueb8n9on8ohk3h"
,
"create_at"
=>
1479992105904
,
"update_at"
=>
1479992105904
,
"delete_at"
=>
0
,
"display_name"
=>
"chatops"
,
"name"
=>
"chatops"
,
"email"
=>
"admin@example.com"
,
"type"
=>
"O"
,
"company_name"
=>
""
,
"allowed_domains"
=>
""
,
"invite_id"
=>
"gthxi47gj7rxtcx6zama63zd1w"
,
"allow_open_invite"
=>
false
}]
# @teams =
# begin
# Mattermost::Mattermost.new(Gitlab.config.mattermost.host, current_user).with_session do
# Mattermost::Team.all
# end
# rescue Mattermost::NoSessionError
# @teams = []
# end
@teams
=
begin
Mattermost
::
Mattermost
.
new
(
Gitlab
.
config
.
mattermost
.
host
,
current_user
).
with_session
do
Mattermost
::
Team
.
team_admin
end
rescue
Mattermost
::
NoSessionError
[]
end
end
end
app/models/project_services/mattermost_slash_commands_service.rb
浏览文件 @
00459967
...
...
@@ -25,10 +25,6 @@ class MattermostSlashCommandsService < ChatService
]
end
def
auto_config?
Gitlab
.
config
.
mattermost
.
enabled
end
def
configure
(
host
,
current_user
,
params
)
token
=
Mattermost
::
Mattermost
.
new
(
host
,
current_user
).
with_session
do
Mattermost
::
Commands
.
create
(
params
[
:team_id
],
...
...
app/models/service.rb
浏览文件 @
00459967
...
...
@@ -54,10 +54,6 @@ class Service < ActiveRecord::Base
template
end
def
auto_config?
false
end
def
category
read_attribute
(
:category
).
to_sym
end
...
...
lib/mattermost/command.rb
浏览文件 @
00459967
module
Mattermost
class
Command
class
Command
<
Session
def
self
.
all
(
team_id
)
Mattermost
::
Mattermost
.
get
(
"/teams/
#{
team_id
}
/commands/list_team_commands"
)
get
(
"/teams/
#{
team_id
}
/commands/list_team_commands"
).
parsed_response
end
# params should be a hash, which supplies _at least_:
...
...
@@ -9,18 +9,20 @@ module Mattermost
# - url => What is the URL to trigger here?
# - icon_url => Supply a link to the icon
def
self
.
create
(
team_id
,
params
)
params
=
{
command
=
{
auto_complete:
true
,
auto_complete_desc:
'List all available commands'
,
auto_complete_hint:
'[help]'
,
description:
'Perform common operations on GitLab'
,
display_name:
'GitLab'
,
method:
'P'
,
user_name:
'GitLab'
}
..
merge
(
params
)
user_name:
'GitLab'
,
trigger:
'gitlab'
,
}.
merge
(
params
)
Mattermost
::
Mattermost
.
post
(
"/teams/
#{
team_id
}
/commands/create"
,
params
.
to_json
).
parsed_response
[
'token'
]
response
=
post
(
"/teams/
#{
team_id
}
/commands/create"
,
body:
command
.
to_json
)
response
.
parsed_response
[
'token'
]
end
end
end
lib/mattermost/session.rb
浏览文件 @
00459967
...
...
@@ -65,6 +65,7 @@ module Mattermost
return
unless
token_uri
self
.
class
.
headers
(
"Cookie"
=>
"MMAUTHTOKEN=
#{
request_token
}
"
)
self
.
class
.
headers
(
"X-Requested-With"
=>
'XMLHttpRequest'
)
request_token
end
...
...
@@ -106,7 +107,6 @@ module Mattermost
def
normalize_uri
(
uri
)
uri
<<
'/'
unless
uri
.
end_with?
(
'/'
)
uri
<<
'api/v3'
end
end
...
...
lib/mattermost/team.rb
浏览文件 @
00459967
module
Mattermost
class
Team
<
Mattermost
# After normalization this returns an array of hashes
#
# [{"id"=>"paf573pj9t81urupw3fanozeda", "display_name"=>"my team", <snip>}]
def
self
.
all
@all_teams
||=
get
(
'/teams/all'
).
parsed_response
.
values
class
Team
<
Session
def
self
.
team_admin
body
=
get
(
'/users/initial_load'
).
parsed_response
return
[]
unless
body
[
'team_members'
]
team_ids
=
body
[
'team_members'
].
map
do
|
team
|
team
[
'team_id'
]
if
team
[
'roles'
].
split
.
include?
(
'team_admin'
)
end
.
compact
body
[
'teams'
].
select
do
|
team
|
team_ids
.
include?
(
team
[
'id'
])
end
end
end
end
spec/lib/mattermost/team_spec.rb
0 → 100644
浏览文件 @
00459967
require
'spec_helper'
describe
Mattermost
::
Team
do
let
(
:session
)
{
Mattermost
::
Session
.
new
(
'http://localhost:8065/'
,
nil
)
}
describe
'.all'
do
let
(
:result
)
{
{
id:
'abc'
,
display_name:
'team'
}
}
before
do
WebMock
.
stub_request
(
:get
,
'http://localhost:8065/api/v3/teams/all'
).
and_return
({
abc:
result
}.
to_json
)
end
xit
'gets the teams'
do
allow
(
session
).
to
receive
(
:with_session
)
{
yield
}
expect
(
described_class
.
all
).
to
eq
(
result
)
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录