from cliff import command
+from testapiclient import url_parse
class Command(command.Command):
class Lister(command.Command):
- pass
+
+ @staticmethod
+ def filter_by_name(url, parsed_args):
+ def query_url():
+ return url_parse.query_join(url, name=parsed_args.name)
+
+ return query_url() if parsed_args.name else url
class ShowOne(command.Command):
def _authenticate(username, password):
session = requests.Session()
- hostname = '{}{}{}'.format(
- os.environ.get('testapi_cas_auth_url'),
- urllib.quote(os.environ.get('testapi_url')),
- os.environ.get('testapi_cas_signin_return'))
- data = {'name': username, 'pass': password, 'form_id': 'user_login'}
+ hostname = '{}{}{}'.format(os.environ.get('testapi_cas_auth_url'),
+ urllib.quote(os.environ.get('testapi_url')),
+ os.environ.get('testapi_cas_signin_return'))
+ data = {
+ 'name': username,
+ 'pass': password,
+ 'form_id': 'user_login'
+ }
response = session.post(hostname, data)
user.User.session = session
return response
import json
-import os
from testapiclient import command
from testapiclient import http_client
from testapiclient import identity
+from testapiclient import url_parse
-PODS_URL = os.environ.get('testapi_url') + "/pods"
+
+def pods_url():
+ return url_parse.resource_join('pods')
+
+
+def pod_url(parsed_args):
+ return url_parse.path_join(pods_url(), parsed_args.name)
class PodGet(command.Lister):
return parser
def take_action(self, parsed_args):
- url = PODS_URL
- if(parsed_args.name):
- url = PODS_URL + "?name=" + parsed_args.name
- pods = http_client.get(url)
+ pods = http_client.get(self.filter_by_name(pods_url(),
+ parsed_args))
print pods
return parser
def take_action(self, parsed_args):
- pods = http_client.get(PODS_URL + "/" + parsed_args.name)
+ pods = http_client.get(pod_url(parsed_args))
print pods
@identity.authenticate
def take_action(self, parsed_args):
- response = http_client.post(PODS_URL,
- parsed_args.pod)
+ response = http_client.post(pods_url(), parsed_args.pod)
if response.status_code == 200:
print "Pod has been successfully created!"
else:
@identity.authenticate
def take_action(self, parsed_args):
- print http_client.delete(PODS_URL + "/" + parsed_args.name)
+ print http_client.delete(pod_url(parsed_args))
import json
-import os
from testapiclient import command
from testapiclient import http_client
from testapiclient import identity
+from testapiclient import url_parse
-PROJECTS_URL = os.environ.get('testapi_url') + "/projects"
+
+def projects_url():
+ url_parse.resource_join('projects')
+
+
+def project_url(parsed_args):
+ return url_parse.path_join(projects_url(), parsed_args.name)
class ProjectGet(command.Lister):
return parser
def take_action(self, parsed_args):
- url = PROJECTS_URL
- if parsed_args.name:
- url = url + "?name=" + parsed_args.name
- projects = http_client.get(url)
+ projects = http_client.get(self.filter_name(projects_url(),
+ parsed_args))
print projects
return parser
def take_action(self, parsed_args):
- url = PROJECTS_URL + "/" + parsed_args.name
- project = http_client.get(url)
+ project = http_client.get(project_url(parsed_args))
print project
@identity.authenticate
def take_action(self, parsed_args):
- response = http_client.post(ProjectCreate.projects_url,
- parsed_args.project)
+ response = http_client.post(projects_url(), parsed_args.project)
if response.status_code == 200:
print "Project has been successfully created!"
else:
@identity.authenticate
def take_action(self, parsed_args):
- projects = http_client.delete(
- PROJECTS_URL + "/" + parsed_args.name)
+ projects = http_client.delete(project_url(parsed_args))
print projects
@identity.authenticate
def take_action(self, parsed_args):
- projects = http_client.put(
- PROJECTS_URL + "/" + parsed_args.name,
- parsed_args.project)
+ projects = http_client.put(project_url(parsed_args),
+ parsed_args.project)
print projects
--- /dev/null
+import os
+
+from six.moves.urllib import parse
+
+
+def path_join(base, *urls):
+ def _path_join(base, url):
+ if not base.endswith('/'):
+ base += '/'
+ return parse.urljoin(base, url)
+
+ urls = (base,) + urls
+ return reduce(_path_join, urls)
+
+
+def query_join(base, **queries):
+ return base + '?' + parse.urlencode(queries)
+
+
+def resource_join(url):
+ testapi_url = os.environ.get('testapi_url')
+ return path_join(testapi_url, url)