Draft: Try obtaining users and labels from Jira API
What does this MR do?
This is a test to see if we can get a list of users and labels from Jira via API. This is to answer UX questions on #245425[proposal-new-jira-issue.png] (comment 521472318)
Experiment
Retrieving labels
[3] pry(main)> Jira::Requests::Labels.new(jira_cloud_service).execute
JiraTrackerData Load (0.8ms) SELECT "jira_tracker_data".* FROM "jira_tracker_data" WHERE "jira_tracker_data"."service_id" = 50 LIMIT 1 /*application:console,line:/app/models/project_services/jira_service.rb:67:in `data_fields'*/
ApplicationSetting Load (3.2ms) SELECT "application_settings".* FROM "application_settings" ORDER BY "application_settings"."id" DESC LIMIT 1 /*application:console,line:/app/models/concerns/cacheable_attributes.rb:19:in `current_without_cache'*/
=> {"maxResults"=>1000, "startAt"=>0, "total"=>1, "isLast"=>true, "values"=>["foo"]}
[4] pry(main)> Jira::Requests::Labels.new(jira_server_service).execute
JiraTrackerData Load (0.7ms) SELECT "jira_tracker_data".* FROM "jira_tracker_data" WHERE "jira_tracker_data"."service_id" = 52 LIMIT 1 /*application:console,line:/app/models/project_services/jira_service.rb:67:in `data_fields'*/
Route Load (0.8ms) SELECT "routes".* FROM "routes" WHERE "routes"."source_id" = 37 AND "routes"."source_type" = 'Project' LIMIT 1 /*application:console,line:/app/models/concerns/routable.rb:103:in `full_path'*
Result: We can get a list of labels as an array of strings but it only works for Jira Cloud
Retrieving users
[5] pry(main)> Jira::Requests::Users.new(jira_cloud_service).execute
ApplicationSetting Load (1.1ms) SELECT "application_settings".* FROM "application_settings" ORDER BY "application_settings"."id" DESC LIMIT 1 /*application:console,line:/app/models/concerns/cacheable_attributes.rb:19:in `current_without_cache'*/
=> [{"self"=>"https://andystest.atlassian.net/rest/api/2/user?accountId=5dc54a69e19f260df3023eee",
"accountId"=>"5dc54a69e19f260df3023eee",
"accountType"=>"atlassian",
"emailAddress"=>"****@gitlab.com",
"avatarUrls"=>
{"48x48"=>"https://secure.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FAS-1.png",
"24x24"=>"https://secure.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FAS-1.png",
"16x16"=>"https://secure.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FAS-1.png",
"32x32"=>"https://secure.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=https%3A%2F%2Favatar-management--avatars.us-west-2.prod.public.atl-paas.net%2Finitials%2FAS-1.png"},
"displayName"=>"Andy Soiron",
"active"=>true,
"timeZone"=>"Europe/Berlin",
"locale"=>"en_GB"}]
[6] pry(main)> Jira::Requests::Users.new(jira_server_service).execute
=> [{"self"=>"http://localhost:8080/rest/api/2/user?username=asoiron",
"key"=>"JIRAUSER10000",
"name"=>"asoiron",
"emailAddress"=>"****@gitlab.com",
"avatarUrls"=>
{"48x48"=>"https://www.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=mm&s=48",
"24x24"=>"https://www.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=mm&s=24",
"16x16"=>"https://www.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=mm&s=16",
"32x32"=>"https://www.gravatar.com/avatar/6ccf944c390385a17b2d8f72653fb783?d=mm&s=32"},
"displayName"=>"****@gitlab.com",
"active"=>true,
"timeZone"=>"Europe/Berlin",
"locale"=>"en_GB"}]
[7] pry(main)>
Result: We can get a list of assignable users from both Jira Cloud and Server
Related to: #245425
Edited by Arturo Herrero