Skip to content

Commit 87ec1f1

Browse files
authored
Merge pull request #28 from cody-code-wy/AddBindIPArugemnt
Add new bindip argument to CLI for serve
2 parents 915a8ac + 37bff52 commit 87ec1f1

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

Diff for: babyapi_test.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,7 @@ func TestCLI(t *testing.T) {
553553
songAPI := babyapi.NewAPI[*Song]("Songs", "/songs", func() *Song { return &Song{} })
554554
api.AddNestedAPI(songAPI)
555555
go func() {
556-
err := api.RunWithArgs(os.Stdout, []string{"serve"}, 8080, "", false, nil, "")
556+
err := api.RunWithArgs(os.Stdout, []string{"serve"}, "localhost:8080", "", false, nil, "")
557557
require.NoError(t, err)
558558
}()
559559

@@ -588,14 +588,14 @@ func TestCLI(t *testing.T) {
588588
t.Run("GetAllQueryParams", func(t *testing.T) {
589589
t.Run("Successful", func(t *testing.T) {
590590
var out bytes.Buffer
591-
err := api.RunWithArgs(&out, []string{"list", "Albums"}, 0, address, false, nil, "title=New Album")
591+
err := api.RunWithArgs(&out, []string{"list", "Albums"}, "", address, false, nil, "title=New Album")
592592
require.NoError(t, err)
593593
require.Equal(t, `{"items":[{"id":"cljcqg5o402e9s28rbp0","title":"New Album"}]}`, strings.TrimSpace(out.String()))
594594
})
595595

596596
t.Run("NoMatch", func(t *testing.T) {
597597
var out bytes.Buffer
598-
err := api.RunWithArgs(&out, []string{"list", "Albums"}, 0, address, false, nil, "title=badTitle")
598+
err := api.RunWithArgs(&out, []string{"list", "Albums"}, "", address, false, nil, "title=badTitle")
599599
require.NoError(t, err)
600600
require.Equal(t, `{"items":[]}`, strings.TrimSpace(out.String()))
601601
})
@@ -604,7 +604,7 @@ func TestCLI(t *testing.T) {
604604
for _, tt := range tests {
605605
t.Run(tt.name, func(t *testing.T) {
606606
var out bytes.Buffer
607-
err := api.RunWithArgs(&out, tt.args, 0, address, false, nil, "")
607+
err := api.RunWithArgs(&out, tt.args, "", address, false, nil, "")
608608
if !tt.expectedErr {
609609
require.NoError(t, err)
610610
require.Regexp(t, tt.expectedRegexp, strings.TrimSpace(out.String()))
@@ -942,7 +942,7 @@ func TestRootAPIAsChildOfResourceAPI(t *testing.T) {
942942
artistAPI.AddNestedAPI(rootAPI)
943943

944944
go func() {
945-
err := artistAPI.RunWithArgs(os.Stdout, []string{"serve"}, 8080, "", false, nil, "")
945+
err := artistAPI.RunWithArgs(os.Stdout, []string{"serve"}, "localhost:8080", "", false, nil, "")
946946
require.NoError(t, err)
947947
}()
948948

@@ -959,14 +959,14 @@ func TestRootAPIAsChildOfResourceAPI(t *testing.T) {
959959

960960
t.Run("TestGetAllSongsEmpty", func(t *testing.T) {
961961
var out bytes.Buffer
962-
err := artistAPI.RunWithArgs(&out, []string{"list", "Songs", artist1.GetID()}, 0, address, false, nil, "")
962+
err := artistAPI.RunWithArgs(&out, []string{"list", "Songs", artist1.GetID()}, "", address, false, nil, "")
963963
require.NoError(t, err)
964964
require.Regexp(t, `{"items":\[\]}`, strings.TrimSpace(out.String()))
965965
})
966966

967967
t.Run("CreateSong", func(t *testing.T) {
968968
var out bytes.Buffer
969-
err := artistAPI.RunWithArgs(&out, []string{"post", "Songs", `{"title": "new song"}`, artist1.GetID()}, 0, address, false, nil, "")
969+
err := artistAPI.RunWithArgs(&out, []string{"post", "Songs", `{"title": "new song"}`, artist1.GetID()}, "", address, false, nil, "")
970970
require.NoError(t, err)
971971
require.Regexp(t, `\{"id":"[0-9a-v]{20}","title":"new song"\}`, strings.TrimSpace(out.String()))
972972
})
@@ -1137,7 +1137,7 @@ func TestRootAPICLI(t *testing.T) {
11371137
AddNestedAPI(songAPI)
11381138

11391139
go func() {
1140-
err := rootAPI.RunWithArgs(os.Stdout, []string{"serve"}, 8080, "", false, nil, "")
1140+
err := rootAPI.RunWithArgs(os.Stdout, []string{"serve"}, "localhost:8080", "", false, nil, "")
11411141
require.NoError(t, err)
11421142
}()
11431143

@@ -1174,14 +1174,14 @@ func TestRootAPICLI(t *testing.T) {
11741174
t.Run("GetAllQueryParams", func(t *testing.T) {
11751175
t.Run("Successful", func(t *testing.T) {
11761176
var out bytes.Buffer
1177-
err := rootAPI.RunWithArgs(&out, []string{"list", "MusicVideos"}, 0, address, false, nil, "title=New Video")
1177+
err := rootAPI.RunWithArgs(&out, []string{"list", "MusicVideos"}, "", address, false, nil, "title=New Video")
11781178
require.NoError(t, err)
11791179
require.Equal(t, `{"items":[{"id":"cljcqg5o402e9s28rbp0","title":"New Video"}]}`, strings.TrimSpace(out.String()))
11801180
})
11811181

11821182
t.Run("NoMatch", func(t *testing.T) {
11831183
var out bytes.Buffer
1184-
err := rootAPI.RunWithArgs(&out, []string{"list", "MusicVideos"}, 0, address, false, nil, "title=badTitle")
1184+
err := rootAPI.RunWithArgs(&out, []string{"list", "MusicVideos"}, "", address, false, nil, "title=badTitle")
11851185
require.NoError(t, err)
11861186
require.Equal(t, `{"items":[]}`, strings.TrimSpace(out.String()))
11871187
})
@@ -1190,7 +1190,7 @@ func TestRootAPICLI(t *testing.T) {
11901190
for _, tt := range tests {
11911191
t.Run(tt.name, func(t *testing.T) {
11921192
var out bytes.Buffer
1193-
err := rootAPI.RunWithArgs(&out, tt.args, 0, address, false, nil, "")
1193+
err := rootAPI.RunWithArgs(&out, tt.args, "", address, false, nil, "")
11941194
if !tt.expectedErr {
11951195
require.NoError(t, err)
11961196
require.Regexp(t, tt.expectedRegexp, strings.TrimSpace(out.String()))

Diff for: cli.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ func (ssf *stringSliceFlag) Set(value string) error {
2828
}
2929

3030
func (a *API[T]) RunCLI() {
31-
var port int
31+
var bindAddress string
3232
var address string
3333
var pretty bool
3434
var headers stringSliceFlag
3535
var query string
36-
flag.IntVar(&port, "port", 8080, "http port for server")
36+
flag.StringVar(&bindAddress, "bindAddress", "", "Address and port to bind to for example :8080 for port only, localhost:8080 or 172.0.0.1:8080")
3737
flag.StringVar(&address, "address", "http://localhost:8080", "server address for client")
3838
flag.BoolVar(&pretty, "pretty", true, "pretty print JSON if enabled")
3939
flag.Var(&headers, "H", "add headers to request")
@@ -43,19 +43,19 @@ func (a *API[T]) RunCLI() {
4343

4444
args := flag.Args()
4545

46-
err := a.RunWithArgs(os.Stdout, args, port, address, pretty, headers, query)
46+
err := a.RunWithArgs(os.Stdout, args, bindAddress, address, pretty, headers, query)
4747
if err != nil {
4848
fmt.Printf("error: %v\n", err)
4949
}
5050
}
5151

52-
func (a *API[T]) RunWithArgs(out io.Writer, args []string, port int, address string, pretty bool, headers []string, query string) error {
52+
func (a *API[T]) RunWithArgs(out io.Writer, args []string, bindAddress string, address string, pretty bool, headers []string, query string) error {
5353
if len(args) < 1 {
5454
return fmt.Errorf("at least one argument required")
5555
}
5656

5757
if args[0] == "serve" {
58-
a.Serve(fmt.Sprintf(":%d", port))
58+
a.Serve(bindAddress)
5959
return nil
6060
}
6161

0 commit comments

Comments
 (0)