bloomy 0.3.0 → 0.4.2

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: 787640980ef91fe249c30313f21be2230cc0671de398f714f38e1200fc104a6f
4
- data.tar.gz: 6c2bb8a0b8e78371674fe5f18bc66ab44d91629d03484863442f4d3953c59707
3
+ metadata.gz: 453b980c92f83f6acf3d9a1191dcf94484a9a3acbc57811509f534964d0d15d7
4
+ data.tar.gz: 2c1e08c2351256c4d16b37729ce8173f144ed3680cbdd2e46f55c2a7e57b23f7
5
5
  SHA512:
6
- metadata.gz: da4639a0e6e6e633f972d31df14818ed64e3b690f565c7308f49ae53a08c061b74d944f4d7088f8ab024ed54b4301d4186a9747802c34b24c2b7f476afdab77a
7
- data.tar.gz: 6f4674b867eec7d42f5735c1c7a6725ff173ee2c8f7a1c8b22ef329ed8aa9f384e40632235a578e4d1efe654bccdda75255abbc9ab35313c11375d1815944dcb
6
+ metadata.gz: 2ae681b285f824f3ee6c5f5a9806a205d86d2c01fefe84263aa0b1d1d34bd1a3996b17dc98330051125a1b79d0f9e868ed79d7dc015294ba39a5fb71e3032ede
7
+ data.tar.gz: 9a7710243dc62d7bb21e6b1fb0f2795c44dbb034b0fab8f787a5b3d93c942be7ff9d25ed9bde6552e10859bfd52565d090d8b0d3f576dda31afe4da440a88707
data/lib/bloomy/client.rb CHANGED
@@ -34,13 +34,12 @@ module Bloomy
34
34
  faraday.headers["Authorization"] = "Bearer #{@api_key}"
35
35
  end
36
36
  @user = User.new(@conn)
37
- @user_id = @user.default_user_id
38
- @todo = Todo.new(@conn, @user_id)
39
- @goal = Goal.new(@conn, @user_id)
40
- @meeting = Meeting.new(@conn, @user_id)
41
- @scorecard = Scorecard.new(@conn, @user_id)
42
- @issue = Issue.new(@conn, @user_id)
43
- @headline = Headline.new(@conn, @user_id)
37
+ @todo = Todo.new(@conn)
38
+ @goal = Goal.new(@conn)
39
+ @meeting = Meeting.new(@conn)
40
+ @scorecard = Scorecard.new(@conn)
41
+ @issue = Issue.new(@conn)
42
+ @headline = Headline.new(@conn)
44
43
  end
45
44
  end
46
45
  end
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bloomy/utils/get_user_id"
4
+
3
5
  # Class to handle all the operations related to goals
4
6
  class Goal
7
+ include Bloomy::Utilities::UserIdUtility
5
8
  # Initializes a new Goal instance
6
9
  #
7
10
  # @param conn [Object] the connection object to interact with the API
8
- # @param user_id [Integer] the ID of the user
9
- def initialize(conn, user_id)
11
+ def initialize(conn)
10
12
  @conn = conn
11
- @user_id = user_id
12
13
  end
13
14
 
14
15
  # Lists all goals for a specific user
@@ -19,7 +20,7 @@ class Goal
19
20
  # @example
20
21
  # client.goal.list
21
22
  # #=> [{ id: 1, title: "Complete project", created_at: "2024-06-10", ... }, ...]
22
- def list(user_id: @user_id, archived: false)
23
+ def list(user_id = self.user_id, archived: false)
23
24
  active_goals = @conn.get("rocks/user/#{user_id}?include_origin=true").body.map do |goal|
24
25
  {
25
26
  id: goal["Id"],
@@ -32,7 +33,7 @@ class Goal
32
33
  }
33
34
  end
34
35
 
35
- archived ? {active: active_goals, archived: get_archived_goals(user_id: @user_id)} : active_goals
36
+ archived ? {active: active_goals, archived: get_archived_goals(self.user_id)} : active_goals
36
37
  end
37
38
 
38
39
  # Creates a new goal
@@ -44,7 +45,7 @@ class Goal
44
45
  # @example
45
46
  # client.goal.create(title: "New Goal", meeting_id: 1)
