Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

slack_project - Stacy & Mona #19

Open
wants to merge 57 commits into
base: master
Choose a base branch
from

Conversation

MonaRahmani
Copy link

Assignment Submission: Slack CLI

Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.

Reflection

Question Answer
How did you go about exploring the Slack API? Did you learn anything that would be useful for your next project involving an API? we learned about API get and post requests and their functionality. we also learned how to extract specific data. Postman was really helpful in this project. in addition, we learned about sleep cycles so we don't get banned from sending/requesting too much info at once.
Give a short summary of the request/response cycle. Where does your program fit into that scheme? in this program we are the user and slack is the client. we use slack to send our request. Slack CLI sends the request to the API server. the server finds the data and sends a response back to the slack. finally slack displays data to the user
How does your program check for and handle errors when using the Slack API? to handle errors we used custom error that inherits from StandardError
How did the design and organization of your project change over time? when we start working on the project we wanted to add slack as the module then to make it less complicated we remove the slack module.
Did you use any of the inheritance idioms we've talked about in class? How? yes, Recipient is our abstract class that contained template methods meant to be overridden by subclasses. also we used polymorphism with the tables/creating lists
How does VCR aid in testing a program that uses an API? VCR records all the requests and responses into a cassette, so every time our code is running we don't need to hit the API and call it again.and it keeps the API from rejecting the token due to too many calls from the same location/at the same time.

Copy link

@dHelmgren dHelmgren left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slack CLI

Major Learning Goals/Code Review

Criteria yes/no, and optionally any details/lines of code to reference
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. Oops! .env got checked in
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. ✔️
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. ✔️
Practices clean code. lib/slack.rb only interacts with Workspace to show a separation of responsibilities. Complex logic is broken into smaller helper methods. ✔️
Practices instance methods vs. class methods appropriately. The methods to list all Channels or Users is likely a class method within those respective classes. ✔️
Practices best practices for testing. The project has and uses VCR mocking when running tests, and can run offline. ✔️
Practices writing tests. The User, Channel, and Workspace classes have unit tests. ✔️
Practices writing tests. There are tests for sending messages (the location of these tests may differ, but is likely in Recipient) ✔️
Practices git with at least 15 small commits and meaningful commit messages ✔️

Functional Requirements

Functional Requirement yes/no
As a user of the CLI program, I can list users and channels ✔️
As a user of the CLI program, I can select users and channels ✔️
As a user of the CLI program, I can show the details of a selected user or channel ✔️
As a user of the CLI program, when I input something inappropriately, the program runs without crashing ✔️

Overall Feedback

Overall Feedback Criteria yes/no
Green (Meets/Exceeds Standards) 7+ in Code Review && 3+ in Functional Requirements ✔️
Yellow (Approaches Standards) 6+ in Code Review && 2+ in Functional Requirements
Red (Not at Standard) 0-5 in Code Review or 0,1 in Functional Reqs, or assignment is breaking/doesn’t run with less than 5 minutes of debugging

@@ -0,0 +1 @@
SLACK_TOKEN=

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uh oh!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When something like this happens, it's good to make sure it also gets deleted from the workspace. :)

class Recipient
CHANNEL_LIST = 'https://slack.com/api/conversations.list'
USER_LIST = 'https://slack.com/api/users.list'
MESSAGE_LIST = 'https://slack.com/api/chat.postMessage'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MESSAGE_LIST seems like a copy paste name for this. Perhaps MESSAGE_SEND or MESSAGE_URL instead?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants