diff --git a/src/audit_api.go b/src/audit_api.go index fd64068..740c043 100644 --- a/src/audit_api.go +++ b/src/audit_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" diff --git a/src/audit_db.go b/src/audit_db.go index 21877a8..10d86b9 100644 --- a/src/audit_db.go +++ b/src/audit_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/bunker.go b/src/bunker.go index b73610d..c669fbe 100644 --- a/src/bunker.go +++ b/src/bunker.go @@ -1,6 +1,6 @@ -// Package databunker - Personal Identifiable Information (PII) database. +// Package main - Personal Identifiable Information (PII) database. // For more info check https://paranoidguy.com -package databunker +package main import ( "context" @@ -172,6 +172,7 @@ func (e mainEnv) setupRouter() *httprouter.Router { router.GET("/v1/consent/:mode/:address", e.consentAllUserRecords) router.GET("/v1/consent/:mode/:address/:brief", e.consentUserRecord) router.GET("/v1/consents/:brief", e.consentFilterRecords) + router.GET("/v1/consents", e.consentTypes) router.POST("/v1/consent/:mode/:address/:brief", e.consentAccept) router.DELETE("/v1/consent/:mode/:address/:brief", e.consentWithdraw) diff --git a/src/bunker_test.go b/src/bunker_test.go index e3e7d9c..c33c54a 100644 --- a/src/bunker_test.go +++ b/src/bunker_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/hex" diff --git a/src/consent_api.go b/src/consent_api.go index d8274dd..0b359b6 100644 --- a/src/consent_api.go +++ b/src/consent_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" @@ -377,3 +377,22 @@ func (e mainEnv) consentFilterRecords(w http.ResponseWriter, r *http.Request, ps str := fmt.Sprintf(`{"status":"ok","total":%d,"rows":%s}`, numRecords, resultJSON) w.Write([]byte(str)) } + +func (e mainEnv) consentTypes(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + if e.enforceAuth(w, r, nil) == "" { + return + } + resultJSON, numRecords, err := e.db.getConsentTypes() + if err != nil { + returnError(w, r, "internal error", 405, err, nil) + return + } + fmt.Printf("Total count of rows: %d\n", numRecords) + //fmt.Fprintf(w, "title") + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + str := fmt.Sprintf(`{"status":"ok","total":%d,"briefs":%s}`, numRecords, resultJSON) + w.Write([]byte(str)) +} + diff --git a/src/consent_db.go b/src/consent_db.go index 061a33c..56c8a91 100644 --- a/src/consent_db.go +++ b/src/consent_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" @@ -194,6 +194,25 @@ func (dbobj dbcon) filterConsentRecords(brief string, offset int32, limit int32) return resultJSON, count, nil } +func (dbobj dbcon) getConsentTypes() ([]byte, int64, error) { + records, err := dbobj.getUniqueList(TblName.Consent, "brief") + if err != nil { + return nil, 0, err + } + count:= int64(len(records)) + // we need to return only list of briefs + var result []string + for _, rec := range records { + result = append(result, rec["brief"].(string)) + } + resultJSON, err := json.Marshal(result) + if err != nil { + return nil, 0, err + } + //fmt.Printf("Found multiple documents (array of pointers): %+v\n", results) + return resultJSON, count, nil +} + func (dbobj dbcon) expireConsentRecords(notifyURL string) error { records, err := dbobj.getExpiring(TblName.Consent, "status", "yes") if err != nil { diff --git a/src/cryptor.go b/src/cryptor.go index 2f83bf5..db80050 100644 --- a/src/cryptor.go +++ b/src/cryptor.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "crypto/aes" diff --git a/src/email.go b/src/email.go index a6d572d..697a253 100644 --- a/src/email.go +++ b/src/email.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" diff --git a/src/notify.go b/src/notify.go index 2c68f08..85ea375 100644 --- a/src/notify.go +++ b/src/notify.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "bytes" diff --git a/src/qldb.go b/src/qldb.go index 115513b..5c89d46 100644 --- a/src/qldb.go +++ b/src/qldb.go @@ -1,4 +1,4 @@ -package databunker +package main // github.com/mattn/go-sqlite3 @@ -677,6 +677,14 @@ func (dbobj dbcon) getExpiring(t Tbl, keyName string, keyValue string) ([]bson.M return dbobj.getListDo(q, keyValue) } +func (dbobj dbcon) getUniqueList(t Tbl, keyName string) ([]bson.M, error) { + table := getTable(t) + keyName = escapeName(keyName) + q := "select distinct " + keyName +" from " + table + " ORDER BY " + keyName + fmt.Printf("q: %s\n", q) + return dbobj.getListDo(q, "") +} + func (dbobj dbcon) getList(t Tbl, keyName string, keyValue string, start int32, limit int32) ([]bson.M, error) { table := getTable(t) if limit > 100 { @@ -797,12 +805,12 @@ func (dbobj dbcon) indexNewApp(appName string) { } defer tx.Rollback() _, err = tx.Exec("CREATE TABLE IF NOT EXISTS " + appName + ` ( - token STRING, + token STRING, md5 STRING, rofields STRING, - data STRING, - status STRING, - ` + "`when` int);") + data STRING, + status STRING, + ` + "`when` int);") if err != nil { return } diff --git a/src/requests_api.go b/src/requests_api.go index a5ba091..3f20738 100644 --- a/src/requests_api.go +++ b/src/requests_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" diff --git a/src/requests_db.go b/src/requests_db.go index a383ae8..75fae80 100644 --- a/src/requests_db.go +++ b/src/requests_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/sessions_api.go b/src/sessions_api.go index 1dbe56e..6434c65 100644 --- a/src/sessions_api.go +++ b/src/sessions_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/sessions_db.go b/src/sessions_db.go index 2d4094e..91e6821 100644 --- a/src/sessions_db.go +++ b/src/sessions_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/base64" diff --git a/src/sharedrecords_api.go b/src/sharedrecords_api.go index 2f909bc..9d85b71 100644 --- a/src/sharedrecords_api.go +++ b/src/sharedrecords_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/sharedrecords_db.go b/src/sharedrecords_db.go index 7af1bd0..4ecb9f6 100644 --- a/src/sharedrecords_db.go +++ b/src/sharedrecords_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "errors" diff --git a/src/sharedrecords_test.go b/src/sharedrecords_test.go index 69630de..5ea01cf 100644 --- a/src/sharedrecords_test.go +++ b/src/sharedrecords_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/sms.go b/src/sms.go index d35070f..042eb09 100644 --- a/src/sms.go +++ b/src/sms.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/userapps_api.go b/src/userapps_api.go index 2feaa2f..8b37dff 100644 --- a/src/userapps_api.go +++ b/src/userapps_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/userapps_db.go b/src/userapps_db.go index 977e2a1..688e165 100644 --- a/src/userapps_db.go +++ b/src/userapps_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "crypto/md5" diff --git a/src/userapps_test.go b/src/userapps_test.go index 8ee06b4..067526e 100644 --- a/src/userapps_test.go +++ b/src/userapps_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "encoding/json" diff --git a/src/users_api.go b/src/users_api.go index 3b220bb..0d6454a 100644 --- a/src/users_api.go +++ b/src/users_api.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" diff --git a/src/users_db.go b/src/users_db.go index 110a947..887f6e6 100644 --- a/src/users_db.go +++ b/src/users_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "crypto/md5" diff --git a/src/users_test.go b/src/users_test.go index 2e492fb..7150d5d 100644 --- a/src/users_test.go +++ b/src/users_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt" diff --git a/src/utils.go b/src/utils.go index fab99ae..8ae7e0f 100644 --- a/src/utils.go +++ b/src/utils.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "crypto/sha256" diff --git a/src/utils_test.go b/src/utils_test.go index 18958c6..6181263 100644 --- a/src/utils_test.go +++ b/src/utils_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "net/http/httptest" diff --git a/src/xtokens_db.go b/src/xtokens_db.go index 7d5d994..e3979fb 100644 --- a/src/xtokens_db.go +++ b/src/xtokens_db.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "errors" diff --git a/src/xtokens_test.go b/src/xtokens_test.go index a409540..2261f99 100644 --- a/src/xtokens_test.go +++ b/src/xtokens_test.go @@ -1,4 +1,4 @@ -package databunker +package main import ( "fmt"