web.js 3.57 KB
/*
    ## Web
*/
module.exports = {
    /*
        随机生成一个 URL。

        [URL 规范](http://www.w3.org/Addressing/URL/url-spec.txt)
            http                    Hypertext Transfer Protocol 
            ftp                     File Transfer protocol 
            gopher                  The Gopher protocol 
            mailto                  Electronic mail address 
            mid                     Message identifiers for electronic mail 
            cid                     Content identifiers for MIME body part 
            news                    Usenet news 
            nntp                    Usenet news for local NNTP access only 
            prospero                Access using the prospero protocols 
            telnet rlogin tn3270    Reference to interactive sessions
            wais                    Wide Area Information Servers 
    */
    url: function(protocol, host) {
        return (protocol || this.protocol()) + '://' + // protocol?
            (host || this.domain()) + // host?
            '/' + this.word()
    },
    // 随机生成一个 URL 协议。
    protocol: function() {
        return this.pick(
            // 协议簇
            'http ftp gopher mailto mid cid news nntp prospero telnet rlogin tn3270 wais'.split(' ')
        )
    },
    // 随机生成一个域名。
    domain: function(tld) {
        return this.word() + '.' + (tld || this.tld())
    },
    /*
        随机生成一个顶级域名。
        国际顶级域名 international top-level domain-names, iTLDs
        国家顶级域名 national top-level domainnames, nTLDs
        [域名后缀大全](http://www.163ns.com/zixun/post/4417.html)
    */
    tld: function() { // Top Level Domain
        return this.pick(
            (
                // 域名后缀
                'com net org edu gov int mil cn ' +
                // 国内域名
                'com.cn net.cn gov.cn org.cn ' +
                // 中文国内域名
                '中国 中国互联.公司 中国互联.网络 ' +
                // 新国际域名
                'tel biz cc tv info name hk mobi asia cd travel pro museum coop aero ' +
                // 世界各国域名后缀
                'ad ae af ag ai al am an ao aq ar as at au aw az ba bb bd be bf bg bh bi bj bm bn bo br bs bt bv bw by bz ca cc cf cg ch ci ck cl cm cn co cq cr cu cv cx cy cz de dj dk dm do dz ec ee eg eh es et ev fi fj fk fm fo fr ga gb gd ge gf gh gi gl gm gn gp gr gt gu gw gy hk hm hn hr ht hu id ie il in io iq ir is it jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc li lk lr ls lt lu lv ly ma mc md mg mh ml mm mn mo mp mq mr ms mt mv mw mx my mz na nc ne nf ng ni nl no np nr nt nu nz om qa pa pe pf pg ph pk pl pm pn pr pt pw py re ro ru rw sa sb sc sd se sg sh si sj sk sl sm sn so sr st su sy sz tc td tf tg th tj tk tm tn to tp tr tt tv tw tz ua ug uk us uy va vc ve vg vn vu wf ws ye yu za zm zr zw'
            ).split(' ')
        )
    },
    // 随机生成一个邮件地址。
    email: function(domain) {
        return this.character('lower') + '.' + this.word() + '@' +
            (
                domain ||
                (this.word() + '.' + this.tld())
            )
            // return this.character('lower') + '.' + this.last().toLowerCase() + '@' + this.last().toLowerCase() + '.' + this.tld()
            // return this.word() + '@' + (domain || this.domain())
    },
    // 随机生成一个 IP 地址。
    ip: function() {
        return this.natural(0, 255) + '.' +
            this.natural(0, 255) + '.' +
            this.natural(0, 255) + '.' +
            this.natural(0, 255)
    }
}