diff --git a/feedback.md b/feedback.md index f90b999..47d661d 100644 --- a/feedback.md +++ b/feedback.md @@ -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.) - yes/no + yes @@ -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.) - yes/no + yes @@ -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. - yes/no + yes @@ -51,7 +51,7 @@ - yes/no + yes @@ -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.) - yes/no + yes @@ -70,7 +70,7 @@ 6. Practices best practices for testing. (The project has and uses VCR mocking when running tests, and can run offline.) - yes/no + yes @@ -80,7 +80,7 @@ 7. Practices writing tests. (The User, Channel, and Workspace classes have unit tests.) - yes/no + yes @@ -90,7 +90,7 @@ 8. There are also tests for sending messages (the location of these tests may differ, but is likely in Recipient) - yes/no + yes @@ -100,7 +100,7 @@ 9. Practices git with at least 15 small commits and meaningful commit messages - yes/no + yess @@ -118,7 +118,7 @@ 1. As a user of the CLI program, I can list users and channels with the commands list users and list channels - yes/no + yes @@ -126,7 +126,7 @@ 2. As a user of the CLI program, I can select users and channels with the commands select user and select channel - yes/no + yes @@ -134,7 +134,7 @@ 3. As a user of the CLI program, I can show the details of a selected user or channel with the command details - yes/no + yes @@ -142,7 +142,7 @@ 4. As a user of the CLI program, when I input something inappropriately, the program runs without crashing. Example commands to try are do_something, or select user followed by Mr. Fakename - yes/no + yes diff --git a/individual-reflection.md b/individual-reflection.md index 603cdeb..824e9e1 100644 --- a/individual-reflection.md +++ b/individual-reflection.md @@ -10,23 +10,55 @@ Answer the following comprehension questions **within this file.** Write your an 1. Describe a GET request that your project makes, and the high-level description of what it does - Answer: + A GET request is to ask the server(SlackAPI) to send back some data. Examples for this project would be getting the channel list from SlackAPI, it will send back the information of the channels within the workspace from my API token. + 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: the URL is https://slack.com/api/conversations.list" + 1. What are the query params (the additional data sent with the request, besides the verb and the path)? - - Answer: + - Answer: it would also require my API token as a params 1. What is the syntax used to make this request? (Copy and paste a code snippet here) - Answer: - ```ruby + ```ruby # Copy and paste your answer below this comment + # From the recipient.rb + + CHANNEL_URL = "#{BASE_URL}/conversations.list" + + def self.get(url) + data = HTTParty.get(url, query: { token: ENV["SLACK_API_TOKEN"]}) + + #check for errors + if data.code != 200 || data["ok"] == false + raise SlackAPIError, "We encounter a problem: #{data["error"]}" + end + return data + end + + def self.list_all + data = Channel.get("https://slack.com/api/conversations.list") + + channels = [] + + data["channels"].each do |channel| + channels << Channel.new( + name: channel["name"], + slack_id: channel["id"], + topic: channel["topic"]["value"], + memeber_count: channel["num_members"]) + end + return channels + end # Copy and paste your answer above this comment ``` 1. What does the program do if the response comes back with a status code of 200? - - Answer: -1. What does the program do if the response does not come back with a status code of 200? - - Answer: + - Answer: If the status code is 200 and okay: true + It will create Channel instances of each channels from the workspace. +1. What does the program do if the response does not come back with a status code of 200? + - Answer: If it is not 200 or not okay: true, then it would be because there is a problem with the API prvoided from the .env file, so it will rasie SlackAPIerror. ### `POST` Request Review @@ -35,22 +67,29 @@ If your project does not make a POST request, read through Wave 3 on the origina 1. Describe a POST request that your project makes, and the high-level description of what it does - Answer: 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: It also request the slack api token, the channel slack id and a message that the user would like to send. 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 - + def send_message(message) + HTTParty.post("https://slack.com/api/chat.postMessage", query: { + token: ENV["SLACK_API_TOKEN"], + channel: self.slack_id, + text: message + } + ) + end # Copy and paste your answer above this comment ``` 1. What does the program do if the response comes back with a status code of 200? - - Answer: + - Answer: 200 and okay:true means the message that user was trying to send is sent successfully. And it will print on the command line to show the user it went thru. 1. What does the program do if the response does not come back with a status code of 200? - - Answer: + - Answer: The would mean the message didn't go through and I made it that it would return a message telling the user something went wrong and the message is not sent. ## Request & Response Cycle @@ -62,11 +101,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 1. Who is the client? - - Answer: + - Answer: Grace's computer 1. Who is the server? - - Answer: + - Answer: Slack API ## Part 2: Optional Refactoring @@ -80,4 +119,4 @@ If your reflection inspired you to make minimal changes to your Slack CLI implem ### Describe your optional Slack CLI changes here -Answer: +Answer: in progress ....