Skip to content

Draft: Try obtaining users and labels from Jira API

Andy Schoenen requested to merge example_get_users_and_labels_from_jira into master

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

Merge request reports