Code Monkey home page Code Monkey logo

sweater_weather's Introduction

Sweater Weather

An API Rails App Project

Heroku Badge

Backend Development - Cohort 2102

Brisa Garcia - June 2021

Contact Information

    

Table of Contents

Overview

Sweater Weather is Turing School of Software and Development BE Module 3 final project. Backend developer is proviced with a series of wireframes and instructions to produce endpoints that the project front-end developers

Using request such as GET /api/v1/forecast?location=denver,co the app can

  • retrieve the weather for a city,
  • retrieve a background image for that city,
  • register end user,
  • log an existing user and
  • plan a road trip (duration of the trip and weather at arrival)


sample wireframe

The projects asks for T.D.D. (test driven development) to develop the project functionality. Gems such as simplecov, webmock, and vcr, among others help us drive this process.
The testing requirements expect 'sad path' path testing along with functionality. When user inputs a blank field or a nil result, user will get error json.

back to top


Specifications

This project runs on Rails: 5.2.5 and Ruby: 2.5.3

To check your current versions, run:

$ ruby -v
ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-darwin19]
$ rails -v
Rails 5.2.5


Gems

This project uses the following additional gems:
You can find the most current version at Rubygems.org

Production

  • bcrypt: The bcrypt Ruby gem provides a simple wrapper for safely handling passwords.
  • faraday: HTTP/REST API client library
  • figaro: Simple, Heroku-friendly Rails app configuration using ENV and a single YAML file
  • jsonapi-serializer: Fast, simple and easy to use JSON:API serialization library (also known as fast_jsonapi).

Test and Development

  • pry: Pry is a runtime developer console and IRB alternative that attempts to bring REPL driven programming to the Ruby language
  • rspec-rails: rspec-rails is a testing framework for Rails 5+
  • rubocop: RuboCop is a Ruby code style checking and code formatting tool. It aims to enforce the community-driven Ruby Style Guide.
  • simplecov: Code coverage for Ruby with a powerful configuration library and automatic merging of coverage across test suites
  • shoulda-matchers: Shoulda Matchers provides RSpec compatible one-liners to test common Rails functionality
  • webmock: WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.
  • vcr: Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests

APIs

In this project we used the following APIs:

back to top


Installation

Fork and Clone The Repo

Fork this Github repository: sweater_weather

Clone your 'sweater_weather' repository using SSH:

  $ git clone [email protected]:<your-github-username>/Sweater_weather.git

Initial Installation

In the command line run the following commands in order:

  1. $ rails db:{create,migrate}
  2. $ rails generate rspec:install
  3. $ bundle exec figaro install
  4. $ bundle install

Set Up API Keys

Find the application.yml file in the config folder and add your API keys example:

MAPQ_API_KEY: <api key here without strings>
WEATHER_API_KEY: <api key here without strings>
SPLASH_API_KEY: <api key here without strings>

back to top


Testing

RSpec

We can check the test on the spec folder by running rspec

In the command line run

$ bundle exec rspec

All tests should be passing.

If you get a nil or a vcr error, you may need to delete vcr_cassettes in the /spec/fixtures folder.

Simplecov

After running the tests simplecov gathers the coverage and neatly reports them in an html page.

In the command line you should see something like this:

Coverage report generated for RSpec to /Users/brisa/turing/three/projects/final_project/jackets/coverage. 749 / 752 LOC (99.6%) covered.

Rubocop

Rubocop helps us clean up the code.

In the command line run:

$ rubocop

Rubocop will highlight styling errors - according to rails standards - and make recommendations on how to improve the code.

back to top


API Endpoints

The exposing these endpoints is the chief purpose of this application. To test this out your self in your computer follow the instructions below.

Expose the endpoints in Postman

  1. Open the terminal in your computer and navigate to where sweater_weather is located and cd into it.
  2. Once in the directory run the following command in your terminal: $ rails server
  3. Open Postman and type the following in the address bar: http://localhost:3000/
  4. Add the requests below to call each endpoint. example: http://localhost:3000/api/v1/backgrounds?location=denver,co
  5. Change the verb to one corresponding to the call for example: Post
  6. Send your request by clicking Send

Notice that some of the call require you add the paramteres to the body. In postman:

  1. Click on body
  2. Select raw
  3. Select json (by default show as text)

Forecast

Retrieve weather for a city

Shows the current, hourly, and daily forecast for the location queried. It accepts city and state as parameters.

Request:

  • Content-Type: application/json
  • Accept: application/json

get api/v1/forecast?location=denver, co


Test it Out In Postman

Run in Postman

back to top

Background Image

Retrieves background Image for the City

Using Unspalsh's API, retrieves an image that is related to the searched location and outputs a serialized json.

Request:

  • Content-Type: application/json
  • Accept: application/json

get api/v1/backgrounds?location=denver, co


Test it Out In Postman

Run in Postman

back to top

User Registration

Registers a new user

Registers a new user and generates a unique API key for the user

Request:

  • Content-Type: application/json
  • Accept: application/json

The params are passed on in the body of the request not in the uri:

{
  "email": "[email protected]",
  "password": "password",
  "password_confirmation": "password"
}

post /api/v1/users


back to top

Test it Out In Postman

Run in Postman

User Login

Authenticates a User

This request authenticates a user and logs it into the application

Request:

  • Content-Type: application/json
  • Accept: application/json
{
  "email": "[email protected]",
  "password": "password"
}

post /api/v1/sessions

Test it Out In Postman

Run in Postman

back to top

Road Trip

Returns estimated travel time and arrival forecast for a road trip

This request produces trip duration and destination weather forecast at eta.

Request:

  • Content-Type: application/json
  • Accept: application/json
{
  "origin": "Denver,CO",
  "destination": "Pueblo,CO",
  "api_key": "jgn983hy48thw9begh98h4539h4"
}

post /api/v1/road_trip

Test it Out In Postman

Run in Postman

back to top


Heroku API Endpoints

This api-application has been deployed to Heroku. You can test the endpoints in postman by following the link below and running postman in your browser.

Run in Postman

If you have postman installed locally you can run it in the app directly

https://cryptic-basin-02788.herokuapp.com//api/v1/<type here the desired endpoint>

back to top

sweater_weather's People

Contributors

brisag avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.