diff options
| author | ChinCluBi <[email protected]> | 2016-09-27 03:19:57 +0700 |
|---|---|---|
| committer | ChinCluBi <[email protected]> | 2016-09-27 03:19:57 +0700 |
| commit | 87acfc6a5c072cbf00ab02d1cf673d4db7832946 (patch) | |
| tree | ce804119b1c63e29469e5ccd8ea0c87ac32752c2 /lib | |
| parent | a130925b97144555856ae3e324bde9dbd7b62748 (diff) | |
| download | faker-87acfc6a5c072cbf00ab02d1cf673d4db7832946.tar.xz faker-87acfc6a5c072cbf00ab02d1cf673d4db7832946.zip | |
added lorempixel and unsplash properties to image obj
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/image.js | 241 | ||||
| -rw-r--r-- | lib/image_providers/lorempixel.js | 199 | ||||
| -rw-r--r-- | lib/image_providers/unsplash.js | 129 |
3 files changed, 338 insertions, 231 deletions
diff --git a/lib/image.js b/lib/image.js index ef4c12da..f64b1545 100644 --- a/lib/image.js +++ b/lib/image.js @@ -1,244 +1,23 @@ /** * * @namespace faker.image + * @property {object} lorempixel - faker.image.lorempixel + * @property {object} unsplash - faker.image.unsplash + * @default Default provider is unsplash image provider */ var Image = function (faker) { - var self = this; - var otherCategories = ["abstract", "animals", "business", "cats", "city", "nightlife", "fashion", "sports", "technics", "transport"]; - var unsplashCategories = ["food", "nature", "people", "technology", "objects", "buildings"]; + var self = this + var Lorempixel = require('./image_providers/lorempixel'); + var Unsplash = require('./image_providers/unsplash'); - /** - * image - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.image - */ - self.image = function (width, height, randomize) { - var allCategories = unsplashCategories.concat(otherCategories); - return self[faker.random.arrayElement(allCategories)](width, height, randomize); - }; - /** - * avatar - * - * @method faker.image.avatar - */ - self.avatar = function () { - return faker.internet.avatar(); - }; - /** - * imageUrl - * - * @param {number} width - * @param {number} height - * @param {string} category - * @param {boolean} randomize - * @method faker.image.imageUrl - */ - self.imageUrl = function (width, height, category, randomize) { - var width = width || 640; - var height = height || 480; - var url ='https://source.unsplash.com'; + self.lorempixel = new Lorempixel(faker); + self.unsplash = new Unsplash(faker); - if (typeof category !== 'undefined' && unsplashCategories.indexOf(category) > -1) { - url += '/category/' + category; - } - - url += '/' + width + 'x' + height - - if (typeof category !== 'undefined' && otherCategories.indexOf(category) > -1) { - url += '?' + category - } + Object.assign(self, self.unsplash); +} - /* - Current version of unsplash official wrapper(source.unsplash.com) does not support full randomize yet. - I will implement randomize function with official unsplash api in next version. - if (randomize) { - url += '?' + faker.random.number() - } - */ - return url; - }; - /** - * abstract - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.abstract - */ - self.abstract = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'abstract', randomize); - }; - /** - * animals - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.animals - */ - self.animals = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'animals', randomize); - }; - /** - * business - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.business - */ - self.business = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'business', randomize); - }; - /** - * cats - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.cats - */ - self.cats = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'cats', randomize); - }; - /** - * city - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.city - */ - self.city = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'city', randomize); - }; - /** - * food - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.food - */ - self.food = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'food', randomize); - }; - /** - * nightlife - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.nightlife - */ - self.nightlife = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'nightlife', randomize); - }; - /** - * fashion - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.fashion - */ - self.fashion = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'fashion', randomize); - }; - /** - * people - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.people - */ - self.people = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'people', randomize); - }; - /** - * nature - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.nature - */ - self.nature = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'nature', randomize); - }; - /** - * sports - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.sports - */ - self.sports = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'sports', randomize); - }; - /** - * technics - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.technics - */ - self.technics = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'technics', randomize); - }; - /** - * transport - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.transport - */ - self.transport = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'transport', randomize); - }; - /** - * technology - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.technology - */ - self.technology = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'technology', randomize); - }; - /** - * objects - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.objects - */ - self.objects = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'objects', randomize); - }; - /** - * buildings - * - * @param {number} width - * @param {number} height - * @param {boolean} randomize - * @method faker.image.buildings - */ - self.buildings = function (width, height, randomize) { - return faker.image.imageUrl(width, height, 'buildings', randomize); - }; -} module["exports"] = Image; diff --git a/lib/image_providers/lorempixel.js b/lib/image_providers/lorempixel.js new file mode 100644 index 00000000..44c0e007 --- /dev/null +++ b/lib/image_providers/lorempixel.js @@ -0,0 +1,199 @@ +/** + * + * @namespace lorempixel + * @memberof faker.image + */ +var Lorempixel = function (faker) { + + var self = this; + + /** + * image + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.image + */ + self.image = function (width, height, randomize) { + var categories = ["abstract", "animals", "business", "cats", "city", "food", "nightlife", "fashion", "people", "nature", "sports", "technics", "transport"]; + return self[faker.random.arrayElement(categories)](width, height, randomize); + }; + /** + * avatar + * + * @method faker.image.lorempixel.avatar + */ + self.avatar = function () { + return faker.internet.avatar(); + }; + /** + * imageUrl + * + * @param {number} width + * @param {number} height + * @param {string} category + * @param {boolean} randomize + * @method faker.image.lorempixel.imageUrl + */ + self.imageUrl = function (width, height, category, randomize) { + var width = width || 640; + var height = height || 480; + + var url ='http://lorempixel.com/' + width + '/' + height; + if (typeof category !== 'undefined') { + url += '/' + category; + } + + if (randomize) { + url += '?' + faker.random.number() + } + + return url; + }; + /** + * abstract + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.abstract + */ + self.abstract = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'abstract', randomize); + }; + /** + * animals + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.animals + */ + self.animals = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'animals', randomize); + }; + /** + * business + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.business + */ + self.business = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'business', randomize); + }; + /** + * cats + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.cats + */ + self.cats = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'cats', randomize); + }; + /** + * city + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.city + */ + self.city = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'city', randomize); + }; + /** + * food + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.food + */ + self.food = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'food', randomize); + }; + /** + * nightlife + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.nightlife + */ + self.nightlife = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'nightlife', randomize); + }; + /** + * fashion + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.fashion + */ + self.fashion = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'fashion', randomize); + }; + /** + * people + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.people + */ + self.people = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'people', randomize); + }; + /** + * nature + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.nature + */ + self.nature = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'nature', randomize); + }; + /** + * sports + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.sports + */ + self.sports = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'sports', randomize); + }; + /** + * technics + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.technics + */ + self.technics = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'technics', randomize); + }; + /** + * transport + * + * @param {number} width + * @param {number} height + * @param {boolean} randomize + * @method faker.image.lorempixel.transport + */ + self.transport = function (width, height, randomize) { + return faker.image.lorempixel.imageUrl(width, height, 'transport', randomize); + } +} + +module["exports"] = Lorempixel; diff --git a/lib/image_providers/unsplash.js b/lib/image_providers/unsplash.js new file mode 100644 index 00000000..75d0d453 --- /dev/null +++ b/lib/image_providers/unsplash.js @@ -0,0 +1,129 @@ +/** + * + * @namespace unsplash + * @memberof faker.image + */ +var Unsplash = function (faker) { + + var self = this; + var categories = ["food", "nature", "people", "technology", "objects", "buildings"]; + + /** + * image + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.image + * @description search image from unsplash + */ + self.image = function (width, height, keyword) { + return self.imageUrl(width, height, undefined, keyword); + }; + /** + * avatar + * + * @method faker.image.unsplash.avatar + */ + self.avatar = function () { + return faker.internet.avatar(); + }; + /** + * imageUrl + * + * @param {number} width + * @param {number} height + * @param {string} category + * @param {string} keyword + * @method faker.image.unsplash.imageUrl + */ + self.imageUrl = function (width, height, category, keyword) { + var width = width || 640; + var height = height || 480; + + var url ='https://source.unsplash.com'; + + if (typeof category !== 'undefined') { + url += '/category/' + category; + } + + url += '/' + width + 'x' + height; + + if (typeof keyword !== 'undefined') { + var keywordFormat = new RegExp('^([A-Za-z0-9].+,[A-Za-z0-9]+)$|^([A-Za-z0-9]+)$'); + if (keywordFormat.test(keyword)) { + url += '?' + keyword; + } + } + + return url; + }; + /** + * food + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.food + */ + self.food = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'food', keyword); + }; + /** + * people + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.people + */ + self.people = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'people', keyword); + }; + /** + * nature + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.nature + */ + self.nature = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'nature', keyword); + }; + /** + * technology + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.technology + */ + self.technology = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'technology', keyword); + }; + /** + * objects + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.objects + */ + self.objects = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'objects', keyword); + }; + /** + * buildings + * + * @param {number} width + * @param {number} height + * @param {string} keyword + * @method faker.image.unsplash.buildings + */ + self.buildings = function (width, height, keyword) { + return faker.image.imageUrl(width, height, 'buildings', keyword); + }; +} + +module["exports"] = Unsplash; |
