/liaar

Create fake REST API in a minute

Primary LanguagePythonMIT LicenseMIT

Liaar

Create fake REST API in a minute

##Install

Issue following command:

 pip install liaar

or with easy_install:

 easy_install liaar

Above commands install all dependecies automatically. Then use following command to run the liaar:

liaar

Then you should see the liaar picture.

##How to use

You should create directories as resources’ namespace and place JSON files inside them as API methods.

Suppose you have following directory structure:

apps
     |_ .
     |_ ..
     |_ blog
             |_ .
             |_ ..
             |_ setting.json
             |_ resources
                          |_ .
                          |_ ..
                          |_ users
                                   |_ .
                                   |_ ..
                                   |_ profile.json

And the url would be http://127.0.0.1:1234/blog/v1/users/profile. In next parts you can read more about resource and application setting JSON file's format.

##Schema

In order to run the application, you should define application’s setting and resources using JSON files. This section shows you the schema of these JSON files.

###setting.json: Application setting

Using this file you can define global properties for the application. The setting.json can have following properties:

####Mandatory

  • version {string} - Version number of application

Following JSON file shows an example of setting.json:

 {
   "version": "1"
 }

###Application resources Using this file you define application's resources. This JSON file can have as many as fields you need and each value can be either string or object. Following JSON file is an example of a resource:

      {
        "firstName": "first_name",
        "lastName": "last_name",
        "username": "user_name"
      }

The output of above resource file is:

 {
   "firstName": "Polk",
   "lastName": "Nienow",
   "username": "kbogan"
 }

If you need a list of values instead of a single value, you can use nested object like following:

 {
   "firstName": "first_name",
   "lastName": "last_name",
   "username": "user_name",
   "email": {
     "liaar_type": "list",
     "liaar_count": 3,
     "liaar_formatter": "email"
   }
 }

And then the output of above JSON file would be:

 {
   "username": "kbogan",
   "lastName": "Nienow",
   "email": ["darcie.pfannerstill@mohr.com", "barton.elvira@haneoconnell.com", "imills@hotmail.com"],
   "firstName": "Polk"
 }

Liaar uses Faker library to generate fake data for API methods. You can use all Faker's formatters to produce fake data. Following list shows current available formatters to use in Liaar:

file:

 mime_type                   # video/webm

user_agent:

 chrome                      # Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_4) AppleWebKit/5341 (KHTML, like Gecko) Chrome/13.0.803.0 Safari/5341
 firefox                     # Mozilla/5.0 (Windows 95; sl-SI; rv:1.9.1.20) Gecko/2012-01-06 22:35:05 Firefox/3.8
 internet_explorer           # Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.1)
 linux_platform_token        # X11; Linux x86_64
 linux_processor             # x86_64
 mac_platform_token          # Macintosh; U; PPC Mac OS X 10_7_6
 mac_processor               # U; PPC
 opera                       # Opera/9.41 (Windows CE; it-IT) Presto/2.9.168 Version/12.00
 safari                      # Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/534.34.4 (KHTML, like Gecko) Version/5.0 Safari/534.34.4
 user_agent                  # Mozilla/5.0 (iPod; U; CPU iPhone OS 3_2 like Mac OS X; en-US) AppleWebKit/531.15.3 (KHTML, like Gecko) Version/4.0.5 Mobile/8B119 Safari/6531.15.3
 windows_platform_token      # Windows 98; Win 9x 4.90

phone_number:

 phone_number                # (593)652-1880

miscelleneous:

 random_number               # 3438
 random_digit                # 3
 boolean                     # True
 country_code                # BB
 language_code               # fr
 locale                      # pt_GN
 md5                         # ab9d3552b5c6e68714c04c35725ba73c
 null_boolean                # True
 sha1                        # 3fc2ede28f2596050f9a94c15c59b800175409d0
 sha256                      # f06561a971d6b1306ecef60be336556d6de2540c2d0d2158f4d0ea3f212cd740

