Class: Gitlab::Zentao::Client
- Inherits:
-
Object
- Object
- Gitlab::Zentao::Client
- Defined in:
- lib/gitlab/zentao/client.rb
Constant Summary collapse
- Error =
Class.new(StandardError)
- ConfigError =
Class.new(Error)
- RequestError =
Class.new(Error)
- CACHE_MAX_SET_SIZE =
5_000
- CACHE_TTL =
1.month.freeze
Instance Attribute Summary collapse
-
#integration ⇒ Object
readonly
Returns the value of attribute integration.
Instance Method Summary collapse
- #fetch_issue(issue_id) ⇒ Object
- #fetch_issues(params = {}) ⇒ Object
- #fetch_product(product_id) ⇒ Object
-
#initialize(integration) ⇒ Client
constructor
A new instance of Client.
- #ping ⇒ Object
Constructor Details
#initialize(integration) ⇒ Client
Returns a new instance of Client.
15 16 17 18 19 |
# File 'lib/gitlab/zentao/client.rb', line 15 def initialize(integration) raise ConfigError, 'Please check your integration configuration.' unless integration @integration = integration end |
Instance Attribute Details
#integration ⇒ Object (readonly)
Returns the value of attribute integration.
13 14 15 |
# File 'lib/gitlab/zentao/client.rb', line 13 def integration @integration end |
Instance Method Details
#fetch_issue(issue_id) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/gitlab/zentao/client.rb', line 45 def fetch_issue(issue_id) raise Error, 'invalid issue id' unless issue_id_pattern.match(issue_id) # Only return issues that are associated with the product configured in # the integration. Due to a lack of available data in the ZenTao APIs, we # can only determine if an issue belongs to a product if the issue was # previously returned in the `#fetch_issues` call. # # See https://gitlab.com/gitlab-org/gitlab/-/issues/360372#note_1016963713 raise RequestError unless issue_seen_in_product?(issue_id) get("issues/#{issue_id}") end |
#fetch_issues(params = {}) ⇒ Object
39 40 41 42 43 |
# File 'lib/gitlab/zentao/client.rb', line 39 def fetch_issues(params = {}) get("products/#{zentao_product_xid}/issues", params).tap do |response| mark_issues_as_seen_in_product(response['issues']) end end |
#fetch_product(product_id) ⇒ Object
35 36 37 |
# File 'lib/gitlab/zentao/client.rb', line 35 def fetch_product(product_id) get("products/#{product_id}") end |
#ping ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/gitlab/zentao/client.rb', line 21 def ping response = begin fetch_product(zentao_product_xid) rescue StandardError {} end active = response['deleted'] == '0' if active { success: true } else { success: false, message: 'Not Found' } end end |