File tree 5 files changed +112
-1
lines changed
5 files changed +112
-1
lines changed Original file line number Diff line number Diff line change 1
- ox_ * .py
1
+ .ox3rc
2
2
* .pyc
Original file line number Diff line number Diff line change 1
1
# -*- coding: utf-8 -*-
2
2
3
+ import ConfigParser
3
4
import cookielib
4
5
import json
5
6
import oauth2 as oauth
@@ -209,3 +210,37 @@ def delete(self, url):
209
210
""""""
210
211
res = self .request (self ._resolve_url (url ), method = 'DELETE' )
211
212
return json .loads (res .read ())
213
+
214
+
215
+ def client_from_file (file_path = '.ox3rc' , env = None ):
216
+ """"""
217
+ cp = ConfigParser .RawConfigParser ()
218
+ cp .read (file_path )
219
+
220
+ # Load default env if no env is specified. The default env is just the first
221
+ # env listed.
222
+ env_ids = [e for e in cp .get ('ox3apiclient' , 'envs' ).split ('\n ' ) if e ]
223
+ env = env if env else env_ids [0 ]
224
+
225
+ # Required parameters for a ox3apiclient.Client instance.
226
+ required_params = [
227
+ 'domain' ,
228
+ 'realm' ,
229
+ 'consumer_key' ,
230
+ 'consumer_secret' ]
231
+
232
+ client_params = {}
233
+
234
+ # TODO: Catch NoOptionErrors.
235
+ for key in required_params :
236
+ client_params [key ] = cp .get (env , key )
237
+
238
+ # TODO: Add support for optional parameters.
239
+
240
+ client = Client (
241
+ domain = client_params ['domain' ],
242
+ realm = client_params ['realm' ],
243
+ consumer_key = client_params ['consumer_key' ],
244
+ consumer_secret = client_params ['consumer_secret' ])
245
+
246
+ return client
Original file line number Diff line number Diff line change
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from clientfromfile import *
Original file line number Diff line number Diff line change
1
+ # -*- coding: utf-8 -*-
2
+
3
+ import os .path
4
+ import unittest
5
+
6
+ import ox3apiclient
7
+
8
+ class ClientFromFileTestCase (unittest .TestCase ):
9
+
10
+ def test_returns_client (self ):
11
+ file_path = os .path .join (os .path .dirname (__file__ ), 'ox3rctest' )
12
+ ox = ox3apiclient .client_from_file (file_path = file_path )
13
+ self .assertTrue (isinstance (ox , ox3apiclient .Client ))
14
+
15
+ def test_loads_default_env (self ):
16
+ file_path = os .path .join (os .path .dirname (__file__ ), 'ox3rctest' )
17
+ ox = ox3apiclient .client_from_file (file_path = file_path )
18
+
19
+ test_values = [
20
+ 'domain' ,
21
+ 'realm' ,
22
+ 'consumer_secret' ,
23
+ 'consumer_key' ]
24
+
25
+ loaded_values = [
26
+ ox .domain ,
27
+ ox .realm ,
28
+ ox .consumer_key ,
29
+ ox .consumer_secret ]
30
+
31
+ test_values .sort ()
32
+ loaded_values .sort ()
33
+ self .assertEqual (loaded_values , test_values )
34
+
35
+ def test_loads_alternate_env (self ):
36
+ file_path = os .path .join (os .path .dirname (__file__ ), 'ox3rctest' )
37
+ ox = ox3apiclient .client_from_file (file_path = file_path , env = 'dev' )
38
+
39
+ test_values = [
40
+ 'domain_dev' ,
41
+ 'realm_dev' ,
42
+ 'consumer_secret_dev' ,
43
+ 'consumer_key_dev' ]
44
+
45
+ loaded_values = [
46
+ ox .domain ,
47
+ ox .realm ,
48
+ ox .consumer_key ,
49
+ ox .consumer_secret ]
50
+
51
+ test_values .sort ()
52
+ loaded_values .sort ()
53
+ self .assertEqual (loaded_values , test_values )
Original file line number Diff line number Diff line change
1
+ [ox3apiclient]
2
+ envs=
3
+ prod
4
+ dev
5
+
6
+ [prod]
7
+ email: email
8
+ password: password
9
+ domain: domain
10
+ realm: realm
11
+ consumer_key: consumer_key
12
+ consumer_secret: consumer_secret
13
+
14
+ [dev]
15
+ email: email_dev
16
+ password: password_dev
17
+ domain: domain_dev
18
+ realm: realm_dev
19
+ consumer_key: consumer_key_dev
20
+ consumer_secret: consumer_secret_dev
You can’t perform that action at this time.
0 commit comments