/
configuration.go
131 lines (121 loc) · 3.2 KB
/
configuration.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package npsSdk
import (
"errors"
"log"
CONSTANTS "github.com/Ingenico-NPS-Latam/nps-sdk-go/npsSdk/constants"
"os"
)
type MyConfiguration struct {
environment int
secret_key string
connection_Timeout int
execution_Timeout int
debug bool
verifPeer bool
logLevel string
sanitize bool
url string
log_file string
npsLog *log.Logger
proxy_url string
proxy_username string
proxy_password string
}
var Configuration = NewMyConfiguration()
func NewMyConfiguration() *MyConfiguration {
c := new(MyConfiguration)
c.environment = CONSTANTS.SANDBOX_ENV
c.url = CONSTANTS.SANDBOX_URL
c.secret_key = ""
c.debug = false
c.execution_Timeout = 60
c.verifPeer = true
c.logLevel = CONSTANTS.INFO
c.sanitize = true
c.log_file = ""
c.npsLog = nil
c.proxy_url = ""
c.proxy_username = ""
c.proxy_password = ""
return c
}
//Configure Sdk
//environment = CONSTANTS.PRODUCTION_ENV|CONSTANTS.STAGING_ENV|CONSTANTS.SANDBOX_ENV|CONSTANTS.DEVELOPMENT_ENV
//secret_key = string
//debug=bool (default false)
//conn_timeout (default 10)
//timeout=int (default 60)
//cert_verify_peer= bool (default true)
//log_level= [CONSTANTS.DEBUG|CONSTANTS.INFO|CONSTANTS.ERROR] default(CONSTANTS.INFO)
//sanitize= bool (default true)
//log_file= string
//npsLog= log.logger (default nil)
//proxy_url = string
//proxy_username = string
//proxy_password = string
func Configure(m map[string]interface{}) error {
for key, value := range m {
if key == "environment" {
Configuration.environment = value.(int)
switch Configuration.environment {
case CONSTANTS.PRODUCTION_ENV:
Configuration.url = CONSTANTS.PRODUCTION_URL
case CONSTANTS.STAGING_ENV:
Configuration.url = CONSTANTS.STAGING_URL
case CONSTANTS.SANDBOX_ENV:
Configuration.url = CONSTANTS.SANDBOX_URL
default:
errMsg := "environment must be [CONSTANTS.PRODUCTION_ENV|CONSTANTS.STAGING_ENV|CONSTANTS.SANDBOX_ENV]"
log.Println(errMsg)
err := errors.New(errMsg)
return err
}
}
if key == "secret_key" {
Configuration.secret_key = value.(string)
}
if key == "debug" {
Configuration.debug = value.(bool)
}
if key == "conn_timeout" {
Configuration.connection_Timeout = value.(int)
}
if key == "timeout" {
Configuration.execution_Timeout = value.(int)
}
if key == "cert_verify_peer" {
Configuration.verifPeer = value.(bool)
}
if key == "log_level" {
Configuration.logLevel = value.(string)
}
if key == "sanitize" {
Configuration.sanitize = value.(bool)
}
if key == "log_file" {
Configuration.log_file = value.(string)
}
if key == "npsLog" {
Configuration.npsLog = value.(*log.Logger)
}
if key == "proxy_url" {
Configuration.proxy_url = value.(string)
}
if key == "proxy_username" {
Configuration.proxy_username = value.(string)
}
if key == "proxy_password" {
Configuration.proxy_password = value.(string)
}
}
if Configuration.npsLog == nil {
Configuration.npsLog = log.New(os.Stdout, "", log.Ldate|log.Ltime|log.Lshortfile)
}
return nil
}
func (c *MyConfiguration) GetSecretKey() string {
return c.secret_key
}
func (c *MyConfiguration) GetEnv() int {
return c.environment
}