aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChinCluBi <[email protected]>2016-09-27 03:19:57 +0700
committerChinCluBi <[email protected]>2016-09-27 03:19:57 +0700
commit87acfc6a5c072cbf00ab02d1cf673d4db7832946 (patch)
treece804119b1c63e29469e5ccd8ea0c87ac32752c2 /lib
parenta130925b97144555856ae3e324bde9dbd7b62748 (diff)
downloadfaker-87acfc6a5c072cbf00ab02d1cf673d4db7832946.tar.xz
faker-87acfc6a5c072cbf00ab02d1cf673d4db7832946.zip
added lorempixel and unsplash properties to image obj
Diffstat (limited to 'lib')
-rw-r--r--lib/image.js241
-rw-r--r--lib/image_providers/lorempixel.js199
-rw-r--r--lib/image_providers/unsplash.js129
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;