Added tests for resources and their methods. Also added tests for the json model.
This commit is contained in:
3
Makefile
3
Makefile
@@ -1,2 +1,5 @@
|
|||||||
pep8:
|
pep8:
|
||||||
find apiclient samples -name "*.py" | xargs pep8 --ignore=E111,E202
|
find apiclient samples -name "*.py" | xargs pep8 --ignore=E111,E202
|
||||||
|
|
||||||
|
test:
|
||||||
|
python runtests.py
|
||||||
|
|||||||
@@ -80,12 +80,12 @@ class JsonModel(object):
|
|||||||
def request(self, headers, params):
|
def request(self, headers, params):
|
||||||
model = params.get('body', None)
|
model = params.get('body', None)
|
||||||
query = '?alt=json&prettyprint=true'
|
query = '?alt=json&prettyprint=true'
|
||||||
headers['Accept'] = 'application/json'
|
headers['accept'] = 'application/json'
|
||||||
if model == None:
|
if model == None:
|
||||||
return (headers, params, query, None)
|
return (headers, params, query, None)
|
||||||
else:
|
else:
|
||||||
model = {'data': model}
|
model = {'data': model}
|
||||||
headers['Content-Type'] = 'application/json'
|
headers['content-type'] = 'application/json'
|
||||||
del params['body']
|
del params['body']
|
||||||
return (headers, params, query, simplejson.dumps(model))
|
return (headers, params, query, simplejson.dumps(model))
|
||||||
|
|
||||||
@@ -176,7 +176,7 @@ def createResource(http, baseUrl, model, resourceName, resourceDesc):
|
|||||||
for name, regex in pattern.iteritems():
|
for name, regex in pattern.iteritems():
|
||||||
if name in kwargs:
|
if name in kwargs:
|
||||||
if re.match(regex, kwargs[name]) is None:
|
if re.match(regex, kwargs[name]) is None:
|
||||||
raise TypeError('Parameter "%s" value "%s" does match the pattern "%s"' % (name, kwargs[name], regex))
|
raise TypeError('Parameter "%s" value "%s" does not match the pattern "%s"' % (name, kwargs[name], regex))
|
||||||
|
|
||||||
params = {}
|
params = {}
|
||||||
for key, value in kwargs.iteritems():
|
for key, value in kwargs.iteritems():
|
||||||
|
|||||||
988
tests/data/buzz.json
Normal file
988
tests/data/buzz.json
Normal file
@@ -0,0 +1,988 @@
|
|||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"buzz": {
|
||||||
|
"v1": {
|
||||||
|
"baseUrl": "https://www.googleapis.com/",
|
||||||
|
"resources": {
|
||||||
|
"photos": {
|
||||||
|
"methods": {
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "buzz/v1/photos/{userId}/{albumId}",
|
||||||
|
"rpcName": "buzz.photos.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"albumId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"feeds": {
|
||||||
|
"methods": {
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "buzz/v1/feeds/{userId}/@self",
|
||||||
|
"rpcName": "buzz.feeds.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "buzz/v1/feeds/{userId}/@self/{siteId}",
|
||||||
|
"rpcName": "buzz.feeds.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"siteId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/feeds/{userId}/{scope}",
|
||||||
|
"rpcName": "buzz.feeds.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "buzz/v1/feeds/{userId}/@self/{siteId}",
|
||||||
|
"rpcName": "buzz.feeds.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"siteId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"methods": {
|
||||||
|
"extractPeople": {
|
||||||
|
"pathUrl": "buzz/v1/activities/search/@people",
|
||||||
|
"rpcName": "buzz.activities.search.extractPeople",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"lon": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"bbox": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"pid": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"radius": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"lat": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"activities": {
|
||||||
|
"methods": {
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}",
|
||||||
|
"rpcName": "buzz.activities.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"abuseType": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}",
|
||||||
|
"rpcName": "buzz.activities.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/@self",
|
||||||
|
"rpcName": "buzz.activities.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"preview": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"resource": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}",
|
||||||
|
"rpcName": "buzz.activities.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-comments": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@(self|public|consumption|liked|comments)*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-liked": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/@self/{postId}",
|
||||||
|
"rpcName": "buzz.activities.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"pathUrl": "buzz/v1/activities/search",
|
||||||
|
"rpcName": "buzz.activities.search",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"lon": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"bbox": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"pid": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"radius": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"lat": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"people": {
|
||||||
|
"methods": {
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@self",
|
||||||
|
"rpcName": "buzz.people.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"pathUrl": "buzz/v1/people/search",
|
||||||
|
"rpcName": "buzz.people.search",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}",
|
||||||
|
"rpcName": "buzz.people.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"reshared": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/{groupId}",
|
||||||
|
"rpcName": "buzz.people.reshared",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@reshared",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}/{personId}",
|
||||||
|
"rpcName": "buzz.people.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"personId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "(?!@self).*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}/{personId}",
|
||||||
|
"rpcName": "buzz.people.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"personId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "(?!@self).*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"liked": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/{groupId}",
|
||||||
|
"rpcName": "buzz.people.liked",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@liked",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"groups": {
|
||||||
|
"methods": {
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}/@self",
|
||||||
|
"rpcName": "buzz.groups.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups",
|
||||||
|
"rpcName": "buzz.groups.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}",
|
||||||
|
"rpcName": "buzz.groups.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups",
|
||||||
|
"rpcName": "buzz.groups.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "buzz/v1/people/{userId}/@groups/{groupId}/@self",
|
||||||
|
"rpcName": "buzz.groups.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"groupId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"comments": {
|
||||||
|
"methods": {
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/@comments/{commentId}",
|
||||||
|
"rpcName": "buzz.comments.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"commentId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"abuseType": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/@comments",
|
||||||
|
"rpcName": "buzz.comments.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/@self/{postId}/@comments/{commentId}",
|
||||||
|
"rpcName": "buzz.comments.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"commentId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/@self/{postId}/@comments",
|
||||||
|
"rpcName": "buzz.comments.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/@self/{postId}/@comments/{commentId}",
|
||||||
|
"rpcName": "buzz.comments.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"commentId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"related": {
|
||||||
|
"methods": {
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "buzz/v1/activities/{userId}/{scope}/{postId}/@related",
|
||||||
|
"rpcName": "buzz.related.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"scope": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "@.*",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"c": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"alt": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"hl": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"postId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": ".*",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
103
tests/data/latitude.json
Normal file
103
tests/data/latitude.json
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"latitude": {
|
||||||
|
"v1": {
|
||||||
|
"baseUrl": "https://www.googleapis.com/",
|
||||||
|
"resources": {
|
||||||
|
"location": {
|
||||||
|
"methods": {
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "latitude/v1/location",
|
||||||
|
"rpcName": "latitude.location.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "latitude/v1/location",
|
||||||
|
"rpcName": "latitude.location.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-time": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"min-time": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"granularity": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "latitude/v1/location/{locationId}",
|
||||||
|
"rpcName": "latitude.location.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"granularity": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"locationId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "latitude/v1/location/{locationId}",
|
||||||
|
"rpcName": "latitude.location.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"locationId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"currentLocation": {
|
||||||
|
"methods": {
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "latitude/v1/currentLocation",
|
||||||
|
"rpcName": "latitude.currentLocation.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "latitude/v1/currentLocation",
|
||||||
|
"rpcName": "latitude.currentLocation.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "latitude/v1/currentLocation",
|
||||||
|
"rpcName": "latitude.currentLocation.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"granularity": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
528
tests/data/moderator.json
Normal file
528
tests/data/moderator.json
Normal file
@@ -0,0 +1,528 @@
|
|||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"moderator": {
|
||||||
|
"v1": {
|
||||||
|
"baseUrl": "https://www.googleapis.com/",
|
||||||
|
"resources": {
|
||||||
|
"tags": {
|
||||||
|
"methods": {
|
||||||
|
"delete": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/tags/{tagId}",
|
||||||
|
"rpcName": "moderator.tags.delete",
|
||||||
|
"httpMethod": "DELETE",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"tagId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/tags",
|
||||||
|
"rpcName": "moderator.tags.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/tags",
|
||||||
|
"rpcName": "moderator.tags.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"series": {
|
||||||
|
"methods": {
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/@me/mine",
|
||||||
|
"rpcName": "moderator.my.series.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series",
|
||||||
|
"rpcName": "moderator.series.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/@me/recent",
|
||||||
|
"rpcName": "moderator.myrecent.series.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}",
|
||||||
|
"rpcName": "moderator.series.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series",
|
||||||
|
"rpcName": "moderator.series.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}",
|
||||||
|
"rpcName": "moderator.series.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/featured",
|
||||||
|
"rpcName": "moderator.featured.series.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"methods": {
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics",
|
||||||
|
"rpcName": "moderator.topics.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics",
|
||||||
|
"rpcName": "moderator.topics.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics/{topicId}",
|
||||||
|
"rpcName": "moderator.topics.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"topicId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"votes": {
|
||||||
|
"methods": {
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/votes/@me",
|
||||||
|
"rpcName": "moderator.votes.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/votes/@me",
|
||||||
|
"rpcName": "moderator.votes.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/votes/@me",
|
||||||
|
"rpcName": "moderator.votes.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"userId": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/votes/@me",
|
||||||
|
"rpcName": "moderator.votes.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"submissions": {
|
||||||
|
"methods": {
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}",
|
||||||
|
"rpcName": "moderator.submissions.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions",
|
||||||
|
"rpcName": "moderator.series.submissions.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"author": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"sort": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hasAttachmentVideo": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics/{topicId}/submissions",
|
||||||
|
"rpcName": "moderator.submissions.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"topicId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics/{topicId}/submissions",
|
||||||
|
"rpcName": "moderator.topics.submissions.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"author": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hasAttachedVideo": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"sort": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"topicId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profiles": {
|
||||||
|
"methods": {
|
||||||
|
"get": {
|
||||||
|
"pathUrl": "moderator/v1/profiles/@me",
|
||||||
|
"rpcName": "moderator.profiles.get",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest"
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"pathUrl": "moderator/v1/profiles/@me",
|
||||||
|
"rpcName": "moderator.profiles.update",
|
||||||
|
"httpMethod": "PUT",
|
||||||
|
"methodType": "rest"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"responses": {
|
||||||
|
"methods": {
|
||||||
|
"insert": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/topics/{topicId}/submissions/{parentSubmissionId}/responses",
|
||||||
|
"rpcName": "moderator.responses.insert",
|
||||||
|
"httpMethod": "POST",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"parentSubmissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"topicId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/submissions/{submissionId}/responses",
|
||||||
|
"rpcName": "moderator.responses.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"author": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hasAttachedVideo": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"sort": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"submissionId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"list": {
|
||||||
|
"pathUrl": "moderator/v1/series/{seriesId}/responses",
|
||||||
|
"rpcName": "moderator.series.responses.list",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"methodType": "rest",
|
||||||
|
"parameters": {
|
||||||
|
"author": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"hasAttachedVideo": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"sort": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"max-results": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"q": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"start-index": {
|
||||||
|
"parameterType": "query",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"seriesId": {
|
||||||
|
"parameterType": "path",
|
||||||
|
"pattern": "[^/]+",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
78
tests/test_discovery.py
Normal file
78
tests/test_discovery.py
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/usr/bin/python2.4
|
||||||
|
#
|
||||||
|
# Copyright 2010 Google Inc. All Rights Reserved.
|
||||||
|
|
||||||
|
"""Discovery document tests
|
||||||
|
|
||||||
|
Unit tests for objects created from discovery documents.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
|
||||||
|
|
||||||
|
from apiclient.discovery import build
|
||||||
|
import httplib2
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
|
||||||
|
|
||||||
|
class HttpMock(object):
|
||||||
|
|
||||||
|
def __init__(self, filename, headers):
|
||||||
|
f = file(os.path.join(DATA_DIR, filename), 'r')
|
||||||
|
self.data = f.read()
|
||||||
|
f.close()
|
||||||
|
self.headers = headers
|
||||||
|
|
||||||
|
def request(self, uri, method="GET", body=None, headers=None, redirections=1, connection_type=None):
|
||||||
|
return httplib2.Response(self.headers), self.data
|
||||||
|
|
||||||
|
|
||||||
|
class Discovery(unittest.TestCase):
|
||||||
|
def test_method_error_checking(self):
|
||||||
|
self.http = HttpMock('buzz.json', {'status': '200'})
|
||||||
|
buzz = build('buzz', 'v1', self.http)
|
||||||
|
|
||||||
|
# Missing required parameters
|
||||||
|
try:
|
||||||
|
buzz.activities().list()
|
||||||
|
self.fail()
|
||||||
|
except TypeError, e:
|
||||||
|
self.assertTrue('Missing' in str(e))
|
||||||
|
|
||||||
|
# Parameter doesn't match regex
|
||||||
|
try:
|
||||||
|
buzz.activities().list(scope='@self', userId='')
|
||||||
|
self.fail()
|
||||||
|
except TypeError, e:
|
||||||
|
self.assertTrue('does not match' in str(e))
|
||||||
|
|
||||||
|
# Parameter doesn't match regex
|
||||||
|
try:
|
||||||
|
buzz.activities().list(scope='not@', userId='foo')
|
||||||
|
self.fail()
|
||||||
|
except TypeError, e:
|
||||||
|
self.assertTrue('does not match' in str(e))
|
||||||
|
|
||||||
|
# Unexpected parameter
|
||||||
|
try:
|
||||||
|
buzz.activities().list(flubber=12)
|
||||||
|
self.fail()
|
||||||
|
except TypeError, e:
|
||||||
|
self.assertTrue('unexpected' in str(e))
|
||||||
|
|
||||||
|
def test_resources(self):
|
||||||
|
self.http = HttpMock('buzz.json', {'status': '200'})
|
||||||
|
buzz = build('buzz', 'v1', self.http)
|
||||||
|
self.assertTrue(getattr(buzz, 'activities'))
|
||||||
|
self.assertTrue(getattr(buzz, 'search'))
|
||||||
|
self.assertTrue(getattr(buzz, 'feeds'))
|
||||||
|
self.assertTrue(getattr(buzz, 'photos'))
|
||||||
|
self.assertTrue(getattr(buzz, 'people'))
|
||||||
|
self.assertTrue(getattr(buzz, 'groups'))
|
||||||
|
self.assertTrue(getattr(buzz, 'comments'))
|
||||||
|
self.assertTrue(getattr(buzz, 'related'))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
45
tests/test_json_model.py
Normal file
45
tests/test_json_model.py
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/python2.4
|
||||||
|
#
|
||||||
|
# Copyright 2010 Google Inc. All Rights Reserved.
|
||||||
|
|
||||||
|
"""Discovery document tests
|
||||||
|
|
||||||
|
Unit tests for objects created from discovery documents.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__author__ = 'jcgregorio@google.com (Joe Gregorio)'
|
||||||
|
|
||||||
|
from apiclient.discovery import JsonModel
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
|
||||||
|
class Model(unittest.TestCase):
|
||||||
|
def test_json_no_body(self):
|
||||||
|
model = JsonModel()
|
||||||
|
|
||||||
|
headers = {}
|
||||||
|
params = {}
|
||||||
|
|
||||||
|
headers, params, query, body = model.request(headers, params)
|
||||||
|
|
||||||
|
self.assertEqual(headers['accept'], 'application/json')
|
||||||
|
self.assertTrue('content-type' not in headers)
|
||||||
|
self.assertNotEqual(query, '')
|
||||||
|
self.assertEqual(body, None)
|
||||||
|
|
||||||
|
def test_json_body(self):
|
||||||
|
model = JsonModel()
|
||||||
|
|
||||||
|
headers = {}
|
||||||
|
params = {'body': {}}
|
||||||
|
|
||||||
|
headers, params, query, body = model.request(headers, params)
|
||||||
|
|
||||||
|
self.assertEqual(headers['accept'], 'application/json')
|
||||||
|
self.assertEqual(headers['content-type'], 'application/json')
|
||||||
|
self.assertNotEqual(query, '')
|
||||||
|
self.assertEqual(body, '{"data": {}}')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
Reference in New Issue
Block a user