internet:

 company_email               # ggreenfelder@ortizmedhurst.com
 domain_name                 # mayer.com
 domain_word                 # gusikowski
 email                       # gbrakus@johns.net
 free_email                  # abbey60@yahoo.com
 free_email_domain           # hotmail.com
 ipv4                        # 81.132.249.71
 ipv6                        # 4c55:8c8b:54b5:746d:44ed:c7ab:486a:a50e
 safe_email                  # amalia49@example.com
 slug                        # TypeError
 tld                         # net
 uri                         # http://www.parker.com/
 uri_extension               # .asp
 uri_page                    # terms
 uri_path                    # explore/list/app
 url                         # http://dubuque.info/
 user_name                   # goodwin.edwin

company:

 bs                          # maximize end-to-end infrastructures
 catch_phrase                # Multi-tiered analyzing instructionset
 company                     # Stanton-Luettgen
 company_suffix              # Group

date_time:

 am_pm                       # AM
 century                     # IX
 date                        # 1985-02-17
 date_time                   # 1995-06-08 14:46:50
 date_time_ad                # 1927-12-17 23:08:46
 date_time_between           # 1999-08-22 22:49:52
 date_time_this_century      # 1999-07-24 23:35:49
 date_time_this_decade       # 2008-01-27 01:08:37
 date_time_this_month        # 2012-11-12 14:13:04
 date_time_this_year         # 2012-05-19 00:40:00
 day_of_month                # 23
 day_of_week                 # Friday
 iso8601                     # 2009-04-09T21:30:02
 month                       # 03
 month_name                  # April
 time                        # 06:16:50
 timezone                    # America/Noronha
 unix_time                   # 275630166
 year                        # 2002

person:

 first_name                  # Elton
 last_name                   # Schowalter
 name                        # Susan Pagac III
 prefix                      # Ms.
 suffix                      # V

address:

 address                     # 044 Watsica Brooks West Cedrickfort, SC 35023-5157
 building_number             # 319
 city                        # Kovacekfort
 city_prefix                 # New
 city_suffix                 # ville
 country                     # Monaco
 geo_coordinate              # 148.031951
 latitude                    # 154.248666
 longitude                   # 109.920335
 postcode                    # 82402-3206
 secondary_address           # Apt. 230
 state                       # Nevada
 state_abbr                  # NC
 street_address              # 793 Haskell Stravenue
 street_name                 # Arvilla Valley
 street_suffix               # Crescent

lorem

 paragraph                   # Itaque quia harum est autem inventore quisquam eaque. Facere mollitia repudiandae
                                      qui et voluptas. Consequatur sunt ullam blanditiis aliquam veniam illum voluptatem.
 paragraphs                  # ['Alias porro soluta eum voluptate. Iste consequatur qui non nam.',
                                         'Id eum sint eius earum veniam fugiat ipsum et. Et et occaecati at labore
                                         amet et. Rem velit inventore consequatur facilis. Eum consequatur consequatur
                                         quis nobis.', 'Harum autem autem totam ex rerum adipisci magnam adipisci.
                                         Qui modi eos eum vel quisquam. Tempora quas eos dolorum sint voluptatem
                                         tenetur cum. Recusandae ducimus deleniti magnam ullam adipisci ipsa.']
 sentence                    # Eum magni soluta unde minus nobis.
 sentences                   # ['Ipsam eius aut veritatis iusto.',
                                         'Occaecati libero a aut debitis sunt quas deserunt aut.',
                                         'Culpa dolor voluptatum laborum at et enim.']
 text                        # Dicta quo eius possimus quae eveniet cum nihil. Saepe sint non nostrum.
                                      Sequi est sit voluptate et eos eum et. Pariatur non sunt distinctio magnam.
 word                        # voluptas
 words                       # ['optio', 'et', 'voluptatem']

##Roadmap

  • Allow cross-domain XHR request
  • Better error handling
  • Add URL format to setting.json

##Requirements

  • Python v2.7
  • Twisted v14.0
  • Faker v0.4.0

##Thanks

Author

Afshin Mehrabani

##License MIT