11package main
22
33import (
4+ "encoding/base64"
45 "encoding/json"
56 "fmt"
67 "io/ioutil"
@@ -17,6 +18,15 @@ func (d *dbCreator) Init() {
1718 d .daemonURL = daemonURLs [0 ] // pick first one since it always exists
1819}
1920
21+ // addAuthHeader adds Basic authentication header to the request if credentials are provided
22+ func (d * dbCreator ) addAuthHeader (req * http.Request ) {
23+ if username != "" && password != "" {
24+ credentials := username + ":" + password
25+ encoded := base64 .StdEncoding .EncodeToString ([]byte (credentials ))
26+ req .Header .Set ("Authorization" , "Basic " + encoded )
27+ }
28+ }
29+
2030func (d * dbCreator ) DBExists (dbName string ) bool {
2131 dbs , err := d .listDatabases ()
2232 if err != nil {
@@ -33,7 +43,14 @@ func (d *dbCreator) DBExists(dbName string) bool {
3343
3444func (d * dbCreator ) listDatabases () ([]string , error ) {
3545 u := fmt .Sprintf ("%s/v1/sql?sql=show%%20databases" , d .daemonURL )
36- resp , err := http .Get (u )
46+ req , err := http .NewRequest ("GET" , u , nil )
47+ if err != nil {
48+ return nil , fmt .Errorf ("listDatabases error: %s" , err .Error ())
49+ }
50+ d .addAuthHeader (req )
51+
52+ client := & http.Client {}
53+ resp , err := client .Do (req )
3754 if err != nil {
3855 return nil , fmt .Errorf ("listDatabases error: %s" , err .Error ())
3956 }
@@ -71,10 +88,20 @@ func (d *dbCreator) listDatabases() ([]string, error) {
7188
7289func (d * dbCreator ) RemoveOldDB (dbName string ) error {
7390 u := fmt .Sprintf ("%s/v1/sql?sql=drop+database+%s" , d .daemonURL , dbName )
74- resp , err := http .Post ( u , "text/plain" , nil )
91+ req , err := http .NewRequest ( "POST" , u , nil )
7592 if err != nil {
7693 return fmt .Errorf ("drop db error: %s" , err .Error ())
7794 }
95+ req .Header .Set ("Content-Type" , "text/plain" )
96+ d .addAuthHeader (req )
97+
98+ client := & http.Client {}
99+ resp , err := client .Do (req )
100+ if err != nil {
101+ return fmt .Errorf ("drop db error: %s" , err .Error ())
102+ }
103+ defer resp .Body .Close ()
104+
78105 if resp .StatusCode != 200 {
79106 return fmt .Errorf ("drop db returned non-200 code: %d" , resp .StatusCode )
80107 }
@@ -84,7 +111,14 @@ func (d *dbCreator) RemoveOldDB(dbName string) error {
84111
85112func (d * dbCreator ) CreateDB (dbName string ) error {
86113 u := fmt .Sprintf ("%s/v1/sql?sql=create%%20database%%20%s" , d .daemonURL , dbName )
87- resp , err := http .Get (u )
114+ req , err := http .NewRequest ("GET" , u , nil )
115+ if err != nil {
116+ return fmt .Errorf ("create db error: %s" , err .Error ())
117+ }
118+ d .addAuthHeader (req )
119+
120+ client := & http.Client {}
121+ resp , err := client .Do (req )
88122 if err != nil {
89123 return fmt .Errorf ("create db error: %s" , err .Error ())
90124 }
0 commit comments