bloomy 0.4.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 453b980c92f83f6acf3d9a1191dcf94484a9a3acbc57811509f534964d0d15d7
4
- data.tar.gz: 2c1e08c2351256c4d16b37729ce8173f144ed3680cbdd2e46f55c2a7e57b23f7
3
+ metadata.gz: 5967a74a2cb5758a74e4877ab46a57eeba59f85a023039c1252d47087007bfd7
4
+ data.tar.gz: 6ded65188a434b4a3fa47cb9007b5c1e10e97b88266c6442e4e74684b7f7f552
5
5
  SHA512:
6
- metadata.gz: 2ae681b285f824f3ee6c5f5a9806a205d86d2c01fefe84263aa0b1d1d34bd1a3996b17dc98330051125a1b79d0f9e868ed79d7dc015294ba39a5fb71e3032ede
7
- data.tar.gz: 9a7710243dc62d7bb21e6b1fb0f2795c44dbb034b0fab8f787a5b3d93c942be7ff9d25ed9bde6552e10859bfd52565d090d8b0d3f576dda31afe4da440a88707
6
+ metadata.gz: d5eaeb394ba3edbd99e433ab9760f510a9a0e219c5b0de8cf2fe3ef0cac7a03a12fbf3325515e3485629186d600724e7e8001d32070baf400a23b9453fd64476
7
+ data.tar.gz: 9298429c7361153eb4f58e35604defb752362add6f43bb253413c21abe11e2ae4f6d4997c03df337e2f12dcc8097685333ab68c7f0b12656b8f3594804f773fa
data/.rubocop.yml CHANGED
@@ -1,30 +1,10 @@
1
- AllCops:
2
- NewCops: enable
3
- SuggestExtensions: false
4
-
5
- Gemspec/RequiredRubyVersion:
6
- Enabled: false
7
-
8
- Metrics/AbcSize:
9
- Enabled: false
10
-
11
- Metrics/BlockLength:
12
- Enabled: false
13
-
14
- Metrics/CyclomaticComplexity:
15
- Enabled: false
16
-
17
- Metrics/MethodLength:
18
- Enabled: false
19
-
20
- Metrics/PerceivedComplexity:
21
- Enabled: false
22
-
23
- Naming/AccessorMethodName:
24
- Enabled: false
25
-
26
- Gemspec/DevelopmentDependencies:
27
- Enabled: false
28
-
29
- Style/StringLiterals:
30
- EnforcedStyle: double_quotes
1
+ require:
2
+ - standard
3
+ - standard-custom
4
+ - standard-performance
5
+ - rubocop-performance
6
+
7
+ inherit_gem:
8
+ standard: config/base.yml
9
+ standard-custom: config/base.yml
10
+ standard-performance: config/base.yml
data/lib/bloomy/client.rb CHANGED
@@ -25,6 +25,9 @@ module Bloomy
25
25
  def initialize(api_key = nil)
26
26
  @configuration = Configuration.new unless api_key
27
27
  @api_key = api_key || @configuration.api_key
28
+
29
+ raise ArgumentError, "No API key provided. Set it in configuration or pass it directly." unless @api_key
30
+
28
31
  @base_url = "https://app.bloomgrowth.com/api/v1"
29
32
  @conn = Faraday.new(url: @base_url) do |faraday|
30
33
  faraday.response :json
@@ -29,7 +29,7 @@ class Goal
29
29
  due_date: goal["DueDate"],
30
30
  status: goal["Complete"] ? "Completed" : "Incomplete",
31
31
  meeting_id: goal["Origins"].empty? ? nil : goal["Origins"][0]["Id"],
32
- meeting_name: goal["Origins"].empty? ? nil : goal["Origins"][0]["Name"]
32
+ meeting_title: goal["Origins"].empty? ? nil : goal["Origins"][0]["Name"]
33
33
  }
34
34
  end
35
35
 
@@ -52,7 +52,7 @@ class Goal
52
52
  goal_id: response["Id"],
53
53
  title: title,
54
54
  meeting_id: meeting_id,
55
- meeting_name: response["Origins"][0]["Name"],
55
+ meeting_title: response["Origins"][0]["Name"],
56
56
  user_id: user_id,
57
57
  user_name: response["Owner"]["Name"],
58
58
  created_at: DateTime.parse(response["CreateTime"])
@@ -68,7 +68,7 @@ class Goal
68
68
  # #=> { status: 200 }
69
69
  def delete(goal_id)
70
70
  response = @conn.delete("/api/v1/rocks/#{goal_id}")
71
- {status: response.status}
71
+ response.success?
72
72
  end
73
73
 
74
74
  # Updates a goal
@@ -83,7 +83,7 @@ class Goal
83
83
  def update(goal_id:, title:, accountable_user: user_id)
84
84
  payload = {title: title, accountableUserId: accountable_user}.to_json
85
85
  response = @conn.put("/api/v1/rocks/#{goal_id}", payload)
86
- {status: response.status}
86
+ response.success?
87
87
  end
88
88
 
89
89
  private
@@ -56,7 +56,7 @@ class Headline
56
56
  notes_url: response.body["DetailsUrl"],
57
57
  meeting_details: {
58
58
  id: response.body["OriginId"],
59
- name: response.body["Origin"]
59
+ title: response.body["Origin"]
60
60
  },
61
61
  owner_details: {
62
62
  id: response.body["Owner"]["Id"],
@@ -79,9 +79,7 @@ class Headline
79
79
  # client.headline.list
80
80
  # #=> [{ id: 1, title: "Headline Title", meeting_details: { id: 1, name: "Team Meeting" }, ... }, ...]
81
81
  def list(user_id: nil, meeting_id: nil)
82
- if user_id && meeting_id
83
- raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both."
84
- end
82
+ raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both." if user_id && meeting_id
85
83
 
86
84
  if meeting_id
87
85
  response = @conn.get("/api/v1/l10/#{meeting_id}/headlines")
@@ -98,7 +96,7 @@ class Headline
98
96
  title: headline["Name"],
99
97
  meeting_details: {
100
98
  id: headline["OriginId"],
101
- name: headline["Origin"]
99
+ title: headline["Origin"]
102
100
  },
103
101
  owner_details: {
104
102
  id: headline["Owner"]["Id"],
@@ -118,9 +116,6 @@ class Headline
118
116
  # @return [Boolean] true if the deletion was successful
119
117
  def delete(meeting_id, headline_id)
120
118
  response = @conn.delete("/api/v1/L10/#{meeting_id}/headlines/#{headline_id}")
121
-
122
- # Raise an issue if response.status != 200
123
- raise "Failed to delete headline" unless response.status == 200
124
- true
119
+ response.success?
125
120
  end
126
121
  end
@@ -30,7 +30,7 @@ class Issue
30
30
  completed_at: response["CloseTime"],
31
31
  meeting_details: {
32
32
  id: response["OriginId"],
33
- name: response["Origin"]
33
+ title: response["Origin"]
34
34
  },
35
35
  owner_details: {
36
36
  id: response["Owner"]["Id"],
@@ -73,7 +73,7 @@ class Issue
73
73
  notes_url: issue["DetailsUrl"],
74
74
  created_at: issue["CreateTime"],
75
75
  meeting_id: issue["OriginId"],
76
- meeting_name: issue["Origin"]
76
+ meeting_title: issue["Origin"]
77
77
  }
78
78
  end
79
79
  end
@@ -86,8 +86,8 @@ class Issue
86
86
  # issue.complete(123)
87
87
  # #=> true
88
88
  def complete(issue_id)
89
- response = @conn.post("issues/#{issue_id}/complete", {complete: true}.to_json).status
90
- response == 200
89
+ response = @conn.post("issues/#{issue_id}/complete", {complete: true}.to_json)
90
+ response.success?
91
91
  end
92
92
 
93
93
  # Creates a new issue
@@ -100,7 +100,7 @@ class Meeting
100
100
  response.map do |measurable|
101
101
  {
102
102
  id: measurable["Id"],
103
- name: measurable["Name"].strip,
103
+ title: measurable["Name"].strip,
104
104
  target: measurable["Target"],
105
105
  operator: measurable["Direction"],
106
106
  format: measurable["Modifiers"],
@@ -132,7 +132,7 @@ class Meeting
132
132
  measurables = metrics(meeting_id)
133
133
  {
134
134
  id: meeting[:id],
135
- name: meeting[:name],
135
+ title: meeting[:name],
136
136
  attendees: attendees,
137
137
  issues: issues,
138
138
  todos: todos,
@@ -166,6 +166,7 @@ class Meeting
166
166
  # @example
167
167
  # client.meeting.delete(1)
168
168
  def delete(meeting_id)
169
- @conn.delete("L10/#{meeting_id}")
169
+ response = @conn.delete("L10/#{meeting_id}")
170
+ response.success?
170
171
  end
171
172
  end
@@ -49,10 +49,12 @@ class Scorecard
49
49
  #
50
50
  # # Fetch scorecards for a specific meeting
51
51
  # client.scorecard.list(meeting_id: 99)
52
+ # @note
53
+ # The `week_offset` parameter is useful when fetching scores for previous or future weeks.
54
+ # For example, to fetch scores for the previous week, you can set `week_offset` to -1.
55
+ # To fetch scores for a future week, you can set `week_offset` to a positive value.
52
56
  def list(user_id: nil, meeting_id: nil, show_empty: false, week_offset: nil)
53
- if user_id && meeting_id
54
- raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both."
55
- end
57
+ raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both." if user_id && meeting_id
56
58
 
57
59
  if meeting_id
58
60
  response = @conn.get("scorecard/meeting/#{meeting_id}").body
@@ -70,14 +72,15 @@ class Scorecard
70
72
  target: scorecard["Target"],
71
73
  value: scorecard["Measured"],
72
74
  week: scorecard["Week"],
75
+ week_id: scorecard["ForWeek"],
73
76
  updated_at: scorecard["DateEntered"]
74
77
  }
75
78
  end
76
79
 
77
80
  if week_offset
78
81
  week_data = current_week
79
- week_id = week_data[:week_number] - week_offset
80
- scorecards.select! { |scorecard| scorecard[:week] == week_id }
82
+ week_id = week_data[:week_number] + week_offset
83
+ scorecards.select! { |scorecard| scorecard[:week_id] == week_id }
81
84
  end
82
85
 
83
86
  scorecards.select! { |scorecard| scorecard[:value] || show_empty } unless show_empty
@@ -95,11 +98,11 @@ class Scorecard
95
98
  # #=> true
96
99
  # @note
97
100
  # The `week_offset` parameter is useful when updating scores for previous weeks.
98
- # For example, to update the score for the previous week, you can set `week_offset` to 1.
99
- # To update a future week's score, you can set `week_offset` to a negative value.
101
+ # For example, to update the score for the previous week, you can set `week_offset` to -1.
102
+ # To update a future week's score, you can set `week_offset` to a positive value.
100
103
  def score(measurable_id:, score:, week_offset: 0)
101
104
  week_data = current_week
102
- week_id = week_data[:week_number] - week_offset
105
+ week_id = week_data[:week_number] + week_offset
103
106
 
104
107
  response = @conn.put("measurables/#{measurable_id}/week/#{week_id}", {value: score}.to_json)
105
108
  response.success?
@@ -33,9 +33,7 @@ class Todo
33
33
  # client.todo.list(meeting_id: 99)
34
34
  # # => [{ id: 1, title: "New Todo", due_date: "2024-06-15", ... }]
35
35
  def list(user_id: nil, meeting_id: nil)
36
- if user_id && meeting_id
37
- raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both."
38
- end
36
+ raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both." if user_id && meeting_id
39
37
 
40
38
  if meeting_id
41
39
  response = @conn.get("l10/#{meeting_id}/todos").body
@@ -76,7 +74,7 @@ class Todo
76
74
  {
77
75
  id: response["Id"],
78
76
  title: response["Name"],
79
- meeting_name: response["Origin"],
77
+ meeting_title: response["Origin"],
80
78
  meeting_id: response["OriginId"],
81
79
  due_date: response["DueDate"],
82
80
  notes_url: response["DetailsUrl"]
@@ -92,7 +90,7 @@ class Todo
92
90
  # #=> { status: 200 }
93
91
  def complete(todo_id)
94
92
  response = @conn.post("/api/v1/todo/#{todo_id}/complete?status=true")
95
- {status: response.status}
93
+ response.success?
96
94
  end
97
95
 
98
96
  # Updates an existing todo
@@ -138,6 +136,7 @@ class Todo
138
136
  {
139
137
  id: todo["Id"],
140
138
  meeting_id: todo["OriginId"],
139
+ meeting_title: todo["Origin"],
141
140
  title: todo["Name"],
142
141
  notes_url: todo["DetailsUrl"],
143
142
  due_date: todo["DueDate"],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bloomy
4
- VERSION = "0.4.2"
4
+ VERSION = "0.5.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bloomy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franccesco Orozco