46
47
  # #=> { goal_id: 1, title: "New Goal", meeting_id: 1, ... }
47
- def create(title:, meeting_id:, user_id: @user_id)
48
+ def create(title:, meeting_id:, user_id: self.user_id)
48
49
  payload = {title: title, accountableUserId: user_id}.to_json
49
50
  response = @conn.post("/api/v1/L10/#{meeting_id}/rocks", payload).body
50
51
  {
@@ -79,7 +80,7 @@ class Goal
79
80
  # @example
80
81
  # client.goal.update(goal_id: 1, title: "Updated Goal")
81
82
  # #=> { status: 200 }
82
- def update(goal_id:, title:, accountable_user: @user_id)
83
+ def update(goal_id:, title:, accountable_user: user_id)
83
84
  payload = {title: title, accountableUserId: accountable_user}.to_json
84
85
  response = @conn.put("/api/v1/rocks/#{goal_id}", payload)
85
86
  {status: response.status}
@@ -94,7 +95,7 @@ class Goal
94
95
  # @example
95
96
  # goal.send(:get_archived_goals)
96
97
  # #=> [{ id: 1, title: "Archived Goal", created_at: "2024-06-10", ... }, ...]
97
- def get_archived_goals(user_id: @user_id)
98
+ def get_archived_goals(user_id = self.user_id)
98
99
  response = @conn.get("archivedrocks/user/#{user_id}").body
99
100
  response.map do |goal|
100
101
  {
@@ -1,23 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bloomy/utils/get_user_id"
4
+
3
5
  class Headline
6
+ include Bloomy::Utilities::UserIdUtility
4
7
  # Initializes a new headline instance
5
8
  #
6
9
  # @param conn [Object] the connection object to interact with the API
7
- # @param user_id [Integer] the ID of the user
8
- def initialize(conn, user_id)
10
+ def initialize(conn)
9
11
  @conn = conn
10
- @user_id = user_id
11
12
  end
12
13
 
13
14
  # Creates a new headline
14
15
  #
15
16
  # @param meeting_id [Integer] the ID of the meeting
16
17
  # @param title [String] the title of the headline
17
- # @param owner_id [Integer] the ID of the owner
18
+ # @param owner_id [Integer] the ID of the headline owner
18
19
  # @param notes [String] additional notes for the headline
19
20
  # @return [Hash] the created headline details
20
- def create(meeting_id, title, owner_id: @user_id, notes: nil)
21
+ def create(meeting_id, title, owner_id: user_id, notes: nil)
21
22
  response = @conn.post("/api/v1/L10/#{meeting_id}/headlines",
22
23
  {title: title, ownerId: owner_id, notes: notes}.to_json)
23
24
  raise "Failed to create headline" unless response.status == 200
@@ -26,7 +27,7 @@ class Headline
26
27
  id: response.body["Id"],
27
28
  title: response.body["Title"],
28
29
  owner_id: response.body["OwnerId"],
29
- notes: response.body["Notes"]
30
+ notes_url: response.body["DetailsUrl"]
30
31
  }
31
32
  end
32
33
 
@@ -52,6 +53,7 @@ class Headline
52
53
  {
53
54
  id: response.body["Id"],
54
55
  title: response.body["Name"],
56
+ notes_url: response.body["DetailsUrl"],
55
57
  meeting_details: {
56
58
  id: response.body["OriginId"],
57
59
  name: response.body["Origin"]
@@ -66,13 +68,30 @@ class Headline
66
68
  }
67
69
  end
68
70
 
69
- # Get user headlines
71
+ # Get headlines for a user or a meeting.
70
72
  #
71
- # @param user_id [Integer] the ID of the user
72
- # @return [Array] the list of headlines for the user
73
- def user_headlines(user_id: @user_id)
74
- response = @conn.get("/api/v1/headline/users/#{user_id}")
75
- raise "Failed to list headlines" unless response.status == 200
73
+ # @param user_id [Integer, nil] the ID of the user (defaults to initialized user_id)
74
+ # @param meeting_id [Integer, nil] the ID of the meeting
75
+ # @raise [ArgumentError] if both `user_id` and `meeting_id` are provided
76
+ # @return [Array<Hash>] the list of headlines
77
+ # @example
78
+ # # Fetch headlines for a user
79
+ # client.headline.list
80
+ # #=> [{ id: 1, title: "Headline Title", meeting_details: { id: 1, name: "Team Meeting" }, ... }, ...]
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
85
+
86
+ if meeting_id
87
+ response = @conn.get("/api/v1/l10/#{meeting_id}/headlines")
88
+ else
89
+ user_id ||= self.user_id
90
+ response = @conn.get("/api/v1/headline/users/#{user_id}")
91
+ end
92
+
93
+ raise "Failed to list headlines" unless response.success?
94
+
76
95
  response.body.map do |headline|
77
96
  {
78
97
  id: headline["Id"],
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
+ require "bloomy/utils/get_user_id"
4
5
 
5
6
  # Class to handle all the operations related to issues
6
7
  class Issue
8
+ include Bloomy::Utilities::UserIdUtility
7
9
  # Initializes a new Issue instance
8
10
  #
9
11
  # @param conn [Object] the connection object to interact with the API
10
- # @param user_id [Integer] the ID of the user
11
- def initialize(conn, user_id)
12
+ def initialize(conn)
12
13
  @conn = conn
13
- @user_id = user_id
14
14
  end
15
15
 
16
16
  # Retrieves details of a specific issue
@@ -39,15 +39,33 @@ class Issue
39
39
  }
40
40
  end
41
41
 
42
- # Lists issues for a specific user
42
+ # Lists issues for a specific user or meeting
43
43
  #
44
- # @param user_id [Integer] the ID of the user (default is the initialized user ID)
44
+ # @param user_id [Integer, nil] the ID of the user (defaults to initialized user_id)
45
+ # @param meeting_id [Integer, nil] the ID of the meeting
46
+ # @raise [ArgumentError] if both `user_id` and `meeting_id` are provided
45
47
  # @return [Array<Hash>] an array of hashes containing issues details
46
48
  # @example
49
+ # # Fetch issues for the current user
47
50
  # issue.list
48
- # #=> [{ id: 123, title: "Issue Title", notes_url: "http://details.url", ... }, ...]
49
- def list(user_id: @user_id)
50
- response = @conn.get("issues/users/#{user_id}").body
51
+ #
52
+ # # Fetch issues for a specific user
53
+ # issue.list(user_id: 42)
54
+ #
55
+ # # Fetch issues for a specific meeting
56
+ # issue.list(meeting_id: 99)
57
+ def list(user_id: nil, meeting_id: nil)
58
+ if user_id && meeting_id
59
+ raise ArgumentError, "Please provide either `user_id` or `meeting_id`, not both."
60
+ end
61
+
62
+ if meeting_id
63
+ response = @conn.get("l10/#{meeting_id}/issues").body
64
+ else
65
+ user_id ||= self.user_id
66
+ response = @conn.get("issues/users/#{user_id}").body
67
+ end
68
+
51
69
  response.map do |issue|
52
70
  {
53
71
  id: issue["Id"],
@@ -74,13 +92,15 @@ class Issue
74
92
 
75
93
  # Creates a new issue
76
94
  #
77
- # @param title [String] the title of the new issue
78
95
  # @param meeting_id [Integer] the ID of the meeting associated with the issue
96
+ # @param title [String] the title of the new issue
97
+ # @param user_id [Integer] the ID of the user responsible for the issue (default: initialized user ID)
98
+ # @param notes [String, nil] the notes for the issue (optional)
79
99
  # @return [Hash] a hash containing the new issue's ID and title
80
100
  # @example
81
- # issue.create("New Issue", 456)
101
+ # issue.create(meeting_id: 123, title: "New Issue")
82
102
  # #=> { id: 789, title: "New Issue" }
83
- def create(meeting_id:, title:, user_id: @user_id, notes: nil)
103
+ def create(meeting_id:, title:, user_id: self.user_id, notes: nil)
84
104
  response = @conn.post("issues/create", {title: title, meetingid: meeting_id, ownerid: user_id, notes: notes}.to_json)
85
105
  {
86
106
  id: response.body["Id"],
@@ -88,7 +108,7 @@ class Issue
88
108
  meeting_title: response.body["Origin"],
89
109
  title: response.body["Name"],
90
110
  user_id: response.body["Owner"]["Id"],
91
- details_url: response.body["DetailsUrl"]
111
+ notes_url: response.body["DetailsUrl"]
92
112
  }
93
113
  end
94
114
  end
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bloomy/utils/get_user_id"
4
+
3
5
  # Class to handle all the operations related to meeting
4
6
  # @note
5
7
  # This class is already initialized via the client and usable as `client.measurable.method`
6
8
  class Meeting
9
+ include Bloomy::Utilities::UserIdUtility
7
10
  # Initializes a new Meeting instance
8
11
  #
9
12
  # @param conn [Object] the connection object to interact with the API
10
- # @param user_id [Integer] the ID of the user
11
- def initialize(conn, user_id)
13
+ def initialize(conn)
12
14
  @conn = conn
13
- @user_id = user_id
14
15
  end
15
16
 
16
17
  # Lists all meetings for a specific user
@@ -20,7 +21,7 @@ class Meeting
20
21
  # @example
21
22
  # client.meeting.list
22
23
  # #=> [{ id: 123, name: "Team Meeting" }, ...]
23
- def list(user_id: @user_id)
24
+ def list(user_id = self.user_id)
24
25
  response = @conn.get("L10/#{user_id}/list").body
25
26
  response.map { |meeting| {id: meeting["Id"], name: meeting["Name"]} }
26
27
  end
@@ -148,7 +149,7 @@ class Meeting
148
149
  # @example
149
150
  # client.meeting.create(title: "New Meeting", attendees: [2, 3])
150
151
  # #=> { meeting_id: 1, title: "New Meeting", attendees: [2, 3] }
151
- def create(title:, add_self: true, attendees: [])
152
+ def create(title, add_self: true, attendees: [])
152
153
  payload = {title: title, addSelf: add_self}.to_json
153
154
  response = @conn.post("L10/create", payload).body
154
155
  meeting_id = response["meetingId"]
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
+ require "bloomy/utils/get_user_id"
4
5
 
5
6
  # Class to handle all the operations related to scorecards
6
7
  # @note
7
8
  # This class is already initialized via the client and usable as `client.scorecard.method`
8
9
  class Scorecard
10
+ include Bloomy::Utilities::UserIdUtility
11
+
9
12
  # Initializes a new Scorecard instance
10
13
  #
11
14
  # @param conn [Object] the connection object to interact with the API
12
- # @param user_id [Integer] the ID of the user
13
- def initialize(conn, user_id)
15
+ def initialize(conn)
14
16
  @conn = conn
15
- @user_id = user_id
16
17
  end
17
18
 
18
19
  # Retrieves the current week details
@@ -56,7 +57,7 @@ class Scorecard
56
57
  if meeting_id
57
58
  response = @conn.get("scorecard/meeting/#{meeting_id}").body
58
59
  else
59
- user_id ||= @user_id
60
+ user_id ||= self.user_id
60
61
  response = @conn.get("scorecard/user/#{user_id}").body
61
62
  end
62
63
 
@@ -1,31 +1,54 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "date"
4
+ require_relative "../utils/get_user_id"
4
5
 
5
6
  # Class to handle all the operations related to todos
6
7
  class Todo
8
+ include Bloomy::Utilities::UserIdUtility
9
+
7
10
  # Initializes a new Todo instance
8
11
  #
9
12
  # @param conn [Object] the connection object to interact with the API
10
- # @param user_id [Integer] the ID of the user
11
- def initialize(conn, user_id)
13
+ def initialize(conn)
12
14
  @conn = conn
13
- @user_id = user_id
14
15
  end
15
16
 
16
- # Lists all todos for a specific user
17
+ # Lists all todos for a specific user or meeting
17
18
  #
18
- # @param user_id [Integer] the ID of the user (default is the initialized user ID)
19
+ # @param user_id [Integer, nil] the ID of the user (default is the initialized user ID)
20
+ # @param meeting_id [Integer, nil] the ID of the meeting
19
21
  # @return [Array<Hash>] an array of hashes containing todo details
22
+ # @raise [ArgumentError] if both `user_id` and `meeting_id` are provided
20
23
  # @example
24
+ # # Fetch todos for the current user
21
25
  # client.todo.list
22
- # #=> [{ id: 1, title: "Finish report", due_date: "2024-06-10", ... }, ...]
23
- def list(user_id: @user_id)
24
- response = @conn.get("todo/user/#{user_id}").body
26
+ # #=> [{ id: 1, title: "New Todo", due_date: "2024-06-15", ... }]
27
+ #
28
+ # # Fetch todos for a specific user
29
+ # client.todo.list(user_id: 42)
30
+ # # => [{ id: 1, title: "New Todo", due_date: "2024-06-15", ... }]
31
+ #
32
+ # # Fetch todos for a specific meeting
33
+ # client.todo.list(meeting_id: 99)
34
+ # # => [{ id: 1, title: "New Todo", due_date: "2024-06-15", ... }]
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
39
+
40
+ if meeting_id
41
+ response = @conn.get("l10/#{meeting_id}/todos").body
42
+ else
43
+ user_id ||= self.user_id
44
+ response = @conn.get("todo/user/#{user_id}").body
45
+ end
46
+
25
47
  response.map do |todo|
26
48
  {
27
49
  id: todo["Id"],
28
50
  title: todo["Name"],
51
+ notes_url: todo["DetailsUrl"],
29
52
  due_date: todo["DueDate"],
30
53
  created_at: todo["CreateTime"],
31
54
  completed_at: todo["CompleteTime"],
@@ -40,12 +63,13 @@ class Todo
40
63
  # @param meeting_id [Integer] the ID of the meeting associated with the todo
41
64
  # @param due_date [String, nil] the due date of the todo (optional)
42
65
  # @param user_id [Integer] the ID of the user responsible for the todo (default: initialized user ID)
66
+ # @param notes [String, nil] additional notes for the todo (optional)
43
67
  # @return [Hash] a hash containing the new todo's details
44
68
  # @example
45
69
  # client.todo.create(title: "New Todo", meeting_id: 1, due_date: "2024-06-15")
46
70
  # #=> { id: 1, title: "New Todo", meeting_name: "Team Meeting", ... }
47
- def create(title:, meeting_id:, due_date: nil, user_id: @user_id)
48
- payload = {title: title, accountableUserId: user_id}
71
+ def create(title:, meeting_id:, due_date: nil, user_id: self.user_id, notes: nil)
72
+ payload = {title: title, accountableUserId: user_id, notes: notes}
49
73
  payload[:dueDate] = due_date if due_date
50
74
  response = @conn.post("/api/v1/L10/#{meeting_id}/todos", payload.to_json).body
51
75
 
@@ -54,7 +78,8 @@ class Todo
54
78
  title: response["Name"],
55
79
  meeting_name: response["Origin"],
56
80
  meeting_id: response["OriginId"],
57
- due_date: response["DueDate"]
81
+ due_date: response["DueDate"],
82
+ notes_url: response["DetailsUrl"]
58
83
  }
59
84
  end
60
85
 
@@ -96,4 +121,29 @@ class Todo
96
121
  updated_at: DateTime.now.to_s
97
122
  }
98
123
  end
124
+
125
+ # Retrieves the details of a specific todo item by its ID.
126
+ #
127
+ # @param todo_id [String] The ID of the todo item to retrieve.
128
+ # @return [Hash] A hash containing the details of the todo item.
129
+ # @raise [RuntimeError] If the request to retrieve the todo details fails.
130
+ # @example
131
+ # client.todo.details(1)
132
+ # #=> { id: 1, title: "Updated Todo", due_date: "2024-11-01T01:41:41.528Z", ... }
133
+ def details(todo_id)
134
+ response = @conn.get("/api/v1/todo/#{todo_id}")
135
+ raise "Failed to get todo details. Status: #{response.status}" unless response.success?
136
+
137
+ todo = response.body
138
+ {
139
+ id: todo["Id"],
140
+ meeting_id: todo["OriginId"],
141
+ title: todo["Name"],
142
+ notes_url: todo["DetailsUrl"],
143
+ due_date: todo["DueDate"],
144
+ created_at: todo["CreateTime"],
145
+ completed_at: todo["CompleteTime"],
146
+ status: todo["Complete"] ? "Complete" : "Incomplete"
147
+ }
148
+ end
99
149
  end
@@ -1,26 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bloomy/utils/get_user_id"
4
+
3
5
  # Class to handle all the operations related to users
4
6
  class User
5
- attr_reader :default_user_id
7
+ include Bloomy::Utilities::UserIdUtility
6
8
 
7
9
  # Initializes a new User instance
8
10
  #
9
11
  # @param conn [Object] the connection object to interact with the API
10
12
  def initialize(conn)
11
13
  @conn = conn
12
- @default_user_id = current_user_id
13
- end
14
-
15
- # Retrieves the current user's ID
16
- #
17
- # @return [Integer] the ID of the current user
18
- # @example
19
- # client.user.current_user_id
20
- # #=> 1
21
- def current_user_id
22
- response = @conn.get("users/mine").body
23
- response["Id"]
24
14
  end
25
15
 
26
16
  # Retrieves details of a specific user
@@ -33,13 +23,12 @@ class User
33
23
  # @example
34
24
  # client.user.details
35
25
  # #=> {name: "John Doe", id: 1, image_url: "http://example.com/image.jpg", ...}
36
- def details(user_id: @default_user_id, direct_reports: false, positions: false, all: false)
26
+ def details(user_id = self.user_id, direct_reports: false, positions: false, all: false)
37
27
  response = @conn.get("users/#{user_id}").body
38
28
  user_details = {name: response["Name"], id: response["Id"], image_url: response["ImageUrl"]}
39
29
 
40
- user_details[:direct_reports] = direct_reports(user_id: user_id) if direct_reports || all
41
- user_details[:positions] = positions(user_id: user_id) if positions || all
42
-
30
+ user_details[:direct_reports] = direct_reports(user_id) if direct_reports || all
31
+ user_details[:positions] = positions(user_id) if positions || all
43
32
  user_details
44
33
  end
45
34
 
@@ -50,7 +39,7 @@ class User
50
39
  # @example
51
40
  # client.user.direct_reports
52
41
  # #=> [{name: "Jane Smith", id: 2, image_url: "http://example.com/image.jpg"}, ...]
53
- def direct_reports(user_id: @default_user_id)
42
+ def direct_reports(user_id = self.user_id)
54
43
  direct_reports_response = @conn.get("users/#{user_id}/directreports").body
55
44
  direct_reports_response.map { |report| {name: report["Name"], id: report["Id"], image_url: report["ImageUrl"]} }
56
45
  end
@@ -62,7 +51,7 @@ class User
62
51
  # @example
63
52
  # user.positions
64
53
  # #=> [{name: "Manager", id: 3}, ...]
65
- def positions(user_id: @default_user_id)
54
+ def positions(user_id = self.user_id)
66
55
  position_response = @conn.get("users/#{user_id}/seats").body
67
56
  position_response.map do |position|
68
57
  {name: position["Group"]["Position"]["Name"], id: position["Group"]["Position"]["Id"]}
@@ -0,0 +1,22 @@
1
+ module Bloomy
2
+ module Utilities
3
+ module UserIdUtility
4
+ # Lazy loads the user_id of the default user
5
+ #
6
+ # @return [String] the user_id of the default user
7
+ def user_id
8
+ @user_id ||= default_user_id
9
+ end
10
+
11
+ private
12
+
13
+ # Returns the user_id of the default user
14
+ #
15
+ # @return [String] The user_id of the default user
16
+ def default_user_id
17
+ response = @conn.get("users/mine").body
18
+ response["Id"]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bloomy
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bloomy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franccesco Orozco
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-04 00:00:00.000000000 Z
11
+ date: 2024-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -64,6 +64,7 @@ files:
64
64
  - lib/bloomy/operations/scorecard.rb
65
65
  - lib/bloomy/operations/todos.rb
66
66
  - lib/bloomy/operations/users.rb
67
+ - lib/bloomy/utils/get_user_id.rb
67
68
  - lib/bloomy/version.rb
68
69
  - sig/bloomy.rbs
69
70
  homepage: https://github.com/franccesco/bloomy