Class: Fastlane::Helper::SqCiToolsYandexTrackerHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb

Class Method Summary collapse

Class Method Details

.create_issue(query:, body:, iam_token:, organization_id:) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 33

def self.create_issue(query:, body:, iam_token:, organization_id:)
  http = self.get_http

  query_params = URI.encode_www_form(query)
  request = Net::HTTP::Post.new("/v3/issues?#{query_params}")
  self.fill_headers(
    request: request,
    iam_token: iam_token,
    organization_id: organization_id
  )

  request.body = body.to_json
  response = http.request(request)

  if response.kind_of? Net::HTTPSuccess
    json_body = JSON.parse(response.body)
    return json_body
  else
    UI.user_error!("Unable to fetch Yandex Tracker issues: #{response.message}, #{response.body}")
  end
end

.fill_headers(request:, iam_token:, organization_id:) ⇒ Object



109
110
111
112
113
114
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 109

def self.fill_headers(request:, iam_token:, organization_id:)
  request.add_field('Content-Type', 'application/json')
  request.add_field('Host', HOST)
  request.add_field('Authorization', "Bearer #{iam_token}")
  request.add_field('X-Cloud-Org-ID', organization_id)
end

.find_issues(query:, body:, iam_token:, organization_id:) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 11

def self.find_issues(query:, body:, iam_token:, organization_id:)
  http = self.get_http

  query_params = URI.encode_www_form(query)
  request = Net::HTTP::Post.new("/v3/issues/_search?#{query_params}")
  self.fill_headers(
    request: request,
    iam_token: iam_token,
    organization_id: organization_id
  )

  request.body = body.to_json
  response = http.request(request)

  if response.kind_of? Net::HTTPSuccess
    json_body = JSON.parse(response.body)
    return json_body
  else
    UI.user_error!("Unable to fetch Yandex Tracker issues: #{response.message}, #{response.body}")
  end
end

.get_httpObject



100
101
102
103
104
105
106
107
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 100

def self.get_http
  uri = URI.parse("https://#{HOST}")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.set_debug_output($stdout)

  http
end

.transit_issue(issue_id:, transition_name:, iam_token:, organization_id:) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 78

def self.transit_issue(issue_id:, transition_name:, iam_token:, organization_id:)
  http = self.get_http

  request = Net::HTTP::Post.new("/v3/issues/#{issue_id}/transitions/#{transition_name}/_execute")
  self.fill_headers(
    request: request,
    iam_token: iam_token,
    organization_id: organization_id
  )

  response = http.request(request)

  if response.kind_of? Net::HTTPSuccess
    json_body = JSON.parse(response.body)
    return json_body
  else
    UI.user_error!("Unable to fetch Yandex Tracker issues: #{response.message}, #{response.body}")
  end
end

.update_issue(query:, issue_id:, body:, iam_token:, organization_id:) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/fastlane/plugin/sq_ci_tools/helper/sq_ci_tools_yandex_tracker_helper.rb', line 56

def self.update_issue(query:, issue_id:, body:, iam_token:, organization_id:)
  http = self.get_http

  query_params = URI.encode_www_form(query)
  request = Net::HTTP::Patch.new("/v3/issues/#{issue_id}?#{query_params}")
  self.fill_headers(
    request: request,
    iam_token: iam_token,
    organization_id: organization_id
  )

  request.body = body.to_json
  response = http.request(request)

  if response.kind_of? Net::HTTPSuccess
    json_body = JSON.parse(response.body)
    return json_body
  else
    UI.user_error!("Unable to fetch Yandex Tracker issues: #{response.message}, #{response.body}")
  end
end