Skip to content
Snippets Groups Projects
Commit 00459967 authored by Z.J. van de Weg's avatar Z.J. van de Weg
Browse files

Add auto configure of commands

parent 99d8d6f0
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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
Loading
Loading
@@ -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],
Loading
Loading
Loading
Loading
@@ -54,10 +54,6 @@ class Service < ActiveRecord::Base
template
end
 
def auto_config?
false
end
def category
read_attribute(:category).to_sym
end
Loading
Loading
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_:
Loading
Loading
@@ -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
Loading
Loading
@@ -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
Loading
Loading
@@ -106,7 +107,6 @@ module Mattermost
 
def normalize_uri(uri)
uri << '/' unless uri.end_with?('/')
uri << 'api/v3'
end
end
Loading
Loading
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
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment