Skip to content

Commit

Permalink
enhance flag matching & bump
Browse files Browse the repository at this point in the history
  • Loading branch information
Clivern committed Nov 21, 2020
1 parent 2f2c6e0 commit a9b747b
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 90 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM golang:1.15.5

ARG RHINO_VERSION=1.5.0
ARG RHINO_VERSION=1.5.1

ENV GO111MODULE=on

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<p align="center">
<img alt="Rhino Logo" src="https://raw.githubusercontent.com/clivern/Rhino/master/assets/img/gopher.png?v=1.5.0" width="150" />
<img alt="Rhino Logo" src="https://raw.githubusercontent.com/clivern/Rhino/master/assets/img/gopher.png?v=1.5.1" width="150" />
<h3 align="center">Rhino</h3>
<p align="center">HTTP Mocking & Debugging Service</p>
<p align="center">
<a href="https://github.com/Clivern/Rhino/actions"><img src="https://github.com/Clivern/Rhino/workflows/Build/badge.svg"></a>
<a href="https://github.com/Clivern/Rhino/actions"><img src="https://github.com/Clivern/Rhino/workflows/Release/badge.svg"></a>
<a href="https://github.com/Clivern/Rhino/releases"><img src="https://img.shields.io/badge/Version-1.5.0-red.svg"></a>
<a href="https://goreportcard.com/report/github.com/Clivern/Rhino"><img src="https://goreportcard.com/badge/github.com/clivern/Rhino?v=1.5.0"></a>
<a href="https://github.com/Clivern/Rhino/releases"><img src="https://img.shields.io/badge/Version-1.5.1-red.svg"></a>
<a href="https://goreportcard.com/report/github.com/Clivern/Rhino"><img src="https://goreportcard.com/badge/github.com/clivern/Rhino?v=1.5.1"></a>
<a href="https://hub.docker.com/r/clivern/rhino"><img src="https://img.shields.io/badge/Docker-Latest-green"></a>
<a href="https://github.com/Clivern/Rhino/blob/master/LICENSE"><img src="https://img.shields.io/badge/LICENSE-MIT-orange.svg"></a>
</p>
Expand Down
145 changes: 61 additions & 84 deletions core/module/faker.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,95 +68,23 @@ func (f *Faker) Transform(data string) (string, error) {
return data, err
}

flags := f.GetFakeData()

for i := 0; i < len(types); i++ {
if strings.HasPrefix(types[i], "@fake(:anyof[") {
item := strings.TrimPrefix(types[i], "@fake(:anyof[")
item = strings.TrimSuffix(item, "])")
items := strings.Split(item, "||")

data = strings.Replace(data, types[i], items[rand.Intn(len(items))], -1)
} else if types[i] == "@fake(:lat)" {
data = strings.Replace(data, types[i], fmt.Sprintf("%f", f.Latitude), -1)
} else if types[i] == "@fake(:long)" {
data = strings.Replace(data, types[i], fmt.Sprintf("%f", f.Longitude), -1)
} else if types[i] == "@fake(:cc_number)" {
data = strings.Replace(data, types[i], f.CreditCardNumber, -1)
} else if types[i] == "@fake(:cc_type)" {
data = strings.Replace(data, types[i], f.CreditCardType, -1)
} else if types[i] == "@fake(:email)" {
data = strings.Replace(data, types[i], f.Email, -1)
} else if types[i] == "@fake(:domain_name)" {
data = strings.Replace(data, types[i], f.DomainName, -1)
} else if types[i] == "@fake(:ipv4)" {
data = strings.Replace(data, types[i], f.IPV4, -1)
} else if types[i] == "@fake(:ipv6)" {
data = strings.Replace(data, types[i], f.IPV6, -1)
} else if types[i] == "@fake(:password)" {
data = strings.Replace(data, types[i], f.Password, -1)
} else if types[i] == "@fake(:phone_number)" {
data = strings.Replace(data, types[i], f.PhoneNumber, -1)
} else if types[i] == "@fake(:mac_address)" {
data = strings.Replace(data, types[i], f.MacAddress, -1)
} else if types[i] == "@fake(:url)" {
data = strings.Replace(data, types[i], f.URL, -1)
} else if types[i] == "@fake(:username)" {
data = strings.Replace(data, types[i], f.UserName, -1)
} else if types[i] == "@fake(:toll_free_number)" {
data = strings.Replace(data, types[i], f.TollFreeNumber, -1)
} else if types[i] == "@fake(:e_164_phone_number)" {
data = strings.Replace(data, types[i], f.E164PhoneNumber, -1)
} else if types[i] == "@fake(:title_male)" {
data = strings.Replace(data, types[i], f.TitleMale, -1)
} else if types[i] == "@fake(:title_female)" {
data = strings.Replace(data, types[i], f.TitleFemale, -1)
} else if types[i] == "@fake(:first_name)" {
data = strings.Replace(data, types[i], f.FirstName, -1)
} else if types[i] == "@fake(:first_name_male)" {
data = strings.Replace(data, types[i], f.FirstNameMale, -1)
} else if types[i] == "@fake(:first_name_female)" {
data = strings.Replace(data, types[i], f.FirstNameFemale, -1)
} else if types[i] == "@fake(:last_name)" {
data = strings.Replace(data, types[i], f.LastName, -1)
} else if types[i] == "@fake(:name)" {
data = strings.Replace(data, types[i], f.Name, -1)
} else if types[i] == "@fake(:unix_time)" {
data = strings.Replace(data, types[i], fmt.Sprintf("%d", f.UnixTime), -1)
} else if types[i] == "@fake(:date)" {
data = strings.Replace(data, types[i], f.Date, -1)
} else if types[i] == "@fake(:time)" {
data = strings.Replace(data, types[i], f.Time, -1)
} else if types[i] == "@fake(:month_name)" {
data = strings.Replace(data, types[i], f.MonthName, -1)
} else if types[i] == "@fake(:year)" {
data = strings.Replace(data, types[i], f.Year, -1)
} else if types[i] == "@fake(:day_of_week)" {
data = strings.Replace(data, types[i], f.DayOfWeek, -1)
} else if types[i] == "@fake(:day_of_month)" {
data = strings.Replace(data, types[i], f.DayOfMonth, -1)
} else if types[i] == "@fake(:timestamp)" {
data = strings.Replace(data, types[i], f.Timestamp, -1)
} else if types[i] == "@fake(:century)" {
data = strings.Replace(data, types[i], f.Century, -1)
} else if types[i] == "@fake(:timezone)" {
data = strings.Replace(data, types[i], f.TimeZone, -1)
} else if types[i] == "@fake(:time_period)" {
data = strings.Replace(data, types[i], f.TimePeriod, -1)
} else if types[i] == "@fake(:word)" {
data = strings.Replace(data, types[i], f.Word, -1)
} else if types[i] == "@fake(:sentence)" {
data = strings.Replace(data, types[i], f.Sentence, -1)
} else if types[i] == "@fake(:paragraph)" {
data = strings.Replace(data, types[i], f.Paragraph, -1)
} else if types[i] == "@fake(:currency)" {
data = strings.Replace(data, types[i], f.Currency, -1)
} else if types[i] == "@fake(:amount)" {
data = strings.Replace(data, types[i], fmt.Sprintf("%f", f.Amount), -1)
} else if types[i] == "@fake(:amount_with_currency)" {
data = strings.Replace(data, types[i], f.AmountWithCurrency, -1)
} else if types[i] == "@fake(:uuid_hyphenated)" {
data = strings.Replace(data, types[i], f.UUIDHypenated, -1)
} else if types[i] == "@fake(:uuid_digit)" {
data = strings.Replace(data, types[i], f.UUID, -1)
data = strings.Replace(
data,
types[i],
items[rand.Intn(len(items))],
-1,
)
} else {
if val, ok := flags[types[i]]; ok {
data = strings.Replace(data, types[i], val, -1)
}
}
}

Expand All @@ -178,3 +106,52 @@ func (f *Faker) GetTypesFound(data string) []string {

return result
}

// GetFakeData gets a map of fake data
func (f *Faker) GetFakeData() map[string]string {
flags := make(map[string]string)

flags["@fake(:lat)"] = fmt.Sprintf("%f", f.Latitude)
flags["@fake(:long)"] = fmt.Sprintf("%f", f.Longitude)
flags["@fake(:amount)"] = fmt.Sprintf("%f", f.Amount)
flags["@fake(:cc_number)"] = f.CreditCardNumber
flags["@fake(:cc_type)"] = f.CreditCardType
flags["@fake(:email)"] = f.Email
flags["@fake(:domain_name)"] = f.DomainName
flags["@fake(:ipv4)"] = f.IPV4
flags["@fake(:ipv6)"] = f.IPV6
flags["@fake(:password)"] = f.Password
flags["@fake(:phone_number)"] = f.PhoneNumber
flags["@fake(:mac_address)"] = f.MacAddress
flags["@fake(:url)"] = f.URL
flags["@fake(:username)"] = f.UserName
flags["@fake(:toll_free_number)"] = f.TollFreeNumber
flags["@fake(:e_164_phone_number)"] = f.E164PhoneNumber
flags["@fake(:title_male)"] = f.TitleMale
flags["@fake(:title_female)"] = f.TitleFemale
flags["@fake(:first_name)"] = f.FirstName
flags["@fake(:first_name_male)"] = f.FirstNameMale
flags["@fake(:first_name_female)"] = f.FirstNameFemale
flags["@fake(:last_name)"] = f.LastName
flags["@fake(:name)"] = f.Name
flags["@fake(:unix_time)"] = fmt.Sprintf("%d", f.UnixTime)
flags["@fake(:date)"] = f.Date
flags["@fake(:time)"] = f.Time
flags["@fake(:month_name)"] = f.MonthName
flags["@fake(:year)"] = f.Year
flags["@fake(:day_of_week)"] = f.DayOfWeek
flags["@fake(:day_of_month)"] = f.DayOfMonth
flags["@fake(:timestamp)"] = f.Timestamp
flags["@fake(:century)"] = f.Century
flags["@fake(:timezone)"] = f.TimeZone
flags["@fake(:time_period)"] = f.TimePeriod
flags["@fake(:word)"] = f.Word
flags["@fake(:sentence)"] = f.Sentence
flags["@fake(:paragraph)"] = f.Paragraph
flags["@fake(:currency)"] = f.Currency
flags["@fake(:amount_with_currency)"] = f.AmountWithCurrency
flags["@fake(:uuid_hyphenated)"] = f.UUIDHypenated
flags["@fake(:uuid_digit)"] = f.UUID

return flags
}
2 changes: 1 addition & 1 deletion deployment/advanced/docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: '3'

services:
rhino:
image: 'clivern/rhino:release-1.5.0'
image: 'clivern/rhino:release-1.5.1'
ports:
- "8080:8080"
command: '/app/rhino serve -c /app/configs/config.prod.json'
Expand Down
2 changes: 1 addition & 1 deletion deployment/basic/docker-compose/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: '3'

services:
rhino:
image: 'clivern/rhino:release-1.5.0'
image: 'clivern/rhino:release-1.5.1'
ports:
- "8080:8080"
command: '/app/rhino serve -c /app/configs/config.prod.json'
Expand Down

0 comments on commit a9b747b

Please sign in to comment.