bloomy 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 492d10b82ab6034c0113b74c8d70352ef604039018f9fcfeca60924ded9414da
4
- data.tar.gz: 2ff5fe5f2e515ee6949ed33caaa67112a24caf47a07cada9c2dfaf88edceaedd
3
+ metadata.gz: 787640980ef91fe249c30313f21be2230cc0671de398f714f38e1200fc104a6f
4
+ data.tar.gz: 6c2bb8a0b8e78371674fe5f18bc66ab44d91629d03484863442f4d3953c59707
5
5
  SHA512:
6
- metadata.gz: 7414ba3b18b68878812929e5b82ce23253051d1f04a1ee2dbfcec418871db4255c44253d7497b6305cf86b7b60398affe0eade73bd16838fbb4a4d31bf2c1858
7
- data.tar.gz: 067e2ab5d9b5f92a8da3c9489c8bb3318bd5818a9adeb21e867fd05e7357bf3e24ce986c8250c31128435e8e084ede3199aeee3cbab749fa1922cb4dbbd69ce7
6
+ metadata.gz: da4639a0e6e6e633f972d31df14818ed64e3b690f565c7308f49ae53a08c061b74d944f4d7088f8ab024ed54b4301d4186a9747802c34b24c2b7f476afdab77a
7
+ data.tar.gz: 6f4674b867eec7d42f5735c1c7a6725ff173ee2c8f7a1c8b22ef329ed8aa9f384e40632235a578e4d1efe654bccdda75255abbc9ab35313c11375d1815944dcb
data/lib/bloomy/client.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  require "faraday"
4
4
  require_relative "operations/users"
5
5
  require_relative "operations/todos"
6
- require_relative "operations/rocks"
6
+ require_relative "operations/goals"
7
7
  require_relative "operations/meetings"
8
8
  require_relative "operations/scorecard"
9
9
  require_relative "operations/issues"
@@ -13,7 +13,7 @@ module Bloomy
13
13
  # The Client class is the main entry point for interacting with the Bloomy API.
14
14
  # It provides methods for managing Bloom Growth features.
15
15
  class Client
16
- attr_reader :configuration, :user, :todo, :rock, :meeting, :scorecard, :issue, :headline
16
+ attr_reader :configuration, :user, :todo, :goal, :meeting, :scorecard, :issue, :headline
17
17
 
18
18
  # Initializes a new Client instance
19
19
  #
@@ -36,7 +36,7 @@ module Bloomy
36
36
  @user = User.new(@conn)
37
37
  @user_id = @user.default_user_id
38
38
  @todo = Todo.new(@conn, @user_id)
39
- @rock = Rock.new(@conn, @user_id)
39
+ @goal = Goal.new(@conn, @user_id)
40
40
  @meeting = Meeting.new(@conn, @user_id)
41
41
  @scorecard = Scorecard.new(@conn, @user_id)
