Implement photo size parameter
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
paramsandroverfromphotos_controller.rbandlatest_photos_controller.rbtoPhoto.searchmethod inmodels/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.rbandlatest_photos_controller.rbwithsizeparameter - Change how
img_srcis sequenced inspec/factories.rb, so it does not conflict with tests involvingsizeparameter
Potential problems for users
- When not given a
sizeparameter, photos from Opportunity and Spirit rovers will now be served in theirlargeformat; whereas they used to be served asmedium.
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.