Skip to content

Commit

Permalink
gui: first steps toward private API support
Browse files Browse the repository at this point in the history
  • Loading branch information
YoRyan committed Oct 13, 2019
1 parent bd6db58 commit 4ec9fc5
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 18 deletions.
37 changes: 34 additions & 3 deletions nuxhash/gui/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ def __init__(self, parent, *args, frame=None, **kwargs):
sizer = wx.BoxSizer(orient=wx.VERTICAL)
self.SetSizer(sizer)

def Divider():
return wx.StaticLine(self), wx.SizerFlags().Expand())

# Add basic setting controls.
basicForm = wx.Window(self)
sizer.Add(basicForm, wx.SizerFlags().Border(wx.ALL, main.PADDING_PX)
Expand Down Expand Up @@ -57,8 +60,37 @@ def __init__(self, parent, *args, frame=None, **kwargs):
basicSizer.Add(
self._Region, wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))

# Add divider.
sizer.Add(wx.StaticLine(self), wx.SizerFlags().Expand())
sizer.Add(Divider())

# Add API key controls.
apiForm = wx.Window(self)
sizer.Add(apiForm, wx.SizerFlags().Border(wx.ALL, main.PADDING_PX)
.Expand())
apiSizer = wx.FlexGridSizer(3, 2, main.PADDING_PX, main.PADDING_PX)
apiSizer.AddGrowableCol(1)
apiForm.SetSizer(apiSizer)

apiSizer.Add(wx.StaticText(apiForm, label='Organization ID'),
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))
self._Organization = wx.TextCtrl(apiForm, size=(200, -1))
apiSizer.Add(self._Organization,
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))

apiSizer.Add(wx.StaticText(apiForm, label='API Key Code'),
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))
self._ApiKey = wx.TextCtrl(
apiForm, size=(200, -1), style=wx.TE_PASSWORD)
apiSizer.Add(self._ApiKey,
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))

apiSizer.Add(wx.StaticText(apiForm, label='API Secret Key Code'),
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))
self._ApiSecret = wx.TextCtrl(
apiForm, size=(200, -1), style=wx.TE_PASSWORD)
apiSizer.Add(self._ApiSecret,
wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))

sizer.Add(Divider())

# Add advanced setting controls.
advancedForm = wx.Window(self)
Expand Down Expand Up @@ -96,7 +128,6 @@ def __init__(self, parent, *args, frame=None, **kwargs):
advancedSizer.Add(
self._Units, wx.SizerFlags().Align(wx.ALIGN_CENTER_VERTICAL))

# Add spacer.
sizer.AddStretchSpacer()

# Add revert/save controls.
Expand Down
3 changes: 3 additions & 0 deletions nuxhash/nicehash.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,6 @@ def stratums(nx_settings):
return {algorithm: f'{algorithm}.{region}.nicehash.com:{port}'
for algorithm, port in ports.items()}

def unpaid_balance(nx_settings, address):
return None

46 changes: 31 additions & 15 deletions nuxhash/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
'wallet': '',
'workername': 'nuxhash',
'region': 'usa',
'api_organization': '',
'api_key': '',
'api_code': ''
},
'switching': {
'interval': 60,
Expand All @@ -36,32 +39,45 @@
def read_settings_from_file(fd):
parser = configparser.ConfigParser()
parser.read_file(fd)
def get_option(parser_method, section, option):
try:
return parser_method(section, option)
except (configparser.NoSectionError, configparser.NoOptionError):
return DEFAULT_SETTINGS[section][option]
return {
methods = {
'nicehash': {
'wallet': get_option(parser.get, 'nicehash', 'wallet'),
'workername': get_option(parser.get, 'nicehash', 'workername'),
'region': get_option(parser.get, 'nicehash', 'region')
'wallet': parser.get,
'workername': parser.get,
'region': parser.get,
'api_organization': parser.get,
'api_key': parser.get,
'api_code': parser.get
},
'switching': {
'interval': get_option(parser.getint, 'switching', 'interval'),
'threshold': get_option(parser.getfloat, 'switching', 'threshold')
'interval': parser.getint,
'threshold': parser.getfloat
},
'gui': {
'units': get_option(parser.get, 'gui', 'units')
'units': parser.get
},
'donate': {
'optout': get_option(parser.getboolean, 'donate', 'optout')
'optout': parser.getboolean
},
'excavator_miner': {
'listen': get_option(parser.get, 'excavator_miner', 'listen'),
'args': get_option(parser.get, 'excavator_miner', 'args')
'listen': parser.get,
'args': parser.get
}
}
def read_options(data, *sections):
if isinstance(data, dict):
return {key: read_options(item, *(sections + (key,)))
for key, item in data.items()}
elif callable(data):
try:
return data(*sections)
except (configparser.NoSectionError, configparser.NoOptionError):
value = DEFAULT_SETTINGS
for key in sections:
value = value[key]
return value
else:
raise ValueError
return read_options(methods)


def write_settings_to_file(fd, settings):
Expand Down

0 comments on commit 4ec9fc5

Please sign in to comment.