42
42
  @issue = Issue.new(@conn, @user_id)
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class to handle all the operations related to goals
4
+ class Goal
5
+ # Initializes a new Goal instance
6
+ #
7
+ # @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)
10
+ @conn = conn
11
+ @user_id = user_id
12
+ end
13
+
14
+ # Lists all goals for a specific user
15
+ #
16
+ # @param user_id [Integer] the ID of the user (default is the initialized user ID)
17
+ # @param archived [Boolean] whether to include archived goals (default: false)
18
+ # @return [Array<Hash>] an array of hashes containing goal details or a hash with active and archived goals
19
+ # @example
20
+ # client.goal.list
21
+ # #=> [{ id: 1, title: "Complete project", created_at: "2024-06-10", ... }, ...]
22
+ def list(user_id: @user_id, archived: false)
23
+ active_goals = @conn.get("rocks/user/#{user_id}?include_origin=true").body.map do |goal|
24
+ {
25
+ id: goal["Id"],
26
+ title: goal["Name"],
27
+ created_at: goal["CreateTime"],
28
+ due_date: goal["DueDate"],
29
+ status: goal["Complete"] ? "Completed" : "Incomplete",
30
+ meeting_id: goal["Origins"].empty? ? nil : goal["Origins"][0]["Id"],
31
+ meeting_name: goal["Origins"].empty? ? nil : goal["Origins"][0]["Name"]
32
+ }
33
+ end
34
+
35
+ archived ? {active: active_goals, archived: get_archived_goals(user_id: @user_id)} : active_goals
36
+ end
37
+
38
+ # Creates a new goal
39
+ #
40
+ # @param title [String] the title of the new goal
41
+ # @param meeting_id [Integer] the ID of the meeting associated with the goal
42
+ # @param user_id [Integer] the ID of the user responsible for the goal (default: initialized user ID)
43
+ # @return [Hash] a hash containing the new goal's details
44
+ # @example
45
+ # client.goal.create(title: "New Goal", meeting_id: 1)
46
+ # #=> { goal_id: 1, title: "New Goal", meeting_id: 1, ... }
47
+ def create(title:, meeting_id:, user_id: @user_id)
48
+ payload = {title: title, accountableUserId: user_id}.to_json
49
+ response = @conn.post("/api/v1/L10/#{meeting_id}/rocks", payload).body
50
+ {
51
+ goal_id: response["Id"],
52
+ title: title,
53
+ meeting_id: meeting_id,
54
+ meeting_name: response["Origins"][0]["Name"],
55
+ user_id: user_id,
56
+ user_name: response["Owner"]["Name"],
57
+ created_at: DateTime.parse(response["CreateTime"])
58
+ }
59
+ end
60
+
61
+ # Deletes a goal
62
+ #
63
+ # @param goal_id [Integer] the ID of the goal to delete
64
+ # @return [Hash] a hash containing the status of the delete operation
65
+ # @example
66
+ # client.goal.delete(1)
67
+ # #=> { status: 200 }
68
+ def delete(goal_id)
69
+ response = @conn.delete("/api/v1/rocks/#{goal_id}")
70
+ {status: response.status}
71
+ end
72
+
73
+ # Updates a goal
74
+ #
75
+ # @param goal_id [Integer] the ID of the goal to update
76
+ # @param title [String] the new title of the goal
77
+ # @param accountable_user [Integer] the ID of the user responsible for the goal (default: initialized user ID)
78
+ # @return [Hash] a hash containing the status of the update operation
79
+ # @example
80
+ # client.goal.update(goal_id: 1, title: "Updated Goal")
81
+ # #=> { status: 200 }
82
+ def update(goal_id:, title:, accountable_user: @user_id)
83
+ payload = {title: title, accountableUserId: accountable_user}.to_json
84
+ response = @conn.put("/api/v1/rocks/#{goal_id}", payload)
85
+ {status: response.status}
86
+ end
87
+
88
+ private
89
+
90
+ # Retrieves all archived goals for a specific user (private method)
91
+ #
92
+ # @param user_id [Integer] the ID of the user (default is the initialized user ID)
93
+ # @return [Array<Hash>] an array of hashes containing archived goal details
94
+ # @example
95
+ # goal.send(:get_archived_goals)
96
+ # #=> [{ id: 1, title: "Archived Goal", created_at: "2024-06-10", ... }, ...]
97
+ def get_archived_goals(user_id: @user_id)
98
+ response = @conn.get("archivedrocks/user/#{user_id}").body
99
+ response.map do |goal|
100
+ {
101
+ id: goal["Id"],
102
+ title: goal["Name"],
103
+ created_at: goal["CreateTime"],
104
+ due_date: goal["DueDate"],
105
+ status: goal["Complete"] ? "Complete" : "Incomplete"
106
+ }
107
+ end
108
+ end
109
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bloomy
4
- VERSION = "0.2.1"
4
+ VERSION = "0.3.0"
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.2.1
4
+ version: 0.3.0
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-03 00:00:00.000000000 Z
11
+ date: 2024-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -57,10 +57,10 @@ files:
57
57
  - lib/bloomy.rb
58
58
  - lib/bloomy/client.rb
59
59
  - lib/bloomy/configuration.rb
60
+ - lib/bloomy/operations/goals.rb
60
61
  - lib/bloomy/operations/headlines.rb
61
62
  - lib/bloomy/operations/issues.rb
62
63
  - lib/bloomy/operations/meetings.rb
63
- - lib/bloomy/operations/rocks.rb
64
64
  - lib/bloomy/operations/scorecard.rb
65
65
  - lib/bloomy/operations/todos.rb
66
66
  - lib/bloomy/operations/users.rb
