mars-photo-api icon indicating copy to clipboard operation
mars-photo-api copied to clipboard

Implement photo size parameter

Open mtilda opened this issue 4 years ago • 0 comments

This pull request addresses multiple issues around the consistency and control of photo sizing (#117 and #130).

Going forward, users may pass a size parameter that will specify the size of the returned photos. This is achieved by altering the suffix of each img_src in the photos_controller.rb and latest_photos_controller.rb to correspond with the requested size and rover_id. I stored the logic for resizing in photo_helper.rb so it can be shared between both controllers.

Original suffixes (what is stored in the database)

Curiosity Opportunity Spirit Perseverance
.jpg or .JPG -BR.JPG -BR.JPG _1200.jpg

New suffix outputs

Size Parameter Value Curiosity Opportunity Spirit Perseverance
small -thm.jpg -THM.JPG -THM.JPG _320.jpg
medium -br.jpg -BR.JPG -BR.JPG _800.jpg
large or nil .JPG .JPG .JPG _1200.jpg
full N/A N/A N/A .png

Note: Some of these suffixes are case sensitive

Other changes

  • Move logic for searching photos by params and rover from photos_controller.rb and latest_photos_controller.rb to Photo.search method in models/photo.rb
  • Fix non-breaking syntax error in latest_photos_controller.rb (#145)
  • Add RSpec test file for latest_photos_controller.rb
  • Add RSpec tests for photos_controller.rb and latest_photos_controller.rb with size parameter
  • Change how img_src is sequenced in spec/factories.rb, so it does not conflict with tests involving size parameter

Potential problems for users

  • When not given a size parameter, photos from Opportunity and Spirit rovers will now be served in their large format; whereas they used to be served as medium.

Notes before merge

I have not tested these changes extensively with Opportunity and Spirit photos, because their scrapers are deprecated. Please test on a full development version of the API with Opportunity and Spirit photos before merging.

mtilda avatar Apr 09 '21 22:04 mtilda