From 801777279b61fd32ae81cf6b585f35ab53c24c74 Mon Sep 17 00:00:00 2001 From: FileGo Date: Sun, 2 May 2021 08:06:06 +0100 Subject: [PATCH] Changed URL format to shortuuid (#21) * Changed URL format to shortuuid * Fixed drone CI failure --- .drone.yml | 4 ++- coverage.txt | 89 ++++++++++++++++++++++++++++++++++++---------------- go.mod | 12 ++++--- go.sum | 31 +++++++++++++----- models.go | 5 +-- server.go | 2 +- utils.go | 19 ----------- 7 files changed, 99 insertions(+), 63 deletions(-) delete mode 100644 utils.go diff --git a/.drone.yml b/.drone.yml index 0065a03..e6fcc16 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,4 +1,5 @@ kind: pipeline +type: docker name: default steps: @@ -15,7 +16,8 @@ steps: - name: notify image: plugins/webhook - urls: https://msgbus.mills.io/ci.mills.io + settings: + urls: https://msgbus.mills.io/ci.mills.io when: status: - success diff --git a/coverage.txt b/coverage.txt index a39f029..51b9af6 100644 --- a/coverage.txt +++ b/coverage.txt @@ -23,28 +23,52 @@ github.com/prologic/shorturl/server.go:130.75,136.15 4 0 github.com/prologic/shorturl/server.go:141.3,142.45 2 0 github.com/prologic/shorturl/server.go:151.3,152.17 2 0 github.com/prologic/shorturl/server.go:157.3,158.17 2 0 -github.com/prologic/shorturl/server.go:163.3,174.4 2 0 +github.com/prologic/shorturl/server.go:163.3,176.4 2 0 github.com/prologic/shorturl/server.go:136.15,139.4 2 0 github.com/prologic/shorturl/server.go:142.45,145.4 2 0 github.com/prologic/shorturl/server.go:145.9,145.24 1 0 github.com/prologic/shorturl/server.go:145.24,149.4 3 0 github.com/prologic/shorturl/server.go:152.17,155.4 2 0 github.com/prologic/shorturl/server.go:158.17,161.4 2 0 -github.com/prologic/shorturl/server.go:179.54,180.75 1 0 -github.com/prologic/shorturl/server.go:180.75,186.15 4 0 -github.com/prologic/shorturl/server.go:191.3,192.45 2 0 -github.com/prologic/shorturl/server.go:201.3,201.47 1 0 -github.com/prologic/shorturl/server.go:186.15,189.4 2 0 -github.com/prologic/shorturl/server.go:192.45,195.4 2 0 -github.com/prologic/shorturl/server.go:195.9,195.24 1 0 -github.com/prologic/shorturl/server.go:195.24,199.4 3 0 -github.com/prologic/shorturl/server.go:206.51,207.75 1 0 -github.com/prologic/shorturl/server.go:207.75,210.17 3 0 -github.com/prologic/shorturl/server.go:214.3,214.14 1 0 -github.com/prologic/shorturl/server.go:210.17,213.4 2 0 -github.com/prologic/shorturl/server.go:219.35,228.2 1 0 -github.com/prologic/shorturl/server.go:230.31,248.2 8 0 -github.com/prologic/shorturl/server.go:251.52,287.2 12 0 +github.com/prologic/shorturl/server.go:181.54,182.75 1 0 +github.com/prologic/shorturl/server.go:182.75,188.15 4 0 +github.com/prologic/shorturl/server.go:193.3,194.45 2 0 +github.com/prologic/shorturl/server.go:203.3,203.47 1 0 +github.com/prologic/shorturl/server.go:188.15,191.4 2 0 +github.com/prologic/shorturl/server.go:194.45,197.4 2 0 +github.com/prologic/shorturl/server.go:197.9,197.24 1 0 +github.com/prologic/shorturl/server.go:197.24,201.4 3 0 +github.com/prologic/shorturl/server.go:208.51,209.75 1 0 +github.com/prologic/shorturl/server.go:209.75,212.17 3 0 +github.com/prologic/shorturl/server.go:216.3,216.14 1 0 +github.com/prologic/shorturl/server.go:212.17,215.4 2 0 +github.com/prologic/shorturl/server.go:221.50,222.75 1 0 +github.com/prologic/shorturl/server.go:222.75,226.15 3 0 +github.com/prologic/shorturl/server.go:231.3,232.45 2 0 +github.com/prologic/shorturl/server.go:241.3,250.4 1 0 +github.com/prologic/shorturl/server.go:226.15,229.4 2 0 +github.com/prologic/shorturl/server.go:232.45,235.4 2 0 +github.com/prologic/shorturl/server.go:235.9,235.24 1 0 +github.com/prologic/shorturl/server.go:235.24,239.4 3 0 +github.com/prologic/shorturl/server.go:255.52,256.75 1 0 +github.com/prologic/shorturl/server.go:256.75,262.31 5 0 +github.com/prologic/shorturl/server.go:267.3,268.45 2 0 +github.com/prologic/shorturl/server.go:277.3,278.17 2 0 +github.com/prologic/shorturl/server.go:284.3,286.53 2 0 +github.com/prologic/shorturl/server.go:262.31,265.4 2 0 +github.com/prologic/shorturl/server.go:268.45,271.4 2 0 +github.com/prologic/shorturl/server.go:271.9,271.24 1 0 +github.com/prologic/shorturl/server.go:271.24,275.4 3 0 +github.com/prologic/shorturl/server.go:278.17,282.4 3 0 +github.com/prologic/shorturl/server.go:291.35,300.2 1 0 +github.com/prologic/shorturl/server.go:303.52,304.75 1 0 +github.com/prologic/shorturl/server.go:304.75,308.15 3 0 +github.com/prologic/shorturl/server.go:313.3,314.17 2 0 +github.com/prologic/shorturl/server.go:320.3,321.9 2 0 +github.com/prologic/shorturl/server.go:308.15,311.4 2 0 +github.com/prologic/shorturl/server.go:314.17,318.4 3 0 +github.com/prologic/shorturl/server.go:325.31,346.2 11 0 +github.com/prologic/shorturl/server.go:349.52,390.2 16 0 github.com/prologic/shorturl/templates.go:21.43,26.2 1 0 github.com/prologic/shorturl/templates.go:28.67,33.2 3 0 github.com/prologic/shorturl/templates.go:35.77,40.9 4 0 @@ -52,20 +76,31 @@ github.com/prologic/shorturl/templates.go:45.2,47.16 3 0 github.com/prologic/shorturl/templates.go:52.2,52.17 1 0 github.com/prologic/shorturl/templates.go:40.9,43.3 2 0 github.com/prologic/shorturl/templates.go:47.16,50.3 2 0 -github.com/prologic/shorturl/utils.go:12.38,15.26 3 1 -github.com/prologic/shorturl/utils.go:18.2,18.22 1 1 -github.com/prologic/shorturl/utils.go:15.26,17.3 1 5 github.com/prologic/shorturl/version.go:14.27,16.2 1 0 github.com/prologic/shorturl/main.go:19.13,35.13 8 0 github.com/prologic/shorturl/main.go:40.2,42.16 3 0 github.com/prologic/shorturl/main.go:45.2,50.39 3 0 github.com/prologic/shorturl/main.go:35.13,38.3 2 0 github.com/prologic/shorturl/main.go:42.16,44.3 1 0 -github.com/prologic/shorturl/models.go:16.26,17.6 1 1 -github.com/prologic/shorturl/models.go:17.6,21.17 3 1 -github.com/prologic/shorturl/models.go:21.17,23.4 1 1 -github.com/prologic/shorturl/models.go:27.50,31.2 3 1 -github.com/prologic/shorturl/models.go:34.42,38.2 3 0 -github.com/prologic/shorturl/rice-box.go:9.13,51.2 5 1 -github.com/prologic/shorturl/rice-box.go:53.13,95.2 5 1 -github.com/prologic/shorturl/rice-box.go:97.13,147.2 6 1 +github.com/prologic/shorturl/models.go:21.26,22.6 1 1 +github.com/prologic/shorturl/models.go:22.6,25.17 3 1 +github.com/prologic/shorturl/models.go:25.17,27.4 1 1 +github.com/prologic/shorturl/models.go:31.50,33.16 2 2 +github.com/prologic/shorturl/models.go:37.2,39.8 3 1 +github.com/prologic/shorturl/models.go:33.16,35.3 1 1 +github.com/prologic/shorturl/models.go:42.52,44.16 2 2 +github.com/prologic/shorturl/models.go:47.2,47.36 1 2 +github.com/prologic/shorturl/models.go:50.2,50.15 1 1 +github.com/prologic/shorturl/models.go:44.16,46.3 1 0 +github.com/prologic/shorturl/models.go:47.36,49.3 1 1 +github.com/prologic/shorturl/models.go:54.42,58.2 3 0 +github.com/prologic/shorturl/models.go:60.47,62.16 2 0 +github.com/prologic/shorturl/models.go:66.2,66.34 1 0 +github.com/prologic/shorturl/models.go:70.2,73.19 4 0 +github.com/prologic/shorturl/models.go:62.16,64.3 1 0 +github.com/prologic/shorturl/models.go:66.34,68.3 1 0 +github.com/prologic/shorturl/models.go:76.27,80.16 3 0 +github.com/prologic/shorturl/models.go:84.2,85.16 2 0 +github.com/prologic/shorturl/models.go:89.2,89.12 1 0 +github.com/prologic/shorturl/models.go:80.16,82.3 1 0 +github.com/prologic/shorturl/models.go:85.16,87.3 1 0 diff --git a/go.mod b/go.mod index 82e1cdf..763f3a4 100644 --- a/go.mod +++ b/go.mod @@ -8,18 +8,20 @@ require ( github.com/Sereal/Sereal v0.0.0-20200820125258-a016b7cda3f3 // indirect github.com/asdine/storm v2.1.2+incompatible github.com/daaku/go.zipexe v1.0.1 // indirect - github.com/golang/protobuf v1.5.1 // indirect + github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.3 // indirect + github.com/google/uuid v1.2.0 // indirect github.com/julienschmidt/httprouter v1.3.0 + github.com/lithammer/shortuuid v3.0.0+incompatible github.com/namsral/flag v1.7.4-pre - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 - github.com/stretchr/testify v1.2.2 + github.com/stretchr/testify v1.7.0 github.com/thoas/stats v0.0.0-20190407194641-965cb2de1678 github.com/unrolled/logger v0.0.0-20201216141554-31a3694fe979 github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect go.etcd.io/bbolt v1.3.5 // indirect - golang.org/x/net v0.0.0-20191105084925-a882066a44e0 // indirect - golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 // indirect + golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect + golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect google.golang.org/appengine v1.6.7 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/go.sum b/go.sum index 9dd6af9..d3e107e 100644 --- a/go.sum +++ b/go.sum @@ -11,19 +11,24 @@ github.com/asdine/storm v2.1.2+incompatible/go.mod h1:RarYDc9hq1UPLImuiXK3BIWPJL github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= github.com/daaku/go.zipexe v1.0.1 h1:wV4zMsDOI2SZ2m7Tdz1Ps96Zrx+TzaK15VbUaGozw0M= github.com/daaku/go.zipexe v1.0.1/go.mod h1:5xWogtqlYnfBXkSB1o9xysukNP9GTvaNkqzUZbt3Bw8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1 h1:jAbXjIeW2ZSW2AwFxlGTDoc2CjI2XujLkV3ArsZFCvc= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/lithammer/shortuuid v3.0.0+incompatible h1:NcD0xWW/MZYXEHa6ITy6kaXN5nwm/V115vj2YXfhS0w= +github.com/lithammer/shortuuid v3.0.0+incompatible/go.mod h1:FR74pbAuElzOUuenUHTK2Tciko1/vKuIKS9dSkDrA4w= github.com/namsral/flag v1.7.4-pre h1:b2ScHhoCUkbsq0d2C15Mv+VU8bl8hAXV8arnWiOHNZs= github.com/namsral/flag v1.7.4-pre/go.mod h1:OXldTctbM6SWH1K899kPZcf65KxJiD7MsceFUpB5yDo= github.com/nkovacs/streamquote v1.0.0/go.mod h1:BN+NaZ2CmdKqUuTUXUEm9j95B2TRbpOWpxbJYzzgUsc= @@ -31,8 +36,9 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/thoas/stats v0.0.0-20190407194641-965cb2de1678 h1:kFej3rMKjbzysHYvLmv5iOlbRymDMkNJxbovYb/iP0c= github.com/thoas/stats v0.0.0-20190407194641-965cb2de1678/go.mod h1:GkZsNBOco11YY68OnXUARbSl26IOXXAeYf6ZKmSZR2M= github.com/unrolled/logger v0.0.0-20201216141554-31a3694fe979 h1:47+K4wN0S8L3fUwgZtPEBIfNqtAE3tUvBfvHVZJAXfg= @@ -45,14 +51,18 @@ go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20191105084925-a882066a44e0 h1:QPlSTtPE2k6PZPasQUbzuK3p9JbS+vMXYVto8g/yrsg= -golang.org/x/net v0.0.0-20191105084925-a882066a44e0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210326220804-49726bf1d181 h1:64ChN/hjER/taL4YJuA+gpLfIMT+/NFherRZixbxOhg= -golang.org/x/sys v0.0.0-20210326220804-49726bf1d181/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 h1:dXfMednGJh/SUUFjTLsWJz3P+TQt9qnR11GgeI3vWKs= +golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= @@ -60,3 +70,8 @@ google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/models.go b/models.go index e6e0f2e..4326a36 100644 --- a/models.go +++ b/models.go @@ -5,6 +5,8 @@ import ( nurl "net/url" "strings" "time" + + "github.com/lithammer/shortuuid" ) // URL ... @@ -18,8 +20,7 @@ type URL struct { func GenerateID() string { for { - // TODO: Make length (5) configurable - id := RandomString(5) + id := shortuuid.New() err := db.One("ID", id, nil) if err != nil { return id diff --git a/server.go b/server.go index 2606c6b..0b6ba03 100644 --- a/server.go +++ b/server.go @@ -16,7 +16,7 @@ import ( "github.com/rcrowley/go-metrics/exp" "github.com/thoas/stats" - "github.com/GeertJohan/go.rice" + rice "github.com/GeertJohan/go.rice" "github.com/asdine/storm" "github.com/julienschmidt/httprouter" ) diff --git a/utils.go b/utils.go deleted file mode 100644 index d5fb2b8..0000000 --- a/utils.go +++ /dev/null @@ -1,19 +0,0 @@ -package main - -import ( - "crypto/rand" -) - -const ( - alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" -) - -// RandomString ... -func RandomString(length int) string { - bytes := make([]byte, length) - rand.Read(bytes) - for i, b := range bytes { - bytes[i] = alphabet[b%byte(len(alphabet))] - } - return string(bytes) -}