Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
61d09a7b
Commit
61d09a7b
authored
Dec 20, 2016
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP
parent
0cf23fde
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
40 additions
and
49 deletions
+40
-49
app/controllers/projects/mattermosts_controller.rb
app/controllers/projects/mattermosts_controller.rb
+11
-10
app/helpers/application_helper.rb
app/helpers/application_helper.rb
+0
-4
app/helpers/projects_helper.rb
app/helpers/projects_helper.rb
+0
-8
app/models/project_services/mattermost_slash_commands_service.rb
...els/project_services/mattermost_slash_commands_service.rb
+6
-2
lib/mattermost/client.rb
lib/mattermost/client.rb
+6
-6
lib/mattermost/session.rb
lib/mattermost/session.rb
+8
-8
spec/lib/mattermost/command_spec.rb
spec/lib/mattermost/command_spec.rb
+8
-10
spec/lib/mattermost/team_spec.rb
spec/lib/mattermost/team_spec.rb
+1
-1
No files found.
app/controllers/projects/mattermosts_controller.rb
View file @
61d09a7b
...
...
@@ -12,13 +12,17 @@ class Projects::MattermostsController < Projects::ApplicationController
end
def
create
@service
.
configure!
(
current_user
,
configure_params
)
flash
[
:notice
]
=
'This service is now configured'
redirect_to
edit_namespace_project_service_path
(
@project
.
namespace
,
@project
,
service
)
rescue
=>
e
flash
[
:alert
]
=
e
.
message
redirect_to
new_namespace_project_mattermost_path
(
@project
.
namespace
,
@project
)
result
,
message
=
@service
.
configure
(
current_user
,
configure_params
)
if
result
flash
[
:notice
]
=
'This service is now configured'
redirect_to
edit_namespace_project_service_path
(
@project
.
namespace
,
@project
,
service
)
else
flash
[
:alert
]
=
message
||
'Failed to configure service'
redirect_to
new_namespace_project_mattermost_path
(
@project
.
namespace
,
@project
)
end
end
private
...
...
@@ -31,9 +35,6 @@ class Projects::MattermostsController < Projects::ApplicationController
def
teams
@teams
||=
@service
.
list_teams
(
current_user
)
rescue
=>
e
@teams
=
[]
flash
[
:alert
]
=
e
.
message
end
def
service
...
...
app/helpers/application_helper.rb
View file @
61d09a7b
...
...
@@ -294,8 +294,4 @@ module ApplicationHelper
def
page_class
"issue-boards-page"
if
current_controller?
(
:boards
)
end
def
pretty_url
(
url
)
url
.
gsub
(
/\A.*?:\/\//
,
''
)
end
end
app/helpers/projects_helper.rb
View file @
61d09a7b
...
...
@@ -148,14 +148,6 @@ module ProjectsHelper
).
html_safe
end
def
mattermost_teams_options
(
teams
)
teams_options
=
teams
.
map
do
|
id
,
options
|
[
options
[
'display_name'
]
||
options
[
'name'
],
id
]
end
teams_options
.
compact
.
unshift
([
'Select team...'
,
'0'
])
end
private
def
repo_children_classes
(
field
)
...
...
app/models/project_services/mattermost_slash_commands_service.rb
View file @
61d09a7b
...
...
@@ -19,15 +19,19 @@ class MattermostSlashCommandsService < ChatSlashCommandsService
'mattermost_slash_commands'
end
def
configure
!
(
user
,
params
)
def
configure
(
user
,
params
)
token
=
Mattermost
::
Command
.
new
(
user
).
create
(
command
(
params
))
update!
(
active:
true
,
token:
token
)
update
(
active:
true
,
token:
token
)
if
token
rescue
=>
Mattermost
::
Error
=>
e
false
,
e
.
message
end
def
list_teams
(
user
)
Mattermost
::
Team
.
new
(
user
).
all
rescue
=>
Mattermost
::
Error
=>
e
[]
end
private
...
...
lib/mattermost/client.rb
View file @
61d09a7b
...
...
@@ -29,13 +29,13 @@ module Mattermost
def
json_response
(
response
)
json_response
=
JSON
.
parse
(
response
.
body
)
if
response
.
success?
json_response
elsif
json_response
[
'message'
]
raise
ClientError
(
json_response
[
'message'
])
else
raise
ClientError
(
'Undefined error'
)
unless
response
.
success?
raise
ClientError
(
json_response
[
'message'
]
||
'Undefined error'
)
end
json_response
rescue
JSON
::
JSONError
=>
e
raise
ClientError
(
'Cannot parse response'
)
end
end
end
lib/mattermost/session.rb
View file @
61d09a7b
...
...
@@ -3,15 +3,11 @@ module Mattermost
class
NoSessionError
<
Error
def
message
'No session could be set up, is Mattermost configured with Single Sign
o
n?'
'No session could be set up, is Mattermost configured with Single Sign
O
n?'
end
end
class
ConnectionError
<
Error
def
message
'Could not connect. Is Mattermost up?'
end
end
class
ConnectionError
<
Error
;
end
# This class' prime objective is to obtain a session token on a Mattermost
# instance with SSO configured where this GitLab instance is the provider.
...
...
@@ -74,12 +70,16 @@ module Mattermost
def
get
(
path
,
options
=
{})
self
.
class
.
get
(
path
,
options
.
merge
(
headers:
@headers
))
rescue
Errno
::
ECONNREFUSED
raise
ConnectionError
rescue
HTTParty
::
Error
=>
e
raise
ConnectionError
(
e
.
message
)
rescue
Errno
::
ECONNREFUSED
=>
e
raise
ConnectionError
(
e
.
message
)
end
def
post
(
path
,
options
=
{})
self
.
class
.
post
(
path
,
options
.
merge
(
headers:
@headers
))
rescue
HTTParty
::
Error
=>
e
raise
ConnectionError
(
e
.
message
)
rescue
Errno
::
ECONNREFUSED
raise
ConnectionError
end
...
...
spec/lib/mattermost/command_spec.rb
View file @
61d09a7b
require
'spec_helper'
describe
Mattermost
::
Command
do
let
(
:session
)
{
double
(
"session"
)
}
let
(
:hash
)
{
{
'token'
=>
'token'
}
}
let
(
:user
)
{
create
(
:user
)
}
describe
'.create'
do
before
do
allow
(
session
).
to
receive
(
:post
).
and_return
(
hash
)
allow
(
hash
).
to
receive
(
:parsed_response
).
and_return
(
hash
)
end
it
'gets the teams'
do
expect
(
session
).
to
receive
(
:post
)
before
do
Mattermost
::
Session
.
base_uri
(
"http://mattermost.example.com"
)
end
described_class
.
create
(
session
,
'abc'
,
url:
'http://trigger.com'
)
describe
'#create'
do
it
'creates a command'
do
described_class
.
new
(
user
).
create
(
team_id:
'abc'
,
url:
'http://trigger.com'
)
end
end
end
spec/lib/mattermost/team_spec.rb
View file @
61d09a7b
require
'spec_helper'
describe
Mattermost
::
Team
do
describe
'
.team_admin
'
do
describe
'
#all
'
do
let
(
:session
)
{
double
(
"session"
)
}
let
(
:response
)
do
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment