From 2e8b427165dd414dd1e47b3267d8d206e2dfa066 Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Wed, 11 May 2022 16:52:47 +0530 Subject: [PATCH 1/7] correcting logs string usage --- .../pkg/services/appointment_service.go | 14 +++++++------- .../pkg/services/enrollment_service.go | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/registration_api/pkg/services/appointment_service.go b/backend/registration_api/pkg/services/appointment_service.go index 06110c79c..ac5c56d97 100644 --- a/backend/registration_api/pkg/services/appointment_service.go +++ b/backend/registration_api/pkg/services/appointment_service.go @@ -58,7 +58,7 @@ func createFacilityWiseAppointmentSlots(schedule models.FacilitySchedule) { if err == nil { err = SetValue(key, schedule.Slots, schedule.GetTTL()) if err != nil { - log.Errorf("Error while creating key: %s slots: %d %v", key, schedule.Slots, err) + log.Errorf("Error while creating key: %s slots: %v %v", key, schedule.Slots, err) } } else { log.Errorf("Error while inserting %s to set %s %v", key, schedule.FacilityCode, err) @@ -70,7 +70,7 @@ func ClearOldSlots(facilityCode string, beforeTimeStamp int64) { if e := RemoveElementsByScoreInSet(facilityCode, "-inf", fmt.Sprintf("(%d", beforeTimeStamp)); e != nil { log.Errorf("Error clearing old slots for FacilityCode: %s, timeStamp: %d", facilityCode, beforeTimeStamp) } - log.Infof("Clearing old slots for %d[FacilityCode] before %d[epoch]", facilityCode, beforeTimeStamp) + log.Infof("Clearing old slots for %v[FacilityCode] before %d[epoch]", facilityCode, beforeTimeStamp) } func BookAppointmentSlot(slotId string) error { @@ -116,13 +116,13 @@ func RevokeEnrollmentBookedStatus(enrollmentCode string, programId string, dose updatedCountKey := fmt.Sprintf("%s-%s-updatedCount", programId, dose) success, err := RemoveHastField(enrollmentCode, slotKey) if err != nil { - log.Errorf("Failed to mark %s code for slot %s as booked %v", enrollmentCode, err) + log.Errorf("Failed to mark %s code for slot %s as booked %v", enrollmentCode, slotKey, err) } else { - log.Infof("Successfully marked %s code for slot %s as booked", enrollmentCode) + log.Infof("Successfully marked %s code for slot %s as booked", enrollmentCode, slotKey) } _, err = IncrHashField(enrollmentCode, updatedCountKey) if err != nil { - log.Errorf("Failed to increase %s updated count", enrollmentCode, err) + log.Errorf("Failed to increase %s updated count - %v", enrollmentCode, err) } else { log.Infof("Successfully increased %s updated count", enrollmentCode) } @@ -186,12 +186,12 @@ func GetOpenFacilitySlot(facilityCode, programID string) (string, error) { for i , rc := range remainingCounts { countStr, ok := rc.(string) if !ok { - log.Error("Error parsing %s to string", rc) + log.Errorf("Error parsing %s to string", rc) continue } count, err := strconv.Atoi(countStr) if err != nil { - log.Error("Error parsing %s to int", countStr) + log.Errorf("Error parsing %s to int", countStr) continue } if count > 0 { diff --git a/backend/registration_api/pkg/services/enrollment_service.go b/backend/registration_api/pkg/services/enrollment_service.go index 38d3b3469..3da6ea099 100644 --- a/backend/registration_api/pkg/services/enrollment_service.go +++ b/backend/registration_api/pkg/services/enrollment_service.go @@ -46,7 +46,7 @@ func MarkPreEnrolledUserCertified(preEnrollmentCode string, phone string, name s } } if dose < totalDoses { - log.Infof("Registering %s to next program %s dose %s", preEnrollmentCode, programId, dose) + log.Infof("Registering %s to next program %s dose %f", preEnrollmentCode, programId, dose) enrollmentObj["appointments"] = append(appointments, registerToNextDose(programId, dose)) } response, err := kernelService.UpdateRegistry(EnrollmentEntity, enrollmentObj) @@ -57,7 +57,7 @@ func MarkPreEnrolledUserCertified(preEnrollmentCode string, phone string, name s } } } else { - log.Error("Enrollment not found for osid %v", enrollmentOsid) + log.Errorf("Enrollment not found for osid %v", enrollmentOsid) } } else { log.Error("Failed reading enrollments registry for osid", enrollmentOsid) @@ -152,7 +152,7 @@ func CreateEnrollment(enrollmentPayload *EnrollmentPayload, retryCount int) erro if strings.Contains(err.Error(), DUPLICATE_MSG) { // enrollmentCode already exists, trying with new enrollment code if retryCount <= config.Config.EnrollmentCreation.MaxRetryCount { - log.Infof("Duplicate enrollmentCode found, retrying attempt ", retryCount, " of ", config.Config.EnrollmentCreation.MaxRetryCount) + log.Info("Duplicate enrollmentCode found, retrying attempt ", retryCount, " of ", config.Config.EnrollmentCreation.MaxRetryCount) retryCount = retryCount + 1 return CreateEnrollment(enrollmentPayload, retryCount) } else { From 36bc0019a32ddb45549cfb4ee5e04891581f53cf Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Thu, 12 May 2022 09:49:48 +0530 Subject: [PATCH 2/7] DIV-8487 | API to request for OTP through MOSIP --- backend/registration_api/config/config.go | 9 + backend/registration_api/go.mod | 10 +- backend/registration_api/go.sum | 174 +++++++++++++++++- backend/registration_api/pkg/handler.go | 16 ++ .../pkg/services/mosip_service.go | 101 ++++++++++ .../pkg/services/mosip_service_test.go | 52 ++++++ .../swagger_gen/restapi/embedded_spec.go | 88 +++++++++ .../operations/mosip_generate_o_t_p.go | 166 +++++++++++++++++ .../mosip_generate_o_t_p_parameters.go | 75 ++++++++ .../mosip_generate_o_t_p_responses.go | 84 +++++++++ .../mosip_generate_o_t_p_urlbuilder.go | 87 +++++++++ .../operations/registration_api_api.go | 12 ++ docker-compose.yml | 4 + interfaces/registration-api.yaml | 27 +++ 14 files changed, 895 insertions(+), 10 deletions(-) create mode 100644 backend/registration_api/pkg/services/mosip_service.go create mode 100644 backend/registration_api/pkg/services/mosip_service_test.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go diff --git a/backend/registration_api/config/config.go b/backend/registration_api/config/config.go index e50869374..ac8a4c104 100644 --- a/backend/registration_api/config/config.go +++ b/backend/registration_api/config/config.go @@ -50,6 +50,15 @@ var Config = struct { MinCancellationHours int `default:"24"` MaxAppointmentUpdatesAllowed int `default:"3"` TimeZoneOffset string `default:"+05:30"` + Mosip struct { + ClientId string `env:"MOSIP_CLIENT_ID"` + ClientSecret string `env:"MOSIP_CLIENT_SECRET"` + AuthHeader string `env:"MOSIP_AUTH_TOKEN"` + OTPUrl string `env:"MOSIP_OTP_URL"` + AuthUrl string `env:"MOSIP_AUTH_URL"` + PrivateKey string `env:"MOSIP_PRIVATE_KEY"` + PublicKey string `env:"MOSIP_PUBLIC_KEY"` + } }{} func Initialize() { diff --git a/backend/registration_api/go.mod b/backend/registration_api/go.mod index 78228b322..67f18fc01 100644 --- a/backend/registration_api/go.mod +++ b/backend/registration_api/go.mod @@ -14,21 +14,15 @@ require ( github.com/go-openapi/strfmt v0.19.8 github.com/go-openapi/swag v0.19.11 github.com/go-openapi/validate v0.19.12 - github.com/go-redis/redis v6.15.9+incompatible github.com/go-redis/redis/v8 v8.6.0 - github.com/golang/protobuf v1.4.3 // indirect - github.com/google/go-cmp v0.5.4 // indirect - github.com/google/uuid v1.1.2 // indirect github.com/gospotcheck/jwt-go v4.0.0+incompatible github.com/imroc/req v0.3.0 github.com/jessevdk/go-flags v1.4.0 github.com/jinzhu/configor v1.2.1 - github.com/onsi/ginkgo v1.15.0 // indirect - github.com/onsi/gomega v1.10.5 // indirect + github.com/lestrrat-go/jwx v1.2.24 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.7.0 - golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb - google.golang.org/protobuf v1.25.0 // indirect + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 gopkg.in/confluentinc/confluent-kafka-go.v1 v1.5.2 ) diff --git a/backend/registration_api/go.sum b/backend/registration_api/go.sum index bdd2216f4..5e50da64a 100644 --- a/backend/registration_api/go.sum +++ b/backend/registration_api/go.sum @@ -1,4 +1,5 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -7,7 +8,13 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= @@ -15,16 +22,28 @@ github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0 github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPIk= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/confluentinc/confluent-kafka-go v1.5.2 h1:l+qt+a0Okmq0Bdr1P55IX4fiwFJyg0lZQmfHkAFkv7E= github.com/confluentinc/confluent-kafka-go v1.5.2/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= @@ -32,13 +51,24 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -110,8 +140,6 @@ github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7 github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= github.com/go-openapi/validate v0.19.12 h1:mPLM/bfbd00PGOCJlU0yJL7IulkZ+q9VjPv7U11RMQQ= github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= -github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= -github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.6.0 h1:swqbqOrxaPztsj2Hf1p94M3YAgl7hYEpcw21z299hh8= github.com/go-redis/redis/v8 v8.6.0/go.mod h1:DQ9q4Rk2HtwkrwVrdgmphoOQDMfpvcd/nHEwRsicg8s= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -141,10 +169,18 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -155,6 +191,9 @@ github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +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.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -165,12 +204,17 @@ github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gospotcheck/jwt-go v4.0.0+incompatible h1:IFJXoMKFNfEoZE7cXgs5pWcK2AEQyDISXMkr1jaaJBg= github.com/gospotcheck/jwt-go v4.0.0+incompatible/go.mod h1:xV77fUnYqYQM9PwY+P7tnFw/ALG6ijfKbvbFE66O8mI= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imroc/req v0.3.0 h1:3EioagmlSG+z+KySToa+Ylo3pTFZs+jh3Brl7ngU12U= github.com/imroc/req v0.3.0/go.mod h1:F+NZ+2EFSo6EFXdeIbpfE9hcC233id70kf0byW97Caw= @@ -184,18 +228,40 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= +github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= +github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= +github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= +github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= +github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/jwx v1.2.24 h1:N6Qsn6TUsDzz+qgS/1xcfBtkQfnbwW01fLFJpuYgKsg= +github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= +github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= +github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -204,10 +270,17 @@ github.com/mailru/easyjson v0.7.1 h1:mdxE1MF9o53iCb2Ghj1VfWvh7ZOwHpnVG/xwXrV90U8 github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= @@ -229,14 +302,31 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -247,15 +337,27 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA= +go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= @@ -266,9 +368,16 @@ go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U= go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s= go.opentelemetry.io/otel/metric v0.17.0 h1:t+5EioN8YFXQ2EH+1j6FHCKMUj+57zIDSnSGr/mWuug= go.opentelemetry.io/otel/metric v0.17.0/go.mod h1:hUz9lH1rNXyEwWAhIWCMFWKhYtpASgSnObJFnU26dJ0= +go.opentelemetry.io/otel/oteltest v0.17.0 h1:TyAihUowTDLqb4+m5ePAsR71xPJaTBJl4KDArIdi9k4= go.opentelemetry.io/otel/oteltest v0.17.0/go.mod h1:JT/LGFxPwpN+nlsTiinSYjdIx3hZIGqHCpChcIZmdoE= go.opentelemetry.io/otel/trace v0.17.0 h1:SBOj64/GAOyWzs5F680yW1ITIfJkm6cJWL2YAvuL9xY= go.opentelemetry.io/otel/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -278,15 +387,23 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f h1:OeJjE6G4dgCY4PIXvIRQbE8+RX+uXZyGhUy/ksMGJoc= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -299,20 +416,32 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -325,14 +454,32 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091 h1:DMyOG0U+gKfu8JZzg2UQe9MeaC1X+xQWlAKcRnjxjCw= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +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/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -347,7 +494,11 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -358,10 +509,17 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -373,8 +531,13 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +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/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/confluentinc/confluent-kafka-go.v1 v1.5.2 h1:g0WBLy6fobNUU8W/e9zx6I0Yl79Ya+BDW1NwzAlTiiQ= @@ -385,13 +548,20 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/backend/registration_api/pkg/handler.go b/backend/registration_api/pkg/handler.go index ec1f1481e..c15cb2bd3 100644 --- a/backend/registration_api/pkg/handler.go +++ b/backend/registration_api/pkg/handler.go @@ -53,6 +53,7 @@ func SetupHandlers(api *operations.RegistrationAPIAPI) { api.RegisterRecipientToProgramHandler = operations.RegisterRecipientToProgramHandlerFunc(services.RegisterEnrollmentToProgram) api.DeleteRecipientProgramHandler = operations.DeleteRecipientProgramHandlerFunc(services.DeleteProgramInEnrollment) api.GetBeneficiariesHandler = operations.GetBeneficiariesHandlerFunc(getBeneficiaries) + api.MosipGenerateOTPHandler = operations.MosipGenerateOTPHandlerFunc(mosipGenerateOTP) } func pingHandler(params operations.GetPingParams) middleware.Responder { @@ -124,6 +125,21 @@ func generateOTP(params operations.GenerateOTPParams) middleware.Responder { } } +func mosipGenerateOTP(params operations.MosipGenerateOTPParams) middleware.Responder { + individualId := *params.Body.IndividualID + individualIDType := *params.Body.IndividualIDType + if individualId == "" || individualIDType == "" { + return operations.NewMosipGenerateOTPBadRequest() + } + + if err := services.MosipOTPRequest(individualIDType, individualId); err != nil { + return operations.NewMosipGenerateOTPInternalServerError() + } + + return operations.NewMosipGenerateOTPOK() + +} + func verifyOTP(params operations.VerifyOTPParams) middleware.Responder { phone := params.Body.Phone receivedOTP := params.Body.Otp diff --git a/backend/registration_api/pkg/services/mosip_service.go b/backend/registration_api/pkg/services/mosip_service.go new file mode 100644 index 000000000..0376c80e7 --- /dev/null +++ b/backend/registration_api/pkg/services/mosip_service.go @@ -0,0 +1,101 @@ +package services + +import ( + "encoding/base64" + "encoding/json" + "encoding/pem" + "fmt" + "github.com/divoc/registration-api/config" + "github.com/gospotcheck/jwt-go" + "github.com/imroc/req" + "github.com/lestrrat-go/jwx/jwa" + "github.com/lestrrat-go/jwx/jws" + log "github.com/sirupsen/logrus" + "time" +) + +type OTPRequest struct { + Id string `json:"id"` + Version string `json:"version"` + TransactionId string `json:"transactionID"` + RequestTime string `json:"requestTime"` + IndividualId string `json:"individualId"` + IndividualIdType string `json:"individualIdType"` + OtpChannel []string `json:"otpChannel"` +} + +type RequestHeader struct { + Signature string `json:"signature"` + ContentType string `json:"Content-type"` + Authorisation string `json:"Authorization"` +} + +func MosipOTPRequest(individualIDType string, individualId string) error { + + authToken := getMosipAuthToken() + requestBody := OTPRequest{ + Id: "mosip.identity.otp", + Version: "1.0", + TransactionId: "1234567890", + RequestTime: time.Now().UTC().Format("2006-01-02T15:04:05.999Z"), + IndividualId: individualId, + IndividualIdType: individualIDType, + OtpChannel: []string{"email"}, + } + + reqJson, err :=json.Marshal(requestBody) + if err != nil { + log.Errorf("Error occurred while trying to unmarshal the array of enrollments (%v)", err) + return err + } + log.Infof("requestBody before signature - %s", reqJson) + signedPayload := getSignature(reqJson, config.Config.Mosip.PrivateKey, config.Config.Mosip.PublicKey) + log.Infof("signed payload - %v", signedPayload) + + resp, err := generateOTP(requestBody, RequestHeader{ + Signature: signedPayload, + ContentType: "application/json", + Authorisation: "Authorization="+authToken, + }); + + if err != nil { + log.Errorf("Error Response from MOSIP OTP Generate API - %v", err) + return err + } + + log.Infof("Response of OTP request - %V", resp) + + return nil +} + +func generateOTP(requestBody OTPRequest, header RequestHeader) (*req.Resp, error) { + return req.Post(config.Config.Mosip.OTPUrl, req.BodyJSON(requestBody), req.HeaderFromStruct(header)) +} + +func getMosipAuthToken() string { + // TODO: Generate the token from API + return config.Config.Mosip.AuthHeader +} + +func getSignature(data []byte, privateKey string, certificate string) string { + + keyFromPem, _ := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey)) + + pemBlock, _ := pem.Decode([]byte(certificate)) + publicCert := base64.StdEncoding.EncodeToString(pemBlock.Bytes) + + var certs [] string + certs = append(certs, publicCert) + + hdrs := jws.NewHeaders() + err := hdrs.Set(jws.X509CertChainKey, certs) + + buf, err := jws.Sign(data, jwa.RS256, keyFromPem, jws.WithHeaders(hdrs)) + if err != nil { + fmt.Printf("failed to sign payload: %s\n", err) + return "" + } + + return string(buf) + +} \ No newline at end of file diff --git a/backend/registration_api/pkg/services/mosip_service_test.go b/backend/registration_api/pkg/services/mosip_service_test.go new file mode 100644 index 000000000..21041b5e3 --- /dev/null +++ b/backend/registration_api/pkg/services/mosip_service_test.go @@ -0,0 +1,52 @@ +package services + +import ( + "encoding/json" + "testing" +) + +func TestMosipSignature(t *testing.T) { + otpReq := OTPRequest{ + Id: "mosip.identity.otp", + Version: "1.0", + TransactionId: "1234567890", + RequestTime: "2022-05-11T18:00:37.914Z", + IndividualId: "1234567", + IndividualIdType: "VID", + OtpChannel: []string{"email"}, + } + otpReqStr, _ := json.Marshal(otpReq) + + // dummy keys for testing + publicKeyPem := "-----BEGIN CERTIFICATE-----\nMIIFcDCCA1gCCQDImfyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wHhcNMjIwNTExMTc1NTE3WhcNMjMwNTExMTc1NTE3WjB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQC7mBftpG+Ay92KX07HKgJvEt3UHogMK7ofENgWe4b7fvqOtHde8fPotiITJLrCjCHlyaoueOQ8IMRDzIEH+mz9s6NEQPGX70kD2OIrFFunvVmKLCiF3sSyUAq1Qgm2aThB238MkTnEC6C2EBHebz5ncolmVIpWTusExK0eEtw9oRDeIo9jioyrZW8Dt97ND9n1SngsxgcjH1kqGOROwVbgqOqlKrjueT9N8Jbo+Cg57zZZ4npsbmjb21KQXKq2X5RUR95p8saUuZ6GLh/gFVmnFm66qG3HzjnJAXyk9WH+pgp6Pt8HnrCN0jbT2LE0RWh/xMy8wACFihFI3m9TmS7k8ZH6CfAwruK4obvEJoIWNNFq+MtM44l1ydl//726FSp0Le0JYEXsO8O1RJQ39n2IglOs36WGuT1dZ8PBk3gJ/lo+N1Mlro6HGjkrzasykFd3RPTUzVCF+Zd+I67NFOmbjgdRsica4I3h2A4xM1PfOUtbb5TCZeLBLkcW4YKfjHYQ5v728ZhpjdbEarcnuKU34akSMvOinYXIG70Rt3PVjXTl0RW53sQXhTu0+q3l5ccvAQm3Gn/q1z2ofnCFhb5y3a1Hop9IaY2QtdAthTpBe91XT3YnL3i1eQ6mzFDPmQUB+4GNs3/zZHX3M/oOtie1UI560a2u+k4AUn7kShAwdg==\n-----END CERTIFICATE-----"; + privateKeyPem := "-----BEGIN PRIVATE KEY-----\nMIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABAoICAAnNo5acKYc5fJQ5VxIaMFBjX5n7Pl4pcZyTX/FXyCopKoP/L0Gs2tDcZXjt/HZ5thg3pSxmiLFxh6g++psSf6KCMyZQ8Jc5JCj+L4lNVsmKxb3ULh8V3j839z4Bg5BQObAWNlnFEVNv5DTiMy2gh6liTsvCPp5y5o0YbMQtu14lQ4yGjfHKS8ML43enCmaJElRSLXjokTkZC45kgljN6M+kDwLjNWB0dBu62LGabAIDHYHKLWsDK+fKJXIQ7Mq0Df2qI6v7yn8q1CKYfZB0zSAOULCq8Q+VPzpavYATwLlrb0oxfExET3dTKvwKHfqiKIMI/puDrq9CUDgRrZ1ews3hHMB19pf2bbzFhODMvMwSiMUbVLmjmTNHxpJMLZapljQpO3g+ErdhUQUQIWxlfHE78eYNxm1iupukL+SNlmsaPPFLFOWl4OMNdJ4pAG2wpqijC9BulGlaymPzXaEFw3jSeSuk6unf6cPhqlMkhhkR3DA3gU0EZhf6/iISIPdyvkHQ2og0YYYcISbxHH46sRCQ7bOfUIeM0HCWjFn65CF93/74NFGVraWnwDkAXqonlZAO/s1333ud+LCPWtgzY1uhhVrFUDeaZcdu2cFzj+SOJL5QDg6LXTj5D67chDfXRXroGiPH4InYzeaKC9vOTDRPLXjXeRZdNcdWUUHv4ftxAoIBAQDzbVTfWeaYQwGvKf7r4hS4447Da6Zqxc90h2MVfzqlwQqATj67pXUdN0yZU8KkwBAe5s2t2RHAOBMo4AamOar3oCLn24W6ddNMOEO2Cdf6hiTmMXerizC38qsjPOSgIYVDYdXAQo4oTLSXCtxxZ5qgkEk+ZE6GNnvUCDrldAz5/NrHLK+0VLWpsxRBpWioJ63XJKUv1WkkZoOpLXXNWoRB5ZrQScAW9hy5R/zqF3HPUS9NDiNrd72KP/silGb/3CktcUfTycvait11oIo285L2W7x0QT+SHv4w1mu+ j6yyBQ0v6pC4Fl6vfeFmTiW7/KQMt1UWcQURB4Tmu1o4HFYpAoIBAQDUI3TKBIZEQcndQJ1r//RIyW19oKXQpicseLBN1QbOHFWklAVrlBkJPJG60HePrHHl/apw8Mgr 70cf72HreNY6XWsjA92Ed9dLb3KEvQwh+gvTZtpUnqfxdcys0isFgdCfVfAZ7aYb 2vA/ONdnPjyx0v/zfq3fSSIUmjLU0Xgte40rS6GtAiLKkrPUEA5azr8rDrie/XRo 6nIMps5IqVGVKNZTF+knvFfJgH8azAWu9ae5IoV0i+ugTStDbxbC1pIbQEqZY3Ur SqhBGNKvbhIBOa+StcBt1zFMSVHoGb6StaG0GcpsNwnAqmLxEmi5BKQ4NI5WxB2v cfrsQq3+O5z3AoIBADaDAUKTC0SFnNbw/JkuI53Tt6CjdrzqVy6tMs8ZkrSTqhpZ a0ryHmvQemLLkwb5y6Jf5SdNOOBmrkO1B0gqGdMiFS7+xc+fmxWyc9dMFQWRDKpP 4ZCUtvA6c4CMnlYNq54PRqKrRNJZewdn8z2iCcpzBTPnmn4LrWcqAKZpeo5wxT1d EGu9nIDIDX014V3mpNNM7YDstYLlQg6ck4jNAFkRZb3HBjEeJAiJymVRorbeY01K ITxrsBJJiZ+QxA//6Wi3uXH/+pqSBk3VCZ6MpRhuKqGOCwJZ1mpxWedunSmwX+ef C5Ft0P5TnioezexvAv2mAHPqE0xg9q4EvotaLSECggEAbBPoU2f8s9fErYlW6ogL f+3Hb6Kh9+w+twSB5hVrEyUSaPfUzxszqiYGpOPClhsoKCGVbVbu1JtiZB3EiIAW vMONath0SiH4OQF9mazq+oB29+xFvajbLURz03R74KFjlVnmKn+OClD/52XhMENg DsTOC9L1aHXM/CwXS5+wl5ODt5QfuZIGAai+H4NSnOcKNDiazL2aSj1vf4yYOiKx Ysncb5cV/V2SaCGkIBXjq2CSY9r3nQoQMKpAKWn2cat54pJdr0ohjr3JfOjVpfTx DVjDX35jnFJvVktghFxhYENTL/uXyow71sG4CNP1MJXxyITWI9Rkv1bVnPrXxFfA vwKCAQEAwvBgH0lkdXO0Mst0RmxflFlmkKtmTmah9Yy0cERNCUW7VclqQPpcIm8C vYyNg6SVFuwupM1t8akJ8MQtAKgXtPK5M3tTWPiR+R6d+19HTZXbOyQPDezIAu6T 3VgYT2MVYjCdXRjep/uzP2FLdfnvCO9km967A/9peVHWJi087HtVLGuvPk0zUjV3 qVc2W3dXv1Uzs0PpwoTaFDvQYG9SMqrhzGnS2T5tbusB7y1fXLDe5uDtXm645tRw NGt8aLrOGZVI6xgUIB1twC1FzxsQiIdZiavYsRnIT9pevgb2SB1oWtTTUbQGc1gt GnEg4hAWcUpapOWBA4lhzKGcBZ2TPw==\n-----END PRIVATE KEY-----"; + + type args struct { + data []byte + privateKey string + publicKey string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "shouldSign", + args: args{ + otpReqStr, + privateKeyPem, + publicKeyPem, + }, + want: "eyJhbGciOiJSUzI1NiIsIng1YyI6WyJNSUlGY0RDQ0ExZ0NDUURJbWZ5TlNoZkcwREFOQmdrcWhraUc5dzBCQVFzRkFEQjZNUXN3Q1FZRFZRUUdFd0pKVGpFU01CQUdBMVVFQ0F3SlMyRnlibUYwWVd0aE1SSXdFQVlEVlFRSERBbENZVzVuWVd4dmNtVXhEakFNQmdOVkJBb01CVVJKVms5RE1Rb3dDQVlEVlFRTERBRXVNU2N3SlFZRFZRUUREQjVvZEhSd2N6b3ZMMlJsYlc4dFpHbDJiMk11WldkdmRpNXZjbWN1YVc0d0hoY05Nakl3TlRFeE1UYzFOVEUzV2hjTk1qTXdOVEV4TVRjMU5URTNXakI2TVFzd0NRWURWUVFHRXdKSlRqRVNNQkFHQTFVRUNBd0pTMkZ5Ym1GMFlXdGhNUkl3RUFZRFZRUUhEQWxDWVc1bllXeHZjbVV4RGpBTUJnTlZCQW9NQlVSSlZrOURNUW93Q0FZRFZRUUxEQUV1TVNjd0pRWURWUVFEREI1b2RIUndjem92TDJSbGJXOHRaR2wyYjJNdVpXZHZkaTV2Y21jdWFXNHdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFESnVFRkpOQVBQRFQ4U2ozOEg1ZFNrbGlTWmxtbTZZT3FLZlBKNVdNYlk5cVo1THg4RG9EcjVRL0gxMURub2kwSWs4OUJycm16VURVVXZ0dXowYnlNMG9pdy9xbVFwblJaR2NCWjIzZ0gvOXZDeVJQV1NocWhsYzl3bVVmTWdOdEVxV2J4U1FsR0s2SlRyaVY1dHhXMjFGaDQ2SFp2b0FsUzNmNHY4QlczZGZSOC82R2d5TEtkS3BGVFhTakVvRU1teVpaUmg1dTdhVXltQ2RPMWd0cjd3Wlh6bXN2Q2UrTHNod1MzdWFDTVVROHloc1ZQdHVMTCs5Wkhtb1hjck92alM2MG95bUJ5SHlGSzk1blA2dVhuVzluN0F0c0ZFbGd4WWtwaDF4Ylg4b3cra3dScSszUU8vbHJzMjB6dE1TZUMvdlVJdzVISmZGZWFodGJUYUF4R0FDM1JNMEVhTUlUZDlIeE50Yytic1FpQU9XTk40RUQ4YWVacVExZ1NDVktyMWhPZUhaRTdQcU8rdDM2SmhnSEtEZnp5UDRyU1FlSDIxQTJoWU5md3ZiS3RLc0Uya2t2Y1Fuamd5eUhLMk9QdHVXYWxSZUR2WWI5WjdwcllkZ04xK3RtMy9GbTl4cVArdUhXb2JjSlJKU3U3OHBzdk1qRlJUQVNpVkloOFE1L0x4OW9STWVHS3pTdEc1SitpeE9CMkNkL2xnOGFPWDBBYzB6aGtjWmoxcWRRazBlRWhUVW1oMGRtVXpBUldBMWtROU9sZnJ1UEovNDVwMGNxcFJWTFVRWktuaEZyQytZU3c4T0RubzNJWFN5T2ltQ3dOdEd0NkFYdC9xVzBaWDIwejdzb0kzZExSdHhVR0lhb253U2NOY1VGRSt1dTBhNWhvM2FaWDI4VXNkandJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUM3bUJmdHBHK0F5OTJLWDA3SEtnSnZFdDNVSG9nTUs3b2ZFTmdXZTRiN2Z2cU90SGRlOGZQb3RpSVRKTHJDakNIbHlhb3VlT1E4SU1SRHpJRUgrbXo5czZORVFQR1g3MGtEMk9JckZGdW52Vm1LTENpRjNzU3lVQXExUWdtMmFUaEIyMzhNa1RuRUM2QzJFQkhlYno1bmNvbG1WSXBXVHVzRXhLMGVFdHc5b1JEZUlvOWppb3lyWlc4RHQ5N05EOW4xU25nc3hnY2pIMWtxR09ST3dWYmdxT3FsS3JqdWVUOU44SmJvK0NnNTd6Wlo0bnBzYm1qYjIxS1FYS3EyWDVSVVI5NXA4c2FVdVo2R0xoL2dGVm1uRm02NnFHM0h6am5KQVh5azlXSCtwZ3A2UHQ4SG5yQ04wamJUMkxFMFJXaC94TXk4d0FDRmloRkkzbTlUbVM3azhaSDZDZkF3cnVLNG9idkVKb0lXTk5GcStNdE00NGwxeWRsLy83MjZGU3AwTGUwSllFWHNPOE8xUkpRMzluMklnbE9zMzZXR3VUMWRaOFBCazNnSi9sbytOMU1scm82SEdqa3J6YXN5a0ZkM1JQVFV6VkNGK1pkK0k2N05GT21iamdkUnNpY2E0STNoMkE0eE0xUGZPVXRiYjVUQ1plTEJMa2NXNFlLZmpIWVE1djcyOFpocGpkYkVhcmNudUtVMzRha1NNdk9pbllYSUc3MFJ0M1BWalhUbDBSVzUzc1FYaFR1MCtxM2w1Y2N2QVFtM0duL3ExejJvZm5DRmhiNXkzYTFIb3A5SWFZMlF0ZEF0aFRwQmU5MVhUM1luTDNpMWVRNm16RkRQbVFVQis0R05zMy96WkhYM00vb090aWUxVUk1NjBhMnUrazRBVW43a1NoQXdkZz09Il19.eyJpZCI6Im1vc2lwLmlkZW50aXR5Lm90cCIsInZlcnNpb24iOiIxLjAiLCJ0cmFuc2FjdGlvbklEIjoiMTIzNDU2Nzg5MCIsInJlcXVlc3RUaW1lIjoiMjAyMi0wNS0xMVQxODowMDozNy45MTRaIiwiaW5kaXZpZHVhbElkIjoiMTIzNDU2NyIsImluZGl2aWR1YWxJZFR5cGUiOiJWSUQiLCJvdHBDaGFubmVsIjpbImVtYWlsIl19.mEJyGITU8Tl3dswDPdVpQArhCE8jMv5z7Hts5XTli-PGw47Ins0iXrl4Oys1TJmfXpDrLi-J4umQTHTP2_E4LmUFwxnDNHL4qEEUlBP4S7a6RhOjozuLMjxnv1HTLlyXJi0wFkDCjkjrV4T3VP-2UEr8ucwHotgxwgVvzbWiQqEe_JVpETtXDTUWDCm_CQ7ZzDrgPaiMbHdtT7PDBKnDuZoS98rGZilMLTZjg2qPN9InggV6zHpH5DWxnbWgpz0120u2I-BH1dOvi54gGiew8oF7erjnhsaMQsbJaKde2nP3a2O012BbdilKnLz8Uxz52P90ZOpPJU3uMbQmGWUdbO2rGmmZnuOd8qQSovycYwwLlRfO2jF1SZXut7d63Rww4hPoUqls6grgfnRrjRF7K4HB-D1V0BwOngRPyLI_0Kdm18RDpgo4LHA4xhceipK7BWctlBtfDQVOCFHgjSp4LyQUVOI0_7bENzpazbW5os69AUyCQx5EgRtAXwwwG7y_wHYdqdVxV_YU6kngoH9n0vz01aapY1tUCC0pq2TQDTIkNpxRnB2zEKT1q0bdDeYvbla16mviROTSOPL55ruebNIlaV7-aKdwES8zJ1n0LJv8ahfDWOO5-zzxjkql9gXQf3TuLIBsbhm7DD0WLr-okvHM-R6IJ7XxsNvt-72uQTE", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getSignature(tt.args.data, tt.args.privateKey, tt.args.publicKey); got != tt.want { + t.Errorf("getSignature() = %v, want %v", got, tt.want) + } + }) + } +} + diff --git a/backend/registration_api/swagger_gen/restapi/embedded_spec.go b/backend/registration_api/swagger_gen/restapi/embedded_spec.go index d2a729135..093a2915f 100644 --- a/backend/registration_api/swagger_gen/restapi/embedded_spec.go +++ b/backend/registration_api/swagger_gen/restapi/embedded_spec.go @@ -207,6 +207,50 @@ func init() { } } }, + "/external/mosip/generateOTP": { + "post": { + "security": [], + "summary": "Generate OTP", + "operationId": "mosipGenerateOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "individualIdType", + "individualId" + ], + "properties": { + "individualId": { + "type": "string" + }, + "individualIdType": { + "type": "string", + "enum": [ + "UIN", + "VID" + ] + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal Error" + } + } + } + }, "/facility/slots": { "get": { "security": [ @@ -801,6 +845,50 @@ func init() { } } }, + "/external/mosip/generateOTP": { + "post": { + "security": [], + "summary": "Generate OTP", + "operationId": "mosipGenerateOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "individualIdType", + "individualId" + ], + "properties": { + "individualId": { + "type": "string" + }, + "individualIdType": { + "type": "string", + "enum": [ + "UIN", + "VID" + ] + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal Error" + } + } + } + }, "/facility/slots": { "get": { "security": [ diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go new file mode 100644 index 000000000..a601ea7c0 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go @@ -0,0 +1,166 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the generate command + +import ( + "encoding/json" + "net/http" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime/middleware" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// MosipGenerateOTPHandlerFunc turns a function with the right signature into a mosip generate o t p handler +type MosipGenerateOTPHandlerFunc func(MosipGenerateOTPParams) middleware.Responder + +// Handle executing the request and returning a response +func (fn MosipGenerateOTPHandlerFunc) Handle(params MosipGenerateOTPParams) middleware.Responder { + return fn(params) +} + +// MosipGenerateOTPHandler interface for that can handle valid mosip generate o t p params +type MosipGenerateOTPHandler interface { + Handle(MosipGenerateOTPParams) middleware.Responder +} + +// NewMosipGenerateOTP creates a new http.Handler for the mosip generate o t p operation +func NewMosipGenerateOTP(ctx *middleware.Context, handler MosipGenerateOTPHandler) *MosipGenerateOTP { + return &MosipGenerateOTP{Context: ctx, Handler: handler} +} + +/*MosipGenerateOTP swagger:route POST /external/mosip/generateOTP mosipGenerateOTP + +Generate OTP + +*/ +type MosipGenerateOTP struct { + Context *middleware.Context + Handler MosipGenerateOTPHandler +} + +func (o *MosipGenerateOTP) ServeHTTP(rw http.ResponseWriter, r *http.Request) { + route, rCtx, _ := o.Context.RouteInfo(r) + if rCtx != nil { + r = rCtx + } + var Params = NewMosipGenerateOTPParams() + + if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params + o.Context.Respond(rw, r, route.Produces, route, err) + return + } + + res := o.Handler.Handle(Params) // actually handle the request + + o.Context.Respond(rw, r, route.Produces, route, res) + +} + +// MosipGenerateOTPBody mosip generate o t p body +// +// swagger:model MosipGenerateOTPBody +type MosipGenerateOTPBody struct { + + // individual Id + // Required: true + IndividualID *string `json:"individualId"` + + // individual Id type + // Required: true + // Enum: [UIN VID] + IndividualIDType *string `json:"individualIdType"` +} + +// Validate validates this mosip generate o t p body +func (o *MosipGenerateOTPBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateIndividualID(formats); err != nil { + res = append(res, err) + } + + if err := o.validateIndividualIDType(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *MosipGenerateOTPBody) validateIndividualID(formats strfmt.Registry) error { + + if err := validate.Required("body"+"."+"individualId", "body", o.IndividualID); err != nil { + return err + } + + return nil +} + +var mosipGenerateOTPBodyTypeIndividualIDTypePropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["UIN","VID"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + mosipGenerateOTPBodyTypeIndividualIDTypePropEnum = append(mosipGenerateOTPBodyTypeIndividualIDTypePropEnum, v) + } +} + +const ( + + // MosipGenerateOTPBodyIndividualIDTypeUIN captures enum value "UIN" + MosipGenerateOTPBodyIndividualIDTypeUIN string = "UIN" + + // MosipGenerateOTPBodyIndividualIDTypeVID captures enum value "VID" + MosipGenerateOTPBodyIndividualIDTypeVID string = "VID" +) + +// prop value enum +func (o *MosipGenerateOTPBody) validateIndividualIDTypeEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, mosipGenerateOTPBodyTypeIndividualIDTypePropEnum, true); err != nil { + return err + } + return nil +} + +func (o *MosipGenerateOTPBody) validateIndividualIDType(formats strfmt.Registry) error { + + if err := validate.Required("body"+"."+"individualIdType", "body", o.IndividualIDType); err != nil { + return err + } + + // value enum + if err := o.validateIndividualIDTypeEnum("body"+"."+"individualIdType", "body", *o.IndividualIDType); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *MosipGenerateOTPBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *MosipGenerateOTPBody) UnmarshalBinary(b []byte) error { + var res MosipGenerateOTPBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go new file mode 100644 index 000000000..d1f656d41 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go @@ -0,0 +1,75 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "io" + "net/http" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/runtime/middleware" +) + +// NewMosipGenerateOTPParams creates a new MosipGenerateOTPParams object +// no default values defined in spec. +func NewMosipGenerateOTPParams() MosipGenerateOTPParams { + + return MosipGenerateOTPParams{} +} + +// MosipGenerateOTPParams contains all the bound params for the mosip generate o t p operation +// typically these are obtained from a http.Request +// +// swagger:parameters mosipGenerateOTP +type MosipGenerateOTPParams struct { + + // HTTP Request Object + HTTPRequest *http.Request `json:"-"` + + /* + Required: true + In: body + */ + Body MosipGenerateOTPBody +} + +// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface +// for simple values it will use straight method calls. +// +// To ensure default values, the struct must have been initialized with NewMosipGenerateOTPParams() beforehand. +func (o *MosipGenerateOTPParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error { + var res []error + + o.HTTPRequest = r + + if runtime.HasBody(r) { + defer r.Body.Close() + var body MosipGenerateOTPBody + if err := route.Consumer.Consume(r.Body, &body); err != nil { + if err == io.EOF { + res = append(res, errors.Required("body", "body", "")) + } else { + res = append(res, errors.NewParseError("body", "body", "", err)) + } + } else { + // validate body object + if err := body.Validate(route.Formats); err != nil { + res = append(res, err) + } + + if len(res) == 0 { + o.Body = body + } + } + } else { + res = append(res, errors.Required("body", "body", "")) + } + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go new file mode 100644 index 000000000..a2de447b1 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go @@ -0,0 +1,84 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "net/http" + + "github.com/go-openapi/runtime" +) + +// MosipGenerateOTPOKCode is the HTTP code returned for type MosipGenerateOTPOK +const MosipGenerateOTPOKCode int = 200 + +/*MosipGenerateOTPOK OK + +swagger:response mosipGenerateOTPOK +*/ +type MosipGenerateOTPOK struct { +} + +// NewMosipGenerateOTPOK creates MosipGenerateOTPOK with default headers values +func NewMosipGenerateOTPOK() *MosipGenerateOTPOK { + + return &MosipGenerateOTPOK{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPOK) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(200) +} + +// MosipGenerateOTPBadRequestCode is the HTTP code returned for type MosipGenerateOTPBadRequest +const MosipGenerateOTPBadRequestCode int = 400 + +/*MosipGenerateOTPBadRequest Bad request + +swagger:response mosipGenerateOTPBadRequest +*/ +type MosipGenerateOTPBadRequest struct { +} + +// NewMosipGenerateOTPBadRequest creates MosipGenerateOTPBadRequest with default headers values +func NewMosipGenerateOTPBadRequest() *MosipGenerateOTPBadRequest { + + return &MosipGenerateOTPBadRequest{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPBadRequest) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(400) +} + +// MosipGenerateOTPInternalServerErrorCode is the HTTP code returned for type MosipGenerateOTPInternalServerError +const MosipGenerateOTPInternalServerErrorCode int = 500 + +/*MosipGenerateOTPInternalServerError Internal Error + +swagger:response mosipGenerateOTPInternalServerError +*/ +type MosipGenerateOTPInternalServerError struct { +} + +// NewMosipGenerateOTPInternalServerError creates MosipGenerateOTPInternalServerError with default headers values +func NewMosipGenerateOTPInternalServerError() *MosipGenerateOTPInternalServerError { + + return &MosipGenerateOTPInternalServerError{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPInternalServerError) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(500) +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go new file mode 100644 index 000000000..82e5546fd --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go @@ -0,0 +1,87 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the generate command + +import ( + "errors" + "net/url" + golangswaggerpaths "path" +) + +// MosipGenerateOTPURL generates an URL for the mosip generate o t p operation +type MosipGenerateOTPURL struct { + _basePath string +} + +// WithBasePath sets the base path for this url builder, only required when it's different from the +// base path specified in the swagger spec. +// When the value of the base path is an empty string +func (o *MosipGenerateOTPURL) WithBasePath(bp string) *MosipGenerateOTPURL { + o.SetBasePath(bp) + return o +} + +// SetBasePath sets the base path for this url builder, only required when it's different from the +// base path specified in the swagger spec. +// When the value of the base path is an empty string +func (o *MosipGenerateOTPURL) SetBasePath(bp string) { + o._basePath = bp +} + +// Build a url path and query string +func (o *MosipGenerateOTPURL) Build() (*url.URL, error) { + var _result url.URL + + var _path = "/external/mosip/generateOTP" + + _basePath := o._basePath + if _basePath == "" { + _basePath = "/divoc/api/citizen" + } + _result.Path = golangswaggerpaths.Join(_basePath, _path) + + return &_result, nil +} + +// Must is a helper function to panic when the url builder returns an error +func (o *MosipGenerateOTPURL) Must(u *url.URL, err error) *url.URL { + if err != nil { + panic(err) + } + if u == nil { + panic("url can't be nil") + } + return u +} + +// String returns the string representation of the path with query string +func (o *MosipGenerateOTPURL) String() string { + return o.Must(o.Build()).String() +} + +// BuildFull builds a full url with scheme, host, path and query string +func (o *MosipGenerateOTPURL) BuildFull(scheme, host string) (*url.URL, error) { + if scheme == "" { + return nil, errors.New("scheme is required for a full url on MosipGenerateOTPURL") + } + if host == "" { + return nil, errors.New("host is required for a full url on MosipGenerateOTPURL") + } + + base, err := o.Build() + if err != nil { + return nil, err + } + + base.Scheme = scheme + base.Host = host + return base, nil +} + +// StringFull returns the string representation of a complete url +func (o *MosipGenerateOTPURL) StringFull(scheme, host string) string { + return o.Must(o.BuildFull(scheme, host)).String() +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go b/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go index 1606efbbe..2eb9bc848 100644 --- a/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go +++ b/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go @@ -77,6 +77,9 @@ func NewRegistrationAPIAPI(spec *loads.Document) *RegistrationAPIAPI { InitializeFacilitySlotsHandler: InitializeFacilitySlotsHandlerFunc(func(params InitializeFacilitySlotsParams) middleware.Responder { return middleware.NotImplemented("operation InitializeFacilitySlots has not yet been implemented") }), + MosipGenerateOTPHandler: MosipGenerateOTPHandlerFunc(func(params MosipGenerateOTPParams) middleware.Responder { + return middleware.NotImplemented("operation MosipGenerateOTP has not yet been implemented") + }), RegisterRecipientToProgramHandler: RegisterRecipientToProgramHandlerFunc(func(params RegisterRecipientToProgramParams, principal *models.JWTClaimBody) middleware.Responder { return middleware.NotImplemented("operation RegisterRecipientToProgram has not yet been implemented") }), @@ -160,6 +163,8 @@ type RegistrationAPIAPI struct { GetSlotsForFacilitiesHandler GetSlotsForFacilitiesHandler // InitializeFacilitySlotsHandler sets the operation handler for the initialize facility slots operation InitializeFacilitySlotsHandler InitializeFacilitySlotsHandler + // MosipGenerateOTPHandler sets the operation handler for the mosip generate o t p operation + MosipGenerateOTPHandler MosipGenerateOTPHandler // RegisterRecipientToProgramHandler sets the operation handler for the register recipient to program operation RegisterRecipientToProgramHandler RegisterRecipientToProgramHandler // VerifyOTPHandler sets the operation handler for the verify o t p operation @@ -280,6 +285,9 @@ func (o *RegistrationAPIAPI) Validate() error { if o.InitializeFacilitySlotsHandler == nil { unregistered = append(unregistered, "InitializeFacilitySlotsHandler") } + if o.MosipGenerateOTPHandler == nil { + unregistered = append(unregistered, "MosipGenerateOTPHandler") + } if o.RegisterRecipientToProgramHandler == nil { unregistered = append(unregistered, "RegisterRecipientToProgramHandler") } @@ -437,6 +445,10 @@ func (o *RegistrationAPIAPI) initHandlerCache() { if o.handlers["POST"] == nil { o.handlers["POST"] = make(map[string]http.Handler) } + o.handlers["POST"]["/external/mosip/generateOTP"] = NewMosipGenerateOTP(o.context, o.MosipGenerateOTPHandler) + if o.handlers["POST"] == nil { + o.handlers["POST"] = make(map[string]http.Handler) + } o.handlers["POST"]["/recipient/{enrollment_osid}/program/{program_id}"] = NewRegisterRecipientToProgram(o.context, o.RegisterRecipientToProgramHandler) if o.handlers["POST"] == nil { o.handlers["POST"] = make(map[string]http.Handler) diff --git a/docker-compose.yml b/docker-compose.yml index c0cc2a1f7..b4a7a5b45 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -179,6 +179,10 @@ services: ETCD_AUTH_ENABLED: $ETCD_AUTH_ENABLED ETCD_USERNAME: $ETCD_USERNAME ETCD_PASSWORD: $ETCD_PASSWORD + MOSIP_AUTH_TOKEN: $MOSIP_AUTH_TOKEN + MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MISP_LICENSE_KEY/$PARTNER_ID/$PARTNER_API_KEY + MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY + MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY depends_on: kafka: condition: service_healthy diff --git a/interfaces/registration-api.yaml b/interfaces/registration-api.yaml index 0dcf2cba9..138651484 100644 --- a/interfaces/registration-api.yaml +++ b/interfaces/registration-api.yaml @@ -331,6 +331,33 @@ paths: description: Internal Error '400': description: Bad request + /external/mosip/generateOTP: + post: + summary: Generate OTP + operationId: mosipGenerateOTP + security: [] + parameters: + - in: body + name: body + required: true + schema: + type: object + required: + - individualIdType + - individualId + properties: + individualIdType: + type: string + enum: ["UIN", "VID"] + individualId: + type: string + responses: + '200': + description: OK + '500': + description: Internal Error + '400': + description: Bad request /verifyOTP: post: summary: Verify OTP From f31f15df73ff5508e9b273f80673891ce9fa002b Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Thu, 19 May 2022 21:24:20 +0530 Subject: [PATCH 3/7] DIV-8487 | adding environment variables to env.example --- .env.example | 9 +++++++++ backend/registration_api/pkg/services/mosip_service.go | 2 +- docker-compose.yml | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 77f78cd0e..d1dab0ada 100644 --- a/.env.example +++ b/.env.example @@ -39,4 +39,13 @@ ENROLLMENT_RETRY_COUNT=4 EU_CERTIFICATE_EXPIRY=12 SHC_CERTIFICATE_EXPIRY=12 LOG_LEVEL=info +MOSIP_AUTH_TOKEN="eyJhbGciOiJSUzI1kIiA6ICJtaVU2WlNJZ1hQaDRna3hkaDg0ZmpiejExMUlvUGlELUZGOFcyWWxzVUFNIn0.eyJleHAiOjE2NTE4NTA1MjAsImlhdCI6MTY1MTgxNDUyMCwianRpIjoiZODZlLTllZGEtODgxNjBlMGI0M2E3IiwiaXNzIjoiaHR0cHM6Ly9pYW0uaWlpdGIubW9zaXAubmV0L2F1dGgvcmVhbG1zL21vc2lwIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImFhNTRlM2ZkLTkyMDQtNDZlOC05MzAyLTU0NDM4NDg3ZTI2NCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImRpdm9jLWNsaWVudCIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphbW9zaXAiXX0sInJlc291cmNlX2FjY2VzcyI6eyJkaXZvYy1jbGllbnQiOnsicm9sZXMiOlsidW1hX3Byb3RlY3Rpb24iXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImNsaWVudEhvc3QiOiIxNzIuMzEuMTUuMzgiLCJjbGllbnRJZCI6ImRpdm9jLWNsaWVudCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LWRpdm9jLWNsaWVudCIsImNsaWVudEFkZHJlc3mhoW5UKW7R1WW9ukEtgvQu2HjNuCYSQm1vkx0Stbq2KyrnxSR2yr3uGc1reopFV-fOB0tiJZOQwTAjiNJd4rGO7nEADDOhwbzg24iwxvGBAMxblyZUDamEFdXIC-ha6Hkf43oC_jkuhoawjvpKzgbyKiEAVmCdBbLIWFN28-7TlqNMcU0D_um4sHy4sEZaut82Eb5fkExvc8QCb2RZ4WDkQxv2uZtJx6CD4Hw7QIXCqSP7fmftR_EPSxIdtPloKO2EXcpnr0pB5BnSzKhWvWIrIuXGawrSJigPNk-DdR5emrJCMvoXWg" +MOSIP_CLIENT_ID="divoc-test-client" +MOSIP_CLIENT_SECRET=20dc0bc2-1aa4-4ca3-9808-aabfc50b1d6c +MOSIP_BASE_URL="https://test.mosip.net" +MOSIP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA1mIX9SFluySnfIfT6Jz5LdORWO+O0j3L7cF+BLaAdX7JuiN10MTISpyOA5z81YXMSgk0PPLUzHv5DTDPMR3rsb6ut/PweLn9sLmwsj9OGSAuH7DFOHVV+Mct9TXBeZu1tzboDhtqKz1PMnBFdmgvd2+WnKYtdWfgo8kB82WkGolAT7++efm/HnOkvRkoNbefbbpnELjtcM5uN32HdCpzTm87zshvOoEvkBUcBJdmKNjzLwBc0E2SpthOuxQUw7zSSqnvOOW+sOub6dIgDgR557KyVGKL9NUvlbbp9jglcZERtpE6pRhbjDwBlmzx8NufSap24VzWIUNjy+CiF0J6OQIDAQABAoIBAQDGeozZqvDngTj7Bzm+m03rCnv/jdJ5fTMHTOOh82Ec5qRXC6tw/C6/PRAR8k72VGhdhwXxA5TWOFTMzIqWW7AxoGtb7aGN9AwWiOQ5MnjYtD1fo6YD7kYJDEbVRc55CxsCo/fVz7XMkHd5KA53YF/JwOr83rEpiGGm4VtH/6sd0JBLWZxIW1SEd7gPTOCNeRQku4xGXOARfNlCl87FfqgZc4CeYh7c2OYwgjtShli2RMvcXKVQGI1BciTQQm2muLeoUU3P5Vn2NeGY7WpbpjFQhN1nUIZq4cfN1QiNSTSIct0VXt6/qLZXLGOYLhkn9U/oDYOOYG1rY5xfL0vumnrxAoGBAPJk0czb5gWbqd7AUEcfkVmRp3HZxHew6L+qmcfioiX+JTGHjW/fOMgpipqXRJKmWZan+GT2MI5q36KIo7rcbwjXccA4DKw3JBukKHhS891iNqinwzX8+ox2GH4bwYaHc35a9wIV4F8+IzcRRFiTgIW5bVs55ekgxqc7p2L3wb/dAoGBAOJqw2HPddArOeI+S+YRYziKWoldJGwJFF9hILfsCWT2OCrVhiuBpRHvSJb3k1L6R0mngRGsss0HvpK6bUnWEAmNX9xEpll7g5kaWS1NSZMyvbOX6jTnoWE3jhdkXnQ1j8UvgxDB6zvtR60DTA9fCqPo09YeM4zcGLVySi+o/OwNAoGBAKUTNC4ns8ct88nXftRxEzPElhxbCgnZWSjurjwKhBMLuZi5kAEYLDtkzxfo3LJix7BqRCe94eObtSGjnJ2tcZC76KPXiAngo56PdWA8Xgfu0vqZBcDGwHrYEmYP0QQlSupKWN36uAsk7iaag8ku6uAnH+p4y7Kwt5k8bwpfYHuhAoGAI3sTjxpRngOIGJomjrEe2VdlBK2h7YQmuyOfWvMULcwf1SaM1fiFA6B5wZ6eaZxq23HyWfC0PEkAZkHsqmtvK/AJm5zubItcffuRCfZYl0aWT7R4sT2zHmb0T1odKxzRoNbnNRMOZ9+xIb2oh6gfJLxxpdYpweMjxBta4MkciWkCgYAOaBqc63WmPzFf0BDVlRPR4E5x2WjkNaNtMPNF0bj3rC7ZWVmXW6Ay7tYqIxcu4KrP2MOFS0b2FL1KsBJlhUlvAfNEL5hn6IO73vl3OhhaJMNIBQ8NiJ/kPbX9Cjh7u/BqNQmyROpFGHWbs4gjdQHeqY29CrmMaURZMo7U8g4b6w==\n-----END RSA PRIVATE KEY-----\n" +MOSIP_PUBLIC_KEY="-----BEGIN CERTIFICATE-----\nMIIFcDCCA1gCCQDImfyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wHhcNMjIwNTExMTc1NTE3WhcNMjMwNTExMTc1NTE3WjB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQC7mBftpG+Ay92KX07HKgJvEt3UHogMK7ofENgWe4b7fvqOtHde8fPotiITJLrCjCHlyaoueOQ8IMRDzIEH+mz9s6NEQPGX70kD2OIrFFunvVmKLCiF3sSyUAq1Qgm2aThB238MkTnEC6C2EBHebz5ncolmVIpWTusExK0eEtw9oRDeIo9jioyrZW8Dt97ND9n1SngsxgcjH1kqGOROwVbgqOqlKrjueT9N8Jbo+Cg57zZZ4npsbmjb21KQXKq2X5RUR95p8saUuZ6GLh/gFVmnFm66qG3HzjnJAXyk9WH+pgp6Pt8HnrCN0jbT2LE0RWh/xMy8wACFihFI3m9TmS7k8ZH6CfAwruK4obvEJoIWNNFq+MtM44l1ydl//726FSp0Le0JYEXsO8O1RJQ39n2IglOs36WGuT1dZ8PBk3gJ/lo+N1Mlro6HGjkrzasykFd3RPTUzVCF+Zd+I67NFOmbjgdRsica4I3h2A4xM1PfOUtbb5TCZeLBLkcW4YKfjHYQ5v728ZhpjdbEarcnuKU34akSMvOinYXIG70Rt3PVjXTl0RW53sQXhTu0+q3l5ccvAQm3Gn/q1z2ofnCFhb5y3a1Hop9IaY2QtdAthTpBe91XT3YnL3i1eQ6mzFDPmQUB+4GNs3/zZHX3M/oOtie1UI560a2u+k4AUn7kShAwdg==\n-----END CERTIFICATE-----" +MOSIP_MISP_LICENSE_KEY=fyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJT +MOSIP_PARTNER_ID=divoc +MOSIP_PARTNER_API_KEY=123456 # For Dev and Test environment, LOG_LEVEL=debug; For Production, LOG_LEVEL=info \ No newline at end of file diff --git a/backend/registration_api/pkg/services/mosip_service.go b/backend/registration_api/pkg/services/mosip_service.go index 0376c80e7..eac377ebe 100644 --- a/backend/registration_api/pkg/services/mosip_service.go +++ b/backend/registration_api/pkg/services/mosip_service.go @@ -63,7 +63,7 @@ func MosipOTPRequest(individualIDType string, individualId string) error { return err } - log.Infof("Response of OTP request - %V", resp) + log.Debugf("Response of OTP request - %V", resp) return nil } diff --git a/docker-compose.yml b/docker-compose.yml index 8d838d352..8de889235 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -181,7 +181,7 @@ services: ETCD_USERNAME: $ETCD_USERNAME ETCD_PASSWORD: $ETCD_PASSWORD MOSIP_AUTH_TOKEN: $MOSIP_AUTH_TOKEN - MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MISP_LICENSE_KEY/$PARTNER_ID/$PARTNER_API_KEY + MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MOSIP_MISP_LICENSE_KEY/$MOSIP_PARTNER_ID/$MOSIP_PARTNER_API_KEY MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY LOG_LEVEL: "$LOG_LEVEL" From 13168de934d6273e6d5ac14773561560c3114c3a Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Wed, 11 May 2022 16:52:47 +0530 Subject: [PATCH 4/7] correcting logs string usage --- .../pkg/services/appointment_service.go | 14 +++++++------- .../pkg/services/enrollment_service.go | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/registration_api/pkg/services/appointment_service.go b/backend/registration_api/pkg/services/appointment_service.go index 06110c79c..ac5c56d97 100644 --- a/backend/registration_api/pkg/services/appointment_service.go +++ b/backend/registration_api/pkg/services/appointment_service.go @@ -58,7 +58,7 @@ func createFacilityWiseAppointmentSlots(schedule models.FacilitySchedule) { if err == nil { err = SetValue(key, schedule.Slots, schedule.GetTTL()) if err != nil { - log.Errorf("Error while creating key: %s slots: %d %v", key, schedule.Slots, err) + log.Errorf("Error while creating key: %s slots: %v %v", key, schedule.Slots, err) } } else { log.Errorf("Error while inserting %s to set %s %v", key, schedule.FacilityCode, err) @@ -70,7 +70,7 @@ func ClearOldSlots(facilityCode string, beforeTimeStamp int64) { if e := RemoveElementsByScoreInSet(facilityCode, "-inf", fmt.Sprintf("(%d", beforeTimeStamp)); e != nil { log.Errorf("Error clearing old slots for FacilityCode: %s, timeStamp: %d", facilityCode, beforeTimeStamp) } - log.Infof("Clearing old slots for %d[FacilityCode] before %d[epoch]", facilityCode, beforeTimeStamp) + log.Infof("Clearing old slots for %v[FacilityCode] before %d[epoch]", facilityCode, beforeTimeStamp) } func BookAppointmentSlot(slotId string) error { @@ -116,13 +116,13 @@ func RevokeEnrollmentBookedStatus(enrollmentCode string, programId string, dose updatedCountKey := fmt.Sprintf("%s-%s-updatedCount", programId, dose) success, err := RemoveHastField(enrollmentCode, slotKey) if err != nil { - log.Errorf("Failed to mark %s code for slot %s as booked %v", enrollmentCode, err) + log.Errorf("Failed to mark %s code for slot %s as booked %v", enrollmentCode, slotKey, err) } else { - log.Infof("Successfully marked %s code for slot %s as booked", enrollmentCode) + log.Infof("Successfully marked %s code for slot %s as booked", enrollmentCode, slotKey) } _, err = IncrHashField(enrollmentCode, updatedCountKey) if err != nil { - log.Errorf("Failed to increase %s updated count", enrollmentCode, err) + log.Errorf("Failed to increase %s updated count - %v", enrollmentCode, err) } else { log.Infof("Successfully increased %s updated count", enrollmentCode) } @@ -186,12 +186,12 @@ func GetOpenFacilitySlot(facilityCode, programID string) (string, error) { for i , rc := range remainingCounts { countStr, ok := rc.(string) if !ok { - log.Error("Error parsing %s to string", rc) + log.Errorf("Error parsing %s to string", rc) continue } count, err := strconv.Atoi(countStr) if err != nil { - log.Error("Error parsing %s to int", countStr) + log.Errorf("Error parsing %s to int", countStr) continue } if count > 0 { diff --git a/backend/registration_api/pkg/services/enrollment_service.go b/backend/registration_api/pkg/services/enrollment_service.go index d9becec4e..fa28b7f82 100644 --- a/backend/registration_api/pkg/services/enrollment_service.go +++ b/backend/registration_api/pkg/services/enrollment_service.go @@ -46,7 +46,7 @@ func MarkPreEnrolledUserCertified(preEnrollmentCode string, phone string, name s } } if dose < totalDoses { - log.Infof("Registering %s to next program %s dose %s", preEnrollmentCode, programId, dose) + log.Infof("Registering %s to next program %s dose %f", preEnrollmentCode, programId, dose) enrollmentObj["appointments"] = append(appointments, registerToNextDose(programId, dose)) } response, err := kernelService.UpdateRegistry(EnrollmentEntity, enrollmentObj) @@ -57,7 +57,7 @@ func MarkPreEnrolledUserCertified(preEnrollmentCode string, phone string, name s } } } else { - log.Error("Enrollment not found for osid %v", enrollmentOsid) + log.Errorf("Enrollment not found for osid %v", enrollmentOsid) } } else { log.Error("Failed reading enrollments registry for osid", enrollmentOsid) @@ -152,7 +152,7 @@ func CreateEnrollment(enrollmentPayload *EnrollmentPayload, retryCount int) erro if strings.Contains(err.Error(), DUPLICATE_MSG) { // enrollmentCode already exists, trying with new enrollment code if retryCount <= config.Config.EnrollmentCreation.MaxRetryCount { - log.Infof("Duplicate enrollmentCode found, retrying attempt ", retryCount, " of ", config.Config.EnrollmentCreation.MaxRetryCount) + log.Info("Duplicate enrollmentCode found, retrying attempt ", retryCount, " of ", config.Config.EnrollmentCreation.MaxRetryCount) retryCount = retryCount + 1 return CreateEnrollment(enrollmentPayload, retryCount) } else { From d81b558bc5de13e8065c8a5dfa300d0c66d9489b Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Thu, 12 May 2022 09:49:48 +0530 Subject: [PATCH 5/7] DIV-8487 | API to request for OTP through MOSIP --- backend/registration_api/config/config.go | 9 + backend/registration_api/go.mod | 10 +- backend/registration_api/go.sum | 174 +++++++++++++++++- backend/registration_api/pkg/handler.go | 16 ++ .../pkg/services/mosip_service.go | 101 ++++++++++ .../pkg/services/mosip_service_test.go | 52 ++++++ .../swagger_gen/restapi/embedded_spec.go | 88 +++++++++ .../operations/mosip_generate_o_t_p.go | 166 +++++++++++++++++ .../mosip_generate_o_t_p_parameters.go | 75 ++++++++ .../mosip_generate_o_t_p_responses.go | 84 +++++++++ .../mosip_generate_o_t_p_urlbuilder.go | 87 +++++++++ .../operations/registration_api_api.go | 12 ++ backend/vaccination_api/go.mod | 3 +- backend/vaccination_api/go.sum | 64 +++++++ docker-compose.yml | 4 + interfaces/registration-api.yaml | 27 +++ 16 files changed, 961 insertions(+), 11 deletions(-) create mode 100644 backend/registration_api/pkg/services/mosip_service.go create mode 100644 backend/registration_api/pkg/services/mosip_service_test.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go create mode 100644 backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go diff --git a/backend/registration_api/config/config.go b/backend/registration_api/config/config.go index 660514bea..576963c5d 100644 --- a/backend/registration_api/config/config.go +++ b/backend/registration_api/config/config.go @@ -52,6 +52,15 @@ var Config = struct { MaxAppointmentUpdatesAllowed int `default:"3"` TimeZoneOffset string `default:"+05:30"` LogLevel string `env:"LOG_LEVEL" yaml:"log_level" default:"info"` + Mosip struct { + ClientId string `env:"MOSIP_CLIENT_ID"` + ClientSecret string `env:"MOSIP_CLIENT_SECRET"` + AuthHeader string `env:"MOSIP_AUTH_TOKEN"` + OTPUrl string `env:"MOSIP_OTP_URL"` + AuthUrl string `env:"MOSIP_AUTH_URL"` + PrivateKey string `env:"MOSIP_PRIVATE_KEY"` + PublicKey string `env:"MOSIP_PUBLIC_KEY"` + } }{} func Initialize() { diff --git a/backend/registration_api/go.mod b/backend/registration_api/go.mod index 78228b322..67f18fc01 100644 --- a/backend/registration_api/go.mod +++ b/backend/registration_api/go.mod @@ -14,21 +14,15 @@ require ( github.com/go-openapi/strfmt v0.19.8 github.com/go-openapi/swag v0.19.11 github.com/go-openapi/validate v0.19.12 - github.com/go-redis/redis v6.15.9+incompatible github.com/go-redis/redis/v8 v8.6.0 - github.com/golang/protobuf v1.4.3 // indirect - github.com/google/go-cmp v0.5.4 // indirect - github.com/google/uuid v1.1.2 // indirect github.com/gospotcheck/jwt-go v4.0.0+incompatible github.com/imroc/req v0.3.0 github.com/jessevdk/go-flags v1.4.0 github.com/jinzhu/configor v1.2.1 - github.com/onsi/ginkgo v1.15.0 // indirect - github.com/onsi/gomega v1.10.5 // indirect + github.com/lestrrat-go/jwx v1.2.24 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.7.0 - golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb - google.golang.org/protobuf v1.25.0 // indirect + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 gopkg.in/confluentinc/confluent-kafka-go.v1 v1.5.2 ) diff --git a/backend/registration_api/go.sum b/backend/registration_api/go.sum index bdd2216f4..5e50da64a 100644 --- a/backend/registration_api/go.sum +++ b/backend/registration_api/go.sum @@ -1,4 +1,5 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= @@ -7,7 +8,13 @@ github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= @@ -15,16 +22,28 @@ github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0 github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/aws/aws-sdk-go v1.34.28 h1:sscPpn/Ns3i0F4HPEWAVcwdIRaZZCuL7llJ2/60yPIk= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/confluentinc/confluent-kafka-go v1.5.2 h1:l+qt+a0Okmq0Bdr1P55IX4fiwFJyg0lZQmfHkAFkv7E= github.com/confluentinc/confluent-kafka-go v1.5.2/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d h1:1iy2qD6JEhHKKhUOA9IWs7mjco7lnw2qx8FsRI2wirE= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= @@ -32,13 +51,24 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= @@ -110,8 +140,6 @@ github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7 github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= github.com/go-openapi/validate v0.19.12 h1:mPLM/bfbd00PGOCJlU0yJL7IulkZ+q9VjPv7U11RMQQ= github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= -github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= -github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.6.0 h1:swqbqOrxaPztsj2Hf1p94M3YAgl7hYEpcw21z299hh8= github.com/go-redis/redis/v8 v8.6.0/go.mod h1:DQ9q4Rk2HtwkrwVrdgmphoOQDMfpvcd/nHEwRsicg8s= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -141,10 +169,18 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -155,6 +191,9 @@ github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +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.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -165,12 +204,17 @@ github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gospotcheck/jwt-go v4.0.0+incompatible h1:IFJXoMKFNfEoZE7cXgs5pWcK2AEQyDISXMkr1jaaJBg= github.com/gospotcheck/jwt-go v4.0.0+incompatible/go.mod h1:xV77fUnYqYQM9PwY+P7tnFw/ALG6ijfKbvbFE66O8mI= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imroc/req v0.3.0 h1:3EioagmlSG+z+KySToa+Ylo3pTFZs+jh3Brl7ngU12U= github.com/imroc/req v0.3.0/go.mod h1:F+NZ+2EFSo6EFXdeIbpfE9hcC233id70kf0byW97Caw= @@ -184,18 +228,40 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= +github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/blackmagic v1.0.0 h1:XzdxDbuQTz0RZZEmdU7cnQxUtFUzgCSPq8RCz4BxIi4= +github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= +github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= +github.com/lestrrat-go/iter v1.0.1 h1:q8faalr2dY6o8bV45uwrxq12bRa1ezKrB6oM9FUgN4A= +github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/jwx v1.2.24 h1:N6Qsn6TUsDzz+qgS/1xcfBtkQfnbwW01fLFJpuYgKsg= +github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= +github.com/lestrrat-go/option v1.0.0 h1:WqAWL8kh8VcSoD6xjSH34/1m8yxluXQbDeKNfvFeEO4= +github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -204,10 +270,17 @@ github.com/mailru/easyjson v0.7.1 h1:mdxE1MF9o53iCb2Ghj1VfWvh7ZOwHpnVG/xwXrV90U8 github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= @@ -229,14 +302,31 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -247,15 +337,27 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA= +go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= @@ -266,9 +368,16 @@ go.opentelemetry.io/otel v0.17.0 h1:6MKOu8WY4hmfpQ4oQn34u6rYhnf2sWf1LXYO/UFm71U= go.opentelemetry.io/otel v0.17.0/go.mod h1:Oqtdxmf7UtEvL037ohlgnaYa1h7GtMh0NcSd9eqkC9s= go.opentelemetry.io/otel/metric v0.17.0 h1:t+5EioN8YFXQ2EH+1j6FHCKMUj+57zIDSnSGr/mWuug= go.opentelemetry.io/otel/metric v0.17.0/go.mod h1:hUz9lH1rNXyEwWAhIWCMFWKhYtpASgSnObJFnU26dJ0= +go.opentelemetry.io/otel/oteltest v0.17.0 h1:TyAihUowTDLqb4+m5ePAsR71xPJaTBJl4KDArIdi9k4= go.opentelemetry.io/otel/oteltest v0.17.0/go.mod h1:JT/LGFxPwpN+nlsTiinSYjdIx3hZIGqHCpChcIZmdoE= go.opentelemetry.io/otel/trace v0.17.0 h1:SBOj64/GAOyWzs5F680yW1ITIfJkm6cJWL2YAvuL9xY= go.opentelemetry.io/otel/trace v0.17.0/go.mod h1:bIujpqg6ZL6xUTubIUgziI1jSaUPthmabA/ygf/6Cfg= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -278,15 +387,23 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f h1:OeJjE6G4dgCY4PIXvIRQbE8+RX+uXZyGhUy/ksMGJoc= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -299,20 +416,32 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -325,14 +454,32 @@ golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091 h1:DMyOG0U+gKfu8JZzg2UQe9MeaC1X+xQWlAKcRnjxjCw= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +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/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -347,7 +494,11 @@ golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -358,10 +509,17 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -373,8 +531,13 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +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/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/confluentinc/confluent-kafka-go.v1 v1.5.2 h1:g0WBLy6fobNUU8W/e9zx6I0Yl79Ya+BDW1NwzAlTiiQ= @@ -385,13 +548,20 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkep gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/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= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/backend/registration_api/pkg/handler.go b/backend/registration_api/pkg/handler.go index ec1f1481e..c15cb2bd3 100644 --- a/backend/registration_api/pkg/handler.go +++ b/backend/registration_api/pkg/handler.go @@ -53,6 +53,7 @@ func SetupHandlers(api *operations.RegistrationAPIAPI) { api.RegisterRecipientToProgramHandler = operations.RegisterRecipientToProgramHandlerFunc(services.RegisterEnrollmentToProgram) api.DeleteRecipientProgramHandler = operations.DeleteRecipientProgramHandlerFunc(services.DeleteProgramInEnrollment) api.GetBeneficiariesHandler = operations.GetBeneficiariesHandlerFunc(getBeneficiaries) + api.MosipGenerateOTPHandler = operations.MosipGenerateOTPHandlerFunc(mosipGenerateOTP) } func pingHandler(params operations.GetPingParams) middleware.Responder { @@ -124,6 +125,21 @@ func generateOTP(params operations.GenerateOTPParams) middleware.Responder { } } +func mosipGenerateOTP(params operations.MosipGenerateOTPParams) middleware.Responder { + individualId := *params.Body.IndividualID + individualIDType := *params.Body.IndividualIDType + if individualId == "" || individualIDType == "" { + return operations.NewMosipGenerateOTPBadRequest() + } + + if err := services.MosipOTPRequest(individualIDType, individualId); err != nil { + return operations.NewMosipGenerateOTPInternalServerError() + } + + return operations.NewMosipGenerateOTPOK() + +} + func verifyOTP(params operations.VerifyOTPParams) middleware.Responder { phone := params.Body.Phone receivedOTP := params.Body.Otp diff --git a/backend/registration_api/pkg/services/mosip_service.go b/backend/registration_api/pkg/services/mosip_service.go new file mode 100644 index 000000000..0376c80e7 --- /dev/null +++ b/backend/registration_api/pkg/services/mosip_service.go @@ -0,0 +1,101 @@ +package services + +import ( + "encoding/base64" + "encoding/json" + "encoding/pem" + "fmt" + "github.com/divoc/registration-api/config" + "github.com/gospotcheck/jwt-go" + "github.com/imroc/req" + "github.com/lestrrat-go/jwx/jwa" + "github.com/lestrrat-go/jwx/jws" + log "github.com/sirupsen/logrus" + "time" +) + +type OTPRequest struct { + Id string `json:"id"` + Version string `json:"version"` + TransactionId string `json:"transactionID"` + RequestTime string `json:"requestTime"` + IndividualId string `json:"individualId"` + IndividualIdType string `json:"individualIdType"` + OtpChannel []string `json:"otpChannel"` +} + +type RequestHeader struct { + Signature string `json:"signature"` + ContentType string `json:"Content-type"` + Authorisation string `json:"Authorization"` +} + +func MosipOTPRequest(individualIDType string, individualId string) error { + + authToken := getMosipAuthToken() + requestBody := OTPRequest{ + Id: "mosip.identity.otp", + Version: "1.0", + TransactionId: "1234567890", + RequestTime: time.Now().UTC().Format("2006-01-02T15:04:05.999Z"), + IndividualId: individualId, + IndividualIdType: individualIDType, + OtpChannel: []string{"email"}, + } + + reqJson, err :=json.Marshal(requestBody) + if err != nil { + log.Errorf("Error occurred while trying to unmarshal the array of enrollments (%v)", err) + return err + } + log.Infof("requestBody before signature - %s", reqJson) + signedPayload := getSignature(reqJson, config.Config.Mosip.PrivateKey, config.Config.Mosip.PublicKey) + log.Infof("signed payload - %v", signedPayload) + + resp, err := generateOTP(requestBody, RequestHeader{ + Signature: signedPayload, + ContentType: "application/json", + Authorisation: "Authorization="+authToken, + }); + + if err != nil { + log.Errorf("Error Response from MOSIP OTP Generate API - %v", err) + return err + } + + log.Infof("Response of OTP request - %V", resp) + + return nil +} + +func generateOTP(requestBody OTPRequest, header RequestHeader) (*req.Resp, error) { + return req.Post(config.Config.Mosip.OTPUrl, req.BodyJSON(requestBody), req.HeaderFromStruct(header)) +} + +func getMosipAuthToken() string { + // TODO: Generate the token from API + return config.Config.Mosip.AuthHeader +} + +func getSignature(data []byte, privateKey string, certificate string) string { + + keyFromPem, _ := jwt.ParseRSAPrivateKeyFromPEM([]byte(privateKey)) + + pemBlock, _ := pem.Decode([]byte(certificate)) + publicCert := base64.StdEncoding.EncodeToString(pemBlock.Bytes) + + var certs [] string + certs = append(certs, publicCert) + + hdrs := jws.NewHeaders() + err := hdrs.Set(jws.X509CertChainKey, certs) + + buf, err := jws.Sign(data, jwa.RS256, keyFromPem, jws.WithHeaders(hdrs)) + if err != nil { + fmt.Printf("failed to sign payload: %s\n", err) + return "" + } + + return string(buf) + +} \ No newline at end of file diff --git a/backend/registration_api/pkg/services/mosip_service_test.go b/backend/registration_api/pkg/services/mosip_service_test.go new file mode 100644 index 000000000..21041b5e3 --- /dev/null +++ b/backend/registration_api/pkg/services/mosip_service_test.go @@ -0,0 +1,52 @@ +package services + +import ( + "encoding/json" + "testing" +) + +func TestMosipSignature(t *testing.T) { + otpReq := OTPRequest{ + Id: "mosip.identity.otp", + Version: "1.0", + TransactionId: "1234567890", + RequestTime: "2022-05-11T18:00:37.914Z", + IndividualId: "1234567", + IndividualIdType: "VID", + OtpChannel: []string{"email"}, + } + otpReqStr, _ := json.Marshal(otpReq) + + // dummy keys for testing + publicKeyPem := "-----BEGIN CERTIFICATE-----\nMIIFcDCCA1gCCQDImfyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wHhcNMjIwNTExMTc1NTE3WhcNMjMwNTExMTc1NTE3WjB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQC7mBftpG+Ay92KX07HKgJvEt3UHogMK7ofENgWe4b7fvqOtHde8fPotiITJLrCjCHlyaoueOQ8IMRDzIEH+mz9s6NEQPGX70kD2OIrFFunvVmKLCiF3sSyUAq1Qgm2aThB238MkTnEC6C2EBHebz5ncolmVIpWTusExK0eEtw9oRDeIo9jioyrZW8Dt97ND9n1SngsxgcjH1kqGOROwVbgqOqlKrjueT9N8Jbo+Cg57zZZ4npsbmjb21KQXKq2X5RUR95p8saUuZ6GLh/gFVmnFm66qG3HzjnJAXyk9WH+pgp6Pt8HnrCN0jbT2LE0RWh/xMy8wACFihFI3m9TmS7k8ZH6CfAwruK4obvEJoIWNNFq+MtM44l1ydl//726FSp0Le0JYEXsO8O1RJQ39n2IglOs36WGuT1dZ8PBk3gJ/lo+N1Mlro6HGjkrzasykFd3RPTUzVCF+Zd+I67NFOmbjgdRsica4I3h2A4xM1PfOUtbb5TCZeLBLkcW4YKfjHYQ5v728ZhpjdbEarcnuKU34akSMvOinYXIG70Rt3PVjXTl0RW53sQXhTu0+q3l5ccvAQm3Gn/q1z2ofnCFhb5y3a1Hop9IaY2QtdAthTpBe91XT3YnL3i1eQ6mzFDPmQUB+4GNs3/zZHX3M/oOtie1UI560a2u+k4AUn7kShAwdg==\n-----END CERTIFICATE-----"; + privateKeyPem := "-----BEGIN PRIVATE KEY-----\nMIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABAoICAAnNo5acKYc5fJQ5VxIaMFBjX5n7Pl4pcZyTX/FXyCopKoP/L0Gs2tDcZXjt/HZ5thg3pSxmiLFxh6g++psSf6KCMyZQ8Jc5JCj+L4lNVsmKxb3ULh8V3j839z4Bg5BQObAWNlnFEVNv5DTiMy2gh6liTsvCPp5y5o0YbMQtu14lQ4yGjfHKS8ML43enCmaJElRSLXjokTkZC45kgljN6M+kDwLjNWB0dBu62LGabAIDHYHKLWsDK+fKJXIQ7Mq0Df2qI6v7yn8q1CKYfZB0zSAOULCq8Q+VPzpavYATwLlrb0oxfExET3dTKvwKHfqiKIMI/puDrq9CUDgRrZ1ews3hHMB19pf2bbzFhODMvMwSiMUbVLmjmTNHxpJMLZapljQpO3g+ErdhUQUQIWxlfHE78eYNxm1iupukL+SNlmsaPPFLFOWl4OMNdJ4pAG2wpqijC9BulGlaymPzXaEFw3jSeSuk6unf6cPhqlMkhhkR3DA3gU0EZhf6/iISIPdyvkHQ2og0YYYcISbxHH46sRCQ7bOfUIeM0HCWjFn65CF93/74NFGVraWnwDkAXqonlZAO/s1333ud+LCPWtgzY1uhhVrFUDeaZcdu2cFzj+SOJL5QDg6LXTj5D67chDfXRXroGiPH4InYzeaKC9vOTDRPLXjXeRZdNcdWUUHv4ftxAoIBAQDzbVTfWeaYQwGvKf7r4hS4447Da6Zqxc90h2MVfzqlwQqATj67pXUdN0yZU8KkwBAe5s2t2RHAOBMo4AamOar3oCLn24W6ddNMOEO2Cdf6hiTmMXerizC38qsjPOSgIYVDYdXAQo4oTLSXCtxxZ5qgkEk+ZE6GNnvUCDrldAz5/NrHLK+0VLWpsxRBpWioJ63XJKUv1WkkZoOpLXXNWoRB5ZrQScAW9hy5R/zqF3HPUS9NDiNrd72KP/silGb/3CktcUfTycvait11oIo285L2W7x0QT+SHv4w1mu+ j6yyBQ0v6pC4Fl6vfeFmTiW7/KQMt1UWcQURB4Tmu1o4HFYpAoIBAQDUI3TKBIZEQcndQJ1r//RIyW19oKXQpicseLBN1QbOHFWklAVrlBkJPJG60HePrHHl/apw8Mgr 70cf72HreNY6XWsjA92Ed9dLb3KEvQwh+gvTZtpUnqfxdcys0isFgdCfVfAZ7aYb 2vA/ONdnPjyx0v/zfq3fSSIUmjLU0Xgte40rS6GtAiLKkrPUEA5azr8rDrie/XRo 6nIMps5IqVGVKNZTF+knvFfJgH8azAWu9ae5IoV0i+ugTStDbxbC1pIbQEqZY3Ur SqhBGNKvbhIBOa+StcBt1zFMSVHoGb6StaG0GcpsNwnAqmLxEmi5BKQ4NI5WxB2v cfrsQq3+O5z3AoIBADaDAUKTC0SFnNbw/JkuI53Tt6CjdrzqVy6tMs8ZkrSTqhpZ a0ryHmvQemLLkwb5y6Jf5SdNOOBmrkO1B0gqGdMiFS7+xc+fmxWyc9dMFQWRDKpP 4ZCUtvA6c4CMnlYNq54PRqKrRNJZewdn8z2iCcpzBTPnmn4LrWcqAKZpeo5wxT1d EGu9nIDIDX014V3mpNNM7YDstYLlQg6ck4jNAFkRZb3HBjEeJAiJymVRorbeY01K ITxrsBJJiZ+QxA//6Wi3uXH/+pqSBk3VCZ6MpRhuKqGOCwJZ1mpxWedunSmwX+ef C5Ft0P5TnioezexvAv2mAHPqE0xg9q4EvotaLSECggEAbBPoU2f8s9fErYlW6ogL f+3Hb6Kh9+w+twSB5hVrEyUSaPfUzxszqiYGpOPClhsoKCGVbVbu1JtiZB3EiIAW vMONath0SiH4OQF9mazq+oB29+xFvajbLURz03R74KFjlVnmKn+OClD/52XhMENg DsTOC9L1aHXM/CwXS5+wl5ODt5QfuZIGAai+H4NSnOcKNDiazL2aSj1vf4yYOiKx Ysncb5cV/V2SaCGkIBXjq2CSY9r3nQoQMKpAKWn2cat54pJdr0ohjr3JfOjVpfTx DVjDX35jnFJvVktghFxhYENTL/uXyow71sG4CNP1MJXxyITWI9Rkv1bVnPrXxFfA vwKCAQEAwvBgH0lkdXO0Mst0RmxflFlmkKtmTmah9Yy0cERNCUW7VclqQPpcIm8C vYyNg6SVFuwupM1t8akJ8MQtAKgXtPK5M3tTWPiR+R6d+19HTZXbOyQPDezIAu6T 3VgYT2MVYjCdXRjep/uzP2FLdfnvCO9km967A/9peVHWJi087HtVLGuvPk0zUjV3 qVc2W3dXv1Uzs0PpwoTaFDvQYG9SMqrhzGnS2T5tbusB7y1fXLDe5uDtXm645tRw NGt8aLrOGZVI6xgUIB1twC1FzxsQiIdZiavYsRnIT9pevgb2SB1oWtTTUbQGc1gt GnEg4hAWcUpapOWBA4lhzKGcBZ2TPw==\n-----END PRIVATE KEY-----"; + + type args struct { + data []byte + privateKey string + publicKey string + } + tests := []struct { + name string + args args + want string + }{ + { + name: "shouldSign", + args: args{ + otpReqStr, + privateKeyPem, + publicKeyPem, + }, + want: "eyJhbGciOiJSUzI1NiIsIng1YyI6WyJNSUlGY0RDQ0ExZ0NDUURJbWZ5TlNoZkcwREFOQmdrcWhraUc5dzBCQVFzRkFEQjZNUXN3Q1FZRFZRUUdFd0pKVGpFU01CQUdBMVVFQ0F3SlMyRnlibUYwWVd0aE1SSXdFQVlEVlFRSERBbENZVzVuWVd4dmNtVXhEakFNQmdOVkJBb01CVVJKVms5RE1Rb3dDQVlEVlFRTERBRXVNU2N3SlFZRFZRUUREQjVvZEhSd2N6b3ZMMlJsYlc4dFpHbDJiMk11WldkdmRpNXZjbWN1YVc0d0hoY05Nakl3TlRFeE1UYzFOVEUzV2hjTk1qTXdOVEV4TVRjMU5URTNXakI2TVFzd0NRWURWUVFHRXdKSlRqRVNNQkFHQTFVRUNBd0pTMkZ5Ym1GMFlXdGhNUkl3RUFZRFZRUUhEQWxDWVc1bllXeHZjbVV4RGpBTUJnTlZCQW9NQlVSSlZrOURNUW93Q0FZRFZRUUxEQUV1TVNjd0pRWURWUVFEREI1b2RIUndjem92TDJSbGJXOHRaR2wyYjJNdVpXZHZkaTV2Y21jdWFXNHdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFESnVFRkpOQVBQRFQ4U2ozOEg1ZFNrbGlTWmxtbTZZT3FLZlBKNVdNYlk5cVo1THg4RG9EcjVRL0gxMURub2kwSWs4OUJycm16VURVVXZ0dXowYnlNMG9pdy9xbVFwblJaR2NCWjIzZ0gvOXZDeVJQV1NocWhsYzl3bVVmTWdOdEVxV2J4U1FsR0s2SlRyaVY1dHhXMjFGaDQ2SFp2b0FsUzNmNHY4QlczZGZSOC82R2d5TEtkS3BGVFhTakVvRU1teVpaUmg1dTdhVXltQ2RPMWd0cjd3Wlh6bXN2Q2UrTHNod1MzdWFDTVVROHloc1ZQdHVMTCs5Wkhtb1hjck92alM2MG95bUJ5SHlGSzk1blA2dVhuVzluN0F0c0ZFbGd4WWtwaDF4Ylg4b3cra3dScSszUU8vbHJzMjB6dE1TZUMvdlVJdzVISmZGZWFodGJUYUF4R0FDM1JNMEVhTUlUZDlIeE50Yytic1FpQU9XTk40RUQ4YWVacVExZ1NDVktyMWhPZUhaRTdQcU8rdDM2SmhnSEtEZnp5UDRyU1FlSDIxQTJoWU5md3ZiS3RLc0Uya2t2Y1Fuamd5eUhLMk9QdHVXYWxSZUR2WWI5WjdwcllkZ04xK3RtMy9GbTl4cVArdUhXb2JjSlJKU3U3OHBzdk1qRlJUQVNpVkloOFE1L0x4OW9STWVHS3pTdEc1SitpeE9CMkNkL2xnOGFPWDBBYzB6aGtjWmoxcWRRazBlRWhUVW1oMGRtVXpBUldBMWtROU9sZnJ1UEovNDVwMGNxcFJWTFVRWktuaEZyQytZU3c4T0RubzNJWFN5T2ltQ3dOdEd0NkFYdC9xVzBaWDIwejdzb0kzZExSdHhVR0lhb253U2NOY1VGRSt1dTBhNWhvM2FaWDI4VXNkandJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUM3bUJmdHBHK0F5OTJLWDA3SEtnSnZFdDNVSG9nTUs3b2ZFTmdXZTRiN2Z2cU90SGRlOGZQb3RpSVRKTHJDakNIbHlhb3VlT1E4SU1SRHpJRUgrbXo5czZORVFQR1g3MGtEMk9JckZGdW52Vm1LTENpRjNzU3lVQXExUWdtMmFUaEIyMzhNa1RuRUM2QzJFQkhlYno1bmNvbG1WSXBXVHVzRXhLMGVFdHc5b1JEZUlvOWppb3lyWlc4RHQ5N05EOW4xU25nc3hnY2pIMWtxR09ST3dWYmdxT3FsS3JqdWVUOU44SmJvK0NnNTd6Wlo0bnBzYm1qYjIxS1FYS3EyWDVSVVI5NXA4c2FVdVo2R0xoL2dGVm1uRm02NnFHM0h6am5KQVh5azlXSCtwZ3A2UHQ4SG5yQ04wamJUMkxFMFJXaC94TXk4d0FDRmloRkkzbTlUbVM3azhaSDZDZkF3cnVLNG9idkVKb0lXTk5GcStNdE00NGwxeWRsLy83MjZGU3AwTGUwSllFWHNPOE8xUkpRMzluMklnbE9zMzZXR3VUMWRaOFBCazNnSi9sbytOMU1scm82SEdqa3J6YXN5a0ZkM1JQVFV6VkNGK1pkK0k2N05GT21iamdkUnNpY2E0STNoMkE0eE0xUGZPVXRiYjVUQ1plTEJMa2NXNFlLZmpIWVE1djcyOFpocGpkYkVhcmNudUtVMzRha1NNdk9pbllYSUc3MFJ0M1BWalhUbDBSVzUzc1FYaFR1MCtxM2w1Y2N2QVFtM0duL3ExejJvZm5DRmhiNXkzYTFIb3A5SWFZMlF0ZEF0aFRwQmU5MVhUM1luTDNpMWVRNm16RkRQbVFVQis0R05zMy96WkhYM00vb090aWUxVUk1NjBhMnUrazRBVW43a1NoQXdkZz09Il19.eyJpZCI6Im1vc2lwLmlkZW50aXR5Lm90cCIsInZlcnNpb24iOiIxLjAiLCJ0cmFuc2FjdGlvbklEIjoiMTIzNDU2Nzg5MCIsInJlcXVlc3RUaW1lIjoiMjAyMi0wNS0xMVQxODowMDozNy45MTRaIiwiaW5kaXZpZHVhbElkIjoiMTIzNDU2NyIsImluZGl2aWR1YWxJZFR5cGUiOiJWSUQiLCJvdHBDaGFubmVsIjpbImVtYWlsIl19.mEJyGITU8Tl3dswDPdVpQArhCE8jMv5z7Hts5XTli-PGw47Ins0iXrl4Oys1TJmfXpDrLi-J4umQTHTP2_E4LmUFwxnDNHL4qEEUlBP4S7a6RhOjozuLMjxnv1HTLlyXJi0wFkDCjkjrV4T3VP-2UEr8ucwHotgxwgVvzbWiQqEe_JVpETtXDTUWDCm_CQ7ZzDrgPaiMbHdtT7PDBKnDuZoS98rGZilMLTZjg2qPN9InggV6zHpH5DWxnbWgpz0120u2I-BH1dOvi54gGiew8oF7erjnhsaMQsbJaKde2nP3a2O012BbdilKnLz8Uxz52P90ZOpPJU3uMbQmGWUdbO2rGmmZnuOd8qQSovycYwwLlRfO2jF1SZXut7d63Rww4hPoUqls6grgfnRrjRF7K4HB-D1V0BwOngRPyLI_0Kdm18RDpgo4LHA4xhceipK7BWctlBtfDQVOCFHgjSp4LyQUVOI0_7bENzpazbW5os69AUyCQx5EgRtAXwwwG7y_wHYdqdVxV_YU6kngoH9n0vz01aapY1tUCC0pq2TQDTIkNpxRnB2zEKT1q0bdDeYvbla16mviROTSOPL55ruebNIlaV7-aKdwES8zJ1n0LJv8ahfDWOO5-zzxjkql9gXQf3TuLIBsbhm7DD0WLr-okvHM-R6IJ7XxsNvt-72uQTE", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := getSignature(tt.args.data, tt.args.privateKey, tt.args.publicKey); got != tt.want { + t.Errorf("getSignature() = %v, want %v", got, tt.want) + } + }) + } +} + diff --git a/backend/registration_api/swagger_gen/restapi/embedded_spec.go b/backend/registration_api/swagger_gen/restapi/embedded_spec.go index d2a729135..093a2915f 100644 --- a/backend/registration_api/swagger_gen/restapi/embedded_spec.go +++ b/backend/registration_api/swagger_gen/restapi/embedded_spec.go @@ -207,6 +207,50 @@ func init() { } } }, + "/external/mosip/generateOTP": { + "post": { + "security": [], + "summary": "Generate OTP", + "operationId": "mosipGenerateOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "individualIdType", + "individualId" + ], + "properties": { + "individualId": { + "type": "string" + }, + "individualIdType": { + "type": "string", + "enum": [ + "UIN", + "VID" + ] + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal Error" + } + } + } + }, "/facility/slots": { "get": { "security": [ @@ -801,6 +845,50 @@ func init() { } } }, + "/external/mosip/generateOTP": { + "post": { + "security": [], + "summary": "Generate OTP", + "operationId": "mosipGenerateOTP", + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "required": [ + "individualIdType", + "individualId" + ], + "properties": { + "individualId": { + "type": "string" + }, + "individualIdType": { + "type": "string", + "enum": [ + "UIN", + "VID" + ] + } + } + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad request" + }, + "500": { + "description": "Internal Error" + } + } + } + }, "/facility/slots": { "get": { "security": [ diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go new file mode 100644 index 000000000..a601ea7c0 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p.go @@ -0,0 +1,166 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the generate command + +import ( + "encoding/json" + "net/http" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime/middleware" + "github.com/go-openapi/strfmt" + "github.com/go-openapi/swag" + "github.com/go-openapi/validate" +) + +// MosipGenerateOTPHandlerFunc turns a function with the right signature into a mosip generate o t p handler +type MosipGenerateOTPHandlerFunc func(MosipGenerateOTPParams) middleware.Responder + +// Handle executing the request and returning a response +func (fn MosipGenerateOTPHandlerFunc) Handle(params MosipGenerateOTPParams) middleware.Responder { + return fn(params) +} + +// MosipGenerateOTPHandler interface for that can handle valid mosip generate o t p params +type MosipGenerateOTPHandler interface { + Handle(MosipGenerateOTPParams) middleware.Responder +} + +// NewMosipGenerateOTP creates a new http.Handler for the mosip generate o t p operation +func NewMosipGenerateOTP(ctx *middleware.Context, handler MosipGenerateOTPHandler) *MosipGenerateOTP { + return &MosipGenerateOTP{Context: ctx, Handler: handler} +} + +/*MosipGenerateOTP swagger:route POST /external/mosip/generateOTP mosipGenerateOTP + +Generate OTP + +*/ +type MosipGenerateOTP struct { + Context *middleware.Context + Handler MosipGenerateOTPHandler +} + +func (o *MosipGenerateOTP) ServeHTTP(rw http.ResponseWriter, r *http.Request) { + route, rCtx, _ := o.Context.RouteInfo(r) + if rCtx != nil { + r = rCtx + } + var Params = NewMosipGenerateOTPParams() + + if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params + o.Context.Respond(rw, r, route.Produces, route, err) + return + } + + res := o.Handler.Handle(Params) // actually handle the request + + o.Context.Respond(rw, r, route.Produces, route, res) + +} + +// MosipGenerateOTPBody mosip generate o t p body +// +// swagger:model MosipGenerateOTPBody +type MosipGenerateOTPBody struct { + + // individual Id + // Required: true + IndividualID *string `json:"individualId"` + + // individual Id type + // Required: true + // Enum: [UIN VID] + IndividualIDType *string `json:"individualIdType"` +} + +// Validate validates this mosip generate o t p body +func (o *MosipGenerateOTPBody) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateIndividualID(formats); err != nil { + res = append(res, err) + } + + if err := o.validateIndividualIDType(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *MosipGenerateOTPBody) validateIndividualID(formats strfmt.Registry) error { + + if err := validate.Required("body"+"."+"individualId", "body", o.IndividualID); err != nil { + return err + } + + return nil +} + +var mosipGenerateOTPBodyTypeIndividualIDTypePropEnum []interface{} + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["UIN","VID"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + mosipGenerateOTPBodyTypeIndividualIDTypePropEnum = append(mosipGenerateOTPBodyTypeIndividualIDTypePropEnum, v) + } +} + +const ( + + // MosipGenerateOTPBodyIndividualIDTypeUIN captures enum value "UIN" + MosipGenerateOTPBodyIndividualIDTypeUIN string = "UIN" + + // MosipGenerateOTPBodyIndividualIDTypeVID captures enum value "VID" + MosipGenerateOTPBodyIndividualIDTypeVID string = "VID" +) + +// prop value enum +func (o *MosipGenerateOTPBody) validateIndividualIDTypeEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, mosipGenerateOTPBodyTypeIndividualIDTypePropEnum, true); err != nil { + return err + } + return nil +} + +func (o *MosipGenerateOTPBody) validateIndividualIDType(formats strfmt.Registry) error { + + if err := validate.Required("body"+"."+"individualIdType", "body", o.IndividualIDType); err != nil { + return err + } + + // value enum + if err := o.validateIndividualIDTypeEnum("body"+"."+"individualIdType", "body", *o.IndividualIDType); err != nil { + return err + } + + return nil +} + +// MarshalBinary interface implementation +func (o *MosipGenerateOTPBody) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *MosipGenerateOTPBody) UnmarshalBinary(b []byte) error { + var res MosipGenerateOTPBody + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go new file mode 100644 index 000000000..d1f656d41 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_parameters.go @@ -0,0 +1,75 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "io" + "net/http" + + "github.com/go-openapi/errors" + "github.com/go-openapi/runtime" + "github.com/go-openapi/runtime/middleware" +) + +// NewMosipGenerateOTPParams creates a new MosipGenerateOTPParams object +// no default values defined in spec. +func NewMosipGenerateOTPParams() MosipGenerateOTPParams { + + return MosipGenerateOTPParams{} +} + +// MosipGenerateOTPParams contains all the bound params for the mosip generate o t p operation +// typically these are obtained from a http.Request +// +// swagger:parameters mosipGenerateOTP +type MosipGenerateOTPParams struct { + + // HTTP Request Object + HTTPRequest *http.Request `json:"-"` + + /* + Required: true + In: body + */ + Body MosipGenerateOTPBody +} + +// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface +// for simple values it will use straight method calls. +// +// To ensure default values, the struct must have been initialized with NewMosipGenerateOTPParams() beforehand. +func (o *MosipGenerateOTPParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error { + var res []error + + o.HTTPRequest = r + + if runtime.HasBody(r) { + defer r.Body.Close() + var body MosipGenerateOTPBody + if err := route.Consumer.Consume(r.Body, &body); err != nil { + if err == io.EOF { + res = append(res, errors.Required("body", "body", "")) + } else { + res = append(res, errors.NewParseError("body", "body", "", err)) + } + } else { + // validate body object + if err := body.Validate(route.Formats); err != nil { + res = append(res, err) + } + + if len(res) == 0 { + o.Body = body + } + } + } else { + res = append(res, errors.Required("body", "body", "")) + } + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go new file mode 100644 index 000000000..a2de447b1 --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_responses.go @@ -0,0 +1,84 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the swagger generate command + +import ( + "net/http" + + "github.com/go-openapi/runtime" +) + +// MosipGenerateOTPOKCode is the HTTP code returned for type MosipGenerateOTPOK +const MosipGenerateOTPOKCode int = 200 + +/*MosipGenerateOTPOK OK + +swagger:response mosipGenerateOTPOK +*/ +type MosipGenerateOTPOK struct { +} + +// NewMosipGenerateOTPOK creates MosipGenerateOTPOK with default headers values +func NewMosipGenerateOTPOK() *MosipGenerateOTPOK { + + return &MosipGenerateOTPOK{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPOK) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(200) +} + +// MosipGenerateOTPBadRequestCode is the HTTP code returned for type MosipGenerateOTPBadRequest +const MosipGenerateOTPBadRequestCode int = 400 + +/*MosipGenerateOTPBadRequest Bad request + +swagger:response mosipGenerateOTPBadRequest +*/ +type MosipGenerateOTPBadRequest struct { +} + +// NewMosipGenerateOTPBadRequest creates MosipGenerateOTPBadRequest with default headers values +func NewMosipGenerateOTPBadRequest() *MosipGenerateOTPBadRequest { + + return &MosipGenerateOTPBadRequest{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPBadRequest) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(400) +} + +// MosipGenerateOTPInternalServerErrorCode is the HTTP code returned for type MosipGenerateOTPInternalServerError +const MosipGenerateOTPInternalServerErrorCode int = 500 + +/*MosipGenerateOTPInternalServerError Internal Error + +swagger:response mosipGenerateOTPInternalServerError +*/ +type MosipGenerateOTPInternalServerError struct { +} + +// NewMosipGenerateOTPInternalServerError creates MosipGenerateOTPInternalServerError with default headers values +func NewMosipGenerateOTPInternalServerError() *MosipGenerateOTPInternalServerError { + + return &MosipGenerateOTPInternalServerError{} +} + +// WriteResponse to the client +func (o *MosipGenerateOTPInternalServerError) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) { + + rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses + + rw.WriteHeader(500) +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go new file mode 100644 index 000000000..82e5546fd --- /dev/null +++ b/backend/registration_api/swagger_gen/restapi/operations/mosip_generate_o_t_p_urlbuilder.go @@ -0,0 +1,87 @@ +// Code generated by go-swagger; DO NOT EDIT. + +package operations + +// This file was generated by the swagger tool. +// Editing this file might prove futile when you re-run the generate command + +import ( + "errors" + "net/url" + golangswaggerpaths "path" +) + +// MosipGenerateOTPURL generates an URL for the mosip generate o t p operation +type MosipGenerateOTPURL struct { + _basePath string +} + +// WithBasePath sets the base path for this url builder, only required when it's different from the +// base path specified in the swagger spec. +// When the value of the base path is an empty string +func (o *MosipGenerateOTPURL) WithBasePath(bp string) *MosipGenerateOTPURL { + o.SetBasePath(bp) + return o +} + +// SetBasePath sets the base path for this url builder, only required when it's different from the +// base path specified in the swagger spec. +// When the value of the base path is an empty string +func (o *MosipGenerateOTPURL) SetBasePath(bp string) { + o._basePath = bp +} + +// Build a url path and query string +func (o *MosipGenerateOTPURL) Build() (*url.URL, error) { + var _result url.URL + + var _path = "/external/mosip/generateOTP" + + _basePath := o._basePath + if _basePath == "" { + _basePath = "/divoc/api/citizen" + } + _result.Path = golangswaggerpaths.Join(_basePath, _path) + + return &_result, nil +} + +// Must is a helper function to panic when the url builder returns an error +func (o *MosipGenerateOTPURL) Must(u *url.URL, err error) *url.URL { + if err != nil { + panic(err) + } + if u == nil { + panic("url can't be nil") + } + return u +} + +// String returns the string representation of the path with query string +func (o *MosipGenerateOTPURL) String() string { + return o.Must(o.Build()).String() +} + +// BuildFull builds a full url with scheme, host, path and query string +func (o *MosipGenerateOTPURL) BuildFull(scheme, host string) (*url.URL, error) { + if scheme == "" { + return nil, errors.New("scheme is required for a full url on MosipGenerateOTPURL") + } + if host == "" { + return nil, errors.New("host is required for a full url on MosipGenerateOTPURL") + } + + base, err := o.Build() + if err != nil { + return nil, err + } + + base.Scheme = scheme + base.Host = host + return base, nil +} + +// StringFull returns the string representation of a complete url +func (o *MosipGenerateOTPURL) StringFull(scheme, host string) string { + return o.Must(o.BuildFull(scheme, host)).String() +} diff --git a/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go b/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go index 1606efbbe..2eb9bc848 100644 --- a/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go +++ b/backend/registration_api/swagger_gen/restapi/operations/registration_api_api.go @@ -77,6 +77,9 @@ func NewRegistrationAPIAPI(spec *loads.Document) *RegistrationAPIAPI { InitializeFacilitySlotsHandler: InitializeFacilitySlotsHandlerFunc(func(params InitializeFacilitySlotsParams) middleware.Responder { return middleware.NotImplemented("operation InitializeFacilitySlots has not yet been implemented") }), + MosipGenerateOTPHandler: MosipGenerateOTPHandlerFunc(func(params MosipGenerateOTPParams) middleware.Responder { + return middleware.NotImplemented("operation MosipGenerateOTP has not yet been implemented") + }), RegisterRecipientToProgramHandler: RegisterRecipientToProgramHandlerFunc(func(params RegisterRecipientToProgramParams, principal *models.JWTClaimBody) middleware.Responder { return middleware.NotImplemented("operation RegisterRecipientToProgram has not yet been implemented") }), @@ -160,6 +163,8 @@ type RegistrationAPIAPI struct { GetSlotsForFacilitiesHandler GetSlotsForFacilitiesHandler // InitializeFacilitySlotsHandler sets the operation handler for the initialize facility slots operation InitializeFacilitySlotsHandler InitializeFacilitySlotsHandler + // MosipGenerateOTPHandler sets the operation handler for the mosip generate o t p operation + MosipGenerateOTPHandler MosipGenerateOTPHandler // RegisterRecipientToProgramHandler sets the operation handler for the register recipient to program operation RegisterRecipientToProgramHandler RegisterRecipientToProgramHandler // VerifyOTPHandler sets the operation handler for the verify o t p operation @@ -280,6 +285,9 @@ func (o *RegistrationAPIAPI) Validate() error { if o.InitializeFacilitySlotsHandler == nil { unregistered = append(unregistered, "InitializeFacilitySlotsHandler") } + if o.MosipGenerateOTPHandler == nil { + unregistered = append(unregistered, "MosipGenerateOTPHandler") + } if o.RegisterRecipientToProgramHandler == nil { unregistered = append(unregistered, "RegisterRecipientToProgramHandler") } @@ -437,6 +445,10 @@ func (o *RegistrationAPIAPI) initHandlerCache() { if o.handlers["POST"] == nil { o.handlers["POST"] = make(map[string]http.Handler) } + o.handlers["POST"]["/external/mosip/generateOTP"] = NewMosipGenerateOTP(o.context, o.MosipGenerateOTPHandler) + if o.handlers["POST"] == nil { + o.handlers["POST"] = make(map[string]http.Handler) + } o.handlers["POST"]["/recipient/{enrollment_osid}/program/{program_id}"] = NewRegisterRecipientToProgram(o.context, o.RegisterRecipientToProgramHandler) if o.handlers["POST"] == nil { o.handlers["POST"] = make(map[string]http.Handler) diff --git a/backend/vaccination_api/go.mod b/backend/vaccination_api/go.mod index e6e4f709f..2417accc8 100644 --- a/backend/vaccination_api/go.mod +++ b/backend/vaccination_api/go.mod @@ -6,6 +6,7 @@ require ( github.com/ClickHouse/clickhouse-go v1.4.3 github.com/confluentinc/confluent-kafka-go v1.5.2 // indirect github.com/divoc/kernel_library v0.0.0-00010101000000-000000000000 + github.com/go-kit/kit v0.10.0 // indirect github.com/go-openapi/errors v0.19.7 github.com/go-openapi/loads v0.19.5 github.com/go-openapi/runtime v0.19.24 @@ -21,7 +22,7 @@ require ( github.com/jinzhu/configor v1.2.1 github.com/jinzhu/gorm v1.9.16 github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/prometheus/client_golang v1.9.0 + github.com/prometheus/client_golang v1.11.0 github.com/signintech/gopdf v0.9.12 github.com/sirupsen/logrus v1.7.0 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e diff --git a/backend/vaccination_api/go.sum b/backend/vaccination_api/go.sum index 0534d4598..64a09e429 100644 --- a/backend/vaccination_api/go.sum +++ b/backend/vaccination_api/go.sum @@ -23,6 +23,7 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= @@ -56,12 +57,16 @@ github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/confluentinc/confluent-kafka-go v1.5.2 h1:l+qt+a0Okmq0Bdr1P55IX4fiwFJyg0lZQmfHkAFkv7E= github.com/confluentinc/confluent-kafka-go v1.5.2/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= @@ -79,12 +84,16 @@ github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 h1:Yzb9+7DPaBjB8zlTR87/ElzFsnQfuHnVUVqpZZIcV5Y= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= @@ -99,6 +108,7 @@ github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -206,10 +216,12 @@ github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWe github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -219,11 +231,13 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= @@ -237,8 +251,10 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -246,6 +262,7 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -258,6 +275,7 @@ github.com/gospotcheck/jwt-go v4.0.0+incompatible/go.mod h1:xV77fUnYqYQM9PwY+P7t github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -305,6 +323,7 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= @@ -312,6 +331,7 @@ github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaR github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -423,6 +443,7 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.9.0 h1:Rrch9mh17XcxvEu9D9DEpb4isxjGBtcevQjKvxPRQIU= github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66IdsO+O441Eve7ptJDU= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -436,6 +457,7 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0 h1:4fgOnadei3EZvgRwxJ7RMpG1k1pOZth5Pc13tyspaKM= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -443,8 +465,10 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -484,6 +508,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -493,9 +518,14 @@ github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= @@ -507,11 +537,14 @@ go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -533,9 +566,12 @@ golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvx golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -563,11 +599,14 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= 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/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -576,6 +615,8 @@ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -609,13 +650,19 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs= golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -642,7 +689,11 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -657,6 +708,9 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -665,14 +719,21 @@ google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -693,6 +754,7 @@ gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRN gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -704,9 +766,11 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/docker-compose.yml b/docker-compose.yml index 90ce7735e..f95c0d193 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -183,6 +183,10 @@ services: ETCD_USERNAME: $ETCD_USERNAME ETCD_PASSWORD: $ETCD_PASSWORD LOG_LEVEL: "$LOG_LEVEL" + MOSIP_AUTH_TOKEN: $MOSIP_AUTH_TOKEN + MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MISP_LICENSE_KEY/$PARTNER_ID/$PARTNER_API_KEY + MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY + MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY depends_on: kafka: condition: service_healthy diff --git a/interfaces/registration-api.yaml b/interfaces/registration-api.yaml index 0dcf2cba9..138651484 100644 --- a/interfaces/registration-api.yaml +++ b/interfaces/registration-api.yaml @@ -331,6 +331,33 @@ paths: description: Internal Error '400': description: Bad request + /external/mosip/generateOTP: + post: + summary: Generate OTP + operationId: mosipGenerateOTP + security: [] + parameters: + - in: body + name: body + required: true + schema: + type: object + required: + - individualIdType + - individualId + properties: + individualIdType: + type: string + enum: ["UIN", "VID"] + individualId: + type: string + responses: + '200': + description: OK + '500': + description: Internal Error + '400': + description: Bad request /verifyOTP: post: summary: Verify OTP From 96191764f30b3abe72a1e0c246786be059695cc7 Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Thu, 19 May 2022 21:24:20 +0530 Subject: [PATCH 6/7] DIV-8487 | adding environment variables to env.example --- .env.example | 11 ++++++++++- .../registration_api/pkg/services/mosip_service.go | 2 +- docker-compose.yml | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index d2c0c9a66..6ff50f2fe 100644 --- a/.env.example +++ b/.env.example @@ -42,4 +42,13 @@ LOG_LEVEL=info # For Dev and Test environment, LOG_LEVEL=debug; For Production, LOG_LEVEL=info COUNTRY_CALLING_CODE=0 # For platform 0, For Production, country code of that particular country -IS_COUNTRY_CODE_PREFIXED=false \ No newline at end of file +IS_COUNTRY_CODE_PREFIXED=false +MOSIP_AUTH_TOKEN="eyJhbGciOiJSUzI1kIiA6ICJtaVU2WlNJZ1hQaDRna3hkaDg0ZmpiejExMUlvUGlELUZGOFcyWWxzVUFNIn0.eyJleHAiOjE2NTE4NTA1MjAsImlhdCI6MTY1MTgxNDUyMCwianRpIjoiZODZlLTllZGEtODgxNjBlMGI0M2E3IiwiaXNzIjoiaHR0cHM6Ly9pYW0uaWlpdGIubW9zaXAubmV0L2F1dGgvcmVhbG1zL21vc2lwIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImFhNTRlM2ZkLTkyMDQtNDZlOC05MzAyLTU0NDM4NDg3ZTI2NCIsInR5cCI6IkJlYXJlciIsImF6cCI6ImRpdm9jLWNsaWVudCIsImFjciI6IjEiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphbW9zaXAiXX0sInJlc291cmNlX2FjY2VzcyI6eyJkaXZvYy1jbGllbnQiOnsicm9sZXMiOlsidW1hX3Byb3RlY3Rpb24iXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoicHJvZmlsZSBlbWFpbCIsImNsaWVudEhvc3QiOiIxNzIuMzEuMTUuMzgiLCJjbGllbnRJZCI6ImRpdm9jLWNsaWVudCIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwicHJlZmVycmVkX3VzZXJuYW1lIjoic2VydmljZS1hY2NvdW50LWRpdm9jLWNsaWVudCIsImNsaWVudEFkZHJlc3mhoW5UKW7R1WW9ukEtgvQu2HjNuCYSQm1vkx0Stbq2KyrnxSR2yr3uGc1reopFV-fOB0tiJZOQwTAjiNJd4rGO7nEADDOhwbzg24iwxvGBAMxblyZUDamEFdXIC-ha6Hkf43oC_jkuhoawjvpKzgbyKiEAVmCdBbLIWFN28-7TlqNMcU0D_um4sHy4sEZaut82Eb5fkExvc8QCb2RZ4WDkQxv2uZtJx6CD4Hw7QIXCqSP7fmftR_EPSxIdtPloKO2EXcpnr0pB5BnSzKhWvWIrIuXGawrSJigPNk-DdR5emrJCMvoXWg" +MOSIP_CLIENT_ID="divoc-test-client" +MOSIP_CLIENT_SECRET=20dc0bc2-1aa4-4ca3-9808-aabfc50b1d6c +MOSIP_BASE_URL="https://test.mosip.net" +MOSIP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA1mIX9SFluySnfIfT6Jz5LdORWO+O0j3L7cF+BLaAdX7JuiN10MTISpyOA5z81YXMSgk0PPLUzHv5DTDPMR3rsb6ut/PweLn9sLmwsj9OGSAuH7DFOHVV+Mct9TXBeZu1tzboDhtqKz1PMnBFdmgvd2+WnKYtdWfgo8kB82WkGolAT7++efm/HnOkvRkoNbefbbpnELjtcM5uN32HdCpzTm87zshvOoEvkBUcBJdmKNjzLwBc0E2SpthOuxQUw7zSSqnvOOW+sOub6dIgDgR557KyVGKL9NUvlbbp9jglcZERtpE6pRhbjDwBlmzx8NufSap24VzWIUNjy+CiF0J6OQIDAQABAoIBAQDGeozZqvDngTj7Bzm+m03rCnv/jdJ5fTMHTOOh82Ec5qRXC6tw/C6/PRAR8k72VGhdhwXxA5TWOFTMzIqWW7AxoGtb7aGN9AwWiOQ5MnjYtD1fo6YD7kYJDEbVRc55CxsCo/fVz7XMkHd5KA53YF/JwOr83rEpiGGm4VtH/6sd0JBLWZxIW1SEd7gPTOCNeRQku4xGXOARfNlCl87FfqgZc4CeYh7c2OYwgjtShli2RMvcXKVQGI1BciTQQm2muLeoUU3P5Vn2NeGY7WpbpjFQhN1nUIZq4cfN1QiNSTSIct0VXt6/qLZXLGOYLhkn9U/oDYOOYG1rY5xfL0vumnrxAoGBAPJk0czb5gWbqd7AUEcfkVmRp3HZxHew6L+qmcfioiX+JTGHjW/fOMgpipqXRJKmWZan+GT2MI5q36KIo7rcbwjXccA4DKw3JBukKHhS891iNqinwzX8+ox2GH4bwYaHc35a9wIV4F8+IzcRRFiTgIW5bVs55ekgxqc7p2L3wb/dAoGBAOJqw2HPddArOeI+S+YRYziKWoldJGwJFF9hILfsCWT2OCrVhiuBpRHvSJb3k1L6R0mngRGsss0HvpK6bUnWEAmNX9xEpll7g5kaWS1NSZMyvbOX6jTnoWE3jhdkXnQ1j8UvgxDB6zvtR60DTA9fCqPo09YeM4zcGLVySi+o/OwNAoGBAKUTNC4ns8ct88nXftRxEzPElhxbCgnZWSjurjwKhBMLuZi5kAEYLDtkzxfo3LJix7BqRCe94eObtSGjnJ2tcZC76KPXiAngo56PdWA8Xgfu0vqZBcDGwHrYEmYP0QQlSupKWN36uAsk7iaag8ku6uAnH+p4y7Kwt5k8bwpfYHuhAoGAI3sTjxpRngOIGJomjrEe2VdlBK2h7YQmuyOfWvMULcwf1SaM1fiFA6B5wZ6eaZxq23HyWfC0PEkAZkHsqmtvK/AJm5zubItcffuRCfZYl0aWT7R4sT2zHmb0T1odKxzRoNbnNRMOZ9+xIb2oh6gfJLxxpdYpweMjxBta4MkciWkCgYAOaBqc63WmPzFf0BDVlRPR4E5x2WjkNaNtMPNF0bj3rC7ZWVmXW6Ay7tYqIxcu4KrP2MOFS0b2FL1KsBJlhUlvAfNEL5hn6IO73vl3OhhaJMNIBQ8NiJ/kPbX9Cjh7u/BqNQmyROpFGHWbs4gjdQHeqY29CrmMaURZMo7U8g4b6w==\n-----END RSA PRIVATE KEY-----\n" +MOSIP_PUBLIC_KEY="-----BEGIN CERTIFICATE-----\nMIIFcDCCA1gCCQDImfyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wHhcNMjIwNTExMTc1NTE3WhcNMjMwNTExMTc1NTE3WjB6MQswCQYDVQQGEwJJTjESMBAGA1UECAwJS2FybmF0YWthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBURJVk9DMQowCAYDVQQLDAEuMScwJQYDVQQDDB5odHRwczovL2RlbW8tZGl2b2MuZWdvdi5vcmcuaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJuEFJNAPPDT8Sj38H5dSkliSZlmm6YOqKfPJ5WMbY9qZ5Lx8DoDr5Q/H11Dnoi0Ik89BrrmzUDUUvtuz0byM0oiw/qmQpnRZGcBZ23gH/9vCyRPWShqhlc9wmUfMgNtEqWbxSQlGK6JTriV5txW21Fh46HZvoAlS3f4v8BW3dfR8/6GgyLKdKpFTXSjEoEMmyZZRh5u7aUymCdO1gtr7wZXzmsvCe+LshwS3uaCMUQ8yhsVPtuLL+9ZHmoXcrOvjS60oymByHyFK95nP6uXnW9n7AtsFElgxYkph1xbX8ow+kwRq+3QO/lrs20ztMSeC/vUIw5HJfFeahtbTaAxGAC3RM0EaMITd9HxNtc+bsQiAOWNN4ED8aeZqQ1gSCVKr1hOeHZE7PqO+t36JhgHKDfzyP4rSQeH21A2hYNfwvbKtKsE2kkvcQnjgyyHK2OPtuWalReDvYb9Z7prYdgN1+tm3/Fm9xqP+uHWobcJRJSu78psvMjFRTASiVIh8Q5/Lx9oRMeGKzStG5J+ixOB2Cd/lg8aOX0Ac0zhkcZj1qdQk0eEhTUmh0dmUzARWA1kQ9OlfruPJ/45p0cqpRVLUQZKnhFrC+YSw8ODno3IXSyOimCwNtGt6AXt/qW0ZX20z7soI3dLRtxUGIaonwScNcUFE+uu0a5ho3aZX28UsdjwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQC7mBftpG+Ay92KX07HKgJvEt3UHogMK7ofENgWe4b7fvqOtHde8fPotiITJLrCjCHlyaoueOQ8IMRDzIEH+mz9s6NEQPGX70kD2OIrFFunvVmKLCiF3sSyUAq1Qgm2aThB238MkTnEC6C2EBHebz5ncolmVIpWTusExK0eEtw9oRDeIo9jioyrZW8Dt97ND9n1SngsxgcjH1kqGOROwVbgqOqlKrjueT9N8Jbo+Cg57zZZ4npsbmjb21KQXKq2X5RUR95p8saUuZ6GLh/gFVmnFm66qG3HzjnJAXyk9WH+pgp6Pt8HnrCN0jbT2LE0RWh/xMy8wACFihFI3m9TmS7k8ZH6CfAwruK4obvEJoIWNNFq+MtM44l1ydl//726FSp0Le0JYEXsO8O1RJQ39n2IglOs36WGuT1dZ8PBk3gJ/lo+N1Mlro6HGjkrzasykFd3RPTUzVCF+Zd+I67NFOmbjgdRsica4I3h2A4xM1PfOUtbb5TCZeLBLkcW4YKfjHYQ5v728ZhpjdbEarcnuKU34akSMvOinYXIG70Rt3PVjXTl0RW53sQXhTu0+q3l5ccvAQm3Gn/q1z2ofnCFhb5y3a1Hop9IaY2QtdAthTpBe91XT3YnL3i1eQ6mzFDPmQUB+4GNs3/zZHX3M/oOtie1UI560a2u+k4AUn7kShAwdg==\n-----END CERTIFICATE-----" +MOSIP_MISP_LICENSE_KEY=fyNShfG0DANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJJT +MOSIP_PARTNER_ID=divoc +MOSIP_PARTNER_API_KEY=123456 \ No newline at end of file diff --git a/backend/registration_api/pkg/services/mosip_service.go b/backend/registration_api/pkg/services/mosip_service.go index 0376c80e7..eac377ebe 100644 --- a/backend/registration_api/pkg/services/mosip_service.go +++ b/backend/registration_api/pkg/services/mosip_service.go @@ -63,7 +63,7 @@ func MosipOTPRequest(individualIDType string, individualId string) error { return err } - log.Infof("Response of OTP request - %V", resp) + log.Debugf("Response of OTP request - %V", resp) return nil } diff --git a/docker-compose.yml b/docker-compose.yml index f95c0d193..af760a9a4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -184,7 +184,7 @@ services: ETCD_PASSWORD: $ETCD_PASSWORD LOG_LEVEL: "$LOG_LEVEL" MOSIP_AUTH_TOKEN: $MOSIP_AUTH_TOKEN - MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MISP_LICENSE_KEY/$PARTNER_ID/$PARTNER_API_KEY + MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MOSIP_MISP_LICENSE_KEY/$MOSIP_PARTNER_ID/$MOSIP_PARTNER_API_KEY MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY depends_on: From 70e3a2cb64bce6e8a6ee8a23db8c31fff051b036 Mon Sep 17 00:00:00 2001 From: Samarth G R Date: Mon, 23 May 2022 10:01:32 +0530 Subject: [PATCH 7/7] DIV-8487 | removing duplicate environment variables --- backend/registration_api/config/config.go | 9 --------- docker-compose.yml | 4 ---- 2 files changed, 13 deletions(-) diff --git a/backend/registration_api/config/config.go b/backend/registration_api/config/config.go index 52c511b44..b628acd4d 100644 --- a/backend/registration_api/config/config.go +++ b/backend/registration_api/config/config.go @@ -61,15 +61,6 @@ var Config = struct { PublicKey string `env:"MOSIP_PUBLIC_KEY"` } LogLevel string `env:"LOG_LEVEL" yaml:"log_level" default:"info"` - Mosip struct { - ClientId string `env:"MOSIP_CLIENT_ID"` - ClientSecret string `env:"MOSIP_CLIENT_SECRET"` - AuthHeader string `env:"MOSIP_AUTH_TOKEN"` - OTPUrl string `env:"MOSIP_OTP_URL"` - AuthUrl string `env:"MOSIP_AUTH_URL"` - PrivateKey string `env:"MOSIP_PRIVATE_KEY"` - PublicKey string `env:"MOSIP_PUBLIC_KEY"` - } }{} func Initialize() { diff --git a/docker-compose.yml b/docker-compose.yml index 33ccc9108..12983d114 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -187,10 +187,6 @@ services: MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY LOG_LEVEL: "$LOG_LEVEL" - MOSIP_AUTH_TOKEN: $MOSIP_AUTH_TOKEN - MOSIP_OTP_URL: $MOSIP_BASE_URL/idauthentication/v1/otp/$MOSIP_MISP_LICENSE_KEY/$MOSIP_PARTNER_ID/$MOSIP_PARTNER_API_KEY - MOSIP_PRIVATE_KEY: $MOSIP_PRIVATE_KEY - MOSIP_PUBLIC_KEY: $MOSIP_PUBLIC_KEY depends_on: kafka: condition: service_healthy