Skip to content

Commit 10ea082

Browse files
committed
fixed #24
1 parent 5d0f3c0 commit 10ea082

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

ipfsApi/client.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,8 @@ def __init__(self,
3030
if base is None:
3131
base = default_base
3232

33-
self._client = self._clientfactory(host, port, base, default_enc)
34-
35-
# default request keyword-args
36-
if 'opts' in defaults:
37-
defaults['opts'].update({'encoding': default_enc})
38-
else:
39-
defaults.update({'opts': {'encoding': default_enc}})
40-
41-
self._defaults = defaults
33+
self._client = self._clientfactory(host, port, base,
34+
default_enc, **defaults)
4235

4336
# BASIC COMMANDS
4437

ipfsApi/http.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,36 @@
1111
from .exceptions import ipfsApiError
1212

1313

14+
def pass_defaults(f):
15+
"""
16+
Use instance default kwargs updated with those passed to function.
17+
"""
18+
def wrapper(self, *args, **kwargs):
19+
merged = {}
20+
merged.update(self.defaults)
21+
merged.update(kwargs)
22+
return f(self, *args, **merged)
23+
return wrapper
24+
25+
1426
class HTTPClient(object):
1527

16-
def __init__(self, host, port, base, default_enc):
28+
def __init__(self, host, port, base, default_enc, **defaults):
1729
self.host = host
1830
self.port = port
1931
self.base = 'http://%s:%s/%s' % (host, port, base)
2032

33+
# default request keyword-args
34+
if 'opts' in defaults:
35+
defaults['opts'].update({'encoding': default_enc})
36+
else:
37+
defaults.update({'opts': {'encoding': default_enc}})
38+
2139
self.default_enc = encoding.get_encoding(default_enc)
22-
self.default_opts = {'encoding': default_enc}
40+
self.defaults = defaults
2341
self._session = None
2442

43+
@pass_defaults
2544
def request(self, path,
2645
args=[], files=[], opts={},
2746
decoder=None, **kwargs):
@@ -31,10 +50,7 @@ def request(self, path,
3150
params = []
3251
params.append(('stream-channels', 'true'))
3352

34-
merged_opts = {}
35-
merged_opts.update(self.default_opts)
36-
merged_opts.update(opts)
37-
for opt in merged_opts.items():
53+
for opt in opts.items():
3854
params.append(opt)
3955
for arg in args:
4056
params.append(('arg', arg))

0 commit comments

Comments
 (0)