@@ -1,109 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Class to handle all the operations related to rocks
4
- class Rock
5
- # Initializes a new Rock instance
6
- #
7
- # @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)
10
- @conn = conn
11
- @user_id = user_id
12
- end
13
-
14
- # Lists all rocks for a specific user
15
- #
16
- # @param user_id [Integer] the ID of the user (default is the initialized user ID)
17
- # @param archived [Boolean] whether to include archived rocks (default: false)
18
- # @return [Array<Hash>] an array of hashes containing rock details or a hash with active and archived rocks
19
- # @example
20
- # client.rock.list
21
- # #=> [{ id: 1, title: "Complete project", created_at: "2024-06-10", ... }, ...]
22
- def list(user_id: @user_id, archived: false)
23
- active_rocks = @conn.get("rocks/user/#{user_id}?include_origin=true").body.map do |rock|
24
- {
25
- id: rock["Id"],
26
- title: rock["Name"],
27
- created_at: rock["CreateTime"],
28
- due_date: rock["DueDate"],
29
- status: rock["Complete"] ? "Completed" : "Incomplete",
30
- meeting_id: rock["Origins"].empty? ? nil : rock["Origins"][0]["Id"],
31
- meeting_name: rock["Origins"].empty? ? nil : rock["Origins"][0]["Name"]
32
- }
33
- end
34
-
35
- archived ? {active: active_rocks, archived: get_archived_rocks(user_id: @user_id)} : active_rocks
36
- end
37
-
38
- # Creates a new rock
39
- #
40
- # @param title [String] the title of the new rock
41
- # @param meeting_id [Integer] the ID of the meeting associated with the rock
42
- # @param user_id [Integer] the ID of the user responsible for the rock (default: initialized user ID)
43
- # @return [Hash] a hash containing the new rock's details
44
- # @example
45
- # client.rock.create(title: "New Rock", meeting_id: 1)
46
- # #=> { rock_id: 1, title: "New Rock", meeting_id: 1, ... }
47
- def create(title:, meeting_id:, user_id: @user_id)
48
- payload = {title: title, accountableUserId: user_id}.to_json
49
- response = @conn.post("/api/v1/L10/#{meeting_id}/rocks", payload).body
50
- {
51
- rock_id: response["Id"],
52
- title: title,
53
- meeting_id: meeting_id,
54
- meeting_name: response["Origins"][0]["Name"],
55
- user_id: user_id,
56
- user_name: response["Owner"]["Name"],
57
- created_at: DateTime.parse(response["CreateTime"])
58
- }
59
- end
60
-
61
- # Deletes a rock
62
- #
63
- # @param rock_id [Integer] the ID of the rock to delete
64
- # @return [Hash] a hash containing the status of the delete operation
65
- # @example
66
- # client.rock.delete(1)
67
- # #=> { status: 200 }
68
- def delete(rock_id)
69
- response = @conn.delete("/api/v1/rocks/#{rock_id}")
70
- {status: response.status}
71
- end
72
-
73
- # Updates a rock
74
- #
75
- # @param rock_id [Integer] the ID of the rock to update
76
- # @param title [String] the new title of the rock
77
- # @param accountable_user [Integer] the ID of the user responsible for the rock (default: initialized user ID)
78
- # @return [Hash] a hash containing the status of the update operation
79
- # @example
80
- # client.rock.update(rock_id: 1, title: "Updated Rock")
81
- # #=> { status: 200 }
82
- def update(rock_id:, title:, accountable_user: @user_id)
83
- payload = {title: title, accountableUserId: accountable_user}.to_json
84
- response = @conn.put("/api/v1/rocks/#{rock_id}", payload)
85
- {status: response.status}
86
- end
87
-
88
- private
89
-
90
- # Retrieves all archived rocks for a specific user (private method)
91
- #
92
- # @param user_id [Integer] the ID of the user (default is the initialized user ID)
93
- # @return [Array<Hash>] an array of hashes containing archived rock details
94
- # @example
95
- # rock.send(:get_archived_rocks)
96
- # #=> [{ id: 1, title: "Archived Rock", created_at: "2024-06-10", ... }, ...]
97
- def get_archived_rocks(user_id: @user_id)
98
- response = @conn.get("archivedrocks/user/#{user_id}").body
99
- response.map do |rock|
100
- {
101
- id: rock["Id"],
102
- title: rock["Name"],
103
- created_at: rock["CreateTime"],
104
- due_date: rock["DueDate"],
105
- status: rock["Complete"] ? "Complete" : "Incomplete"
106
- }
107
- end
108
- end
109
- end