File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1- ox_ * .py
1+ .ox3rc
22* .pyc
Original file line number Diff line number Diff line change 11# -*- coding: utf-8 -*-
22
3+ import ConfigParser
34import cookielib
45import json
56import oauth2 as oauth
@@ -209,3 +210,37 @@ def delete(self, url):
209210 """"""
210211 res = self .request (self ._resolve_url (url ), method = 'DELETE' )
211212 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