Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 18 additions & 16 deletions feedback.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Feedback Rubric

- Student Being Reviewed:
- Reviewer:
- Classroom:
- Student Being Reviewed: Cathy Ouyang
- Reviewer: Antonia Irizarry
- Classroom: Space

## Manual App Testing

Expand All @@ -17,7 +17,7 @@
1. Practices best practices working with APIs. (The .env is not checked into git, and no API token was directly used in the Ruby code without ENV.)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -26,7 +26,7 @@
2. Practices error handling with APIs. (For all pieces of code that make an API call, it handles API requests that come back with errors/error status codes appropriately.)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -35,7 +35,7 @@
3. Implements inheritance and inheritance idioms. There is a Recipient class. User and Channel inherit from Recipient. In Recipient, there are appropriate methods defined that are used in both User and Channel. Some may be implemented. Some may be template methods.
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -51,7 +51,7 @@
</ul>
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -60,7 +60,7 @@
5. Practices instance methods vs. class methods appropriately. (The methods to list all Channels or Users is a class method within those respective classes.)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -70,7 +70,7 @@
6. Practices best practices for testing. (The project has and uses VCR mocking when running tests, and can run offline.)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -80,7 +80,7 @@
7. Practices writing tests. (The User, Channel, and Workspace classes have unit tests.)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -90,7 +90,7 @@
8. There are also tests for sending messages (the location of these tests may differ, but is likely in Recipient)
</td>
<td>
yes/no
yes
</td>
</tr>

Expand All @@ -100,7 +100,7 @@
9. Practices git with at least 15 small commits and meaningful commit messages
</td>
<td>
yes/no
yes
</td>
</tr>
</table>
Expand All @@ -118,33 +118,35 @@
<td>1. As a user of the CLI program, I can <strong>list</strong> users and channels with the commands <code>list users</code> and <code>list channels</code>
</td>
<td>
yes/no
yes
</td>

</tr>
<tr>
<td>2. As a user of the CLI program, I can <strong>select</strong> users and channels with the commands <code>select user</code> and <code>select channel</code>
</td>
<td>
yes/no
yes
</td>
</tr>

<tr>
<td>3. As a user of the CLI program, I can show the details of a selected user or channel with the command <code>details</code>
</td>
<td>
yes/no
yes
</td>
</tr>

<tr>
<td>4. As a user of the CLI program, when I input something inappropriately, the program runs without crashing. Example commands to try are <code>do_something</code>, or <code>select user</code> followed by <code>Mr. Fakename</code>
</td>
<td>
yes/no
yes
</td>
</tr>
</table>

Good job! Nice presentation on the CLI, too.

**At the end of this review, don't forget to commit and push your review. Otherwise, instructors won't be able to see your work.**
60 changes: 40 additions & 20 deletions individual-reflection.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,48 +9,68 @@ Answer the following comprehension questions **within this file.** Write your an
### `GET` Request Review

1. Describe a GET request that your project makes, and the high-level description of what it does
- Answer:
- Answer: One of my GET request makes an API call to the "conversations history" endpoint and asks Slack API to send me back with the data of recipient message history. (This is the method #get_message_history)
On a high level, the GET request is part of a HTTP request/response cycle. My program and my computer is the client that makes a request to Slack API Server with the required parameters, and asks for data to be sent back to me as the response.
1. What is the verb of this request?
- Answer:
- Answer: GET
1. What is the path (or the URL, or endpoint) of this request?
- Answer:
- Answer: "https://slack.com/api/conversations.history"
1. What are the query params (the additional data sent with the request, besides the verb and the path)?
- Answer:
- Answer: 2 required: token, channel. Other optional query params such as limit.
1. What is the syntax used to make this request? (Copy and paste a code snippet here)
- Answer:
```ruby
# Copy and paste your answer below this comment

# Copy and paste your answer above this comment
history_uri = "https://slack.com/api/conversations.history"

query_params = {
channel: @slack_id,
token: ENV["SLACK_TOKEN"],
limit: limit
}

response = HTTParty.get(history_uri, query: query_params)
```
1. What does the program do if the response comes back with a status code of 200?
- Answer:
- Answer: If the API call is successful, the program receives the message history and further parses the data.
1. What does the program do if the response does not come back with a status code of 200?
- Answer:
- Answer: raise SlackAPIError.new "Error when retrieving message history, error: #{response["error"]}"

### `POST` Request Review

If your project does not make a POST request, read through Wave 3 on the original Slack CLI, and research and answer questions 1, 2, 3, 4, 6, and 7.

1. Describe a POST request that your project makes, and the high-level description of what it does
- Answer:
- Answer: The #send_message method is a POST request. It takes in a message, which is one of the required parameters, and then performs an HTTP POST request.
On a high level, this method makes a POST request to the chat.postMessage endpoint and requests it to save the data/message the program sends out.
1. What is the verb of this request?
- Answer:
- Answer: POST
1. What is the path (or the URL, or endpoint) of this request?
- Answer:
- Answer:"https://slack.com/api/chat.postMessage"
1. What are the query params (the additional data sent with the request, besides the verb and the path)?
- Answer:
- Answer: token, channel, text
1. What is the syntax used to make this request? (Copy and paste a code snippet here)
- Answer:
```ruby
# Copy and paste your answer below this comment

# Copy and paste your answer above this comment
post_uri = "https://slack.com/api/chat.postMessage"

query_params = {
body: {
token: ENV["SLACK_TOKEN"],
channel: @slack_id || @name,
text: message
},
headers:{
"Content-Type": "application/x-www-form-urlencoded"
}
}

response = HTTParty.post(post_uri, query_params)
```
1. What does the program do if the response comes back with a status code of 200?
- Answer:
- Answer: The program posts the message if the request/response cycle is successfully completed. This method returns true when the API call is successful.
1. What does the program do if the response does not come back with a status code of 200?
- Answer:
- Answer: raise SlackAPIError.new "Error when posting #{message} to #{@name}, error: #{response["error"]}"

## Request & Response Cycle

Expand All @@ -62,11 +82,11 @@ There are two actors:

Based on the project requirements, when Grace enters "list channels,"
1. What is the request being made in the program?
- Answer:
- Answer: GET request to the conversations-list endpoint that retrieves all the channels in the workspace
1. Who is the client?
- Answer:
- Answer: Grace and their computer
1. Who is the server?
- Answer:
- Answer: Slack API

## Part 2: Optional Refactoring

Expand Down